aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt12
-rw-r--r--build.zig8
-rw-r--r--ci/azure/pipelines.yml2
-rw-r--r--doc/langref.html.in6
-rw-r--r--lib/compiler_rt.zig16
-rw-r--r--lib/compiler_rt/divc3.zig62
-rw-r--r--lib/compiler_rt/divc3_test.zig77
-rw-r--r--lib/compiler_rt/divdc3.zig11
-rw-r--r--lib/compiler_rt/divhc3.zig11
-rw-r--r--lib/compiler_rt/divsc3.zig11
-rw-r--r--lib/compiler_rt/divtc3.zig11
-rw-r--r--lib/compiler_rt/divxc3.zig11
-rw-r--r--lib/compiler_rt/extenddfxf2.zig2
-rw-r--r--lib/compiler_rt/extendf.zig4
-rw-r--r--lib/compiler_rt/extendf_test.zig48
-rw-r--r--lib/compiler_rt/mulc3.zig79
-rw-r--r--lib/compiler_rt/mulc3_test.zig65
-rw-r--r--lib/compiler_rt/muldc3.zig12
-rw-r--r--lib/compiler_rt/mulhc3.zig12
-rw-r--r--lib/compiler_rt/mulsc3.zig12
-rw-r--r--lib/compiler_rt/multc3.zig12
-rw-r--r--lib/compiler_rt/mulxc3.zig12
-rw-r--r--lib/libc/include/any-windows-any/_mingw.h14
-rw-r--r--lib/libc/include/any-windows-any/_mingw_mac.h6
-rw-r--r--lib/libc/include/any-windows-any/activation.h2
-rw-r--r--lib/libc/include/any-windows-any/activaut.h2
-rw-r--r--lib/libc/include/any-windows-any/activdbg.h2
-rw-r--r--lib/libc/include/any-windows-any/activdbg100.h2
-rw-r--r--lib/libc/include/any-windows-any/activprof.h2
-rw-r--r--lib/libc/include/any-windows-any/activscp.h2
-rw-r--r--lib/libc/include/any-windows-any/adhoc.h2
-rw-r--r--lib/libc/include/any-windows-any/afunix.h19
-rw-r--r--lib/libc/include/any-windows-any/alg.h2
-rw-r--r--lib/libc/include/any-windows-any/amstream.h2
-rw-r--r--lib/libc/include/any-windows-any/amvideo.h2
-rw-r--r--lib/libc/include/any-windows-any/asyncinfo.h2
-rw-r--r--lib/libc/include/any-windows-any/audioclient.h2
-rw-r--r--lib/libc/include/any-windows-any/audioendpoints.h2
-rw-r--r--lib/libc/include/any-windows-any/audiopolicy.h2
-rw-r--r--lib/libc/include/any-windows-any/austream.h2
-rw-r--r--lib/libc/include/any-windows-any/bdaiface.h2
-rw-r--r--lib/libc/include/any-windows-any/bits.h1540
-rw-r--r--lib/libc/include/any-windows-any/bits1_5.h589
-rw-r--r--lib/libc/include/any-windows-any/bits2_0.h815
-rw-r--r--lib/libc/include/any-windows-any/bits2_5.h270
-rw-r--r--lib/libc/include/any-windows-any/bits3_0.h704
-rw-r--r--lib/libc/include/any-windows-any/bits5_0.h581
-rw-r--r--lib/libc/include/any-windows-any/comadmin.h2
-rw-r--r--lib/libc/include/any-windows-any/comcat.h2
-rw-r--r--lib/libc/include/any-windows-any/comdef.h16
-rw-r--r--lib/libc/include/any-windows-any/commoncontrols.h2
-rw-r--r--lib/libc/include/any-windows-any/computecore.h82
-rw-r--r--lib/libc/include/any-windows-any/computedefs.h119
-rw-r--r--lib/libc/include/any-windows-any/computenetwork.h142
-rw-r--r--lib/libc/include/any-windows-any/computestorage.h40
-rw-r--r--lib/libc/include/any-windows-any/control.h2
-rw-r--r--lib/libc/include/any-windows-any/corecrt.h5
-rw-r--r--lib/libc/include/any-windows-any/ctfutb.h2
-rw-r--r--lib/libc/include/any-windows-any/ctype.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d10.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d10_1.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d10effect.h4
-rw-r--r--lib/libc/include/any-windows-any/d3d10sdklayers.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11_1.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11_2.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11_3.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11_4.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11on12.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d11sdklayers.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d12.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d12sdklayers.h2
-rw-r--r--lib/libc/include/any-windows-any/d3d12shader.h2
-rw-r--r--lib/libc/include/any-windows-any/d3dcommon.h54
-rw-r--r--lib/libc/include/any-windows-any/dbgprop.h2
-rw-r--r--lib/libc/include/any-windows-any/dcommon.h2
-rw-r--r--lib/libc/include/any-windows-any/dcomp.h74
-rw-r--r--lib/libc/include/any-windows-any/dcompanimation.h2
-rw-r--r--lib/libc/include/any-windows-any/ddk/ata.h1732
-rw-r--r--lib/libc/include/any-windows-any/ddk/ntifs.h2
-rw-r--r--lib/libc/include/any-windows-any/ddk/wdm.h1146
-rw-r--r--lib/libc/include/any-windows-any/ddstream.h2
-rw-r--r--lib/libc/include/any-windows-any/devicetopology.h2
-rw-r--r--lib/libc/include/any-windows-any/dimm.h2
-rw-r--r--lib/libc/include/any-windows-any/dinput.h4
-rw-r--r--lib/libc/include/any-windows-any/dinputd.h2
-rw-r--r--lib/libc/include/any-windows-any/directmanipulation.h2
-rw-r--r--lib/libc/include/any-windows-any/dispex.h2
-rw-r--r--lib/libc/include/any-windows-any/dmodshow.h2
-rw-r--r--lib/libc/include/any-windows-any/docobj.h2
-rw-r--r--lib/libc/include/any-windows-any/docobjectservice.h2
-rw-r--r--lib/libc/include/any-windows-any/documenttarget.h2
-rw-r--r--lib/libc/include/any-windows-any/downloadmgr.h2
-rw-r--r--lib/libc/include/any-windows-any/drmexternals.h2
-rw-r--r--lib/libc/include/any-windows-any/dsound.h12
-rw-r--r--lib/libc/include/any-windows-any/dvdif.h2
-rw-r--r--lib/libc/include/any-windows-any/dwrite.h2
-rw-r--r--lib/libc/include/any-windows-any/dwrite_1.h2
-rw-r--r--lib/libc/include/any-windows-any/dwrite_2.h2
-rw-r--r--lib/libc/include/any-windows-any/dwrite_3.h11
-rw-r--r--lib/libc/include/any-windows-any/dxgi.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgi1_2.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgi1_3.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgi1_4.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgi1_5.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgi1_6.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgicommon.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgidebug.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgiformat.h2
-rw-r--r--lib/libc/include/any-windows-any/dxgitype.h2
-rw-r--r--lib/libc/include/any-windows-any/dxva.h269
-rw-r--r--lib/libc/include/any-windows-any/dxva2api.h2
-rw-r--r--lib/libc/include/any-windows-any/dxvahd.h26
-rw-r--r--lib/libc/include/any-windows-any/endpointvolume.h2
-rw-r--r--lib/libc/include/any-windows-any/eventtoken.h2
-rw-r--r--lib/libc/include/any-windows-any/evr.h2
-rw-r--r--lib/libc/include/any-windows-any/evr9.h411
-rw-r--r--lib/libc/include/any-windows-any/exdisp.h2
-rw-r--r--lib/libc/include/any-windows-any/filter.h2
-rw-r--r--lib/libc/include/any-windows-any/float.h2
-rw-r--r--lib/libc/include/any-windows-any/fontsub.h64
-rw-r--r--lib/libc/include/any-windows-any/fsrm.h2
-rw-r--r--lib/libc/include/any-windows-any/fsrmenums.h2
-rw-r--r--lib/libc/include/any-windows-any/fsrmquota.h2
-rw-r--r--lib/libc/include/any-windows-any/fsrmreports.h2
-rw-r--r--lib/libc/include/any-windows-any/fsrmscreen.h2
-rw-r--r--lib/libc/include/any-windows-any/fusion.h2
-rw-r--r--lib/libc/include/any-windows-any/fwptypes.h2
-rw-r--r--lib/libc/include/any-windows-any/hstring.h2
-rw-r--r--lib/libc/include/any-windows-any/httpext.h21
-rw-r--r--lib/libc/include/any-windows-any/icftypes.h2
-rw-r--r--lib/libc/include/any-windows-any/icodecapi.h2
-rw-r--r--lib/libc/include/any-windows-any/iketypes.h2
-rw-r--r--lib/libc/include/any-windows-any/inputscope.h2
-rw-r--r--lib/libc/include/any-windows-any/inspectable.h2
-rw-r--r--lib/libc/include/any-windows-any/intrin.h4
-rw-r--r--lib/libc/include/any-windows-any/inttypes.h48
-rw-r--r--lib/libc/include/any-windows-any/ioringapi.h140
-rw-r--r--lib/libc/include/any-windows-any/ks.h57
-rw-r--r--lib/libc/include/any-windows-any/ksmedia.h29
-rw-r--r--lib/libc/include/any-windows-any/locale.h6
-rw-r--r--lib/libc/include/any-windows-any/locationapi.h2
-rw-r--r--lib/libc/include/any-windows-any/mediaobj.h2
-rw-r--r--lib/libc/include/any-windows-any/medparam.h2
-rw-r--r--lib/libc/include/any-windows-any/mfapi.h64
-rw-r--r--lib/libc/include/any-windows-any/mfcaptureengine.h1769
-rw-r--r--lib/libc/include/any-windows-any/mfd3d12.h275
-rw-r--r--lib/libc/include/any-windows-any/mfidl.h1710
-rw-r--r--lib/libc/include/any-windows-any/mfmediacapture.h298
-rw-r--r--lib/libc/include/any-windows-any/mfobjects.h2
-rw-r--r--lib/libc/include/any-windows-any/mfplay.h2
-rw-r--r--lib/libc/include/any-windows-any/mfreadwrite.h2
-rw-r--r--lib/libc/include/any-windows-any/mftransform.h2
-rw-r--r--lib/libc/include/any-windows-any/mmdeviceapi.h2
-rw-r--r--lib/libc/include/any-windows-any/mmreg.h6
-rw-r--r--lib/libc/include/any-windows-any/mmstream.h2
-rw-r--r--lib/libc/include/any-windows-any/mmsystem.h1
-rw-r--r--lib/libc/include/any-windows-any/mscoree.h2
-rw-r--r--lib/libc/include/any-windows-any/msctf.h2
-rw-r--r--lib/libc/include/any-windows-any/mshtmhst.h2
-rw-r--r--lib/libc/include/any-windows-any/mshtml.h2
-rw-r--r--lib/libc/include/any-windows-any/msinkaut.h2
-rw-r--r--lib/libc/include/any-windows-any/msinkaut_i.c2
-rw-r--r--lib/libc/include/any-windows-any/msopc.h2
-rw-r--r--lib/libc/include/any-windows-any/mstcpip.h241
-rw-r--r--lib/libc/include/any-windows-any/msxml.h2
-rw-r--r--lib/libc/include/any-windows-any/napcertrelyingparty.h2
-rw-r--r--lib/libc/include/any-windows-any/napcommon.h2
-rw-r--r--lib/libc/include/any-windows-any/napenforcementclient.h2
-rw-r--r--lib/libc/include/any-windows-any/napmanagement.h2
-rw-r--r--lib/libc/include/any-windows-any/napprotocol.h2
-rw-r--r--lib/libc/include/any-windows-any/napservermanagement.h2
-rw-r--r--lib/libc/include/any-windows-any/napsystemhealthagent.h2
-rw-r--r--lib/libc/include/any-windows-any/napsystemhealthvalidator.h2
-rw-r--r--lib/libc/include/any-windows-any/naptypes.h2
-rw-r--r--lib/libc/include/any-windows-any/netcfgn.h2
-rw-r--r--lib/libc/include/any-windows-any/netcfgx.h2
-rw-r--r--lib/libc/include/any-windows-any/netfw.h2
-rw-r--r--lib/libc/include/any-windows-any/netlistmgr.h2
-rw-r--r--lib/libc/include/any-windows-any/ntdddisk.h6
-rw-r--r--lib/libc/include/any-windows-any/ntioring_x.h54
-rw-r--r--lib/libc/include/any-windows-any/ntsecapi.h1147
-rw-r--r--lib/libc/include/any-windows-any/ntstatus.h1
-rw-r--r--lib/libc/include/any-windows-any/nvme.h2835
-rw-r--r--lib/libc/include/any-windows-any/oaidl.h2
-rw-r--r--lib/libc/include/any-windows-any/objectarray.h2
-rw-r--r--lib/libc/include/any-windows-any/objidl.h2
-rw-r--r--lib/libc/include/any-windows-any/objidlbase.h2
-rw-r--r--lib/libc/include/any-windows-any/ocidl.h2
-rw-r--r--lib/libc/include/any-windows-any/oleacc.h2
-rw-r--r--lib/libc/include/any-windows-any/oleidl.h2
-rw-r--r--lib/libc/include/any-windows-any/optary.h2
-rw-r--r--lib/libc/include/any-windows-any/pchannel.h16
-rw-r--r--lib/libc/include/any-windows-any/portabledevicetypes.h2
-rw-r--r--lib/libc/include/any-windows-any/processthreadsapi.h97
-rw-r--r--lib/libc/include/any-windows-any/proofofpossessioncookieinfo.h173
-rw-r--r--lib/libc/include/any-windows-any/propidl.h2
-rw-r--r--lib/libc/include/any-windows-any/propsys.h2
-rw-r--r--lib/libc/include/any-windows-any/propvarutil.h104
-rw-r--r--lib/libc/include/any-windows-any/psdk_inc/_dbg_common.h97
-rw-r--r--lib/libc/include/any-windows-any/psdk_inc/_ip_mreq1.h9
-rw-r--r--lib/libc/include/any-windows-any/psdk_inc/intrin-impl.h119
-rw-r--r--lib/libc/include/any-windows-any/qedit.h2
-rw-r--r--lib/libc/include/any-windows-any/qnetwork.h2
-rw-r--r--lib/libc/include/any-windows-any/rdpencomapi.h2
-rw-r--r--lib/libc/include/any-windows-any/regbag.h2
-rw-r--r--lib/libc/include/any-windows-any/relogger.h2
-rw-r--r--lib/libc/include/any-windows-any/rtworkq.h2
-rw-r--r--lib/libc/include/any-windows-any/sal.h4
-rw-r--r--lib/libc/include/any-windows-any/sapi51.h2
-rw-r--r--lib/libc/include/any-windows-any/sapi53.h2
-rw-r--r--lib/libc/include/any-windows-any/sapi54.h2
-rw-r--r--lib/libc/include/any-windows-any/sdkddkver.h3
-rw-r--r--lib/libc/include/any-windows-any/sensorsapi.h2
-rw-r--r--lib/libc/include/any-windows-any/servprov.h2
-rw-r--r--lib/libc/include/any-windows-any/setjmp.h8
-rw-r--r--lib/libc/include/any-windows-any/shldisp.h2
-rw-r--r--lib/libc/include/any-windows-any/shobjidl.h140
-rw-r--r--lib/libc/include/any-windows-any/shtypes.h2
-rw-r--r--lib/libc/include/any-windows-any/spatialaudioclient.h2
-rw-r--r--lib/libc/include/any-windows-any/spellcheck.h2
-rw-r--r--lib/libc/include/any-windows-any/stdio.h20
-rw-r--r--lib/libc/include/any-windows-any/strmif.h2
-rw-r--r--lib/libc/include/any-windows-any/structuredquerycondition.h2
-rw-r--r--lib/libc/include/any-windows-any/sys/timeb.h10
-rw-r--r--lib/libc/include/any-windows-any/taskschd.h2
-rw-r--r--lib/libc/include/any-windows-any/textstor.h2
-rw-r--r--lib/libc/include/any-windows-any/thumbcache.h2
-rw-r--r--lib/libc/include/any-windows-any/time.h22
-rw-r--r--lib/libc/include/any-windows-any/timeapi.h12
-rw-r--r--lib/libc/include/any-windows-any/tlbref.h2
-rw-r--r--lib/libc/include/any-windows-any/tlogstg.h2
-rw-r--r--lib/libc/include/any-windows-any/tpcshrd.h2
-rw-r--r--lib/libc/include/any-windows-any/tsvirtualchannels.h1060
-rw-r--r--lib/libc/include/any-windows-any/tuner.h2
-rw-r--r--lib/libc/include/any-windows-any/uianimation.h2
-rw-r--r--lib/libc/include/any-windows-any/uiautomationclient.h198
-rw-r--r--lib/libc/include/any-windows-any/uiautomationcore.h269
-rw-r--r--lib/libc/include/any-windows-any/uiautomationcoreapi.h1
-rw-r--r--lib/libc/include/any-windows-any/uiviewsettingsinterop.h2
-rw-r--r--lib/libc/include/any-windows-any/unknwn.h2
-rw-r--r--lib/libc/include/any-windows-any/unknwnbase.h2
-rw-r--r--lib/libc/include/any-windows-any/urlhist.h2
-rw-r--r--lib/libc/include/any-windows-any/urlmon.h2
-rw-r--r--lib/libc/include/any-windows-any/vdslun.h146
-rw-r--r--lib/libc/include/any-windows-any/vmr9.h2
-rw-r--r--lib/libc/include/any-windows-any/vsadmin.h363
-rw-r--r--lib/libc/include/any-windows-any/vsanimation.h242
-rw-r--r--lib/libc/include/any-windows-any/vsbackup.h4824
-rw-r--r--lib/libc/include/any-windows-any/vsmgmt.h1221
-rw-r--r--lib/libc/include/any-windows-any/vsprov.h1199
-rw-r--r--lib/libc/include/any-windows-any/vss.h2
-rw-r--r--lib/libc/include/any-windows-any/vswriter.h3517
-rw-r--r--lib/libc/include/any-windows-any/wbemads.h2
-rw-r--r--lib/libc/include/any-windows-any/wbemcli.h2
-rw-r--r--lib/libc/include/any-windows-any/wbemdisp.h2
-rw-r--r--lib/libc/include/any-windows-any/wbemprov.h2
-rw-r--r--lib/libc/include/any-windows-any/wbemtran.h2
-rw-r--r--lib/libc/include/any-windows-any/wchar.h2
-rw-r--r--lib/libc/include/any-windows-any/wdstptmgmt.h2
-rw-r--r--lib/libc/include/any-windows-any/webauthn.h369
-rw-r--r--lib/libc/include/any-windows-any/winbase.h17
-rw-r--r--lib/libc/include/any-windows-any/wincodec.h2
-rw-r--r--lib/libc/include/any-windows-any/wincodecsdk.h2
-rw-r--r--lib/libc/include/any-windows-any/wincon.h30
-rw-r--r--lib/libc/include/any-windows-any/windns.h538
-rw-r--r--lib/libc/include/any-windows-any/windows.foundation.collections.h47
-rw-r--r--lib/libc/include/any-windows-any/windows.foundation.h214
-rw-r--r--lib/libc/include/any-windows-any/windows.media.h223
-rw-r--r--lib/libc/include/any-windows-any/windows.media.speechsynthesis.h926
-rw-r--r--lib/libc/include/any-windows-any/windows.security.cryptography.h16
-rw-r--r--lib/libc/include/any-windows-any/windows.storage.h103
-rw-r--r--lib/libc/include/any-windows-any/windows.storage.streams.h2
-rw-r--r--lib/libc/include/any-windows-any/windows.system.h2
-rw-r--r--lib/libc/include/any-windows-any/windows.system.threading.h54
-rw-r--r--lib/libc/include/any-windows-any/windowscontracts.h2
-rw-r--r--lib/libc/include/any-windows-any/winerror.h21
-rw-r--r--lib/libc/include/any-windows-any/winevt.h21
-rw-r--r--lib/libc/include/any-windows-any/winhvplatform.h37
-rw-r--r--lib/libc/include/any-windows-any/winhvplatformdefs.h731
-rw-r--r--lib/libc/include/any-windows-any/wininet.h98
-rw-r--r--lib/libc/include/any-windows-any/winineti.h1
-rw-r--r--lib/libc/include/any-windows-any/winioctl.h475
-rw-r--r--lib/libc/include/any-windows-any/winnt.h123
-rw-r--r--lib/libc/include/any-windows-any/winsock2.h7
-rw-r--r--lib/libc/include/any-windows-any/winsvc.h115
-rw-r--r--lib/libc/include/any-windows-any/winuser.h5
-rw-r--r--lib/libc/include/any-windows-any/wmcodecdsp.h2
-rw-r--r--lib/libc/include/any-windows-any/wmcontainer.h2
-rw-r--r--lib/libc/include/any-windows-any/wmdrmsdk.h2
-rw-r--r--lib/libc/include/any-windows-any/wmp.h2
-rw-r--r--lib/libc/include/any-windows-any/wmprealestate.h2
-rw-r--r--lib/libc/include/any-windows-any/wmpservices.h2
-rw-r--r--lib/libc/include/any-windows-any/wmsbuffer.h315
-rw-r--r--lib/libc/include/any-windows-any/wmsdkidl.h381
-rw-r--r--lib/libc/include/any-windows-any/wmsecure.h472
-rw-r--r--lib/libc/include/any-windows-any/wpcapi.h2
-rw-r--r--lib/libc/include/any-windows-any/ws2ipdef.h5
-rw-r--r--lib/libc/include/any-windows-any/wsdattachment.h2
-rw-r--r--lib/libc/include/any-windows-any/wsdbase.h2
-rw-r--r--lib/libc/include/any-windows-any/wsdclient.h2
-rw-r--r--lib/libc/include/any-windows-any/wsddisco.h2
-rw-r--r--lib/libc/include/any-windows-any/wsdhost.h2
-rw-r--r--lib/libc/include/any-windows-any/wsdxml.h2
-rw-r--r--lib/libc/include/any-windows-any/wsmandisp.h2
-rw-r--r--lib/libc/include/any-windows-any/wtypes.h2
-rw-r--r--lib/libc/include/any-windows-any/wtypesbase.h2
-rw-r--r--lib/libc/include/any-windows-any/wuapi.h159
-rw-r--r--lib/libc/include/any-windows-any/wuerror.h482
-rw-r--r--lib/libc/include/any-windows-any/xapo.h2
-rw-r--r--lib/libc/include/any-windows-any/xaudio2.h2
-rw-r--r--lib/libc/include/any-windows-any/xaudio2fx.h2
-rw-r--r--lib/libc/include/any-windows-any/xmllite.h2
-rw-r--r--lib/libc/include/any-windows-any/xpsdigitalsignature.h2
-rw-r--r--lib/libc/include/any-windows-any/xpsobjectmodel.h2
-rw-r--r--lib/libc/include/any-windows-any/xpsobjectmodel_1.h2
-rw-r--r--lib/libc/include/any-windows-any/xpsprint.h2
-rw-r--r--lib/libc/include/any-windows-any/xpsrassvc.h2
-rw-r--r--lib/libc/mingw/crt/charmax.c2
-rw-r--r--lib/libc/mingw/crt/crtdll.c4
-rw-r--r--lib/libc/mingw/crt/crtexe.c30
-rw-r--r--lib/libc/mingw/crt/mingw_helpers.c2
-rw-r--r--lib/libc/mingw/crt/pseudo-reloc.c21
-rw-r--r--lib/libc/mingw/crt/tlssup.c6
-rw-r--r--lib/libc/mingw/gdtoa/strtopx.c14
-rw-r--r--lib/libc/mingw/include/config.h13
-rw-r--r--lib/libc/mingw/include/msvcrt.h4
-rw-r--r--lib/libc/mingw/lib-common/bthprops.def (renamed from lib/libc/mingw/lib64/bthprops.def)0
-rw-r--r--lib/libc/mingw/lib-common/fwpuclnt.def (renamed from lib/libc/mingw/libarm32/fwpuclnt.def)28
-rw-r--r--lib/libc/mingw/lib-common/glu32.def (renamed from lib/libc/mingw/lib64/glu32.def)0
-rw-r--r--lib/libc/mingw/lib-common/msvcrt.def.in4
-rw-r--r--lib/libc/mingw/lib-common/mswsock.def2
-rw-r--r--lib/libc/mingw/lib-common/ntdll.def.in60
-rw-r--r--lib/libc/mingw/lib-common/opengl32.def (renamed from lib/libc/mingw/lib64/opengl32.def)0
-rw-r--r--lib/libc/mingw/lib-common/query.def17
-rw-r--r--lib/libc/mingw/lib-common/tbs.def3
-rw-r--r--lib/libc/mingw/lib-common/ws2_32.def.in1
-rw-r--r--lib/libc/mingw/lib32/authz.def36
-rw-r--r--lib/libc/mingw/lib32/fwpuclnt.def145
-rw-r--r--lib/libc/mingw/lib32/ksuser.def11
-rw-r--r--lib/libc/mingw/lib32/mswsock.def46
-rw-r--r--lib/libc/mingw/lib32/ntdll.def55
-rw-r--r--lib/libc/mingw/lib32/query.def17
-rw-r--r--lib/libc/mingw/lib32/tbs.def15
-rw-r--r--lib/libc/mingw/lib32/user32.def191
-rw-r--r--lib/libc/mingw/lib32/ws2_32.def14
-rw-r--r--lib/libc/mingw/lib64/fwpuclnt.def146
-rw-r--r--lib/libc/mingw/lib64/query.def1447
-rw-r--r--lib/libc/mingw/libarm32/query.def51
-rw-r--r--lib/libc/mingw/math/cephes_emath.c1283
-rw-r--r--lib/libc/mingw/math/cephes_emath.h719
-rw-r--r--lib/libc/mingw/math/x86/asinh.c55
-rw-r--r--lib/libc/mingw/math/x86/asinhf.c17
-rw-r--r--lib/libc/mingw/math/x86/asinhl.c15
-rw-r--r--lib/libc/mingw/math/x86/atanh.c2
-rw-r--r--lib/libc/mingw/math/x86/atanhf.c2
-rw-r--r--lib/libc/mingw/math/x86/atanhl.c2
-rw-r--r--lib/libc/mingw/misc/btowc.c6
-rw-r--r--lib/libc/mingw/misc/lc_locale_func.c31
-rw-r--r--lib/libc/mingw/misc/mingw_wcstod.c18
-rw-r--r--lib/libc/mingw/misc/mingw_wcstold.c96
-rw-r--r--lib/libc/mingw/misc/seterrno.c12
-rw-r--r--lib/libc/mingw/misc/setjmp.S2
-rw-r--r--lib/libc/mingw/misc/strtold.c398
-rw-r--r--lib/libc/mingw/misc/wcstold.c64
-rw-r--r--lib/libc/mingw/secapi/vsprintf_s.c5
-rw-r--r--lib/libc/mingw/stdio/mingw_pformat.c1886
-rw-r--r--lib/libc/mingw/stdio/scanf.S154
-rw-r--r--lib/libc/mingw/stdio/snprintf.c22
-rw-r--r--lib/libc/mingw/stdio/strtof.c18
-rw-r--r--lib/libc/mingw/stdio/vfscanf.c6
-rw-r--r--lib/libc/mingw/stdio/vfwscanf.c6
-rw-r--r--lib/libc/mingw/stdio/vsnprintf.c10
-rw-r--r--lib/libc/mingw/stdio/vsscanf.c6
-rw-r--r--lib/libc/mingw/stdio/vswscanf.c6
-rw-r--r--lib/libc/mingw/stdio/vwscanf.c5
-rw-r--r--lib/std/Progress.zig4
-rw-r--r--lib/std/bit_set.zig6
-rw-r--r--lib/std/build.zig14
-rw-r--r--lib/std/build/CheckObjectStep.zig36
-rw-r--r--lib/std/compress/deflate.zig1
-rw-r--r--lib/std/compress/deflate/compressor.zig2
-rw-r--r--lib/std/enums.zig2
-rw-r--r--lib/std/fmt.zig2
-rw-r--r--lib/std/http/status.zig4
-rw-r--r--lib/std/math.zig39
-rw-r--r--lib/std/math/big/int.zig1
-rw-r--r--lib/std/math/big/rational.zig4
-rw-r--r--lib/std/math/ilogb.zig238
-rw-r--r--lib/std/math/ldexp.zig189
-rw-r--r--lib/std/os/linux.zig11
-rw-r--r--lib/std/os/linux/io_uring.zig8
-rw-r--r--lib/std/os/uefi/protocols/managed_network_protocol.zig5
-rw-r--r--lib/std/os/uefi/protocols/simple_text_input_ex_protocol.zig4
-rw-r--r--lib/std/os/uefi/tables/boot_services.zig2
-rw-r--r--lib/std/testing.zig8
-rw-r--r--src/AstGen.zig81
-rw-r--r--src/Compilation.zig4
-rw-r--r--src/Module.zig18
-rw-r--r--src/Sema.zig523
-rw-r--r--src/Zir.zig18
-rw-r--r--src/arch/aarch64/CodeGen.zig2
-rw-r--r--src/arch/riscv64/CodeGen.zig2
-rw-r--r--src/arch/wasm/CodeGen.zig8
-rw-r--r--src/arch/wasm/Emit.zig2
-rw-r--r--src/arch/x86_64/CodeGen.zig2
-rw-r--r--src/clang.zig6
-rw-r--r--src/codegen.zig14
-rw-r--r--src/codegen/c.zig34
-rw-r--r--src/codegen/llvm.zig13
-rw-r--r--src/link.zig2
-rw-r--r--src/link/Wasm.zig74
-rw-r--r--src/link/Wasm/Atom.zig9
-rw-r--r--src/link/Wasm/Object.zig2
-rw-r--r--src/link/Wasm/types.zig4
-rw-r--r--src/main.zig24
-rw-r--r--src/mingw.zig9
-rw-r--r--src/print_zir.zig2
-rw-r--r--src/stage1.zig16
-rw-r--r--src/stage1/parse_f128.c4
-rw-r--r--src/tracy.zig4
-rw-r--r--src/translate_c.zig101
-rw-r--r--src/translate_c/ast.zig76
-rw-r--r--src/type.zig24
-rw-r--r--src/zig_clang.cpp15
-rw-r--r--src/zig_clang.h2
-rw-r--r--test/behavior.zig3
-rw-r--r--test/behavior/align.zig2
-rw-r--r--test/behavior/array.zig2
-rw-r--r--test/behavior/basic.zig2
-rw-r--r--test/behavior/bugs/12890.zig18
-rw-r--r--test/behavior/bugs/13068.zig15
-rw-r--r--test/behavior/bugs/13128.zig29
-rw-r--r--test/behavior/enum.zig4
-rw-r--r--test/behavior/error.zig23
-rw-r--r--test/behavior/eval.zig24
-rw-r--r--test/behavior/export.zig13
-rw-r--r--test/behavior/inline_switch.zig13
-rw-r--r--test/behavior/math.zig2
-rw-r--r--test/behavior/pointers.zig11
-rw-r--r--test/behavior/sizeof_and_typeof.zig4
-rw-r--r--test/behavior/slice.zig20
-rw-r--r--test/behavior/struct.zig2
-rw-r--r--test/behavior/truncate.zig4
-rw-r--r--test/c_abi/cfuncs.c81
-rw-r--r--test/c_abi/main.zig95
-rw-r--r--test/cases/compile_errors/accessing_runtime_paramter_outside_function_scope.zig12
-rw-r--r--test/cases/compile_errors/comparison_with_error_union_and_error_value.zig10
-rw-r--r--test/cases/compile_errors/decl_shadows_local.zig4
-rw-r--r--test/cases/compile_errors/dereference_anyopaque.zig8
-rw-r--r--test/cases/compile_errors/error_in_typeof_param.zig2
-rw-r--r--test/cases/compile_errors/explain_why_fn_is_called_at_comptime.zig4
-rw-r--r--test/cases/compile_errors/explain_why_generic_fn_is_called_at_comptime.zig4
-rw-r--r--test/cases/compile_errors/fieldParentPtr_on_comptime_field.zig16
-rw-r--r--test/cases/compile_errors/generic_funciton_instantiation_inherits_parent_branch_quota.zig30
-rw-r--r--test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig4
-rw-r--r--test/cases/compile_errors/local_shadows_global_that_occurs_later.zig2
-rw-r--r--test/cases/compile_errors/local_variable_redeclares_parameter.zig2
-rw-r--r--test/cases/compile_errors/local_variable_shadowing_global.zig2
-rw-r--r--test/cases/compile_errors/non-comptime-parameter-used-as-array-size.zig2
-rw-r--r--test/cases/compile_errors/non-const_switch_number_literal.zig2
-rw-r--r--test/cases/compile_errors/non-const_variables_of_things_that_require_const_variables.zig2
-rw-r--r--test/cases/compile_errors/non-inline_for_loop_on_a_type_that_requires_comptime.zig2
-rw-r--r--test/cases/compile_errors/non_comptime_param_in_comptime_function.zig4
-rw-r--r--test/cases/compile_errors/non_void_error_union_payload_ignored.zig25
-rw-r--r--test/cases/compile_errors/old_fn_ptr_in_extern_context.zig20
-rw-r--r--test/cases/compile_errors/parameter_shadowing_global.zig2
-rw-r--r--test/cases/compile_errors/runtime_index_into_comptime_type_slice.zig2
-rw-r--r--test/cases/compile_errors/runtime_indexing_comptime_array.zig6
-rw-r--r--test/cases/compile_errors/runtime_to_comptime_num.zig8
-rw-r--r--test/cases/compile_errors/runtime_value_in_switch_prong.zig14
-rw-r--r--test/cases/compile_errors/sema_src_used_after_inline_call.zig26
-rw-r--r--test/cases/compile_errors/shifting_without_int_type_or_comptime_known.zig8
-rw-r--r--test/cases/compile_errors/slice_of_pointer_must_include_end_value.zig10
-rw-r--r--test/cases/function_redeclaration.zig2
-rw-r--r--test/cases/safety/switch else on corrupt enum value - one prong.zig24
-rw-r--r--test/cases/safety/switch else on corrupt enum value - union.zig29
-rw-r--r--test/cases/safety/switch else on corrupt enum value.zig23
-rw-r--r--test/cases/variable_shadowing.1.zig2
-rw-r--r--test/cases/variable_shadowing.3.zig2
-rw-r--r--test/cases/variable_shadowing.4.zig2
-rw-r--r--test/cases/variable_shadowing.5.zig2
-rw-r--r--test/cases/variable_shadowing.6.zig2
-rw-r--r--test/cases/variable_shadowing.7.zig2
-rw-r--r--test/cases/variable_shadowing.8.zig2
-rw-r--r--test/cases/variable_shadowing.9.zig2
-rw-r--r--test/cases/x86_64-linux/assert_function.8.zig2
-rw-r--r--test/cases/x86_64-macos/assert_function.8.zig2
-rw-r--r--test/cli.zig2
-rw-r--r--test/compile_errors.zig4
-rw-r--r--test/link.zig7
-rw-r--r--test/link/wasm/archive/build.zig1
-rw-r--r--test/link/wasm/bss/build.zig1
-rw-r--r--test/link/wasm/producers/build.zig37
-rw-r--r--test/link/wasm/producers/lib.zig1
-rw-r--r--test/link/wasm/segments/build.zig1
-rw-r--r--test/link/wasm/stack_pointer/build.zig1
-rw-r--r--test/link/wasm/type/build.zig1
-rw-r--r--test/run_translated_c.zig95
-rw-r--r--test/standalone/c_compiler/test.c26
-rw-r--r--test/translate_c.zig108
501 files changed, 39156 insertions, 8939 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 336ad0637b..7de04a9492 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -309,8 +309,14 @@ set(EMBEDDED_SOFTFLOAT_SOURCES
)
add_library(embedded_softfloat STATIC ${EMBEDDED_SOFTFLOAT_SOURCES})
if(MSVC)
+ set(SOFTFLOAT_CFLAGS "/w")
+
+ if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ set(SOFTFLOAT_CFLAGS "${SOFTFLOAT_CFLAGS} /O2")
+ endif()
+
set_target_properties(embedded_softfloat PROPERTIES
- COMPILE_FLAGS "/w /O2"
+ COMPILE_FLAGS ${SOFTFLOAT_CFLAGS}
)
else()
set_target_properties(embedded_softfloat PROPERTIES
@@ -871,7 +877,9 @@ else()
endif()
if(MSVC)
- set(OPTIMIZED_C_FLAGS "/O2")
+ if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ set(OPTIMIZED_C_FLAGS "/O2")
+ endif()
else(MSVC)
set(OPTIMIZED_C_FLAGS "-std=c99 -O3")
endif(MSVC)
diff --git a/build.zig b/build.zig
index 3bb5474ce3..3c106bd314 100644
--- a/build.zig
+++ b/build.zig
@@ -124,6 +124,7 @@ pub fn build(b: *Builder) !void {
const tracy_allocation = b.option(bool, "tracy-allocation", "Include allocation information with Tracy data. Does nothing if -Dtracy is not provided") orelse false;
const force_gpa = b.option(bool, "force-gpa", "Force the compiler to use GeneralPurposeAllocator") orelse false;
const link_libc = b.option(bool, "force-link-libc", "Force self-hosted compiler to link libc") orelse enable_llvm;
+ const sanitize_thread = b.option(bool, "sanitize-thread", "Enable thread-sanitization") orelse false;
const strip = b.option(bool, "strip", "Omit debug information") orelse false;
const use_zig0 = b.option(bool, "zig0", "Bootstrap using zig0") orelse false;
const value_tracing = b.option(bool, "value-tracing", "Enable extra state tracking to help troubleshoot bugs in the compiler (using the std.debug.Trace API)") orelse false;
@@ -143,6 +144,7 @@ pub fn build(b: *Builder) !void {
const exe = b.addExecutable("zig", main_file);
exe.stack_size = stack_size;
exe.strip = strip;
+ exe.sanitize_thread = sanitize_thread;
exe.build_id = b.option(bool, "build-id", "Include a build id note") orelse false;
exe.install();
exe.setBuildMode(mode);
@@ -307,15 +309,15 @@ pub fn build(b: *Builder) !void {
.Debug => {},
.ReleaseFast => {
zig1_obj.addArg("-OReleaseFast");
- zig1_obj.addArg("--strip");
+ zig1_obj.addArg("-fstrip");
},
.ReleaseSafe => {
zig1_obj.addArg("-OReleaseSafe");
- zig1_obj.addArg("--strip");
+ zig1_obj.addArg("-fstrip");
},
.ReleaseSmall => {
zig1_obj.addArg("-OReleaseSmall");
- zig1_obj.addArg("--strip");
+ zig1_obj.addArg("-fstrip");
},
}
if (single_threaded orelse false) {
diff --git a/ci/azure/pipelines.yml b/ci/azure/pipelines.yml
index 79cb9fc637..f304fe1205 100644
--- a/ci/azure/pipelines.yml
+++ b/ci/azure/pipelines.yml
@@ -16,7 +16,7 @@ jobs:
vmImage: 'windows-2019'
variables:
TARGET: 'x86_64-windows-gnu'
- ZIG_LLVM_CLANG_LLD_NAME: 'zig+llvm+lld+clang-${{ variables.TARGET }}-0.10.0-dev.4193+f3a1b5c48'
+ ZIG_LLVM_CLANG_LLD_NAME: 'zig+llvm+lld+clang-${{ variables.TARGET }}-0.10.0-dev.4300+1f196b9e2'
ZIG_LLVM_CLANG_LLD_URL: 'https://ziglang.org/deps/${{ variables.ZIG_LLVM_CLANG_LLD_NAME }}.zip'
steps:
- pwsh: |
diff --git a/doc/langref.html.in b/doc/langref.html.in
index 7cc26d662a..effa974f22 100644
--- a/doc/langref.html.in
+++ b/doc/langref.html.in
@@ -4064,7 +4064,7 @@ test "labeled break from labeled block expression" {
{#header_open|Shadowing#}
<p>{#link|Identifiers#} are never allowed to "hide" other identifiers by using the same name:</p>
- {#code_begin|test_err|local shadows declaration#}
+ {#code_begin|test_err|local variable shadows declaration#}
const pi = 3.14;
test "inside test block" {
@@ -8171,7 +8171,7 @@ fn func(y: *i32) void {
{#header_open|@mulAdd#}
<pre>{#syntax#}@mulAdd(comptime T: type, a: T, b: T, c: T) T{#endsyntax#}</pre>
<p>
- Fused multiply add, similar to {#syntax#}(a * b) + c{#endsyntax#}, except
+ Fused multiply-add, similar to {#syntax#}(a * b) + c{#endsyntax#}, except
only rounds once, and is thus more accurate.
</p>
<p>
@@ -9306,7 +9306,7 @@ pub const FloatMode = enum {
<li>Assume the arguments and result are not +/-Inf. Optimizations are required to retain defined behavior over +/-Inf, but the value of the result is undefined.</li>
<li>Treat the sign of a zero argument or result as insignificant.</li>
<li>Use the reciprocal of an argument rather than perform division.</li>
- <li>Perform floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-and-add).</li>
+ <li>Perform floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-add).</li>
<li>Perform algebraically equivalent transformations that may change results in floating point (e.g. reassociate).</li>
</ul>
This is equivalent to <code>-ffast-math</code> in GCC.
diff --git a/lib/compiler_rt.zig b/lib/compiler_rt.zig
index 105c5ed7ad..d261c49ff1 100644
--- a/lib/compiler_rt.zig
+++ b/lib/compiler_rt.zig
@@ -15,11 +15,25 @@ comptime {
_ = @import("compiler_rt/subxf3.zig");
_ = @import("compiler_rt/mulf3.zig");
- _ = @import("compiler_rt/muldf3.zig");
_ = @import("compiler_rt/mulsf3.zig");
+ _ = @import("compiler_rt/muldf3.zig");
_ = @import("compiler_rt/multf3.zig");
_ = @import("compiler_rt/mulxf3.zig");
+ _ = @import("compiler_rt/mulc3.zig");
+ _ = @import("compiler_rt/mulhc3.zig");
+ _ = @import("compiler_rt/mulsc3.zig");
+ _ = @import("compiler_rt/muldc3.zig");
+ _ = @import("compiler_rt/mulxc3.zig");
+ _ = @import("compiler_rt/multc3.zig");
+
+ _ = @import("compiler_rt/divc3.zig");
+ _ = @import("compiler_rt/divhc3.zig");
+ _ = @import("compiler_rt/divsc3.zig");
+ _ = @import("compiler_rt/divdc3.zig");
+ _ = @import("compiler_rt/divxc3.zig");
+ _ = @import("compiler_rt/divtc3.zig");
+
_ = @import("compiler_rt/negsf2.zig");
_ = @import("compiler_rt/negdf2.zig");
_ = @import("compiler_rt/negtf2.zig");
diff --git a/lib/compiler_rt/divc3.zig b/lib/compiler_rt/divc3.zig
new file mode 100644
index 0000000000..4e4dba2856
--- /dev/null
+++ b/lib/compiler_rt/divc3.zig
@@ -0,0 +1,62 @@
+const std = @import("std");
+const isNan = std.math.isNan;
+const isInf = std.math.isInf;
+const scalbn = std.math.scalbn;
+const ilogb = std.math.ilogb;
+const max = std.math.max;
+const fabs = std.math.fabs;
+const maxInt = std.math.maxInt;
+const minInt = std.math.minInt;
+const isFinite = std.math.isFinite;
+const copysign = std.math.copysign;
+const Complex = @import("mulc3.zig").Complex;
+
+/// Implementation based on Annex G of C17 Standard (N2176)
+pub inline fn divc3(comptime T: type, a: T, b: T, c_in: T, d_in: T) Complex(T) {
+ var c = c_in;
+ var d = d_in;
+
+ // logbw used to prevent under/over-flow
+ const logbw = ilogb(max(fabs(c), fabs(d)));
+ const logbw_finite = logbw != maxInt(i32) and logbw != minInt(i32);
+ const ilogbw = if (logbw_finite) b: {
+ c = scalbn(c, -logbw);
+ d = scalbn(d, -logbw);
+ break :b logbw;
+ } else 0;
+ const denom = c * c + d * d;
+ const result = Complex(T){
+ .real = scalbn((a * c + b * d) / denom, -ilogbw),
+ .imag = scalbn((b * c - a * d) / denom, -ilogbw),
+ };
+
+ // Recover infinities and zeros that computed as NaN+iNaN;
+ // the only cases are non-zero/zero, infinite/finite, and finite/infinite, ...
+ if (isNan(result.real) and isNan(result.imag)) {
+ const zero: T = 0.0;
+ const one: T = 1.0;
+
+ if ((denom == 0.0) and (!isNan(a) or !isNan(b))) {
+ return .{
+ .real = copysign(std.math.inf(T), c) * a,
+ .imag = copysign(std.math.inf(T), c) * b,
+ };
+ } else if ((isInf(a) or isInf(b)) and isFinite(c) and isFinite(d)) {
+ const boxed_a = copysign(if (isInf(a)) one else zero, a);
+ const boxed_b = copysign(if (isInf(b)) one else zero, b);
+ return .{
+ .real = std.math.inf(T) * (boxed_a * c - boxed_b * d),
+ .imag = std.math.inf(T) * (boxed_b * c - boxed_a * d),
+ };
+ } else if (logbw == maxInt(i32) and isFinite(a) and isFinite(b)) {
+ const boxed_c = copysign(if (isInf(c)) one else zero, c);
+ const boxed_d = copysign(if (isInf(d)) one else zero, d);
+ return .{
+ .real = 0.0 * (a * boxed_c + b * boxed_d),
+ .imag = 0.0 * (b * boxed_c - a * boxed_d),
+ };
+ }
+ }
+
+ return result;
+}
diff --git a/lib/compiler_rt/divc3_test.zig b/lib/compiler_rt/divc3_test.zig
new file mode 100644
index 0000000000..525e2f70fc
--- /dev/null
+++ b/lib/compiler_rt/divc3_test.zig
@@ -0,0 +1,77 @@
+const std = @import("std");
+const math = std.math;
+const expect = std.testing.expect;
+
+const Complex = @import("./mulc3.zig").Complex;
+const __divhc3 = @import("./divhc3.zig").__divhc3;
+const __divsc3 = @import("./divsc3.zig").__divsc3;
+const __divdc3 = @import("./divdc3.zig").__divdc3;
+const __divxc3 = @import("./divxc3.zig").__divxc3;
+const __divtc3 = @import("./divtc3.zig").__divtc3;
+
+test {
+ try testDiv(f16, __divhc3);
+ try testDiv(f32, __divsc3);
+ try testDiv(f64, __divdc3);
+ try testDiv(f80, __divxc3);
+ try testDiv(f128, __divtc3);
+}
+
+fn testDiv(comptime T: type, comptime f: fn (T, T, T, T) callconv(.C) Complex(T)) !void {
+ {
+ var a: T = 1.0;
+ var b: T = 0.0;
+ var c: T = -1.0;
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == -1.0);
+ try expect(result.imag == 0.0);
+ }
+ {
+ var a: T = 1.0;
+ var b: T = 0.0;
+ var c: T = -4.0;
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == -0.25);
+ try expect(result.imag == 0.0);
+ }
+ {
+ // if the first operand is an infinity and the second operand is a finite number, then the
+ // result of the / operator is an infinity;
+ var a: T = -math.inf(T);
+ var b: T = 0.0;
+ var c: T = -4.0;
+ var d: T = 1.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == math.inf(T));
+ try expect(result.imag == math.inf(T));
+ }
+ {
+ // if the first operand is a finite number and the second operand is an infinity, then the
+ // result of the / operator is a zero;
+ var a: T = 17.2;
+ var b: T = 0.0;
+ var c: T = -math.inf(T);
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == -0.0);
+ try expect(result.imag == 0.0);
+ }
+ {
+ // if the first operand is a nonzero finite number or an infinity and the second operand is
+ // a zero, then the result of the / operator is an infinity
+ var a: T = 1.1;
+ var b: T = 0.1;
+ var c: T = 0.0;
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == math.inf(T));
+ try expect(result.imag == math.inf(T));
+ }
+}
diff --git a/lib/compiler_rt/divdc3.zig b/lib/compiler_rt/divdc3.zig
new file mode 100644
index 0000000000..f7592f639d
--- /dev/null
+++ b/lib/compiler_rt/divdc3.zig
@@ -0,0 +1,11 @@
+const common = @import("./common.zig");
+const divc3 = @import("./divc3.zig");
+const Complex = @import("./mulc3.zig").Complex;
+
+comptime {
+ @export(__divdc3, .{ .name = "__divdc3", .linkage = common.linkage });
+}
+
+pub fn __divdc3(a: f64, b: f64, c: f64, d: f64) callconv(.C) Complex(f64) {
+ return divc3.divc3(f64, a, b, c, d);
+}
diff --git a/lib/compiler_rt/divhc3.zig b/lib/compiler_rt/divhc3.zig
new file mode 100644
index 0000000000..e2d682fe2d
--- /dev/null
+++ b/lib/compiler_rt/divhc3.zig
@@ -0,0 +1,11 @@
+const common = @import("./common.zig");
+const divc3 = @import("./divc3.zig");
+const Complex = @import("./mulc3.zig").Complex;
+
+comptime {
+ @export(__divhc3, .{ .name = "__divhc3", .linkage = common.linkage });
+}
+
+pub fn __divhc3(a: f16, b: f16, c: f16, d: f16) callconv(.C) Complex(f16) {
+ return divc3.divc3(f16, a, b, c, d);
+}
diff --git a/lib/compiler_rt/divsc3.zig b/lib/compiler_rt/divsc3.zig
new file mode 100644
index 0000000000..a64f14629c
--- /dev/null
+++ b/lib/compiler_rt/divsc3.zig
@@ -0,0 +1,11 @@
+const common = @import("./common.zig");
+const divc3 = @import("./divc3.zig");
+const Complex = @import("./mulc3.zig").Complex;
+
+comptime {
+ @export(__divsc3, .{ .name = "__divsc3", .linkage = common.linkage });
+}
+
+pub fn __divsc3(a: f32, b: f32, c: f32, d: f32) callconv(.C) Complex(f32) {
+ return divc3.divc3(f32, a, b, c, d);
+}
diff --git a/lib/compiler_rt/divtc3.zig b/lib/compiler_rt/divtc3.zig
new file mode 100644
index 0000000000..190df5c067
--- /dev/null
+++ b/lib/compiler_rt/divtc3.zig
@@ -0,0 +1,11 @@
+const common = @import("./common.zig");
+const divc3 = @import("./divc3.zig");
+const Complex = @import("./mulc3.zig").Complex;
+
+comptime {
+ @export(__divtc3, .{ .name = "__divtc3", .linkage = common.linkage });
+}
+
+pub fn __divtc3(a: f128, b: f128, c: f128, d: f128) callconv(.C) Complex(f128) {
+ return divc3.divc3(f128, a, b, c, d);
+}
diff --git a/lib/compiler_rt/divxc3.zig b/lib/compiler_rt/divxc3.zig
new file mode 100644
index 0000000000..32fb269ca5
--- /dev/null
+++ b/lib/compiler_rt/divxc3.zig
@@ -0,0 +1,11 @@
+const common = @import("./common.zig");
+const divc3 = @import("./divc3.zig");
+const Complex = @import("./mulc3.zig").Complex;
+
+comptime {
+ @export(__divxc3, .{ .name = "__divxc3", .linkage = common.linkage });
+}
+
+pub fn __divxc3(a: f80, b: f80, c: f80, d: f80) callconv(.C) Complex(f80) {
+ return divc3.divc3(f80, a, b, c, d);
+}
diff --git a/lib/compiler_rt/extenddfxf2.zig b/lib/compiler_rt/extenddfxf2.zig
index e76b2fc038..380a7de4a4 100644
--- a/lib/compiler_rt/extenddfxf2.zig
+++ b/lib/compiler_rt/extenddfxf2.zig
@@ -7,6 +7,6 @@ comptime {
@export(__extenddfxf2, .{ .name = "__extenddfxf2", .linkage = common.linkage });
}
-fn __extenddfxf2(a: f64) callconv(.C) f80 {
+pub fn __extenddfxf2(a: f64) callconv(.C) f80 {
return extend_f80(f64, @bitCast(u64, a));
}
diff --git a/lib/compiler_rt/extendf.zig b/lib/compiler_rt/extendf.zig
index 2bb40fc2bd..feafbfc893 100644
--- a/lib/compiler_rt/extendf.zig
+++ b/lib/compiler_rt/extendf.zig
@@ -92,6 +92,8 @@ pub inline fn extend_f80(comptime src_t: type, a: std.meta.Int(.unsigned, @typeI
const src_qnan = 1 << (src_sig_bits - 1);
const src_nan_code = src_qnan - 1;
+ const SrcShift = std.math.Log2Int(src_rep_t);
+
var dst: std.math.F80 = undefined;
// Break a into a sign and representation of the absolute value
@@ -124,7 +126,7 @@ pub inline fn extend_f80(comptime src_t: type, a: std.meta.Int(.unsigned, @typeI
dst.fraction = @as(u64, a_abs) << @intCast(u6, dst_sig_bits - src_sig_bits + scale);
dst.fraction |= dst_int_bit; // bit 64 is always set for normal numbers
- dst.exp = @truncate(u16, a_abs >> @intCast(u4, src_sig_bits - scale));
+ dst.exp = @truncate(u16, a_abs >> @intCast(SrcShift, src_sig_bits - scale));
dst.exp ^= 1;
dst.exp |= dst_exp_bias - src_exp_bias - scale + 1;
} else {
diff --git a/lib/compiler_rt/extendf_test.zig b/lib/compiler_rt/extendf_test.zig
index 1102092a04..1d88c0c4fa 100644
--- a/lib/compiler_rt/extendf_test.zig
+++ b/lib/compiler_rt/extendf_test.zig
@@ -1,10 +1,27 @@
+const std = @import("std");
+const math = std.math;
const builtin = @import("builtin");
const __extendhfsf2 = @import("extendhfsf2.zig").__extendhfsf2;
const __extendhftf2 = @import("extendhftf2.zig").__extendhftf2;
const __extendsftf2 = @import("extendsftf2.zig").__extendsftf2;
const __extenddftf2 = @import("extenddftf2.zig").__extenddftf2;
+const __extenddfxf2 = @import("extenddfxf2.zig").__extenddfxf2;
const F16T = @import("./common.zig").F16T;
+fn test__extenddfxf2(a: f64, expected: u80) !void {
+ const x = __extenddfxf2(a);
+
+ const rep = @bitCast(u80, x);
+ if (rep == expected)
+ return;
+
+ // test other possible NaN representation(signal NaN)
+ if (math.isNan(@bitCast(f80, expected)) and math.isNan(x))
+ return;
+
+ @panic("__extenddfxf2 test failure");
+}
+
fn test__extenddftf2(a: f64, expected_hi: u64, expected_lo: u64) !void {
const x = __extenddftf2(a);
@@ -65,6 +82,33 @@ fn test__extendsftf2(a: f32, expected_hi: u64, expected_lo: u64) !void {
return error.TestFailure;
}
+test "extenddfxf2" {
+ // qNaN
+ try test__extenddfxf2(makeQNaN64(), 0x7fffc000000000000000);
+
+ // NaN
+ try test__extenddfxf2(makeNaN64(0x7100000000000), 0x7fffe080000000000000);
+ // This is bad?
+
+ // inf
+ try test__extenddfxf2(makeInf64(), 0x7fff8000000000000000);
+
+ // zero
+ try test__extenddfxf2(0.0, 0x0);
+
+ try test__extenddfxf2(0x0.a3456789abcdefp+6, 0x4004a3456789abcdf000);
+
+ try test__extenddfxf2(0x0.edcba987654321fp-8, 0x3ff6edcba98765432000);
+
+ try test__extenddfxf2(0x0.a3456789abcdefp+46, 0x402ca3456789abcdf000);
+
+ try test__extenddfxf2(0x0.edcba987654321fp-44, 0x3fd2edcba98765432000);
+
+ // subnormal
+ try test__extenddfxf2(0x1.8000000000001p-1022, 0x3c01c000000000000800);
+ try test__extenddfxf2(0x1.8000000000002p-1023, 0x3c00c000000000001000);
+}
+
test "extenddftf2" {
// qNaN
try test__extenddftf2(makeQNaN64(), 0x7fff800000000000, 0x0);
@@ -85,6 +129,10 @@ test "extenddftf2" {
try test__extenddftf2(0x1.23456789abcdefp+45, 0x402c23456789abcd, 0xf000000000000000);
try test__extenddftf2(0x1.edcba987654321fp-45, 0x3fd2edcba9876543, 0x2000000000000000);
+
+ // subnormal
+ try test__extenddftf2(0x1.8p-1022, 0x3c01800000000000, 0x0);
+ try test__extenddftf2(0x1.8p-1023, 0x3c00800000000000, 0x0);
}
test "extendhfsf2" {
diff --git a/lib/compiler_rt/mulc3.zig b/lib/compiler_rt/mulc3.zig
new file mode 100644
index 0000000000..0033df70b6
--- /dev/null
+++ b/lib/compiler_rt/mulc3.zig
@@ -0,0 +1,79 @@
+const std = @import("std");
+const isNan = std.math.isNan;
+const isInf = std.math.isInf;
+const copysign = std.math.copysign;
+
+pub fn Complex(comptime T: type) type {
+ return extern struct {
+ real: T,
+ imag: T,
+ };
+}
+
+/// Implementation based on Annex G of C17 Standard (N2176)
+pub inline fn mulc3(comptime T: type, a_in: T, b_in: T, c_in: T, d_in: T) Complex(T) {
+ var a = a_in;
+ var b = b_in;
+ var c = c_in;
+ var d = d_in;
+
+ const ac = a * c;
+ const bd = b * d;
+ const ad = a * d;
+ const bc = b * c;
+
+ const zero: T = 0.0;
+ const one: T = 1.0;
+
+ var z = Complex(T){
+ .real = ac - bd,
+ .imag = ad + bc,
+ };
+ if (isNan(z.real) and isNan(z.imag)) {
+ var recalc: bool = false;
+
+ if (isInf(a) or isInf(b)) { // (a + ib) is infinite
+
+ // "Box" the infinity (+/-inf goes to +/-1, all finite values go to 0)
+ a = copysign(if (isInf(a)) one else zero, a);
+ b = copysign(if (isInf(b)) one else zero, b);
+
+ // Replace NaNs in the other factor with (signed) 0
+ if (isNan(c)) c = copysign(zero, c);
+ if (isNan(d)) d = copysign(zero, d);
+
+ recalc = true;
+ }
+
+ if (isInf(c) or isInf(d)) { // (c + id) is infinite
+
+ // "Box" the infinity (+/-inf goes to +/-1, all finite values go to 0)
+ c = copysign(if (isInf(c)) one else zero, c);
+ d = copysign(if (isInf(d)) one else zero, d);
+
+ // Replace NaNs in the other factor with (signed) 0
+ if (isNan(a)) a = copysign(zero, a);
+ if (isNan(b)) b = copysign(zero, b);
+
+ recalc = true;
+ }
+
+ if (!recalc and (isInf(ac) or isInf(bd) or isInf(ad) or isInf(bc))) {
+
+ // Recover infinities from overflow by changing NaNs to 0
+ if (isNan(a)) a = copysign(zero, a);
+ if (isNan(b)) b = copysign(zero, b);
+ if (isNan(c)) c = copysign(zero, c);
+ if (isNan(d)) d = copysign(zero, d);
+
+ recalc = true;
+ }
+ if (recalc) {
+ return .{
+ .real = std.math.inf(T) * (a * c - b * d),
+ .imag = std.math.inf(T) * (a * d + b * c),
+ };
+ }
+ }
+ return z;
+}
diff --git a/lib/compiler_rt/mulc3_test.zig b/lib/compiler_rt/mulc3_test.zig
new file mode 100644
index 0000000000..b07ecd12ae
--- /dev/null
+++ b/lib/compiler_rt/mulc3_test.zig
@@ -0,0 +1,65 @@
+const std = @import("std");
+const math = std.math;
+const expect = std.testing.expect;
+
+const Complex = @import("./mulc3.zig").Complex;
+const __mulhc3 = @import("./mulhc3.zig").__mulhc3;
+const __mulsc3 = @import("./mulsc3.zig").__mulsc3;
+const __muldc3 = @import("./muldc3.zig").__muldc3;
+const __mulxc3 = @import("./mulxc3.zig").__mulxc3;
+const __multc3 = @import("./multc3.zig").__multc3;
+
+test {
+ try testMul(f16, __mulhc3);
+ try testMul(f32, __mulsc3);
+ try testMul(f64, __muldc3);
+ try testMul(f80, __mulxc3);
+ try testMul(f128, __multc3);
+}
+
+fn testMul(comptime T: type, comptime f: fn (T, T, T, T) callconv(.C) Complex(T)) !void {
+ {
+ var a: T = 1.0;
+ var b: T = 0.0;
+ var c: T = -1.0;
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == -1.0);
+ try expect(result.imag == 0.0);
+ }
+ {
+ var a: T = 1.0;
+ var b: T = 0.0;
+ var c: T = -4.0;
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == -4.0);
+ try expect(result.imag == 0.0);
+ }
+ {
+ // if one operand is an infinity and the other operand is a nonzero finite number or an infinity,
+ // then the result of the * operator is an infinity;
+ var a: T = math.inf(T);
+ var b: T = -math.inf(T);
+ var c: T = 1.0;
+ var d: T = 0.0;
+
+ const result = f(a, b, c, d);
+ try expect(result.real == math.inf(T));
+ try expect(result.imag == -math.inf(T));
+ }
+ {
+ // if one operand is an infinity and the other operand is a nonzero finite number or an infinity,
+ // then the result of the * operator is an infinity;
+ var a: T = math.inf(T);
+ var b: T = -1.0;
+ var c: T = 1.0;
+ var d: T = math.inf(T);
+
+ const result = f(a, b, c, d);
+ try expect(result.real == math.inf(T));
+ try expect(result.imag == math.inf(T));
+ }
+}
diff --git a/lib/compiler_rt/muldc3.zig b/lib/compiler_rt/muldc3.zig
new file mode 100644
index 0000000000..343ae5a064
--- /dev/null
+++ b/lib/compiler_rt/muldc3.zig
@@ -0,0 +1,12 @@
+const common = @import("./common.zig");
+const mulc3 = @import("./mulc3.zig");
+
+pub const panic = common.panic;
+
+comptime {
+ @export(__muldc3, .{ .name = "__muldc3", .linkage = common.linkage });
+}
+
+pub fn __muldc3(a: f64, b: f64, c: f64, d: f64) callconv(.C) mulc3.Complex(f64) {
+ return mulc3.mulc3(f64, a, b, c, d);
+}
diff --git a/lib/compiler_rt/mulhc3.zig b/lib/compiler_rt/mulhc3.zig
new file mode 100644
index 0000000000..f1fad90aff
--- /dev/null
+++ b/lib/compiler_rt/mulhc3.zig
@@ -0,0 +1,12 @@
+const common = @import("./common.zig");
+const mulc3 = @import("./mulc3.zig");
+
+pub const panic = common.panic;
+
+comptime {
+ @export(__mulhc3, .{ .name = "__mulhc3", .linkage = common.linkage });
+}
+
+pub fn __mulhc3(a: f16, b: f16, c: f16, d: f16) callconv(.C) mulc3.Complex(f16) {
+ return mulc3.mulc3(f16, a, b, c, d);
+}
diff --git a/lib/compiler_rt/mulsc3.zig b/lib/compiler_rt/mulsc3.zig
new file mode 100644
index 0000000000..3ea055f9ff
--- /dev/null
+++ b/lib/compiler_rt/mulsc3.zig
@@ -0,0 +1,12 @@
+const common = @import("./common.zig");
+const mulc3 = @import("./mulc3.zig");
+
+pub const panic = common.panic;
+
+comptime {
+ @export(__mulsc3, .{ .name = "__mulsc3", .linkage = common.linkage });
+}
+
+pub fn __mulsc3(a: f32, b: f32, c: f32, d: f32) callconv(.C) mulc3.Complex(f32) {
+ return mulc3.mulc3(f32, a, b, c, d);
+}
diff --git a/lib/compiler_rt/multc3.zig b/lib/compiler_rt/multc3.zig
new file mode 100644
index 0000000000..c6afcdefb2
--- /dev/null
+++ b/lib/compiler_rt/multc3.zig
@@ -0,0 +1,12 @@
+const common = @import("./common.zig");
+const mulc3 = @import("./mulc3.zig");
+
+pub const panic = common.panic;
+
+comptime {
+ @export(__multc3, .{ .name = "__multc3", .linkage = common.linkage });
+}
+
+pub fn __multc3(a: f128, b: f128, c: f128, d: f128) callconv(.C) mulc3.Complex(f128) {
+ return mulc3.mulc3(f128, a, b, c, d);
+}
diff --git a/lib/compiler_rt/mulxc3.zig b/lib/compiler_rt/mulxc3.zig
new file mode 100644
index 0000000000..decba868e8
--- /dev/null
+++ b/lib/compiler_rt/mulxc3.zig
@@ -0,0 +1,12 @@
+const common = @import("./common.zig");
+const mulc3 = @import("./mulc3.zig");
+
+pub const panic = common.panic;
+
+comptime {
+ @export(__mulxc3, .{ .name = "__mulxc3", .linkage = common.linkage });
+}
+
+pub fn __mulxc3(a: f80, b: f80, c: f80, d: f80) callconv(.C) mulc3.Complex(f80) {
+ return mulc3.mulc3(f80, a, b, c, d);
+}
diff --git a/lib/libc/include/any-windows-any/_mingw.h b/lib/libc/include/any-windows-any/_mingw.h
index 2530f7b845..536b9d5805 100644
--- a/lib/libc/include/any-windows-any/_mingw.h
+++ b/lib/libc/include/any-windows-any/_mingw.h
@@ -221,13 +221,19 @@ limitations in handling dllimport attribute. */
#ifndef __MSVCRT_VERSION__
/* High byte is the major version, low byte is the minor. */
-# ifndef _UCRT
-# define __MSVCRT_VERSION__ 0x700
-# else
+# if defined(__CRTDLL__)
+# define __MSVCRT_VERSION__ 0x00
+# elif defined(_UCRT)
# define __MSVCRT_VERSION__ 0xE00
+# else
+# define __MSVCRT_VERSION__ 0x700
# endif
#endif
+#if !defined(_UCRT) && ((__MSVCRT_VERSION__ >= 0x1400) || (__MSVCRT_VERSION__ >= 0xE00 && __MSVCRT_VERSION__ < 0x1000))
+/* Allow both 0x1400 and 0xE00 to identify UCRT */
+#define _UCRT
+#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0603
@@ -583,7 +589,7 @@ __MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
#if defined(__i386__) || defined(__x86_64__)
__asm__ __volatile__("int {$}3":);
#elif defined(__arm__)
- __asm__ __volatile__("udf #1");
+ __asm__ __volatile__("udf #0xfe");
#elif defined(__aarch64__)
__asm__ __volatile__("brk #0xf000");
#else
diff --git a/lib/libc/include/any-windows-any/_mingw_mac.h b/lib/libc/include/any-windows-any/_mingw_mac.h
index 4160013c46..b36d4a2905 100644
--- a/lib/libc/include/any-windows-any/_mingw_mac.h
+++ b/lib/libc/include/any-windows-any/_mingw_mac.h
@@ -11,7 +11,7 @@
#define __MINGW64_STRINGIFY(x) \
__STRINGIFY(x)
-#define __MINGW64_VERSION_MAJOR 9
+#define __MINGW64_VERSION_MAJOR 10
#define __MINGW64_VERSION_MINOR 0
#define __MINGW64_VERSION_BUGFIX 0
@@ -301,6 +301,8 @@
# define __mingw_attribute_artificial
#endif
+#define __MINGW_SELECTANY __attribute__((__selectany__))
+
#if _FORTIFY_SOURCE > 0 && __OPTIMIZE__ > 0 && __MINGW_GNUC_PREREQ(4, 1)
# if _FORTIFY_SOURCE > 1
# define __MINGW_FORTIFY_LEVEL 2
@@ -353,7 +355,7 @@
/* Enable workaround for ABI incompatibility on affected platforms */
#ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS
-#if defined(__GNUC__) && defined(__cplusplus) && (defined(__x86_64__) || defined(__i386__))
+#if defined(__GNUC__) && defined(__cplusplus)
#define WIDL_EXPLICIT_AGGREGATE_RETURNS
#endif
#endif
diff --git a/lib/libc/include/any-windows-any/activation.h b/lib/libc/include/any-windows-any/activation.h
index a538b8eeb1..4167403322 100644
--- a/lib/libc/include/any-windows-any/activation.h
+++ b/lib/libc/include/any-windows-any/activation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/activation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/activation.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/activaut.h b/lib/libc/include/any-windows-any/activaut.h
index a366929034..dbf99f03cf 100644
--- a/lib/libc/include/any-windows-any/activaut.h
+++ b/lib/libc/include/any-windows-any/activaut.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/activaut.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/activaut.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/activdbg.h b/lib/libc/include/any-windows-any/activdbg.h
index b5545a7b40..5088aae8b7 100644
--- a/lib/libc/include/any-windows-any/activdbg.h
+++ b/lib/libc/include/any-windows-any/activdbg.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/activdbg.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/activdbg.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/activdbg100.h b/lib/libc/include/any-windows-any/activdbg100.h
index d803513310..33f0c40293 100644
--- a/lib/libc/include/any-windows-any/activdbg100.h
+++ b/lib/libc/include/any-windows-any/activdbg100.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/activdbg100.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/activdbg100.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/activprof.h b/lib/libc/include/any-windows-any/activprof.h
index 9944c67d53..845aa9f3f4 100644
--- a/lib/libc/include/any-windows-any/activprof.h
+++ b/lib/libc/include/any-windows-any/activprof.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/activprof.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/activprof.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/activscp.h b/lib/libc/include/any-windows-any/activscp.h
index e8b6b54c7f..23a1269cf9 100644
--- a/lib/libc/include/any-windows-any/activscp.h
+++ b/lib/libc/include/any-windows-any/activscp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/activscp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/activscp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/adhoc.h b/lib/libc/include/any-windows-any/adhoc.h
index 1e0ac7b4a9..8b9d7aedc0 100644
--- a/lib/libc/include/any-windows-any/adhoc.h
+++ b/lib/libc/include/any-windows-any/adhoc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/adhoc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/adhoc.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/afunix.h b/lib/libc/include/any-windows-any/afunix.h
new file mode 100644
index 0000000000..8a4f05f552
--- /dev/null
+++ b/lib/libc/include/any-windows-any/afunix.h
@@ -0,0 +1,19 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _AFUNIX_
+#define _AFUNIX_
+
+#define UNIX_PATH_MAX 108
+
+typedef struct sockaddr_un {
+ ADDRESS_FAMILY sun_family;
+ char sun_path[UNIX_PATH_MAX];
+} SOCKADDR_UN, *PSOCKADDR_UN;
+
+#define SIO_AF_UNIX_GETPEERPID _WSAIOR(IOC_VENDOR, 256)
+
+#endif /* _AFUNIX_ */
diff --git a/lib/libc/include/any-windows-any/alg.h b/lib/libc/include/any-windows-any/alg.h
index 3dcf91d83c..abe3de2e56 100644
--- a/lib/libc/include/any-windows-any/alg.h
+++ b/lib/libc/include/any-windows-any/alg.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/alg.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/alg.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/amstream.h b/lib/libc/include/any-windows-any/amstream.h
index 87276f5f82..42e741571e 100644
--- a/lib/libc/include/any-windows-any/amstream.h
+++ b/lib/libc/include/any-windows-any/amstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/amstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/amstream.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/amvideo.h b/lib/libc/include/any-windows-any/amvideo.h
index 41555a73f2..902e4c9214 100644
--- a/lib/libc/include/any-windows-any/amvideo.h
+++ b/lib/libc/include/any-windows-any/amvideo.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/amvideo.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/amvideo.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/asyncinfo.h b/lib/libc/include/any-windows-any/asyncinfo.h
index 7bfe8235df..2699be8faf 100644
--- a/lib/libc/include/any-windows-any/asyncinfo.h
+++ b/lib/libc/include/any-windows-any/asyncinfo.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/asyncinfo.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/asyncinfo.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/audioclient.h b/lib/libc/include/any-windows-any/audioclient.h
index 3fdb1ceff0..fde365779c 100644
--- a/lib/libc/include/any-windows-any/audioclient.h
+++ b/lib/libc/include/any-windows-any/audioclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/audioclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/audioclient.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/audioendpoints.h b/lib/libc/include/any-windows-any/audioendpoints.h
index 4c491efb59..3a5c965f4e 100644
--- a/lib/libc/include/any-windows-any/audioendpoints.h
+++ b/lib/libc/include/any-windows-any/audioendpoints.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/audioendpoints.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/audioendpoints.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/audiopolicy.h b/lib/libc/include/any-windows-any/audiopolicy.h
index cf883c8ca3..9af84c5578 100644
--- a/lib/libc/include/any-windows-any/audiopolicy.h
+++ b/lib/libc/include/any-windows-any/audiopolicy.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/audiopolicy.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/audiopolicy.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/austream.h b/lib/libc/include/any-windows-any/austream.h
index 73f7a28e15..b2b50036a7 100644
--- a/lib/libc/include/any-windows-any/austream.h
+++ b/lib/libc/include/any-windows-any/austream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/austream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/austream.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/bdaiface.h b/lib/libc/include/any-windows-any/bdaiface.h
index c3a1106a78..2770126bc8 100644
--- a/lib/libc/include/any-windows-any/bdaiface.h
+++ b/lib/libc/include/any-windows-any/bdaiface.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/bdaiface.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/bdaiface.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/bits.h b/lib/libc/include/any-windows-any/bits.h
index 6f971ee9ad..7d99905164 100644
--- a/lib/libc/include/any-windows-any/bits.h
+++ b/lib/libc/include/any-windows-any/bits.h
@@ -1,379 +1,792 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 7.0 from include/bits.idl - Do not edit ***/
+
+#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
+#include <rpc.h>
+#include <rpcndr.h>
#endif
#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
+#include <windows.h>
+#include <ole2.h>
#endif
#ifndef __bits_h__
#define __bits_h__
+/* Forward declarations */
+
#ifndef __IBackgroundCopyFile_FWD_DEFINED__
#define __IBackgroundCopyFile_FWD_DEFINED__
-typedef struct IBackgroundCopyFile IBackgroundCopyFile;
+typedef interface IBackgroundCopyFile IBackgroundCopyFile;
+#ifdef __cplusplus
+interface IBackgroundCopyFile;
+#endif /* __cplusplus */
#endif
#ifndef __IEnumBackgroundCopyFiles_FWD_DEFINED__
#define __IEnumBackgroundCopyFiles_FWD_DEFINED__
-typedef struct IEnumBackgroundCopyFiles IEnumBackgroundCopyFiles;
+typedef interface IEnumBackgroundCopyFiles IEnumBackgroundCopyFiles;
+#ifdef __cplusplus
+interface IEnumBackgroundCopyFiles;
+#endif /* __cplusplus */
#endif
#ifndef __IBackgroundCopyError_FWD_DEFINED__
#define __IBackgroundCopyError_FWD_DEFINED__
-typedef struct IBackgroundCopyError IBackgroundCopyError;
+typedef interface IBackgroundCopyError IBackgroundCopyError;
+#ifdef __cplusplus
+interface IBackgroundCopyError;
+#endif /* __cplusplus */
#endif
#ifndef __IBackgroundCopyJob_FWD_DEFINED__
#define __IBackgroundCopyJob_FWD_DEFINED__
-typedef struct IBackgroundCopyJob IBackgroundCopyJob;
+typedef interface IBackgroundCopyJob IBackgroundCopyJob;
+#ifdef __cplusplus
+interface IBackgroundCopyJob;
+#endif /* __cplusplus */
#endif
#ifndef __IEnumBackgroundCopyJobs_FWD_DEFINED__
#define __IEnumBackgroundCopyJobs_FWD_DEFINED__
-typedef struct IEnumBackgroundCopyJobs IEnumBackgroundCopyJobs;
+typedef interface IEnumBackgroundCopyJobs IEnumBackgroundCopyJobs;
+#ifdef __cplusplus
+interface IEnumBackgroundCopyJobs;
+#endif /* __cplusplus */
#endif
#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
#define __IBackgroundCopyCallback_FWD_DEFINED__
-typedef struct IBackgroundCopyCallback IBackgroundCopyCallback;
-#endif
-
-#ifndef __AsyncIBackgroundCopyCallback_FWD_DEFINED__
-#define __AsyncIBackgroundCopyCallback_FWD_DEFINED__
-typedef struct AsyncIBackgroundCopyCallback AsyncIBackgroundCopyCallback;
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
#endif
#ifndef __IBackgroundCopyManager_FWD_DEFINED__
#define __IBackgroundCopyManager_FWD_DEFINED__
-typedef struct IBackgroundCopyManager IBackgroundCopyManager;
+typedef interface IBackgroundCopyManager IBackgroundCopyManager;
+#ifdef __cplusplus
+interface IBackgroundCopyManager;
+#endif /* __cplusplus */
#endif
#ifndef __BackgroundCopyManager_FWD_DEFINED__
#define __BackgroundCopyManager_FWD_DEFINED__
-
#ifdef __cplusplus
typedef class BackgroundCopyManager BackgroundCopyManager;
#else
typedef struct BackgroundCopyManager BackgroundCopyManager;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager_FWD_DEFINED__ */
-#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
-#define __IBackgroundCopyCallback_FWD_DEFINED__
-typedef struct IBackgroundCopyCallback IBackgroundCopyCallback;
-#endif
+/* Headers for imported files */
-#include "unknwn.h"
+#include <unknwn.h>
#ifdef __cplusplus
-extern "C"{
-#endif
-
-#ifndef __MIDL_user_allocate_free_DEFINED__
-#define __MIDL_user_allocate_free_DEFINED__
- void *__RPC_API MIDL_user_allocate(size_t);
- void __RPC_API MIDL_user_free(void *);
+extern "C" {
#endif
#include "bitsmsg.h"
#define BG_SIZE_UNKNOWN (UINT64)(-1)
-
- extern RPC_IF_HANDLE __MIDL_itf_bits_0000_v0_0_c_ifspec;
- extern RPC_IF_HANDLE __MIDL_itf_bits_0000_v0_0_s_ifspec;
-
+#define BG_NOTIFY_JOB_TRANSFERRED 0x0001
+#define BG_NOTIFY_JOB_ERROR 0x0002
+#define BG_NOTIFY_DISABLE 0x0004
+#define BG_NOTIFY_JOB_MODIFICATION 0x0008
+#define BG_NOTIFY_FILE_TRANSFERRED 0x0010
+#ifdef WINE_NO_UNICODE_MACROS
+#undef EnumJobs
+#undef GetJob
+#endif
+/*****************************************************************************
+ * IBackgroundCopyFile interface
+ */
#ifndef __IBackgroundCopyFile_INTERFACE_DEFINED__
#define __IBackgroundCopyFile_INTERFACE_DEFINED__
- typedef struct _BG_FILE_PROGRESS {
+typedef struct _BG_FILE_PROGRESS {
UINT64 BytesTotal;
UINT64 BytesTransferred;
WINBOOL Completed;
- } BG_FILE_PROGRESS;
-
- EXTERN_C const IID IID_IBackgroundCopyFile;
+} BG_FILE_PROGRESS;
+DEFINE_GUID(IID_IBackgroundCopyFile, 0x01b7bd23, 0xfb88, 0x4a77, 0x84,0x90, 0x58,0x91,0xd3,0xe4,0x65,0x3a);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyFile : public IUnknown {
- public:
- virtual HRESULT WINAPI GetRemoteName(LPWSTR *pVal) = 0;
- virtual HRESULT WINAPI GetLocalName(LPWSTR *pVal) = 0;
- virtual HRESULT WINAPI GetProgress(BG_FILE_PROGRESS *pVal) = 0;
- };
+MIDL_INTERFACE("01b7bd23-fb88-4a77-8490-5891d3e4653a")
+IBackgroundCopyFile : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetRemoteName(
+ LPWSTR *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalName(
+ LPWSTR *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProgress(
+ BG_FILE_PROGRESS *pVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyFile, 0x01b7bd23, 0xfb88, 0x4a77, 0x84,0x90, 0x58,0x91,0xd3,0xe4,0x65,0x3a)
+#endif
#else
- typedef struct IBackgroundCopyFileVtbl {
+typedef struct IBackgroundCopyFileVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyFile *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyFile *This);
- ULONG (WINAPI *Release)(IBackgroundCopyFile *This);
- HRESULT (WINAPI *GetRemoteName)(IBackgroundCopyFile *This,LPWSTR *pVal);
- HRESULT (WINAPI *GetLocalName)(IBackgroundCopyFile *This,LPWSTR *pVal);
- HRESULT (WINAPI *GetProgress)(IBackgroundCopyFile *This,BG_FILE_PROGRESS *pVal);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyFile *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyFile *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyFile *This);
+
+ /*** IBackgroundCopyFile methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetRemoteName)(
+ IBackgroundCopyFile *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetLocalName)(
+ IBackgroundCopyFile *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyFile *This,
+ BG_FILE_PROGRESS *pVal);
+
END_INTERFACE
- } IBackgroundCopyFileVtbl;
- struct IBackgroundCopyFile {
- CONST_VTBL struct IBackgroundCopyFileVtbl *lpVtbl;
- };
+} IBackgroundCopyFileVtbl;
+
+interface IBackgroundCopyFile {
+ CONST_VTBL IBackgroundCopyFileVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IBackgroundCopyFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyFile_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyFile_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyFile methods ***/
#define IBackgroundCopyFile_GetRemoteName(This,pVal) (This)->lpVtbl->GetRemoteName(This,pVal)
#define IBackgroundCopyFile_GetLocalName(This,pVal) (This)->lpVtbl->GetLocalName(This,pVal)
#define IBackgroundCopyFile_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile_QueryInterface(IBackgroundCopyFile* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyFile_AddRef(IBackgroundCopyFile* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyFile_Release(IBackgroundCopyFile* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyFile methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile_GetRemoteName(IBackgroundCopyFile* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetRemoteName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile_GetLocalName(IBackgroundCopyFile* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetLocalName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile_GetProgress(IBackgroundCopyFile* This,BG_FILE_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyFile_GetRemoteName_Proxy(IBackgroundCopyFile *This,LPWSTR *pVal);
- void __RPC_STUB IBackgroundCopyFile_GetRemoteName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyFile_GetLocalName_Proxy(IBackgroundCopyFile *This,LPWSTR *pVal);
- void __RPC_STUB IBackgroundCopyFile_GetLocalName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyFile_GetProgress_Proxy(IBackgroundCopyFile *This,BG_FILE_PROGRESS *pVal);
- void __RPC_STUB IBackgroundCopyFile_GetProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyFile_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumBackgroundCopyFiles interface
+ */
#ifndef __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__
#define __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__
- EXTERN_C const IID IID_IEnumBackgroundCopyFiles;
+
+DEFINE_GUID(IID_IEnumBackgroundCopyFiles, 0xca51e165, 0xc365, 0x424c, 0x8d,0x41, 0x24,0xaa,0xa4,0xff,0x3c,0x40);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IEnumBackgroundCopyFiles : public IUnknown {
- public:
- virtual HRESULT WINAPI Next(ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched) = 0;
- virtual HRESULT WINAPI Skip(ULONG celt) = 0;
- virtual HRESULT WINAPI Reset(void) = 0;
- virtual HRESULT WINAPI Clone(IEnumBackgroundCopyFiles **ppenum) = 0;
- virtual HRESULT WINAPI GetCount(ULONG *puCount) = 0;
- };
+MIDL_INTERFACE("ca51e165-c365-424c-8d41-24aaa4ff3c40")
+IEnumBackgroundCopyFiles : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Next(
+ ULONG celt,
+ IBackgroundCopyFile **rgelt,
+ ULONG *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ IEnumBackgroundCopyFiles **ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCount(
+ ULONG *puCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumBackgroundCopyFiles, 0xca51e165, 0xc365, 0x424c, 0x8d,0x41, 0x24,0xaa,0xa4,0xff,0x3c,0x40)
+#endif
#else
- typedef struct IEnumBackgroundCopyFilesVtbl {
+typedef struct IEnumBackgroundCopyFilesVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IEnumBackgroundCopyFiles *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IEnumBackgroundCopyFiles *This);
- ULONG (WINAPI *Release)(IEnumBackgroundCopyFiles *This);
- HRESULT (WINAPI *Next)(IEnumBackgroundCopyFiles *This,ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched);
- HRESULT (WINAPI *Skip)(IEnumBackgroundCopyFiles *This,ULONG celt);
- HRESULT (WINAPI *Reset)(IEnumBackgroundCopyFiles *This);
- HRESULT (WINAPI *Clone)(IEnumBackgroundCopyFiles *This,IEnumBackgroundCopyFiles **ppenum);
- HRESULT (WINAPI *GetCount)(IEnumBackgroundCopyFiles *This,ULONG *puCount);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IEnumBackgroundCopyFiles *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IEnumBackgroundCopyFiles *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IEnumBackgroundCopyFiles *This);
+
+ /*** IEnumBackgroundCopyFiles methods ***/
+ HRESULT (STDMETHODCALLTYPE *Next)(
+ IEnumBackgroundCopyFiles *This,
+ ULONG celt,
+ IBackgroundCopyFile **rgelt,
+ ULONG *pceltFetched);
+
+ HRESULT (STDMETHODCALLTYPE *Skip)(
+ IEnumBackgroundCopyFiles *This,
+ ULONG celt);
+
+ HRESULT (STDMETHODCALLTYPE *Reset)(
+ IEnumBackgroundCopyFiles *This);
+
+ HRESULT (STDMETHODCALLTYPE *Clone)(
+ IEnumBackgroundCopyFiles *This,
+ IEnumBackgroundCopyFiles **ppenum);
+
+ HRESULT (STDMETHODCALLTYPE *GetCount)(
+ IEnumBackgroundCopyFiles *This,
+ ULONG *puCount);
+
END_INTERFACE
- } IEnumBackgroundCopyFilesVtbl;
- struct IEnumBackgroundCopyFiles {
- CONST_VTBL struct IEnumBackgroundCopyFilesVtbl *lpVtbl;
- };
+} IEnumBackgroundCopyFilesVtbl;
+
+interface IEnumBackgroundCopyFiles {
+ CONST_VTBL IEnumBackgroundCopyFilesVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IEnumBackgroundCopyFiles_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumBackgroundCopyFiles_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumBackgroundCopyFiles_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumBackgroundCopyFiles methods ***/
#define IEnumBackgroundCopyFiles_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumBackgroundCopyFiles_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumBackgroundCopyFiles_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumBackgroundCopyFiles_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#define IEnumBackgroundCopyFiles_GetCount(This,puCount) (This)->lpVtbl->GetCount(This,puCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_QueryInterface(IEnumBackgroundCopyFiles* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyFiles_AddRef(IEnumBackgroundCopyFiles* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyFiles_Release(IEnumBackgroundCopyFiles* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IEnumBackgroundCopyFiles methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Next(IEnumBackgroundCopyFiles* This,ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched) {
+ return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Skip(IEnumBackgroundCopyFiles* This,ULONG celt) {
+ return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Reset(IEnumBackgroundCopyFiles* This) {
+ return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_Clone(IEnumBackgroundCopyFiles* This,IEnumBackgroundCopyFiles **ppenum) {
+ return This->lpVtbl->Clone(This,ppenum);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyFiles_GetCount(IEnumBackgroundCopyFiles* This,ULONG *puCount) {
+ return This->lpVtbl->GetCount(This,puCount);
+}
#endif
#endif
- HRESULT WINAPI IEnumBackgroundCopyFiles_Next_Proxy(IEnumBackgroundCopyFiles *This,ULONG celt,IBackgroundCopyFile **rgelt,ULONG *pceltFetched);
- void __RPC_STUB IEnumBackgroundCopyFiles_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyFiles_Skip_Proxy(IEnumBackgroundCopyFiles *This,ULONG celt);
- void __RPC_STUB IEnumBackgroundCopyFiles_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyFiles_Reset_Proxy(IEnumBackgroundCopyFiles *This);
- void __RPC_STUB IEnumBackgroundCopyFiles_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyFiles_Clone_Proxy(IEnumBackgroundCopyFiles *This,IEnumBackgroundCopyFiles **ppenum);
- void __RPC_STUB IEnumBackgroundCopyFiles_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyFiles_GetCount_Proxy(IEnumBackgroundCopyFiles *This,ULONG *puCount);
- void __RPC_STUB IEnumBackgroundCopyFiles_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IEnumBackgroundCopyFiles_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyError interface
+ */
#ifndef __IBackgroundCopyError_INTERFACE_DEFINED__
#define __IBackgroundCopyError_INTERFACE_DEFINED__
- typedef enum __MIDL_IBackgroundCopyError_0001 {
- BG_ERROR_CONTEXT_NONE = 0,BG_ERROR_CONTEXT_UNKNOWN = 1,BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER = 2,BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION = 3,
- BG_ERROR_CONTEXT_LOCAL_FILE = 4,BG_ERROR_CONTEXT_REMOTE_FILE = 5,BG_ERROR_CONTEXT_GENERAL_TRANSPORT = 6,BG_ERROR_CONTEXT_REMOTE_APPLICATION = 7
- } BG_ERROR_CONTEXT;
- EXTERN_C const IID IID_IBackgroundCopyError;
+typedef enum __WIDL_bits_generated_name_0000000C {
+ BG_ERROR_CONTEXT_NONE = 0,
+ BG_ERROR_CONTEXT_UNKNOWN = 1,
+ BG_ERROR_CONTEXT_GENERAL_QUEUE_MANAGER = 2,
+ BG_ERROR_CONTEXT_QUEUE_MANAGER_NOTIFICATION = 3,
+ BG_ERROR_CONTEXT_LOCAL_FILE = 4,
+ BG_ERROR_CONTEXT_REMOTE_FILE = 5,
+ BG_ERROR_CONTEXT_GENERAL_TRANSPORT = 6,
+ BG_ERROR_CONTEXT_REMOTE_APPLICATION = 7
+} BG_ERROR_CONTEXT;
+DEFINE_GUID(IID_IBackgroundCopyError, 0x19c613a0, 0xfcb8, 0x4f28, 0x81,0xae, 0x89,0x7c,0x3d,0x07,0x8f,0x81);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyError : public IUnknown {
- public:
- virtual HRESULT WINAPI GetError(BG_ERROR_CONTEXT *pContext,HRESULT *pCode) = 0;
- virtual HRESULT WINAPI GetFile(IBackgroundCopyFile **pVal) = 0;
- virtual HRESULT WINAPI GetErrorDescription(DWORD LanguageId,LPWSTR *pErrorDescription) = 0;
- virtual HRESULT WINAPI GetErrorContextDescription(DWORD LanguageId,LPWSTR *pContextDescription) = 0;
- virtual HRESULT WINAPI GetProtocol(LPWSTR *pProtocol) = 0;
- };
+MIDL_INTERFACE("19c613a0-fcb8-4f28-81ae-897c3d078f81")
+IBackgroundCopyError : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetError(
+ BG_ERROR_CONTEXT *pContext,
+ HRESULT *pCode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFile(
+ IBackgroundCopyFile **pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorDescription(
+ DWORD LanguageId,
+ LPWSTR *pErrorDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorContextDescription(
+ DWORD LanguageId,
+ LPWSTR *pContextDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProtocol(
+ LPWSTR *pProtocol) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyError, 0x19c613a0, 0xfcb8, 0x4f28, 0x81,0xae, 0x89,0x7c,0x3d,0x07,0x8f,0x81)
+#endif
#else
- typedef struct IBackgroundCopyErrorVtbl {
+typedef struct IBackgroundCopyErrorVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyError *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyError *This);
- ULONG (WINAPI *Release)(IBackgroundCopyError *This);
- HRESULT (WINAPI *GetError)(IBackgroundCopyError *This,BG_ERROR_CONTEXT *pContext,HRESULT *pCode);
- HRESULT (WINAPI *GetFile)(IBackgroundCopyError *This,IBackgroundCopyFile **pVal);
- HRESULT (WINAPI *GetErrorDescription)(IBackgroundCopyError *This,DWORD LanguageId,LPWSTR *pErrorDescription);
- HRESULT (WINAPI *GetErrorContextDescription)(IBackgroundCopyError *This,DWORD LanguageId,LPWSTR *pContextDescription);
- HRESULT (WINAPI *GetProtocol)(IBackgroundCopyError *This,LPWSTR *pProtocol);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyError *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyError *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyError *This);
+
+ /*** IBackgroundCopyError methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetError)(
+ IBackgroundCopyError *This,
+ BG_ERROR_CONTEXT *pContext,
+ HRESULT *pCode);
+
+ HRESULT (STDMETHODCALLTYPE *GetFile)(
+ IBackgroundCopyError *This,
+ IBackgroundCopyFile **pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorDescription)(
+ IBackgroundCopyError *This,
+ DWORD LanguageId,
+ LPWSTR *pErrorDescription);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorContextDescription)(
+ IBackgroundCopyError *This,
+ DWORD LanguageId,
+ LPWSTR *pContextDescription);
+
+ HRESULT (STDMETHODCALLTYPE *GetProtocol)(
+ IBackgroundCopyError *This,
+ LPWSTR *pProtocol);
+
END_INTERFACE
- } IBackgroundCopyErrorVtbl;
- struct IBackgroundCopyError {
- CONST_VTBL struct IBackgroundCopyErrorVtbl *lpVtbl;
- };
+} IBackgroundCopyErrorVtbl;
+
+interface IBackgroundCopyError {
+ CONST_VTBL IBackgroundCopyErrorVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IBackgroundCopyError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyError_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyError_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyError methods ***/
#define IBackgroundCopyError_GetError(This,pContext,pCode) (This)->lpVtbl->GetError(This,pContext,pCode)
#define IBackgroundCopyError_GetFile(This,pVal) (This)->lpVtbl->GetFile(This,pVal)
#define IBackgroundCopyError_GetErrorDescription(This,LanguageId,pErrorDescription) (This)->lpVtbl->GetErrorDescription(This,LanguageId,pErrorDescription)
#define IBackgroundCopyError_GetErrorContextDescription(This,LanguageId,pContextDescription) (This)->lpVtbl->GetErrorContextDescription(This,LanguageId,pContextDescription)
#define IBackgroundCopyError_GetProtocol(This,pProtocol) (This)->lpVtbl->GetProtocol(This,pProtocol)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyError_QueryInterface(IBackgroundCopyError* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyError_AddRef(IBackgroundCopyError* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyError_Release(IBackgroundCopyError* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyError methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyError_GetError(IBackgroundCopyError* This,BG_ERROR_CONTEXT *pContext,HRESULT *pCode) {
+ return This->lpVtbl->GetError(This,pContext,pCode);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetFile(IBackgroundCopyError* This,IBackgroundCopyFile **pVal) {
+ return This->lpVtbl->GetFile(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetErrorDescription(IBackgroundCopyError* This,DWORD LanguageId,LPWSTR *pErrorDescription) {
+ return This->lpVtbl->GetErrorDescription(This,LanguageId,pErrorDescription);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetErrorContextDescription(IBackgroundCopyError* This,DWORD LanguageId,LPWSTR *pContextDescription) {
+ return This->lpVtbl->GetErrorContextDescription(This,LanguageId,pContextDescription);
+}
+static FORCEINLINE HRESULT IBackgroundCopyError_GetProtocol(IBackgroundCopyError* This,LPWSTR *pProtocol) {
+ return This->lpVtbl->GetProtocol(This,pProtocol);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyError_GetError_Proxy(IBackgroundCopyError *This,BG_ERROR_CONTEXT *pContext,HRESULT *pCode);
- void __RPC_STUB IBackgroundCopyError_GetError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyError_GetFile_Proxy(IBackgroundCopyError *This,IBackgroundCopyFile **pVal);
- void __RPC_STUB IBackgroundCopyError_GetFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyError_GetErrorDescription_Proxy(IBackgroundCopyError *This,DWORD LanguageId,LPWSTR *pErrorDescription);
- void __RPC_STUB IBackgroundCopyError_GetErrorDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyError_GetErrorContextDescription_Proxy(IBackgroundCopyError *This,DWORD LanguageId,LPWSTR *pContextDescription);
- void __RPC_STUB IBackgroundCopyError_GetErrorContextDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyError_GetProtocol_Proxy(IBackgroundCopyError *This,LPWSTR *pProtocol);
- void __RPC_STUB IBackgroundCopyError_GetProtocol_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyError_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyJob interface
+ */
#ifndef __IBackgroundCopyJob_INTERFACE_DEFINED__
#define __IBackgroundCopyJob_INTERFACE_DEFINED__
- typedef struct _BG_FILE_INFO {
+
+typedef struct _BG_FILE_INFO {
LPWSTR RemoteName;
LPWSTR LocalName;
- } BG_FILE_INFO;
-
- typedef struct _BG_JOB_PROGRESS {
+} BG_FILE_INFO;
+typedef struct _BG_JOB_PROGRESS {
UINT64 BytesTotal;
UINT64 BytesTransferred;
ULONG FilesTotal;
ULONG FilesTransferred;
- } BG_JOB_PROGRESS;
-
- typedef struct _BG_JOB_TIMES {
+} BG_JOB_PROGRESS;
+typedef struct _BG_JOB_TIMES {
FILETIME CreationTime;
FILETIME ModificationTime;
FILETIME TransferCompletionTime;
- } BG_JOB_TIMES;
-
- typedef enum __MIDL_IBackgroundCopyJob_0001 {
+} BG_JOB_TIMES;
+typedef enum __WIDL_bits_generated_name_0000000D {
BG_JOB_PRIORITY_FOREGROUND = 0,
- BG_JOB_PRIORITY_HIGH,BG_JOB_PRIORITY_NORMAL,BG_JOB_PRIORITY_LOW
- } BG_JOB_PRIORITY;
+ BG_JOB_PRIORITY_HIGH = 1,
+ BG_JOB_PRIORITY_NORMAL = 2,
+ BG_JOB_PRIORITY_LOW = 3
+} BG_JOB_PRIORITY;
+typedef enum __WIDL_bits_generated_name_0000000E {
+ BG_JOB_STATE_QUEUED = 0,
+ BG_JOB_STATE_CONNECTING = 1,
+ BG_JOB_STATE_TRANSFERRING = 2,
+ BG_JOB_STATE_SUSPENDED = 3,
+ BG_JOB_STATE_ERROR = 4,
+ BG_JOB_STATE_TRANSIENT_ERROR = 5,
+ BG_JOB_STATE_TRANSFERRED = 6,
+ BG_JOB_STATE_ACKNOWLEDGED = 7,
+ BG_JOB_STATE_CANCELLED = 8
+} BG_JOB_STATE;
+typedef enum __WIDL_bits_generated_name_0000000F {
+ BG_JOB_TYPE_DOWNLOAD = 0,
+ BG_JOB_TYPE_UPLOAD = 1,
+ BG_JOB_TYPE_UPLOAD_REPLY = 2
+} BG_JOB_TYPE;
+typedef enum __WIDL_bits_generated_name_00000010 {
+ BG_JOB_PROXY_USAGE_PRECONFIG = 0,
+ BG_JOB_PROXY_USAGE_NO_PROXY = 1,
+ BG_JOB_PROXY_USAGE_OVERRIDE = 2,
+ BG_JOB_PROXY_USAGE_AUTODETECT = 3
+} BG_JOB_PROXY_USAGE;
+DEFINE_GUID(IID_IBackgroundCopyJob, 0x37668d37, 0x507e, 0x4160, 0x93,0x16, 0x26,0x30,0x6d,0x15,0x0b,0x12);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("37668d37-507e-4160-9316-26306d150b12")
+IBackgroundCopyJob : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE AddFileSet(
+ ULONG cFileCount,
+ BG_FILE_INFO *pFileSet) = 0;
- typedef enum __MIDL_IBackgroundCopyJob_0002 {
- BG_JOB_STATE_QUEUED = 0,BG_JOB_STATE_CONNECTING,BG_JOB_STATE_TRANSFERRING,
- BG_JOB_STATE_SUSPENDED,BG_JOB_STATE_ERROR,BG_JOB_STATE_TRANSIENT_ERROR,
- BG_JOB_STATE_TRANSFERRED,BG_JOB_STATE_ACKNOWLEDGED,BG_JOB_STATE_CANCELLED
- } BG_JOB_STATE;
+ virtual HRESULT STDMETHODCALLTYPE AddFile(
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName) = 0;
- typedef enum __MIDL_IBackgroundCopyJob_0003 {
- BG_JOB_TYPE_DOWNLOAD = 0,BG_JOB_TYPE_UPLOAD,BG_JOB_TYPE_UPLOAD_REPLY
- } BG_JOB_TYPE;
+ virtual HRESULT STDMETHODCALLTYPE EnumFiles(
+ IEnumBackgroundCopyFiles **pEnum) = 0;
- typedef enum __MIDL_IBackgroundCopyJob_0004 {
- BG_JOB_PROXY_USAGE_PRECONFIG = 0,BG_JOB_PROXY_USAGE_NO_PROXY,
- BG_JOB_PROXY_USAGE_OVERRIDE,BG_JOB_PROXY_USAGE_AUTODETECT
- } BG_JOB_PROXY_USAGE;
+ virtual HRESULT STDMETHODCALLTYPE Suspend(
+ ) = 0;
- EXTERN_C const IID IID_IBackgroundCopyJob;
-#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyJob : public IUnknown {
- public:
- virtual HRESULT WINAPI AddFileSet(ULONG cFileCount,BG_FILE_INFO *pFileSet) = 0;
- virtual HRESULT WINAPI AddFile(LPCWSTR RemoteUrl,LPCWSTR LocalName) = 0;
- virtual HRESULT WINAPI EnumFiles(IEnumBackgroundCopyFiles **pEnum) = 0;
- virtual HRESULT WINAPI Suspend(void) = 0;
- virtual HRESULT WINAPI Resume(void) = 0;
- virtual HRESULT WINAPI Cancel(void) = 0;
- virtual HRESULT WINAPI Complete(void) = 0;
- virtual HRESULT WINAPI GetId(GUID *pVal) = 0;
- virtual HRESULT WINAPI GetType(BG_JOB_TYPE *pVal) = 0;
- virtual HRESULT WINAPI GetProgress(BG_JOB_PROGRESS *pVal) = 0;
- virtual HRESULT WINAPI GetTimes(BG_JOB_TIMES *pVal) = 0;
- virtual HRESULT WINAPI GetState(BG_JOB_STATE *pVal) = 0;
- virtual HRESULT WINAPI GetError(IBackgroundCopyError **ppError) = 0;
- virtual HRESULT WINAPI GetOwner(LPWSTR *pVal) = 0;
- virtual HRESULT WINAPI SetDisplayName(LPCWSTR Val) = 0;
- virtual HRESULT WINAPI GetDisplayName(LPWSTR *pVal) = 0;
- virtual HRESULT WINAPI SetDescription(LPCWSTR Val) = 0;
- virtual HRESULT WINAPI GetDescription(LPWSTR *pVal) = 0;
- virtual HRESULT WINAPI SetPriority(BG_JOB_PRIORITY Val) = 0;
- virtual HRESULT WINAPI GetPriority(BG_JOB_PRIORITY *pVal) = 0;
- virtual HRESULT WINAPI SetNotifyFlags(ULONG Val) = 0;
- virtual HRESULT WINAPI GetNotifyFlags(ULONG *pVal) = 0;
- virtual HRESULT WINAPI SetNotifyInterface(IUnknown *Val) = 0;
- virtual HRESULT WINAPI GetNotifyInterface(IUnknown **pVal) = 0;
- virtual HRESULT WINAPI SetMinimumRetryDelay(ULONG Seconds) = 0;
- virtual HRESULT WINAPI GetMinimumRetryDelay(ULONG *Seconds) = 0;
- virtual HRESULT WINAPI SetNoProgressTimeout(ULONG Seconds) = 0;
- virtual HRESULT WINAPI GetNoProgressTimeout(ULONG *Seconds) = 0;
- virtual HRESULT WINAPI GetErrorCount(ULONG *Errors) = 0;
- virtual HRESULT WINAPI SetProxySettings(BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) = 0;
- virtual HRESULT WINAPI GetProxySettings(BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) = 0;
- virtual HRESULT WINAPI TakeOwnership(void) = 0;
- };
+ virtual HRESULT STDMETHODCALLTYPE Resume(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Cancel(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Complete(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetId(
+ GUID *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetType(
+ BG_JOB_TYPE *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProgress(
+ BG_JOB_PROGRESS *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTimes(
+ BG_JOB_TIMES *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetState(
+ BG_JOB_STATE *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetError(
+ IBackgroundCopyError **ppError) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOwner(
+ LPWSTR *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDisplayName(
+ LPCWSTR Val) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
+ LPWSTR *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDescription(
+ LPCWSTR Val) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDescription(
+ LPWSTR *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPriority(
+ BG_JOB_PRIORITY Val) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPriority(
+ BG_JOB_PRIORITY *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetNotifyFlags(
+ ULONG Val) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNotifyFlags(
+ ULONG *pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetNotifyInterface(
+ IUnknown *Val) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNotifyInterface(
+ IUnknown **pVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMinimumRetryDelay(
+ ULONG Seconds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMinimumRetryDelay(
+ ULONG *Seconds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetNoProgressTimeout(
+ ULONG Seconds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNoProgressTimeout(
+ ULONG *Seconds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorCount(
+ ULONG *Errors) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetProxySettings(
+ BG_JOB_PROXY_USAGE ProxyUsage,
+ const WCHAR *ProxyList,
+ const WCHAR *ProxyBypassList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProxySettings(
+ BG_JOB_PROXY_USAGE *pProxyUsage,
+ LPWSTR *pProxyList,
+ LPWSTR *pProxyBypassList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TakeOwnership(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob, 0x37668d37, 0x507e, 0x4160, 0x93,0x16, 0x26,0x30,0x6d,0x15,0x0b,0x12)
+#endif
#else
- typedef struct IBackgroundCopyJobVtbl {
+typedef struct IBackgroundCopyJobVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyJob *This);
- ULONG (WINAPI *Release)(IBackgroundCopyJob *This);
- HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
- HRESULT (WINAPI *AddFile)(IBackgroundCopyJob *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
- HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob *This,IEnumBackgroundCopyFiles **pEnum);
- HRESULT (WINAPI *Suspend)(IBackgroundCopyJob *This);
- HRESULT (WINAPI *Resume)(IBackgroundCopyJob *This);
- HRESULT (WINAPI *Cancel)(IBackgroundCopyJob *This);
- HRESULT (WINAPI *Complete)(IBackgroundCopyJob *This);
- HRESULT (WINAPI *GetId)(IBackgroundCopyJob *This,GUID *pVal);
- HRESULT (WINAPI *GetType)(IBackgroundCopyJob *This,BG_JOB_TYPE *pVal);
- HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob *This,BG_JOB_PROGRESS *pVal);
- HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob *This,BG_JOB_TIMES *pVal);
- HRESULT (WINAPI *GetState)(IBackgroundCopyJob *This,BG_JOB_STATE *pVal);
- HRESULT (WINAPI *GetError)(IBackgroundCopyJob *This,IBackgroundCopyError **ppError);
- HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob *This,LPCWSTR Val);
- HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob *This,LPCWSTR Val);
- HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob *This,BG_JOB_PRIORITY Val);
- HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob *This,BG_JOB_PRIORITY *pVal);
- HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob *This,ULONG Val);
- HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob *This,ULONG *pVal);
- HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob *This,IUnknown *Val);
- HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob *This,IUnknown **pVal);
- HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob *This,ULONG Seconds);
- HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob *This,ULONG *Seconds);
- HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob *This,ULONG Seconds);
- HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob *This,ULONG *Seconds);
- HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob *This,ULONG *Errors);
- HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
- HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
- HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob *This);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyJob *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyJob *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyJob *This);
+
+ /*** IBackgroundCopyJob methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+ IBackgroundCopyJob *This,
+ ULONG cFileCount,
+ BG_FILE_INFO *pFileSet);
+
+ HRESULT (STDMETHODCALLTYPE *AddFile)(
+ IBackgroundCopyJob *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName);
+
+ HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+ IBackgroundCopyJob *This,
+ IEnumBackgroundCopyFiles **pEnum);
+
+ HRESULT (STDMETHODCALLTYPE *Suspend)(
+ IBackgroundCopyJob *This);
+
+ HRESULT (STDMETHODCALLTYPE *Resume)(
+ IBackgroundCopyJob *This);
+
+ HRESULT (STDMETHODCALLTYPE *Cancel)(
+ IBackgroundCopyJob *This);
+
+ HRESULT (STDMETHODCALLTYPE *Complete)(
+ IBackgroundCopyJob *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetId)(
+ IBackgroundCopyJob *This,
+ GUID *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetType)(
+ IBackgroundCopyJob *This,
+ BG_JOB_TYPE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyJob *This,
+ BG_JOB_PROGRESS *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetTimes)(
+ IBackgroundCopyJob *This,
+ BG_JOB_TIMES *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetState)(
+ IBackgroundCopyJob *This,
+ BG_JOB_STATE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetError)(
+ IBackgroundCopyJob *This,
+ IBackgroundCopyError **ppError);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwner)(
+ IBackgroundCopyJob *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+ IBackgroundCopyJob *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+ IBackgroundCopyJob *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDescription)(
+ IBackgroundCopyJob *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDescription)(
+ IBackgroundCopyJob *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetPriority)(
+ IBackgroundCopyJob *This,
+ BG_JOB_PRIORITY Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetPriority)(
+ IBackgroundCopyJob *This,
+ BG_JOB_PRIORITY *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+ IBackgroundCopyJob *This,
+ ULONG Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+ IBackgroundCopyJob *This,
+ ULONG *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+ IBackgroundCopyJob *This,
+ IUnknown *Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+ IBackgroundCopyJob *This,
+ IUnknown **pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+ IBackgroundCopyJob *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+ IBackgroundCopyJob *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+ IBackgroundCopyJob *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+ IBackgroundCopyJob *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+ IBackgroundCopyJob *This,
+ ULONG *Errors);
+
+ HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+ IBackgroundCopyJob *This,
+ BG_JOB_PROXY_USAGE ProxyUsage,
+ const WCHAR *ProxyList,
+ const WCHAR *ProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+ IBackgroundCopyJob *This,
+ BG_JOB_PROXY_USAGE *pProxyUsage,
+ LPWSTR *pProxyList,
+ LPWSTR *pProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+ IBackgroundCopyJob *This);
+
END_INTERFACE
- } IBackgroundCopyJobVtbl;
- struct IBackgroundCopyJob {
- CONST_VTBL struct IBackgroundCopyJobVtbl *lpVtbl;
- };
+} IBackgroundCopyJobVtbl;
+
+interface IBackgroundCopyJob {
+ CONST_VTBL IBackgroundCopyJobVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IBackgroundCopyJob_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyJob_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyJob_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
#define IBackgroundCopyJob_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
#define IBackgroundCopyJob_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
#define IBackgroundCopyJob_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
@@ -406,294 +819,509 @@ extern "C"{
#define IBackgroundCopyJob_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
#define IBackgroundCopyJob_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
#define IBackgroundCopyJob_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob_QueryInterface(IBackgroundCopyJob* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob_AddRef(IBackgroundCopyJob* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob_Release(IBackgroundCopyJob* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob_AddFileSet(IBackgroundCopyJob* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+ return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_AddFile(IBackgroundCopyJob* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+ return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_EnumFiles(IBackgroundCopyJob* This,IEnumBackgroundCopyFiles **pEnum) {
+ return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Suspend(IBackgroundCopyJob* This) {
+ return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Resume(IBackgroundCopyJob* This) {
+ return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Cancel(IBackgroundCopyJob* This) {
+ return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_Complete(IBackgroundCopyJob* This) {
+ return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetId(IBackgroundCopyJob* This,GUID *pVal) {
+ return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetType(IBackgroundCopyJob* This,BG_JOB_TYPE *pVal) {
+ return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetProgress(IBackgroundCopyJob* This,BG_JOB_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetTimes(IBackgroundCopyJob* This,BG_JOB_TIMES *pVal) {
+ return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetState(IBackgroundCopyJob* This,BG_JOB_STATE *pVal) {
+ return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetError(IBackgroundCopyJob* This,IBackgroundCopyError **ppError) {
+ return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetOwner(IBackgroundCopyJob* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetDisplayName(IBackgroundCopyJob* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetDisplayName(IBackgroundCopyJob* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetDescription(IBackgroundCopyJob* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetDescription(IBackgroundCopyJob* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetPriority(IBackgroundCopyJob* This,BG_JOB_PRIORITY Val) {
+ return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetPriority(IBackgroundCopyJob* This,BG_JOB_PRIORITY *pVal) {
+ return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetNotifyFlags(IBackgroundCopyJob* This,ULONG Val) {
+ return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetNotifyFlags(IBackgroundCopyJob* This,ULONG *pVal) {
+ return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetNotifyInterface(IBackgroundCopyJob* This,IUnknown *Val) {
+ return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetNotifyInterface(IBackgroundCopyJob* This,IUnknown **pVal) {
+ return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetMinimumRetryDelay(IBackgroundCopyJob* This,ULONG Seconds) {
+ return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetMinimumRetryDelay(IBackgroundCopyJob* This,ULONG *Seconds) {
+ return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetNoProgressTimeout(IBackgroundCopyJob* This,ULONG Seconds) {
+ return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetNoProgressTimeout(IBackgroundCopyJob* This,ULONG *Seconds) {
+ return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetErrorCount(IBackgroundCopyJob* This,ULONG *Errors) {
+ return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_SetProxySettings(IBackgroundCopyJob* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+ return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_GetProxySettings(IBackgroundCopyJob* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+ return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob_TakeOwnership(IBackgroundCopyJob* This) {
+ return This->lpVtbl->TakeOwnership(This);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyJob_AddFileSet_Proxy(IBackgroundCopyJob *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
- void __RPC_STUB IBackgroundCopyJob_AddFileSet_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_AddFile_Proxy(IBackgroundCopyJob *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
- void __RPC_STUB IBackgroundCopyJob_AddFile_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_EnumFiles_Proxy(IBackgroundCopyJob *This,IEnumBackgroundCopyFiles **pEnum);
- void __RPC_STUB IBackgroundCopyJob_EnumFiles_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_Suspend_Proxy(IBackgroundCopyJob *This);
- void __RPC_STUB IBackgroundCopyJob_Suspend_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_Resume_Proxy(IBackgroundCopyJob *This);
- void __RPC_STUB IBackgroundCopyJob_Resume_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_Cancel_Proxy(IBackgroundCopyJob *This);
- void __RPC_STUB IBackgroundCopyJob_Cancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_Complete_Proxy(IBackgroundCopyJob *This);
- void __RPC_STUB IBackgroundCopyJob_Complete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetId_Proxy(IBackgroundCopyJob *This,GUID *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetType_Proxy(IBackgroundCopyJob *This,BG_JOB_TYPE *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetProgress_Proxy(IBackgroundCopyJob *This,BG_JOB_PROGRESS *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetTimes_Proxy(IBackgroundCopyJob *This,BG_JOB_TIMES *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetTimes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetState_Proxy(IBackgroundCopyJob *This,BG_JOB_STATE *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetError_Proxy(IBackgroundCopyJob *This,IBackgroundCopyError **ppError);
- void __RPC_STUB IBackgroundCopyJob_GetError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetOwner_Proxy(IBackgroundCopyJob *This,LPWSTR *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetOwner_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetDisplayName_Proxy(IBackgroundCopyJob *This,LPCWSTR Val);
- void __RPC_STUB IBackgroundCopyJob_SetDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetDisplayName_Proxy(IBackgroundCopyJob *This,LPWSTR *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetDescription_Proxy(IBackgroundCopyJob *This,LPCWSTR Val);
- void __RPC_STUB IBackgroundCopyJob_SetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetDescription_Proxy(IBackgroundCopyJob *This,LPWSTR *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetPriority_Proxy(IBackgroundCopyJob *This,BG_JOB_PRIORITY Val);
- void __RPC_STUB IBackgroundCopyJob_SetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetPriority_Proxy(IBackgroundCopyJob *This,BG_JOB_PRIORITY *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetPriority_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetNotifyFlags_Proxy(IBackgroundCopyJob *This,ULONG Val);
- void __RPC_STUB IBackgroundCopyJob_SetNotifyFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetNotifyFlags_Proxy(IBackgroundCopyJob *This,ULONG *pVal);
- void __RPC_STUB IBackgroundCopyJob_GetNotifyFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetNotifyInterface_Proxy(IBackgroundCopyJob *This,IUnknown *Val);
- void __RPC_STUB IBackgroundCopyJob_SetNotifyInterface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetNotifyInterface_Proxy(IBackgroundCopyJob *This,IUnknown **pVal);
- void __RPC_STUB IBackgroundCopyJob_GetNotifyInterface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetMinimumRetryDelay_Proxy(IBackgroundCopyJob *This,ULONG Seconds);
- void __RPC_STUB IBackgroundCopyJob_SetMinimumRetryDelay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetMinimumRetryDelay_Proxy(IBackgroundCopyJob *This,ULONG *Seconds);
- void __RPC_STUB IBackgroundCopyJob_GetMinimumRetryDelay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetNoProgressTimeout_Proxy(IBackgroundCopyJob *This,ULONG Seconds);
- void __RPC_STUB IBackgroundCopyJob_SetNoProgressTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetNoProgressTimeout_Proxy(IBackgroundCopyJob *This,ULONG *Seconds);
- void __RPC_STUB IBackgroundCopyJob_GetNoProgressTimeout_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetErrorCount_Proxy(IBackgroundCopyJob *This,ULONG *Errors);
- void __RPC_STUB IBackgroundCopyJob_GetErrorCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_SetProxySettings_Proxy(IBackgroundCopyJob *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
- void __RPC_STUB IBackgroundCopyJob_SetProxySettings_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_GetProxySettings_Proxy(IBackgroundCopyJob *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
- void __RPC_STUB IBackgroundCopyJob_GetProxySettings_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob_TakeOwnership_Proxy(IBackgroundCopyJob *This);
- void __RPC_STUB IBackgroundCopyJob_TakeOwnership_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyJob_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IEnumBackgroundCopyJobs interface
+ */
#ifndef __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__
#define __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__
- EXTERN_C const IID IID_IEnumBackgroundCopyJobs;
+
+DEFINE_GUID(IID_IEnumBackgroundCopyJobs, 0x1af4f612, 0x3b71, 0x466f, 0x8f,0x58, 0x7b,0x6f,0x73,0xac,0x57,0xad);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IEnumBackgroundCopyJobs : public IUnknown {
- public:
- virtual HRESULT WINAPI Next(ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched) = 0;
- virtual HRESULT WINAPI Skip(ULONG celt) = 0;
- virtual HRESULT WINAPI Reset(void) = 0;
- virtual HRESULT WINAPI Clone(IEnumBackgroundCopyJobs **ppenum) = 0;
- virtual HRESULT WINAPI GetCount(ULONG *puCount) = 0;
- };
+MIDL_INTERFACE("1af4f612-3b71-466f-8f58-7b6f73ac57ad")
+IEnumBackgroundCopyJobs : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Next(
+ ULONG celt,
+ IBackgroundCopyJob **rgelt,
+ ULONG *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ IEnumBackgroundCopyJobs **ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCount(
+ ULONG *puCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IEnumBackgroundCopyJobs, 0x1af4f612, 0x3b71, 0x466f, 0x8f,0x58, 0x7b,0x6f,0x73,0xac,0x57,0xad)
+#endif
#else
- typedef struct IEnumBackgroundCopyJobsVtbl {
+typedef struct IEnumBackgroundCopyJobsVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IEnumBackgroundCopyJobs *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IEnumBackgroundCopyJobs *This);
- ULONG (WINAPI *Release)(IEnumBackgroundCopyJobs *This);
- HRESULT (WINAPI *Next)(IEnumBackgroundCopyJobs *This,ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched);
- HRESULT (WINAPI *Skip)(IEnumBackgroundCopyJobs *This,ULONG celt);
- HRESULT (WINAPI *Reset)(IEnumBackgroundCopyJobs *This);
- HRESULT (WINAPI *Clone)(IEnumBackgroundCopyJobs *This,IEnumBackgroundCopyJobs **ppenum);
- HRESULT (WINAPI *GetCount)(IEnumBackgroundCopyJobs *This,ULONG *puCount);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IEnumBackgroundCopyJobs *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IEnumBackgroundCopyJobs *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IEnumBackgroundCopyJobs *This);
+
+ /*** IEnumBackgroundCopyJobs methods ***/
+ HRESULT (STDMETHODCALLTYPE *Next)(
+ IEnumBackgroundCopyJobs *This,
+ ULONG celt,
+ IBackgroundCopyJob **rgelt,
+ ULONG *pceltFetched);
+
+ HRESULT (STDMETHODCALLTYPE *Skip)(
+ IEnumBackgroundCopyJobs *This,
+ ULONG celt);
+
+ HRESULT (STDMETHODCALLTYPE *Reset)(
+ IEnumBackgroundCopyJobs *This);
+
+ HRESULT (STDMETHODCALLTYPE *Clone)(
+ IEnumBackgroundCopyJobs *This,
+ IEnumBackgroundCopyJobs **ppenum);
+
+ HRESULT (STDMETHODCALLTYPE *GetCount)(
+ IEnumBackgroundCopyJobs *This,
+ ULONG *puCount);
+
END_INTERFACE
- } IEnumBackgroundCopyJobsVtbl;
- struct IEnumBackgroundCopyJobs {
- CONST_VTBL struct IEnumBackgroundCopyJobsVtbl *lpVtbl;
- };
+} IEnumBackgroundCopyJobsVtbl;
+
+interface IEnumBackgroundCopyJobs {
+ CONST_VTBL IEnumBackgroundCopyJobsVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IEnumBackgroundCopyJobs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumBackgroundCopyJobs_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumBackgroundCopyJobs_Release(This) (This)->lpVtbl->Release(This)
+/*** IEnumBackgroundCopyJobs methods ***/
#define IEnumBackgroundCopyJobs_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumBackgroundCopyJobs_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumBackgroundCopyJobs_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumBackgroundCopyJobs_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#define IEnumBackgroundCopyJobs_GetCount(This,puCount) (This)->lpVtbl->GetCount(This,puCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_QueryInterface(IEnumBackgroundCopyJobs* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyJobs_AddRef(IEnumBackgroundCopyJobs* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IEnumBackgroundCopyJobs_Release(IEnumBackgroundCopyJobs* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IEnumBackgroundCopyJobs methods ***/
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Next(IEnumBackgroundCopyJobs* This,ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched) {
+ return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Skip(IEnumBackgroundCopyJobs* This,ULONG celt) {
+ return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Reset(IEnumBackgroundCopyJobs* This) {
+ return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_Clone(IEnumBackgroundCopyJobs* This,IEnumBackgroundCopyJobs **ppenum) {
+ return This->lpVtbl->Clone(This,ppenum);
+}
+static FORCEINLINE HRESULT IEnumBackgroundCopyJobs_GetCount(IEnumBackgroundCopyJobs* This,ULONG *puCount) {
+ return This->lpVtbl->GetCount(This,puCount);
+}
#endif
#endif
- HRESULT WINAPI IEnumBackgroundCopyJobs_Next_Proxy(IEnumBackgroundCopyJobs *This,ULONG celt,IBackgroundCopyJob **rgelt,ULONG *pceltFetched);
- void __RPC_STUB IEnumBackgroundCopyJobs_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyJobs_Skip_Proxy(IEnumBackgroundCopyJobs *This,ULONG celt);
- void __RPC_STUB IEnumBackgroundCopyJobs_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyJobs_Reset_Proxy(IEnumBackgroundCopyJobs *This);
- void __RPC_STUB IEnumBackgroundCopyJobs_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyJobs_Clone_Proxy(IEnumBackgroundCopyJobs *This,IEnumBackgroundCopyJobs **ppenum);
- void __RPC_STUB IEnumBackgroundCopyJobs_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IEnumBackgroundCopyJobs_GetCount_Proxy(IEnumBackgroundCopyJobs *This,ULONG *puCount);
- void __RPC_STUB IEnumBackgroundCopyJobs_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
-#define BG_NOTIFY_JOB_TRANSFERRED 0x0001
-#define BG_NOTIFY_JOB_ERROR 0x0002
-#define BG_NOTIFY_DISABLE 0x0004
-#define BG_NOTIFY_JOB_MODIFICATION 0x0008
- extern RPC_IF_HANDLE __MIDL_itf_bits_0013_v0_0_c_ifspec;
- extern RPC_IF_HANDLE __MIDL_itf_bits_0013_v0_0_s_ifspec;
+#endif /* __IEnumBackgroundCopyJobs_INTERFACE_DEFINED__ */
+/*****************************************************************************
+ * IBackgroundCopyCallback interface
+ */
#ifndef __IBackgroundCopyCallback_INTERFACE_DEFINED__
#define __IBackgroundCopyCallback_INTERFACE_DEFINED__
- EXTERN_C const IID IID_IBackgroundCopyCallback;
+
+DEFINE_GUID(IID_IBackgroundCopyCallback, 0x97ea99c7, 0x0186, 0x4ad4, 0x8d,0xf9, 0xc5,0xb4,0xe0,0xed,0x6b,0x22);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyCallback : public IUnknown {
- public:
- virtual HRESULT WINAPI JobTransferred(IBackgroundCopyJob *pJob) = 0;
- virtual HRESULT WINAPI JobError(IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) = 0;
- virtual HRESULT WINAPI JobModification(IBackgroundCopyJob *pJob,DWORD dwReserved) = 0;
- };
+MIDL_INTERFACE("97ea99c7-0186-4ad4-8df9-c5b4e0ed6b22")
+IBackgroundCopyCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE JobTransferred(
+ IBackgroundCopyJob *pJob) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE JobError(
+ IBackgroundCopyJob *pJob,
+ IBackgroundCopyError *pError) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE JobModification(
+ IBackgroundCopyJob *pJob,
+ DWORD dwReserved) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyCallback, 0x97ea99c7, 0x0186, 0x4ad4, 0x8d,0xf9, 0xc5,0xb4,0xe0,0xed,0x6b,0x22)
+#endif
#else
- typedef struct IBackgroundCopyCallbackVtbl {
+typedef struct IBackgroundCopyCallbackVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyCallback *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyCallback *This);
- ULONG (WINAPI *Release)(IBackgroundCopyCallback *This);
- HRESULT (WINAPI *JobTransferred)(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
- HRESULT (WINAPI *JobError)(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
- HRESULT (WINAPI *JobModification)(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyCallback *This);
+
+ /*** IBackgroundCopyCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *JobTransferred)(
+ IBackgroundCopyCallback *This,
+ IBackgroundCopyJob *pJob);
+
+ HRESULT (STDMETHODCALLTYPE *JobError)(
+ IBackgroundCopyCallback *This,
+ IBackgroundCopyJob *pJob,
+ IBackgroundCopyError *pError);
+
+ HRESULT (STDMETHODCALLTYPE *JobModification)(
+ IBackgroundCopyCallback *This,
+ IBackgroundCopyJob *pJob,
+ DWORD dwReserved);
+
END_INTERFACE
- } IBackgroundCopyCallbackVtbl;
- struct IBackgroundCopyCallback {
- CONST_VTBL struct IBackgroundCopyCallbackVtbl *lpVtbl;
- };
+} IBackgroundCopyCallbackVtbl;
+
+interface IBackgroundCopyCallback {
+ CONST_VTBL IBackgroundCopyCallbackVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IBackgroundCopyCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyCallback methods ***/
#define IBackgroundCopyCallback_JobTransferred(This,pJob) (This)->lpVtbl->JobTransferred(This,pJob)
#define IBackgroundCopyCallback_JobError(This,pJob,pError) (This)->lpVtbl->JobError(This,pJob,pError)
#define IBackgroundCopyCallback_JobModification(This,pJob,dwReserved) (This)->lpVtbl->JobModification(This,pJob,dwReserved)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback_QueryInterface(IBackgroundCopyCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback_AddRef(IBackgroundCopyCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback_Release(IBackgroundCopyCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyCallback methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback_JobTransferred(IBackgroundCopyCallback* This,IBackgroundCopyJob *pJob) {
+ return This->lpVtbl->JobTransferred(This,pJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback_JobError(IBackgroundCopyCallback* This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) {
+ return This->lpVtbl->JobError(This,pJob,pError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback_JobModification(IBackgroundCopyCallback* This,IBackgroundCopyJob *pJob,DWORD dwReserved) {
+ return This->lpVtbl->JobModification(This,pJob,dwReserved);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyCallback_JobTransferred_Proxy(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
- void __RPC_STUB IBackgroundCopyCallback_JobTransferred_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyCallback_JobError_Proxy(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
- void __RPC_STUB IBackgroundCopyCallback_JobError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyCallback_JobModification_Proxy(IBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
- void __RPC_STUB IBackgroundCopyCallback_JobModification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
-#endif
-#ifndef __AsyncIBackgroundCopyCallback_INTERFACE_DEFINED__
-#define __AsyncIBackgroundCopyCallback_INTERFACE_DEFINED__
- EXTERN_C const IID IID_AsyncIBackgroundCopyCallback;
-#if defined(__cplusplus) && !defined(CINTERFACE)
- struct AsyncIBackgroundCopyCallback : public IUnknown {
- public:
- virtual HRESULT WINAPI Begin_JobTransferred(IBackgroundCopyJob *pJob) = 0;
- virtual HRESULT WINAPI Finish_JobTransferred(void) = 0;
- virtual HRESULT WINAPI Begin_JobError(IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) = 0;
- virtual HRESULT WINAPI Finish_JobError(void) = 0;
- virtual HRESULT WINAPI Begin_JobModification(IBackgroundCopyJob *pJob,DWORD dwReserved) = 0;
- virtual HRESULT WINAPI Finish_JobModification(void) = 0;
- };
-#else
- typedef struct AsyncIBackgroundCopyCallbackVtbl {
- BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(AsyncIBackgroundCopyCallback *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(AsyncIBackgroundCopyCallback *This);
- ULONG (WINAPI *Release)(AsyncIBackgroundCopyCallback *This);
- HRESULT (WINAPI *Begin_JobTransferred)(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
- HRESULT (WINAPI *Finish_JobTransferred)(AsyncIBackgroundCopyCallback *This);
- HRESULT (WINAPI *Begin_JobError)(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
- HRESULT (WINAPI *Finish_JobError)(AsyncIBackgroundCopyCallback *This);
- HRESULT (WINAPI *Begin_JobModification)(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
- HRESULT (WINAPI *Finish_JobModification)(AsyncIBackgroundCopyCallback *This);
- END_INTERFACE
- } AsyncIBackgroundCopyCallbackVtbl;
- struct AsyncIBackgroundCopyCallback {
- CONST_VTBL struct AsyncIBackgroundCopyCallbackVtbl *lpVtbl;
- };
-#ifdef COBJMACROS
-#define AsyncIBackgroundCopyCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define AsyncIBackgroundCopyCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define AsyncIBackgroundCopyCallback_Release(This) (This)->lpVtbl->Release(This)
-#define AsyncIBackgroundCopyCallback_Begin_JobTransferred(This,pJob) (This)->lpVtbl->Begin_JobTransferred(This,pJob)
-#define AsyncIBackgroundCopyCallback_Finish_JobTransferred(This) (This)->lpVtbl->Finish_JobTransferred(This)
-#define AsyncIBackgroundCopyCallback_Begin_JobError(This,pJob,pError) (This)->lpVtbl->Begin_JobError(This,pJob,pError)
-#define AsyncIBackgroundCopyCallback_Finish_JobError(This) (This)->lpVtbl->Finish_JobError(This)
-#define AsyncIBackgroundCopyCallback_Begin_JobModification(This,pJob,dwReserved) (This)->lpVtbl->Begin_JobModification(This,pJob,dwReserved)
-#define AsyncIBackgroundCopyCallback_Finish_JobModification(This) (This)->lpVtbl->Finish_JobModification(This)
-#endif
-#endif
- HRESULT WINAPI AsyncIBackgroundCopyCallback_Begin_JobTransferred_Proxy(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob);
- void __RPC_STUB AsyncIBackgroundCopyCallback_Begin_JobTransferred_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI AsyncIBackgroundCopyCallback_Finish_JobTransferred_Proxy(AsyncIBackgroundCopyCallback *This);
- void __RPC_STUB AsyncIBackgroundCopyCallback_Finish_JobTransferred_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI AsyncIBackgroundCopyCallback_Begin_JobError_Proxy(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError);
- void __RPC_STUB AsyncIBackgroundCopyCallback_Begin_JobError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI AsyncIBackgroundCopyCallback_Finish_JobError_Proxy(AsyncIBackgroundCopyCallback *This);
- void __RPC_STUB AsyncIBackgroundCopyCallback_Finish_JobError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI AsyncIBackgroundCopyCallback_Begin_JobModification_Proxy(AsyncIBackgroundCopyCallback *This,IBackgroundCopyJob *pJob,DWORD dwReserved);
- void __RPC_STUB AsyncIBackgroundCopyCallback_Begin_JobModification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI AsyncIBackgroundCopyCallback_Finish_JobModification_Proxy(AsyncIBackgroundCopyCallback *This);
- void __RPC_STUB AsyncIBackgroundCopyCallback_Finish_JobModification_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif
+
+#endif /* __IBackgroundCopyCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyManager interface
+ */
#ifndef __IBackgroundCopyManager_INTERFACE_DEFINED__
#define __IBackgroundCopyManager_INTERFACE_DEFINED__
#define BG_JOB_ENUM_ALL_USERS 0x0001
-
- EXTERN_C const IID IID_IBackgroundCopyManager;
+DEFINE_GUID(IID_IBackgroundCopyManager, 0x5ce34c0d, 0x0dc9, 0x4c1f, 0x89,0x7c, 0xda,0xa1,0xb7,0x8c,0xee,0x7c);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyManager : public IUnknown {
- public:
- virtual HRESULT WINAPI CreateJob(LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob) = 0;
- virtual HRESULT WINAPI GetJob(REFGUID jobID,IBackgroundCopyJob **ppJob) = 0;
- virtual HRESULT WINAPI EnumJobs(DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum) = 0;
- virtual HRESULT WINAPI GetErrorDescription(HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription) = 0;
- };
+MIDL_INTERFACE("5ce34c0d-0dc9-4c1f-897c-daa1b78cee7c")
+IBackgroundCopyManager : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE CreateJob(
+ LPCWSTR DisplayName,
+ BG_JOB_TYPE Type,
+ GUID *pJobId,
+ IBackgroundCopyJob **ppJob) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetJob(
+ REFGUID jobID,
+ IBackgroundCopyJob **ppJob) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumJobs(
+ DWORD dwFlags,
+ IEnumBackgroundCopyJobs **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorDescription(
+ HRESULT hResult,
+ DWORD LanguageId,
+ LPWSTR *pErrorDescription) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyManager, 0x5ce34c0d, 0x0dc9, 0x4c1f, 0x89,0x7c, 0xda,0xa1,0xb7,0x8c,0xee,0x7c)
+#endif
#else
- typedef struct IBackgroundCopyManagerVtbl {
+typedef struct IBackgroundCopyManagerVtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyManager *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyManager *This);
- ULONG (WINAPI *Release)(IBackgroundCopyManager *This);
- HRESULT (WINAPI *CreateJob)(IBackgroundCopyManager *This,LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob);
- HRESULT (WINAPI *GetJob)(IBackgroundCopyManager *This,REFGUID jobID,IBackgroundCopyJob **ppJob);
- HRESULT (WINAPI *EnumJobs)(IBackgroundCopyManager *This,DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum);
- HRESULT (WINAPI *GetErrorDescription)(IBackgroundCopyManager *This,HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyManager *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyManager *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyManager *This);
+
+ /*** IBackgroundCopyManager methods ***/
+ HRESULT (STDMETHODCALLTYPE *CreateJob)(
+ IBackgroundCopyManager *This,
+ LPCWSTR DisplayName,
+ BG_JOB_TYPE Type,
+ GUID *pJobId,
+ IBackgroundCopyJob **ppJob);
+
+ HRESULT (STDMETHODCALLTYPE *GetJob)(
+ IBackgroundCopyManager *This,
+ REFGUID jobID,
+ IBackgroundCopyJob **ppJob);
+
+ HRESULT (STDMETHODCALLTYPE *EnumJobs)(
+ IBackgroundCopyManager *This,
+ DWORD dwFlags,
+ IEnumBackgroundCopyJobs **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorDescription)(
+ IBackgroundCopyManager *This,
+ HRESULT hResult,
+ DWORD LanguageId,
+ LPWSTR *pErrorDescription);
+
END_INTERFACE
- } IBackgroundCopyManagerVtbl;
- struct IBackgroundCopyManager {
- CONST_VTBL struct IBackgroundCopyManagerVtbl *lpVtbl;
- };
+} IBackgroundCopyManagerVtbl;
+
+interface IBackgroundCopyManager {
+ CONST_VTBL IBackgroundCopyManagerVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IBackgroundCopyManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyManager methods ***/
#define IBackgroundCopyManager_CreateJob(This,DisplayName,Type,pJobId,ppJob) (This)->lpVtbl->CreateJob(This,DisplayName,Type,pJobId,ppJob)
#define IBackgroundCopyManager_GetJob(This,jobID,ppJob) (This)->lpVtbl->GetJob(This,jobID,ppJob)
#define IBackgroundCopyManager_EnumJobs(This,dwFlags,ppEnum) (This)->lpVtbl->EnumJobs(This,dwFlags,ppEnum)
#define IBackgroundCopyManager_GetErrorDescription(This,hResult,LanguageId,pErrorDescription) (This)->lpVtbl->GetErrorDescription(This,hResult,LanguageId,pErrorDescription)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyManager_QueryInterface(IBackgroundCopyManager* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyManager_AddRef(IBackgroundCopyManager* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyManager_Release(IBackgroundCopyManager* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyManager methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyManager_CreateJob(IBackgroundCopyManager* This,LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob) {
+ return This->lpVtbl->CreateJob(This,DisplayName,Type,pJobId,ppJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyManager_GetJob(IBackgroundCopyManager* This,REFGUID jobID,IBackgroundCopyJob **ppJob) {
+ return This->lpVtbl->GetJob(This,jobID,ppJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyManager_EnumJobs(IBackgroundCopyManager* This,DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum) {
+ return This->lpVtbl->EnumJobs(This,dwFlags,ppEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyManager_GetErrorDescription(IBackgroundCopyManager* This,HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription) {
+ return This->lpVtbl->GetErrorDescription(This,hResult,LanguageId,pErrorDescription);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyManager_CreateJob_Proxy(IBackgroundCopyManager *This,LPCWSTR DisplayName,BG_JOB_TYPE Type,GUID *pJobId,IBackgroundCopyJob **ppJob);
- void __RPC_STUB IBackgroundCopyManager_CreateJob_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyManager_GetJob_Proxy(IBackgroundCopyManager *This,REFGUID jobID,IBackgroundCopyJob **ppJob);
- void __RPC_STUB IBackgroundCopyManager_GetJob_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyManager_EnumJobs_Proxy(IBackgroundCopyManager *This,DWORD dwFlags,IEnumBackgroundCopyJobs **ppEnum);
- void __RPC_STUB IBackgroundCopyManager_EnumJobs_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyManager_GetErrorDescription_Proxy(IBackgroundCopyManager *This,HRESULT hResult,DWORD LanguageId,LPWSTR *pErrorDescription);
- void __RPC_STUB IBackgroundCopyManager_GetErrorDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyManager_INTERFACE_DEFINED__ */
+
#ifndef __BackgroundCopyManager_LIBRARY_DEFINED__
#define __BackgroundCopyManager_LIBRARY_DEFINED__
- EXTERN_C const IID LIBID_BackgroundCopyManager;
- EXTERN_C const CLSID CLSID_BackgroundCopyManager;
+
+DEFINE_GUID(LIBID_BackgroundCopyManager, 0x1deeb74f, 0x7915, 0x4560, 0xb5,0x58, 0x91,0x8c,0x83,0xf1,0x76,0xa6);
+
+/*****************************************************************************
+ * BackgroundCopyManager coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager, 0x4991d34b, 0x80a1, 0x4291, 0x83,0xb6, 0x33,0x28,0x36,0x6b,0x90,0x97);
+
#ifdef __cplusplus
- class BackgroundCopyManager;
+class DECLSPEC_UUID("4991d34b-80a1-4291-83b6-3328366b9097") BackgroundCopyManager;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager, 0x4991d34b, 0x80a1, 0x4291, 0x83,0xb6, 0x33,0x28,0x36,0x6b,0x90,0x97)
+#endif
#endif
+
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
#endif
+#endif /* __BackgroundCopyManager_LIBRARY_DEFINED__ */
#include "bits1_5.h"
+/* Begin additional prototypes for all interfaces */
+
- extern RPC_IF_HANDLE __MIDL_itf_bits_0015_v0_0_c_ifspec;
- extern RPC_IF_HANDLE __MIDL_itf_bits_0015_v0_0_s_ifspec;
+/* End additional prototypes */
#ifdef __cplusplus
}
#endif
-#endif
+
+#endif /* __bits_h__ */
diff --git a/lib/libc/include/any-windows-any/bits1_5.h b/lib/libc/include/any-windows-any/bits1_5.h
index 9824c0fe07..ef4f1cf558 100644
--- a/lib/libc/include/any-windows-any/bits1_5.h
+++ b/lib/libc/include/any-windows-any/bits1_5.h
@@ -1,30 +1,29 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 7.0 from include/bits1_5.idl - Do not edit ***/
+
+#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
+#include <rpc.h>
+#include <rpcndr.h>
#endif
#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
+#include <windows.h>
+#include <ole2.h>
#endif
#ifndef __bits1_5_h__
#define __bits1_5_h__
+/* Forward declarations */
+
#ifndef __IBackgroundCopyJob2_FWD_DEFINED__
#define __IBackgroundCopyJob2_FWD_DEFINED__
-typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2;
+typedef interface IBackgroundCopyJob2 IBackgroundCopyJob2;
+#ifdef __cplusplus
+interface IBackgroundCopyJob2;
+#endif /* __cplusplus */
#endif
#ifndef __BackgroundCopyManager1_5_FWD_DEFINED__
@@ -33,130 +32,286 @@ typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2;
typedef class BackgroundCopyManager1_5 BackgroundCopyManager1_5;
#else
typedef struct BackgroundCopyManager1_5 BackgroundCopyManager1_5;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager1_5_FWD_DEFINED__ */
-#ifndef __IBackgroundCopyJob2_FWD_DEFINED__
-#define __IBackgroundCopyJob2_FWD_DEFINED__
-typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2;
-#endif
+/* Headers for imported files */
-#include "bits.h"
+#include <bits.h>
#ifdef __cplusplus
-extern "C"{
-#endif
-
-#ifndef __MIDL_user_allocate_free_DEFINED__
-#define __MIDL_user_allocate_free_DEFINED__
- void *__RPC_API MIDL_user_allocate(size_t);
- void __RPC_API MIDL_user_free(void *);
+extern "C" {
#endif
+/*****************************************************************************
+ * IBackgroundCopyJob2 interface
+ */
#ifndef __IBackgroundCopyJob2_INTERFACE_DEFINED__
#define __IBackgroundCopyJob2_INTERFACE_DEFINED__
- typedef struct _BG_JOB_REPLY_PROGRESS {
+typedef struct _BG_JOB_REPLY_PROGRESS {
UINT64 BytesTotal;
UINT64 BytesTransferred;
- } BG_JOB_REPLY_PROGRESS;
-
- typedef enum __MIDL_IBackgroundCopyJob2_0001 {
- BG_AUTH_TARGET_SERVER = 1,BG_AUTH_TARGET_PROXY = BG_AUTH_TARGET_SERVER + 1
- } BG_AUTH_TARGET;
-
- typedef enum __MIDL_IBackgroundCopyJob2_0002 {
- BG_AUTH_SCHEME_BASIC = 1,BG_AUTH_SCHEME_DIGEST,BG_AUTH_SCHEME_NTLM,
- BG_AUTH_SCHEME_NEGOTIATE,BG_AUTH_SCHEME_PASSPORT
- } BG_AUTH_SCHEME;
-
- typedef struct __MIDL_IBackgroundCopyJob2_0003 {
+} BG_JOB_REPLY_PROGRESS;
+typedef enum __WIDL_bits1_5_generated_name_00000011 {
+ BG_AUTH_TARGET_SERVER = 1,
+ BG_AUTH_TARGET_PROXY = 2
+} BG_AUTH_TARGET;
+typedef enum __WIDL_bits1_5_generated_name_00000012 {
+ BG_AUTH_SCHEME_BASIC = 1,
+ BG_AUTH_SCHEME_DIGEST = 2,
+ BG_AUTH_SCHEME_NTLM = 3,
+ BG_AUTH_SCHEME_NEGOTIATE = 4,
+ BG_AUTH_SCHEME_PASSPORT = 5
+} BG_AUTH_SCHEME;
+typedef struct __WIDL_bits1_5_generated_name_00000013 {
LPWSTR UserName;
LPWSTR Password;
- } BG_BASIC_CREDENTIALS;
-
- typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
-
- typedef union __MIDL_IBackgroundCopyJob2_0004 {
+} BG_BASIC_CREDENTIALS;
+typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS;
+typedef union __WIDL_bits1_5_generated_name_00000014 {
BG_BASIC_CREDENTIALS Basic;
- } BG_AUTH_CREDENTIALS_UNION;
-
- typedef struct __MIDL_IBackgroundCopyJob2_0005 {
+} BG_AUTH_CREDENTIALS_UNION;
+typedef struct __WIDL_bits1_5_generated_name_00000015 {
BG_AUTH_TARGET Target;
BG_AUTH_SCHEME Scheme;
BG_AUTH_CREDENTIALS_UNION Credentials;
- } BG_AUTH_CREDENTIALS;
+} BG_AUTH_CREDENTIALS;
+typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
+DEFINE_GUID(IID_IBackgroundCopyJob2, 0x54b50739, 0x686f, 0x45eb, 0x9d,0xff, 0xd6,0xa9,0xa0,0xfa,0xa9,0xaf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("54b50739-686f-45eb-9dff-d6a9a0faa9af")
+IBackgroundCopyJob2 : public IBackgroundCopyJob
+{
+ virtual HRESULT STDMETHODCALLTYPE SetNotifyCmdLine(
+ LPCWSTR prog,
+ LPCWSTR params) = 0;
- typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS;
+ virtual HRESULT STDMETHODCALLTYPE GetNotifyCmdLine(
+ LPWSTR *prog,
+ LPWSTR *params) = 0;
- EXTERN_C const IID IID_IBackgroundCopyJob2;
-#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyJob2 : public IBackgroundCopyJob {
- public:
- virtual HRESULT WINAPI SetNotifyCmdLine(LPCWSTR Program,LPCWSTR Parameters) = 0;
- virtual HRESULT WINAPI GetNotifyCmdLine(LPWSTR *pProgram,LPWSTR *pParameters) = 0;
- virtual HRESULT WINAPI GetReplyProgress(BG_JOB_REPLY_PROGRESS *pProgress) = 0;
- virtual HRESULT WINAPI GetReplyData(byte **ppBuffer,UINT64 *pLength) = 0;
- virtual HRESULT WINAPI SetReplyFileName(LPCWSTR ReplyFileName) = 0;
- virtual HRESULT WINAPI GetReplyFileName(LPWSTR *pReplyFileName) = 0;
- virtual HRESULT WINAPI SetCredentials(BG_AUTH_CREDENTIALS *credentials) = 0;
- virtual HRESULT WINAPI RemoveCredentials(BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme) = 0;
- };
+ virtual HRESULT STDMETHODCALLTYPE GetReplyProgress(
+ BG_JOB_REPLY_PROGRESS *progress) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetReplyData(
+ byte **pBuffer,
+ UINT64 *pLength) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetReplyFileName(
+ LPCWSTR filename) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetReplyFileName(
+ LPWSTR *pFilename) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCredentials(
+ BG_AUTH_CREDENTIALS *cred) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveCredentials(
+ BG_AUTH_TARGET target,
+ BG_AUTH_SCHEME scheme) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob2, 0x54b50739, 0x686f, 0x45eb, 0x9d,0xff, 0xd6,0xa9,0xa0,0xfa,0xa9,0xaf)
+#endif
#else
- typedef struct IBackgroundCopyJob2Vtbl {
+typedef struct IBackgroundCopyJob2Vtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob2 *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyJob2 *This);
- ULONG (WINAPI *Release)(IBackgroundCopyJob2 *This);
- HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob2 *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
- HRESULT (WINAPI *AddFile)(IBackgroundCopyJob2 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
- HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob2 *This,IEnumBackgroundCopyFiles **pEnum);
- HRESULT (WINAPI *Suspend)(IBackgroundCopyJob2 *This);
- HRESULT (WINAPI *Resume)(IBackgroundCopyJob2 *This);
- HRESULT (WINAPI *Cancel)(IBackgroundCopyJob2 *This);
- HRESULT (WINAPI *Complete)(IBackgroundCopyJob2 *This);
- HRESULT (WINAPI *GetId)(IBackgroundCopyJob2 *This,GUID *pVal);
- HRESULT (WINAPI *GetType)(IBackgroundCopyJob2 *This,BG_JOB_TYPE *pVal);
- HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob2 *This,BG_JOB_PROGRESS *pVal);
- HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob2 *This,BG_JOB_TIMES *pVal);
- HRESULT (WINAPI *GetState)(IBackgroundCopyJob2 *This,BG_JOB_STATE *pVal);
- HRESULT (WINAPI *GetError)(IBackgroundCopyJob2 *This,IBackgroundCopyError **ppError);
- HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob2 *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob2 *This,LPCWSTR Val);
- HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob2 *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob2 *This,LPCWSTR Val);
- HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob2 *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob2 *This,BG_JOB_PRIORITY Val);
- HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob2 *This,BG_JOB_PRIORITY *pVal);
- HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob2 *This,ULONG Val);
- HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob2 *This,ULONG *pVal);
- HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob2 *This,IUnknown *Val);
- HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob2 *This,IUnknown **pVal);
- HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob2 *This,ULONG Seconds);
- HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob2 *This,ULONG *Seconds);
- HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob2 *This,ULONG Seconds);
- HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob2 *This,ULONG *Seconds);
- HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob2 *This,ULONG *Errors);
- HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob2 *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
- HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob2 *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
- HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob2 *This);
- HRESULT (WINAPI *SetNotifyCmdLine)(IBackgroundCopyJob2 *This,LPCWSTR Program,LPCWSTR Parameters);
- HRESULT (WINAPI *GetNotifyCmdLine)(IBackgroundCopyJob2 *This,LPWSTR *pProgram,LPWSTR *pParameters);
- HRESULT (WINAPI *GetReplyProgress)(IBackgroundCopyJob2 *This,BG_JOB_REPLY_PROGRESS *pProgress);
- HRESULT (WINAPI *GetReplyData)(IBackgroundCopyJob2 *This,byte **ppBuffer,UINT64 *pLength);
- HRESULT (WINAPI *SetReplyFileName)(IBackgroundCopyJob2 *This,LPCWSTR ReplyFileName);
- HRESULT (WINAPI *GetReplyFileName)(IBackgroundCopyJob2 *This,LPWSTR *pReplyFileName);
- HRESULT (WINAPI *SetCredentials)(IBackgroundCopyJob2 *This,BG_AUTH_CREDENTIALS *credentials);
- HRESULT (WINAPI *RemoveCredentials)(IBackgroundCopyJob2 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyJob2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyJob2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyJob2 *This);
+
+ /*** IBackgroundCopyJob methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+ IBackgroundCopyJob2 *This,
+ ULONG cFileCount,
+ BG_FILE_INFO *pFileSet);
+
+ HRESULT (STDMETHODCALLTYPE *AddFile)(
+ IBackgroundCopyJob2 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName);
+
+ HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+ IBackgroundCopyJob2 *This,
+ IEnumBackgroundCopyFiles **pEnum);
+
+ HRESULT (STDMETHODCALLTYPE *Suspend)(
+ IBackgroundCopyJob2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Resume)(
+ IBackgroundCopyJob2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Cancel)(
+ IBackgroundCopyJob2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Complete)(
+ IBackgroundCopyJob2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetId)(
+ IBackgroundCopyJob2 *This,
+ GUID *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetType)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_TYPE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_PROGRESS *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetTimes)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_TIMES *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetState)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_STATE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetError)(
+ IBackgroundCopyJob2 *This,
+ IBackgroundCopyError **ppError);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwner)(
+ IBackgroundCopyJob2 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+ IBackgroundCopyJob2 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+ IBackgroundCopyJob2 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDescription)(
+ IBackgroundCopyJob2 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDescription)(
+ IBackgroundCopyJob2 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetPriority)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_PRIORITY Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetPriority)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_PRIORITY *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+ IBackgroundCopyJob2 *This,
+ ULONG Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+ IBackgroundCopyJob2 *This,
+ ULONG *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+ IBackgroundCopyJob2 *This,
+ IUnknown *Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+ IBackgroundCopyJob2 *This,
+ IUnknown **pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+ IBackgroundCopyJob2 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+ IBackgroundCopyJob2 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+ IBackgroundCopyJob2 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+ IBackgroundCopyJob2 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+ IBackgroundCopyJob2 *This,
+ ULONG *Errors);
+
+ HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_PROXY_USAGE ProxyUsage,
+ const WCHAR *ProxyList,
+ const WCHAR *ProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_PROXY_USAGE *pProxyUsage,
+ LPWSTR *pProxyList,
+ LPWSTR *pProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+ IBackgroundCopyJob2 *This);
+
+ /*** IBackgroundCopyJob2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+ IBackgroundCopyJob2 *This,
+ LPCWSTR prog,
+ LPCWSTR params);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+ IBackgroundCopyJob2 *This,
+ LPWSTR *prog,
+ LPWSTR *params);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+ IBackgroundCopyJob2 *This,
+ BG_JOB_REPLY_PROGRESS *progress);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+ IBackgroundCopyJob2 *This,
+ byte **pBuffer,
+ UINT64 *pLength);
+
+ HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+ IBackgroundCopyJob2 *This,
+ LPCWSTR filename);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+ IBackgroundCopyJob2 *This,
+ LPWSTR *pFilename);
+
+ HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+ IBackgroundCopyJob2 *This,
+ BG_AUTH_CREDENTIALS *cred);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+ IBackgroundCopyJob2 *This,
+ BG_AUTH_TARGET target,
+ BG_AUTH_SCHEME scheme);
+
END_INTERFACE
- } IBackgroundCopyJob2Vtbl;
- struct IBackgroundCopyJob2 {
- CONST_VTBL struct IBackgroundCopyJob2Vtbl *lpVtbl;
- };
+} IBackgroundCopyJob2Vtbl;
+
+interface IBackgroundCopyJob2 {
+ CONST_VTBL IBackgroundCopyJob2Vtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IBackgroundCopyJob2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBackgroundCopyJob2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBackgroundCopyJob2_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
#define IBackgroundCopyJob2_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
#define IBackgroundCopyJob2_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
#define IBackgroundCopyJob2_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
@@ -189,49 +344,199 @@ extern "C"{
#define IBackgroundCopyJob2_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
#define IBackgroundCopyJob2_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
#define IBackgroundCopyJob2_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
-#define IBackgroundCopyJob2_SetNotifyCmdLine(This,Program,Parameters) (This)->lpVtbl->SetNotifyCmdLine(This,Program,Parameters)
-#define IBackgroundCopyJob2_GetNotifyCmdLine(This,pProgram,pParameters) (This)->lpVtbl->GetNotifyCmdLine(This,pProgram,pParameters)
-#define IBackgroundCopyJob2_GetReplyProgress(This,pProgress) (This)->lpVtbl->GetReplyProgress(This,pProgress)
-#define IBackgroundCopyJob2_GetReplyData(This,ppBuffer,pLength) (This)->lpVtbl->GetReplyData(This,ppBuffer,pLength)
-#define IBackgroundCopyJob2_SetReplyFileName(This,ReplyFileName) (This)->lpVtbl->SetReplyFileName(This,ReplyFileName)
-#define IBackgroundCopyJob2_GetReplyFileName(This,pReplyFileName) (This)->lpVtbl->GetReplyFileName(This,pReplyFileName)
-#define IBackgroundCopyJob2_SetCredentials(This,credentials) (This)->lpVtbl->SetCredentials(This,credentials)
-#define IBackgroundCopyJob2_RemoveCredentials(This,Target,Scheme) (This)->lpVtbl->RemoveCredentials(This,Target,Scheme)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob2_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob2_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob2_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob2_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob2_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob2_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob2_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob2_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob2_QueryInterface(IBackgroundCopyJob2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob2_AddRef(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob2_Release(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob2_AddFileSet(IBackgroundCopyJob2* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+ return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_AddFile(IBackgroundCopyJob2* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+ return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_EnumFiles(IBackgroundCopyJob2* This,IEnumBackgroundCopyFiles **pEnum) {
+ return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Suspend(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Resume(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Cancel(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_Complete(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetId(IBackgroundCopyJob2* This,GUID *pVal) {
+ return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetType(IBackgroundCopyJob2* This,BG_JOB_TYPE *pVal) {
+ return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetProgress(IBackgroundCopyJob2* This,BG_JOB_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetTimes(IBackgroundCopyJob2* This,BG_JOB_TIMES *pVal) {
+ return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetState(IBackgroundCopyJob2* This,BG_JOB_STATE *pVal) {
+ return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetError(IBackgroundCopyJob2* This,IBackgroundCopyError **ppError) {
+ return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetOwner(IBackgroundCopyJob2* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetDisplayName(IBackgroundCopyJob2* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetDisplayName(IBackgroundCopyJob2* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetDescription(IBackgroundCopyJob2* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetDescription(IBackgroundCopyJob2* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetPriority(IBackgroundCopyJob2* This,BG_JOB_PRIORITY Val) {
+ return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetPriority(IBackgroundCopyJob2* This,BG_JOB_PRIORITY *pVal) {
+ return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNotifyFlags(IBackgroundCopyJob2* This,ULONG Val) {
+ return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNotifyFlags(IBackgroundCopyJob2* This,ULONG *pVal) {
+ return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNotifyInterface(IBackgroundCopyJob2* This,IUnknown *Val) {
+ return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNotifyInterface(IBackgroundCopyJob2* This,IUnknown **pVal) {
+ return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetMinimumRetryDelay(IBackgroundCopyJob2* This,ULONG Seconds) {
+ return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetMinimumRetryDelay(IBackgroundCopyJob2* This,ULONG *Seconds) {
+ return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNoProgressTimeout(IBackgroundCopyJob2* This,ULONG Seconds) {
+ return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNoProgressTimeout(IBackgroundCopyJob2* This,ULONG *Seconds) {
+ return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetErrorCount(IBackgroundCopyJob2* This,ULONG *Errors) {
+ return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetProxySettings(IBackgroundCopyJob2* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+ return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetProxySettings(IBackgroundCopyJob2* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+ return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_TakeOwnership(IBackgroundCopyJob2* This) {
+ return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetNotifyCmdLine(IBackgroundCopyJob2* This,LPCWSTR prog,LPCWSTR params) {
+ return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetNotifyCmdLine(IBackgroundCopyJob2* This,LPWSTR *prog,LPWSTR *params) {
+ return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetReplyProgress(IBackgroundCopyJob2* This,BG_JOB_REPLY_PROGRESS *progress) {
+ return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetReplyData(IBackgroundCopyJob2* This,byte **pBuffer,UINT64 *pLength) {
+ return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetReplyFileName(IBackgroundCopyJob2* This,LPCWSTR filename) {
+ return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_GetReplyFileName(IBackgroundCopyJob2* This,LPWSTR *pFilename) {
+ return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_SetCredentials(IBackgroundCopyJob2* This,BG_AUTH_CREDENTIALS *cred) {
+ return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob2_RemoveCredentials(IBackgroundCopyJob2* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+ return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyJob2_SetNotifyCmdLine_Proxy(IBackgroundCopyJob2 *This,LPCWSTR Program,LPCWSTR Parameters);
- void __RPC_STUB IBackgroundCopyJob2_SetNotifyCmdLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_GetNotifyCmdLine_Proxy(IBackgroundCopyJob2 *This,LPWSTR *pProgram,LPWSTR *pParameters);
- void __RPC_STUB IBackgroundCopyJob2_GetNotifyCmdLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_GetReplyProgress_Proxy(IBackgroundCopyJob2 *This,BG_JOB_REPLY_PROGRESS *pProgress);
- void __RPC_STUB IBackgroundCopyJob2_GetReplyProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_GetReplyData_Proxy(IBackgroundCopyJob2 *This,byte **ppBuffer,UINT64 *pLength);
- void __RPC_STUB IBackgroundCopyJob2_GetReplyData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_SetReplyFileName_Proxy(IBackgroundCopyJob2 *This,LPCWSTR ReplyFileName);
- void __RPC_STUB IBackgroundCopyJob2_SetReplyFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_GetReplyFileName_Proxy(IBackgroundCopyJob2 *This,LPWSTR *pReplyFileName);
- void __RPC_STUB IBackgroundCopyJob2_GetReplyFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_SetCredentials_Proxy(IBackgroundCopyJob2 *This,BG_AUTH_CREDENTIALS *credentials);
- void __RPC_STUB IBackgroundCopyJob2_SetCredentials_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob2_RemoveCredentials_Proxy(IBackgroundCopyJob2 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme);
- void __RPC_STUB IBackgroundCopyJob2_RemoveCredentials_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyJob2_INTERFACE_DEFINED__ */
+
#ifndef __BackgroundCopyManager1_5_LIBRARY_DEFINED__
#define __BackgroundCopyManager1_5_LIBRARY_DEFINED__
- EXTERN_C const IID LIBID_BackgroundCopyManager1_5;
- EXTERN_C const CLSID CLSID_BackgroundCopyManager1_5;
+
+DEFINE_GUID(LIBID_BackgroundCopyManager1_5, 0xea9319ea, 0xc628, 0x480f, 0x83,0x31, 0x76,0x8f,0xac,0x39,0x7e,0x4e);
+
+/*****************************************************************************
+ * BackgroundCopyManager1_5 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager1_5, 0xf087771f, 0xd74f, 0x4c1a, 0xbb,0x8a, 0xe1,0x6a,0xca,0x91,0x24,0xea);
+
#ifdef __cplusplus
- class BackgroundCopyManager1_5;
+class DECLSPEC_UUID("f087771f-d74f-4c1a-bb8a-e16aca9124ea") BackgroundCopyManager1_5;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager1_5, 0xf087771f, 0xd74f, 0x4c1a, 0xbb,0x8a, 0xe1,0x6a,0xca,0x91,0x24,0xea)
+#endif
#endif
+
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
#endif
+#ifndef __IBackgroundCopyJob2_FWD_DEFINED__
+#define __IBackgroundCopyJob2_FWD_DEFINED__
+typedef interface IBackgroundCopyJob2 IBackgroundCopyJob2;
+#ifdef __cplusplus
+interface IBackgroundCopyJob2;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager1_5_LIBRARY_DEFINED__ */
#include "bits2_0.h"
+/* Begin additional prototypes for all interfaces */
+
- extern RPC_IF_HANDLE __MIDL_itf_bits1_5_0124_v0_0_c_ifspec;
- extern RPC_IF_HANDLE __MIDL_itf_bits1_5_0124_v0_0_s_ifspec;
+/* End additional prototypes */
#ifdef __cplusplus
}
#endif
-#endif
+
+#endif /* __bits1_5_h__ */
diff --git a/lib/libc/include/any-windows-any/bits2_0.h b/lib/libc/include/any-windows-any/bits2_0.h
index a9364cf85b..21e851338c 100644
--- a/lib/libc/include/any-windows-any/bits2_0.h
+++ b/lib/libc/include/any-windows-any/bits2_0.h
@@ -1,34 +1,37 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
+/*** Autogenerated by WIDL 7.0 from include/bits2_0.idl - Do not edit ***/
+
+#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
+#include <rpc.h>
+#include <rpcndr.h>
#endif
#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
+#include <windows.h>
+#include <ole2.h>
#endif
#ifndef __bits2_0_h__
#define __bits2_0_h__
+
+/* Forward declarations */
+
#ifndef __IBackgroundCopyJob3_FWD_DEFINED__
#define __IBackgroundCopyJob3_FWD_DEFINED__
-typedef struct IBackgroundCopyJob3 IBackgroundCopyJob3;
+typedef interface IBackgroundCopyJob3 IBackgroundCopyJob3;
+#ifdef __cplusplus
+interface IBackgroundCopyJob3;
+#endif /* __cplusplus */
#endif
#ifndef __IBackgroundCopyFile2_FWD_DEFINED__
#define __IBackgroundCopyFile2_FWD_DEFINED__
-typedef struct IBackgroundCopyFile2 IBackgroundCopyFile2;
+typedef interface IBackgroundCopyFile2 IBackgroundCopyFile2;
+#ifdef __cplusplus
+interface IBackgroundCopyFile2;
+#endif /* __cplusplus */
#endif
#ifndef __BackgroundCopyManager2_0_FWD_DEFINED__
@@ -37,220 +40,648 @@ typedef struct IBackgroundCopyFile2 IBackgroundCopyFile2;
typedef class BackgroundCopyManager2_0 BackgroundCopyManager2_0;
#else
typedef struct BackgroundCopyManager2_0 BackgroundCopyManager2_0;
-#endif
-#endif
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager2_0_FWD_DEFINED__ */
-#ifndef __IBackgroundCopyJob3_FWD_DEFINED__
-#define __IBackgroundCopyJob3_FWD_DEFINED__
-typedef struct IBackgroundCopyJob3 IBackgroundCopyJob3;
-#endif
+/* Headers for imported files */
-#include "bits.h"
-#include "bits1_5.h"
+#include <bits.h>
+#include <bits1_5.h>
#ifdef __cplusplus
-extern "C"{
-#endif
-
-#ifndef __MIDL_user_allocate_free_DEFINED__
-#define __MIDL_user_allocate_free_DEFINED__
- void *__RPC_API MIDL_user_allocate(size_t);
- void __RPC_API MIDL_user_free(void *);
+extern "C" {
#endif
+#define BG_COPY_FILE_OWNER 1
+#define BG_COPY_FILE_GROUP 2
+#define BG_COPY_FILE_DACL 4
+#define BG_COPY_FILE_SACL 8
+#define BG_COPY_FILE_ALL 15
#define BG_LENGTH_TO_EOF (UINT64)(-1)
- typedef struct _BG_FILE_RANGE {
+#ifndef _BG_FILE_RANGE_DEFINED
+#define _BG_FILE_RANGE_DEFINED
+typedef struct _BG_FILE_RANGE {
UINT64 InitialOffset;
UINT64 Length;
- } BG_FILE_RANGE;
-
-#define BG_COPY_FILE_OWNER 1
-#define BG_COPY_FILE_GROUP 2
-#define BG_COPY_FILE_DACL 4
-#define BG_COPY_FILE_SACL 8
-#define BG_COPY_FILE_ALL 15
-
- extern RPC_IF_HANDLE __MIDL_itf_bits2_0_0000_v0_0_c_ifspec;
- extern RPC_IF_HANDLE __MIDL_itf_bits2_0_0000_v0_0_s_ifspec;
-
+} BG_FILE_RANGE;
+#endif
+/*****************************************************************************
+ * IBackgroundCopyJob3 interface
+ */
#ifndef __IBackgroundCopyJob3_INTERFACE_DEFINED__
#define __IBackgroundCopyJob3_INTERFACE_DEFINED__
- EXTERN_C const IID IID_IBackgroundCopyJob3;
+
+DEFINE_GUID(IID_IBackgroundCopyJob3, 0x443c8934, 0x90ff, 0x48ed, 0xbc,0xde, 0x26,0xf5,0xc7,0x45,0x00,0x42);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyJob3 : public IBackgroundCopyJob2 {
- public:
- virtual HRESULT WINAPI ReplaceRemotePrefix(LPCWSTR OldPrefix,LPCWSTR NewPrefix) = 0;
- virtual HRESULT WINAPI AddFileWithRanges(LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) = 0;
- virtual HRESULT WINAPI SetFileACLFlags(DWORD Flags) = 0;
- virtual HRESULT WINAPI GetFileACLFlags(DWORD *Flags) = 0;
- };
+MIDL_INTERFACE("443c8934-90ff-48ed-bcde-26f5c7450042")
+IBackgroundCopyJob3 : public IBackgroundCopyJob2
+{
+ virtual HRESULT STDMETHODCALLTYPE ReplaceRemotePrefix(
+ LPCWSTR OldPrefix,
+ LPCWSTR NewPrefix) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddFileWithRanges(
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName,
+ DWORD RangeCount,
+ BG_FILE_RANGE Ranges[]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFileACLFlags(
+ DWORD Flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFileACLFlags(
+ DWORD *Flags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob3, 0x443c8934, 0x90ff, 0x48ed, 0xbc,0xde, 0x26,0xf5,0xc7,0x45,0x00,0x42)
+#endif
#else
- typedef struct IBackgroundCopyJob3Vtbl {
+typedef struct IBackgroundCopyJob3Vtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob3 *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyJob3 *This);
- ULONG (WINAPI *Release)(IBackgroundCopyJob3 *This);
- HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob3 *This,ULONG cFileCount,BG_FILE_INFO *pFileSet);
- HRESULT (WINAPI *AddFile)(IBackgroundCopyJob3 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName);
- HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob3 *This,IEnumBackgroundCopyFiles **pEnum);
- HRESULT (WINAPI *Suspend)(IBackgroundCopyJob3 *This);
- HRESULT (WINAPI *Resume)(IBackgroundCopyJob3 *This);
- HRESULT (WINAPI *Cancel)(IBackgroundCopyJob3 *This);
- HRESULT (WINAPI *Complete)(IBackgroundCopyJob3 *This);
- HRESULT (WINAPI *GetId)(IBackgroundCopyJob3 *This,GUID *pVal);
- HRESULT (WINAPI *GetType)(IBackgroundCopyJob3 *This,BG_JOB_TYPE *pVal);
- HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob3 *This,BG_JOB_PROGRESS *pVal);
- HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob3 *This,BG_JOB_TIMES *pVal);
- HRESULT (WINAPI *GetState)(IBackgroundCopyJob3 *This,BG_JOB_STATE *pVal);
- HRESULT (WINAPI *GetError)(IBackgroundCopyJob3 *This,IBackgroundCopyError **ppError);
- HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob3 *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob3 *This,LPCWSTR Val);
- HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob3 *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob3 *This,LPCWSTR Val);
- HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob3 *This,LPWSTR *pVal);
- HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob3 *This,BG_JOB_PRIORITY Val);
- HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob3 *This,BG_JOB_PRIORITY *pVal);
- HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob3 *This,ULONG Val);
- HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob3 *This,ULONG *pVal);
- HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob3 *This,IUnknown *Val);
- HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob3 *This,IUnknown **pVal);
- HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob3 *This,ULONG Seconds);
- HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob3 *This,ULONG *Seconds);
- HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob3 *This,ULONG Seconds);
- HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob3 *This,ULONG *Seconds);
- HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob3 *This,ULONG *Errors);
- HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob3 *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList);
- HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob3 *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList);
- HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob3 *This);
- HRESULT (WINAPI *SetNotifyCmdLine)(IBackgroundCopyJob3 *This,LPCWSTR Program,LPCWSTR Parameters);
- HRESULT (WINAPI *GetNotifyCmdLine)(IBackgroundCopyJob3 *This,LPWSTR *pProgram,LPWSTR *pParameters);
- HRESULT (WINAPI *GetReplyProgress)(IBackgroundCopyJob3 *This,BG_JOB_REPLY_PROGRESS *pProgress);
- HRESULT (WINAPI *GetReplyData)(IBackgroundCopyJob3 *This,byte **ppBuffer,UINT64 *pLength);
- HRESULT (WINAPI *SetReplyFileName)(IBackgroundCopyJob3 *This,LPCWSTR ReplyFileName);
- HRESULT (WINAPI *GetReplyFileName)(IBackgroundCopyJob3 *This,LPWSTR *pReplyFileName);
- HRESULT (WINAPI *SetCredentials)(IBackgroundCopyJob3 *This,BG_AUTH_CREDENTIALS *credentials);
- HRESULT (WINAPI *RemoveCredentials)(IBackgroundCopyJob3 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme);
- HRESULT (WINAPI *ReplaceRemotePrefix)(IBackgroundCopyJob3 *This,LPCWSTR OldPrefix,LPCWSTR NewPrefix);
- HRESULT (WINAPI *AddFileWithRanges)(IBackgroundCopyJob3 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]);
- HRESULT (WINAPI *SetFileACLFlags)(IBackgroundCopyJob3 *This,DWORD Flags);
- HRESULT (WINAPI *GetFileACLFlags)(IBackgroundCopyJob3 *This,DWORD *Flags);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyJob3 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyJob3 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyJob3 *This);
+
+ /*** IBackgroundCopyJob methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+ IBackgroundCopyJob3 *This,
+ ULONG cFileCount,
+ BG_FILE_INFO *pFileSet);
+
+ HRESULT (STDMETHODCALLTYPE *AddFile)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName);
+
+ HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+ IBackgroundCopyJob3 *This,
+ IEnumBackgroundCopyFiles **pEnum);
+
+ HRESULT (STDMETHODCALLTYPE *Suspend)(
+ IBackgroundCopyJob3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Resume)(
+ IBackgroundCopyJob3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Cancel)(
+ IBackgroundCopyJob3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Complete)(
+ IBackgroundCopyJob3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetId)(
+ IBackgroundCopyJob3 *This,
+ GUID *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetType)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_TYPE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_PROGRESS *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetTimes)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_TIMES *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetState)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_STATE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetError)(
+ IBackgroundCopyJob3 *This,
+ IBackgroundCopyError **ppError);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwner)(
+ IBackgroundCopyJob3 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+ IBackgroundCopyJob3 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDescription)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDescription)(
+ IBackgroundCopyJob3 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetPriority)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_PRIORITY Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetPriority)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_PRIORITY *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+ IBackgroundCopyJob3 *This,
+ ULONG Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+ IBackgroundCopyJob3 *This,
+ ULONG *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+ IBackgroundCopyJob3 *This,
+ IUnknown *Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+ IBackgroundCopyJob3 *This,
+ IUnknown **pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+ IBackgroundCopyJob3 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+ IBackgroundCopyJob3 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+ IBackgroundCopyJob3 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+ IBackgroundCopyJob3 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+ IBackgroundCopyJob3 *This,
+ ULONG *Errors);
+
+ HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_PROXY_USAGE ProxyUsage,
+ const WCHAR *ProxyList,
+ const WCHAR *ProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_PROXY_USAGE *pProxyUsage,
+ LPWSTR *pProxyList,
+ LPWSTR *pProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+ IBackgroundCopyJob3 *This);
+
+ /*** IBackgroundCopyJob2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR prog,
+ LPCWSTR params);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+ IBackgroundCopyJob3 *This,
+ LPWSTR *prog,
+ LPWSTR *params);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+ IBackgroundCopyJob3 *This,
+ BG_JOB_REPLY_PROGRESS *progress);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+ IBackgroundCopyJob3 *This,
+ byte **pBuffer,
+ UINT64 *pLength);
+
+ HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR filename);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+ IBackgroundCopyJob3 *This,
+ LPWSTR *pFilename);
+
+ HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+ IBackgroundCopyJob3 *This,
+ BG_AUTH_CREDENTIALS *cred);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+ IBackgroundCopyJob3 *This,
+ BG_AUTH_TARGET target,
+ BG_AUTH_SCHEME scheme);
+
+ /*** IBackgroundCopyJob3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *ReplaceRemotePrefix)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR OldPrefix,
+ LPCWSTR NewPrefix);
+
+ HRESULT (STDMETHODCALLTYPE *AddFileWithRanges)(
+ IBackgroundCopyJob3 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName,
+ DWORD RangeCount,
+ BG_FILE_RANGE Ranges[]);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileACLFlags)(
+ IBackgroundCopyJob3 *This,
+ DWORD Flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileACLFlags)(
+ IBackgroundCopyJob3 *This,
+ DWORD *Flags);
+
END_INTERFACE
- } IBackgroundCopyJob3Vtbl;
- struct IBackgroundCopyJob3 {
- CONST_VTBL struct IBackgroundCopyJob3Vtbl *lpVtbl;
- };
+} IBackgroundCopyJob3Vtbl;
+
+interface IBackgroundCopyJob3 {
+ CONST_VTBL IBackgroundCopyJob3Vtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
-#define IBackgroundCopyJob3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IBackgroundCopyJob3_AddRef(This) (This)->lpVtbl -> AddRef(This)
-#define IBackgroundCopyJob3_Release(This) (This)->lpVtbl -> Release(This)
-#define IBackgroundCopyJob3_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl -> AddFileSet(This,cFileCount,pFileSet)
-#define IBackgroundCopyJob3_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl -> AddFile(This,RemoteUrl,LocalName)
-#define IBackgroundCopyJob3_EnumFiles(This,pEnum) (This)->lpVtbl -> EnumFiles(This,pEnum)
-#define IBackgroundCopyJob3_Suspend(This) (This)->lpVtbl -> Suspend(This)
-#define IBackgroundCopyJob3_Resume(This) (This)->lpVtbl -> Resume(This)
-#define IBackgroundCopyJob3_Cancel(This) (This)->lpVtbl -> Cancel(This)
-#define IBackgroundCopyJob3_Complete(This) (This)->lpVtbl -> Complete(This)
-#define IBackgroundCopyJob3_GetId(This,pVal) (This)->lpVtbl -> GetId(This,pVal)
-#define IBackgroundCopyJob3_GetType(This,pVal) (This)->lpVtbl -> GetType(This,pVal)
-#define IBackgroundCopyJob3_GetProgress(This,pVal) (This)->lpVtbl -> GetProgress(This,pVal)
-#define IBackgroundCopyJob3_GetTimes(This,pVal) (This)->lpVtbl -> GetTimes(This,pVal)
-#define IBackgroundCopyJob3_GetState(This,pVal) (This)->lpVtbl -> GetState(This,pVal)
-#define IBackgroundCopyJob3_GetError(This,ppError) (This)->lpVtbl -> GetError(This,ppError)
-#define IBackgroundCopyJob3_GetOwner(This,pVal) (This)->lpVtbl -> GetOwner(This,pVal)
-#define IBackgroundCopyJob3_SetDisplayName(This,Val) (This)->lpVtbl -> SetDisplayName(This,Val)
-#define IBackgroundCopyJob3_GetDisplayName(This,pVal) (This)->lpVtbl -> GetDisplayName(This,pVal)
-#define IBackgroundCopyJob3_SetDescription(This,Val) (This)->lpVtbl -> SetDescription(This,Val)
-#define IBackgroundCopyJob3_GetDescription(This,pVal) (This)->lpVtbl -> GetDescription(This,pVal)
-#define IBackgroundCopyJob3_SetPriority(This,Val) (This)->lpVtbl -> SetPriority(This,Val)
-#define IBackgroundCopyJob3_GetPriority(This,pVal) (This)->lpVtbl -> GetPriority(This,pVal)
-#define IBackgroundCopyJob3_SetNotifyFlags(This,Val) (This)->lpVtbl -> SetNotifyFlags(This,Val)
-#define IBackgroundCopyJob3_GetNotifyFlags(This,pVal) (This)->lpVtbl -> GetNotifyFlags(This,pVal)
-#define IBackgroundCopyJob3_SetNotifyInterface(This,Val) (This)->lpVtbl -> SetNotifyInterface(This,Val)
-#define IBackgroundCopyJob3_GetNotifyInterface(This,pVal) (This)->lpVtbl -> GetNotifyInterface(This,pVal)
-#define IBackgroundCopyJob3_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl -> SetMinimumRetryDelay(This,Seconds)
-#define IBackgroundCopyJob3_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl -> GetMinimumRetryDelay(This,Seconds)
-#define IBackgroundCopyJob3_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl -> SetNoProgressTimeout(This,Seconds)
-#define IBackgroundCopyJob3_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl -> GetNoProgressTimeout(This,Seconds)
-#define IBackgroundCopyJob3_GetErrorCount(This,Errors) (This)->lpVtbl -> GetErrorCount(This,Errors)
-#define IBackgroundCopyJob3_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl -> SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
-#define IBackgroundCopyJob3_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl -> GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
-#define IBackgroundCopyJob3_TakeOwnership(This) (This)->lpVtbl -> TakeOwnership(This)
-#define IBackgroundCopyJob3_SetNotifyCmdLine(This,Program,Parameters) (This)->lpVtbl -> SetNotifyCmdLine(This,Program,Parameters)
-#define IBackgroundCopyJob3_GetNotifyCmdLine(This,pProgram,pParameters) (This)->lpVtbl -> GetNotifyCmdLine(This,pProgram,pParameters)
-#define IBackgroundCopyJob3_GetReplyProgress(This,pProgress) (This)->lpVtbl -> GetReplyProgress(This,pProgress)
-#define IBackgroundCopyJob3_GetReplyData(This,ppBuffer,pLength) (This)->lpVtbl -> GetReplyData(This,ppBuffer,pLength)
-#define IBackgroundCopyJob3_SetReplyFileName(This,ReplyFileName) (This)->lpVtbl -> SetReplyFileName(This,ReplyFileName)
-#define IBackgroundCopyJob3_GetReplyFileName(This,pReplyFileName) (This)->lpVtbl -> GetReplyFileName(This,pReplyFileName)
-#define IBackgroundCopyJob3_SetCredentials(This,credentials) (This)->lpVtbl -> SetCredentials(This,credentials)
-#define IBackgroundCopyJob3_RemoveCredentials(This,Target,Scheme) (This)->lpVtbl -> RemoveCredentials(This,Target,Scheme)
-#define IBackgroundCopyJob3_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl -> ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
-#define IBackgroundCopyJob3_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl -> AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
-#define IBackgroundCopyJob3_SetFileACLFlags(This,Flags) (This)->lpVtbl -> SetFileACLFlags(This,Flags)
-#define IBackgroundCopyJob3_GetFileACLFlags(This,Flags) (This)->lpVtbl -> GetFileACLFlags(This,Flags)
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJob3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJob3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJob3_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
+#define IBackgroundCopyJob3_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
+#define IBackgroundCopyJob3_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
+#define IBackgroundCopyJob3_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
+#define IBackgroundCopyJob3_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IBackgroundCopyJob3_Resume(This) (This)->lpVtbl->Resume(This)
+#define IBackgroundCopyJob3_Cancel(This) (This)->lpVtbl->Cancel(This)
+#define IBackgroundCopyJob3_Complete(This) (This)->lpVtbl->Complete(This)
+#define IBackgroundCopyJob3_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
+#define IBackgroundCopyJob3_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
+#define IBackgroundCopyJob3_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+#define IBackgroundCopyJob3_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
+#define IBackgroundCopyJob3_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
+#define IBackgroundCopyJob3_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
+#define IBackgroundCopyJob3_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
+#define IBackgroundCopyJob3_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
+#define IBackgroundCopyJob3_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
+#define IBackgroundCopyJob3_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
+#define IBackgroundCopyJob3_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
+#define IBackgroundCopyJob3_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
+#define IBackgroundCopyJob3_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
+#define IBackgroundCopyJob3_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
+#define IBackgroundCopyJob3_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
+#define IBackgroundCopyJob3_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
+#define IBackgroundCopyJob3_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
+#define IBackgroundCopyJob3_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob3_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob3_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob3_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob3_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
+#define IBackgroundCopyJob3_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
+#define IBackgroundCopyJob3_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
+#define IBackgroundCopyJob3_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob3_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob3_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob3_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob3_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob3_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob3_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob3_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob3_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+/*** IBackgroundCopyJob3 methods ***/
+#define IBackgroundCopyJob3_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
+#define IBackgroundCopyJob3_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
+#define IBackgroundCopyJob3_SetFileACLFlags(This,Flags) (This)->lpVtbl->SetFileACLFlags(This,Flags)
+#define IBackgroundCopyJob3_GetFileACLFlags(This,Flags) (This)->lpVtbl->GetFileACLFlags(This,Flags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob3_QueryInterface(IBackgroundCopyJob3* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob3_AddRef(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob3_Release(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob3_AddFileSet(IBackgroundCopyJob3* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+ return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_AddFile(IBackgroundCopyJob3* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+ return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_EnumFiles(IBackgroundCopyJob3* This,IEnumBackgroundCopyFiles **pEnum) {
+ return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_Suspend(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_Resume(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_Cancel(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_Complete(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetId(IBackgroundCopyJob3* This,GUID *pVal) {
+ return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetType(IBackgroundCopyJob3* This,BG_JOB_TYPE *pVal) {
+ return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetProgress(IBackgroundCopyJob3* This,BG_JOB_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetTimes(IBackgroundCopyJob3* This,BG_JOB_TIMES *pVal) {
+ return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetState(IBackgroundCopyJob3* This,BG_JOB_STATE *pVal) {
+ return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetError(IBackgroundCopyJob3* This,IBackgroundCopyError **ppError) {
+ return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetOwner(IBackgroundCopyJob3* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetDisplayName(IBackgroundCopyJob3* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetDisplayName(IBackgroundCopyJob3* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetDescription(IBackgroundCopyJob3* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetDescription(IBackgroundCopyJob3* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetPriority(IBackgroundCopyJob3* This,BG_JOB_PRIORITY Val) {
+ return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetPriority(IBackgroundCopyJob3* This,BG_JOB_PRIORITY *pVal) {
+ return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNotifyFlags(IBackgroundCopyJob3* This,ULONG Val) {
+ return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNotifyFlags(IBackgroundCopyJob3* This,ULONG *pVal) {
+ return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNotifyInterface(IBackgroundCopyJob3* This,IUnknown *Val) {
+ return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNotifyInterface(IBackgroundCopyJob3* This,IUnknown **pVal) {
+ return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetMinimumRetryDelay(IBackgroundCopyJob3* This,ULONG Seconds) {
+ return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetMinimumRetryDelay(IBackgroundCopyJob3* This,ULONG *Seconds) {
+ return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNoProgressTimeout(IBackgroundCopyJob3* This,ULONG Seconds) {
+ return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNoProgressTimeout(IBackgroundCopyJob3* This,ULONG *Seconds) {
+ return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetErrorCount(IBackgroundCopyJob3* This,ULONG *Errors) {
+ return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetProxySettings(IBackgroundCopyJob3* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+ return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetProxySettings(IBackgroundCopyJob3* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+ return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_TakeOwnership(IBackgroundCopyJob3* This) {
+ return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetNotifyCmdLine(IBackgroundCopyJob3* This,LPCWSTR prog,LPCWSTR params) {
+ return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetNotifyCmdLine(IBackgroundCopyJob3* This,LPWSTR *prog,LPWSTR *params) {
+ return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetReplyProgress(IBackgroundCopyJob3* This,BG_JOB_REPLY_PROGRESS *progress) {
+ return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetReplyData(IBackgroundCopyJob3* This,byte **pBuffer,UINT64 *pLength) {
+ return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetReplyFileName(IBackgroundCopyJob3* This,LPCWSTR filename) {
+ return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetReplyFileName(IBackgroundCopyJob3* This,LPWSTR *pFilename) {
+ return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetCredentials(IBackgroundCopyJob3* This,BG_AUTH_CREDENTIALS *cred) {
+ return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_RemoveCredentials(IBackgroundCopyJob3* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+ return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
+/*** IBackgroundCopyJob3 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob3_ReplaceRemotePrefix(IBackgroundCopyJob3* This,LPCWSTR OldPrefix,LPCWSTR NewPrefix) {
+ return This->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_AddFileWithRanges(IBackgroundCopyJob3* This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) {
+ return This->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_SetFileACLFlags(IBackgroundCopyJob3* This,DWORD Flags) {
+ return This->lpVtbl->SetFileACLFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob3_GetFileACLFlags(IBackgroundCopyJob3* This,DWORD *Flags) {
+ return This->lpVtbl->GetFileACLFlags(This,Flags);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyJob3_ReplaceRemotePrefix_Proxy(IBackgroundCopyJob3 *This,LPCWSTR OldPrefix,LPCWSTR NewPrefix);
- void __RPC_STUB IBackgroundCopyJob3_ReplaceRemotePrefix_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob3_AddFileWithRanges_Proxy(IBackgroundCopyJob3 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]);
- void __RPC_STUB IBackgroundCopyJob3_AddFileWithRanges_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob3_SetFileACLFlags_Proxy(IBackgroundCopyJob3 *This,DWORD Flags);
- void __RPC_STUB IBackgroundCopyJob3_SetFileACLFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyJob3_GetFileACLFlags_Proxy(IBackgroundCopyJob3 *This,DWORD *Flags);
- void __RPC_STUB IBackgroundCopyJob3_GetFileACLFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyJob3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyFile2 interface
+ */
#ifndef __IBackgroundCopyFile2_INTERFACE_DEFINED__
#define __IBackgroundCopyFile2_INTERFACE_DEFINED__
- EXTERN_C const IID IID_IBackgroundCopyFile2;
+
+DEFINE_GUID(IID_IBackgroundCopyFile2, 0x83e81b93, 0x0873, 0x474d, 0x8a,0x8c, 0xf2,0x01,0x8b,0x1a,0x93,0x9c);
#if defined(__cplusplus) && !defined(CINTERFACE)
- struct IBackgroundCopyFile2 : public IBackgroundCopyFile {
- public:
- virtual HRESULT WINAPI GetFileRanges(DWORD *RangeCount,BG_FILE_RANGE **Ranges) = 0;
- virtual HRESULT WINAPI SetRemoteName(LPCWSTR Val) = 0;
- };
+MIDL_INTERFACE("83e81b93-0873-474d-8a8c-f2018b1a939c")
+IBackgroundCopyFile2 : public IBackgroundCopyFile
+{
+ virtual HRESULT STDMETHODCALLTYPE GetFileRanges(
+ DWORD *RangeCount,
+ BG_FILE_RANGE **Ranges) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRemoteName(
+ LPCWSTR Val) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyFile2, 0x83e81b93, 0x0873, 0x474d, 0x8a,0x8c, 0xf2,0x01,0x8b,0x1a,0x93,0x9c)
+#endif
#else
- typedef struct IBackgroundCopyFile2Vtbl {
+typedef struct IBackgroundCopyFile2Vtbl {
BEGIN_INTERFACE
- HRESULT (WINAPI *QueryInterface)(IBackgroundCopyFile2 *This,REFIID riid,void **ppvObject);
- ULONG (WINAPI *AddRef)(IBackgroundCopyFile2 *This);
- ULONG (WINAPI *Release)(IBackgroundCopyFile2 *This);
- HRESULT (WINAPI *GetRemoteName)(IBackgroundCopyFile2 *This,LPWSTR *pVal);
- HRESULT (WINAPI *GetLocalName)(IBackgroundCopyFile2 *This,LPWSTR *pVal);
- HRESULT (WINAPI *GetProgress)(IBackgroundCopyFile2 *This,BG_FILE_PROGRESS *pVal);
- HRESULT (WINAPI *GetFileRanges)(IBackgroundCopyFile2 *This,DWORD *RangeCount,BG_FILE_RANGE **Ranges);
- HRESULT (WINAPI *SetRemoteName)(IBackgroundCopyFile2 *This,LPCWSTR Val);
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyFile2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyFile2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyFile2 *This);
+
+ /*** IBackgroundCopyFile methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetRemoteName)(
+ IBackgroundCopyFile2 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetLocalName)(
+ IBackgroundCopyFile2 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyFile2 *This,
+ BG_FILE_PROGRESS *pVal);
+
+ /*** IBackgroundCopyFile2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetFileRanges)(
+ IBackgroundCopyFile2 *This,
+ DWORD *RangeCount,
+ BG_FILE_RANGE **Ranges);
+
+ HRESULT (STDMETHODCALLTYPE *SetRemoteName)(
+ IBackgroundCopyFile2 *This,
+ LPCWSTR Val);
+
END_INTERFACE
- } IBackgroundCopyFile2Vtbl;
- struct IBackgroundCopyFile2 {
- CONST_VTBL struct IBackgroundCopyFile2Vtbl *lpVtbl;
- };
+} IBackgroundCopyFile2Vtbl;
+
+interface IBackgroundCopyFile2 {
+ CONST_VTBL IBackgroundCopyFile2Vtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
-#define IBackgroundCopyFile2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
-#define IBackgroundCopyFile2_AddRef(This) (This)->lpVtbl -> AddRef(This)
-#define IBackgroundCopyFile2_Release(This) (This)->lpVtbl -> Release(This)
-#define IBackgroundCopyFile2_GetRemoteName(This,pVal) (This)->lpVtbl -> GetRemoteName(This,pVal)
-#define IBackgroundCopyFile2_GetLocalName(This,pVal) (This)->lpVtbl -> GetLocalName(This,pVal)
-#define IBackgroundCopyFile2_GetProgress(This,pVal) (This)->lpVtbl -> GetProgress(This,pVal)
-#define IBackgroundCopyFile2_GetFileRanges(This,RangeCount,Ranges) (This)->lpVtbl -> GetFileRanges(This,RangeCount,Ranges)
-#define IBackgroundCopyFile2_SetRemoteName(This,Val) (This)->lpVtbl -> SetRemoteName(This,Val)
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyFile2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyFile2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyFile2_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyFile methods ***/
+#define IBackgroundCopyFile2_GetRemoteName(This,pVal) (This)->lpVtbl->GetRemoteName(This,pVal)
+#define IBackgroundCopyFile2_GetLocalName(This,pVal) (This)->lpVtbl->GetLocalName(This,pVal)
+#define IBackgroundCopyFile2_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+/*** IBackgroundCopyFile2 methods ***/
+#define IBackgroundCopyFile2_GetFileRanges(This,RangeCount,Ranges) (This)->lpVtbl->GetFileRanges(This,RangeCount,Ranges)
+#define IBackgroundCopyFile2_SetRemoteName(This,Val) (This)->lpVtbl->SetRemoteName(This,Val)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile2_QueryInterface(IBackgroundCopyFile2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyFile2_AddRef(IBackgroundCopyFile2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyFile2_Release(IBackgroundCopyFile2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyFile methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile2_GetRemoteName(IBackgroundCopyFile2* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetRemoteName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile2_GetLocalName(IBackgroundCopyFile2* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetLocalName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile2_GetProgress(IBackgroundCopyFile2* This,BG_FILE_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
+/*** IBackgroundCopyFile2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyFile2_GetFileRanges(IBackgroundCopyFile2* This,DWORD *RangeCount,BG_FILE_RANGE **Ranges) {
+ return This->lpVtbl->GetFileRanges(This,RangeCount,Ranges);
+}
+static FORCEINLINE HRESULT IBackgroundCopyFile2_SetRemoteName(IBackgroundCopyFile2* This,LPCWSTR Val) {
+ return This->lpVtbl->SetRemoteName(This,Val);
+}
#endif
#endif
- HRESULT WINAPI IBackgroundCopyFile2_GetFileRanges_Proxy(IBackgroundCopyFile2 *This,DWORD *RangeCount,BG_FILE_RANGE **Ranges);
- void __RPC_STUB IBackgroundCopyFile2_GetFileRanges_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI IBackgroundCopyFile2_SetRemoteName_Proxy(IBackgroundCopyFile2 *This,LPCWSTR Val);
- void __RPC_STUB IBackgroundCopyFile2_SetRemoteName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+
#endif
+
+#endif /* __IBackgroundCopyFile2_INTERFACE_DEFINED__ */
+
#ifndef __BackgroundCopyManager2_0_LIBRARY_DEFINED__
#define __BackgroundCopyManager2_0_LIBRARY_DEFINED__
- EXTERN_C const IID LIBID_BackgroundCopyManager2_0;
- EXTERN_C const CLSID CLSID_BackgroundCopyManager2_0;
+
+DEFINE_GUID(LIBID_BackgroundCopyManager2_0, 0x2289a9af, 0xdc96, 0x486e, 0xb2,0x68, 0x89,0xc9,0xe3,0x39,0x7c,0x3d);
+
+/*****************************************************************************
+ * BackgroundCopyManager2_0 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager2_0, 0x6d18ad12, 0xbde3, 0x4393, 0xb3,0x11, 0x09,0x9c,0x34,0x6e,0x6d,0xf9);
+
#ifdef __cplusplus
- class BackgroundCopyManager2_0;
+class DECLSPEC_UUID("6d18ad12-bde3-4393-b311-099c346e6df9") BackgroundCopyManager2_0;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager2_0, 0x6d18ad12, 0xbde3, 0x4393, 0xb3,0x11, 0x09,0x9c,0x34,0x6e,0x6d,0xf9)
#endif
#endif
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
#ifdef __cplusplus
-}
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyJob3_FWD_DEFINED__
+#define __IBackgroundCopyJob3_FWD_DEFINED__
+typedef interface IBackgroundCopyJob3 IBackgroundCopyJob3;
+#ifdef __cplusplus
+interface IBackgroundCopyJob3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyFile2_FWD_DEFINED__
+#define __IBackgroundCopyFile2_FWD_DEFINED__
+typedef interface IBackgroundCopyFile2 IBackgroundCopyFile2;
+#ifdef __cplusplus
+interface IBackgroundCopyFile2;
+#endif /* __cplusplus */
#endif
+
+#endif /* __BackgroundCopyManager2_0_LIBRARY_DEFINED__ */
+#include "bits2_5.h"
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
#endif
+
+#endif /* __bits2_0_h__ */
diff --git a/lib/libc/include/any-windows-any/bits2_5.h b/lib/libc/include/any-windows-any/bits2_5.h
new file mode 100644
index 0000000000..a32e20d7e8
--- /dev/null
+++ b/lib/libc/include/any-windows-any/bits2_5.h
@@ -0,0 +1,270 @@
+/*** Autogenerated by WIDL 7.0 from include/bits2_5.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __bits2_5_h__
+#define __bits2_5_h__
+
+/* Forward declarations */
+
+#ifndef __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+#define __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+typedef interface IBackgroundCopyJobHttpOptions IBackgroundCopyJobHttpOptions;
+#ifdef __cplusplus
+interface IBackgroundCopyJobHttpOptions;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __BackgroundCopyManager2_5_FWD_DEFINED__
+#define __BackgroundCopyManager2_5_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class BackgroundCopyManager2_5 BackgroundCopyManager2_5;
+#else
+typedef struct BackgroundCopyManager2_5 BackgroundCopyManager2_5;
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager2_5_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <bits.h>
+#include <bits1_5.h>
+#include <bits2_0.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IBackgroundCopyJobHttpOptions interface
+ */
+#ifndef __IBackgroundCopyJobHttpOptions_INTERFACE_DEFINED__
+#define __IBackgroundCopyJobHttpOptions_INTERFACE_DEFINED__
+
+typedef enum __WIDL_bits2_5_generated_name_00000016 {
+ BG_CERT_STORE_LOCATION_CURRENT_USER = 0,
+ BG_CERT_STORE_LOCATION_LOCAL_MACHINE = 1,
+ BG_CERT_STORE_LOCATION_CURRENT_SERVICE = 2,
+ BG_CERT_STORE_LOCATION_SERVICES = 3,
+ BG_CERT_STORE_LOCATION_USERS = 4,
+ BG_CERT_STORE_LOCATION_CURRENT_USER_GROUP_POLICY = 5,
+ BG_CERT_STORE_LOCATION_LOCAL_MACHINE_GROUP_POLICY = 6,
+ BG_CERT_STORE_LOCATION_LOCAL_MACHINE_ENTERPRISE = 7
+} BG_CERT_STORE_LOCATION;
+DEFINE_GUID(IID_IBackgroundCopyJobHttpOptions, 0xf1bd1079, 0x9f01, 0x4bdc, 0x80,0x36, 0xf0,0x9b,0x70,0x09,0x50,0x66);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f1bd1079-9f01-4bdc-8036-f09b70095066")
+IBackgroundCopyJobHttpOptions : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetClientCertificateByID(
+ BG_CERT_STORE_LOCATION StoreLocation,
+ LPCWSTR StoreName,
+ BYTE *pCertHashBlob) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClientCertificateByName(
+ BG_CERT_STORE_LOCATION StoreLocation,
+ LPCWSTR StoreName,
+ LPCWSTR SubjectName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveClientCertificate(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClientCertificate(
+ BG_CERT_STORE_LOCATION *pStoreLocation,
+ LPWSTR *pStoreName,
+ BYTE **ppCertHashBlob,
+ LPWSTR *pSubjectName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustomHeaders(
+ LPCWSTR RequestHeaders) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCustomHeaders(
+ LPWSTR *pRequestHeaders) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSecurityFlags(
+ ULONG Flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSecurityFlags(
+ ULONG *pFlags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJobHttpOptions, 0xf1bd1079, 0x9f01, 0x4bdc, 0x80,0x36, 0xf0,0x9b,0x70,0x09,0x50,0x66)
+#endif
+#else
+typedef struct IBackgroundCopyJobHttpOptionsVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyJobHttpOptions *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyJobHttpOptions *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyJobHttpOptions *This);
+
+ /*** IBackgroundCopyJobHttpOptions methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetClientCertificateByID)(
+ IBackgroundCopyJobHttpOptions *This,
+ BG_CERT_STORE_LOCATION StoreLocation,
+ LPCWSTR StoreName,
+ BYTE *pCertHashBlob);
+
+ HRESULT (STDMETHODCALLTYPE *SetClientCertificateByName)(
+ IBackgroundCopyJobHttpOptions *This,
+ BG_CERT_STORE_LOCATION StoreLocation,
+ LPCWSTR StoreName,
+ LPCWSTR SubjectName);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveClientCertificate)(
+ IBackgroundCopyJobHttpOptions *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetClientCertificate)(
+ IBackgroundCopyJobHttpOptions *This,
+ BG_CERT_STORE_LOCATION *pStoreLocation,
+ LPWSTR *pStoreName,
+ BYTE **ppCertHashBlob,
+ LPWSTR *pSubjectName);
+
+ HRESULT (STDMETHODCALLTYPE *SetCustomHeaders)(
+ IBackgroundCopyJobHttpOptions *This,
+ LPCWSTR RequestHeaders);
+
+ HRESULT (STDMETHODCALLTYPE *GetCustomHeaders)(
+ IBackgroundCopyJobHttpOptions *This,
+ LPWSTR *pRequestHeaders);
+
+ HRESULT (STDMETHODCALLTYPE *SetSecurityFlags)(
+ IBackgroundCopyJobHttpOptions *This,
+ ULONG Flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetSecurityFlags)(
+ IBackgroundCopyJobHttpOptions *This,
+ ULONG *pFlags);
+
+ END_INTERFACE
+} IBackgroundCopyJobHttpOptionsVtbl;
+
+interface IBackgroundCopyJobHttpOptions {
+ CONST_VTBL IBackgroundCopyJobHttpOptionsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJobHttpOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJobHttpOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJobHttpOptions_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJobHttpOptions methods ***/
+#define IBackgroundCopyJobHttpOptions_SetClientCertificateByID(This,StoreLocation,StoreName,pCertHashBlob) (This)->lpVtbl->SetClientCertificateByID(This,StoreLocation,StoreName,pCertHashBlob)
+#define IBackgroundCopyJobHttpOptions_SetClientCertificateByName(This,StoreLocation,StoreName,SubjectName) (This)->lpVtbl->SetClientCertificateByName(This,StoreLocation,StoreName,SubjectName)
+#define IBackgroundCopyJobHttpOptions_RemoveClientCertificate(This) (This)->lpVtbl->RemoveClientCertificate(This)
+#define IBackgroundCopyJobHttpOptions_GetClientCertificate(This,pStoreLocation,pStoreName,ppCertHashBlob,pSubjectName) (This)->lpVtbl->GetClientCertificate(This,pStoreLocation,pStoreName,ppCertHashBlob,pSubjectName)
+#define IBackgroundCopyJobHttpOptions_SetCustomHeaders(This,RequestHeaders) (This)->lpVtbl->SetCustomHeaders(This,RequestHeaders)
+#define IBackgroundCopyJobHttpOptions_GetCustomHeaders(This,pRequestHeaders) (This)->lpVtbl->GetCustomHeaders(This,pRequestHeaders)
+#define IBackgroundCopyJobHttpOptions_SetSecurityFlags(This,Flags) (This)->lpVtbl->SetSecurityFlags(This,Flags)
+#define IBackgroundCopyJobHttpOptions_GetSecurityFlags(This,pFlags) (This)->lpVtbl->GetSecurityFlags(This,pFlags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_QueryInterface(IBackgroundCopyJobHttpOptions* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJobHttpOptions_AddRef(IBackgroundCopyJobHttpOptions* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJobHttpOptions_Release(IBackgroundCopyJobHttpOptions* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJobHttpOptions methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetClientCertificateByID(IBackgroundCopyJobHttpOptions* This,BG_CERT_STORE_LOCATION StoreLocation,LPCWSTR StoreName,BYTE *pCertHashBlob) {
+ return This->lpVtbl->SetClientCertificateByID(This,StoreLocation,StoreName,pCertHashBlob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetClientCertificateByName(IBackgroundCopyJobHttpOptions* This,BG_CERT_STORE_LOCATION StoreLocation,LPCWSTR StoreName,LPCWSTR SubjectName) {
+ return This->lpVtbl->SetClientCertificateByName(This,StoreLocation,StoreName,SubjectName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_RemoveClientCertificate(IBackgroundCopyJobHttpOptions* This) {
+ return This->lpVtbl->RemoveClientCertificate(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_GetClientCertificate(IBackgroundCopyJobHttpOptions* This,BG_CERT_STORE_LOCATION *pStoreLocation,LPWSTR *pStoreName,BYTE **ppCertHashBlob,LPWSTR *pSubjectName) {
+ return This->lpVtbl->GetClientCertificate(This,pStoreLocation,pStoreName,ppCertHashBlob,pSubjectName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetCustomHeaders(IBackgroundCopyJobHttpOptions* This,LPCWSTR RequestHeaders) {
+ return This->lpVtbl->SetCustomHeaders(This,RequestHeaders);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_GetCustomHeaders(IBackgroundCopyJobHttpOptions* This,LPWSTR *pRequestHeaders) {
+ return This->lpVtbl->GetCustomHeaders(This,pRequestHeaders);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_SetSecurityFlags(IBackgroundCopyJobHttpOptions* This,ULONG Flags) {
+ return This->lpVtbl->SetSecurityFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJobHttpOptions_GetSecurityFlags(IBackgroundCopyJobHttpOptions* This,ULONG *pFlags) {
+ return This->lpVtbl->GetSecurityFlags(This,pFlags);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IBackgroundCopyJobHttpOptions_INTERFACE_DEFINED__ */
+
+#ifndef __BackgroundCopyManager2_5_LIBRARY_DEFINED__
+#define __BackgroundCopyManager2_5_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_BackgroundCopyManager2_5, 0x4974177c, 0x3bb6, 0x4c37, 0x9f,0xf0, 0x6b,0x74,0x26,0xf0,0xab,0xa9);
+
+/*****************************************************************************
+ * BackgroundCopyManager2_5 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager2_5, 0x03ca98d6, 0xff5d, 0x49b8, 0xab,0xc6, 0x03,0xdd,0x84,0x12,0x70,0x20);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("03ca98d6-ff5d-49b8-abc6-03dd84127020") BackgroundCopyManager2_5;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager2_5, 0x03ca98d6, 0xff5d, 0x49b8, 0xab,0xc6, 0x03,0xdd,0x84,0x12,0x70,0x20)
+#endif
+#endif
+
+#ifndef __IBackgroundCopyCallback_FWD_DEFINED__
+#define __IBackgroundCopyCallback_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback IBackgroundCopyCallback;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+#define __IBackgroundCopyJobHttpOptions_FWD_DEFINED__
+typedef interface IBackgroundCopyJobHttpOptions IBackgroundCopyJobHttpOptions;
+#ifdef __cplusplus
+interface IBackgroundCopyJobHttpOptions;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager2_5_LIBRARY_DEFINED__ */
+#include "bits3_0.h"
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bits2_5_h__ */
diff --git a/lib/libc/include/any-windows-any/bits3_0.h b/lib/libc/include/any-windows-any/bits3_0.h
new file mode 100644
index 0000000000..73c070139f
--- /dev/null
+++ b/lib/libc/include/any-windows-any/bits3_0.h
@@ -0,0 +1,704 @@
+/*** Autogenerated by WIDL 7.0 from include/bits3_0.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __bits3_0_h__
+#define __bits3_0_h__
+
+/* Forward declarations */
+
+#ifndef __IBackgroundCopyCallback2_FWD_DEFINED__
+#define __IBackgroundCopyCallback2_FWD_DEFINED__
+typedef interface IBackgroundCopyCallback2 IBackgroundCopyCallback2;
+#ifdef __cplusplus
+interface IBackgroundCopyCallback2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IBackgroundCopyJob4_FWD_DEFINED__
+#define __IBackgroundCopyJob4_FWD_DEFINED__
+typedef interface IBackgroundCopyJob4 IBackgroundCopyJob4;
+#ifdef __cplusplus
+interface IBackgroundCopyJob4;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __BackgroundCopyManager3_0_FWD_DEFINED__
+#define __BackgroundCopyManager3_0_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class BackgroundCopyManager3_0 BackgroundCopyManager3_0;
+#else
+typedef struct BackgroundCopyManager3_0 BackgroundCopyManager3_0;
+#endif /* defined __cplusplus */
+#endif /* defined __BackgroundCopyManager3_0_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <bits.h>
+#include <bits2_0.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IBackgroundCopyCallback2 interface
+ */
+#ifndef __IBackgroundCopyCallback2_INTERFACE_DEFINED__
+#define __IBackgroundCopyCallback2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IBackgroundCopyCallback2, 0x659cdeac, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("659cdeac-489e-11d9-a9cd-000d56965251")
+IBackgroundCopyCallback2 : public IBackgroundCopyCallback
+{
+ virtual HRESULT STDMETHODCALLTYPE FileTransferred(
+ IBackgroundCopyJob *job,
+ IBackgroundCopyFile *file) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyCallback2, 0x659cdeac, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51)
+#endif
+#else
+typedef struct IBackgroundCopyCallback2Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyCallback2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyCallback2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyCallback2 *This);
+
+ /*** IBackgroundCopyCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *JobTransferred)(
+ IBackgroundCopyCallback2 *This,
+ IBackgroundCopyJob *pJob);
+
+ HRESULT (STDMETHODCALLTYPE *JobError)(
+ IBackgroundCopyCallback2 *This,
+ IBackgroundCopyJob *pJob,
+ IBackgroundCopyError *pError);
+
+ HRESULT (STDMETHODCALLTYPE *JobModification)(
+ IBackgroundCopyCallback2 *This,
+ IBackgroundCopyJob *pJob,
+ DWORD dwReserved);
+
+ /*** IBackgroundCopyCallback2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *FileTransferred)(
+ IBackgroundCopyCallback2 *This,
+ IBackgroundCopyJob *job,
+ IBackgroundCopyFile *file);
+
+ END_INTERFACE
+} IBackgroundCopyCallback2Vtbl;
+
+interface IBackgroundCopyCallback2 {
+ CONST_VTBL IBackgroundCopyCallback2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyCallback2_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyCallback methods ***/
+#define IBackgroundCopyCallback2_JobTransferred(This,pJob) (This)->lpVtbl->JobTransferred(This,pJob)
+#define IBackgroundCopyCallback2_JobError(This,pJob,pError) (This)->lpVtbl->JobError(This,pJob,pError)
+#define IBackgroundCopyCallback2_JobModification(This,pJob,dwReserved) (This)->lpVtbl->JobModification(This,pJob,dwReserved)
+/*** IBackgroundCopyCallback2 methods ***/
+#define IBackgroundCopyCallback2_FileTransferred(This,job,file) (This)->lpVtbl->FileTransferred(This,job,file)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_QueryInterface(IBackgroundCopyCallback2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback2_AddRef(IBackgroundCopyCallback2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyCallback2_Release(IBackgroundCopyCallback2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyCallback methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_JobTransferred(IBackgroundCopyCallback2* This,IBackgroundCopyJob *pJob) {
+ return This->lpVtbl->JobTransferred(This,pJob);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_JobError(IBackgroundCopyCallback2* This,IBackgroundCopyJob *pJob,IBackgroundCopyError *pError) {
+ return This->lpVtbl->JobError(This,pJob,pError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_JobModification(IBackgroundCopyCallback2* This,IBackgroundCopyJob *pJob,DWORD dwReserved) {
+ return This->lpVtbl->JobModification(This,pJob,dwReserved);
+}
+/*** IBackgroundCopyCallback2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyCallback2_FileTransferred(IBackgroundCopyCallback2* This,IBackgroundCopyJob *job,IBackgroundCopyFile *file) {
+ return This->lpVtbl->FileTransferred(This,job,file);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IBackgroundCopyCallback2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IBackgroundCopyJob4 interface
+ */
+#ifndef __IBackgroundCopyJob4_INTERFACE_DEFINED__
+#define __IBackgroundCopyJob4_INTERFACE_DEFINED__
+
+#define BG_JOB_ENABLE_PEERCACHING_CLIENT 0x0001
+#define BG_JOB_ENABLE_PEERCACHING_SERVER 0x0002
+#define BG_JOB_DISABLE_BRANCH_CACHE 0x0004
+DEFINE_GUID(IID_IBackgroundCopyJob4, 0x659cdeae, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("659cdeae-489e-11d9-a9cd-000d56965251")
+IBackgroundCopyJob4 : public IBackgroundCopyJob3
+{
+ virtual HRESULT STDMETHODCALLTYPE SetPeerCachingFlags(
+ DWORD flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPeerCachingFlags(
+ DWORD *flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOwnerIntegrityLevel(
+ ULONG *level) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOwnerElevationState(
+ WINBOOL *elevated) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMaximumDownloadTime(
+ ULONG timeout) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMaximumDownloadTime(
+ ULONG *timeout) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob4, 0x659cdeae, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51)
+#endif
+#else
+typedef struct IBackgroundCopyJob4Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyJob4 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyJob4 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyJob4 *This);
+
+ /*** IBackgroundCopyJob methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+ IBackgroundCopyJob4 *This,
+ ULONG cFileCount,
+ BG_FILE_INFO *pFileSet);
+
+ HRESULT (STDMETHODCALLTYPE *AddFile)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName);
+
+ HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+ IBackgroundCopyJob4 *This,
+ IEnumBackgroundCopyFiles **pEnum);
+
+ HRESULT (STDMETHODCALLTYPE *Suspend)(
+ IBackgroundCopyJob4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Resume)(
+ IBackgroundCopyJob4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Cancel)(
+ IBackgroundCopyJob4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Complete)(
+ IBackgroundCopyJob4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetId)(
+ IBackgroundCopyJob4 *This,
+ GUID *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetType)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_TYPE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_PROGRESS *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetTimes)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_TIMES *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetState)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_STATE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetError)(
+ IBackgroundCopyJob4 *This,
+ IBackgroundCopyError **ppError);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwner)(
+ IBackgroundCopyJob4 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+ IBackgroundCopyJob4 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDescription)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDescription)(
+ IBackgroundCopyJob4 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetPriority)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_PRIORITY Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetPriority)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_PRIORITY *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+ IBackgroundCopyJob4 *This,
+ ULONG Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+ IBackgroundCopyJob4 *This,
+ ULONG *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+ IBackgroundCopyJob4 *This,
+ IUnknown *Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+ IBackgroundCopyJob4 *This,
+ IUnknown **pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+ IBackgroundCopyJob4 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+ IBackgroundCopyJob4 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+ IBackgroundCopyJob4 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+ IBackgroundCopyJob4 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+ IBackgroundCopyJob4 *This,
+ ULONG *Errors);
+
+ HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_PROXY_USAGE ProxyUsage,
+ const WCHAR *ProxyList,
+ const WCHAR *ProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_PROXY_USAGE *pProxyUsage,
+ LPWSTR *pProxyList,
+ LPWSTR *pProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+ IBackgroundCopyJob4 *This);
+
+ /*** IBackgroundCopyJob2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR prog,
+ LPCWSTR params);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+ IBackgroundCopyJob4 *This,
+ LPWSTR *prog,
+ LPWSTR *params);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+ IBackgroundCopyJob4 *This,
+ BG_JOB_REPLY_PROGRESS *progress);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+ IBackgroundCopyJob4 *This,
+ byte **pBuffer,
+ UINT64 *pLength);
+
+ HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR filename);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+ IBackgroundCopyJob4 *This,
+ LPWSTR *pFilename);
+
+ HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+ IBackgroundCopyJob4 *This,
+ BG_AUTH_CREDENTIALS *cred);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+ IBackgroundCopyJob4 *This,
+ BG_AUTH_TARGET target,
+ BG_AUTH_SCHEME scheme);
+
+ /*** IBackgroundCopyJob3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *ReplaceRemotePrefix)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR OldPrefix,
+ LPCWSTR NewPrefix);
+
+ HRESULT (STDMETHODCALLTYPE *AddFileWithRanges)(
+ IBackgroundCopyJob4 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName,
+ DWORD RangeCount,
+ BG_FILE_RANGE Ranges[]);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileACLFlags)(
+ IBackgroundCopyJob4 *This,
+ DWORD Flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileACLFlags)(
+ IBackgroundCopyJob4 *This,
+ DWORD *Flags);
+
+ /*** IBackgroundCopyJob4 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetPeerCachingFlags)(
+ IBackgroundCopyJob4 *This,
+ DWORD flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetPeerCachingFlags)(
+ IBackgroundCopyJob4 *This,
+ DWORD *flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwnerIntegrityLevel)(
+ IBackgroundCopyJob4 *This,
+ ULONG *level);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwnerElevationState)(
+ IBackgroundCopyJob4 *This,
+ WINBOOL *elevated);
+
+ HRESULT (STDMETHODCALLTYPE *SetMaximumDownloadTime)(
+ IBackgroundCopyJob4 *This,
+ ULONG timeout);
+
+ HRESULT (STDMETHODCALLTYPE *GetMaximumDownloadTime)(
+ IBackgroundCopyJob4 *This,
+ ULONG *timeout);
+
+ END_INTERFACE
+} IBackgroundCopyJob4Vtbl;
+
+interface IBackgroundCopyJob4 {
+ CONST_VTBL IBackgroundCopyJob4Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJob4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJob4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJob4_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
+#define IBackgroundCopyJob4_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
+#define IBackgroundCopyJob4_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
+#define IBackgroundCopyJob4_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
+#define IBackgroundCopyJob4_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IBackgroundCopyJob4_Resume(This) (This)->lpVtbl->Resume(This)
+#define IBackgroundCopyJob4_Cancel(This) (This)->lpVtbl->Cancel(This)
+#define IBackgroundCopyJob4_Complete(This) (This)->lpVtbl->Complete(This)
+#define IBackgroundCopyJob4_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
+#define IBackgroundCopyJob4_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
+#define IBackgroundCopyJob4_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+#define IBackgroundCopyJob4_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
+#define IBackgroundCopyJob4_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
+#define IBackgroundCopyJob4_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
+#define IBackgroundCopyJob4_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
+#define IBackgroundCopyJob4_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
+#define IBackgroundCopyJob4_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
+#define IBackgroundCopyJob4_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
+#define IBackgroundCopyJob4_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
+#define IBackgroundCopyJob4_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
+#define IBackgroundCopyJob4_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
+#define IBackgroundCopyJob4_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
+#define IBackgroundCopyJob4_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
+#define IBackgroundCopyJob4_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
+#define IBackgroundCopyJob4_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
+#define IBackgroundCopyJob4_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob4_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob4_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob4_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob4_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
+#define IBackgroundCopyJob4_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
+#define IBackgroundCopyJob4_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
+#define IBackgroundCopyJob4_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob4_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob4_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob4_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob4_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob4_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob4_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob4_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob4_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+/*** IBackgroundCopyJob3 methods ***/
+#define IBackgroundCopyJob4_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
+#define IBackgroundCopyJob4_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
+#define IBackgroundCopyJob4_SetFileACLFlags(This,Flags) (This)->lpVtbl->SetFileACLFlags(This,Flags)
+#define IBackgroundCopyJob4_GetFileACLFlags(This,Flags) (This)->lpVtbl->GetFileACLFlags(This,Flags)
+/*** IBackgroundCopyJob4 methods ***/
+#define IBackgroundCopyJob4_SetPeerCachingFlags(This,flags) (This)->lpVtbl->SetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob4_GetPeerCachingFlags(This,flags) (This)->lpVtbl->GetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob4_GetOwnerIntegrityLevel(This,level) (This)->lpVtbl->GetOwnerIntegrityLevel(This,level)
+#define IBackgroundCopyJob4_GetOwnerElevationState(This,elevated) (This)->lpVtbl->GetOwnerElevationState(This,elevated)
+#define IBackgroundCopyJob4_SetMaximumDownloadTime(This,timeout) (This)->lpVtbl->SetMaximumDownloadTime(This,timeout)
+#define IBackgroundCopyJob4_GetMaximumDownloadTime(This,timeout) (This)->lpVtbl->GetMaximumDownloadTime(This,timeout)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_QueryInterface(IBackgroundCopyJob4* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob4_AddRef(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob4_Release(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_AddFileSet(IBackgroundCopyJob4* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+ return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_AddFile(IBackgroundCopyJob4* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+ return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_EnumFiles(IBackgroundCopyJob4* This,IEnumBackgroundCopyFiles **pEnum) {
+ return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Suspend(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Resume(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Cancel(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_Complete(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetId(IBackgroundCopyJob4* This,GUID *pVal) {
+ return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetType(IBackgroundCopyJob4* This,BG_JOB_TYPE *pVal) {
+ return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetProgress(IBackgroundCopyJob4* This,BG_JOB_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetTimes(IBackgroundCopyJob4* This,BG_JOB_TIMES *pVal) {
+ return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetState(IBackgroundCopyJob4* This,BG_JOB_STATE *pVal) {
+ return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetError(IBackgroundCopyJob4* This,IBackgroundCopyError **ppError) {
+ return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetOwner(IBackgroundCopyJob4* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetDisplayName(IBackgroundCopyJob4* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetDisplayName(IBackgroundCopyJob4* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetDescription(IBackgroundCopyJob4* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetDescription(IBackgroundCopyJob4* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetPriority(IBackgroundCopyJob4* This,BG_JOB_PRIORITY Val) {
+ return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetPriority(IBackgroundCopyJob4* This,BG_JOB_PRIORITY *pVal) {
+ return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNotifyFlags(IBackgroundCopyJob4* This,ULONG Val) {
+ return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNotifyFlags(IBackgroundCopyJob4* This,ULONG *pVal) {
+ return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNotifyInterface(IBackgroundCopyJob4* This,IUnknown *Val) {
+ return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNotifyInterface(IBackgroundCopyJob4* This,IUnknown **pVal) {
+ return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetMinimumRetryDelay(IBackgroundCopyJob4* This,ULONG Seconds) {
+ return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetMinimumRetryDelay(IBackgroundCopyJob4* This,ULONG *Seconds) {
+ return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNoProgressTimeout(IBackgroundCopyJob4* This,ULONG Seconds) {
+ return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNoProgressTimeout(IBackgroundCopyJob4* This,ULONG *Seconds) {
+ return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetErrorCount(IBackgroundCopyJob4* This,ULONG *Errors) {
+ return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetProxySettings(IBackgroundCopyJob4* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+ return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetProxySettings(IBackgroundCopyJob4* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+ return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_TakeOwnership(IBackgroundCopyJob4* This) {
+ return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetNotifyCmdLine(IBackgroundCopyJob4* This,LPCWSTR prog,LPCWSTR params) {
+ return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetNotifyCmdLine(IBackgroundCopyJob4* This,LPWSTR *prog,LPWSTR *params) {
+ return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetReplyProgress(IBackgroundCopyJob4* This,BG_JOB_REPLY_PROGRESS *progress) {
+ return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetReplyData(IBackgroundCopyJob4* This,byte **pBuffer,UINT64 *pLength) {
+ return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetReplyFileName(IBackgroundCopyJob4* This,LPCWSTR filename) {
+ return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetReplyFileName(IBackgroundCopyJob4* This,LPWSTR *pFilename) {
+ return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetCredentials(IBackgroundCopyJob4* This,BG_AUTH_CREDENTIALS *cred) {
+ return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_RemoveCredentials(IBackgroundCopyJob4* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+ return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
+/*** IBackgroundCopyJob3 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_ReplaceRemotePrefix(IBackgroundCopyJob4* This,LPCWSTR OldPrefix,LPCWSTR NewPrefix) {
+ return This->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_AddFileWithRanges(IBackgroundCopyJob4* This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) {
+ return This->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetFileACLFlags(IBackgroundCopyJob4* This,DWORD Flags) {
+ return This->lpVtbl->SetFileACLFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetFileACLFlags(IBackgroundCopyJob4* This,DWORD *Flags) {
+ return This->lpVtbl->GetFileACLFlags(This,Flags);
+}
+/*** IBackgroundCopyJob4 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetPeerCachingFlags(IBackgroundCopyJob4* This,DWORD flags) {
+ return This->lpVtbl->SetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetPeerCachingFlags(IBackgroundCopyJob4* This,DWORD *flags) {
+ return This->lpVtbl->GetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetOwnerIntegrityLevel(IBackgroundCopyJob4* This,ULONG *level) {
+ return This->lpVtbl->GetOwnerIntegrityLevel(This,level);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetOwnerElevationState(IBackgroundCopyJob4* This,WINBOOL *elevated) {
+ return This->lpVtbl->GetOwnerElevationState(This,elevated);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_SetMaximumDownloadTime(IBackgroundCopyJob4* This,ULONG timeout) {
+ return This->lpVtbl->SetMaximumDownloadTime(This,timeout);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob4_GetMaximumDownloadTime(IBackgroundCopyJob4* This,ULONG *timeout) {
+ return This->lpVtbl->GetMaximumDownloadTime(This,timeout);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IBackgroundCopyJob4_INTERFACE_DEFINED__ */
+
+#ifndef __BackgroundCopyManager3_0_LIBRARY_DEFINED__
+#define __BackgroundCopyManager3_0_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_BackgroundCopyManager3_0, 0x659cdea6, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+
+/*****************************************************************************
+ * BackgroundCopyManager3_0 coclass
+ */
+
+DEFINE_GUID(CLSID_BackgroundCopyManager3_0, 0x659cdea7, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("659cdea7-489e-11d9-a9cd-000d56965251") BackgroundCopyManager3_0;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(BackgroundCopyManager3_0, 0x659cdea7, 0x489e, 0x11d9, 0xa9,0xcd, 0x00,0x0d,0x56,0x96,0x52,0x51)
+#endif
+#endif
+
+#ifndef __IBackgroundCopyJob4_FWD_DEFINED__
+#define __IBackgroundCopyJob4_FWD_DEFINED__
+typedef interface IBackgroundCopyJob4 IBackgroundCopyJob4;
+#ifdef __cplusplus
+interface IBackgroundCopyJob4;
+#endif /* __cplusplus */
+#endif
+
+#endif /* __BackgroundCopyManager3_0_LIBRARY_DEFINED__ */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bits3_0_h__ */
diff --git a/lib/libc/include/any-windows-any/bits5_0.h b/lib/libc/include/any-windows-any/bits5_0.h
new file mode 100644
index 0000000000..d99baf8b1e
--- /dev/null
+++ b/lib/libc/include/any-windows-any/bits5_0.h
@@ -0,0 +1,581 @@
+/*** Autogenerated by WIDL 7.0 from include/bits5_0.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __bits5_0_h__
+#define __bits5_0_h__
+
+/* Forward declarations */
+
+#ifndef __IBackgroundCopyJob5_FWD_DEFINED__
+#define __IBackgroundCopyJob5_FWD_DEFINED__
+typedef interface IBackgroundCopyJob5 IBackgroundCopyJob5;
+#ifdef __cplusplus
+interface IBackgroundCopyJob5;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <bits.h>
+#include <bits1_5.h>
+#include <bits2_0.h>
+#include <bits2_5.h>
+#include <bits3_0.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BITS_COST_STATE_TRANSFER_ALWAYS 0x800000ff
+/*****************************************************************************
+ * IBackgroundCopyJob5 interface
+ */
+#ifndef __IBackgroundCopyJob5_INTERFACE_DEFINED__
+#define __IBackgroundCopyJob5_INTERFACE_DEFINED__
+
+typedef enum __WIDL_bits5_0_generated_name_00000017 {
+ BITS_JOB_PROPERTY_ID_COST_FLAGS = 1,
+ BITS_JOB_PROPERTY_NOTIFICATION_CLSID = 2,
+ BITS_JOB_PROPERTY_DYNAMIC_CONTENT = 3,
+ BITS_JOB_PROPERTY_HIGH_PERFORMANCE = 4,
+ BITS_JOB_PROPERTY_MAX_DOWNLOAD_SIZE = 5,
+ BITS_JOB_PROPERTY_USE_STORED_CREDENTIALS = 7,
+ BITS_JOB_PROPERTY_MINIMUM_NOTIFICATION_INTERVAL_MS = 9,
+ BITS_JOB_PROPERTY_ON_DEMAND_MODE = 10
+} BITS_JOB_PROPERTY_ID;
+typedef union _BITS_JOB_PROPERTY_VALUE {
+ DWORD Dword;
+ GUID ClsID;
+ WINBOOL Enable;
+ UINT64 Uint64;
+ BG_AUTH_TARGET Target;
+} BITS_JOB_PROPERTY_VALUE;
+DEFINE_GUID(IID_IBackgroundCopyJob5, 0xe847030c, 0xbbba, 0x4657, 0xaf,0x6d, 0x48,0x4a,0xa4,0x2b,0xf1,0xfe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e847030c-bbba-4657-af6d-484aa42bf1fe")
+IBackgroundCopyJob5 : public IBackgroundCopyJob4
+{
+ virtual HRESULT STDMETHODCALLTYPE SetProperty(
+ BITS_JOB_PROPERTY_ID id,
+ BITS_JOB_PROPERTY_VALUE value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProperty(
+ BITS_JOB_PROPERTY_ID id,
+ BITS_JOB_PROPERTY_VALUE *value) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IBackgroundCopyJob5, 0xe847030c, 0xbbba, 0x4657, 0xaf,0x6d, 0x48,0x4a,0xa4,0x2b,0xf1,0xfe)
+#endif
+#else
+typedef struct IBackgroundCopyJob5Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IBackgroundCopyJob5 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IBackgroundCopyJob5 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IBackgroundCopyJob5 *This);
+
+ /*** IBackgroundCopyJob methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddFileSet)(
+ IBackgroundCopyJob5 *This,
+ ULONG cFileCount,
+ BG_FILE_INFO *pFileSet);
+
+ HRESULT (STDMETHODCALLTYPE *AddFile)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName);
+
+ HRESULT (STDMETHODCALLTYPE *EnumFiles)(
+ IBackgroundCopyJob5 *This,
+ IEnumBackgroundCopyFiles **pEnum);
+
+ HRESULT (STDMETHODCALLTYPE *Suspend)(
+ IBackgroundCopyJob5 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Resume)(
+ IBackgroundCopyJob5 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Cancel)(
+ IBackgroundCopyJob5 *This);
+
+ HRESULT (STDMETHODCALLTYPE *Complete)(
+ IBackgroundCopyJob5 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetId)(
+ IBackgroundCopyJob5 *This,
+ GUID *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetType)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_TYPE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetProgress)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_PROGRESS *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetTimes)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_TIMES *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetState)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_STATE *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetError)(
+ IBackgroundCopyJob5 *This,
+ IBackgroundCopyError **ppError);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwner)(
+ IBackgroundCopyJob5 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+ IBackgroundCopyJob5 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetDescription)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetDescription)(
+ IBackgroundCopyJob5 *This,
+ LPWSTR *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetPriority)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_PRIORITY Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetPriority)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_PRIORITY *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyFlags)(
+ IBackgroundCopyJob5 *This,
+ ULONG Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyFlags)(
+ IBackgroundCopyJob5 *This,
+ ULONG *pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetNotifyInterface)(
+ IBackgroundCopyJob5 *This,
+ IUnknown *Val);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyInterface)(
+ IBackgroundCopyJob5 *This,
+ IUnknown **pVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetMinimumRetryDelay)(
+ IBackgroundCopyJob5 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetMinimumRetryDelay)(
+ IBackgroundCopyJob5 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *SetNoProgressTimeout)(
+ IBackgroundCopyJob5 *This,
+ ULONG Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetNoProgressTimeout)(
+ IBackgroundCopyJob5 *This,
+ ULONG *Seconds);
+
+ HRESULT (STDMETHODCALLTYPE *GetErrorCount)(
+ IBackgroundCopyJob5 *This,
+ ULONG *Errors);
+
+ HRESULT (STDMETHODCALLTYPE *SetProxySettings)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_PROXY_USAGE ProxyUsage,
+ const WCHAR *ProxyList,
+ const WCHAR *ProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *GetProxySettings)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_PROXY_USAGE *pProxyUsage,
+ LPWSTR *pProxyList,
+ LPWSTR *pProxyBypassList);
+
+ HRESULT (STDMETHODCALLTYPE *TakeOwnership)(
+ IBackgroundCopyJob5 *This);
+
+ /*** IBackgroundCopyJob2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetNotifyCmdLine)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR prog,
+ LPCWSTR params);
+
+ HRESULT (STDMETHODCALLTYPE *GetNotifyCmdLine)(
+ IBackgroundCopyJob5 *This,
+ LPWSTR *prog,
+ LPWSTR *params);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyProgress)(
+ IBackgroundCopyJob5 *This,
+ BG_JOB_REPLY_PROGRESS *progress);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyData)(
+ IBackgroundCopyJob5 *This,
+ byte **pBuffer,
+ UINT64 *pLength);
+
+ HRESULT (STDMETHODCALLTYPE *SetReplyFileName)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR filename);
+
+ HRESULT (STDMETHODCALLTYPE *GetReplyFileName)(
+ IBackgroundCopyJob5 *This,
+ LPWSTR *pFilename);
+
+ HRESULT (STDMETHODCALLTYPE *SetCredentials)(
+ IBackgroundCopyJob5 *This,
+ BG_AUTH_CREDENTIALS *cred);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveCredentials)(
+ IBackgroundCopyJob5 *This,
+ BG_AUTH_TARGET target,
+ BG_AUTH_SCHEME scheme);
+
+ /*** IBackgroundCopyJob3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *ReplaceRemotePrefix)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR OldPrefix,
+ LPCWSTR NewPrefix);
+
+ HRESULT (STDMETHODCALLTYPE *AddFileWithRanges)(
+ IBackgroundCopyJob5 *This,
+ LPCWSTR RemoteUrl,
+ LPCWSTR LocalName,
+ DWORD RangeCount,
+ BG_FILE_RANGE Ranges[]);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileACLFlags)(
+ IBackgroundCopyJob5 *This,
+ DWORD Flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileACLFlags)(
+ IBackgroundCopyJob5 *This,
+ DWORD *Flags);
+
+ /*** IBackgroundCopyJob4 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetPeerCachingFlags)(
+ IBackgroundCopyJob5 *This,
+ DWORD flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetPeerCachingFlags)(
+ IBackgroundCopyJob5 *This,
+ DWORD *flags);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwnerIntegrityLevel)(
+ IBackgroundCopyJob5 *This,
+ ULONG *level);
+
+ HRESULT (STDMETHODCALLTYPE *GetOwnerElevationState)(
+ IBackgroundCopyJob5 *This,
+ WINBOOL *elevated);
+
+ HRESULT (STDMETHODCALLTYPE *SetMaximumDownloadTime)(
+ IBackgroundCopyJob5 *This,
+ ULONG timeout);
+
+ HRESULT (STDMETHODCALLTYPE *GetMaximumDownloadTime)(
+ IBackgroundCopyJob5 *This,
+ ULONG *timeout);
+
+ /*** IBackgroundCopyJob5 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetProperty)(
+ IBackgroundCopyJob5 *This,
+ BITS_JOB_PROPERTY_ID id,
+ BITS_JOB_PROPERTY_VALUE value);
+
+ HRESULT (STDMETHODCALLTYPE *GetProperty)(
+ IBackgroundCopyJob5 *This,
+ BITS_JOB_PROPERTY_ID id,
+ BITS_JOB_PROPERTY_VALUE *value);
+
+ END_INTERFACE
+} IBackgroundCopyJob5Vtbl;
+
+interface IBackgroundCopyJob5 {
+ CONST_VTBL IBackgroundCopyJob5Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IBackgroundCopyJob5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBackgroundCopyJob5_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBackgroundCopyJob5_Release(This) (This)->lpVtbl->Release(This)
+/*** IBackgroundCopyJob methods ***/
+#define IBackgroundCopyJob5_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet)
+#define IBackgroundCopyJob5_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName)
+#define IBackgroundCopyJob5_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum)
+#define IBackgroundCopyJob5_Suspend(This) (This)->lpVtbl->Suspend(This)
+#define IBackgroundCopyJob5_Resume(This) (This)->lpVtbl->Resume(This)
+#define IBackgroundCopyJob5_Cancel(This) (This)->lpVtbl->Cancel(This)
+#define IBackgroundCopyJob5_Complete(This) (This)->lpVtbl->Complete(This)
+#define IBackgroundCopyJob5_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal)
+#define IBackgroundCopyJob5_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal)
+#define IBackgroundCopyJob5_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal)
+#define IBackgroundCopyJob5_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal)
+#define IBackgroundCopyJob5_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal)
+#define IBackgroundCopyJob5_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError)
+#define IBackgroundCopyJob5_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal)
+#define IBackgroundCopyJob5_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val)
+#define IBackgroundCopyJob5_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal)
+#define IBackgroundCopyJob5_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val)
+#define IBackgroundCopyJob5_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal)
+#define IBackgroundCopyJob5_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val)
+#define IBackgroundCopyJob5_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal)
+#define IBackgroundCopyJob5_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val)
+#define IBackgroundCopyJob5_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal)
+#define IBackgroundCopyJob5_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val)
+#define IBackgroundCopyJob5_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal)
+#define IBackgroundCopyJob5_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob5_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds)
+#define IBackgroundCopyJob5_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob5_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds)
+#define IBackgroundCopyJob5_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors)
+#define IBackgroundCopyJob5_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList)
+#define IBackgroundCopyJob5_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList)
+#define IBackgroundCopyJob5_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This)
+/*** IBackgroundCopyJob2 methods ***/
+#define IBackgroundCopyJob5_SetNotifyCmdLine(This,prog,params) (This)->lpVtbl->SetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob5_GetNotifyCmdLine(This,prog,params) (This)->lpVtbl->GetNotifyCmdLine(This,prog,params)
+#define IBackgroundCopyJob5_GetReplyProgress(This,progress) (This)->lpVtbl->GetReplyProgress(This,progress)
+#define IBackgroundCopyJob5_GetReplyData(This,pBuffer,pLength) (This)->lpVtbl->GetReplyData(This,pBuffer,pLength)
+#define IBackgroundCopyJob5_SetReplyFileName(This,filename) (This)->lpVtbl->SetReplyFileName(This,filename)
+#define IBackgroundCopyJob5_GetReplyFileName(This,pFilename) (This)->lpVtbl->GetReplyFileName(This,pFilename)
+#define IBackgroundCopyJob5_SetCredentials(This,cred) (This)->lpVtbl->SetCredentials(This,cred)
+#define IBackgroundCopyJob5_RemoveCredentials(This,target,scheme) (This)->lpVtbl->RemoveCredentials(This,target,scheme)
+/*** IBackgroundCopyJob3 methods ***/
+#define IBackgroundCopyJob5_ReplaceRemotePrefix(This,OldPrefix,NewPrefix) (This)->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix)
+#define IBackgroundCopyJob5_AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges) (This)->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges)
+#define IBackgroundCopyJob5_SetFileACLFlags(This,Flags) (This)->lpVtbl->SetFileACLFlags(This,Flags)
+#define IBackgroundCopyJob5_GetFileACLFlags(This,Flags) (This)->lpVtbl->GetFileACLFlags(This,Flags)
+/*** IBackgroundCopyJob4 methods ***/
+#define IBackgroundCopyJob5_SetPeerCachingFlags(This,flags) (This)->lpVtbl->SetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob5_GetPeerCachingFlags(This,flags) (This)->lpVtbl->GetPeerCachingFlags(This,flags)
+#define IBackgroundCopyJob5_GetOwnerIntegrityLevel(This,level) (This)->lpVtbl->GetOwnerIntegrityLevel(This,level)
+#define IBackgroundCopyJob5_GetOwnerElevationState(This,elevated) (This)->lpVtbl->GetOwnerElevationState(This,elevated)
+#define IBackgroundCopyJob5_SetMaximumDownloadTime(This,timeout) (This)->lpVtbl->SetMaximumDownloadTime(This,timeout)
+#define IBackgroundCopyJob5_GetMaximumDownloadTime(This,timeout) (This)->lpVtbl->GetMaximumDownloadTime(This,timeout)
+/*** IBackgroundCopyJob5 methods ***/
+#define IBackgroundCopyJob5_SetProperty(This,id,value) (This)->lpVtbl->SetProperty(This,id,value)
+#define IBackgroundCopyJob5_GetProperty(This,id,value) (This)->lpVtbl->GetProperty(This,id,value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_QueryInterface(IBackgroundCopyJob5* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob5_AddRef(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IBackgroundCopyJob5_Release(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IBackgroundCopyJob methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_AddFileSet(IBackgroundCopyJob5* This,ULONG cFileCount,BG_FILE_INFO *pFileSet) {
+ return This->lpVtbl->AddFileSet(This,cFileCount,pFileSet);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_AddFile(IBackgroundCopyJob5* This,LPCWSTR RemoteUrl,LPCWSTR LocalName) {
+ return This->lpVtbl->AddFile(This,RemoteUrl,LocalName);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_EnumFiles(IBackgroundCopyJob5* This,IEnumBackgroundCopyFiles **pEnum) {
+ return This->lpVtbl->EnumFiles(This,pEnum);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Suspend(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->Suspend(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Resume(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->Resume(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Cancel(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->Cancel(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_Complete(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->Complete(This);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetId(IBackgroundCopyJob5* This,GUID *pVal) {
+ return This->lpVtbl->GetId(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetType(IBackgroundCopyJob5* This,BG_JOB_TYPE *pVal) {
+ return This->lpVtbl->GetType(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetProgress(IBackgroundCopyJob5* This,BG_JOB_PROGRESS *pVal) {
+ return This->lpVtbl->GetProgress(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetTimes(IBackgroundCopyJob5* This,BG_JOB_TIMES *pVal) {
+ return This->lpVtbl->GetTimes(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetState(IBackgroundCopyJob5* This,BG_JOB_STATE *pVal) {
+ return This->lpVtbl->GetState(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetError(IBackgroundCopyJob5* This,IBackgroundCopyError **ppError) {
+ return This->lpVtbl->GetError(This,ppError);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetOwner(IBackgroundCopyJob5* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetOwner(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetDisplayName(IBackgroundCopyJob5* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDisplayName(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetDisplayName(IBackgroundCopyJob5* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDisplayName(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetDescription(IBackgroundCopyJob5* This,LPCWSTR Val) {
+ return This->lpVtbl->SetDescription(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetDescription(IBackgroundCopyJob5* This,LPWSTR *pVal) {
+ return This->lpVtbl->GetDescription(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetPriority(IBackgroundCopyJob5* This,BG_JOB_PRIORITY Val) {
+ return This->lpVtbl->SetPriority(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetPriority(IBackgroundCopyJob5* This,BG_JOB_PRIORITY *pVal) {
+ return This->lpVtbl->GetPriority(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNotifyFlags(IBackgroundCopyJob5* This,ULONG Val) {
+ return This->lpVtbl->SetNotifyFlags(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNotifyFlags(IBackgroundCopyJob5* This,ULONG *pVal) {
+ return This->lpVtbl->GetNotifyFlags(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNotifyInterface(IBackgroundCopyJob5* This,IUnknown *Val) {
+ return This->lpVtbl->SetNotifyInterface(This,Val);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNotifyInterface(IBackgroundCopyJob5* This,IUnknown **pVal) {
+ return This->lpVtbl->GetNotifyInterface(This,pVal);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetMinimumRetryDelay(IBackgroundCopyJob5* This,ULONG Seconds) {
+ return This->lpVtbl->SetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetMinimumRetryDelay(IBackgroundCopyJob5* This,ULONG *Seconds) {
+ return This->lpVtbl->GetMinimumRetryDelay(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNoProgressTimeout(IBackgroundCopyJob5* This,ULONG Seconds) {
+ return This->lpVtbl->SetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNoProgressTimeout(IBackgroundCopyJob5* This,ULONG *Seconds) {
+ return This->lpVtbl->GetNoProgressTimeout(This,Seconds);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetErrorCount(IBackgroundCopyJob5* This,ULONG *Errors) {
+ return This->lpVtbl->GetErrorCount(This,Errors);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetProxySettings(IBackgroundCopyJob5* This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList) {
+ return This->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetProxySettings(IBackgroundCopyJob5* This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList) {
+ return This->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_TakeOwnership(IBackgroundCopyJob5* This) {
+ return This->lpVtbl->TakeOwnership(This);
+}
+/*** IBackgroundCopyJob2 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetNotifyCmdLine(IBackgroundCopyJob5* This,LPCWSTR prog,LPCWSTR params) {
+ return This->lpVtbl->SetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetNotifyCmdLine(IBackgroundCopyJob5* This,LPWSTR *prog,LPWSTR *params) {
+ return This->lpVtbl->GetNotifyCmdLine(This,prog,params);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetReplyProgress(IBackgroundCopyJob5* This,BG_JOB_REPLY_PROGRESS *progress) {
+ return This->lpVtbl->GetReplyProgress(This,progress);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetReplyData(IBackgroundCopyJob5* This,byte **pBuffer,UINT64 *pLength) {
+ return This->lpVtbl->GetReplyData(This,pBuffer,pLength);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetReplyFileName(IBackgroundCopyJob5* This,LPCWSTR filename) {
+ return This->lpVtbl->SetReplyFileName(This,filename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetReplyFileName(IBackgroundCopyJob5* This,LPWSTR *pFilename) {
+ return This->lpVtbl->GetReplyFileName(This,pFilename);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetCredentials(IBackgroundCopyJob5* This,BG_AUTH_CREDENTIALS *cred) {
+ return This->lpVtbl->SetCredentials(This,cred);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_RemoveCredentials(IBackgroundCopyJob5* This,BG_AUTH_TARGET target,BG_AUTH_SCHEME scheme) {
+ return This->lpVtbl->RemoveCredentials(This,target,scheme);
+}
+/*** IBackgroundCopyJob3 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_ReplaceRemotePrefix(IBackgroundCopyJob5* This,LPCWSTR OldPrefix,LPCWSTR NewPrefix) {
+ return This->lpVtbl->ReplaceRemotePrefix(This,OldPrefix,NewPrefix);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_AddFileWithRanges(IBackgroundCopyJob5* This,LPCWSTR RemoteUrl,LPCWSTR LocalName,DWORD RangeCount,BG_FILE_RANGE Ranges[]) {
+ return This->lpVtbl->AddFileWithRanges(This,RemoteUrl,LocalName,RangeCount,Ranges);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetFileACLFlags(IBackgroundCopyJob5* This,DWORD Flags) {
+ return This->lpVtbl->SetFileACLFlags(This,Flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetFileACLFlags(IBackgroundCopyJob5* This,DWORD *Flags) {
+ return This->lpVtbl->GetFileACLFlags(This,Flags);
+}
+/*** IBackgroundCopyJob4 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetPeerCachingFlags(IBackgroundCopyJob5* This,DWORD flags) {
+ return This->lpVtbl->SetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetPeerCachingFlags(IBackgroundCopyJob5* This,DWORD *flags) {
+ return This->lpVtbl->GetPeerCachingFlags(This,flags);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetOwnerIntegrityLevel(IBackgroundCopyJob5* This,ULONG *level) {
+ return This->lpVtbl->GetOwnerIntegrityLevel(This,level);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetOwnerElevationState(IBackgroundCopyJob5* This,WINBOOL *elevated) {
+ return This->lpVtbl->GetOwnerElevationState(This,elevated);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetMaximumDownloadTime(IBackgroundCopyJob5* This,ULONG timeout) {
+ return This->lpVtbl->SetMaximumDownloadTime(This,timeout);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetMaximumDownloadTime(IBackgroundCopyJob5* This,ULONG *timeout) {
+ return This->lpVtbl->GetMaximumDownloadTime(This,timeout);
+}
+/*** IBackgroundCopyJob5 methods ***/
+static FORCEINLINE HRESULT IBackgroundCopyJob5_SetProperty(IBackgroundCopyJob5* This,BITS_JOB_PROPERTY_ID id,BITS_JOB_PROPERTY_VALUE value) {
+ return This->lpVtbl->SetProperty(This,id,value);
+}
+static FORCEINLINE HRESULT IBackgroundCopyJob5_GetProperty(IBackgroundCopyJob5* This,BITS_JOB_PROPERTY_ID id,BITS_JOB_PROPERTY_VALUE *value) {
+ return This->lpVtbl->GetProperty(This,id,value);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IBackgroundCopyJob5_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bits5_0_h__ */
diff --git a/lib/libc/include/any-windows-any/comadmin.h b/lib/libc/include/any-windows-any/comadmin.h
index 627ea4032a..2736421bbf 100644
--- a/lib/libc/include/any-windows-any/comadmin.h
+++ b/lib/libc/include/any-windows-any/comadmin.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/comadmin.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/comadmin.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/comcat.h b/lib/libc/include/any-windows-any/comcat.h
index 55af776ce4..c5cf022b77 100644
--- a/lib/libc/include/any-windows-any/comcat.h
+++ b/lib/libc/include/any-windows-any/comcat.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/comcat.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/comcat.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/comdef.h b/lib/libc/include/any-windows-any/comdef.h
index 9d4e97ffc4..cb785f8f6f 100644
--- a/lib/libc/include/any-windows-any/comdef.h
+++ b/lib/libc/include/any-windows-any/comdef.h
@@ -29,8 +29,6 @@
#ifdef __cplusplus
class _com_error;
-void WINAPI _com_raise_error(HRESULT hr,IErrorInfo *perrinfo = 0);
-void WINAPI _set_com_error_handler(void (WINAPI *pHandler)(HRESULT hr,IErrorInfo *perrinfo));
void WINAPI _com_issue_errorex(HRESULT,IUnknown*,REFIID);
HRESULT WINAPI _com_dispatch_propget(IDispatch*,DISPID,VARTYPE,void*);
HRESULT __cdecl _com_dispatch_propput(IDispatch*,DISPID,VARTYPE,...);
@@ -165,15 +163,25 @@ inline void _com_error::Ctor(const _com_error &that) throw() {
if(m_perrinfo!=NULL) m_perrinfo->AddRef();
}
-inline void _com_issue_error(HRESULT hr) {
+inline void WINAPI _com_raise_error(HRESULT hr, IErrorInfo *perrinfo = 0) {
#if __EXCEPTIONS
- throw _com_error(hr);
+ throw _com_error(hr, perrinfo);
#else
/* This is designed to use exceptions. If exceptions are disabled, there is not much we can do here. */
__debugbreak();
#endif
}
+__MINGW_SELECTANY void (WINAPI *__mingw_com_error_handler)(HRESULT hr,IErrorInfo *perrinfo) = _com_raise_error;
+
+inline void WINAPI _set_com_error_handler(void (WINAPI *pHandler)(HRESULT hr,IErrorInfo *perrinfo)) {
+ __mingw_com_error_handler = pHandler;
+}
+
+inline void WINAPI _com_issue_error(HRESULT hr) {
+ __mingw_com_error_handler(hr, NULL);
+}
+
typedef int __missing_type__;
diff --git a/lib/libc/include/any-windows-any/commoncontrols.h b/lib/libc/include/any-windows-any/commoncontrols.h
index ae18783046..c8960d6a13 100644
--- a/lib/libc/include/any-windows-any/commoncontrols.h
+++ b/lib/libc/include/any-windows-any/commoncontrols.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/commoncontrols.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/commoncontrols.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/computecore.h b/lib/libc/include/any-windows-any/computecore.h
new file mode 100644
index 0000000000..e6d53a9b06
--- /dev/null
+++ b/lib/libc/include/any-windows-any/computecore.h
@@ -0,0 +1,82 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _HYPERV_COMPUTECORE_H_
+#define _HYPERV_COMPUTECORE_H_
+
+#include <apiset.h>
+#include <apisetcconv.h>
+#include <minwindef.h>
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#include <computedefs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI HcsEnumerateComputeSystems (PCWSTR query, HCS_OPERATION operation);
+HRESULT WINAPI HcsEnumerateComputeSystemsInNamespace (PCWSTR idNamespace, PCWSTR query, HCS_OPERATION operation);
+HCS_OPERATION WINAPI HcsCreateOperation (const void *context, HCS_OPERATION_COMPLETION callback);
+void WINAPI HcsCloseOperation (HCS_OPERATION operation);
+void* WINAPI HcsGetOperationContext (HCS_OPERATION operation);
+HRESULT WINAPI HcsSetOperationContext (HCS_OPERATION operation, const void *context);
+HCS_SYSTEM WINAPI HcsGetComputeSystemFromOperation (HCS_OPERATION operation);
+HCS_PROCESS WINAPI HcsGetProcessFromOperation (HCS_OPERATION operation);
+HCS_OPERATION_TYPE WINAPI HcsGetOperationType (HCS_OPERATION operation);
+UINT64 WINAPI HcsGetOperationId (HCS_OPERATION operation);
+HRESULT WINAPI HcsGetOperationResult (HCS_OPERATION operation, PWSTR *resultDocument);
+HRESULT WINAPI HcsGetOperationResultAndProcessInfo (HCS_OPERATION operation, HCS_PROCESS_INFORMATION *processInformation, PWSTR *resultDocument);
+HRESULT WINAPI HcsGetProcessorCompatibilityFromSavedState (PCWSTR RuntimeFileName, PCWSTR *ProcessorFeaturesString);
+HRESULT WINAPI HcsWaitForOperationResult (HCS_OPERATION operation, DWORD timeoutMs, PWSTR *resultDocument);
+HRESULT WINAPI HcsWaitForOperationResultAndProcessInfo (HCS_OPERATION operation, DWORD timeoutMs, HCS_PROCESS_INFORMATION *processInformation, PWSTR *resultDocument);
+HRESULT WINAPI HcsSetOperationCallback (HCS_OPERATION operation, const void *context, HCS_OPERATION_COMPLETION callback);
+HRESULT WINAPI HcsCancelOperation (HCS_OPERATION operation);
+HRESULT WINAPI HcsCreateComputeSystem (PCWSTR id, PCWSTR configuration, HCS_OPERATION operation, const SECURITY_DESCRIPTOR *securityDescriptor, HCS_SYSTEM *computeSystem);
+HRESULT WINAPI HcsCreateComputeSystemInNamespace (PCWSTR idNamespace, PCWSTR id, PCWSTR configuration, HCS_OPERATION operation, const HCS_CREATE_OPTIONS *options, HCS_SYSTEM *computeSystem);
+HRESULT WINAPI HcsOpenComputeSystem (PCWSTR id, DWORD requestedAccess, HCS_SYSTEM *computeSystem);
+HRESULT WINAPI HcsOpenComputeSystemInNamespace (PCWSTR idNamespace, PCWSTR id, DWORD requestedAccess, HCS_SYSTEM *computeSystem);
+void WINAPI HcsCloseComputeSystem (HCS_SYSTEM computeSystem);
+HRESULT WINAPI HcsStartComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsShutDownComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsTerminateComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsCrashComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsPauseComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsResumeComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsSaveComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsGetComputeSystemProperties (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR propertyQuery);
+HRESULT WINAPI HcsModifyComputeSystem (HCS_SYSTEM computeSystem, HCS_OPERATION operation, PCWSTR configuration, HANDLE identity);
+HRESULT WINAPI HcsWaitForComputeSystemExit (HCS_SYSTEM computeSystem, DWORD timeoutMs, PWSTR *result);
+HRESULT WINAPI HcsSetComputeSystemCallback (HCS_SYSTEM computeSystem, HCS_EVENT_OPTIONS callbackOptions, const void *context, HCS_EVENT_CALLBACK callback);
+HRESULT WINAPI HcsCreateProcess (HCS_SYSTEM computeSystem, PCWSTR processParameters, HCS_OPERATION operation, const SECURITY_DESCRIPTOR *securityDescriptor, HCS_PROCESS *process);
+HRESULT WINAPI HcsOpenProcess (HCS_SYSTEM computeSystem, DWORD processId, DWORD requestedAccess, HCS_PROCESS *process);
+void WINAPI HcsCloseProcess (HCS_PROCESS process);
+HRESULT WINAPI HcsTerminateProcess (HCS_PROCESS process, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsSignalProcess (HCS_PROCESS process, HCS_OPERATION operation, PCWSTR options);
+HRESULT WINAPI HcsGetProcessInfo (HCS_PROCESS process, HCS_OPERATION operation);
+HRESULT WINAPI HcsGetProcessProperties (HCS_PROCESS process, HCS_OPERATION operation, PCWSTR propertyQuery);
+HRESULT WINAPI HcsModifyProcess (HCS_PROCESS process, HCS_OPERATION operation, PCWSTR settings);
+HRESULT WINAPI HcsSetProcessCallback (HCS_PROCESS process, HCS_EVENT_OPTIONS callbackOptions, void *context, HCS_EVENT_CALLBACK callback);
+HRESULT WINAPI HcsWaitForProcessExit (HCS_PROCESS computeSystem, DWORD timeoutMs, PWSTR *result);
+HRESULT WINAPI HcsGetServiceProperties (PCWSTR propertyQuery, PWSTR *result);
+HRESULT WINAPI HcsModifyServiceSettings (PCWSTR settings, PWSTR *result);
+HRESULT WINAPI HcsSubmitWerReport (PCWSTR settings);
+HRESULT WINAPI HcsCreateEmptyGuestStateFile (PCWSTR guestStateFilePath);
+HRESULT WINAPI HcsCreateEmptyRuntimeStateFile (PCWSTR runtimeStateFilePath);
+HRESULT WINAPI HcsGrantVmAccess (PCWSTR vmId, PCWSTR filePath);
+HRESULT WINAPI HcsRevokeVmAccess (PCWSTR vmId, PCWSTR filePath);
+HRESULT WINAPI HcsGrantVmGroupAccess (PCWSTR filePath);
+HRESULT WINAPI HcsRevokeVmGroupAccess (PCWSTR filePath);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#endif /* _HYPERV_COMPUTECORE_H_ */
diff --git a/lib/libc/include/any-windows-any/computedefs.h b/lib/libc/include/any-windows-any/computedefs.h
new file mode 100644
index 0000000000..0847e8ebc9
--- /dev/null
+++ b/lib/libc/include/any-windows-any/computedefs.h
@@ -0,0 +1,119 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _HYPERV_COMPUTEDEFS_H_
+#define _HYPERV_COMPUTEDEFS_H_
+
+DECLARE_HANDLE(HCS_SYSTEM);
+DECLARE_HANDLE(HCS_PROCESS);
+DECLARE_HANDLE(HCS_OPERATION);
+DECLARE_HANDLE(HCS_CALLBACK);
+
+typedef enum HCS_OPERATION_TYPE {
+ HcsOperationTypeNone = -1,
+ HcsOperationTypeEnumerate = 0,
+ HcsOperationTypeCreate = 1,
+ HcsOperationTypeStart = 2,
+ HcsOperationTypeShutdown = 3,
+ HcsOperationTypePause = 4,
+ HcsOperationTypeResume = 5,
+ HcsOperationTypeSave = 6,
+ HcsOperationTypeTerminate = 7,
+ HcsOperationTypeModify = 8,
+ HcsOperationTypeGetProperties = 9,
+ HcsOperationTypeCreateProcess = 10,
+ HcsOperationTypeSignalProcess = 11,
+ HcsOperationTypeGetProcessInfo = 12,
+ HcsOperationTypeGetProcessProperties = 13,
+ HcsOperationTypeModifyProcess = 14,
+ HcsOperationTypeCrash = 15
+} HCS_OPERATION_TYPE;
+
+#define HCS_INVALID_OPERATION_ID (UINT64)(-1)
+
+typedef void (CALLBACK *HCS_OPERATION_COMPLETION)(HCS_OPERATION operation, void *context);
+
+typedef enum HCS_EVENT_TYPE {
+ HcsEventInvalid = 0x00000000,
+ HcsEventSystemExited = 0x00000001,
+ HcsEventSystemCrashInitiated = 0x00000002,
+ HcsEventSystemCrashReport = 0x00000003,
+ HcsEventSystemRdpEnhancedModeStateChanged = 0x00000004,
+ HcsEventSystemSiloJobCreated = 0x00000005,
+ HcsEventSystemGuestConnectionClosed = 0x00000006,
+ HcsEventProcessExited = 0x00010000,
+ HcsEventOperationCallback = 0x01000000,
+ HcsEventServiceDisconnect = 0x02000000
+} HCS_EVENT_TYPE;
+
+typedef struct HCS_EVENT {
+ HCS_EVENT_TYPE Type;
+ PCWSTR EventData;
+ HCS_OPERATION Operation;
+} HCS_EVENT;
+
+typedef enum HCS_EVENT_OPTIONS {
+ HcsEventOptionNone = 0x00000000,
+ HcsEventOptionEnableOperationCallbacks = 0x00000001
+} HCS_EVENT_OPTIONS;
+
+DEFINE_ENUM_FLAG_OPERATORS(HCS_EVENT_OPTIONS);
+
+typedef void (CALLBACK *HCS_EVENT_CALLBACK)(HCS_EVENT *event, void *context);
+
+typedef enum HCS_NOTIFICATION_FLAGS {
+ HcsNotificationFlagSuccess = 0x00000000,
+ HcsNotificationFlagFailure = 0x80000000
+} HCS_NOTIFICATION_FLAGS;
+
+typedef enum HCS_NOTIFICATIONS {
+ HcsNotificationInvalid = 0x00000000,
+ HcsNotificationSystemExited = 0x00000001,
+ HcsNotificationSystemCreateCompleted = 0x00000002,
+ HcsNotificationSystemStartCompleted = 0x00000003,
+ HcsNotificationSystemPauseCompleted = 0x00000004,
+ HcsNotificationSystemResumeCompleted = 0x00000005,
+ HcsNotificationSystemCrashReport = 0x00000006,
+ HcsNotificationSystemSiloJobCreated = 0x00000007,
+ HcsNotificationSystemSaveCompleted = 0x00000008,
+ HcsNotificationSystemRdpEnhancedModeStateChanged = 0x00000009,
+ HcsNotificationSystemShutdownFailed = 0x0000000A,
+ HcsNotificationSystemShutdownCompleted = 0x0000000A,
+ HcsNotificationSystemGetPropertiesCompleted = 0x0000000B,
+ HcsNotificationSystemModifyCompleted = 0x0000000C,
+ HcsNotificationSystemCrashInitiated = 0x0000000D,
+ HcsNotificationSystemGuestConnectionClosed = 0x0000000E,
+ HcsNotificationSystemOperationCompletion = 0x0000000F,
+ HcsNotificationSystemPassThru = 0x00000010,
+ HcsNotificationProcessExited = 0x00010000,
+ HcsNotificationServiceDisconnect = 0x01000000,
+ HcsNotificationFlagsReserved = 0xF0000000
+} HCS_NOTIFICATIONS;
+
+typedef void (CALLBACK *HCS_NOTIFICATION_CALLBACK)(DWORD notificationType, void *context, HRESULT notificationStatus, PCWSTR notificationData);
+
+typedef struct {
+ DWORD ProcessId;
+ DWORD Reserved;
+ HANDLE StdInput;
+ HANDLE StdOutput;
+ HANDLE StdError;
+} HCS_PROCESS_INFORMATION;
+
+typedef enum HCS_CREATE_OPTIONS {
+ HcsCreateOptions_1 = 0x00010000
+}HCS_CREATE_OPTIONS;
+
+typedef struct {
+ HCS_CREATE_OPTIONS Version;
+ HANDLE UserToken;
+ SECURITY_DESCRIPTOR* SecurityDescriptor;
+ HCS_EVENT_OPTIONS CallbackOptions;
+ void* CallbackContext;
+ HCS_EVENT_CALLBACK Callback;
+} HCS_CREATE_OPTIONS_1;
+
+#endif /* _HYPERV_COMPUTEDEFS_H_ */
diff --git a/lib/libc/include/any-windows-any/computenetwork.h b/lib/libc/include/any-windows-any/computenetwork.h
new file mode 100644
index 0000000000..3fc8080153
--- /dev/null
+++ b/lib/libc/include/any-windows-any/computenetwork.h
@@ -0,0 +1,142 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef HCN_CLIENT_H
+#define HCN_CLIENT_H
+
+#include <apiset.h>
+#include <apisetcconv.h>
+#include <minwindef.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum HCN_NOTIFICATIONS {
+ HcnNotificationInvalid = 0x00000000,
+ HcnNotificationNetworkPreCreate = 0x00000001,
+ HcnNotificationNetworkCreate = 0x00000002,
+ HcnNotificationNetworkPreDelete = 0x00000003,
+ HcnNotificationNetworkDelete = 0x00000004,
+ HcnNotificationNamespaceCreate = 0x00000005,
+ HcnNotificationNamespaceDelete = 0x00000006,
+ HcnNotificationGuestNetworkServiceCreate = 0x00000007,
+ HcnNotificationGuestNetworkServiceDelete = 0x00000008,
+ HcnNotificationNetworkEndpointAttached = 0x00000009,
+ HcnNotificationNetworkEndpointDetached = 0x00000010,
+ HcnNotificationGuestNetworkServiceStateChanged = 0x00000011,
+ HcnNotificationGuestNetworkServiceInterfaceStateChanged = 0x00000012,
+ HcnNotificationServiceDisconnect = 0x01000000,
+ HcnNotificationFlagsReserved = 0xF0000000
+} HCN_NOTIFICATIONS;
+
+typedef void* HCN_CALLBACK;
+
+typedef void (CALLBACK *HCN_NOTIFICATION_CALLBACK)(DWORD NotificationType, void *Context, HRESULT NotificationStatus, PCWSTR NotificationData);
+
+typedef void* HCN_NETWORK;
+typedef HCN_NETWORK* PHCN_NETWORK;
+
+HRESULT WINAPI HcnEnumerateNetworks (PCWSTR Query, PWSTR *Networks, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCreateNetwork (REFGUID Id, PCWSTR Settings, PHCN_NETWORK Network, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnOpenNetwork (REFGUID Id, PHCN_NETWORK Network, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnModifyNetwork (HCN_NETWORK Network, PCWSTR Settings, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnQueryNetworkProperties (HCN_NETWORK Network, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnDeleteNetwork (REFGUID Id, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCloseNetwork (HCN_NETWORK Network);
+
+typedef void* HCN_NAMESPACE;
+typedef HCN_NAMESPACE* PHCN_NAMESPACE;
+
+HRESULT WINAPI HcnEnumerateNamespaces (PCWSTR Query, PWSTR *Namespaces, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCreateNamespace (REFGUID Id, PCWSTR Settings, PHCN_NAMESPACE Namespace, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnOpenNamespace (REFGUID Id, PHCN_NAMESPACE Namespace, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnModifyNamespace (HCN_NAMESPACE Namespace, PCWSTR Settings, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnQueryNamespaceProperties (HCN_NAMESPACE Namespace, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnDeleteNamespace (REFGUID Id, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCloseNamespace (HCN_NAMESPACE Namespace);
+
+typedef void* HCN_ENDPOINT;
+typedef HCN_ENDPOINT* PHCN_ENDPOINT;
+
+HRESULT WINAPI HcnEnumerateEndpoints (PCWSTR Query, PWSTR *Endpoints, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCreateEndpoint (HCN_NETWORK Network, REFGUID Id, PCWSTR Settings, PHCN_ENDPOINT Endpoint, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnOpenEndpoint (REFGUID Id, PHCN_ENDPOINT Endpoint, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnModifyEndpoint (HCN_ENDPOINT Endpoint, PCWSTR Settings, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnQueryEndpointProperties (HCN_ENDPOINT Endpoint, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnDeleteEndpoint (REFGUID Id, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCloseEndpoint (HCN_ENDPOINT Endpoint);
+
+typedef void* HCN_LOADBALANCER;
+typedef HCN_LOADBALANCER* PHCN_LOADBALANCER;
+
+HRESULT WINAPI HcnEnumerateLoadBalancers (PCWSTR Query, PWSTR *LoadBalancer, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCreateLoadBalancer (REFGUID Id, PCWSTR Settings, PHCN_LOADBALANCER LoadBalancer, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnOpenLoadBalancer (REFGUID Id, PHCN_LOADBALANCER LoadBalancer, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnModifyLoadBalancer (HCN_LOADBALANCER LoadBalancer, PCWSTR Settings, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnQueryLoadBalancerProperties (HCN_LOADBALANCER LoadBalancer, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnDeleteLoadBalancer (REFGUID Id, PWSTR *ErrorRecord);
+HRESULT WINAPI HcnCloseLoadBalancer (HCN_LOADBALANCER LoadBalancer);
+
+typedef void* HCN_SERVICE;
+typedef HCN_SERVICE* PHCN_SERVICE;
+
+HRESULT WINAPI HcnRegisterServiceCallback (HCN_NOTIFICATION_CALLBACK Callback, void *Context, HCN_CALLBACK *CallbackHandle);
+HRESULT WINAPI HcnUnregisterServiceCallback (HCN_CALLBACK CallbackHandle);
+
+typedef void* HCN_GUESTNETWORKSERVICE;
+typedef HCN_GUESTNETWORKSERVICE* PHCN_GUESTNETWORKSERVICE;
+
+HRESULT WINAPI HcnRegisterGuestNetworkServiceCallback (HCN_GUESTNETWORKSERVICE GuestNetworkService, HCN_NOTIFICATION_CALLBACK Callback, void* Context, HCN_CALLBACK* CallbackHandle);
+HRESULT WINAPI HcnUnregisterGuestNetworkServiceCallback (HCN_CALLBACK CallbackHandle);
+HRESULT WINAPI HcnCreateGuestNetworkService (REFGUID Id, PCWSTR Settings, PHCN_GUESTNETWORKSERVICE GuestNetworkService, PWSTR* ErrorRecord);
+HRESULT WINAPI HcnCloseGuestNetworkService (HCN_GUESTNETWORKSERVICE GuestNetworkService);
+HRESULT WINAPI HcnModifyGuestNetworkService (HCN_GUESTNETWORKSERVICE GuestNetworkService, PCWSTR Settings, PWSTR* ErrorRecord);
+HRESULT WINAPI HcnDeleteGuestNetworkService (REFGUID Id, PWSTR* ErrorRecord);
+
+typedef enum tagHCN_PORT_PROTOCOL {
+ HCN_PORT_PROTOCOL_TCP = 0x01,
+ HCN_PORT_PROTOCOL_UDP = 0x02,
+ HCN_PORT_PROTOCOL_BOTH = 0x03
+} HCN_PORT_PROTOCOL;
+
+typedef enum tagHCN_PORT_ACCESS {
+ HCN_PORT_ACCESS_EXCLUSIVE = 0x01,
+ HCN_PORT_ACCESS_SHARED = 0x02
+} HCN_PORT_ACCESS;
+
+typedef struct tagHCN_PORT_RANGE_RESERVATION {
+ USHORT startingPort;
+ USHORT endingPort;
+} HCN_PORT_RANGE_RESERVATION;
+
+typedef struct tagHCN_PORT_RANGE_ENTRY {
+ GUID OwningPartitionId;
+ GUID TargetPartitionId;
+ HCN_PORT_PROTOCOL Protocol;
+ UINT64 Priority;
+ UINT32 ReservationType;
+ UINT32 SharingFlags;
+ UINT32 DeliveryMode;
+ UINT16 StartingPort;
+ UINT16 EndingPort;
+} HCN_PORT_RANGE_ENTRY, *PHCN_PORT_RANGE_ENTRY;
+
+HRESULT WINAPI HcnReserveGuestNetworkServicePort (HCN_GUESTNETWORKSERVICE GuestNetworkService, HCN_PORT_PROTOCOL Protocol, HCN_PORT_ACCESS Access, USHORT Port, HANDLE* PortReservationHandle);
+HRESULT WINAPI HcnReserveGuestNetworkServicePortRange (HCN_GUESTNETWORKSERVICE GuestNetworkService, USHORT PortCount, HCN_PORT_RANGE_RESERVATION* PortRangeReservation, HANDLE* PortReservationHandle);
+HRESULT WINAPI HcnReleaseGuestNetworkServicePortReservationHandle (HANDLE PortReservationHandle);
+HRESULT WINAPI HcnEnumerateGuestNetworkPortReservations (ULONG* ReturnCount, HCN_PORT_RANGE_ENTRY** PortEntries);
+VOID WINAPI HcnFreeGuestNetworkPortReservations (HCN_PORT_RANGE_ENTRY* PortEntries);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#endif /* HCN_CLIENT_H */
diff --git a/lib/libc/include/any-windows-any/computestorage.h b/lib/libc/include/any-windows-any/computestorage.h
new file mode 100644
index 0000000000..f1155f4ac5
--- /dev/null
+++ b/lib/libc/include/any-windows-any/computestorage.h
@@ -0,0 +1,40 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _HYPERV_COMPUTESTORAGE_H_
+#define _HYPERV_COMPUTESTORAGE_H_
+
+#include <apiset.h>
+#include <apisetcconv.h>
+#include <minwindef.h>
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI HcsImportLayer (PCWSTR layerPath, PCWSTR sourceFolderPath, PCWSTR layerData);
+HRESULT WINAPI HcsExportLayer (PCWSTR layerPath, PCWSTR exportFolderPath, PCWSTR layerData, PCWSTR options);
+HRESULT WINAPI HcsExportLegacyWritableLayer (PCWSTR writableLayerMountPath, PCWSTR writableLayerFolderPath, PCWSTR exportFolderPath, PCWSTR layerData);
+HRESULT WINAPI HcsDestroyLayer (PCWSTR layerPath);
+HRESULT WINAPI HcsSetupBaseOSLayer (PCWSTR layerPath, HANDLE vhdHandle, PCWSTR options);
+HRESULT WINAPI HcsInitializeWritableLayer (PCWSTR writableLayerPath, PCWSTR layerData, PCWSTR options);
+HRESULT WINAPI HcsInitializeLegacyWritableLayer (PCWSTR writableLayerMountPath, PCWSTR writableLayerFolderPath, PCWSTR layerData, PCWSTR options);
+HRESULT WINAPI HcsAttachLayerStorageFilter (PCWSTR layerPath, PCWSTR layerData);
+HRESULT WINAPI HcsDetachLayerStorageFilter (PCWSTR layerPath);
+HRESULT WINAPI HcsFormatWritableLayerVhd (HANDLE vhdHandle);
+HRESULT WINAPI HcsGetLayerVhdMountPath (HANDLE vhdHandle, PWSTR *mountPath);
+HRESULT WINAPI HcsSetupBaseOSVolume (PCWSTR layerPath, PCWSTR volumePath, PCWSTR options);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#endif /* _HYPERV_COMPUTESTORAGE_H_ */
diff --git a/lib/libc/include/any-windows-any/control.h b/lib/libc/include/any-windows-any/control.h
index 931f8341eb..2a747b91fa 100644
--- a/lib/libc/include/any-windows-any/control.h
+++ b/lib/libc/include/any-windows-any/control.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/control.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/control.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/corecrt.h b/lib/libc/include/any-windows-any/corecrt.h
index 80572c2ea9..abb720885c 100644
--- a/lib/libc/include/any-windows-any/corecrt.h
+++ b/lib/libc/include/any-windows-any/corecrt.h
@@ -15,11 +15,6 @@
#pragma pack(push,_CRT_PACKING)
#endif
-#if !defined(_UCRT) && ((__MSVCRT_VERSION__ >= 0x1400) || (__MSVCRT_VERSION__ >= 0xE00 && __MSVCRT_VERSION__ < 0x1000))
-/* Allow both 0x1400 and 0xE00 to identify UCRT */
-#define _UCRT
-#endif
-
#ifdef __ERRCODE_DEFINED_MS
/* #define __ERRCODE_DEFINED_MS */
typedef int errcode;
diff --git a/lib/libc/include/any-windows-any/ctfutb.h b/lib/libc/include/any-windows-any/ctfutb.h
index c010bda40f..79c98fd473 100644
--- a/lib/libc/include/any-windows-any/ctfutb.h
+++ b/lib/libc/include/any-windows-any/ctfutb.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/ctfutb.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/ctfutb.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/ctype.h b/lib/libc/include/any-windows-any/ctype.h
index d6a1a5410f..bcac1c246e 100644
--- a/lib/libc/include/any-windows-any/ctype.h
+++ b/lib/libc/include/any-windows-any/ctype.h
@@ -191,7 +191,7 @@ int __cdecl isblank(int _C);
int __cdecl is_wctype(wint_t _C,wctype_t _Type);
#endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES) || defined (__cplusplus)
int __cdecl iswblank(wint_t _C);
#endif
#endif
diff --git a/lib/libc/include/any-windows-any/d3d10.h b/lib/libc/include/any-windows-any/d3d10.h
index f4a34f623a..d31585e73c 100644
--- a/lib/libc/include/any-windows-any/d3d10.h
+++ b/lib/libc/include/any-windows-any/d3d10.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d10.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d10.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d10_1.h b/lib/libc/include/any-windows-any/d3d10_1.h
index 3b14c7260f..b464a663ef 100644
--- a/lib/libc/include/any-windows-any/d3d10_1.h
+++ b/lib/libc/include/any-windows-any/d3d10_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d10_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d10_1.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d10effect.h b/lib/libc/include/any-windows-any/d3d10effect.h
index cefa10f6a1..25edd3038c 100644
--- a/lib/libc/include/any-windows-any/d3d10effect.h
+++ b/lib/libc/include/any-windows-any/d3d10effect.h
@@ -35,8 +35,8 @@ typedef enum _D3D10_DEVICE_STATE_TYPES
{
D3D10_DST_SO_BUFFERS = 1,
D3D10_DST_OM_RENDER_TARGETS,
- D3D10_DST_DEPTH_STENCIL_STATE,
- D3D10_DST_BLEND_STATE,
+ D3D10_DST_OM_DEPTH_STENCIL_STATE,
+ D3D10_DST_OM_BLEND_STATE,
D3D10_DST_VS,
D3D10_DST_VS_SAMPLERS,
D3D10_DST_VS_SHADER_RESOURCES,
diff --git a/lib/libc/include/any-windows-any/d3d10sdklayers.h b/lib/libc/include/any-windows-any/d3d10sdklayers.h
index c70f97c743..1fe21c7169 100644
--- a/lib/libc/include/any-windows-any/d3d10sdklayers.h
+++ b/lib/libc/include/any-windows-any/d3d10sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d10sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d10sdklayers.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11.h b/lib/libc/include/any-windows-any/d3d11.h
index 1b83b61b45..29c01ae5a6 100644
--- a/lib/libc/include/any-windows-any/d3d11.h
+++ b/lib/libc/include/any-windows-any/d3d11.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11_1.h b/lib/libc/include/any-windows-any/d3d11_1.h
index 3781bbb578..4f378a01c1 100644
--- a/lib/libc/include/any-windows-any/d3d11_1.h
+++ b/lib/libc/include/any-windows-any/d3d11_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11_1.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11_2.h b/lib/libc/include/any-windows-any/d3d11_2.h
index 879f793e3e..ca75be69cb 100644
--- a/lib/libc/include/any-windows-any/d3d11_2.h
+++ b/lib/libc/include/any-windows-any/d3d11_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11_2.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11_3.h b/lib/libc/include/any-windows-any/d3d11_3.h
index 657b6dc591..639c54a2bc 100644
--- a/lib/libc/include/any-windows-any/d3d11_3.h
+++ b/lib/libc/include/any-windows-any/d3d11_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11_3.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11_4.h b/lib/libc/include/any-windows-any/d3d11_4.h
index c0c725a889..8b3afc3b28 100644
--- a/lib/libc/include/any-windows-any/d3d11_4.h
+++ b/lib/libc/include/any-windows-any/d3d11_4.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11_4.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11_4.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11on12.h b/lib/libc/include/any-windows-any/d3d11on12.h
index 6dc8adfc68..b5fc71826d 100644
--- a/lib/libc/include/any-windows-any/d3d11on12.h
+++ b/lib/libc/include/any-windows-any/d3d11on12.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11on12.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11on12.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d11sdklayers.h b/lib/libc/include/any-windows-any/d3d11sdklayers.h
index a7a65bbd73..eb76747b4c 100644
--- a/lib/libc/include/any-windows-any/d3d11sdklayers.h
+++ b/lib/libc/include/any-windows-any/d3d11sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d11sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d11sdklayers.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d12.h b/lib/libc/include/any-windows-any/d3d12.h
index 77e9da05d6..fab244c5f0 100644
--- a/lib/libc/include/any-windows-any/d3d12.h
+++ b/lib/libc/include/any-windows-any/d3d12.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d12.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d12.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d12sdklayers.h b/lib/libc/include/any-windows-any/d3d12sdklayers.h
index 184775bcb8..c2c57e0c47 100644
--- a/lib/libc/include/any-windows-any/d3d12sdklayers.h
+++ b/lib/libc/include/any-windows-any/d3d12sdklayers.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d12sdklayers.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d12sdklayers.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3d12shader.h b/lib/libc/include/any-windows-any/d3d12shader.h
index 870c336412..0fb4a88271 100644
--- a/lib/libc/include/any-windows-any/d3d12shader.h
+++ b/lib/libc/include/any-windows-any/d3d12shader.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3d12shader.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3d12shader.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/d3dcommon.h b/lib/libc/include/any-windows-any/d3dcommon.h
index a09cd5e48e..1cb0e8d870 100644
--- a/lib/libc/include/any-windows-any/d3dcommon.h
+++ b/lib/libc/include/any-windows-any/d3dcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/d3dcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/d3dcommon.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -534,19 +534,19 @@ typedef enum D3D_PRIMITIVE {
D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
- D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 28,
- D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 29,
- D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 30,
- D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 31,
- D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 32,
- D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 33,
- D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 34,
- D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 35,
- D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 36,
- D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 37,
- D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 38,
- D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 39,
- D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 40,
+ D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
+ D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
+ D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
+ D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
+ D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
+ D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
+ D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
+ D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
+ D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
+ D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
+ D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
+ D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
+ D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
D3D10_PRIMITIVE_UNDEFINED = 0,
D3D10_PRIMITIVE_POINT = 1,
D3D10_PRIMITIVE_LINE = 2,
@@ -578,19 +578,19 @@ typedef enum D3D_PRIMITIVE {
D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
- D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = 28,
- D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = 29,
- D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = 30,
- D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = 31,
- D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = 32,
- D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = 33,
- D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = 34,
- D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = 35,
- D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = 36,
- D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = 37,
- D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = 38,
- D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = 39,
- D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = 40
+ D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
+ D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
+ D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
+ D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
+ D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
+ D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
+ D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
+ D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
+ D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
+ D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
+ D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
+ D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
+ D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = 39
} D3D_PRIMITIVE;
typedef enum D3D_PRIMITIVE_TOPOLOGY {
D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
diff --git a/lib/libc/include/any-windows-any/dbgprop.h b/lib/libc/include/any-windows-any/dbgprop.h
index 7207005072..124de2465d 100644
--- a/lib/libc/include/any-windows-any/dbgprop.h
+++ b/lib/libc/include/any-windows-any/dbgprop.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dbgprop.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dbgprop.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dcommon.h b/lib/libc/include/any-windows-any/dcommon.h
index aef42d5180..06fad5e717 100644
--- a/lib/libc/include/any-windows-any/dcommon.h
+++ b/lib/libc/include/any-windows-any/dcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dcommon.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dcomp.h b/lib/libc/include/any-windows-any/dcomp.h
index 58f4b8466a..21010f7db1 100644
--- a/lib/libc/include/any-windows-any/dcomp.h
+++ b/lib/libc/include/any-windows-any/dcomp.h
@@ -524,8 +524,82 @@ __CRT_UUID_DECL(IDCompositionVisualDebug,0xfed2b808,0x5eb4,0x43a0,0xae,0xa3,0x35
#endif
+#undef INTERFACE
+#define INTERFACE IDCompositionFilterEffect
+DECLARE_INTERFACE_IID_(IDCompositionFilterEffect, IDCompositionEffect, "30C421D5-8CB2-4E9F-B133-37BE270D4AC2")
+{
+ STDMETHOD(SetInput)(THIS_ UINT index, IUnknown *input, UINT flags) PURE;
+};
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDCompositionFilterEffect,0x30c421d5,0x8cb2,0x4e9f,0xb1,0x33,0x37,0xbe,0x27,0x0d,0x4a,0xc2);
#endif
+
+#undef INTERFACE
+#define INTERFACE IDCompositionSaturationEffect
+DECLARE_INTERFACE_IID_(IDCompositionSaturationEffect, IDCompositionFilterEffect, "A08DEBDA-3258-4FA4-9F16-9174D3FE93B1")
+{
+#if defined(_MSC_VER) && defined(__cplusplus)
+ STDMETHOD(SetSaturation)(THIS_ float ratio) PURE;
+ STDMETHOD(SetSaturation)(THIS_ IDCompositionAnimation* animation) PURE;
+#else
+ STDMETHOD(SetSaturation)(THIS_ IDCompositionAnimation* animation) PURE;
+ STDMETHOD(SetSaturation)(THIS_ float ratio ) PURE;
+#endif
+};
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDCompositionSaturationEffect,0xa08debda,0x3258,0x4fa4,0x9f,0x16,0x91,0x74,0xd3,0xfe,0x93,0xb1);
+#endif
+
+
+#undef INTERFACE
+#define INTERFACE IDCompositionGaussianBlurEffect
+DECLARE_INTERFACE_IID_(IDCompositionGaussianBlurEffect, IDCompositionFilterEffect, "45D4D0B7-1BD4-454E-8894-2BFA68443033")
+{
+
+#if defined(_MSC_VER) && defined(__cplusplus)
+ STDMETHOD(SetStandardDeviation)(THIS_ float amount) PURE;
+ STDMETHOD(SetStandardDeviation)(THIS_ IDCompositionAnimation* animation) PURE;
+#else
+ STDMETHOD(SetStandardDeviation)(THIS_ IDCompositionAnimation* animation) PURE;
+ STDMETHOD(SetStandardDeviation)(THIS_ float amount) PURE;
+#endif
+ STDMETHOD(SetBorderMode)(THIS_ D2D1_BORDER_MODE mode) PURE;
+};
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDCompositionGaussianBlurEffect,0x45d4d0b7,0x1bd4,0x454e,0x88,0x94,0x2b,0xfa,0x68,0x44,0x30,0x33);
+#endif
+
+
+/* WARNING: some of the arguments are replaced with void*, only what's used has been kept */
+#undef INTERFACE
+#define INTERFACE IDCompositionDevice3
+DECLARE_INTERFACE_IID_(IDCompositionDevice3, IDCompositionDevice2, "0987CB06-F916-48BF-8D35-CE7641781BD9")
+{
+ STDMETHOD(CreateGaussianBlurEffect)(THIS_ IDCompositionGaussianBlurEffect **gaussianBlurEffect) PURE;
+ STDMETHOD(CreateBrightnessEffect)(THIS_ /* TODO IDCompositionBrightnessEffect */ void **brightnessEffect) PURE;
+ STDMETHOD(CreateColorMatrixEffect)(THIS_ /* TODO IDCompositionColorMatrixEffect */ void **colorMatrixEffect) PURE;
+ STDMETHOD(CreateShadowEffect)(THIS_ /* TODO IDCompositionShadowEffect */ void **shadowEffect) PURE;
+ STDMETHOD(CreateHueRotationEffect)(THIS_ /* IDCompositionHueRotationEffect */ void **hueRotationEffect) PURE;
+ STDMETHOD(CreateSaturationEffect)(THIS_ IDCompositionSaturationEffect **saturationEffect) PURE;
+ STDMETHOD(CreateTurbulenceEffect)(THIS_ /* IDCompositionTurbulenceEffect */ void **turbulenceEffect) PURE;
+ STDMETHOD(CreateLinearTransferEffect)(THIS_ /* IDCompositionLinearTransferEffect */ void **linearTransferEffect) PURE;
+ STDMETHOD(CreateTableTransferEffect)(THIS_ /* IDCompositionTableTransferEffect */ void **tableTransferEffect) PURE;
+ STDMETHOD(CreateCompositeEffect)(THIS_ /* IDCompositionCompositeEffect */ void **compositeEffect) PURE;
+ STDMETHOD(CreateBlendEffect)(THIS_ /* TODO IDCompositionBlendEffect */ void **blendEffect) PURE;
+ STDMETHOD(CreateArithmeticCompositeEffect)(THIS_ /* IDCompositionArithmeticCompositeEffect */ void **arithmeticCompositeEffect) PURE;
+ STDMETHOD(CreateAffineTransform2DEffect)(THIS_ /* IDCompositionAffineTransform2DEffect */ void **affineTransform2dEffect) PURE;
+};
+
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDCompositionDevice3,0x0987cb06,0xf916,0x48bf,0x8d,0x35,0xce,0x76,0x41,0x78,0x1b,0xd9);
+#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
#if (_WIN32_WINNT >= 0x0A00)
STDAPI DCompositionCreateDevice3(IUnknown *renderingDevice, REFIID iid, void **dcompositionDevice);
diff --git a/lib/libc/include/any-windows-any/dcompanimation.h b/lib/libc/include/any-windows-any/dcompanimation.h
index 5a74d04a5b..5de9698bd2 100644
--- a/lib/libc/include/any-windows-any/dcompanimation.h
+++ b/lib/libc/include/any-windows-any/dcompanimation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dcompanimation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dcompanimation.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/ddk/ata.h b/lib/libc/include/any-windows-any/ddk/ata.h
new file mode 100644
index 0000000000..2d95717e88
--- /dev/null
+++ b/lib/libc/include/any-windows-any/ddk/ata.h
@@ -0,0 +1,1732 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _NTATA_
+#define _NTATA_
+
+#pragma pack(push,1)
+
+typedef struct _IDENTIFY_DEVICE_DATA {
+ struct {
+ USHORT Reserved1 : 1;
+ USHORT Retired3 : 1;
+ USHORT ResponseIncomplete : 1;
+ USHORT Retired2 : 3;
+ USHORT FixedDevice : 1;
+ USHORT RemovableMedia : 1;
+ USHORT Retired1 : 7;
+ USHORT DeviceType : 1;
+ } GeneralConfiguration;
+ USHORT NumCylinders;
+ USHORT SpecificConfiguration;
+ USHORT NumHeads;
+ USHORT Retired1[2];
+ USHORT NumSectorsPerTrack;
+ USHORT VendorUnique1[3];
+ UCHAR SerialNumber[20];
+ USHORT Retired2[2];
+ USHORT Obsolete1;
+ UCHAR FirmwareRevision[8];
+ UCHAR ModelNumber[40];
+ UCHAR MaximumBlockTransfer;
+ UCHAR VendorUnique2;
+ struct {
+ USHORT FeatureSupported : 1;
+ USHORT Reserved : 15;
+ } TrustedComputing;
+ struct {
+ UCHAR CurrentLongPhysicalSectorAlignment : 2;
+ UCHAR ReservedByte49 : 6;
+ UCHAR DmaSupported : 1;
+ UCHAR LbaSupported : 1;
+ UCHAR IordyDisable : 1;
+ UCHAR IordySupported : 1;
+ UCHAR Reserved1 : 1;
+ UCHAR StandybyTimerSupport : 1;
+ UCHAR Reserved2 : 2;
+ USHORT ReservedWord50;
+ } Capabilities;
+ USHORT ObsoleteWords51[2];
+ USHORT TranslationFieldsValid : 3;
+ USHORT Reserved3 : 5;
+ USHORT FreeFallControlSensitivity : 8;
+ USHORT NumberOfCurrentCylinders;
+ USHORT NumberOfCurrentHeads;
+ USHORT CurrentSectorsPerTrack;
+ ULONG CurrentSectorCapacity;
+ UCHAR CurrentMultiSectorSetting;
+ UCHAR MultiSectorSettingValid : 1;
+ UCHAR ReservedByte59 : 3;
+ UCHAR SanitizeFeatureSupported : 1;
+ UCHAR CryptoScrambleExtCommandSupported : 1;
+ UCHAR OverwriteExtCommandSupported : 1;
+ UCHAR BlockEraseExtCommandSupported : 1;
+ ULONG UserAddressableSectors;
+ USHORT ObsoleteWord62;
+ USHORT MultiWordDMASupport : 8;
+ USHORT MultiWordDMAActive : 8;
+ USHORT AdvancedPIOModes : 8;
+ USHORT ReservedByte64 : 8;
+ USHORT MinimumMWXferCycleTime;
+ USHORT RecommendedMWXferCycleTime;
+ USHORT MinimumPIOCycleTime;
+ USHORT MinimumPIOCycleTimeIORDY;
+ struct {
+ USHORT ZonedCapabilities : 2;
+ USHORT NonVolatileWriteCache : 1;
+ USHORT ExtendedUserAddressableSectorsSupported : 1;
+ USHORT DeviceEncryptsAllUserData : 1;
+ USHORT ReadZeroAfterTrimSupported : 1;
+ USHORT Optional28BitCommandsSupported : 1;
+ USHORT IEEE1667 : 1;
+ USHORT DownloadMicrocodeDmaSupported : 1;
+ USHORT SetMaxSetPasswordUnlockDmaSupported : 1;
+ USHORT WriteBufferDmaSupported : 1;
+ USHORT ReadBufferDmaSupported : 1;
+ USHORT DeviceConfigIdentifySetDmaSupported : 1;
+ USHORT LPSAERCSupported : 1;
+ USHORT DeterministicReadAfterTrimSupported : 1;
+ USHORT CFastSpecSupported : 1;
+ } AdditionalSupported;
+ USHORT ReservedWords70[5];
+ USHORT QueueDepth : 5;
+ USHORT ReservedWord75 : 11;
+ struct {
+ USHORT Reserved0 : 1;
+ USHORT SataGen1 : 1;
+ USHORT SataGen2 : 1;
+ USHORT SataGen3 : 1;
+ USHORT Reserved1 : 4;
+ USHORT NCQ : 1;
+ USHORT HIPM : 1;
+ USHORT PhyEvents : 1;
+ USHORT NcqUnload : 1;
+ USHORT NcqPriority : 1;
+ USHORT HostAutoPS : 1;
+ USHORT DeviceAutoPS : 1;
+ USHORT ReadLogDMA : 1;
+ USHORT Reserved2 : 1;
+ USHORT CurrentSpeed : 3;
+ USHORT NcqStreaming : 1;
+ USHORT NcqQueueMgmt : 1;
+ USHORT NcqReceiveSend : 1;
+ USHORT DEVSLPtoReducedPwrState : 1;
+ USHORT Reserved3 : 8;
+ } SerialAtaCapabilities;
+ struct {
+ USHORT Reserved0 : 1;
+ USHORT NonZeroOffsets : 1;
+ USHORT DmaSetupAutoActivate : 1;
+ USHORT DIPM : 1;
+ USHORT InOrderData : 1;
+ USHORT HardwareFeatureControl : 1;
+ USHORT SoftwareSettingsPreservation : 1;
+ USHORT NCQAutosense : 1;
+ USHORT DEVSLP : 1;
+ USHORT HybridInformation : 1;
+ USHORT Reserved1 : 6;
+ } SerialAtaFeaturesSupported;
+ struct {
+ USHORT Reserved0 : 1;
+ USHORT NonZeroOffsets : 1;
+ USHORT DmaSetupAutoActivate : 1;
+ USHORT DIPM : 1;
+ USHORT InOrderData : 1;
+ USHORT HardwareFeatureControl : 1;
+ USHORT SoftwareSettingsPreservation : 1;
+ USHORT DeviceAutoPS : 1;
+ USHORT DEVSLP : 1;
+ USHORT HybridInformation : 1;
+ USHORT Reserved1 : 6;
+ } SerialAtaFeaturesEnabled;
+ USHORT MajorRevision;
+ USHORT MinorRevision;
+ struct {
+ USHORT SmartCommands : 1;
+ USHORT SecurityMode : 1;
+ USHORT RemovableMediaFeature : 1;
+ USHORT PowerManagement : 1;
+ USHORT Reserved1 : 1;
+ USHORT WriteCache : 1;
+ USHORT LookAhead : 1;
+ USHORT ReleaseInterrupt : 1;
+ USHORT ServiceInterrupt : 1;
+ USHORT DeviceReset : 1;
+ USHORT HostProtectedArea : 1;
+ USHORT Obsolete1 : 1;
+ USHORT WriteBuffer : 1;
+ USHORT ReadBuffer : 1;
+ USHORT Nop : 1;
+ USHORT Obsolete2 : 1;
+ USHORT DownloadMicrocode : 1;
+ USHORT DmaQueued : 1;
+ USHORT Cfa : 1;
+ USHORT AdvancedPm : 1;
+ USHORT Msn : 1;
+ USHORT PowerUpInStandby : 1;
+ USHORT ManualPowerUp : 1;
+ USHORT Reserved2 : 1;
+ USHORT SetMax : 1;
+ USHORT Acoustics : 1;
+ USHORT BigLba : 1;
+ USHORT DeviceConfigOverlay : 1;
+ USHORT FlushCache : 1;
+ USHORT FlushCacheExt : 1;
+ USHORT WordValid83 : 2;
+ USHORT SmartErrorLog : 1;
+ USHORT SmartSelfTest : 1;
+ USHORT MediaSerialNumber : 1;
+ USHORT MediaCardPassThrough : 1;
+ USHORT StreamingFeature : 1;
+ USHORT GpLogging : 1;
+ USHORT WriteFua : 1;
+ USHORT WriteQueuedFua : 1;
+ USHORT WWN64Bit : 1;
+ USHORT URGReadStream : 1;
+ USHORT URGWriteStream : 1;
+ USHORT ReservedForTechReport : 2;
+ USHORT IdleWithUnloadFeature : 1;
+ USHORT WordValid : 2;
+ } CommandSetSupport;
+ struct {
+ USHORT SmartCommands : 1;
+ USHORT SecurityMode : 1;
+ USHORT RemovableMediaFeature : 1;
+ USHORT PowerManagement : 1;
+ USHORT Reserved1 : 1;
+ USHORT WriteCache : 1;
+ USHORT LookAhead : 1;
+ USHORT ReleaseInterrupt : 1;
+ USHORT ServiceInterrupt : 1;
+ USHORT DeviceReset : 1;
+ USHORT HostProtectedArea : 1;
+ USHORT Obsolete1 : 1;
+ USHORT WriteBuffer : 1;
+ USHORT ReadBuffer : 1;
+ USHORT Nop : 1;
+ USHORT Obsolete2 : 1;
+ USHORT DownloadMicrocode : 1;
+ USHORT DmaQueued : 1;
+ USHORT Cfa : 1;
+ USHORT AdvancedPm : 1;
+ USHORT Msn : 1;
+ USHORT PowerUpInStandby : 1;
+ USHORT ManualPowerUp : 1;
+ USHORT Reserved2 : 1;
+ USHORT SetMax : 1;
+ USHORT Acoustics : 1;
+ USHORT BigLba : 1;
+ USHORT DeviceConfigOverlay : 1;
+ USHORT FlushCache : 1;
+ USHORT FlushCacheExt : 1;
+ USHORT Resrved3 : 1;
+ USHORT Words119_120Valid : 1;
+ USHORT SmartErrorLog : 1;
+ USHORT SmartSelfTest : 1;
+ USHORT MediaSerialNumber : 1;
+ USHORT MediaCardPassThrough : 1;
+ USHORT StreamingFeature : 1;
+ USHORT GpLogging : 1;
+ USHORT WriteFua : 1;
+ USHORT WriteQueuedFua : 1;
+ USHORT WWN64Bit : 1;
+ USHORT URGReadStream : 1;
+ USHORT URGWriteStream : 1;
+ USHORT ReservedForTechReport : 2;
+ USHORT IdleWithUnloadFeature : 1;
+ USHORT Reserved4 : 2;
+ } CommandSetActive;
+ USHORT UltraDMASupport : 8;
+ USHORT UltraDMAActive : 8;
+ struct {
+ USHORT TimeRequired : 15;
+ USHORT ExtendedTimeReported : 1;
+ } NormalSecurityEraseUnit;
+ struct {
+ USHORT TimeRequired : 15;
+ USHORT ExtendedTimeReported : 1;
+ } EnhancedSecurityEraseUnit;
+ USHORT CurrentAPMLevel : 8;
+ USHORT ReservedWord91 : 8;
+ USHORT MasterPasswordID;
+ USHORT HardwareResetResult;
+ USHORT CurrentAcousticValue : 8;
+ USHORT RecommendedAcousticValue : 8;
+ USHORT StreamMinRequestSize;
+ USHORT StreamingTransferTimeDMA;
+ USHORT StreamingAccessLatencyDMAPIO;
+ ULONG StreamingPerfGranularity;
+ ULONG Max48BitLBA[2];
+ USHORT StreamingTransferTime;
+ USHORT DsmCap;
+ struct {
+ USHORT LogicalSectorsPerPhysicalSector : 4;
+ USHORT Reserved0 : 8;
+ USHORT LogicalSectorLongerThan256Words : 1;
+ USHORT MultipleLogicalSectorsPerPhysicalSector : 1;
+ USHORT Reserved1 : 2;
+ } PhysicalLogicalSectorSize;
+ USHORT InterSeekDelay;
+ USHORT WorldWideName[4];
+ USHORT ReservedForWorldWideName128[4];
+ USHORT ReservedForTlcTechnicalReport;
+ USHORT WordsPerLogicalSector[2];
+ struct {
+ USHORT ReservedForDrqTechnicalReport : 1;
+ USHORT WriteReadVerify : 1;
+ USHORT WriteUncorrectableExt : 1;
+ USHORT ReadWriteLogDmaExt : 1;
+ USHORT DownloadMicrocodeMode3 : 1;
+ USHORT FreefallControl : 1;
+ USHORT SenseDataReporting : 1;
+ USHORT ExtendedPowerConditions : 1;
+ USHORT Reserved0 : 6;
+ USHORT WordValid : 2;
+ } CommandSetSupportExt;
+ struct {
+ USHORT ReservedForDrqTechnicalReport : 1;
+ USHORT WriteReadVerify : 1;
+ USHORT WriteUncorrectableExt : 1;
+ USHORT ReadWriteLogDmaExt : 1;
+ USHORT DownloadMicrocodeMode3 : 1;
+ USHORT FreefallControl : 1;
+ USHORT SenseDataReporting : 1;
+ USHORT ExtendedPowerConditions : 1;
+ USHORT Reserved0 : 6;
+ USHORT Reserved1 : 2;
+ } CommandSetActiveExt;
+ USHORT ReservedForExpandedSupportandActive[6];
+ USHORT MsnSupport : 2;
+ USHORT ReservedWord127 : 14;
+ struct {
+ USHORT SecuritySupported : 1;
+ USHORT SecurityEnabled : 1;
+ USHORT SecurityLocked : 1;
+ USHORT SecurityFrozen : 1;
+ USHORT SecurityCountExpired : 1;
+ USHORT EnhancedSecurityEraseSupported : 1;
+ USHORT Reserved0 : 2;
+ USHORT SecurityLevel : 1;
+ USHORT Reserved1 : 7;
+ } SecurityStatus;
+ USHORT ReservedWord129[31];
+ struct {
+ USHORT MaximumCurrentInMA : 12;
+ USHORT CfaPowerMode1Disabled : 1;
+ USHORT CfaPowerMode1Required : 1;
+ USHORT Reserved0 : 1;
+ USHORT Word160Supported : 1;
+ } CfaPowerMode1;
+ USHORT ReservedForCfaWord161[7];
+ USHORT NominalFormFactor : 4;
+ USHORT ReservedWord168 : 12;
+ struct {
+ USHORT SupportsTrim : 1;
+ USHORT Reserved0 : 15;
+ } DataSetManagementFeature;
+ USHORT AdditionalProductID[4];
+ USHORT ReservedForCfaWord174[2];
+ USHORT CurrentMediaSerialNumber[30];
+ struct {
+ USHORT Supported : 1;
+ USHORT Reserved0 : 1;
+ USHORT WriteSameSuported : 1;
+ USHORT ErrorRecoveryControlSupported : 1;
+ USHORT FeatureControlSuported : 1;
+ USHORT DataTablesSuported : 1;
+ USHORT Reserved1 : 6;
+ USHORT VendorSpecific : 4;
+ } SCTCommandTransport;
+ USHORT ReservedWord207[2];
+ struct {
+ USHORT AlignmentOfLogicalWithinPhysical : 14;
+ USHORT Word209Supported : 1;
+ USHORT Reserved0 : 1;
+ } BlockAlignment;
+ USHORT WriteReadVerifySectorCountMode3Only[2];
+ USHORT WriteReadVerifySectorCountMode2Only[2];
+ struct {
+ USHORT NVCachePowerModeEnabled : 1;
+ USHORT Reserved0 : 3;
+ USHORT NVCacheFeatureSetEnabled : 1;
+ USHORT Reserved1 : 3;
+ USHORT NVCachePowerModeVersion : 4;
+ USHORT NVCacheFeatureSetVersion : 4;
+ } NVCacheCapabilities;
+ USHORT NVCacheSizeLSW;
+ USHORT NVCacheSizeMSW;
+ USHORT NominalMediaRotationRate;
+ USHORT ReservedWord218;
+ struct {
+ UCHAR NVCacheEstimatedTimeToSpinUpInSeconds;
+ UCHAR Reserved;
+ } NVCacheOptions;
+ USHORT WriteReadVerifySectorCountMode : 8;
+ USHORT ReservedWord220 : 8;
+ USHORT ReservedWord221;
+ struct {
+ USHORT MajorVersion : 12;
+ USHORT TransportType : 4;
+ } TransportMajorVersion;
+ USHORT TransportMinorVersion;
+ USHORT ReservedWord224[6];
+ ULONG ExtendedNumberOfUserAddressableSectors[2];
+ USHORT MinBlocksPerDownloadMicrocodeMode03;
+ USHORT MaxBlocksPerDownloadMicrocodeMode03;
+ USHORT ReservedWord236[19];
+ USHORT Signature : 8;
+ USHORT CheckSum : 8;
+} IDENTIFY_DEVICE_DATA, *PIDENTIFY_DEVICE_DATA;
+
+typedef struct _IDENTIFY_PACKET_DATA {
+ struct {
+ USHORT PacketType : 2;
+ USHORT IncompleteResponse : 1;
+ USHORT Reserved1 : 2;
+ USHORT DrqDelay : 2;
+ USHORT RemovableMedia : 1;
+ USHORT CommandPacketType : 5;
+ USHORT Reserved2 : 1;
+ USHORT DeviceType : 2;
+ } GeneralConfiguration;
+ USHORT ResevedWord1;
+ USHORT UniqueConfiguration;
+ USHORT ReservedWords3[7];
+ UCHAR SerialNumber[20];
+ USHORT ReservedWords20[3];
+ UCHAR FirmwareRevision[8];
+ UCHAR ModelNumber[40];
+ USHORT ReservedWords47[2];
+ struct {
+ USHORT VendorSpecific : 8;
+ USHORT DmaSupported : 1;
+ USHORT LbaSupported : 1;
+ USHORT IordyDisabled : 1;
+ USHORT IordySupported : 1;
+ USHORT Obsolete : 1;
+ USHORT OverlapSupported : 1;
+ USHORT QueuedCommandsSupported : 1;
+ USHORT InterleavedDmaSupported : 1;
+ USHORT DeviceSpecificStandbyTimerValueMin : 1;
+ USHORT Obsolete1 : 1;
+ USHORT ReservedWord50 : 12;
+ USHORT WordValid : 2;
+ } Capabilities;
+ USHORT ObsoleteWords51[2];
+ USHORT TranslationFieldsValid : 3;
+ USHORT Reserved3 : 13;
+ USHORT ReservedWords54[8];
+ struct {
+ USHORT UDMA0Supported : 1;
+ USHORT UDMA1Supported : 1;
+ USHORT UDMA2Supported : 1;
+ USHORT UDMA3Supported : 1;
+ USHORT UDMA4Supported : 1;
+ USHORT UDMA5Supported : 1;
+ USHORT UDMA6Supported : 1;
+ USHORT MDMA0Supported : 1;
+ USHORT MDMA1Supported : 1;
+ USHORT MDMA2Supported : 1;
+ USHORT DMASupported : 1;
+ USHORT ReservedWord62 : 4;
+ USHORT DMADIRBitRequired : 1;
+ } DMADIR;
+ USHORT MultiWordDMASupport : 8;
+ USHORT MultiWordDMAActive : 8;
+ USHORT AdvancedPIOModes : 8;
+ USHORT ReservedByte64 : 8;
+ USHORT MinimumMWXferCycleTime;
+ USHORT RecommendedMWXferCycleTime;
+ USHORT MinimumPIOCycleTime;
+ USHORT MinimumPIOCycleTimeIORDY;
+ USHORT ReservedWords69[2];
+ USHORT BusReleaseDelay;
+ USHORT ServiceCommandDelay;
+ USHORT ReservedWords73[2];
+ USHORT QueueDepth : 5;
+ USHORT ReservedWord75 : 11;
+ struct {
+ USHORT Reserved0 : 1;
+ USHORT SataGen1 : 1;
+ USHORT SataGen2 : 1;
+ USHORT SataGen3 : 1;
+ USHORT Reserved1 : 5;
+ USHORT HIPM : 1;
+ USHORT PhyEvents : 1;
+ USHORT Reserved3 : 2;
+ USHORT HostAutoPS : 1;
+ USHORT DeviceAutoPS : 1;
+ USHORT Reserved4 : 1;
+ USHORT Reserved5 : 1;
+ USHORT CurrentSpeed : 3;
+ USHORT SlimlineDeviceAttention : 1;
+ USHORT HostEnvironmentDetect : 1;
+ USHORT Reserved : 10;
+ } SerialAtaCapabilities;
+ struct {
+ USHORT Reserved0 : 1;
+ USHORT Reserved1 : 2;
+ USHORT DIPM : 1;
+ USHORT Reserved2 : 1;
+ USHORT AsynchronousNotification : 1;
+ USHORT SoftwareSettingsPreservation : 1;
+ USHORT Reserved3 : 9;
+ } SerialAtaFeaturesSupported;
+ struct {
+ USHORT Reserved0 : 1;
+ USHORT Reserved1 : 2;
+ USHORT DIPM : 1;
+ USHORT Reserved2 : 1;
+ USHORT AsynchronousNotification : 1;
+ USHORT SoftwareSettingsPreservation : 1;
+ USHORT DeviceAutoPS : 1;
+ USHORT Reserved3 : 8;
+ } SerialAtaFeaturesEnabled;
+ USHORT MajorRevision;
+ USHORT MinorRevision;
+ struct {
+ USHORT SmartCommands : 1;
+ USHORT SecurityMode : 1;
+ USHORT RemovableMedia : 1;
+ USHORT PowerManagement : 1;
+ USHORT PacketCommands : 1;
+ USHORT WriteCache : 1;
+ USHORT LookAhead : 1;
+ USHORT ReleaseInterrupt : 1;
+ USHORT ServiceInterrupt : 1;
+ USHORT DeviceReset : 1;
+ USHORT HostProtectedArea : 1;
+ USHORT Obsolete1 : 1;
+ USHORT WriteBuffer : 1;
+ USHORT ReadBuffer : 1;
+ USHORT Nop : 1;
+ USHORT Obsolete2 : 1;
+ USHORT DownloadMicrocode : 1;
+ USHORT Reserved1 : 2;
+ USHORT AdvancedPm : 1;
+ USHORT Msn : 1;
+ USHORT PowerUpInStandby : 1;
+ USHORT ManualPowerUp : 1;
+ USHORT Reserved2 : 1;
+ USHORT SetMax : 1;
+ USHORT Reserved3 : 3;
+ USHORT FlushCache : 1;
+ USHORT Reserved4 : 1;
+ USHORT WordValid : 2;
+ } CommandSetSupport;
+ struct {
+ USHORT Reserved0 : 5;
+ USHORT GpLogging : 1;
+ USHORT Reserved1 : 2;
+ USHORT WWN64Bit : 1;
+ USHORT Reserved2 : 5;
+ USHORT WordValid : 2;
+ } CommandSetSupportExt;
+ struct {
+ USHORT SmartCommands : 1;
+ USHORT SecurityMode : 1;
+ USHORT RemovableMedia : 1;
+ USHORT PowerManagement : 1;
+ USHORT PacketCommands : 1;
+ USHORT WriteCache : 1;
+ USHORT LookAhead : 1;
+ USHORT ReleaseInterrupt : 1;
+ USHORT ServiceInterrupt : 1;
+ USHORT DeviceReset : 1;
+ USHORT HostProtectedArea : 1;
+ USHORT Obsolete1 : 1;
+ USHORT WriteBuffer : 1;
+ USHORT ReadBuffer : 1;
+ USHORT Nop : 1;
+ USHORT Obsolete2 : 1;
+ USHORT DownloadMicrocode : 1;
+ USHORT Reserved1 : 2;
+ USHORT AdvancedPm : 1;
+ USHORT Msn : 1;
+ USHORT PowerUpInStandby : 1;
+ USHORT ManualPowerUp : 1;
+ USHORT Reserved2 : 1;
+ USHORT SetMax : 1;
+ USHORT Reserved3 : 3;
+ USHORT FlushCache : 1;
+ USHORT Reserved : 3;
+ } CommandSetActive;
+ struct {
+ USHORT Reserved0 : 5;
+ USHORT GpLogging : 1;
+ USHORT Reserved1 : 2;
+ USHORT WWN64Bit : 1;
+ USHORT Reserved2 : 5;
+ USHORT WordValid : 2;
+ } CommandSetActiveExt;
+ USHORT UltraDMASupport : 8;
+ USHORT UltraDMAActive : 8;
+ USHORT TimeRequiredForNormalEraseModeSecurityEraseUnit;
+ USHORT TimeRequiredForEnhancedEraseModeSecurityEraseUnit;
+ USHORT CurrentAPMLevel;
+ USHORT MasterPasswordID;
+ USHORT HardwareResetResult;
+ USHORT ReservedWords94[14];
+ USHORT WorldWideName[4];
+ USHORT ReservedWords112[13];
+ USHORT AtapiZeroByteCount;
+ USHORT ReservedWord126;
+ USHORT MsnSupport : 2;
+ USHORT ReservedWord127 : 14;
+ USHORT SecurityStatus;
+ USHORT VendorSpecific[31];
+ USHORT ReservedWord160[16];
+ USHORT ReservedWord176[46];
+ struct {
+ USHORT MajorVersion : 12;
+ USHORT TransportType : 4;
+ } TransportMajorVersion;
+ USHORT TransportMinorVersion;
+ USHORT ReservedWord224[31];
+ USHORT Signature : 8;
+ USHORT CheckSum : 8;
+} IDENTIFY_PACKET_DATA, *PIDENTIFY_PACKET_DATA;
+
+typedef struct _REGISTER_FIS {
+ UCHAR FisType;
+ UCHAR Reserved0 : 7;
+ UCHAR CmdReg : 1;
+ UCHAR Command;
+ UCHAR Features;
+ UCHAR SectorNumber;
+ UCHAR CylinderLow;
+ UCHAR CylinderHigh;
+ UCHAR DeviceHead;
+ UCHAR SectorNumberExp;
+ UCHAR CylinderLowExp;
+ UCHAR CylinderHighExp;
+ UCHAR FeaturesExp;
+ UCHAR SectorCount;
+ UCHAR SectorCountExp;
+ UCHAR Reserved2;
+ UCHAR Control;
+ ULONG Reserved3;
+} REGISTER_FIS, *PREGISTER_FIS;
+
+typedef union _ATA_HYBRID_INFO_FIELDS {
+ _ANONYMOUS_STRUCT struct {
+ UCHAR HybridPriority : 4;
+ UCHAR Reserved0 : 1;
+ UCHAR InfoValid : 1;
+ UCHAR Reserved1 : 2;
+ } DUMMYSTRUCTNAME;
+ UCHAR AsUchar;
+} ATA_HYBRID_INFO_FIELDS, *PATA_HYBRID_INFO_FIELDS;
+
+typedef struct _DEVICE_SET_PASSWORD {
+ struct {
+ USHORT PasswordIdentifier : 1;
+ USHORT Reserved1 : 7;
+ USHORT MasterPasswordCapability : 1;
+ USHORT Reserved2 : 7;
+ } ControlWord;
+ USHORT Password[16];
+ USHORT MasterPasswordIdentifier;
+ USHORT Reserved[238];
+} DEVICE_SET_PASSWORD, *PDEVICE_SET_PASSWORD;
+
+typedef struct _IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER {
+ ULONGLONG RevisionNumber : 16;
+ ULONGLONG PageNumber : 8;
+ ULONGLONG Reserved : 39;
+ ULONGLONG Valid : 1;
+} IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER, *PIDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER;
+
+typedef struct _IDENTIFY_DEVICE_DATA_LOG_PAGE_SUPPORTED_CAPABILITIES {
+ IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG WRV : 1;
+ ULONGLONG WriteUncorrectable : 1;
+ ULONGLONG GplDma : 1;
+ ULONGLONG DmMode3 : 1;
+ ULONGLONG FreeFall : 1;
+ ULONGLONG SenseData : 1;
+ ULONGLONG EPC : 1;
+ ULONGLONG SmartErrorLogging : 1;
+ ULONGLONG SmartSelfTest : 1;
+ ULONGLONG Reserved9 : 1;
+ ULONGLONG Streaming : 1;
+ ULONGLONG GPL : 1;
+ ULONGLONG WriteFuaExt : 1;
+ ULONGLONG Unload : 1;
+ ULONGLONG DownloadMicrocode : 1;
+ ULONGLONG Reserved15ForCFA : 1;
+ ULONGLONG APM : 1;
+ ULONGLONG PUIS : 1;
+ ULONGLONG SpinUp : 1;
+ ULONGLONG Reserved19 : 1;
+ ULONGLONG Cmd48Bit : 1;
+ ULONGLONG Reserved21 : 1;
+ ULONGLONG FlushCacheExt : 1;
+ ULONGLONG Smart : 1;
+ ULONGLONG VolatileWriteCache : 1;
+ ULONGLONG ReadLookahead : 1;
+ ULONGLONG Reserved26 : 1;
+ ULONGLONG WriteBuffer : 1;
+ ULONGLONG ReadBuffer : 1;
+ ULONGLONG NOP : 1;
+ ULONGLONG Reserved30 : 1;
+ ULONGLONG RZAT : 1;
+ ULONGLONG Cmd28bit : 1;
+ ULONGLONG DownloadMicrocodeDma : 1;
+ ULONGLONG Reserved34 : 1;
+ ULONGLONG WriteBufferDma : 1;
+ ULONGLONG ReadBufferDma : 1;
+ ULONGLONG Reserved37 : 1;
+ ULONGLONG LpsMisalignmentReporting : 1;
+ ULONGLONG DRAT : 1;
+ ULONGLONG Reserved40ForCFA : 1;
+ ULONGLONG AmaxAddr : 1;
+ ULONGLONG SetEpcPowerSource : 1;
+ ULONGLONG LowPowerStandby : 1;
+ ULONGLONG DSN : 1;
+ ULONGLONG RequestSenseDeviceFault : 1;
+ ULONGLONG Reserved : 17;
+ ULONGLONG Valid : 1;
+ } SupportedCapabilities;
+ struct {
+ ULONGLONG DmMinTransferSize : 16;
+ ULONGLONG DmMaxTransferSize : 16;
+ ULONGLONG DmOffsetsImmediateSupported : 1;
+ ULONGLONG DmImmediateSupported : 1;
+ ULONGLONG DmOffsetsDeferredSupported : 1;
+ ULONGLONG Reserved : 28;
+ ULONGLONG Valid : 1;
+ } DownloadMicrocodeCapabilities;
+ struct {
+ ULONGLONG Rate : 16;
+ ULONGLONG Reserved : 47;
+ ULONGLONG Valid : 1;
+ } NominalMediaRotationRate;
+ struct {
+ ULONGLONG Factor : 4;
+ ULONGLONG Reserved : 59;
+ ULONGLONG Valid : 1;
+ } NominalFormFactor;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 31;
+ ULONGLONG Valid : 1;
+ } WRVSectorCountMode3;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 31;
+ ULONGLONG Valid : 1;
+ } WRVSectorCountMode2;
+ struct {
+ ULONGLONG Name;
+ ULONGLONG Reserved : 63;
+ ULONGLONG Valid : 1;
+ } WorldWideName;
+ struct {
+ ULONGLONG TrimSupported : 1;
+ ULONGLONG Reserved : 62;
+ ULONGLONG Valid : 1;
+ } DataSetManagement;
+ struct {
+ ULONGLONG UtilizationA : 32;
+ ULONGLONG UtilizationB : 32;
+ ULONGLONG Reserved0 : 32;
+ ULONGLONG UtilizationInterval : 8;
+ ULONGLONG UtilizationUnit : 8;
+ ULONGLONG UtilizationType : 8;
+ ULONGLONG Reserved1 : 7;
+ ULONGLONG Valid : 1;
+ } UtilizationPerUnitTime;
+ struct {
+ ULONGLONG DateTimeRateBasisSupported : 1;
+ ULONGLONG Reserved0 : 3;
+ ULONGLONG PowerOnHoursRateBasisSupported : 1;
+ ULONGLONG Reserved1 : 3;
+ ULONGLONG SincePowerOnRateBasisSupported : 1;
+ ULONGLONG Reserved2 : 14;
+ ULONGLONG SettingRateBasisSupported : 1;
+ ULONGLONG Reserved3 : 39;
+ ULONGLONG Valid : 1;
+ } UtilizationUsageRateSupport;
+ struct {
+ ULONGLONG Zoned : 2;
+ ULONGLONG Reserved : 61;
+ ULONGLONG Valid : 1;
+ } ZonedCapabilities;
+ struct {
+ ULONGLONG ReportZonesExtSupported : 1;
+ ULONGLONG NonDataOpenZoneExtSupported : 1;
+ ULONGLONG NonDataCloseZoneExtSupported : 1;
+ ULONGLONG NonDataFinishZoneExtSupported : 1;
+ ULONGLONG NonDataResetWritePointersExtSupported : 1;
+ ULONGLONG Reserved : 58;
+ ULONGLONG Valid : 1;
+ } SupportedZacCapabilities;
+ UCHAR Reserved[392];
+} IDENTIFY_DEVICE_DATA_LOG_PAGE_SUPPORTED_CAPABILITIES, *PIDENTIFY_DEVICE_DATA_LOG_PAGE_SUPPORTED_CAPABILITIES;
+
+typedef struct _IDENTIFY_DEVICE_DATA_LOG_PAGE_ZONED_DEVICE_INFO {
+ IDENTIFY_DEVICE_DATA_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG URSWRZ : 1;
+ ULONGLONG Reserved : 62;
+ ULONGLONG Valid : 1;
+ } ZonedDeviceCapabilities;
+ struct {
+ ULONGLONG Reserved : 63;
+ ULONGLONG Valid : 1;
+ } ZonedDeviceSettings;
+ struct {
+ ULONGLONG Number : 32;
+ ULONGLONG Reserved : 31;
+ ULONGLONG Valid : 1;
+ } OptimalNumberOfOpenSequentialWritePreferredZones;
+ struct {
+ ULONGLONG Number : 32;
+ ULONGLONG Reserved : 31;
+ ULONGLONG Valid : 1;
+ } OptimalNumberOfNonSequentiallyWrittenSequentialWritePreferredZones;
+ struct {
+ ULONGLONG Number : 32;
+ ULONGLONG Reserved : 31;
+ ULONGLONG Valid : 1;
+ } MaxNumberOfOpenSequentialWriteRequiredZones;
+ struct {
+ ULONGLONG ZacMinorVersion : 16;
+ ULONGLONG Reserved0 : 47;
+ ULONGLONG Valid : 1;
+ } Version;
+ UCHAR Reserved[456];
+} IDENTIFY_DEVICE_DATA_LOG_PAGE_ZONED_DEVICE_INFO, *PIDENTIFY_DEVICE_DATA_LOG_PAGE_ZONED_DEVICE_INFO;
+
+typedef struct _CURRENT_DEVICE_INTERNAL_STATUS_LOG {
+ UCHAR LogAddress;
+ UCHAR Reserved0[3];
+ ULONG OrganizationID;
+ USHORT Area1LastLogPage;
+ USHORT Area2LastLogPage;
+ USHORT Area3LastLogPage;
+ UCHAR Reserved2[368];
+ UCHAR SavedDataAvailable;
+ UCHAR SavedDataGenerationNumber;
+ UCHAR ReasonIdentifier[128];
+} CURRENT_DEVICE_INTERNAL_STATUS_LOG, *PCURRENT_DEVICE_INTERNAL_STATUS_LOG;
+
+typedef struct _SAVED_DEVICE_INTERNAL_STATUS_LOG {
+ UCHAR LogAddress;
+ UCHAR Reserved0[3];
+ ULONG OrganizationID;
+ USHORT Area1LastLogPage;
+ USHORT Area2LastLogPage;
+ USHORT Area3LastLogPage;
+ UCHAR Reserved2[368];
+ UCHAR SavedDataAvailable;
+ UCHAR GenerationNumber;
+ UCHAR ReasonIdentifier[128];
+} SAVED_DEVICE_INTERNAL_STATUS_LOG, *PSAVED_DEVICE_INTERNAL_STATUS_LOG;
+
+typedef struct _DEVICE_STATISTICS_LOG_PAGE_HEADER {
+ ULONGLONG RevisionNumber : 16;
+ ULONGLONG PageNumber : 8;
+ ULONGLONG Reserved : 40;
+} DEVICE_STATISTICS_LOG_PAGE_HEADER, *PDEVICE_STATISTICS_LOG_PAGE_HEADER;
+
+typedef struct _GP_LOG_SUPPORTED_DEVICE_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ UCHAR NumberOfEntries;
+ UCHAR LogPageNumbers[503];
+} GP_LOG_SUPPORTED_DEVICE_STATISTICS, *PGP_LOG_SUPPORTED_DEVICE_STATISTICS;
+
+typedef struct _GP_LOG_GENERAL_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } LifeTimePoweronResets;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } PoweronHours;
+ struct {
+ ULONGLONG Count : 48;
+ ULONGLONG Reserved : 8;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } LogicalSectorsWritten;
+ struct {
+ ULONGLONG Count : 48;
+ ULONGLONG Reserved : 8;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } WriteCommandCount;
+ struct {
+ ULONGLONG Count : 48;
+ ULONGLONG Reserved : 8;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } LogicalSectorsRead;
+ struct {
+ ULONGLONG Count : 48;
+ ULONGLONG Reserved : 8;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } ReadCommandCount;
+ struct {
+ ULONGLONG TimeStamp : 48;
+ ULONGLONG Reserved : 8;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } DateAndTime;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } PendingErrorCount;
+ struct {
+ ULONGLONG Value : 16;
+ ULONGLONG Reserved : 40;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } WorkloadUtilizaton;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved0 : 28;
+ ULONGLONG RateBasis : 4;
+ ULONGLONG RateValidity : 8;
+ ULONGLONG Reserved1 : 8;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } UtilizationUsageRate;
+ UCHAR Reserved[424];
+} GP_LOG_GENERAL_STATISTICS, *PGP_LOG_GENERAL_STATISTICS;
+
+typedef struct _GP_LOG_FREE_FALL_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberofFreeFallEventsDetected;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } OverlimitShockEvents;
+ UCHAR Reserved[488];
+} GP_LOG_FREE_FALL_STATISTICS, *PGP_LOG_FREE_FALL_STATISTICS;
+
+typedef struct _GP_LOG_ROTATING_MEDIA_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } SpindleMotorPoweronHours;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } HeadFlyingHours;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } HeadLoadEvents;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfReallocatedLogicalSectors;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } ReadRecoveryAttempts;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfMechanicalStartFailures;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfReallocationCandidateLogicalSectors;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfHighPriorityUnloadEvents;
+ UCHAR Reserved[440];
+} GP_LOG_ROTATING_MEDIA_STATISTICS, *PGP_LOG_ROTATING_MEDIA_STATISTICS;
+
+typedef struct _GP_LOG_GENERAL_ERROR_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfReportedUncorrectableErrors;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfResetsBetweenCommandAcceptanceAndCommandCompletion;
+ UCHAR Reserved[488];
+} GP_LOG_GENERAL_ERROR_STATISTICS, *PGP_LOG_GENERAL_ERROR_STATISTICS;
+
+typedef struct _GP_LOG_TEMPERATURE_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } CurrentTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } AverageShortTermTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } AverageLongTermTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } HighestTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } LowestTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } HighestAverageShortTermTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } LowestAverageShortTermTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } HighstAverageLongTermTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } LowestAverageLongTermTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } TimeInOverTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } SpecifiedMaximumOperatingTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } TimeInUnderTemperature;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } SpecifiedMinimumOperatingTemperature;
+ UCHAR Reserved[400];
+} GP_LOG_TEMPERATURE_STATISTICS, *PGP_LOG_TEMPERATURE_STATISTICS;
+
+typedef struct _GP_LOG_TRANSPORT_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Count : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfHardwareResets;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfAsrEvents;
+ struct {
+ ULONGLONG Count : 32;
+ ULONGLONG Reserved : 24;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } NumberOfInterfaceCrcErrors;
+ UCHAR Reserved[480];
+} GP_LOG_TRANSPORT_STATISTICS, *PGP_LOG_TRANSPORT_STATISTICS;
+
+typedef struct _GP_LOG_SOLID_STATE_DEVICE_STATISTICS {
+ DEVICE_STATISTICS_LOG_PAGE_HEADER Header;
+ struct {
+ ULONGLONG Value : 8;
+ ULONGLONG Reserved : 48;
+ ULONGLONG ReservedFlags : 3;
+ ULONGLONG MonitoredConditionMet : 1;
+ ULONGLONG StatisticsSupportsDsn : 1;
+ ULONGLONG Normalized : 1;
+ ULONGLONG ValidValue : 1;
+ ULONGLONG Supported : 1;
+ } PercentageUsedEnduranceIndicator;
+ UCHAR Reserved[496];
+} GP_LOG_SOLID_STATE_DEVICE_STATISTICS, *PGP_LOG_SOLID_STATE_DEVICE_STATISTICS;
+
+typedef struct _GP_LOG_NCQ_COMMAND_ERROR {
+ UCHAR NcqTag : 5;
+ UCHAR Reserved0 : 1;
+ UCHAR UNL : 1;
+ UCHAR NonQueuedCmd : 1;
+ UCHAR Reserved1;
+ UCHAR Status;
+ UCHAR Error;
+ UCHAR LBA7_0;
+ UCHAR LBA15_8;
+ UCHAR LBA23_16;
+ UCHAR Device;
+ UCHAR LBA31_24;
+ UCHAR LBA39_32;
+ UCHAR LBA47_40;
+ UCHAR Reserved2;
+ UCHAR Count7_0;
+ UCHAR Count15_8;
+ UCHAR SenseKey;
+ UCHAR ASC;
+ UCHAR ASCQ;
+ UCHAR Reserved3[239];
+ UCHAR Vendor[255];
+ UCHAR Checksum;
+} GP_LOG_NCQ_COMMAND_ERROR, *PGP_LOG_NCQ_COMMAND_ERROR;
+
+typedef struct _GP_LOG_NCQ_NON_DATA {
+ struct {
+ ULONG AbortNcq : 1;
+ ULONG AbortAll : 1;
+ ULONG AbortStreaming : 1;
+ ULONG AbortNonStreaming : 1;
+ ULONG AbortSelectedTTag : 1;
+ ULONG Reserved : 27;
+ } SubCmd0;
+ struct {
+ ULONG DeadlineHandling : 1;
+ ULONG WriteDataNotContinue : 1;
+ ULONG ReadDataNotContinue : 1;
+ ULONG Reserved : 29;
+ } SubCmd1;
+ struct {
+ ULONG HybridDemoteBySize : 1;
+ ULONG Reserved : 31;
+ } SubCmd2;
+ struct {
+ ULONG HybridChangeByLbaRange : 1;
+ ULONG Reserved : 31;
+ } SubCmd3;
+ struct {
+ ULONG HybridControl : 1;
+ ULONG Reserved : 31;
+ } SubCmd4;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmd5;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmd6;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmd7;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmd8;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmd9;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmdA;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmdB;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmdC;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmdD;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmdE;
+ struct {
+ ULONG Reserved : 32;
+ } SubCmdF;
+ ULONG Reserved[112];
+} GP_LOG_NCQ_NON_DATA, *PGP_LOG_NCQ_NON_DATA;
+
+typedef struct _GP_LOG_NCQ_SEND_RECEIVE {
+ struct {
+ ULONG DataSetManagement : 1;
+ ULONG HybridEvict : 1;
+ ULONG Reserved : 30;
+ } SubCmd;
+ struct {
+ ULONG Trim : 1;
+ ULONG Reserved : 31;
+ } DataSetManagement;
+ ULONG Reserved[126];
+} GP_LOG_NCQ_SEND_RECEIVE, *PGP_LOG_NCQ_SEND_RECEIVE;
+
+typedef struct _GP_LOG_HYBRID_INFORMATION_HEADER {
+ USHORT HybridInfoDescrCount : 4;
+ USHORT Reserved0 : 12;
+ UCHAR Enabled;
+ UCHAR HybridHealth;
+ UCHAR DirtyLowThreshold;
+ UCHAR DirtyHighThreshold;
+ UCHAR OptimalWriteGranularity;
+ UCHAR MaximumHybridPriorityLevel : 4;
+ UCHAR Reserved1 : 4;
+ UCHAR PowerCondidtion;
+ UCHAR CachingMediumEnabled ;
+ struct {
+ UCHAR MaximumPriorityBehavior : 1;
+ UCHAR SupportCacheBehavior : 1;
+ UCHAR Reserved : 6;
+ } SupportedOptions;
+ UCHAR Reserved2;
+ ULONG TimeSinceEnabled;
+ ULONGLONG NVMSize;
+ ULONGLONG EnableCount;
+ USHORT MaximumEvictionCommands : 5;
+ USHORT Reserved3 : 11;
+ USHORT MaximumEvictionDataBlocks;
+ UCHAR Reserved[28];
+} GP_LOG_HYBRID_INFORMATION_HEADER, *PGP_LOG_HYBRID_INFORMATION_HEADER;
+
+typedef struct _GP_LOG_HYBRID_INFORMATION_DESCRIPTOR {
+ UCHAR HybridPriority;
+ UCHAR ConsumedNVMSizeFraction;
+ UCHAR ConsumedMappingResourcesFraction;
+ UCHAR ConsumedNVMSizeForDirtyDataFraction;
+ UCHAR ConsumedMappingResourcesForDirtyDataFraction;
+ UCHAR Reserved[11];
+} GP_LOG_HYBRID_INFORMATION_DESCRIPTOR, *PGP_LOG_HYBRID_INFORMATION_DESCRIPTOR;
+
+typedef struct _GP_LOG_HYBRID_INFORMATION {
+ GP_LOG_HYBRID_INFORMATION_HEADER Header;
+ GP_LOG_HYBRID_INFORMATION_DESCRIPTOR Descriptor[0];
+} GP_LOG_HYBRID_INFORMATION, *PGP_LOG_HYBRID_INFORMATION;
+
+typedef struct _REPORT_ZONES_EXT_DATA {
+ ULONG ZoneListLength;
+ UCHAR SAME : 4;
+ UCHAR Reserved0 : 4;
+ UCHAR Reserved1[3];
+ ULONGLONG MaxLBA : 48;
+ ULONGLONG Reserved2 : 16;
+ UCHAR Reserved3[48];
+} REPORT_ZONES_EXT_DATA, *PREPORT_ZONES_EXT_DATA;
+
+typedef struct _ATA_ZONE_DESCRIPTOR {
+ UCHAR ZoneType : 4;
+ UCHAR Reserved0 : 4;
+ UCHAR Reset : 1;
+ UCHAR NonSeq : 1;
+ UCHAR Reserved1 : 2;
+ UCHAR ZoneCondition : 4;
+ UCHAR Reserved2[6];
+ ULONGLONG ZoneLength : 48;
+ ULONGLONG Reserved3 : 16;
+ ULONGLONG ZoneStartLBA : 48;
+ ULONGLONG Reserved4 : 16;
+ ULONGLONG WritePointerLBA : 48;
+ ULONGLONG Reserved5 : 16;
+ UCHAR Reserved6[32];
+} ATA_ZONE_DESCRIPTOR, *PATA_ZONE_DESCRIPTOR;
+
+typedef struct _ATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR {
+ UCHAR Reserved1[4];
+ ULONG ElementIdentifier;
+ UCHAR Reserved2[6];
+ UCHAR PhysicalElementType;
+ UCHAR PhysicalElementHealth;
+ ULONGLONG AssociatedCapacity;
+ UCHAR Reserved3[8];
+} ATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR, *PATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR;
+
+typedef struct _ATA_GET_PHYSICAL_ELEMENT_STATUS_PARAMETER_DATA {
+ ULONG NumberOfDescriptors;
+ ULONG NumberOfDescriptorsReturned;
+ ULONG ElementIdentifierBeingDepoped;
+ UCHAR Reserved[20];
+ ATA_PHYSICAL_ELEMENT_STATUS_DESCRIPTOR Descriptors[ANYSIZE_ARRAY];
+} ATA_GET_PHYSICAL_ELEMENT_STATUS_PARAMETER_DATA, *PATA_GET_PHYSICAL_ELEMENT_STATUS_PARAMETER_DATA;
+
+#pragma pack(pop)
+
+#define ATAPI_MODE_SENSE 0x5A
+#define ATAPI_MODE_SELECT 0x55
+#define ATAPI_LS120_FORMAT_UNIT 0x24
+
+#define IDE_LBA_MODE (1 << 6)
+
+#define IDE_DC_DISABLE_INTERRUPTS 0x02
+#define IDE_DC_RESET_CONTROLLER 0x04
+#define IDE_DC_REENABLE_CONTROLLER 0x00
+
+#define IDE_STATUS_ERROR 0x01
+#define IDE_STATUS_INDEX 0x02
+#define IDE_STATUS_CORRECTED_ERROR 0x04
+#define IDE_STATUS_DRQ 0x08
+#define IDE_STATUS_DSC 0x10
+#define IDE_STATUS_DEVICE_FAULT 0x20
+#define IDE_STATUS_DRDY 0x40
+#define IDE_STATUS_IDLE 0x50
+#define IDE_STATUS_BUSY 0x80
+
+#define IDE_ERROR_BAD_BLOCK 0x80
+#define IDE_ERROR_CRC_ERROR IDE_ERROR_BAD_BLOCK
+#define IDE_ERROR_DATA_ERROR 0x40
+#define IDE_ERROR_MEDIA_CHANGE 0x20
+#define IDE_ERROR_ID_NOT_FOUND 0x10
+#define IDE_ERROR_MEDIA_CHANGE_REQ 0x08
+#define IDE_ERROR_COMMAND_ABORTED 0x04
+#define IDE_ERROR_END_OF_MEDIA 0x02
+#define IDE_ERROR_ILLEGAL_LENGTH 0x01
+#define IDE_ERROR_ADDRESS_NOT_FOUND IDE_ERROR_ILLEGAL_LENGTH
+
+#define IDE_COMMAND_NOP 0x00
+#define IDE_COMMAND_DATA_SET_MANAGEMENT 0x06
+#define IDE_COMMAND_ATAPI_RESET 0x08
+#define IDE_COMMAND_GET_PHYSICAL_ELEMENT_STATUS 0x12
+#define IDE_COMMAND_READ 0x20
+#define IDE_COMMAND_READ_EXT 0x24
+#define IDE_COMMAND_READ_DMA_EXT 0x25
+#define IDE_COMMAND_READ_DMA_QUEUED_EXT 0x26
+#define IDE_COMMAND_READ_MULTIPLE_EXT 0x29
+#define IDE_COMMAND_READ_LOG_EXT 0x2f
+#define IDE_COMMAND_WRITE 0x30
+#define IDE_COMMAND_WRITE_EXT 0x34
+#define IDE_COMMAND_WRITE_DMA_EXT 0x35
+#define IDE_COMMAND_WRITE_DMA_QUEUED_EXT 0x36
+#define IDE_COMMAND_WRITE_MULTIPLE_EXT 0x39
+#define IDE_COMMAND_WRITE_DMA_FUA_EXT 0x3D
+#define IDE_COMMAND_WRITE_DMA_QUEUED_FUA_EXT 0x3E
+#define IDE_COMMAND_WRITE_LOG_EXT 0x3F
+#define IDE_COMMAND_VERIFY 0x40
+#define IDE_COMMAND_VERIFY_EXT 0x42
+#define IDE_COMMAND_ZAC_MANAGEMENT_IN 0x4A
+#define IDE_COMMAND_WRITE_LOG_DMA_EXT 0x57
+#define IDE_COMMAND_TRUSTED_NON_DATA 0x5B
+#define IDE_COMMAND_TRUSTED_RECEIVE 0x5C
+#define IDE_COMMAND_TRUSTED_RECEIVE_DMA 0x5D
+#define IDE_COMMAND_TRUSTED_SEND 0x5E
+#define IDE_COMMAND_TRUSTED_SEND_DMA 0x5F
+#define IDE_COMMAND_READ_FPDMA_QUEUED 0x60
+#define IDE_COMMAND_WRITE_FPDMA_QUEUED 0x61
+#define IDE_COMMAND_NCQ_NON_DATA 0x63
+#define IDE_COMMAND_SEND_FPDMA_QUEUED 0x64
+#define IDE_COMMAND_RECEIVE_FPDMA_QUEUED 0x65
+#define IDE_COMMAND_SET_DATE_AND_TIME 0x77
+#define IDE_COMMAND_REMOVE_ELEMENT_AND_TRUNCATE 0x7C
+#define IDE_COMMAND_EXECUTE_DEVICE_DIAGNOSTIC 0x90
+#define IDE_COMMAND_SET_DRIVE_PARAMETERS 0x91
+#define IDE_COMMAND_DOWNLOAD_MICROCODE 0x92
+#define IDE_COMMAND_DOWNLOAD_MICROCODE_DMA 0x93
+#define IDE_COMMAND_ZAC_MANAGEMENT_OUT 0x9F
+#define IDE_COMMAND_ATAPI_PACKET 0xA0
+#define IDE_COMMAND_ATAPI_IDENTIFY 0xA1
+#define IDE_COMMAND_SMART 0xB0
+#define IDE_COMMAND_READ_LOG_DMA_EXT 0xB1
+#define IDE_COMMAND_SANITIZE_DEVICE 0xB4
+#define IDE_COMMAND_READ_MULTIPLE 0xC4
+#define IDE_COMMAND_WRITE_MULTIPLE 0xC5
+#define IDE_COMMAND_SET_MULTIPLE 0xC6
+#define IDE_COMMAND_READ_DMA 0xC8
+#define IDE_COMMAND_WRITE_DMA 0xCA
+#define IDE_COMMAND_WRITE_DMA_QUEUED 0xCC
+#define IDE_COMMAND_WRITE_MULTIPLE_FUA_EXT 0xCE
+#define IDE_COMMAND_GET_MEDIA_STATUS 0xDA
+#define IDE_COMMAND_DOOR_LOCK 0xDE
+#define IDE_COMMAND_DOOR_UNLOCK 0xDF
+#define IDE_COMMAND_STANDBY_IMMEDIATE 0xE0
+#define IDE_COMMAND_IDLE_IMMEDIATE 0xE1
+#define IDE_COMMAND_CHECK_POWER 0xE5
+#define IDE_COMMAND_SLEEP 0xE6
+#define IDE_COMMAND_FLUSH_CACHE 0xE7
+#define IDE_COMMAND_FLUSH_CACHE_EXT 0xEA
+#define IDE_COMMAND_IDENTIFY 0xEC
+#define IDE_COMMAND_MEDIA_EJECT 0xED
+#define IDE_COMMAND_SET_FEATURE 0xEF
+#define IDE_COMMAND_SECURITY_SET_PASSWORD 0xF1
+#define IDE_COMMAND_SECURITY_UNLOCK 0xF2
+#define IDE_COMMAND_SECURITY_ERASE_PREPARE 0xF3
+#define IDE_COMMAND_SECURITY_ERASE_UNIT 0xF4
+#define IDE_COMMAND_SECURITY_FREEZE_LOCK 0xF5
+#define IDE_COMMAND_SECURITY_DISABLE_PASSWORD 0xF6
+#define IDE_COMMAND_NOT_VALID 0xFF
+
+#define IDE_SET_DEFAULT_PIO_MODE(mode) ((UCHAR)1)
+#define IDE_SET_ADVANCE_PIO_MODE(mode) ((UCHAR)((1 << 3) | (mode)))
+#define IDE_SET_SWDMA_MODE(mode) ((UCHAR)((1 << 4) | (mode)))
+#define IDE_SET_MWDMA_MODE(mode) ((UCHAR)((1 << 5) | (mode)))
+#define IDE_SET_UDMA_MODE(mode) ((UCHAR)((1 << 6) | (mode)))
+
+#define IDE_FEATURE_ENABLE_WRITE_CACHE 0x2
+#define IDE_FEATURE_SET_TRANSFER_MODE 0x3
+#define IDE_FEATURE_ENABLE_PUIS 0x6
+#define IDE_FEATURE_PUIS_SPIN_UP 0x7
+#define IDE_FEATURE_ENABLE_SATA_FEATURE 0x10
+#define IDE_FEATURE_DISABLE_MSN 0x31
+#define IDE_FEATURE_DISABLE_REVERT_TO_POWER_ON 0x66
+#define IDE_FEATURE_DISABLE_WRITE_CACHE 0x82
+#define IDE_FEATURE_DISABLE_PUIS 0x86
+#define IDE_FEATURE_DISABLE_SATA_FEATURE 0x90
+#define IDE_FEATURE_ENABLE_MSN 0x95
+
+#define IDE_SATA_FEATURE_NON_ZERO_DMA_BUFFER_OFFSET 0x1
+#define IDE_SATA_FEATURE_DMA_SETUP_FIS_AUTO_ACTIVATE 0x2
+#define IDE_SATA_FEATURE_DEVICE_INITIATED_POWER_MANAGEMENT 0x3
+#define IDE_SATA_FEATURE_GUARANTEED_IN_ORDER_DELIVERY 0x4
+#define IDE_SATA_FEATURE_ASYNCHRONOUS_NOTIFICATION 0x5
+#define IDE_SATA_FEATURE_SOFTWARE_SETTINGS_PRESERVATION 0x6
+#define IDE_SATA_FEATURE_DEVICE_AUTO_PARTIAL_TO_SLUMBER 0x7
+#define IDE_SATA_FEATURE_ENABLE_HARDWARE_FEATURE_CONTROL 0x8
+#define IDE_SATA_FEATURE_DEVSLP 0x9
+#define IDE_SATA_FEATURE_HYBRID_INFORMATION 0xA
+
+#define IDE_SMART_READ_ATTRIBUTES 0xD0
+#define IDE_SMART_READ_THRESHOLDS 0xD1
+#define IDE_SMART_ENABLE_DISABLE_AUTOSAVE 0xD2
+#define IDE_SMART_SAVE_ATTRIBUTE_VALUES 0xD3
+#define IDE_SMART_EXECUTE_OFFLINE_DIAGS 0xD4
+#define IDE_SMART_READ_LOG 0xD5
+#define IDE_SMART_WRITE_LOG 0xD6
+#define IDE_SMART_ENABLE 0xD8
+#define IDE_SMART_DISABLE 0xD9
+#define IDE_SMART_RETURN_STATUS 0xDA
+#define IDE_SMART_ENABLE_DISABLE_AUTO_OFFLINE 0xDB
+
+#define IDE_DSM_FEATURE_TRIM 0x0001
+
+#define IDE_NCQ_NON_DATA_ABORT_NCQ_QUEUE 0x00
+#define IDE_NCQ_NON_DATA_DEADLINE_HANDLING 0x01
+#define IDE_NCQ_NON_DATA_HYBRID_CHANGE_BY_SIZE 0x02
+#define IDE_NCQ_NON_DATA_HYBRID_DEMOTE_BY_SIZE 0x02
+#define IDE_NCQ_NON_DATA_HYBRID_CHANGE_BY_LBA_RANGE 0x03
+#define IDE_NCQ_NON_DATA_HYBRID_CONTROL 0x04
+
+#define IDE_NCQ_SEND_DATA_SET_MANAGEMENT 0x00
+#define IDE_NCQ_SEND_HYBRID_EVICT 0x01
+
+#define ATA_DEVICE_SET_PASSWORD_MASTER 0x01
+#define ATA_DEVICE_SET_PASSWORD_USER 0x00
+
+#define IDE_GP_LOG_DIRECTORY_ADDRESS 0x00
+#define IDE_GP_SUMMARY_SMART_ERROR 0x01
+#define IDE_GP_COMPREHENSIVE_SMART_ERROR 0x02
+#define IDE_GP_EXTENDED_COMPREHENSIVE_SMART_ERROR 0x03
+#define IDE_GP_LOG_DEVICE_STATISTICS_ADDRESS 0x04
+#define IDE_GP_SMART_SELF_TEST 0x06
+#define IDE_GP_EXTENDED_SMART_SELF_TEST 0x07
+#define IDE_GP_LOG_POWER_CONDITIONS 0x08
+#define IDE_GP_SELECTIVE_SELF_TEST 0x09
+#define IDE_GP_DEVICE_STATISTICS_NOTIFICATION 0x0A
+#define IDE_GP_PENDING_DEFECTS 0x0C
+#define IDE_GP_LPS_MISALIGNMENT 0x0D
+#define IDE_GP_LOG_NCQ_COMMAND_ERROR_ADDRESS 0x10
+#define IDE_GP_LOG_PHY_EVENT_COUNTER_ADDRESS 0x11
+#define IDE_GP_LOG_NCQ_NON_DATA_ADDRESS 0x12
+#define IDE_GP_LOG_NCQ_SEND_RECEIVE_ADDRESS 0x13
+#define IDE_GP_LOG_HYBRID_INFO_ADDRESS 0x14
+#define IDE_GP_LOG_REBUILD_ASSIST 0x15
+#define IDE_GP_LOG_LBA_STATUS 0x19
+#define IDE_GP_LOG_WRITE_STREAM_ERROR 0x21
+#define IDE_GP_LOG_READ_STREAM_ERROR 0x22
+#define IDE_GP_LOG_CURRENT_DEVICE_INTERNAL_STATUS 0x24
+#define IDE_GP_LOG_SAVED_DEVICE_INTERNAL_STATUS 0x25
+#define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_ADDRESS 0x30
+#define IDE_GP_LOG_SCT_COMMAND_STATUS 0xE0
+#define IDE_GP_LOG_SCT_DATA_TRANSFER 0xE1
+
+#define IDE_GP_LOG_SECTOR_SIZE 0x200
+
+#define IDE_GP_LOG_VERSION 0x0001
+
+#define IDE_GP_LOG_SUPPORTED_PAGES 0x00
+
+#define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_SUPPORTED_CAPABILITIES_PAGE 0x03
+#define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_SATA_PAGE 0x08
+#define IDE_GP_LOG_IDENTIFY_DEVICE_DATA_ZONED_DEVICE_INFORMATION_PAGE 0x09
+
+#define ATA_ZONED_CAPABILITIES_NOT_REPORTED 0x0
+#define ATA_ZONED_CAPABILITIES_HOST_AWARE 0x1
+#define ATA_ZONED_CAPABILITIES_DEVICE_MANAGED 0x2
+
+#define ZAC_REVISION_NOT_REPORTED_1 0x0000
+#define ZAC_REVISION_NOT_REPORTED_2 0xFFFF
+#define ZAC_REVISION_01 0xB6E8
+#define ZAC_REVISION_04 0xA36C
+
+#define CURRENT_DEVICE_INTERNAL_STATUS_DATA_LOG_ADDRESS 0x24
+#define SAVED_DEVICE_INTERNAL_STATUS_DATA_LOG_ADDRESS 0x25
+
+#define IDE_GP_LOG_DEVICE_STATISTICS_GENERAL_PAGE 0x01
+#define IDE_GP_LOG_DEVICE_STATISTICS_FREE_FALL_PAGE 0x02
+#define IDE_GP_LOG_DEVICE_STATISTICS_ROTATING_MEDIA_PAGE 0x03
+#define IDE_GP_LOG_DEVICE_STATISTICS_GENERAL_ERROR_PAGE 0x04
+#define IDE_GP_LOG_DEVICE_STATISTICS_TEMPERATURE_PAGE 0x05
+#define IDE_GP_LOG_DEVICE_STATISTICS_TRANSPORT_PAGE 0x06
+#define IDE_GP_LOG_DEVICE_STATISTICS_SSD_PAGE 0x07
+
+#define HYBRID_INFORMATION_DISABLED 0x00
+#define HYBRID_INFORMATION_DISABLE_IN_PROCESS 0x80
+#define HYBRID_INFORMATION_ENABLED 0xFF
+
+#define HYBRID_HEALTH_UNUSEABLE 0x01
+#define HYBRID_HEALTH_NVM_SIZE_CHANGED 0x02
+#define HYBRID_HEALTH_READ_ONLY 0x04
+#define HYBRID_HEALTH_DATA_LOSS 0x08
+
+#define ATA_DEVICE_SIGNATURE_ATA 0x00000101
+#define ATA_DEVICE_SIGNATURE_ATAPI 0xEB140101
+#define ATA_DEVICE_SIGNATURE_HOST_ZONED 0xABCD0101
+#define ATA_DEVICE_SIGNATURE_ENCLOSURE 0xC33C0101
+#define ATA_DEVICE_SIGNATURE_PORT_MULTIPLIER 0x96690101
+
+#define ZM_ACTION_REPORT_ZONES 0x00
+#define ZM_ACTION_CLOSE_ZONE 0x01
+#define ZM_ACTION_FINISH_ZONE 0x02
+#define ZM_ACTION_OPEN_ZONE 0x03
+#define ZM_ACTION_RESET_WRITE_POINTER 0x04
+
+#define ZM_ALL_ZONES_BIT (1 << 8)
+
+#define ATA_REPORT_ZONES_OPTION_LIST_ALL_ZONES 0x00
+#define ATA_REPORT_ZONES_OPTION_LIST_EMPTY_ZONES 0x01
+#define ATA_REPORT_ZONES_OPTION_LIST_IMPLICITLY_OPENED_ZONES 0x02
+#define ATA_REPORT_ZONES_OPTION_LIST_EXPLICITLY_OPENED_ZONES 0x03
+#define ATA_REPORT_ZONES_OPTION_LIST_CLOSED_ZONES 0x04
+#define ATA_REPORT_ZONES_OPTION_LIST_FULL_ZONES 0x05
+#define ATA_REPORT_ZONES_OPTION_LIST_READ_ONLY_ZONES 0x06
+#define ATA_REPORT_ZONES_OPTION_LIST_OFFLINE_ZONES 0x07
+
+#define ATA_REPORT_ZONES_OPTION_LIST_RWP_ZONES 0x10
+#define ATA_REPORT_ZONES_OPTION_LIST_NON_SEQUENTIAL_WRITE_RESOURCES_ACTIVE_ZONES 0x11
+
+#define ATA_REPORT_ZONES_OPTION_LIST_NOT_WRITE_POINTER_ZONES 0x3F
+
+#define ATA_ZONES_TYPE_AND_LENGTH_MAY_DIFFERENT 0x0
+#define ATA_ZONES_TYPE_SAME_LENGTH_SAME 0x1
+#define ATA_ZONES_TYPE_SAME_LAST_ZONE_LENGTH_DIFFERENT 0x2
+#define ATA_ZONES_TYPE_MAY_DIFFERENT_LENGTH_SAME 0x3
+
+#define ATA_ZONE_TYPE_CONVENTIONAL 0x1
+#define ATA_ZONE_TYPE_SEQUENTIAL_WRITE_REQUIRED 0x2
+#define ATA_ZONE_TYPE_SEQUENTIAL_WRITE_PREFERRED 0x3
+
+#define ATA_ZONE_CONDITION_NOT_WRITE_POINTER 0x0
+#define ATA_ZONE_CONDITION_EMPTY 0x1
+#define ATA_ZONE_CONDITION_IMPLICITLY_OPENED 0x2
+#define ATA_ZONE_CONDITION_EXPLICITLY_OPENED 0x3
+#define ATA_ZONE_CONDITION_CLOSED 0x4
+#define ATA_ZONE_CONDITION_READ_ONLY 0xD
+#define ATA_ZONE_CONDITION_FULL 0xE
+#define ATA_ZONE_CONDITION_OFFLINE 0xF
+
+#endif
diff --git a/lib/libc/include/any-windows-any/ddk/ntifs.h b/lib/libc/include/any-windows-any/ddk/ntifs.h
index 673eb364be..ea76faa850 100644
--- a/lib/libc/include/any-windows-any/ddk/ntifs.h
+++ b/lib/libc/include/any-windows-any/ddk/ntifs.h
@@ -2726,6 +2726,7 @@ typedef struct _MSV1_0_NTLM3_RESPONSE {
UCHAR Buffer[1];
} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
+/* MsvAvSingleHost present in MS-NLMP specifications but not in WinSDK */
typedef enum _MSV1_0_AVID {
MsvAvEOL,
MsvAvNbComputerName,
@@ -2738,6 +2739,7 @@ typedef enum _MSV1_0_AVID {
#if (_WIN32_WINNT >= 0x0600)
MsvAvTimestamp,
MsvAvRestrictions,
+ MsvAvSingleHost = MsvAvRestrictions,
MsvAvTargetName,
MsvAvChannelBindings,
#endif
diff --git a/lib/libc/include/any-windows-any/ddk/wdm.h b/lib/libc/include/any-windows-any/ddk/wdm.h
index d79e0e7633..c2c547730b 100644
--- a/lib/libc/include/any-windows-any/ddk/wdm.h
+++ b/lib/libc/include/any-windows-any/ddk/wdm.h
@@ -800,7 +800,10 @@ typedef enum _KBUGCHECK_CALLBACK_REASON {
KbCallbackReserved1,
KbCallbackSecondaryDumpData,
KbCallbackDumpIo,
- KbCallbackAddPages
+ KbCallbackAddPages,
+ KbCallbackSecondaryMultiPartDumpData,
+ KbCallbackRemovePages,
+ KbCallbackTriageDumpData
} KBUGCHECK_CALLBACK_REASON;
struct _KBUGCHECK_REASON_CALLBACK_RECORD;
@@ -917,7 +920,16 @@ typedef PROCESSOR_CALLBACK_FUNCTION *PPROCESSOR_CALLBACK_FUNCTION;
typedef enum _KINTERRUPT_POLARITY {
InterruptPolarityUnknown,
InterruptActiveHigh,
- InterruptActiveLow
+ InterruptRisingEdge = InterruptActiveHigh,
+ InterruptActiveLow,
+ InterruptFallingEdge = InterruptActiveLow,
+#if NTDDI_VERSION >= NTDDI_WIN8
+ InterruptActiveBoth,
+#endif
+#if NTDDI_VERSION >= NTDDI_WINBLUE
+ InterruptActiveBothTriggerLow = InterruptActiveBoth,
+ InterruptActiveBothTriggerHigh
+#endif
} KINTERRUPT_POLARITY, *PKINTERRUPT_POLARITY;
typedef enum _KPROFILE_SOURCE {
@@ -963,7 +975,7 @@ typedef enum _KWAIT_REASON {
WrDelayExecution,
WrSuspended,
WrUserRequest,
- WrEventPair,
+ WrSpare0,
WrQueue,
WrLpcReceive,
WrLpcReply,
@@ -986,6 +998,9 @@ typedef enum _KWAIT_REASON {
WrFastMutex,
WrGuardedMutex,
WrRundown,
+ WrAlertByThreadId,
+ WrDeferredPreempt,
+ WrPhysicalFault,
MaximumWaitReason
} KWAIT_REASON;
@@ -1134,48 +1149,46 @@ typedef struct _KLOCK_QUEUE_HANDLE {
typedef ULONG64 KSPIN_LOCK_QUEUE_NUMBER;
-#define LockQueueDispatcherLock 0
-#define LockQueueExpansionLock 1
-#define LockQueuePfnLock 2
-#define LockQueueSystemSpaceLock 3
+#define LockQueueUnusedSpare0 0
+#define LockQueueUnusedSpare1 1
+#define LockQueueUnusedSpare2 2
+#define LockQueueUnusedSpare3 3
#define LockQueueVacbLock 4
#define LockQueueMasterLock 5
#define LockQueueNonPagedPoolLock 6
#define LockQueueIoCancelLock 7
-#define LockQueueWorkQueueLock 8
+#define LockQueueUnusedSpare8 8
#define LockQueueIoVpbLock 9
#define LockQueueIoDatabaseLock 10
#define LockQueueIoCompletionLock 11
#define LockQueueNtfsStructLock 12
#define LockQueueAfdWorkQueueLock 13
#define LockQueueBcbLock 14
-#define LockQueueMmNonPagedPoolLock 15
+#define LockQueueUnusedSpare15 15
#define LockQueueUnusedSpare16 16
-#define LockQueueTimerTableLock 17
-#define LockQueueMaximumLock (LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS)
+#define LockQueueMaximumLock 17
#else
typedef enum _KSPIN_LOCK_QUEUE_NUMBER {
- LockQueueDispatcherLock,
- LockQueueExpansionLock,
- LockQueuePfnLock,
- LockQueueSystemSpaceLock,
+ LockQueueUnusedSpare0,
+ LockQueueUnusedSpare1,
+ LockQueueUnusedSpare2,
+ LockQueueUnusedSpare3,
LockQueueVacbLock,
LockQueueMasterLock,
LockQueueNonPagedPoolLock,
LockQueueIoCancelLock,
- LockQueueWorkQueueLock,
+ LockQueueUnusedSpare8,
LockQueueIoVpbLock,
LockQueueIoDatabaseLock,
LockQueueIoCompletionLock,
LockQueueNtfsStructLock,
LockQueueAfdWorkQueueLock,
LockQueueBcbLock,
- LockQueueMmNonPagedPoolLock,
+ LockQueueUnusedSpare15,
LockQueueUnusedSpare16,
- LockQueueTimerTableLock,
- LockQueueMaximumLock = LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS
+ LockQueueMaximumLock = LockQueueUnusedSpare16 + 1
} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;
#endif /* defined(_AMD64_) */
@@ -1371,6 +1384,7 @@ typedef KSYNCHRONIZE_ROUTINE *PKSYNCHRONIZE_ROUTINE;
typedef enum _POOL_TYPE {
NonPagedPool,
+ NonPagedPoolExecute = NonPagedPool,
PagedPool,
NonPagedPoolMustSucceed,
DontUseThisType,
@@ -1378,13 +1392,20 @@ typedef enum _POOL_TYPE {
PagedPoolCacheAligned,
NonPagedPoolCacheAlignedMustS,
MaxPoolType,
+ NonPagedPoolBase = 0,
+ NonPagedPoolBaseMustSucceed = 2,
+ NonPagedPoolBaseCacheAligned = 4,
+ NonPagedPoolBaseCacheAlignedMustS = 6,
NonPagedPoolSession = 32,
PagedPoolSession,
NonPagedPoolMustSucceedSession,
DontUseThisTypeSession,
NonPagedPoolCacheAlignedSession,
PagedPoolCacheAlignedSession,
- NonPagedPoolCacheAlignedMustSSession
+ NonPagedPoolCacheAlignedMustSSession,
+ NonPagedPoolNx = 512,
+ NonPagedPoolNxCacheAligned = 516,
+ NonPagedPoolSessionNx = 544,
} POOL_TYPE;
typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE {
@@ -1666,7 +1687,8 @@ typedef enum _MEMORY_CACHING_TYPE {
MmHardwareCoherentCached,
MmNonCachedUnordered,
MmUSWCCached,
- MmMaximumCacheType
+ MmMaximumCacheType,
+ MmNotMapped = -1
} MEMORY_CACHING_TYPE;
typedef enum _MM_PAGE_PRIORITY {
@@ -1863,7 +1885,12 @@ typedef enum _WORK_QUEUE_TYPE {
CriticalWorkQueue,
DelayedWorkQueue,
HyperCriticalWorkQueue,
- MaximumWorkQueue
+ NormalWorkQueue,
+ BackgroundWorkQueue,
+ RealTimeWorkQueue,
+ SuperCriticalWorkQueue,
+ MaximumWorkQueue,
+ CustomPriorityWorkQueue = 32
} WORK_QUEUE_TYPE;
typedef VOID
@@ -2215,7 +2242,13 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
SeAdtParmTypeLogonIdNoSid,
SeAdtParmTypeUlongNoConv,
SeAdtParmTypeSockAddrNoPort,
- SeAdtParmTypeAccessReason
+ SeAdtParmTypeAccessReason,
+ SeAdtParmTypeStagingReason,
+ SeAdtParmTypeResourceAttribute,
+ SeAdtParmTypeClaims,
+ SeAdtParmTypeLogonIdAsSid,
+ SeAdtParmTypeMultiSzString,
+ SeAdtParmTypeLogonIdEx
} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE;
typedef struct _SE_ADT_OBJECT_TYPE {
@@ -2311,7 +2344,7 @@ typedef enum _POWER_INFORMATION_LEVEL {
SetPowerSettingValue,
NotifyUserPowerSetting,
PowerInformationLevelUnused0,
- PowerInformationLevelUnused1,
+ SystemMonitorHiberBootPowerOff,
SystemVideoState,
TraceApplicationPowerMessage,
TraceApplicationPowerMessageEnd,
@@ -2335,6 +2368,50 @@ typedef enum _POWER_INFORMATION_LEVEL {
ProcessorIdleDomains,
WakeTimerList,
SystemHiberFileSize,
+ ProcessorIdleStatesHv,
+ ProcessorPerfStatesHv,
+ ProcessorPerfCapHv,
+ ProcessorSetIdle,
+ LogicalProcessorIdling,
+ UserPresence,
+ PowerSettingNotificationName,
+ GetPowerSettingValue,
+ IdleResiliency,
+ SessionRITState,
+ SessionConnectNotification,
+ SessionPowerCleanup,
+ SessionLockState,
+ SystemHiberbootState,
+ PlatformInformation,
+ PdcInvocation,
+ MonitorInvocation,
+ FirmwareTableInformationRegistered,
+ SetShutdownSelectedTime,
+ SuspendResumeInvocation,
+ PlmPowerRequestCreate,
+ ScreenOff,
+ CsDeviceNotification,
+ PlatformRole,
+ LastResumePerformance,
+ DisplayBurst,
+ ExitLatencySamplingPercentage,
+ RegisterSpmPowerSettings,
+ PlatformIdleStates,
+ ProcessorIdleVeto,
+ PlatformIdleVeto,
+ SystemBatteryStatePrecise,
+ ThermalEvent,
+ PowerRequestActionInternal,
+ BatteryDeviceState,
+ PowerInformationInternal,
+ ThermalStandby,
+ SystemHiberFileType,
+ PhysicalPowerButtonPress,
+ QueryPotentialDripsConstraint,
+ EnergyTrackerCreate,
+ EnergyTrackerQuery,
+ UpdateBlackBoxRecorder,
+ SessionAllowExternalDmaDevices,
PowerInformationLevelMaximum
} POWER_INFORMATION_LEVEL;
@@ -2346,7 +2423,8 @@ typedef enum {
PowerActionShutdown,
PowerActionShutdownReset,
PowerActionShutdownOff,
- PowerActionWarmEject
+ PowerActionWarmEject,
+ PowerActionDisplayOff
} POWER_ACTION, *PPOWER_ACTION;
typedef enum _DEVICE_POWER_STATE {
@@ -2445,7 +2523,8 @@ typedef enum {
typedef enum _POWER_REQUEST_TYPE {
PowerRequestDisplayRequired,
PowerRequestSystemRequired,
- PowerRequestAwayModeRequired
+ PowerRequestAwayModeRequired,
+ PowerRequestExecutionRequired
} POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE;
#if (NTDDI_VERSION >= NTDDI_WINXP)
@@ -2509,6 +2588,7 @@ typedef enum _POWER_PLATFORM_ROLE {
PlatformRoleSOHOServer,
PlatformRoleAppliancePC,
PlatformRolePerformanceServer,
+ PlatformRoleSlate,
PlatformRoleMaximum
} POWER_PLATFORM_ROLE;
@@ -3041,6 +3121,7 @@ typedef enum _INTERFACE_TYPE {
PNPISABus,
PNPBus,
Vmcs,
+ ACPIBus,
MaximumInterfaceType
} INTERFACE_TYPE, *PINTERFACE_TYPE;
@@ -3224,6 +3305,8 @@ typedef enum _KEY_INFORMATION_CLASS {
KeyFlagsInformation,
KeyVirtualizationInformation,
KeyHandleTagsInformation,
+ KeyTrustInformation,
+ KeyLayerInformation,
MaxKeyInfoClass
} KEY_INFORMATION_CLASS;
@@ -3272,6 +3355,7 @@ typedef enum _KEY_SET_INFORMATION_CLASS {
KeySetVirtualizationInformation,
KeySetDebugInformation,
KeySetHandleTagsInformation,
+ KeySetLayerInformation,
MaxKeySetInfoClass
} KEY_SET_INFORMATION_CLASS;
@@ -3323,7 +3407,9 @@ typedef enum _KEY_VALUE_INFORMATION_CLASS {
KeyValueFullInformation,
KeyValuePartialInformation,
KeyValueFullInformationAlign64,
- KeyValuePartialInformationAlign64
+ KeyValuePartialInformationAlign64,
+ KeyValueLayerInformation,
+ MaxKeyValueInfoClass
} KEY_VALUE_INFORMATION_CLASS;
typedef struct _KEY_WOW64_FLAGS_INFORMATION {
@@ -3393,6 +3479,8 @@ typedef enum _REG_NOTIFY_CLASS {
RegNtPostSaveKey,
RegNtPreReplaceKey,
RegNtPostReplaceKey,
+ RegNtPreQueryKeyName,
+ RegNtPostQueryKeyName,
MaxRegNtNotifyClass
} REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS;
@@ -3840,7 +3928,10 @@ typedef enum _IRQ_DEVICE_POLICY_USHORT {
IrqPolicyAllProcessorsInMachine = 3,
IrqPolicyAllProcessorsInGroup = 3,
IrqPolicySpecifiedProcessors = 4,
- IrqPolicySpreadMessagesAcrossAllProcessors = 5};
+ IrqPolicySpreadMessagesAcrossAllProcessors = 5,
+ IrqPolicyAllProcessorsInMachineWhenSteered = 6,
+ IrqPolicyAllProcessorsInGroupWhenSteered = 6
+};
#else /* defined(NT_PROCESSOR_GROUPS) */
@@ -3850,7 +3941,8 @@ typedef enum _IRQ_DEVICE_POLICY {
IrqPolicyOneCloseProcessor,
IrqPolicyAllProcessorsInMachine,
IrqPolicySpecifiedProcessors,
- IrqPolicySpreadMessagesAcrossAllProcessors
+ IrqPolicySpreadMessagesAcrossAllProcessors,
+ IrqPolicyAllProcessorsInMachineWhenSteered
} IRQ_DEVICE_POLICY, *PIRQ_DEVICE_POLICY;
#endif
@@ -4268,6 +4360,24 @@ typedef enum _CREATE_FILE_TYPE {
CreateFileTypeMailslot
} CREATE_FILE_TYPE;
+typedef struct _NAMED_PIPE_CREATE_PARAMETERS {
+ ULONG NamedPipeType;
+ ULONG ReadMode;
+ ULONG CompletionMode;
+ ULONG MaximumInstances;
+ ULONG InboundQuota;
+ ULONG OutboundQuota;
+ LARGE_INTEGER DefaultTimeout;
+ BOOLEAN TimeoutSpecified;
+} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
+
+typedef struct _MAILSLOT_CREATE_PARAMETERS {
+ ULONG MailslotQuota;
+ ULONG MaximumMessageSize;
+ LARGE_INTEGER ReadTimeout;
+ BOOLEAN TimeoutSpecified;
+} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
+
#define IO_FORCE_ACCESS_CHECK 0x001
#define IO_NO_PARAMETER_CHECKING 0x100
@@ -4873,7 +4983,10 @@ typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
DeviceUsageTypeUndefined,
DeviceUsageTypePaging,
DeviceUsageTypeHibernation,
- DeviceUsageTypeDumpFile
+ DeviceUsageTypeDumpFile,
+ DeviceUsageTypeBoot,
+ DeviceUsageTypePostDisplay,
+ DeviceUsageTypeGuestAssigned
} DEVICE_USAGE_NOTIFICATION_TYPE;
typedef struct _POWER_SEQUENCE {
@@ -4912,7 +5025,8 @@ typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
EventCategoryReserved,
EventCategoryHardwareProfileChange,
EventCategoryDeviceInterfaceChange,
- EventCategoryTargetDeviceChange
+ EventCategoryTargetDeviceChange,
+ EventCategoryKernelSoftRestart
} IO_NOTIFICATION_EVENT_CATEGORY;
typedef enum _IO_PRIORITY_HINT {
@@ -4989,13 +5103,38 @@ typedef enum _FILE_INFORMATION_CLASS {
FileNetworkPhysicalNameInformation,
FileIdGlobalTxDirectoryInformation,
FileIsRemoteDeviceInformation,
- FileAttributeCacheInformation,
+ FileUnusedInformation,
FileNumaNodeInformation,
FileStandardLinkInformation,
FileRemoteProtocolInformation,
+ FileRenameInformationBypassAccessCheck,
+ FileLinkInformationBypassAccessCheck,
+ FileVolumeNameInformation,
+ FileIdInformation,
+ FileIdExtdDirectoryInformation,
+ FileReplaceCompletionInformation,
+ FileHardLinkFullIdInformation,
+ FileIdExtdBothDirectoryInformation,
+ FileDispositionInformationEx,
+ FileRenameInformationEx,
+ FileRenameInformationExBypassAccessCheck,
+ FileDesiredStorageClassInformation,
+ FileStatInformation,
+ FileMemoryPartitionInformation,
+ FileStatLxInformation,
+ FileCaseSensitiveInformation,
+ FileLinkInformationEx,
+ FileLinkInformationExBypassAccessCheck,
+ FileStorageReserveIdInformation,
+ FileCaseSensitiveInformationForceAccessCheck,
FileMaximumInformation
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+typedef enum _DIRECTORY_NOTIFY_INFORMATION_CLASS {
+ DirectoryNotifyInformation = 1,
+ DirectoryNotifyExtendedInformation
+} DIRECTORY_NOTIFY_INFORMATION_CLASS, *PDIRECTORY_NOTIFY_INFORMATION_CLASS;
+
typedef struct _FILE_POSITION_INFORMATION {
LARGE_INTEGER CurrentByteOffset;
} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
@@ -5063,6 +5202,10 @@ typedef enum _FSINFOCLASS {
FileFsObjectIdInformation,
FileFsDriverPathInformation,
FileFsVolumeFlagsInformation,
+ FileFsSectorSizeInformation,
+ FileFsDataCopyInformation,
+ FileFsMetadataSizeInformation,
+ FileFsFullSizeInformationEx,
FileFsMaximumInformation
} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
@@ -5662,6 +5805,8 @@ typedef enum _DMA_WIDTH {
Width8Bits,
Width16Bits,
Width32Bits,
+ Width64Bits,
+ WidthNoWrap,
MaximumDmaWidth
} DMA_WIDTH, *PDMA_WIDTH;
@@ -6202,7 +6347,8 @@ typedef enum _BUS_QUERY_ID_TYPE {
BusQueryHardwareIDs,
BusQueryCompatibleIDs,
BusQueryInstanceID,
- BusQueryDeviceSerialNumber
+ BusQueryDeviceSerialNumber,
+ BusQueryContainerID
} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
typedef enum _DEVICE_TEXT_TYPE {
@@ -6357,27 +6503,52 @@ typedef struct _IO_STACK_LOCATION {
ULONG POINTER_ALIGNMENT EaLength;
} Create;
struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT POINTER_ALIGNMENT Reserved;
+ USHORT ShareAccess;
+ PNAMED_PIPE_CREATE_PARAMETERS Parameters;
+ } CreatePipe;
+ struct {
+ PIO_SECURITY_CONTEXT SecurityContext;
+ ULONG Options;
+ USHORT POINTER_ALIGNMENT Reserved;
+ USHORT ShareAccess;
+ PMAILSLOT_CREATE_PARAMETERS Parameters;
+ } CreateMailslot;
+ struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
+#ifdef _WIN64
+ ULONG Flags;
+#endif
LARGE_INTEGER ByteOffset;
} Read;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
+#ifdef _WIN64
+ ULONG Flags;
+#endif
LARGE_INTEGER ByteOffset;
} Write;
struct {
ULONG Length;
PUNICODE_STRING FileName;
FILE_INFORMATION_CLASS FileInformationClass;
- ULONG FileIndex;
+ ULONG POINTER_ALIGNMENT FileIndex;
} QueryDirectory;
struct {
ULONG Length;
- ULONG CompletionFilter;
+ ULONG POINTER_ALIGNMENT CompletionFilter;
} NotifyDirectory;
struct {
ULONG Length;
+ ULONG POINTER_ALIGNMENT CompletionFilter;
+ DIRECTORY_NOTIFY_INFORMATION_CLASS POINTER_ALIGNMENT DirectoryNotifyInformationClass;
+ } NotifyDirectoryEx;
+ struct {
+ ULONG Length;
FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
} QueryFile;
struct {
@@ -6397,7 +6568,7 @@ typedef struct _IO_STACK_LOCATION {
ULONG Length;
PVOID EaList;
ULONG EaListLength;
- ULONG EaIndex;
+ ULONG POINTER_ALIGNMENT EaIndex;
} QueryEa;
struct {
ULONG Length;
@@ -6408,17 +6579,17 @@ typedef struct _IO_STACK_LOCATION {
} QueryVolume;
struct {
ULONG Length;
- FS_INFORMATION_CLASS FsInformationClass;
+ FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
} SetVolume;
struct {
ULONG OutputBufferLength;
- ULONG InputBufferLength;
- ULONG FsControlCode;
+ ULONG POINTER_ALIGNMENT InputBufferLength;
+ ULONG POINTER_ALIGNMENT FsControlCode;
PVOID Type3InputBuffer;
} FileSystemControl;
struct {
PLARGE_INTEGER Length;
- ULONG Key;
+ ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
} LockControl;
struct {
@@ -6499,7 +6670,14 @@ typedef struct _IO_STACK_LOCATION {
PPOWER_SEQUENCE PowerSequence;
} PowerSequence;
struct {
- ULONG SystemContext;
+#if (NTDDI_VERSION >= NTDDI_WINVISTA)
+ _ANONYMOUS_UNION union {
+#endif
+ ULONG SystemContext;
+#if (NTDDI_VERSION >= NTDDI_WINVISTA)
+ SYSTEM_POWER_STATE_CONTEXT SystemPowerStateContext;
+ } DUMMYUNIONNAME;
+#endif
POWER_STATE_TYPE POINTER_ALIGNMENT Type;
POWER_STATE POINTER_ALIGNMENT State;
POWER_ACTION POINTER_ALIGNMENT ShutdownType;
@@ -7679,6 +7857,11 @@ typedef enum _TRACE_INFORMATION_CLASS {
LoggerEventsLostClass,
TraceSessionSettingsClass,
LoggerEventsLoggedClass,
+ DiskIoNotifyRoutinesClass,
+ TraceInformationClassReserved1,
+ FltIoNotifyRoutinesClass,
+ TraceInformationClassReserved2,
+ WdfNotifyRoutinesClass,
MaxTraceInformationClass
} TRACE_INFORMATION_CLASS;
@@ -9345,7 +9528,7 @@ RtlExtendedMagicDivide(
ret64 = UnsignedMultiplyHigh(Pos ? Dividend.QuadPart : -Dividend.QuadPart,
MagicDivisor.QuadPart);
ret64 >>= ShiftCount;
- ret.QuadPart = Pos ? ret64 : -(LONG64)ret64;
+ ret.QuadPart = Pos ? (LONG64)ret64 : -(LONG64)ret64;
return ret;
}
#endif
@@ -16128,6 +16311,885 @@ ZwSetInformationKey(
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
+#ifndef _CLFS_PUBLIC_H_
+#define _CLFS_PUBLIC_H_
+
+#ifndef CLFSUSER_API
+#ifdef __CLFSUSER_EXPORTS__
+#define CLFSUSER_API
+#else
+#define CLFSUSER_API __declspec(dllimport)
+#endif
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WS03SP1 || _WIN32_WINNT >= _WIN32_WINNT_WS03
+
+#define FILE_ATTRIBUTE_DEDICATED FILE_ATTRIBUTE_TEMPORARY
+#define EA_CONTAINER_NAME "ContainerName"
+#define EA_CONTAINER_SIZE "ContainerSize"
+#define CLFS_BASELOG_EXTENSION L".blf"
+#define CLFS_FLAG_NO_FLAGS 0x00000000
+#define CLFS_FLAG_FORCE_APPEND 0x00000001
+#define CLFS_FLAG_FORCE_FLUSH 0x00000002
+#define CLFS_FLAG_USE_RESERVATION 0x00000004
+#define CLFS_FLAG_REENTRANT_FILE_SYSTEM 0x00000008
+#define CLFS_FLAG_NON_REENTRANT_FILTER 0x00000010
+#define CLFS_FLAG_REENTRANT_FILTER 0x00000020
+#define CLFS_FLAG_IGNORE_SHARE_ACCESS 0x00000040
+#define CLFS_FLAG_READ_IN_PROGRESS 0x00000080
+#define CLFS_FLAG_MINIFILTER_LEVEL 0x00000100
+#define CLFS_FLAG_HIDDEN_SYSTEM_LOG 0x00000200
+#define CLFS_FLAG_FILTER_INTERMEDIATE_LEVEL CLFS_FLAG_NON_REENTRANT_FILTER
+#define CLFS_FLAG_FILTER_TOP_LEVEL CLFS_FLAG_REENTRANT_FILTER
+#define CLFS_MARSHALLING_FLAG_NONE 0x00000000
+#define CLFS_MARSHALLING_FLAG_DISABLE_BUFF_INIT 0x00000001
+
+typedef ULONG CLFS_CONTAINER_ID, *PCLFS_CONTAINER_ID, **PPCLFS_CONTAINER_ID;
+
+typedef struct _CLS_LSN {
+ ULONGLONG Internal;
+} CLS_LSN, *PCLS_LSN, **PPCLS_LSN;
+
+typedef CLS_LSN CLFS_LSN, *PCLFS_LSN, **PPCLFS_LSN;
+
+extern __declspec(dllimport) const CLFS_LSN CLFS_LSN_INVALID;
+extern __declspec(dllimport) const CLFS_LSN CLFS_LSN_NULL;
+
+#define ClfsNullRecord 0x00
+#define ClfsDataRecord 0x01
+#define ClfsRestartRecord 0x02
+#define ClfsClientRecord (ClfsDataRecord | ClfsRestartRecord)
+
+#define CLFS_CONTAINER_STREAM_PREFIX L"%BLF%:"
+#define CLFS_CONTAINER_RELATIVE_PREFIX L"%BLF%\\"
+
+typedef UCHAR CLS_RECORD_TYPE, *PCLS_RECORD_TYPE, **PPCLS_RECORD_TYPE;
+typedef CLS_RECORD_TYPE CLFS_RECORD_TYPE, *PCLFS_RECORD_TYPE, **PPCLFS_RECORD_TYPE;
+
+typedef enum _CLS_CONTEXT_MODE {
+ ClsContextNone,
+ ClsContextUndoNext,
+ ClsContextPrevious,
+ ClsContextForward
+} CLS_CONTEXT_MODE, *PCLS_CONTEXT_MODE, **PPCLS_CONTEXT_MODE;
+
+typedef enum _CLFS_CONTEXT_MODE {
+ ClfsContextNone,
+ ClfsContextUndoNext,
+ ClfsContextPrevious,
+ ClfsContextForward
+} CLFS_CONTEXT_MODE, *PCLFS_CONTEXT_MODE, **PPCLFS_CONTEXT_MODE;
+
+typedef struct _CLFS_NODE_ID {
+ ULONG cType;
+ ULONG cbNode;
+} CLFS_NODE_ID, *PCLFS_NODE_ID;
+
+typedef struct _CLS_WRITE_ENTRY {
+ PVOID Buffer;
+ ULONG ByteLength;
+} CLS_WRITE_ENTRY, *PCLS_WRITE_ENTRY, **PPCLS_WRITE_ENTRY;
+
+typedef CLS_WRITE_ENTRY CLFS_WRITE_ENTRY, *PCLFS_WRITE_ENTRY, **PPCLFS_WRITE_ENTRY;
+
+typedef GUID CLFS_LOG_ID;
+
+typedef struct _CLS_INFORMATION {
+ LONGLONG TotalAvailable;
+ LONGLONG CurrentAvailable;
+ LONGLONG TotalReservation;
+ ULONGLONG BaseFileSize;
+ ULONGLONG ContainerSize;
+ ULONG TotalContainers;
+ ULONG FreeContainers;
+ ULONG TotalClients;
+ ULONG Attributes;
+ ULONG FlushThreshold;
+ ULONG SectorSize;
+ CLS_LSN MinArchiveTailLsn;
+ CLS_LSN BaseLsn;
+ CLS_LSN LastFlushedLsn;
+ CLS_LSN LastLsn;
+ CLS_LSN RestartLsn;
+ GUID Identity;
+} CLS_INFORMATION, *PCLS_INFORMATION, *PPCLS_INFORMATION;
+
+typedef CLS_INFORMATION CLFS_INFORMATION, *PCLFS_INFORMATION, *PPCLFS_INFORMATION;
+
+typedef struct _CLFS_LOG_NAME_INFORMATION {
+ USHORT NameLengthInBytes;
+ WCHAR Name[1];
+} CLFS_LOG_NAME_INFORMATION, *PCLFS_LOG_NAME_INFORMATION, **PPCLFS_LOG_NAME_INFORMATION;
+
+typedef struct _CLFS_STREAM_ID_INFORMATION {
+ UCHAR StreamIdentifier;
+} CLFS_STREAM_ID_INFORMATION, *PCLFS_STREAM_ID_INFORMATION, **PPCLFS_STREAM_ID_INFORMATION;
+
+typedef UINT32 CLS_CONTAINER_STATE, *PCLS_CONTAINER_STATE, *PPCLS_CONTAINER_STATE;
+typedef CLS_CONTAINER_STATE CLFS_CONTAINER_STATE, *PCLFS_CONTAINER_STATE, *PPCLFS_CONTAINER_STATE;
+
+#define ClsContainerInitializing 0x01
+#define ClsContainerInactive 0x02
+#define ClsContainerActive 0x04
+#define ClsContainerActivePendingDelete 0x08
+#define ClsContainerPendingArchive 0x10
+#define ClsContainerPendingArchiveAndDelete 0x20
+
+#define ClfsContainerInitializing 0x01
+#define ClfsContainerInactive 0x02
+#define ClfsContainerActive 0x04
+#define ClfsContainerActivePendingDelete 0x08
+#define ClfsContainerPendingArchive 0x10
+#define ClfsContainerPendingArchiveAndDelete 0x20
+
+#define CLFS_MAX_CONTAINER_INFO 256
+
+typedef struct _CLS_CONTAINER_INFORMATION {
+ ULONG FileAttributes;
+ ULONGLONG CreationTime;
+ ULONGLONG LastAccessTime;
+ ULONGLONG LastWriteTime;
+ LONGLONG ContainerSize;
+ ULONG FileNameActualLength;
+ ULONG FileNameLength;
+ WCHAR FileName[CLFS_MAX_CONTAINER_INFO];
+ CLFS_CONTAINER_STATE State;
+ CLFS_CONTAINER_ID PhysicalContainerId;
+ CLFS_CONTAINER_ID LogicalContainerId;
+} CLS_CONTAINER_INFORMATION, *PCLS_CONTAINER_INFORMATION, **PPCLS_CONTAINER_INFORMATION;
+
+typedef CLS_CONTAINER_INFORMATION CLFS_CONTAINER_INFORMATION, *PCLFS_CONTAINER_INFORMATION, **PPCLFS_CONTAINER_INFORMATION;
+
+typedef enum _CLS_LOG_INFORMATION_CLASS {
+ ClfsLogBasicInformation,
+ ClfsLogBasicInformationPhysical,
+ ClfsLogPhysicalNameInformation,
+ ClfsLogStreamIdentifierInformation,
+#if NTDDI_VERSION >= NTDDI_VISTA || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+ ClfsLogSystemMarkingInformation,
+ ClfsLogPhysicalLsnInformation
+#endif
+} CLS_LOG_INFORMATION_CLASS, *PCLS_LOG_INFORMATION_CLASS, **PPCLS_LOG_INFORMATION_CLASS;
+
+typedef CLS_LOG_INFORMATION_CLASS CLFS_LOG_INFORMATION_CLASS, *PCLFS_LOG_INFORMATION_CLASS, **PPCLFS_LOG_INFORMATION_CLASS;
+
+typedef enum _CLS_IOSTATS_CLASS {
+ ClsIoStatsDefault = 0x0000,
+ ClsIoStatsMax = 0xffff
+} CLS_IOSTATS_CLASS, *PCLS_IOSTATS_CLASS, **PPCLS_IOSTATS_CLASS;
+
+typedef enum _CLFS_IOSTATS_CLASS {
+ ClfsIoStatsDefault = 0x0000,
+ ClfsIoStatsMax = 0xffff
+} CLFS_IOSTATS_CLASS, *PCLFS_IOSTATS_CLASS, **PPCLFS_IOSTATS_CLASS;
+
+typedef struct _CLS_IO_STATISTICS_HEADER {
+ UCHAR ubMajorVersion;
+ UCHAR ubMinorVersion;
+ CLFS_IOSTATS_CLASS eStatsClass;
+ USHORT cbLength;
+ ULONG coffData;
+} CLS_IO_STATISTICS_HEADER, *PCLS_IO_STATISTICS_HEADER, **PPCLS_IO_STATISTICS_HEADER;
+
+typedef CLS_IO_STATISTICS_HEADER CLFS_IO_STATISTICS_HEADER, *PCLFS_IO_STATISTICS_HEADER, **PPCLFS_IO_STATISTICS_HEADER;
+
+typedef struct _CLS_IO_STATISTICS {
+ CLS_IO_STATISTICS_HEADER hdrIoStats;
+ ULONGLONG cFlush;
+ ULONGLONG cbFlush;
+ ULONGLONG cMetaFlush;
+ ULONGLONG cbMetaFlush;
+} CLS_IO_STATISTICS, *PCLS_IO_STATISTICS, **PPCLS_IO_STATISTICS;
+
+typedef CLS_IO_STATISTICS CLFS_IO_STATISTICS, *PCLFS_IO_STATISTICS, **PPCLFS_IO_STATISTICS;
+
+#define CLFS_SCAN_INIT 0x01
+#define CLFS_SCAN_FORWARD 0x02
+#define CLFS_SCAN_BACKWARD 0x04
+#define CLFS_SCAN_CLOSE 0x08
+#define CLFS_SCAN_INITIALIZED 0x10
+#define CLFS_SCAN_BUFFERED 0x20
+
+typedef UCHAR CLFS_SCAN_MODE, *PCLFS_SCAN_MODE;
+
+typedef FILE_OBJECT LOG_FILE_OBJECT, *PLOG_FILE_OBJECT, **PPLOG_FILE_OBJECT;
+
+typedef struct _CLS_SCAN_CONTEXT {
+ CLFS_NODE_ID cidNode;
+ PLOG_FILE_OBJECT plfoLog;
+ ULONG cIndex __attribute__((aligned(8)));
+ ULONG cContainers __attribute__((aligned(8)));
+ ULONG cContainersReturned __attribute__((aligned(8)));
+ CLFS_SCAN_MODE eScanMode __attribute__((aligned(8)));
+ PCLS_CONTAINER_INFORMATION pinfoContainer __attribute__((aligned(8)));
+} CLS_SCAN_CONTEXT, *PCLS_SCAN_CONTEXT, **PPCLS_SCAN_CONTEXT;
+
+typedef CLS_SCAN_CONTEXT CLFS_SCAN_CONTEXT, *PCLFS_SCAN_CONTEXT, **PPCLFS_SCAN_CONTEXT;
+
+typedef struct _CLS_ARCHIVE_DESCRIPTOR {
+ ULONGLONG coffLow;
+ ULONGLONG coffHigh;
+ CLS_CONTAINER_INFORMATION infoContainer;
+} CLS_ARCHIVE_DESCRIPTOR, *PCLS_ARCHIVE_DESCRIPTOR, **PPCLS_ARCHIVE_DESCRIPTOR;
+
+typedef CLS_ARCHIVE_DESCRIPTOR CLFS_ARCHIVE_DESCRIPTOR, *PCLFS_ARCHIVE_DESCRIPTOR, **PPCLFS_ARCHIVE_DESCRIPTOR;
+
+typedef PVOID (*CLFS_BLOCK_ALLOCATION)(ULONG cbBufferLength, PVOID pvUserContext);
+typedef void (*CLFS_BLOCK_DEALLOCATION)(PVOID pvBuffer, PVOID pvUserContext);
+
+typedef enum _CLFS_LOG_ARCHIVE_MODE {
+ ClfsLogArchiveEnabled = 1,
+ ClfsLogArchiveDisabled = 2
+} CLFS_LOG_ARCHIVE_MODE, *PCLFS_LOG_ARCHIVE_MODE;
+
+CLFSUSER_API
+BOOLEAN
+NTAPI
+ClfsLsnEqual(
+ const CLFS_LSN* plsn1,
+ const CLFS_LSN* plsn2);
+
+CLFSUSER_API
+BOOLEAN
+NTAPI
+ClfsLsnLess(
+ const CLFS_LSN* plsn1,
+ const CLFS_LSN* plsn2);
+
+CLFSUSER_API
+BOOLEAN
+NTAPI
+ClfsLsnGreater(
+ const CLFS_LSN* plsn1,
+ const CLFS_LSN* plsn2);
+
+CLFSUSER_API
+BOOLEAN
+NTAPI
+ClfsLsnNull(
+ const CLFS_LSN* plsn);
+
+CLFSUSER_API
+CLFS_CONTAINER_ID
+NTAPI
+ClfsLsnContainer(
+ const CLFS_LSN* plsn);
+
+CLFSUSER_API
+CLFS_LSN
+NTAPI
+ClfsLsnCreate(
+ CLFS_CONTAINER_ID cidContainer,
+ ULONG offBlock,
+ ULONG cRecord);
+
+CLFSUSER_API
+ULONG
+NTAPI
+ClfsLsnBlockOffset(
+ const CLFS_LSN* plsn);
+
+CLFSUSER_API
+ULONG
+NTAPI
+ClfsLsnRecordSequence(
+ const CLFS_LSN* plsn);
+
+CLFSUSER_API
+BOOLEAN
+NTAPI
+ClfsLsnInvalid(
+ const CLFS_LSN* plsn);
+
+CLFSUSER_API
+CLFS_LSN
+NTAPI
+ClfsLsnIncrement(
+ PCLFS_LSN plsn);
+
+#ifdef __cplusplus
+#ifdef CLFS_OPERATORS
+
+inline CLFS_LSN operator++(CLFS_LSN& refLsn) {
+ refLsn = ClfsLsnIncrement (&refLsn);
+ return refLsn;
+}
+
+inline BOOLEAN operator<(const CLFS_LSN& refLsn1, const CLFS_LSN& refLsn2) {
+ return ClfsLsnLess(&refLsn1, &refLsn2);
+}
+
+inline BOOLEAN operator>(const CLFS_LSN& refLsn1, const CLFS_LSN& refLsn2) {
+ return ClfsLsnGreater(&refLsn1, &refLsn2);
+}
+
+inline BOOLEAN operator==(const CLFS_LSN& refLsn1, const CLFS_LSN& refLsn2) {
+ return ClfsLsnEqual(&refLsn1, &refLsn2);
+}
+
+inline BOOLEAN operator!=(const CLFS_LSN& refLsn1, const CLFS_LSN& refLsn2) {
+ return !ClfsLsnEqual(&refLsn1, &refLsn2);
+}
+
+inline BOOLEAN operator<=(const CLFS_LSN& refLsn1, const CLFS_LSN& refLsn2) {
+ return !ClfsLsnGreater(&refLsn1, &refLsn2);
+}
+
+inline BOOLEAN operator>=(const CLFS_LSN& refLsn1, const CLFS_LSN& refLsn2) {
+ return !ClfsLsnLess(&refLsn1, &refLsn2);
+}
+
+#endif
+#endif
+#endif
+
+#if NTDDI_VERSION >= NTDDI_VISTA || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+
+#pragma pack(push,8)
+
+typedef struct _CLFS_PHYSICAL_LSN_INFORMATION {
+ UCHAR StreamIdentifier;
+ CLFS_LSN VirtualLsn;
+ CLFS_LSN PhysicalLsn;
+} CLFS_PHYSICAL_LSN_INFORMATION, *PCLFS_PHYSICAL_LSN_INFORMATION;
+
+#pragma pack(pop)
+
+#endif
+
+#endif /* _CLFS_PUBLIC_H_ */
+
+#if NTDDI_VERSION >= NTDDI_WS03SP1 || _WIN32_WINNT >= _WIN32_WINNT_WS03
+
+typedef enum _CLFS_MGMT_POLICY_TYPE {
+ ClfsMgmtPolicyMaximumSize,
+ ClfsMgmtPolicyMinimumSize,
+ ClfsMgmtPolicyNewContainerSize,
+ ClfsMgmtPolicyGrowthRate,
+ ClfsMgmtPolicyLogTail,
+ ClfsMgmtPolicyAutoShrink,
+ ClfsMgmtPolicyAutoGrow,
+ ClfsMgmtPolicyNewContainerPrefix,
+ ClfsMgmtPolicyNewContainerSuffix,
+ ClfsMgmtPolicyNewContainerExtension,
+ ClfsMgmtPolicyInvalid
+} CLFS_MGMT_POLICY_TYPE, *PCLFS_MGMT_POLICY_TYPE;
+
+#define CLFS_MGMT_NUM_POLICIES (ULONG)ClfsMgmtPolicyInvalid
+
+#define CLFS_LOG_SIZE_MINIMUM (ULONGLONG)0
+#define CLFS_LOG_SIZE_MAXIMUM (ULONGLONG)-1
+
+#define CLFS_MGMT_POLICY_VERSION 1
+
+#define LOG_POLICY_OVERWRITE 0x01
+#define LOG_POLICY_PERSIST 0x02
+
+typedef struct _CLFS_MGMT_POLICY {
+ ULONG Version;
+ ULONG LengthInBytes;
+ ULONG PolicyFlags;
+ CLFS_MGMT_POLICY_TYPE PolicyType;
+ union {
+ struct {
+ ULONG Containers;
+ } MaximumSize;
+ struct {
+ ULONG Containers;
+ } MinimumSize;
+ struct {
+ ULONG SizeInBytes;
+ } NewContainerSize;
+ struct {
+ ULONG AbsoluteGrowthInContainers;
+ ULONG RelativeGrowthPercentage;
+ } GrowthRate;
+ struct {
+ ULONG MinimumAvailablePercentage;
+ ULONG MinimumAvailableContainers;
+ } LogTail;
+ struct {
+ ULONG Percentage;
+ } AutoShrink;
+ struct {
+ ULONG Enabled;
+ } AutoGrow;
+ struct {
+ USHORT PrefixLengthInBytes;
+ WCHAR PrefixString[1];
+ } NewContainerPrefix;
+ struct {
+ ULONGLONG NextContainerSuffix;
+ } NewContainerSuffix;
+ struct {
+ USHORT ExtensionLengthInBytes;
+ WCHAR ExtensionString[1];
+ } NewContainerExtension;
+ } PolicyParameters;
+} CLFS_MGMT_POLICY, *PCLFS_MGMT_POLICY;
+
+typedef enum _CLFS_MGMT_NOTIFICATION_TYPE {
+ ClfsMgmtAdvanceTailNotification,
+ ClfsMgmtLogFullHandlerNotification,
+ ClfsMgmtLogUnpinnedNotification,
+ ClfsMgmtLogWriteNotification
+} CLFS_MGMT_NOTIFICATION_TYPE, *PCLFS_MGMT_NOTIFICATION_TYPE;
+
+typedef struct _CLFS_MGMT_NOTIFICATION {
+ CLFS_MGMT_NOTIFICATION_TYPE Notification;
+ CLFS_LSN Lsn;
+ USHORT LogIsPinned;
+} CLFS_MGMT_NOTIFICATION, *PCLFS_MGMT_NOTIFICATION;
+
+typedef NTSTATUS (*PCLFS_CLIENT_ADVANCE_TAIL_CALLBACK)(
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_LSN TargetLsn,
+ PVOID ClientData);
+
+typedef VOID (*PCLFS_CLIENT_LFF_HANDLER_COMPLETE_CALLBACK)(
+ PLOG_FILE_OBJECT LogFile,
+ NTSTATUS OperationStatus,
+ BOOLEAN LogIsPinned,
+ PVOID ClientData);
+
+typedef VOID (*PCLFS_CLIENT_LOG_UNPINNED_CALLBACK)(
+ PLOG_FILE_OBJECT LogFile,
+ PVOID ClientData);
+
+typedef VOID (*PCLFS_SET_LOG_SIZE_COMPLETE_CALLBACK)(
+ PLOG_FILE_OBJECT LogFile,
+ NTSTATUS OperationStatus,
+ PVOID ClientData);
+
+#define CLFS_MGMT_CLIENT_REGISTRATION_VERSION 1
+
+typedef struct _CLFS_MGMT_CLIENT_REGISTRATION {
+ ULONG Version;
+ PCLFS_CLIENT_ADVANCE_TAIL_CALLBACK AdvanceTailCallback;
+ PVOID AdvanceTailCallbackData;
+ PCLFS_CLIENT_LFF_HANDLER_COMPLETE_CALLBACK LogGrowthCompleteCallback;
+ PVOID LogGrowthCompleteCallbackData;
+ PCLFS_CLIENT_LOG_UNPINNED_CALLBACK LogUnpinnedCallback;
+ PVOID LogUnpinnedCallbackData;
+} CLFS_MGMT_CLIENT_REGISTRATION, *PCLFS_MGMT_CLIENT_REGISTRATION;
+
+typedef PVOID CLFS_MGMT_CLIENT, *PCLFS_MGMT_CLIENT;
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtRegisterManagedClient(
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_MGMT_CLIENT_REGISTRATION RegistrationData,
+ PCLFS_MGMT_CLIENT ClientCookie);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtDeregisterManagedClient(
+ CLFS_MGMT_CLIENT ClientCookie);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtTailAdvanceFailure(
+ CLFS_MGMT_CLIENT Client,
+ NTSTATUS Reason);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtHandleLogFileFull(
+ CLFS_MGMT_CLIENT Client);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtInstallPolicy(
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_MGMT_POLICY Policy,
+ ULONG PolicyLength);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtQueryPolicy(
+ PLOG_FILE_OBJECT LogFile,
+ CLFS_MGMT_POLICY_TYPE PolicyType,
+ PCLFS_MGMT_POLICY Policy,
+ PULONG PolicyLength);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtRemovePolicy(
+ PLOG_FILE_OBJECT LogFile,
+ CLFS_MGMT_POLICY_TYPE PolicyType);
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtSetLogFileSize(
+ PLOG_FILE_OBJECT LogFile,
+ PULONGLONG NewSizeInContainers,
+ PULONGLONG ResultingSizeInContainers,
+ PCLFS_SET_LOG_SIZE_COMPLETE_CALLBACK CompletionRoutine,
+ PVOID CompletionRoutineData);
+
+#endif
+
+#if NTDDI_VERSION >= NTDDI_VISTA || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+
+CLFSUSER_API
+NTSTATUS
+ClfsMgmtSetLogFileSizeAsClient(
+ PLOG_FILE_OBJECT LogFile,
+ PCLFS_MGMT_CLIENT ClientCookie,
+ PULONGLONG NewSizeInContainers,
+ PULONGLONG ResultingSizeInContainers,
+ PCLFS_SET_LOG_SIZE_COMPLETE_CALLBACK CompletionRoutine,
+ PVOID CompletionRoutineData);
+
+#endif
+
+#ifndef __CLFSPROC_H__
+#define __CLFSPROC_H__
+
+#if NTDDI_VERSION >= NTDDI_WS03SP1
+
+CLFSUSER_API NTSTATUS ClfsInitialize(void);
+
+CLFSUSER_API void ClfsFinalize(void);
+
+CLFSUSER_API
+NTSTATUS
+ClfsCreateLogFile(
+ PPLOG_FILE_OBJECT pplfoLog,
+ PUNICODE_STRING puszLogFileName,
+ ACCESS_MASK fDesiredAccess,
+ ULONG dwShareMode,
+ PSECURITY_DESCRIPTOR psdLogFile,
+ ULONG fCreateDisposition,
+ ULONG fCreateOptions,
+ ULONG fFlagsAndAttributes,
+ ULONG fLogOptionFlag,
+ PVOID pvContext,
+ ULONG cbContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsDeleteLogByPointer(
+ PLOG_FILE_OBJECT plfoLog);
+
+CLFSUSER_API
+NTSTATUS
+ClfsDeleteLogFile(
+ PUNICODE_STRING puszLogFileName,
+ PVOID pvReserved,
+ ULONG fLogOptionFlag,
+ PVOID pvContext,
+ ULONG cbContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsAddLogContainer(
+ PLOG_FILE_OBJECT plfoLog,
+ PULONGLONG pcbContainer,
+ PUNICODE_STRING puszContainerPath);
+
+CLFSUSER_API
+NTSTATUS
+ClfsAddLogContainerSet(
+ PLOG_FILE_OBJECT plfoLog,
+ USHORT cContainers,
+ PULONGLONG pcbContainer,
+ PUNICODE_STRING rguszContainerPath);
+
+CLFSUSER_API
+NTSTATUS
+ClfsRemoveLogContainer(
+ PLOG_FILE_OBJECT plfoLog,
+ PUNICODE_STRING puszContainerPath,
+ BOOLEAN fForce);
+
+CLFSUSER_API
+NTSTATUS
+ClfsRemoveLogContainerSet(
+ PLOG_FILE_OBJECT plfoLog,
+ USHORT cContainers,
+ PUNICODE_STRING rgwszContainerPath,
+ BOOLEAN fForce);
+
+CLFSUSER_API
+NTSTATUS
+ClfsSetArchiveTail(
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_LSN plsnArchiveTail);
+
+CLFSUSER_API
+NTSTATUS
+ClfsSetEndOfLog(
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_LSN plsnEnd);
+
+CLFSUSER_API
+NTSTATUS
+ClfsCreateScanContext(
+ PLOG_FILE_OBJECT plfoLog,
+ ULONG cFromContainer,
+ ULONG cContainers,
+ CLFS_SCAN_MODE eScanMode,
+ PCLFS_SCAN_CONTEXT pcxScan);
+
+CLFSUSER_API
+NTSTATUS
+ClfsScanLogContainers(
+ PCLFS_SCAN_CONTEXT pcxScan,
+ CLFS_SCAN_MODE eScanMode);
+
+CLFSUSER_API
+NTSTATUS
+ClfsGetContainerName(
+ PLOG_FILE_OBJECT plfoLog,
+ CLFS_CONTAINER_ID cidLogicalContainer,
+ PUNICODE_STRING puszContainerName,
+ PULONG pcActualLenContainerName);
+
+CLFSUSER_API
+NTSTATUS
+ClfsGetLogFileInformation(
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_INFORMATION pinfoBuffer,
+ PULONG pcbInfoBuffer);
+
+CLFSUSER_API
+NTSTATUS
+ClfsSetLogFileInformation(
+ PLOG_FILE_OBJECT plfoLog,
+ CLFS_LOG_INFORMATION_CLASS eInformationClass,
+ PVOID pinfoBuffer,
+ ULONG cbBuffer);
+
+CLFSUSER_API
+NTSTATUS
+ClfsReadRestartArea(
+ PVOID pvMarshalContext,
+ PVOID* ppvRestartBuffer,
+ PULONG pcbRestartBuffer,
+ PCLFS_LSN plsn,
+ PVOID* ppvReadContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsReadPreviousRestartArea(
+ PVOID pvReadContext,
+ PVOID* ppvRestartBuffer,
+ PULONG pcbRestartBuffer,
+ PCLFS_LSN plsnRestart);
+
+CLFSUSER_API
+NTSTATUS
+ClfsWriteRestartArea(
+ PVOID pvMarshalContext,
+ PVOID pvRestartBuffer,
+ ULONG cbRestartBuffer,
+ PCLFS_LSN plsnBase,
+ ULONG fFlags,
+ PULONG pcbWritten,
+ PCLFS_LSN plsnNext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsAdvanceLogBase(
+ PVOID pvMarshalContext,
+ PCLFS_LSN plsnBase,
+ ULONG fFlags);
+
+CLFSUSER_API
+NTSTATUS
+ClfsCloseAndResetLogFile(
+ PLOG_FILE_OBJECT plfoLog);
+
+CLFSUSER_API
+NTSTATUS
+ClfsCloseLogFileObject(
+ PLOG_FILE_OBJECT plfoLog);
+
+CLFSUSER_API
+NTSTATUS
+ClfsCreateMarshallingArea(
+ PLOG_FILE_OBJECT plfoLog,
+ POOL_TYPE ePoolType,
+ PALLOCATE_FUNCTION pfnAllocBuffer,
+ PFREE_FUNCTION pfnFreeBuffer,
+ ULONG cbMarshallingBuffer,
+ ULONG cMaxWriteBuffers,
+ ULONG cMaxReadBuffers,
+ PVOID* ppvMarshalContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsDeleteMarshallingArea(
+ PVOID pvMarshalContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsReserveAndAppendLog(
+ PVOID pvMarshalContext,
+ PCLFS_WRITE_ENTRY rgWriteEntries,
+ ULONG cWriteEntries,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ ULONG cReserveRecords,
+ PLONGLONG rgcbReservation,
+ ULONG fFlags,
+ PCLFS_LSN plsn);
+
+CLFSUSER_API
+NTSTATUS
+ClfsReserveAndAppendLogAligned(
+ PVOID pvMarshalContext,
+ PCLFS_WRITE_ENTRY rgWriteEntries,
+ ULONG cWriteEntries,
+ ULONG cbEntryAlignment,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ ULONG cReserveRecords,
+ PLONGLONG rgcbReservation,
+ ULONG fFlags,
+ PCLFS_LSN plsn);
+
+CLFSUSER_API
+NTSTATUS
+ClfsAlignReservedLog(
+ PVOID pvMarshalContext,
+ ULONG cRecords,
+ LONGLONG rgcbReservation[],
+ PLONGLONG pcbAlignReservation);
+
+CLFSUSER_API
+NTSTATUS
+ClfsAllocReservedLog(
+ PVOID pvMarshalContext,
+ ULONG cRecords,
+ PLONGLONG pcbAdjustment);
+
+CLFSUSER_API
+NTSTATUS
+ClfsFreeReservedLog(
+ PVOID pvMarshalContext,
+ ULONG cRecords,
+ PLONGLONG pcbAdjustment);
+
+CLFSUSER_API
+NTSTATUS
+ClfsFlushBuffers(
+ PVOID pvMarshalContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsFlushToLsn(
+ PVOID pvMarshalContext,
+ PCLFS_LSN plsnFlush,
+ PCLFS_LSN plsnLastFlushed);
+
+CLFSUSER_API
+NTSTATUS
+ClfsReadLogRecord(
+ PVOID pvMarshalContext,
+ PCLFS_LSN plsnFirst,
+ CLFS_CONTEXT_MODE peContextMode,
+ PVOID* ppvReadBuffer,
+ PULONG pcbReadBuffer,
+ PCLFS_RECORD_TYPE peRecordType,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ PVOID* ppvReadContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsReadNextLogRecord(
+ PVOID pvReadContext,
+ PVOID* ppvBuffer,
+ PULONG pcbBuffer,
+ PCLFS_RECORD_TYPE peRecordType,
+ PCLFS_LSN plsnUser,
+ PCLFS_LSN plsnUndoNext,
+ PCLFS_LSN plsnPrevious,
+ PCLFS_LSN plsnRecord);
+
+CLFSUSER_API
+NTSTATUS
+ClfsTerminateReadLog(
+ PVOID pvCursorContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsGetLastLsn(
+ PLOG_FILE_OBJECT plfoLog,
+ PCLFS_LSN plsnLast);
+
+CLFSUSER_API
+NTSTATUS
+ClfsGetIoStatistics(
+ PLOG_FILE_OBJECT plfoLog,
+ PVOID pvStatsBuffer,
+ ULONG cbStatsBuffer,
+ CLFS_IOSTATS_CLASS eStatsClass,
+ PULONG pcbStatsWritten);
+
+CLFSUSER_API
+CLFS_LSN
+ClfsLaterLsn(
+ PCLFS_LSN plsn);
+
+CLFSUSER_API
+CLFS_LSN
+ClfsEarlierLsn(
+ PCLFS_LSN plsn);
+
+CLFSUSER_API
+NTSTATUS
+ClfsLsnDifference(
+ PCLFS_LSN plsnStart,
+ PCLFS_LSN plsnFinish,
+ ULONG cbContainer,
+ ULONG cbMaxBlock,
+ PLONGLONG pcbDifference);
+
+#endif
+
+#if NTDDI_VERSION >= NTDDI_VISTA
+
+CLFSUSER_API
+BOOLEAN
+ClfsValidTopLevelContext(
+ PIRP pirpTopLevelContext);
+
+CLFSUSER_API
+NTSTATUS
+ClfsQueryLogFileInformation(
+ PLOG_FILE_OBJECT plfoLog,
+ CLFS_LOG_INFORMATION_CLASS eInformationClass,
+ PVOID pinfoInputBuffer,
+ ULONG cbinfoInputBuffer,
+ PVOID pinfoBuffer,
+ PULONG pcbInfoBuffer);
+
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN8
+
+CLFSUSER_API
+NTSTATUS
+ClfsCreateMarshallingAreaEx(
+ PLOG_FILE_OBJECT plfoLog,
+ POOL_TYPE ePoolType,
+ PALLOCATE_FUNCTION pfnAllocBuffer,
+ PFREE_FUNCTION pfnFreeBuffer,
+ ULONG cbMarshallingBuffer,
+ ULONG cMaxWriteBuffers,
+ ULONG cMaxReadBuffers,
+ ULONG cAlignmentSize,
+ ULONGLONG fFlags,
+ PVOID* ppvMarshalContext);
+
+#endif
+
+#endif /* __CLFSPROC_H__ */
+
#ifdef __cplusplus
}
#endif
diff --git a/lib/libc/include/any-windows-any/ddstream.h b/lib/libc/include/any-windows-any/ddstream.h
index cbd1ce4390..4e05d6d0dc 100644
--- a/lib/libc/include/any-windows-any/ddstream.h
+++ b/lib/libc/include/any-windows-any/ddstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/ddstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/ddstream.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/devicetopology.h b/lib/libc/include/any-windows-any/devicetopology.h
index 9780659f61..31eb8037d3 100644
--- a/lib/libc/include/any-windows-any/devicetopology.h
+++ b/lib/libc/include/any-windows-any/devicetopology.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/devicetopology.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/devicetopology.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dimm.h b/lib/libc/include/any-windows-any/dimm.h
index 9c148bcd0a..80b851c391 100644
--- a/lib/libc/include/any-windows-any/dimm.h
+++ b/lib/libc/include/any-windows-any/dimm.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dimm.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dimm.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dinput.h b/lib/libc/include/any-windows-any/dinput.h
index 57d06a82f8..4e2d510089 100644
--- a/lib/libc/include/any-windows-any/dinput.h
+++ b/lib/libc/include/any-windows-any/dinput.h
@@ -387,7 +387,7 @@ typedef struct DIDEVICEOBJECTINSTANCEA {
WORD wUsage;
DWORD dwDimension;
WORD wExponent;
- WORD wReserved;
+ WORD wReportId;
#endif /* DIRECTINPUT_VERSION >= 0x0500 */
} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
@@ -408,7 +408,7 @@ typedef struct DIDEVICEOBJECTINSTANCEW {
WORD wUsage;
DWORD dwDimension;
WORD wExponent;
- WORD wReserved;
+ WORD wReportId;
#endif /* DIRECTINPUT_VERSION >= 0x0500 */
} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
diff --git a/lib/libc/include/any-windows-any/dinputd.h b/lib/libc/include/any-windows-any/dinputd.h
index 2934fc4038..8e0ceed512 100644
--- a/lib/libc/include/any-windows-any/dinputd.h
+++ b/lib/libc/include/any-windows-any/dinputd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dinputd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dinputd.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/directmanipulation.h b/lib/libc/include/any-windows-any/directmanipulation.h
index 9feb303040..a034f67639 100644
--- a/lib/libc/include/any-windows-any/directmanipulation.h
+++ b/lib/libc/include/any-windows-any/directmanipulation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/directmanipulation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/directmanipulation.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dispex.h b/lib/libc/include/any-windows-any/dispex.h
index 59ecfdaf1a..cf466b1097 100644
--- a/lib/libc/include/any-windows-any/dispex.h
+++ b/lib/libc/include/any-windows-any/dispex.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dispex.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dispex.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dmodshow.h b/lib/libc/include/any-windows-any/dmodshow.h
index d3370f14ae..0900fb7d56 100644
--- a/lib/libc/include/any-windows-any/dmodshow.h
+++ b/lib/libc/include/any-windows-any/dmodshow.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dmodshow.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dmodshow.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/docobj.h b/lib/libc/include/any-windows-any/docobj.h
index 7e12220144..8d9a318b47 100644
--- a/lib/libc/include/any-windows-any/docobj.h
+++ b/lib/libc/include/any-windows-any/docobj.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/docobj.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/docobj.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/docobjectservice.h b/lib/libc/include/any-windows-any/docobjectservice.h
index db841b271c..ba86e5514a 100644
--- a/lib/libc/include/any-windows-any/docobjectservice.h
+++ b/lib/libc/include/any-windows-any/docobjectservice.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/docobjectservice.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/docobjectservice.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/documenttarget.h b/lib/libc/include/any-windows-any/documenttarget.h
index 9f311afa82..df7db4161c 100644
--- a/lib/libc/include/any-windows-any/documenttarget.h
+++ b/lib/libc/include/any-windows-any/documenttarget.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/documenttarget.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/documenttarget.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/downloadmgr.h b/lib/libc/include/any-windows-any/downloadmgr.h
index 8e04a32dcc..5b26dc5948 100644
--- a/lib/libc/include/any-windows-any/downloadmgr.h
+++ b/lib/libc/include/any-windows-any/downloadmgr.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/downloadmgr.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/downloadmgr.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/drmexternals.h b/lib/libc/include/any-windows-any/drmexternals.h
index 39b4d5e512..67e412929c 100644
--- a/lib/libc/include/any-windows-any/drmexternals.h
+++ b/lib/libc/include/any-windows-any/drmexternals.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/drmexternals.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/drmexternals.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dsound.h b/lib/libc/include/any-windows-any/dsound.h
index a96c3d0b8f..58fb907e5f 100644
--- a/lib/libc/include/any-windows-any/dsound.h
+++ b/lib/libc/include/any-windows-any/dsound.h
@@ -83,13 +83,21 @@ typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8,**LPLPDIRECTSOUNDBUFFER
DEFINE_GUID(IID_IDirectSoundNotify, 0xB0210783,0x89cd,0x11d0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY,**LPLPDIRECTSOUNDNOTIFY;
+#define IDirectSoundNotify8 IDirectSoundNotify
+typedef struct IDirectSoundNotify8 *LPDIRECTSOUNDNOTIFY8;
#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify
DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER,**LPLPDIRECTSOUND3DLISTENER;
+#define IDirectSound3DListener8 IDirectSound3DListener
+typedef struct IDirectSound3DListener8 *LPDIRECTSOUND3DLISTENER8;
+#define IID_IDirectSound3DListener8 IID_IDirectSound3DListener
DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER,**LPLPDIRECTSOUND3DBUFFER;
+#define IDirectSound3DBuffer8 IDirectSound3DBuffer
+typedef struct IDirectSound3DBuffer8 *LPDIRECTSOUND3DBUFFER8;
+#define IID_IDirectSound3DBuffer8 IID_IDirectSound3DBuffer
DEFINE_GUID(IID_IDirectSoundCapture, 0xB0210781,0x89CD,0x11D0,0xAF,0x08,0x00,0xA0,0xC9,0x25,0xCD,0x16);
typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE,**LPLPDIRECTSOUNDCAPTURE;
@@ -104,6 +112,8 @@ typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8,**LPLPDIR
DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xEDCB4C7A,0xDAAB,0x4216,0xA4,0x2E,0x6C,0x50,0x59,0x6D,0xDC,0x1D);
typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX,**LPLPDIRECTSOUNDFULLDUPLEX;
+#define IDirectSoundFullDuplex8 IDirectSoundFullDuplex
+typedef struct IDirectSoundFullDuplex8 *LPDIRECTSOUNDFULLDUPLEX8;
#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex
DEFINE_GUID(IID_IDirectSoundFXI3DL2Reverb, 0x4b166a6a, 0x0d66, 0x43f3, 0x80, 0xe3, 0xee, 0x62, 0x80, 0xde, 0xe1, 0xa4);
@@ -1153,7 +1163,6 @@ DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown)
#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d)
#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings()
#endif
-#define IDirectSound3DListener8 IDirectSound3DListener
/*****************************************************************************
* IDirectSound3DBuffer interface
@@ -1251,7 +1260,6 @@ DECLARE_INTERFACE_(IDirectSound3DBuffer,IUnknown)
#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d)
#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d)
#endif
-#define IDirectSound3DBuffer8 IDirectSound3DBuffer
/*****************************************************************************
* IKsPropertySet interface
diff --git a/lib/libc/include/any-windows-any/dvdif.h b/lib/libc/include/any-windows-any/dvdif.h
index 878f849c87..ebc6221b4f 100644
--- a/lib/libc/include/any-windows-any/dvdif.h
+++ b/lib/libc/include/any-windows-any/dvdif.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dvdif.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dvdif.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dwrite.h b/lib/libc/include/any-windows-any/dwrite.h
index a9b642b232..5f8ef03c13 100644
--- a/lib/libc/include/any-windows-any/dwrite.h
+++ b/lib/libc/include/any-windows-any/dwrite.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dwrite.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dwrite.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dwrite_1.h b/lib/libc/include/any-windows-any/dwrite_1.h
index 87ea22aca2..f832cd07d3 100644
--- a/lib/libc/include/any-windows-any/dwrite_1.h
+++ b/lib/libc/include/any-windows-any/dwrite_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dwrite_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dwrite_1.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dwrite_2.h b/lib/libc/include/any-windows-any/dwrite_2.h
index 985ced95e4..71edc6113d 100644
--- a/lib/libc/include/any-windows-any/dwrite_2.h
+++ b/lib/libc/include/any-windows-any/dwrite_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dwrite_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dwrite_2.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dwrite_3.h b/lib/libc/include/any-windows-any/dwrite_3.h
index 74f1beb173..41784f6075 100644
--- a/lib/libc/include/any-windows-any/dwrite_3.h
+++ b/lib/libc/include/any-windows-any/dwrite_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dwrite_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dwrite_3.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -9311,16 +9311,21 @@ static FORCEINLINE WINBOOL IDWriteFontFace5_Equals(IDWriteFontFace5* This,IDWrit
#endif /* __IDWriteFontFace5_INTERFACE_DEFINED__ */
-typedef struct DWRITE_COLOR_GLYPH_RUN1 {
+typedef struct DWRITE_COLOR_GLYPH_RUN1 DWRITE_COLOR_GLYPH_RUN1;
+struct DWRITE_COLOR_GLYPH_RUN1
+{
DWRITE_GLYPH_RUN glyphRun;
DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
FLOAT baselineOriginX;
FLOAT baselineOriginY;
DWRITE_COLOR_F runColor;
UINT16 paletteIndex;
+#ifdef _WIN64
+ UINT32 _pad;
+#endif
DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat;
DWRITE_MEASURING_MODE measuringMode;
-} DWRITE_COLOR_GLYPH_RUN1;
+};
/*****************************************************************************
* IDWriteColorGlyphRunEnumerator1 interface
*/
diff --git a/lib/libc/include/any-windows-any/dxgi.h b/lib/libc/include/any-windows-any/dxgi.h
index b0c20e073d..f1e518a392 100644
--- a/lib/libc/include/any-windows-any/dxgi.h
+++ b/lib/libc/include/any-windows-any/dxgi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgi1_2.h b/lib/libc/include/any-windows-any/dxgi1_2.h
index 225ebd24a0..006acb6db6 100644
--- a/lib/libc/include/any-windows-any/dxgi1_2.h
+++ b/lib/libc/include/any-windows-any/dxgi1_2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgi1_2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgi1_2.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgi1_3.h b/lib/libc/include/any-windows-any/dxgi1_3.h
index 3eb7bee318..5941574070 100644
--- a/lib/libc/include/any-windows-any/dxgi1_3.h
+++ b/lib/libc/include/any-windows-any/dxgi1_3.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgi1_3.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgi1_3.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgi1_4.h b/lib/libc/include/any-windows-any/dxgi1_4.h
index ceb1336977..07c5522b7a 100644
--- a/lib/libc/include/any-windows-any/dxgi1_4.h
+++ b/lib/libc/include/any-windows-any/dxgi1_4.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgi1_4.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgi1_4.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgi1_5.h b/lib/libc/include/any-windows-any/dxgi1_5.h
index d2eb1f00f6..feffb1b303 100644
--- a/lib/libc/include/any-windows-any/dxgi1_5.h
+++ b/lib/libc/include/any-windows-any/dxgi1_5.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgi1_5.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgi1_5.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgi1_6.h b/lib/libc/include/any-windows-any/dxgi1_6.h
index 7882797ad4..503e20dd2f 100644
--- a/lib/libc/include/any-windows-any/dxgi1_6.h
+++ b/lib/libc/include/any-windows-any/dxgi1_6.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgi1_6.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgi1_6.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgicommon.h b/lib/libc/include/any-windows-any/dxgicommon.h
index 4d00445a83..8e47cd77c6 100644
--- a/lib/libc/include/any-windows-any/dxgicommon.h
+++ b/lib/libc/include/any-windows-any/dxgicommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgicommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgicommon.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgidebug.h b/lib/libc/include/any-windows-any/dxgidebug.h
index 048e08c6fa..10482f5fb2 100644
--- a/lib/libc/include/any-windows-any/dxgidebug.h
+++ b/lib/libc/include/any-windows-any/dxgidebug.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgidebug.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgidebug.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgiformat.h b/lib/libc/include/any-windows-any/dxgiformat.h
index 6d3ea97f1b..4ad063de85 100644
--- a/lib/libc/include/any-windows-any/dxgiformat.h
+++ b/lib/libc/include/any-windows-any/dxgiformat.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgiformat.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgiformat.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxgitype.h b/lib/libc/include/any-windows-any/dxgitype.h
index 5e3232330e..0ef0eb0363 100644
--- a/lib/libc/include/any-windows-any/dxgitype.h
+++ b/lib/libc/include/any-windows-any/dxgitype.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxgitype.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxgitype.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxva.h b/lib/libc/include/any-windows-any/dxva.h
index 4f18f2e60d..b8505630d0 100644
--- a/lib/libc/include/any-windows-any/dxva.h
+++ b/lib/libc/include/any-windows-any/dxva.h
@@ -563,6 +563,275 @@ typedef struct _DXVA_Status_VPx
USHORT wNumMbsAffected;
} DXVA_Status_VPx, *LPDXVA_Status_VPx;
+
+#define _DIRECTX_AV1_VA_
+
+/* AV1 decoder GUIDs */
+DEFINE_GUID(DXVA_ModeAV1_VLD_Profile0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
+DEFINE_GUID(DXVA_ModeAV1_VLD_Profile1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
+DEFINE_GUID(DXVA_ModeAV1_VLD_Profile2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
+DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
+DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
+
+/* AV1 picture entry data structure */
+typedef struct _DXVA_PicEntry_AV1 {
+ UINT width;
+ UINT height;
+
+ INT wmmat[6];
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ UCHAR wminvalid : 1;
+ UCHAR wmtype : 2;
+ UCHAR Reserved : 5;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR GlobalMotionFlags;
+ } __C89_NAMELESSUNIONNAME;
+ UCHAR Index;
+ UINT16 Reserved16Bits;
+} DXVA_PicEntry_AV1, *LPDXVA_PicEntry_AV1;
+
+/* AV1 picture parameters data structure */
+typedef struct _DXVA_PicParams_AV1 {
+ UINT width;
+ UINT height;
+
+ UINT max_width;
+ UINT max_height;
+
+ UCHAR CurrPicTextureIndex;
+ UCHAR superres_denom;
+ UCHAR bitdepth;
+ UCHAR seq_profile;
+
+ struct {
+ UCHAR cols;
+ UCHAR rows;
+ USHORT context_update_id;
+ USHORT widths[64];
+ USHORT heights[64];
+ } tiles;
+
+ union {
+ __C89_NAMELESS struct {
+ UINT use_128x128_superblock : 1;
+ UINT intra_edge_filter : 1;
+ UINT interintra_compound : 1;
+ UINT masked_compound : 1;
+ UINT warped_motion : 1;
+ UINT dual_filter : 1;
+ UINT jnt_comp : 1;
+ UINT screen_content_tools : 1;
+ UINT integer_mv : 1;
+ UINT cdef : 1;
+ UINT restoration : 1;
+ UINT film_grain : 1;
+ UINT intrabc : 1;
+ UINT high_precision_mv : 1;
+ UINT switchable_motion_mode : 1;
+ UINT filter_intra : 1;
+ UINT disable_frame_end_update_cdf : 1;
+ UINT disable_cdf_update : 1;
+ UINT reference_mode : 1;
+ UINT skip_mode : 1;
+ UINT reduced_tx_set : 1;
+ UINT superres : 1;
+ UINT tx_mode : 2;
+ UINT use_ref_frame_mvs : 1;
+ UINT enable_ref_frame_mvs : 1;
+ UINT reference_frame_update : 1;
+ UINT Reserved : 5;
+ } __C89_NAMELESSSTRUCTNAME;
+ UINT32 CodingParamToolFlags;
+ } coding;
+
+ union {
+ __C89_NAMELESS struct {
+ UCHAR frame_type : 2;
+ UCHAR show_frame : 1;
+ UCHAR showable_frame : 1;
+ UCHAR subsampling_x : 1;
+ UCHAR subsampling_y : 1;
+ UCHAR mono_chrome : 1;
+ UCHAR Reserved : 1;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR FormatAndPictureInfoFlags;
+ } format;
+
+ UCHAR primary_ref_frame;
+ UCHAR order_hint;
+ UCHAR order_hint_bits;
+
+ DXVA_PicEntry_AV1 frame_refs[7];
+ UCHAR RefFrameMapTextureIndex[8];
+
+ struct {
+ UCHAR filter_level[2];
+ UCHAR filter_level_u;
+ UCHAR filter_level_v;
+
+ UCHAR sharpness_level;
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ UCHAR mode_ref_delta_enabled : 1;
+ UCHAR mode_ref_delta_update : 1;
+ UCHAR delta_lf_multi : 1;
+ UCHAR delta_lf_present : 1;
+ UCHAR Reserved : 4;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR ControlFlags;
+ } __C89_NAMELESSUNIONNAME;
+ CHAR ref_deltas[8];
+ CHAR mode_deltas[2];
+ UCHAR delta_lf_res;
+ UCHAR frame_restoration_type[3];
+ USHORT log2_restoration_unit_size[3];
+ UINT16 Reserved16Bits;
+ } loop_filter;
+
+ struct {
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ UCHAR delta_q_present : 1;
+ UCHAR delta_q_res : 2;
+ UCHAR Reserved : 5;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR ControlFlags;
+ } __C89_NAMELESSUNIONNAME;
+
+ UCHAR base_qindex;
+ CHAR y_dc_delta_q;
+ CHAR u_dc_delta_q;
+ CHAR v_dc_delta_q;
+ CHAR u_ac_delta_q;
+ CHAR v_ac_delta_q;
+ UCHAR qm_y;
+ UCHAR qm_u;
+ UCHAR qm_v;
+ UINT16 Reserved16Bits;
+ } quantization;
+
+ struct {
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ UCHAR damping : 2;
+ UCHAR bits : 2;
+ UCHAR Reserved : 4;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR ControlFlags;
+ } __C89_NAMELESSUNIONNAME;
+
+ union {
+ __C89_NAMELESS struct {
+ UCHAR primary : 6;
+ UCHAR secondary : 2;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR combined;
+ } y_strengths[8];
+
+ union {
+ __C89_NAMELESS struct {
+ UCHAR primary : 6;
+ UCHAR secondary : 2;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR combined;
+ } uv_strengths[8];
+
+ } cdef;
+
+ UCHAR interp_filter;
+
+ struct {
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ UCHAR enabled : 1;
+ UCHAR update_map : 1;
+ UCHAR update_data : 1;
+ UCHAR temporal_update : 1;
+ UCHAR Reserved : 4;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR ControlFlags;
+ } __C89_NAMELESSUNIONNAME;
+ UCHAR Reserved24Bits[3];
+
+ union {
+ __C89_NAMELESS struct {
+ UCHAR alt_q : 1;
+ UCHAR alt_lf_y_v : 1;
+ UCHAR alt_lf_y_h : 1;
+ UCHAR alt_lf_u : 1;
+ UCHAR alt_lf_v : 1;
+ UCHAR ref_frame : 1;
+ UCHAR skip : 1;
+ UCHAR globalmv : 1;
+ } __C89_NAMELESSSTRUCTNAME;
+ UCHAR mask;
+ } feature_mask[8];
+
+ SHORT feature_data[8][8];
+
+ } segmentation;
+
+ struct {
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ USHORT apply_grain : 1;
+ USHORT scaling_shift_minus8 : 2;
+ USHORT chroma_scaling_from_luma : 1;
+ USHORT ar_coeff_lag : 2;
+ USHORT ar_coeff_shift_minus6 : 2;
+ USHORT grain_scale_shift : 2;
+ USHORT overlap_flag : 1;
+ USHORT clip_to_restricted_range : 1;
+ USHORT matrix_coeff_is_identity : 1;
+ USHORT Reserved : 3;
+ } __C89_NAMELESSSTRUCTNAME;
+ USHORT ControlFlags;
+ } __C89_NAMELESSUNIONNAME;
+
+ USHORT grain_seed;
+ UCHAR scaling_points_y[14][2];
+ UCHAR num_y_points;
+ UCHAR scaling_points_cb[10][2];
+ UCHAR num_cb_points;
+ UCHAR scaling_points_cr[10][2];
+ UCHAR num_cr_points;
+ UCHAR ar_coeffs_y[24];
+ UCHAR ar_coeffs_cb[25];
+ UCHAR ar_coeffs_cr[25];
+ UCHAR cb_mult;
+ UCHAR cb_luma_mult;
+ UCHAR cr_mult;
+ UCHAR cr_luma_mult;
+ UCHAR Reserved8Bits;
+ SHORT cb_offset;
+ SHORT cr_offset;
+ } film_grain;
+
+ UINT Reserved32Bits;
+ UINT StatusReportFeedbackNumber;
+} DXVA_PicParams_AV1, *LPDXVA_PicParams_AV1;
+
+/* AV1 tile data structure */
+typedef struct _DXVA_Tile_AV1 {
+ UINT DataOffset;
+ UINT DataSize;
+ USHORT row;
+ USHORT column;
+ UINT16 Reserved16Bits;
+ UCHAR anchor_frame;
+ UCHAR Reserved8Bits;
+} DXVA_Tile_AV1, *LPDXVA_Tile_AV1;
+
+typedef struct _DXVA_Status_AV1 {
+ UINT StatusReportFeedbackNumber;
+ DXVA_PicEntry_AV1 CurrPic;
+ UCHAR BufType;
+ UCHAR Status;
+ UCHAR Reserved8Bits;
+ USHORT NumMbsAffected;
+} DXVA_Status_AV1, *LPDXVA_Status_AV1;
+
#include <poppack.h>
typedef enum _DXVA_VideoChromaSubsampling
diff --git a/lib/libc/include/any-windows-any/dxva2api.h b/lib/libc/include/any-windows-any/dxva2api.h
index d938bed4fc..54a077a1be 100644
--- a/lib/libc/include/any-windows-any/dxva2api.h
+++ b/lib/libc/include/any-windows-any/dxva2api.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxva2api.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxva2api.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/dxvahd.h b/lib/libc/include/any-windows-any/dxvahd.h
index 210af9e585..71b0278630 100644
--- a/lib/libc/include/any-windows-any/dxvahd.h
+++ b/lib/libc/include/any-windows-any/dxvahd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/dxvahd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/dxvahd.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -405,19 +405,16 @@ typedef struct _DXVAHDSW_CALLBACKS {
HRESULT DXVAHD_CreateDevice(IDirect3DDevice9Ex *pD3DDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,PDXVAHDSW_Plugin pPlugin,IDXVAHD_Device **ppDevice);
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
/*****************************************************************************
* IDXVAHD_Device interface
*/
#ifndef __IDXVAHD_Device_INTERFACE_DEFINED__
#define __IDXVAHD_Device_INTERFACE_DEFINED__
+DEFINE_GUID(IID_IDXVAHD_Device, 0x95f12dfd, 0xd77e, 0x49be, 0x81,0x5f, 0x57,0xd5,0x79,0x63,0x4d,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
-interface IDXVAHD_Device : public IUnknown
+MIDL_INTERFACE("95f12dfd-d77e-49be-815f-57d579634d6d")
+IDXVAHD_Device : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE CreateVideoSurface(
UINT Width,
@@ -459,6 +456,9 @@ interface IDXVAHD_Device : public IUnknown
IDXVAHD_VideoProcessor **ppVideoProcessor) = 0;
};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDXVAHD_Device, 0x95f12dfd, 0xd77e, 0x49be, 0x81,0x5f, 0x57,0xd5,0x79,0x63,0x4d,0x6d)
+#endif
#else
typedef struct IDXVAHD_DeviceVtbl {
BEGIN_INTERFACE
@@ -589,19 +589,16 @@ static FORCEINLINE HRESULT IDXVAHD_Device_CreateVideoProcessor(IDXVAHD_Device* T
#endif /* __IDXVAHD_Device_INTERFACE_DEFINED__ */
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
/*****************************************************************************
* IDXVAHD_VideoProcessor interface
*/
#ifndef __IDXVAHD_VideoProcessor_INTERFACE_DEFINED__
#define __IDXVAHD_VideoProcessor_INTERFACE_DEFINED__
+DEFINE_GUID(IID_IDXVAHD_VideoProcessor, 0x95f4edf4, 0x6e03, 0x4cd7, 0xbe,0x1b, 0x30,0x75,0xd6,0x65,0xaa,0x52);
#if defined(__cplusplus) && !defined(CINTERFACE)
-interface IDXVAHD_VideoProcessor : public IUnknown
+MIDL_INTERFACE("95f4edf4-6e03-4cd7-be1b-3075d665aa52")
+IDXVAHD_VideoProcessor : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE SetVideoProcessBltState(
DXVAHD_BLT_STATE State,
@@ -632,6 +629,9 @@ interface IDXVAHD_VideoProcessor : public IUnknown
const DXVAHD_STREAM_DATA *pStreams) = 0;
};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDXVAHD_VideoProcessor, 0x95f4edf4, 0x6e03, 0x4cd7, 0xbe,0x1b, 0x30,0x75,0xd6,0x65,0xaa,0x52)
+#endif
#else
typedef struct IDXVAHD_VideoProcessorVtbl {
BEGIN_INTERFACE
diff --git a/lib/libc/include/any-windows-any/endpointvolume.h b/lib/libc/include/any-windows-any/endpointvolume.h
index 19e8e8255b..a9674d67ce 100644
--- a/lib/libc/include/any-windows-any/endpointvolume.h
+++ b/lib/libc/include/any-windows-any/endpointvolume.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/endpointvolume.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/endpointvolume.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/eventtoken.h b/lib/libc/include/any-windows-any/eventtoken.h
index 51541c03fc..4e4b80d3b6 100644
--- a/lib/libc/include/any-windows-any/eventtoken.h
+++ b/lib/libc/include/any-windows-any/eventtoken.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/eventtoken.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/eventtoken.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/evr.h b/lib/libc/include/any-windows-any/evr.h
index 23299edef1..06b01e8b79 100644
--- a/lib/libc/include/any-windows-any/evr.h
+++ b/lib/libc/include/any-windows-any/evr.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/evr.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/evr.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/evr9.h b/lib/libc/include/any-windows-any/evr9.h
index d21366d85b..bdbb526d41 100644
--- a/lib/libc/include/any-windows-any/evr9.h
+++ b/lib/libc/include/any-windows-any/evr9.h
@@ -1,29 +1,404 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_EVR9
-#define _INC_EVR9
+/*** Autogenerated by WIDL 7.0 from include/evr9.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __evr9_h__
+#define __evr9_h__
+
+/* Forward declarations */
+
+#ifndef __IMFVideoMixerBitmap_FWD_DEFINED__
+#define __IMFVideoMixerBitmap_FWD_DEFINED__
+typedef interface IMFVideoMixerBitmap IMFVideoMixerBitmap;
+#ifdef __cplusplus
+interface IMFVideoMixerBitmap;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoProcessor_FWD_DEFINED__
+#define __IMFVideoProcessor_FWD_DEFINED__
+typedef interface IMFVideoProcessor IMFVideoProcessor;
+#ifdef __cplusplus
+interface IMFVideoProcessor;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
-#if (_WIN32_WINNT >= 0x0600)
+#include <unknwn.h>
+#include <evr.h>
+#include <dxva2api.h>
#ifdef __cplusplus
extern "C" {
#endif
-typedef enum _evr9_tag_MFVideoAlphaBitmapFlags {
- MFVideoAlphaBitmap_EntireDDS = 0x00000001,
- MFVideoAlphaBitmap_SrcColorKey = 0x00000002,
- MFVideoAlphaBitmap_SrcRect = 0x00000004,
- MFVideoAlphaBitmap_DestRect = 0x00000008,
- MFVideoAlphaBitmap_FilterMode = 0x00000010,
- MFVideoAlphaBitmap_Alpha = 0x00000020,
- MFVideoAlphaBitmap_BitMask = 0x0000003f
+typedef struct MFVideoAlphaBitmapParams {
+ DWORD dwFlags;
+ COLORREF clrSrcKey;
+ RECT rcSrc;
+ MFVideoNormalizedRect nrcDest;
+ FLOAT fAlpha;
+ DWORD dwFilterMode;
+} MFVideoAlphaBitmapParams;
+typedef struct MFVideoAlphaBitmap {
+ WINBOOL GetBitmapFromDC;
+ union {
+ HDC hdc;
+ IDirect3DSurface9 *pDDS;
+ } bitmap;
+ MFVideoAlphaBitmapParams params;
+} MFVideoAlphaBitmap;
+typedef enum __WIDL_evr9_generated_name_00000030 {
+ MFVideoAlphaBitmap_EntireDDS = 0x1,
+ MFVideoAlphaBitmap_SrcColorKey = 0x2,
+ MFVideoAlphaBitmap_SrcRect = 0x4,
+ MFVideoAlphaBitmap_DestRect = 0x8,
+ MFVideoAlphaBitmap_FilterMode = 0x10,
+ MFVideoAlphaBitmap_Alpha = 0x20,
+ MFVideoAlphaBitmap_BitMask = 0x3f
} MFVideoAlphaBitmapFlags;
+/*****************************************************************************
+ * IMFVideoMixerBitmap interface
+ */
+#ifndef __IMFVideoMixerBitmap_INTERFACE_DEFINED__
+#define __IMFVideoMixerBitmap_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoMixerBitmap, 0x814c7b20, 0x0fdb, 0x4eec, 0xaf,0x8f, 0xf9,0x57,0xc8,0xf6,0x9e,0xdc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("814c7b20-0fdb-4eec-af8f-f957c8f69edc")
+IMFVideoMixerBitmap : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetAlphaBitmap(
+ const MFVideoAlphaBitmap *bitmap) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearAlphaBitmap(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UpdateAlphaBitmapParameters(
+ const MFVideoAlphaBitmapParams *params) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAlphaBitmapParameters(
+ MFVideoAlphaBitmapParams *params) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoMixerBitmap, 0x814c7b20, 0x0fdb, 0x4eec, 0xaf,0x8f, 0xf9,0x57,0xc8,0xf6,0x9e,0xdc)
+#endif
+#else
+typedef struct IMFVideoMixerBitmapVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoMixerBitmap *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoMixerBitmap *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoMixerBitmap *This);
+
+ /*** IMFVideoMixerBitmap methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetAlphaBitmap)(
+ IMFVideoMixerBitmap *This,
+ const MFVideoAlphaBitmap *bitmap);
+
+ HRESULT (STDMETHODCALLTYPE *ClearAlphaBitmap)(
+ IMFVideoMixerBitmap *This);
+
+ HRESULT (STDMETHODCALLTYPE *UpdateAlphaBitmapParameters)(
+ IMFVideoMixerBitmap *This,
+ const MFVideoAlphaBitmapParams *params);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlphaBitmapParameters)(
+ IMFVideoMixerBitmap *This,
+ MFVideoAlphaBitmapParams *params);
+
+ END_INTERFACE
+} IMFVideoMixerBitmapVtbl;
+
+interface IMFVideoMixerBitmap {
+ CONST_VTBL IMFVideoMixerBitmapVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoMixerBitmap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoMixerBitmap_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoMixerBitmap_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoMixerBitmap methods ***/
+#define IMFVideoMixerBitmap_SetAlphaBitmap(This,bitmap) (This)->lpVtbl->SetAlphaBitmap(This,bitmap)
+#define IMFVideoMixerBitmap_ClearAlphaBitmap(This) (This)->lpVtbl->ClearAlphaBitmap(This)
+#define IMFVideoMixerBitmap_UpdateAlphaBitmapParameters(This,params) (This)->lpVtbl->UpdateAlphaBitmapParameters(This,params)
+#define IMFVideoMixerBitmap_GetAlphaBitmapParameters(This,params) (This)->lpVtbl->GetAlphaBitmapParameters(This,params)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoMixerBitmap_QueryInterface(IMFVideoMixerBitmap* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoMixerBitmap_AddRef(IMFVideoMixerBitmap* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoMixerBitmap_Release(IMFVideoMixerBitmap* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoMixerBitmap methods ***/
+static FORCEINLINE HRESULT IMFVideoMixerBitmap_SetAlphaBitmap(IMFVideoMixerBitmap* This,const MFVideoAlphaBitmap *bitmap) {
+ return This->lpVtbl->SetAlphaBitmap(This,bitmap);
+}
+static FORCEINLINE HRESULT IMFVideoMixerBitmap_ClearAlphaBitmap(IMFVideoMixerBitmap* This) {
+ return This->lpVtbl->ClearAlphaBitmap(This);
+}
+static FORCEINLINE HRESULT IMFVideoMixerBitmap_UpdateAlphaBitmapParameters(IMFVideoMixerBitmap* This,const MFVideoAlphaBitmapParams *params) {
+ return This->lpVtbl->UpdateAlphaBitmapParameters(This,params);
+}
+static FORCEINLINE HRESULT IMFVideoMixerBitmap_GetAlphaBitmapParameters(IMFVideoMixerBitmap* This,MFVideoAlphaBitmapParams *params) {
+ return This->lpVtbl->GetAlphaBitmapParameters(This,params);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoMixerBitmap_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFVideoProcessor interface
+ */
+#ifndef __IMFVideoProcessor_INTERFACE_DEFINED__
+#define __IMFVideoProcessor_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoProcessor, 0x6ab0000c, 0xfece, 0x4d1f, 0xa2,0xac, 0xa9,0x57,0x35,0x30,0x65,0x6e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6ab0000c-fece-4d1f-a2ac-a9573530656e")
+IMFVideoProcessor : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoProcessorModes(
+ UINT *count,
+ GUID **modes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(
+ GUID *mode,
+ DXVA2_VideoProcessorCaps *caps) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorMode(
+ GUID *mode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVideoProcessorMode(
+ GUID *mode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange(
+ DWORD prop,
+ DXVA2_ValueRange *range) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProcAmpValues(
+ DWORD flags,
+ DXVA2_ProcAmpValues *values) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetProcAmpValues(
+ DWORD flags,
+ DXVA2_ProcAmpValues *values) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFilteringRange(
+ DWORD prop,
+ DXVA2_ValueRange *range) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFilteringValue(
+ DWORD prop,
+ DXVA2_Fixed32 *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFilteringValue(
+ DWORD prop,
+ DXVA2_Fixed32 *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
+ COLORREF *color) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
+ COLORREF color) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoProcessor, 0x6ab0000c, 0xfece, 0x4d1f, 0xa2,0xac, 0xa9,0x57,0x35,0x30,0x65,0x6e)
+#endif
+#else
+typedef struct IMFVideoProcessorVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoProcessor *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoProcessor *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoProcessor *This);
+
+ /*** IMFVideoProcessor methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetAvailableVideoProcessorModes)(
+ IMFVideoProcessor *This,
+ UINT *count,
+ GUID **modes);
+
+ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)(
+ IMFVideoProcessor *This,
+ GUID *mode,
+ DXVA2_VideoProcessorCaps *caps);
+
+ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorMode)(
+ IMFVideoProcessor *This,
+ GUID *mode);
+
+ HRESULT (STDMETHODCALLTYPE *SetVideoProcessorMode)(
+ IMFVideoProcessor *This,
+ GUID *mode);
+
+ HRESULT (STDMETHODCALLTYPE *GetProcAmpRange)(
+ IMFVideoProcessor *This,
+ DWORD prop,
+ DXVA2_ValueRange *range);
+
+ HRESULT (STDMETHODCALLTYPE *GetProcAmpValues)(
+ IMFVideoProcessor *This,
+ DWORD flags,
+ DXVA2_ProcAmpValues *values);
+
+ HRESULT (STDMETHODCALLTYPE *SetProcAmpValues)(
+ IMFVideoProcessor *This,
+ DWORD flags,
+ DXVA2_ProcAmpValues *values);
+
+ HRESULT (STDMETHODCALLTYPE *GetFilteringRange)(
+ IMFVideoProcessor *This,
+ DWORD prop,
+ DXVA2_ValueRange *range);
+
+ HRESULT (STDMETHODCALLTYPE *GetFilteringValue)(
+ IMFVideoProcessor *This,
+ DWORD prop,
+ DXVA2_Fixed32 *value);
+
+ HRESULT (STDMETHODCALLTYPE *SetFilteringValue)(
+ IMFVideoProcessor *This,
+ DWORD prop,
+ DXVA2_Fixed32 *value);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
+ IMFVideoProcessor *This,
+ COLORREF *color);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
+ IMFVideoProcessor *This,
+ COLORREF color);
+
+ END_INTERFACE
+} IMFVideoProcessorVtbl;
+
+interface IMFVideoProcessor {
+ CONST_VTBL IMFVideoProcessorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoProcessor_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoProcessor methods ***/
+#define IMFVideoProcessor_GetAvailableVideoProcessorModes(This,count,modes) (This)->lpVtbl->GetAvailableVideoProcessorModes(This,count,modes)
+#define IMFVideoProcessor_GetVideoProcessorCaps(This,mode,caps) (This)->lpVtbl->GetVideoProcessorCaps(This,mode,caps)
+#define IMFVideoProcessor_GetVideoProcessorMode(This,mode) (This)->lpVtbl->GetVideoProcessorMode(This,mode)
+#define IMFVideoProcessor_SetVideoProcessorMode(This,mode) (This)->lpVtbl->SetVideoProcessorMode(This,mode)
+#define IMFVideoProcessor_GetProcAmpRange(This,prop,range) (This)->lpVtbl->GetProcAmpRange(This,prop,range)
+#define IMFVideoProcessor_GetProcAmpValues(This,flags,values) (This)->lpVtbl->GetProcAmpValues(This,flags,values)
+#define IMFVideoProcessor_SetProcAmpValues(This,flags,values) (This)->lpVtbl->SetProcAmpValues(This,flags,values)
+#define IMFVideoProcessor_GetFilteringRange(This,prop,range) (This)->lpVtbl->GetFilteringRange(This,prop,range)
+#define IMFVideoProcessor_GetFilteringValue(This,prop,value) (This)->lpVtbl->GetFilteringValue(This,prop,value)
+#define IMFVideoProcessor_SetFilteringValue(This,prop,value) (This)->lpVtbl->SetFilteringValue(This,prop,value)
+#define IMFVideoProcessor_GetBackgroundColor(This,color) (This)->lpVtbl->GetBackgroundColor(This,color)
+#define IMFVideoProcessor_SetBackgroundColor(This,color) (This)->lpVtbl->SetBackgroundColor(This,color)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessor_QueryInterface(IMFVideoProcessor* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoProcessor_AddRef(IMFVideoProcessor* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoProcessor_Release(IMFVideoProcessor* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoProcessor methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessor_GetAvailableVideoProcessorModes(IMFVideoProcessor* This,UINT *count,GUID **modes) {
+ return This->lpVtbl->GetAvailableVideoProcessorModes(This,count,modes);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetVideoProcessorCaps(IMFVideoProcessor* This,GUID *mode,DXVA2_VideoProcessorCaps *caps) {
+ return This->lpVtbl->GetVideoProcessorCaps(This,mode,caps);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetVideoProcessorMode(IMFVideoProcessor* This,GUID *mode) {
+ return This->lpVtbl->GetVideoProcessorMode(This,mode);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_SetVideoProcessorMode(IMFVideoProcessor* This,GUID *mode) {
+ return This->lpVtbl->SetVideoProcessorMode(This,mode);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetProcAmpRange(IMFVideoProcessor* This,DWORD prop,DXVA2_ValueRange *range) {
+ return This->lpVtbl->GetProcAmpRange(This,prop,range);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetProcAmpValues(IMFVideoProcessor* This,DWORD flags,DXVA2_ProcAmpValues *values) {
+ return This->lpVtbl->GetProcAmpValues(This,flags,values);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_SetProcAmpValues(IMFVideoProcessor* This,DWORD flags,DXVA2_ProcAmpValues *values) {
+ return This->lpVtbl->SetProcAmpValues(This,flags,values);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetFilteringRange(IMFVideoProcessor* This,DWORD prop,DXVA2_ValueRange *range) {
+ return This->lpVtbl->GetFilteringRange(This,prop,range);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetFilteringValue(IMFVideoProcessor* This,DWORD prop,DXVA2_Fixed32 *value) {
+ return This->lpVtbl->GetFilteringValue(This,prop,value);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_SetFilteringValue(IMFVideoProcessor* This,DWORD prop,DXVA2_Fixed32 *value) {
+ return This->lpVtbl->SetFilteringValue(This,prop,value);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_GetBackgroundColor(IMFVideoProcessor* This,COLORREF *color) {
+ return This->lpVtbl->GetBackgroundColor(This,color);
+}
+static FORCEINLINE HRESULT IMFVideoProcessor_SetBackgroundColor(IMFVideoProcessor* This,COLORREF color) {
+ return This->lpVtbl->SetBackgroundColor(This,color);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoProcessor_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
#ifdef __cplusplus
}
#endif
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_EVR9*/
+
+#endif /* __evr9_h__ */
diff --git a/lib/libc/include/any-windows-any/exdisp.h b/lib/libc/include/any-windows-any/exdisp.h
index 5648c412a8..2919eb7f02 100644
--- a/lib/libc/include/any-windows-any/exdisp.h
+++ b/lib/libc/include/any-windows-any/exdisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/exdisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/exdisp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/filter.h b/lib/libc/include/any-windows-any/filter.h
index aa824d3ba1..97d91a9bec 100644
--- a/lib/libc/include/any-windows-any/filter.h
+++ b/lib/libc/include/any-windows-any/filter.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/filter.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/filter.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/float.h b/lib/libc/include/any-windows-any/float.h
index ac534a49a1..da8717b836 100644
--- a/lib/libc/include/any-windows-any/float.h
+++ b/lib/libc/include/any-windows-any/float.h
@@ -245,7 +245,7 @@
#define _CW_DEFAULT (_RC_NEAR+_PC_53+_EM_INVALID+_EM_ZERODIVIDE+_EM_OVERFLOW+_EM_UNDERFLOW+_EM_INEXACT+_EM_DENORMAL)
#elif defined(__ia64__)
#define _CW_DEFAULT (_RC_NEAR+_PC_64+_EM_INVALID+_EM_ZERODIVIDE+_EM_OVERFLOW+_EM_UNDERFLOW+_EM_INEXACT+_EM_DENORMAL)
-#elif defined(__x86_64__)
+#elif defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
#define _CW_DEFAULT (_RC_NEAR+_EM_INVALID+_EM_ZERODIVIDE+_EM_OVERFLOW+_EM_UNDERFLOW+_EM_INEXACT+_EM_DENORMAL)
#endif
diff --git a/lib/libc/include/any-windows-any/fontsub.h b/lib/libc/include/any-windows-any/fontsub.h
new file mode 100644
index 0000000000..aa83f034fc
--- /dev/null
+++ b/lib/libc/include/any-windows-any/fontsub.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2016 Nikolay Sivov for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_FONTSUB_H
+#define __WINE_FONTSUB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(__cdecl *CFP_ALLOCPROC)(size_t);
+typedef void *(__cdecl *CFP_REALLOCPROC)(void *, size_t);
+typedef void (__cdecl *CFP_FREEPROC)(void *);
+
+#define TTFCFP_SUBSET 0
+#define TTFCFP_SUBSET1 1
+#define TTFCFP_DELTA 2
+
+#define TTFCFP_UNICODE_PLATFORMID 0
+#define TTFCFP_APPLE_PLATFORMID 1
+#define TTFCFP_ISO_PLATFORMID 2
+#define TTFCFP_MS_PLATFORMID 3
+
+#define TTFCFP_STD_MAC_CHAR_SET 0
+#define TTFCFP_SYMBOL_CHAR_SET 0
+#define TTFCFP_UNICODE_CHAR_SET 1
+#define TTFCFP_DONT_CARE 0xffff
+
+#define TTFCFP_LANG_KEEP_ALL 0
+
+#define TTFCFP_FLAGS_SUBSET 0x0001
+#define TTFCFP_FLAGS_COMPRESS 0x0002
+#define TTFCFP_FLAGS_TTC 0x0004
+#define TTFCFP_FLAGS_GLYPHLIST 0x0008
+
+#define ERR_GENERIC 1000
+#define ERR_MEM 1005
+
+ULONG __cdecl CreateFontPackage(const unsigned char *src, const ULONG src_len, unsigned char **dest,
+ ULONG *dest_len, ULONG *written, const unsigned short flags, const unsigned short face_index,
+ const unsigned short format, const unsigned short lang, const unsigned short platform,
+ const unsigned short encoding, const unsigned short *keep_list, const unsigned short keep_len,
+ CFP_ALLOCPROC allocproc, CFP_REALLOCPROC reallocproc, CFP_FREEPROC freeproc, void *reserved);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/lib/libc/include/any-windows-any/fsrm.h b/lib/libc/include/any-windows-any/fsrm.h
index 3403a46f25..91dd343bd1 100644
--- a/lib/libc/include/any-windows-any/fsrm.h
+++ b/lib/libc/include/any-windows-any/fsrm.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fsrm.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fsrm.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/fsrmenums.h b/lib/libc/include/any-windows-any/fsrmenums.h
index 767a461925..8f56a0c99e 100644
--- a/lib/libc/include/any-windows-any/fsrmenums.h
+++ b/lib/libc/include/any-windows-any/fsrmenums.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fsrmenums.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fsrmenums.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/fsrmquota.h b/lib/libc/include/any-windows-any/fsrmquota.h
index fa6ac0557d..e415b41560 100644
--- a/lib/libc/include/any-windows-any/fsrmquota.h
+++ b/lib/libc/include/any-windows-any/fsrmquota.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fsrmquota.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fsrmquota.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/fsrmreports.h b/lib/libc/include/any-windows-any/fsrmreports.h
index 7f2c1b6840..e0334695a6 100644
--- a/lib/libc/include/any-windows-any/fsrmreports.h
+++ b/lib/libc/include/any-windows-any/fsrmreports.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fsrmreports.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fsrmreports.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/fsrmscreen.h b/lib/libc/include/any-windows-any/fsrmscreen.h
index db1aed2f1e..be45fa6f2d 100644
--- a/lib/libc/include/any-windows-any/fsrmscreen.h
+++ b/lib/libc/include/any-windows-any/fsrmscreen.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fsrmscreen.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fsrmscreen.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/fusion.h b/lib/libc/include/any-windows-any/fusion.h
index 7679af4b49..a81ae32af1 100644
--- a/lib/libc/include/any-windows-any/fusion.h
+++ b/lib/libc/include/any-windows-any/fusion.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fusion.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fusion.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/fwptypes.h b/lib/libc/include/any-windows-any/fwptypes.h
index c778e2a2a9..c3b1f4e119 100644
--- a/lib/libc/include/any-windows-any/fwptypes.h
+++ b/lib/libc/include/any-windows-any/fwptypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/fwptypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/fwptypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/hstring.h b/lib/libc/include/any-windows-any/hstring.h
index 926f5926e6..cfbe786313 100644
--- a/lib/libc/include/any-windows-any/hstring.h
+++ b/lib/libc/include/any-windows-any/hstring.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/hstring.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/hstring.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/httpext.h b/lib/libc/include/any-windows-any/httpext.h
index baf3148b88..8209709974 100644
--- a/lib/libc/include/any-windows-any/httpext.h
+++ b/lib/libc/include/any-windows-any/httpext.h
@@ -6,6 +6,10 @@
#ifndef _HTTPEXT_H_
#define _HTTPEXT_H_
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
#include <windows.h>
#ifdef __cplusplus
@@ -60,6 +64,14 @@ extern "C" {
#define HSE_REQ_GET_CACHE_INVALIDATION_CALLBACK (HSE_REQ_END_RESERVED+40)
#define HSE_REQ_GET_UNICODE_ANONYMOUS_TOKEN (HSE_REQ_END_RESERVED+41)
#define HSE_REQ_GET_TRACE_INFO (HSE_REQ_END_RESERVED+42)
+#define HSE_REQ_SET_FLUSH_FLAG (HSE_REQ_END_RESERVED+43)
+#define HSE_REQ_GET_TRACE_INFO_EX (HSE_REQ_END_RESERVED+44)
+#define HSE_REQ_RAISE_TRACE_EVENT (HSE_REQ_END_RESERVED+45)
+#define HSE_REQ_GET_CONFIG_OBJECT (HSE_REQ_END_RESERVED+46)
+#define HSE_REQ_GET_WORKER_PROCESS_SETTINGS (HSE_REQ_END_RESERVED+47)
+#define HSE_REQ_GET_PROTOCOL_MANAGER_CUSTOM_INTERFACE_CALLBACK (HSE_REQ_END_RESERVED+48)
+#define HSE_REQ_CANCEL_IO (HSE_REQ_END_RESERVED+49)
+#define HSE_REQ_GET_CHANNEL_BINDING_TOKEN (HSE_REQ_END_RESERVED+50)
#define HSE_TERM_ADVISORY_UNLOAD 0x00000001
#define HSE_TERM_MUST_UNLOAD 0x00000002
@@ -72,6 +84,7 @@ extern "C" {
#define HSE_IO_FINAL_SEND 0x00000010
#define HSE_IO_CACHE_RESPONSE 0x00000020
+#define HSE_IO_TRY_SKIP_CUSTOM_ERRORS 0x00000040
typedef LPVOID HCONN;
@@ -159,6 +172,7 @@ extern "C" {
#define HSE_EXEC_URL_IGNORE_VALIDATION_AND_RANGE 0x10
#define HSE_EXEC_URL_DISABLE_CUSTOM_ERROR 0x20
#define HSE_EXEC_URL_SSI_CMD 0x40
+#define HSE_EXEC_URL_HTTP_CACHE_ELIGIBLE 0x80
typedef struct _HSE_EXEC_URL_USER_INFO {
HANDLE hImpersonationToken;
@@ -242,6 +256,8 @@ extern "C" {
DWORD dwReserved2;
} HSE_TRACE_INFO,*LPHSE_TRACE_INFO;
+ typedef HRESULT (WINAPI *PFN_HSE_GET_PROTOCOL_MANAGER_CUSTOM_INTERFACE_CALLBACK)(LPCWSTR pszProtocolManagerDll, LPCWSTR pszProtocolManagerDllInitFunction, DWORD dwCustomInterfaceId, PVOID *ppCustomInterface );
+
#define HSE_APP_FLAG_IN_PROCESS 0
#define HSE_APP_FLAG_ISOLATED_OOP 1
#define HSE_APP_FLAG_POOLED_OOP 2
@@ -257,4 +273,7 @@ extern "C" {
#ifdef __cplusplus
}
#endif
-#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#endif /* _HTTPEXT_H_ */
diff --git a/lib/libc/include/any-windows-any/icftypes.h b/lib/libc/include/any-windows-any/icftypes.h
index 32ecc1f53a..6794255eb4 100644
--- a/lib/libc/include/any-windows-any/icftypes.h
+++ b/lib/libc/include/any-windows-any/icftypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/icftypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/icftypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/icodecapi.h b/lib/libc/include/any-windows-any/icodecapi.h
index bb72a85fb9..280ea62148 100644
--- a/lib/libc/include/any-windows-any/icodecapi.h
+++ b/lib/libc/include/any-windows-any/icodecapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/icodecapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/icodecapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/iketypes.h b/lib/libc/include/any-windows-any/iketypes.h
index 6f6a7cb549..634501e5d3 100644
--- a/lib/libc/include/any-windows-any/iketypes.h
+++ b/lib/libc/include/any-windows-any/iketypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/iketypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/iketypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/inputscope.h b/lib/libc/include/any-windows-any/inputscope.h
index 4b71a0598f..d6a3bf563c 100644
--- a/lib/libc/include/any-windows-any/inputscope.h
+++ b/lib/libc/include/any-windows-any/inputscope.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/inputscope.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/inputscope.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/inspectable.h b/lib/libc/include/any-windows-any/inspectable.h
index 9844c961f2..03b21d160e 100644
--- a/lib/libc/include/any-windows-any/inspectable.h
+++ b/lib/libc/include/any-windows-any/inspectable.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/inspectable.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/inspectable.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/intrin.h b/lib/libc/include/any-windows-any/intrin.h
index bdabaea301..fbfee5fdc1 100644
--- a/lib/libc/include/any-windows-any/intrin.h
+++ b/lib/libc/include/any-windows-any/intrin.h
@@ -67,6 +67,10 @@ extern "C" {
#endif
#include <x86intrin.h>
+#include <cpuid.h>
+
+/* Undefine the GCC one taking 5 parameters to prefer the mingw-w64 one. */
+#undef __cpuid
/* Before 4.9.2, x86intrin.h had broken versions of these. */
#undef _lrotl
diff --git a/lib/libc/include/any-windows-any/inttypes.h b/lib/libc/include/any-windows-any/inttypes.h
index 881025c0d0..ec99d6956a 100644
--- a/lib/libc/include/any-windows-any/inttypes.h
+++ b/lib/libc/include/any-windows-any/inttypes.h
@@ -28,6 +28,7 @@ typedef struct {
* length specifier. It appears to treat "ll" as "l".
* The non-standard I64 length specifier causes warning in GCC,
* but understood by MS runtime functions.
+ * crtdll.dll and msvcrt10.dll do not support any 64-bit modifier.
*/
#if defined(_UCRT) || __USE_MINGW_ANSI_STDIO
#define PRId64 "lld"
@@ -36,7 +37,7 @@ typedef struct {
#define PRIu64 "llu"
#define PRIx64 "llx"
#define PRIX64 "llX"
-#else
+#elif !defined(__CRTDLL__) && __MSVCRT_VERSION__ >= 0x200
#define PRId64 "I64d"
#define PRIi64 "I64i"
#define PRIo64 "I64o"
@@ -278,6 +279,51 @@ typedef struct {
#define SCNuFAST8 "hhu"
#endif /* __STDC_VERSION__ >= 199901 */
+#if (defined(__CRTDLL__) || __MSVCRT_VERSION__ < 0x200) && !defined(__USE_MINGW_ANSI_STDIO)
+/*
+ * crtdll.dll and msvcrt10.dll do not support any 64-bit modifier.
+ * Undef all previously defined 64-bit modifiers.
+ */
+#undef PRIdLEAST64
+#undef PRIdFAST64
+#undef PRIdMAX
+#undef PRIiLEAST64
+#undef PRIiFAST64
+#undef PRIiMAX
+#undef PRIoLEAST64
+#undef PRIoFAST64
+#undef PRIoMAX
+#undef PRIuLEAST64
+#undef PRIuFAST64
+#undef PRIuMAX
+#undef PRIxLEAST64
+#undef PRIxFAST64
+#undef PRIxMAX
+#undef PRIXLEAST64
+#undef PRIXFAST64
+#undef PRIXMAX
+#undef SCNd64
+#undef SCNdLEAST64
+#undef SCNdFAST64
+#undef SCNdMAX
+#undef SCNi64
+#undef SCNiLEAST64
+#undef SCNiFAST64
+#undef SCNiMAX
+#undef SCNo64
+#undef SCNoLEAST64
+#undef SCNoFAST64
+#undef SCNoMAX
+#undef SCNx64
+#undef SCNxLEAST64
+#undef SCNxFAST64
+#undef SCNxMAX
+#undef SCNu64
+#undef SCNuLEAST64
+#undef SCNuFAST64
+#undef SCNuMAX
+#endif
+
intmax_t __cdecl imaxabs (intmax_t j);
#ifndef __CRT__NO_INLINE
__CRT_INLINE intmax_t __cdecl imaxabs (intmax_t j)
diff --git a/lib/libc/include/any-windows-any/ioringapi.h b/lib/libc/include/any-windows-any/ioringapi.h
new file mode 100644
index 0000000000..211af18212
--- /dev/null
+++ b/lib/libc/include/any-windows-any/ioringapi.h
@@ -0,0 +1,140 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _APISET_IORING_
+#define _APISET_IORING_
+
+#include <apiset.h>
+#include <apisetcconv.h>
+#include <minwindef.h>
+#include <minwinbase.h>
+#include <ntioring_x.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+#if NTDDI_VERSION >= NTDDI_WIN10_CO
+
+DECLARE_HANDLE(HIORING);
+
+typedef enum IORING_SQE_FLAGS {
+ IOSQE_FLAGS_NONE = 0
+} IORING_SQE_FLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(IORING_SQE_FLAGS)
+
+typedef enum IORING_CREATE_REQUIRED_FLAGS {
+ IORING_CREATE_REQUIRED_FLAGS_NONE = 0
+} IORING_CREATE_REQUIRED_FLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(IORING_CREATE_REQUIRED_FLAGS)
+
+typedef enum IORING_CREATE_ADVISORY_FLAGS {
+ IORING_CREATE_ADVISORY_FLAGS_NONE = 0
+} IORING_CREATE_ADVISORY_FLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(IORING_CREATE_ADVISORY_FLAGS)
+
+typedef struct IORING_CREATE_FLAGS {
+ IORING_CREATE_REQUIRED_FLAGS Required;
+ IORING_CREATE_ADVISORY_FLAGS Advisory;
+} IORING_CREATE_FLAGS;
+
+typedef struct IORING_INFO {
+ IORING_VERSION IoRingVersion;
+ IORING_CREATE_FLAGS Flags;
+ UINT32 SubmissionQueueSize;
+ UINT32 CompletionQueueSize;
+} IORING_INFO;
+
+typedef struct IORING_CAPABILITIES {
+ IORING_VERSION MaxVersion;
+ UINT32 MaxSubmissionQueueSize;
+ UINT32 MaxCompletionQueueSize;
+ IORING_FEATURE_FLAGS FeatureFlags;
+} IORING_CAPABILITIES;
+
+typedef enum IORING_REF_KIND {
+ IORING_REF_RAW,
+ IORING_REF_REGISTERED
+} IORING_REF_KIND;
+
+typedef struct IORING_HANDLE_REF {
+#ifdef __cplusplus
+ explicit IORING_HANDLE_REF(HANDLE h) : Kind(IORING_REF_KIND::IORING_REF_RAW), Handle(h) {}
+ explicit IORING_HANDLE_REF(UINT32 index) : Kind(IORING_REF_KIND::IORING_REF_REGISTERED), Handle(index) {}
+#endif
+
+ IORING_REF_KIND Kind;
+ union HandleUnion {
+#ifdef __cplusplus
+ HandleUnion(HANDLE h) : Handle(h) {}
+ HandleUnion(UINT32 index) : Index(index) {}
+#endif
+ HANDLE Handle;
+ UINT32 Index;
+ } Handle;
+} IORING_HANDLE_REF;
+
+#ifdef __cplusplus
+#define IoRingHandleRefFromHandle(h) IORING_HANDLE_REF(static_cast<HANDLE>(h))
+#define IoRingHandleRefFromIndex(i) IORING_HANDLE_REF(static_cast<UINT32>(i))
+#else
+#define IoRingHandleRefFromHandle(h) {IORING_REF_RAW, {.Handle = h}}
+#define IoRingHandleRefFromIndex(i) {IORING_REF_REGISTERED, {.Index = i}}
+#endif
+
+typedef struct IORING_BUFFER_REF {
+#ifdef __cplusplus
+ explicit IORING_BUFFER_REF(void* address) : Kind(IORING_REF_KIND::IORING_REF_RAW), Buffer(address) {}
+ explicit IORING_BUFFER_REF(IORING_REGISTERED_BUFFER registeredBuffer) : Kind(IORING_REF_KIND::IORING_REF_REGISTERED), Buffer(registeredBuffer) {}
+ IORING_BUFFER_REF(UINT32 index, UINT32 offset) : IORING_BUFFER_REF(IORING_REGISTERED_BUFFER{index, offset}) {}
+#endif
+
+ IORING_REF_KIND Kind;
+ union BufferUnion {
+#ifdef __cplusplus
+ BufferUnion(void* address) : Address(address) {}
+ BufferUnion(IORING_REGISTERED_BUFFER indexAndOffset) : IndexAndOffset(indexAndOffset) {}
+#endif
+ void* Address;
+ IORING_REGISTERED_BUFFER IndexAndOffset;
+ }Buffer;
+} IORING_BUFFER_REF;
+
+#ifdef __cplusplus
+#define IoRingBufferRefFromPointer(p) IORING_BUFFER_REF(static_cast<void*>(p))
+#define IoRingBufferRefFromIndexAndOffset(i,o) IORING_BUFFER_REF((i),(o))
+#else
+#define IoRingBufferRefFromPointer(p) {IORING_REF_RAW, {.Address = p}}
+#define IoRingBufferRefFromIndexAndOffset(i,o) {IORING_REF_REGISTERED, {.IndexAndOffset = {(i),(o)}}}
+#endif
+
+typedef struct IORING_CQE {
+ UINT_PTR UserData;
+ HRESULT ResultCode;
+ ULONG_PTR Information;
+} IORING_CQE;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+STDAPI QueryIoRingCapabilities(IORING_CAPABILITIES* capabilities);
+STDAPI_(WINBOOL) IsIoRingOpSupported(HIORING ioRing, IORING_OP_CODE op);
+STDAPI CreateIoRing(IORING_VERSION ioringVersion, IORING_CREATE_FLAGS flags, UINT32 submissionQueueSize, UINT32 completionQueueSize, HIORING* h);
+STDAPI GetIoRingInfo(HIORING ioRing, IORING_INFO* info);
+STDAPI SubmitIoRing(HIORING ioRing, UINT32 waitOperations, UINT32 milliseconds, UINT32* submittedEntries);
+STDAPI CloseIoRing(HIORING ioRing);
+STDAPI PopIoRingCompletion(HIORING ioRing, IORING_CQE* cqe);
+STDAPI SetIoRingCompletionEvent(HIORING ioRing, HANDLE hEvent);
+STDAPI BuildIoRingCancelRequest(HIORING ioRing, IORING_HANDLE_REF file, UINT_PTR opToCancel, UINT_PTR userData);
+STDAPI BuildIoRingReadFile(HIORING ioRing, IORING_HANDLE_REF fileRef, IORING_BUFFER_REF dataRef, UINT32 numberOfBytesToRead, UINT64 fileOffset, UINT_PTR userData, IORING_SQE_FLAGS flags);
+STDAPI BuildIoRingRegisterFileHandles(HIORING ioRing, UINT32 count, HANDLE const handles[], UINT_PTR userData);
+STDAPI BuildIoRingRegisterBuffers(HIORING ioRing, UINT32 count, IORING_BUFFER_INFO const buffers[], UINT_PTR userData);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NTDDI_WIN10_CO */
+#endif /* WINAPI_PARTITION_APP */
+#endif /* _APISET_IORING_ */
diff --git a/lib/libc/include/any-windows-any/ks.h b/lib/libc/include/any-windows-any/ks.h
index 05f7b527d3..6342982b48 100644
--- a/lib/libc/include/any-windows-any/ks.h
+++ b/lib/libc/include/any-windows-any/ks.h
@@ -581,20 +581,15 @@ DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000",KSCATEGORY_BRIDGE);
DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_CAPTURE);
#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
-#define STATIC_KSCATEGORY_RENDER \
- 0x65E8773E,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96
-DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_RENDER);
-#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
-
-#define STATIC_KSCATEGORY_MIXER \
- 0xAD809C00,0x7B88,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
-DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000",KSCATEGORY_MIXER);
-#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
+#define STATIC_KSCATEGORY_CLOCK \
+ 0x53172480,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
+DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSCATEGORY_CLOCK);
+#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
-#define STATIC_KSCATEGORY_SPLITTER \
- 0x0A4252A0,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
-DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_SPLITTER);
-#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
+#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
+ 0xCF1DDA2C,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96
+DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_COMMUNICATIONSTRANSFORM);
+#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
#define STATIC_KSCATEGORY_DATACOMPRESSOR \
0x1E84C900,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
@@ -611,10 +606,10 @@ DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATADECOMPRE
DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_DATATRANSFORM);
#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
-#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \
- 0xCF1DDA2C,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96
-DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_COMMUNICATIONSTRANSFORM);
-#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
+#define STATIC_KSCATEGORY_FILESYSTEM \
+ 0x760FED5E,0x9357,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96
+DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196",KSCATEGORY_FILESYSTEM);
+#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
#define STATIC_KSCATEGORY_INTERFACETRANSFORM \
0xCF1DDA2D,0x9743,0x11D0,0xA3,0xEE,0x00,0xA0,0xC9,0x22,0x31,0x96
@@ -626,15 +621,10 @@ DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_INTERFACETRA
DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196",KSCATEGORY_MEDIUMTRANSFORM);
#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM)
-#define STATIC_KSCATEGORY_FILESYSTEM \
- 0x760FED5E,0x9357,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96
-DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196",KSCATEGORY_FILESYSTEM);
-#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
-
-#define STATIC_KSCATEGORY_CLOCK \
- 0x53172480,0x4791,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
-DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000",KSCATEGORY_CLOCK);
-#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
+#define STATIC_KSCATEGORY_MIXER \
+ 0xAD809C00,0x7B88,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
+DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000",KSCATEGORY_MIXER);
+#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
#define STATIC_KSCATEGORY_PROXY \
0x97EBAACA,0x95BD,0x11D0,0xA3,0xEA,0x00,0xA0,0xC9,0x22,0x31,0x96
@@ -646,6 +636,21 @@ DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_PROXY);
DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196",KSCATEGORY_QUALITY);
#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY)
+#define STATIC_KSCATEGORY_RENDER \
+ 0x65E8773E,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96
+DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196",KSCATEGORY_RENDER);
+#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
+
+#define STATIC_KSCATEGORY_SPLITTER \
+ 0x0A4252A0,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
+DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000",KSCATEGORY_SPLITTER);
+#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
+
+#define STATIC_KSCATEGORY_VIDEO_CAMERA \
+ 0xE5323777,0xF976,0x4F5B,0x9B,0x55,0xB9,0x46,0x99,0xC4,0x6E,0x44
+DEFINE_GUIDSTRUCT("E5323777-F976-4F5B-9B55-B94699C46E44",KSCATEGORY_VIDEO_CAMERA);
+#define KSCATEGORY_VIDEO_CAMERA DEFINE_GUIDNAMED(KSCATEGORY_VIDEO_CAMERA)
+
typedef struct {
ULONG FromNode;
ULONG FromNodePin;
diff --git a/lib/libc/include/any-windows-any/ksmedia.h b/lib/libc/include/any-windows-any/ksmedia.h
index eb50d61d2b..2ed9f78e26 100644
--- a/lib/libc/include/any-windows-any/ksmedia.h
+++ b/lib/libc/include/any-windows-any/ksmedia.h
@@ -386,6 +386,7 @@ DEFINE_GUIDSTRUCT("DFF220F2-F70F-11D0-B917-00A0C9223196",KSNODETYPE_MULTITRACK_R
DEFINE_GUIDSTRUCT("DFF220F3-F70F-11D0-B917-00A0C9223196",KSNODETYPE_SYNTHESIZER);
#define KSNODETYPE_SYNTHESIZER DEFINE_GUIDNAMED(KSNODETYPE_SYNTHESIZER)
+#if NTDDI_VERSION < NTDDI_VISTA
#define STATIC_KSNODETYPE_SWSYNTH \
0x423274A0,0x8B81,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88
DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788",KSNODETYPE_SWSYNTH);
@@ -395,6 +396,7 @@ DEFINE_GUIDSTRUCT("423274A0-8B81-11D1-A050-0000F8004788",KSNODETYPE_SWSYNTH);
0xCB9BEFA0,0xA251,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88
DEFINE_GUIDSTRUCT("CB9BEFA0-A251-11D1-A050-0000F8004788",KSNODETYPE_SWMIDI);
#define KSNODETYPE_SWMIDI DEFINE_GUIDNAMED(KSNODETYPE_SWMIDI)
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
#define STATIC_KSNODETYPE_DRM_DESCRAMBLE \
0xFFBB6E3F,0xCCFE,0x4D84,0x90,0xD9,0x42,0x14,0x18,0xB0,0x3A,0x8E
@@ -416,6 +418,13 @@ DEFINE_GUIDSTRUCT("6994AD05-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_VIDEO);
DEFINE_GUIDSTRUCT("6994AD06-93EF-11D0-A3CC-00A0C9223196",KSCATEGORY_TEXT);
#define KSCATEGORY_TEXT DEFINE_GUIDNAMED(KSCATEGORY_TEXT)
+#if NTDDI_VERSION >= NTDDI_VISTA
+#define STATIC_KSCATEGORY_REALTIME \
+ 0xEB115FFCL,0x10C8,0x4964,0x83,0x1D,0x6D,0xCB,0x02,0xE6,0xF2,0x3F
+DEFINE_GUIDSTRUCT("EB115FFC-10C8-4964-831D-6DCB02E6F23F",KSCATEGORY_REALTIME);
+#define KSCATEGORY_REALTIME DEFINE_GUIDNAMED(KSCATEGORY_REALTIME)
+#endif /* NTDDI_VERSION >= NTDDI_VISTA */
+
#define STATIC_KSCATEGORY_NETWORK \
0x67C9CC3C,0x69C4,0x11D2,0x87,0x59,0x00,0xA0,0xC9,0x22,0x31,0x96
DEFINE_GUIDSTRUCT("67C9CC3C-69C4-11D2-8759-00A0C9223196",KSCATEGORY_NETWORK);
@@ -436,6 +445,7 @@ DEFINE_GUIDSTRUCT("3503EAC4-1F26-11D1-8AB0-00A0C9223196",KSCATEGORY_VIRTUAL);
DEFINE_GUIDSTRUCT("BF963D80-C559-11D0-8A2B-00A0C9255AC1",KSCATEGORY_ACOUSTIC_ECHO_CANCEL);
#define KSCATEGORY_ACOUSTIC_ECHO_CANCEL DEFINE_GUIDNAMED(KSCATEGORY_ACOUSTIC_ECHO_CANCEL)
+#if NTDDI_VERSION < NTDDI_VISTA
#define STATIC_KSCATEGORY_SYSAUDIO \
0xA7C7A5B1,0x5AF3,0x11D1,0x9C,0xED,0x00,0xA0,0x24,0xBF,0x04,0x07
DEFINE_GUIDSTRUCT("A7C7A5B1-5AF3-11D1-9CED-00A024BF0407",KSCATEGORY_SYSAUDIO);
@@ -455,6 +465,7 @@ DEFINE_GUIDSTRUCT("9BAF9572-340C-11D3-ABDC-00A0C90AB16F",KSCATEGORY_AUDIO_GFX);
0x9EA331FA,0xB91B,0x45F8,0x92,0x85,0xBD,0x2B,0xC7,0x7A,0xFC,0xDE
DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE",KSCATEGORY_AUDIO_SPLITTER);
#define KSCATEGORY_AUDIO_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_AUDIO_SPLITTER)
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
#define STATIC_KSCATEGORY_SYNTHESIZER STATIC_KSNODETYPE_SYNTHESIZER
#define KSCATEGORY_SYNTHESIZER KSNODETYPE_SYNTHESIZER
@@ -462,6 +473,7 @@ DEFINE_GUIDSTRUCT("9EA331FA-B91B-45F8-9285-BD2BC77AFCDE",KSCATEGORY_AUDIO_SPLITT
#define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE
#define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE
+#if NTDDI_VERSION < NTDDI_VISTA
#define STATIC_KSCATEGORY_AUDIO_DEVICE \
0xFBF6F530,0x07B9,0x11D2,0xA7,0x1E,0x00,0x00,0xF8,0x00,0x47,0x88
DEFINE_GUIDSTRUCT("FBF6F530-07B9-11D2-A71E-0000F8004788",KSCATEGORY_AUDIO_DEVICE);
@@ -481,6 +493,7 @@ DEFINE_GUIDSTRUCT("D6C50671-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_WA
0xD6C50674,0x72C1,0x11D2,0x97,0x55,0x00,0x00,0xF8,0x00,0x47,0x88
DEFINE_GUIDSTRUCT("D6C50674-72C1-11D2-9755-0000F8004788",KSCATEGORY_PREFERRED_MIDIOUT_DEVICE);
#define KSCATEGORY_PREFERRED_MIDIOUT_DEVICE DEFINE_GUIDNAMED(KSCATEGORY_PREFERRED_MIDIOUT_DEVICE)
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
#define STATIC_KSCATEGORY_WDMAUD_USE_PIN_NAME \
0x47A4FA20,0xA251,0x11D1,0xA0,0x50,0x00,0x00,0xF8,0x00,0x47,0x88
@@ -1163,6 +1176,7 @@ typedef struct {
ULONG Reserved;
} KSAUDIO_STEREO_ENHANCE,*PKSAUDIO_STEREO_ENHANCE;
+#if NTDDI_VERSION < NTDDI_VISTA
typedef enum {
KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0,
KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT,
@@ -1177,6 +1191,7 @@ typedef struct {
ULONG Flags;
ULONG Reserved;
} KSAUDIO_PREFERRED_STATUS,*PKSAUDIO_PREFERRED_STATUS;
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
#define STATIC_KSNODETYPE_DAC \
0x507AE360,0xC554,0x11D0,0x8A,0x2B,0x00,0xA0,0xC9,0x25,0x5A,0xC1
@@ -1584,10 +1599,12 @@ DEFINE_GUIDSTRUCT("57E24340-FC5B-4612-A562-72B11A29DFAE",KSAUDFNAME_PEAKMETER);
#define KSNODEPIN_DEMUX_IN 0
#define KSNODEPIN_DEMUX_OUT 1
+#if NTDDI_VERSION < NTDDI_VISTA
#define KSNODEPIN_AEC_RENDER_IN 1
#define KSNODEPIN_AEC_RENDER_OUT 0
#define KSNODEPIN_AEC_CAPTURE_IN 2
#define KSNODEPIN_AEC_CAPTURE_OUT 3
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
#define STATIC_KSMETHODSETID_Wavetable \
0xDCEF31EB,0xD907,0x11D0,0x95,0x83,0x00,0xC0,0x4F,0xB9,0x25,0xD3
@@ -1610,10 +1627,12 @@ typedef struct {
KSDATAFORMAT Format;
} KSWAVETABLE_WAVE_DESC,*PKSWAVETABLE_WAVE_DESC;
+#if NTDDI_VERSION < NTDDI_VISTA
#define STATIC_KSPROPSETID_Acoustic_Echo_Cancel \
0xd7a4af8b,0x3dc1,0x4902,0x91,0xea,0x8a,0x15,0xc9,0x0e,0x05,0xb2
DEFINE_GUIDSTRUCT("D7A4AF8B-3DC1-4902-91EA-8A15C90E05B2",KSPROPSETID_Acoustic_Echo_Cancel);
#define KSPROPSETID_Acoustic_Echo_Cancel DEFINE_GUIDNAMED(KSPROPSETID_Acoustic_Echo_Cancel)
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
typedef enum {
KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0,
@@ -1731,6 +1750,7 @@ DEFINE_GUIDSTRUCT("394EC7C0-62E9-11CF-A5D6-28DB04C10000",KSMUSIC_TECHNOLOGY_WAVE
DEFINE_GUIDSTRUCT("37407736-3620-11D1-85D3-0000F8754380",KSMUSIC_TECHNOLOGY_SWSYNTH);
#define KSMUSIC_TECHNOLOGY_SWSYNTH DEFINE_GUIDNAMED(KSMUSIC_TECHNOLOGY_SWSYNTH)
+#if NTDDI_VERSION < NTDDI_WS03
#define STATIC_KSPROPSETID_WaveTable \
0x8539E660,0x62E9,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
DEFINE_GUIDSTRUCT("8539E660-62E9-11CF-A5D6-28DB04C10000",KSPROPSETID_WaveTable);
@@ -1742,6 +1762,7 @@ typedef enum {
KSPROPERTY_WAVETABLE_MEMORY,
KSPROPERTY_WAVETABLE_VERSION
} KSPROPERTY_WAVETABLE;
+#endif /* NTDDI_VERSION < NTDDI_WS03 */
typedef struct {
KSDATARANGE DataRange;
@@ -1751,6 +1772,7 @@ typedef struct {
ULONG ChannelMask;
} KSDATARANGE_MUSIC,*PKSDATARANGE_MUSIC;
+#if NTDDI_VERSION < NTDDI_WS03
#define STATIC_KSEVENTSETID_Cyclic \
0x142C1AC0,0x072A,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000",KSEVENTSETID_Cyclic);
@@ -1759,6 +1781,7 @@ DEFINE_GUIDSTRUCT("142C1AC0-072A-11D0-A5D6-28DB04C10000",KSEVENTSETID_Cyclic);
typedef enum {
KSEVENT_CYCLIC_TIME_INTERVAL
} KSEVENT_CYCLIC_TIME;
+#endif /* NTDDI_VERSION < NTDDI_WS03 */
#define STATIC_KSPROPSETID_Cyclic \
0x3FFEAEA0,0x2BEE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
@@ -1792,6 +1815,7 @@ typedef struct {
DWORDLONG Position;
} LOOPEDSTREAMING_POSITION_EVENT_DATA,*PLOOPEDSTREAMING_POSITION_EVENT_DATA;
+#if NTDDI_VERSION < NTDDI_VISTA
#define STATIC_KSPROPSETID_Sysaudio \
0xCBE3FAA0,0xCC75,0x11D0,0xB4,0x65,0x00,0x00,0x1A,0x18,0x18,0xE6
DEFINE_GUIDSTRUCT("CBE3FAA0-CC75-11D0-B465-00001A1818E6",KSPROPSETID_Sysaudio);
@@ -1845,6 +1869,7 @@ typedef struct {
ULONG MixerPinId;
ULONG Reserved;
} SYSAUDIO_ATTACH_VIRTUAL_SOURCE,*PSYSAUDIO_ATTACH_VIRTUAL_SOURCE;
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
typedef struct {
KSPROPERTY Property;
@@ -1882,16 +1907,19 @@ typedef struct {
#endif
} KSNODEPROPERTY_AUDIO_PROPERTY,*PKSNODEPROPERTY_AUDIO_PROPERTY;
+#if NTDDI_VERSION < NTDDI_VISTA
#define STATIC_KSPROPSETID_AudioGfx \
0x79a9312e,0x59ae,0x43b0,0xa3,0x50,0x8b,0x5,0x28,0x4c,0xab,0x24
DEFINE_GUIDSTRUCT("79A9312E-59AE-43b0-A350-8B05284CAB24",KSPROPSETID_AudioGfx);
#define KSPROPSETID_AudioGfx DEFINE_GUIDNAMED(KSPROPSETID_AudioGfx)
+#endif /* NTDDI_VERSION < NTDDI_VISTA */
typedef enum {
KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID,
KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID
} KSPROPERTY_AUDIOGFX;
+#if NTDDI_VERSION < NTDDI_WS03
#define STATIC_KSPROPSETID_Linear \
0x5A2FFE80,0x16B9,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000",KSPROPSETID_Linear);
@@ -1900,6 +1928,7 @@ DEFINE_GUIDSTRUCT("5A2FFE80-16B9-11D0-A5D6-28DB04C10000",KSPROPSETID_Linear);
typedef enum {
KSPROPERTY_LINEAR_POSITION
} KSPROPERTY_LINEAR;
+#endif /* NTDDI_VERSION < NTDDI_WS03 */
#define STATIC_KSDATAFORMAT_TYPE_MUSIC \
0xE725D360,0x62CC,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00
diff --git a/lib/libc/include/any-windows-any/locale.h b/lib/libc/include/any-windows-any/locale.h
index 6b1893b36f..9b695e333a 100644
--- a/lib/libc/include/any-windows-any/locale.h
+++ b/lib/libc/include/any-windows-any/locale.h
@@ -103,6 +103,12 @@ extern "C" {
_CRTIMP wchar_t *__cdecl _wsetlocale(int _Category,const wchar_t *_Locale);
#endif
+#ifdef __CHAR_UNSIGNED__
+/* Pull in the constructor from 'charmax.c'. */
+extern int __mingw_initcharmax;
+__MINGW_SELECTANY int* __mingw_reference_charmax = &__mingw_initcharmax;
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/lib/libc/include/any-windows-any/locationapi.h b/lib/libc/include/any-windows-any/locationapi.h
index e2fe09cc2c..3ef382e6c7 100644
--- a/lib/libc/include/any-windows-any/locationapi.h
+++ b/lib/libc/include/any-windows-any/locationapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/locationapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/locationapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mediaobj.h b/lib/libc/include/any-windows-any/mediaobj.h
index 3199aaf564..e9ab1257ff 100644
--- a/lib/libc/include/any-windows-any/mediaobj.h
+++ b/lib/libc/include/any-windows-any/mediaobj.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mediaobj.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mediaobj.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/medparam.h b/lib/libc/include/any-windows-any/medparam.h
index 750511b842..527e25abb6 100644
--- a/lib/libc/include/any-windows-any/medparam.h
+++ b/lib/libc/include/any-windows-any/medparam.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/medparam.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/medparam.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mfapi.h b/lib/libc/include/any-windows-any/mfapi.h
index 6c49764cb5..899d15d2ff 100644
--- a/lib/libc/include/any-windows-any/mfapi.h
+++ b/lib/libc/include/any-windows-any/mfapi.h
@@ -334,7 +334,12 @@ extern "C" {
#define D3DFMT_X8R8G8B8 22
#define D3DFMT_R5G6B5 23
#define D3DFMT_X1R5G5B5 24
+#define D3DFMT_A2B10G10R10 31
#define D3DFMT_P8 41
+#define D3DFMT_L8 50
+#define D3DFMT_D16 80
+#define D3DFMT_L16 81
+#define D3DFMT_A16B16G16R16F 113
#define LOCAL_D3DFMT_DEFINES 1
#endif
@@ -345,6 +350,9 @@ extern "C" {
DEFINE_MEDIATYPE_GUID (MFVideoFormat_RGB555, D3DFMT_X1R5G5B5);
DEFINE_MEDIATYPE_GUID (MFVideoFormat_RGB565, D3DFMT_R5G6B5);
DEFINE_MEDIATYPE_GUID (MFVideoFormat_RGB8, D3DFMT_P8);
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_L8, D3DFMT_L8);
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_L16, D3DFMT_L16);
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_D16, D3DFMT_D16);
#ifdef __GNUC__
#pragma GCC diagnostic push
@@ -359,6 +367,7 @@ extern "C" {
DEFINE_MEDIATYPE_GUID (MFVideoFormat_UYVY, FCC ('UYVY'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_NV11, FCC ('NV11'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_NV12, FCC ('NV12'));
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_NV21, FCC ('NV21'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_YV12, FCC ('YV12'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_I420, FCC ('I420'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_IYUV, FCC ('IYUV'));
@@ -402,9 +411,21 @@ extern "C" {
DEFINE_MEDIATYPE_GUID (MFVideoFormat_HEVC_ES, FCC('HEVS'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_VP80, FCC ('VP80'));
DEFINE_MEDIATYPE_GUID (MFVideoFormat_VP90, FCC ('VP90'));
-#if WINVER >= 0x0602
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_ORAW, FCC('ORAW'));
+#if WINVER >= _WIN32_WINNT_WIN8
DEFINE_MEDIATYPE_GUID (MFVideoFormat_H263, FCC ('H263'));
#endif
+#if WDK_NTDDI_VERSION >= NTDDI_WIN10
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_A2R10G10B10, D3DFMT_A2B10G10R10);
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_A16B16G16R16F, D3DFMT_A16B16G16R16F);
+#endif
+#if WDK_NTDDI_VERSION >= NTDDI_WIN10_RS3
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_VP10, FCC('VP10'));
+ DEFINE_MEDIATYPE_GUID (MFVideoFormat_AV1, FCC('AV01'));
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_FE
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_Theora, FCC('theo'));
+#endif
#ifdef __GNUC__
#pragma GCC diagnostic pop
@@ -417,6 +438,11 @@ extern "C" {
#undef D3DFMT_R5G6B5
#undef D3DFMT_X1R5G5B5
#undef D3DFMT_P8
+#undef D3DFMT_A2B10G10R10
+#undef D3DFMT_A16B16G16R16F
+#undef D3DFMT_L8
+#undef D3DFMT_D16
+#undef D3DFMT_L16
#undef LOCAL_D3DFMT_DEFINES
#endif
@@ -486,8 +512,44 @@ extern "C" {
DEFINE_MEDIATYPE_GUID (MFAudioFormat_MPEG, WAVE_FORMAT_MPEG);
DEFINE_MEDIATYPE_GUID (MFAudioFormat_AAC, WAVE_FORMAT_MPEG_HEAAC);
DEFINE_MEDIATYPE_GUID (MFAudioFormat_ADTS, WAVE_FORMAT_MPEG_ADTS_AAC);
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_AMR_NB, WAVE_FORMAT_AMR_NB);
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_AMR_WB, WAVE_FORMAT_AMR_WB);
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_AMR_WP, WAVE_FORMAT_AMR_WP);
+#if WINVER >= _WIN32_WINNT_WINTHRESHOLD
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_FLAC, WAVE_FORMAT_FLAC);
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_ALAC, WAVE_FORMAT_ALAC);
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_Opus, WAVE_FORMAT_OPUS);
+#endif
+ DEFINE_MEDIATYPE_GUID (MFAudioFormat_Dolby_AC4, WAVE_FORMAT_DOLBY_AC4);
+
DEFINE_GUID (MFAudioFormat_Dolby_AC3, 0xe06d802c, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x05f, 0x6c, 0xbb, 0xea);
DEFINE_GUID (MFAudioFormat_Dolby_DDPlus, 0xa7fb87af, 0x2d02, 0x42fb, 0xa4, 0xd4, 0x5, 0xcd, 0x93, 0x84, 0x3b, 0xdd);
+ DEFINE_GUID (MFAudioFormat_Dolby_AC4_V1, 0x36b7927c, 0x3d87, 0x4a2a, 0x91, 0x96, 0xa2, 0x1a, 0xd9, 0xe9, 0x35, 0xe6);
+ DEFINE_GUID (MFAudioFormat_Dolby_AC4_V2, 0x7998b2a0, 0x17dd, 0x49b6, 0x8d, 0xfa, 0x9b, 0x27, 0x85, 0x52, 0xa2, 0xac);
+ DEFINE_GUID (MFAudioFormat_Dolby_AC4_V1_ES, 0x9d8dccc6, 0xd156, 0x4fb8, 0x97, 0x9c, 0xa8, 0x5b, 0xe7, 0xd2, 0x1d, 0xfa);
+ DEFINE_GUID (MFAudioFormat_Dolby_AC4_V2_ES, 0x7e58c9f9, 0xb070, 0x45f4, 0x8c, 0xcd, 0xa9, 0x9a, 0x04, 0x17, 0xc1, 0xac);
+ DEFINE_GUID (MFAudioFormat_Vorbis, 0x8d2fd10b, 0x5841, 0x4a6b, 0x89, 0x05, 0x58, 0x8f, 0xec, 0x1a, 0xde, 0xd9);
+ DEFINE_GUID (MFAudioFormat_DTS_RAW, 0xe06d8033, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea);
+ DEFINE_GUID (MFAudioFormat_DTS_HD, 0xa2e58eb7, 0x0fa9, 0x48bb, 0xa4, 0x0c, 0xfa, 0x0e, 0x15, 0x6d, 0x06, 0x45);
+ DEFINE_GUID (MFAudioFormat_DTS_XLL, 0x45b37c1b, 0x8c70, 0x4e59, 0xa7, 0xbe, 0xa1, 0xe4, 0x2c, 0x81, 0xc8, 0x0d);
+ DEFINE_GUID (MFAudioFormat_DTS_LBR, 0xc2fe6f0a, 0x4e3c, 0x4df1, 0x9b, 0x60, 0x50, 0x86, 0x30, 0x91, 0xe4, 0xb9);
+ DEFINE_GUID (MFAudioFormat_DTS_UHD, 0x87020117, 0xace3, 0x42de, 0xb7, 0x3e, 0xc6, 0x56, 0x70, 0x62, 0x63, 0xf8);
+ DEFINE_GUID (MFAudioFormat_DTS_UHDY, 0x9b9cca00, 0x91b9, 0x4ccc, 0x88, 0x3a, 0x8f, 0x78, 0x7a, 0xc3, 0xcc, 0x86);
+#if NTDDI_VERSION >= NTDDI_WIN10_RS2
+ DEFINE_GUID (MFAudioFormat_Float_SpatialObjects, 0xfa39cd94, 0xbc64, 0x4ab1, 0x9b, 0x71, 0xdc, 0xd0, 0x9d, 0x5a, 0x7e, 0x7a);
+#endif
+#if WINVER >= _WIN32_WINNT_WINTHRESHOLD
+ DEFINE_GUID (MFAudioFormat_LPCM, 0xe06d8032l, 0xdb46, 0x11cf, 0xb4, 0xd1, 0x00, 0x80, 0x5f, 0x6c, 0xbb, 0xea);
+ DEFINE_GUID (MFAudioFormat_PCM_HDCP, 0xa5e7ff01, 0x8411, 0x4acc, 0xa8, 0x65, 0x5f, 0x49, 0x41, 0x28, 0x8d, 0x80);
+ DEFINE_GUID (MFAudioFormat_Dolby_AC3_HDCP, 0x97663a80, 0x8ffb, 0x4445, 0xa6, 0xba, 0x79, 0x2d, 0x90, 0x8f, 0x49, 0x7f);
+ DEFINE_GUID (MFAudioFormat_AAC_HDCP, 0x419bce76, 0x8b72, 0x400f, 0xad, 0xeb, 0x84, 0xb5, 0x7d, 0x63, 0x48, 0x4d);
+ DEFINE_GUID (MFAudioFormat_ADTS_HDCP, 0xda4963a3, 0x14d8, 0x4dcf, 0x92, 0xb7, 0x19, 0x3e, 0xb8, 0x43, 0x63, 0xdb);
+ DEFINE_GUID (MFAudioFormat_Base_HDCP, 0x3884b5bc, 0xe277, 0x43fd, 0x98, 0x3d, 0x03, 0x8a, 0xa8, 0xd9, 0xb6, 0x05);
+ DEFINE_GUID (MFVideoFormat_H264_HDCP, 0x5d0ce9dd, 0x9817, 0x49da, 0xbd, 0xfd, 0xf5, 0xf5, 0xb9, 0x8f, 0x18, 0xa6);
+ DEFINE_GUID (MFVideoFormat_HEVC_HDCP, 0x3cfe0fe6, 0x05c4, 0x47dc, 0x9d, 0x70, 0x4b, 0xdb, 0x29, 0x59, 0x72, 0x0f);
+ DEFINE_GUID (MFVideoFormat_Base_HDCP, 0xeac3b9d5, 0xbd14, 0x4237, 0x8f, 0x1f, 0xba, 0xb4, 0x28, 0xe4, 0x93, 0x12);
+#endif
+
DEFINE_GUID (MFMPEG4Format_Base, 0x00000000, 0x767a, 0x494d, 0xb4, 0x78, 0xf2, 0x9d, 0x25, 0xdc, 0x90, 0x37);
DEFINE_GUID (MF_MT_MAJOR_TYPE, 0x48eba18e, 0xf8c9, 0x4687, 0xbf, 0x11, 0x0a, 0x74, 0xc9, 0xf9, 0x6a, 0x8f);
DEFINE_GUID (MF_MT_SUBTYPE, 0xf7e34c9a, 0x42e8, 0x4714, 0xb7, 0x4b, 0xcb, 0x29, 0xd7, 0x2c, 0x35, 0xe5);
diff --git a/lib/libc/include/any-windows-any/mfcaptureengine.h b/lib/libc/include/any-windows-any/mfcaptureengine.h
new file mode 100644
index 0000000000..335819890b
--- /dev/null
+++ b/lib/libc/include/any-windows-any/mfcaptureengine.h
@@ -0,0 +1,1769 @@
+/*** Autogenerated by WIDL 7.0 from include/mfcaptureengine.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __mfcaptureengine_h__
+#define __mfcaptureengine_h__
+
+/* Forward declarations */
+
+#ifndef __IMFCaptureEngineOnEventCallback_FWD_DEFINED__
+#define __IMFCaptureEngineOnEventCallback_FWD_DEFINED__
+typedef interface IMFCaptureEngineOnEventCallback IMFCaptureEngineOnEventCallback;
+#ifdef __cplusplus
+interface IMFCaptureEngineOnEventCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureEngineOnSampleCallback_FWD_DEFINED__
+#define __IMFCaptureEngineOnSampleCallback_FWD_DEFINED__
+typedef interface IMFCaptureEngineOnSampleCallback IMFCaptureEngineOnSampleCallback;
+#ifdef __cplusplus
+interface IMFCaptureEngineOnSampleCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureSink_FWD_DEFINED__
+#define __IMFCaptureSink_FWD_DEFINED__
+typedef interface IMFCaptureSink IMFCaptureSink;
+#ifdef __cplusplus
+interface IMFCaptureSink;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureRecordSink_FWD_DEFINED__
+#define __IMFCaptureRecordSink_FWD_DEFINED__
+typedef interface IMFCaptureRecordSink IMFCaptureRecordSink;
+#ifdef __cplusplus
+interface IMFCaptureRecordSink;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCapturePreviewSink_FWD_DEFINED__
+#define __IMFCapturePreviewSink_FWD_DEFINED__
+typedef interface IMFCapturePreviewSink IMFCapturePreviewSink;
+#ifdef __cplusplus
+interface IMFCapturePreviewSink;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCapturePhotoSink_FWD_DEFINED__
+#define __IMFCapturePhotoSink_FWD_DEFINED__
+typedef interface IMFCapturePhotoSink IMFCapturePhotoSink;
+#ifdef __cplusplus
+interface IMFCapturePhotoSink;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureSource_FWD_DEFINED__
+#define __IMFCaptureSource_FWD_DEFINED__
+typedef interface IMFCaptureSource IMFCaptureSource;
+#ifdef __cplusplus
+interface IMFCaptureSource;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureEngine_FWD_DEFINED__
+#define __IMFCaptureEngine_FWD_DEFINED__
+typedef interface IMFCaptureEngine IMFCaptureEngine;
+#ifdef __cplusplus
+interface IMFCaptureEngine;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureEngineClassFactory_FWD_DEFINED__
+#define __IMFCaptureEngineClassFactory_FWD_DEFINED__
+typedef interface IMFCaptureEngineClassFactory IMFCaptureEngineClassFactory;
+#ifdef __cplusplus
+interface IMFCaptureEngineClassFactory;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureEngineOnSampleCallback2_FWD_DEFINED__
+#define __IMFCaptureEngineOnSampleCallback2_FWD_DEFINED__
+typedef interface IMFCaptureEngineOnSampleCallback2 IMFCaptureEngineOnSampleCallback2;
+#ifdef __cplusplus
+interface IMFCaptureEngineOnSampleCallback2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFCaptureSink2_FWD_DEFINED__
+#define __IMFCaptureSink2_FWD_DEFINED__
+typedef interface IMFCaptureSink2 IMFCaptureSink2;
+#ifdef __cplusplus
+interface IMFCaptureSink2;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <mfobjects.h>
+#include <mfidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINVER >= _WIN32_WINNT_WIN7
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#ifndef _MFVideoNormalizedRect_
+#define _MFVideoNormalizedRect_
+typedef struct MFVideoNormalizedRect {
+ float left;
+ float top;
+ float right;
+ float bottom;
+} MFVideoNormalizedRect;
+#endif
+typedef enum MF_CAPTURE_ENGINE_DEVICE_TYPE {
+ MF_CAPTURE_ENGINE_DEVICE_TYPE_AUDIO = 0x0,
+ MF_CAPTURE_ENGINE_DEVICE_TYPE_VIDEO = 0x1
+} MF_CAPTURE_ENGINE_DEVICE_TYPE;
+typedef enum MF_CAPTURE_ENGINE_SINK_TYPE {
+ MF_CAPTURE_ENGINE_SINK_TYPE_RECORD = 0x0,
+ MF_CAPTURE_ENGINE_SINK_TYPE_PREVIEW = 0x1,
+ MF_CAPTURE_ENGINE_SINK_TYPE_PHOTO = 0x2
+} MF_CAPTURE_ENGINE_SINK_TYPE;
+enum {
+ MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_VIDEO_PREVIEW = 0xfffffffa,
+ MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_VIDEO_RECORD = 0xfffffff9,
+ MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_PHOTO = 0xfffffff8,
+ MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_AUDIO = 0xfffffff7,
+ MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_METADATA = 0xfffffff6,
+ MF_CAPTURE_ENGINE_MEDIASOURCE = 0xffffffff
+};
+typedef enum MF_CAPTURE_ENGINE_STREAM_CATEGORY {
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_VIDEO_PREVIEW = 0x0,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_VIDEO_CAPTURE = 0x1,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_PHOTO_INDEPENDENT = 0x2,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_PHOTO_DEPENDENT = 0x3,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_AUDIO = 0x4,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_UNSUPPORTED = 0x5,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY_METADATA = 0x6
+} MF_CAPTURE_ENGINE_STREAM_CATEGORY;
+typedef enum MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE {
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_OTHER = 0,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_COMMUNICATIONS = 1,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_MEDIA = 2,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_GAMECHAT = 3,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_SPEECH = 4,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_FARFIELDSPEECH = 5,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_UNIFORMSPEECH = 6,
+ MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_VOICETYPING = 7
+} MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE;
+typedef enum MF_CAPTURE_ENGINE_AUDIO_PROCESSING_MODE {
+ MF_CAPTURE_ENGINE_AUDIO_PROCESSING_DEFAULT = 0,
+ MF_CAPTURE_ENGINE_AUDIO_PROCESSING_RAW = 1
+} MF_CAPTURE_ENGINE_AUDIO_PROCESSING_MODE;
+EXTERN_GUID(MF_CAPTURE_ENGINE_INITIALIZED, 0x219992bc, 0xcf92, 0x4531, 0xa1, 0xae, 0x96, 0xe1, 0xe8, 0x86, 0xc8, 0xf1);
+EXTERN_GUID(MF_CAPTURE_ENGINE_PREVIEW_STARTED, 0xa416df21, 0xf9d3, 0x4a74, 0x99, 0x1b, 0xb8, 0x17, 0x29, 0x89, 0x52, 0xc4);
+EXTERN_GUID(MF_CAPTURE_ENGINE_PREVIEW_STOPPED, 0x13d5143c, 0x1edd, 0x4e50,0xa2, 0xef, 0x35, 0x0a, 0x47, 0x67, 0x80, 0x60);
+EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_STARTED, 0xac2b027b, 0xddf9, 0x48a0,0x89, 0xbe, 0x38, 0xab, 0x35, 0xef, 0x45, 0xc0);
+EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_STOPPED, 0x55e5200a, 0xf98f, 0x4c0d, 0xa9, 0xec, 0x9e, 0xb2, 0x5e, 0xd3, 0xd7, 0x73);
+EXTERN_GUID(MF_CAPTURE_ENGINE_PHOTO_TAKEN, 0x3c50c445, 0x7304, 0x48eb,0x86, 0x5d, 0xbb, 0xa1, 0x9b, 0xa3, 0xaf, 0x5c);
+EXTERN_GUID(MF_CAPTURE_SOURCE_CURRENT_DEVICE_MEDIA_TYPE_SET, 0xe7e75e4c, 0x039c, 0x4410, 0x81, 0x5b, 0x87, 0x41, 0x30, 0x7b, 0x63, 0xaa);
+EXTERN_GUID(MF_CAPTURE_ENGINE_ERROR, 0x46b89fc6, 0x33cc, 0x4399,0x9d, 0xad, 0x78, 0x4d, 0xe7, 0x7d, 0x58, 0x7c);
+EXTERN_GUID(MF_CAPTURE_ENGINE_EFFECT_ADDED, 0xaa8dc7b5, 0xa048, 0x4e13, 0x8e, 0xbe, 0xf2, 0x3c, 0x46, 0xc8, 0x30, 0xc1);
+EXTERN_GUID(MF_CAPTURE_ENGINE_EFFECT_REMOVED, 0xc6e8db07, 0xfb09, 0x4a48, 0x89, 0xc6, 0xbf, 0x92, 0xa0, 0x42, 0x22, 0xc9);
+EXTERN_GUID(MF_CAPTURE_ENGINE_ALL_EFFECTS_REMOVED, 0xfded7521, 0x8ed8, 0x431a, 0xa9, 0x6b, 0xf3, 0xe2, 0x56, 0x5e, 0x98, 0x1c);
+EXTERN_GUID(MF_CAPTURE_SINK_PREPARED, 0x7bfce257, 0x12b1, 0x4409, 0x8c, 0x34, 0xd4, 0x45, 0xda, 0xab, 0x75, 0x78);
+EXTERN_GUID(MF_CAPTURE_ENGINE_OUTPUT_MEDIA_TYPE_SET, 0xcaaad994, 0x83ec, 0x45e9,0xa3, 0x0a, 0x1f, 0x20, 0xaa, 0xdb, 0x98, 0x31);
+EXTERN_GUID(MF_CAPTURE_ENGINE_CAMERA_STREAM_BLOCKED, 0xa4209417, 0x8d39, 0x46f3, 0xb7, 0x59, 0x59, 0x12, 0x52, 0x8f, 0x42, 0x07);
+EXTERN_GUID(MF_CAPTURE_ENGINE_CAMERA_STREAM_UNBLOCKED, 0x9be9eef0, 0xcdaf, 0x4717, 0x85, 0x64, 0x83, 0x4a, 0xae, 0x66, 0x41, 0x5c);
+EXTERN_GUID(MF_CAPTURE_ENGINE_D3D_MANAGER, 0x76e25e7b, 0xd595, 0x4283, 0x96, 0x2c, 0xc5, 0x94, 0xaf, 0xd7, 0x8d, 0xdf);
+EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_VIDEO_MAX_UNPROCESSED_SAMPLES, 0xb467f705, 0x7913, 0x4894, 0x9d, 0x42, 0xa2, 0x15, 0xfe, 0xa2, 0x3d, 0xa9);
+EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_AUDIO_MAX_UNPROCESSED_SAMPLES, 0x1cddb141, 0xa7f4, 0x4d58, 0x98, 0x96, 0x4d, 0x15, 0xa5, 0x3c, 0x4e, 0xfe);
+EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_VIDEO_MAX_PROCESSED_SAMPLES, 0xe7b4a49e, 0x382c, 0x4aef, 0xa9, 0x46, 0xae, 0xd5, 0x49, 0xb, 0x71, 0x11);
+EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_AUDIO_MAX_PROCESSED_SAMPLES, 0x9896e12a, 0xf707, 0x4500, 0xb6, 0xbd, 0xdb, 0x8e, 0xb8, 0x10, 0xb5, 0xf);
+EXTERN_GUID(MF_CAPTURE_ENGINE_USE_AUDIO_DEVICE_ONLY, 0x1c8077da, 0x8466, 0x4dc4, 0x8b, 0x8e, 0x27, 0x6b, 0x3f, 0x85, 0x92, 0x3b);
+EXTERN_GUID(MF_CAPTURE_ENGINE_USE_VIDEO_DEVICE_ONLY, 0x7e025171, 0xcf32, 0x4f2e, 0x8f, 0x19, 0x41, 0x5, 0x77, 0xb7, 0x3a, 0x66);
+EXTERN_GUID(MF_CAPTURE_ENGINE_DISABLE_HARDWARE_TRANSFORMS, 0xb7c42a6b, 0x3207, 0x4495, 0xb4, 0xe7, 0x81, 0xf9, 0xc3, 0x5d, 0x59, 0x91);
+EXTERN_GUID(MF_CAPTURE_ENGINE_DISABLE_DXVA, 0xf9818862, 0x179d, 0x433f, 0xa3, 0x2f, 0x74, 0xcb, 0xcf, 0x74, 0x46, 0x6d);
+EXTERN_GUID(MF_CAPTURE_ENGINE_MEDIASOURCE_CONFIG, 0xbc6989d2, 0x0fc1, 0x46e1, 0xa7, 0x4f, 0xef, 0xd3, 0x6b, 0xc7, 0x88, 0xde);
+EXTERN_GUID(MF_CAPTURE_ENGINE_DECODER_MFT_FIELDOFUSE_UNLOCK_Attribute, 0x2b8ad2e8, 0x7acb, 0x4321, 0xa6, 0x06, 0x32, 0x5c, 0x42, 0x49, 0xf4, 0xfc);
+EXTERN_GUID(MF_CAPTURE_ENGINE_ENCODER_MFT_FIELDOFUSE_UNLOCK_Attribute, 0x54c63a00, 0x78d5, 0x422f, 0xaa, 0x3e, 0x5e, 0x99, 0xac, 0x64, 0x92, 0x69);
+EXTERN_GUID(MF_CAPTURE_ENGINE_ENABLE_CAMERA_STREAMSTATE_NOTIFICATION, 0x4c808e9d, 0xaaed, 0x4713, 0x90, 0xfb, 0xcb, 0x24, 0x06, 0x4a, 0xb8, 0xda);
+EXTERN_GUID(MF_CAPTURE_ENGINE_MEDIA_CATEGORY, 0x8e3f5bd5, 0xdbbf, 0x42f0, 0x85, 0x42, 0xd0, 0x7a, 0x39, 0x71, 0x76, 0x2a);
+EXTERN_GUID(MF_CAPTURE_ENGINE_AUDIO_PROCESSING, 0x10f1be5e, 0x7e11, 0x410b, 0x97, 0x3d, 0xf4, 0xb6, 0x10, 0x90, 0x0, 0xfe);
+EXTERN_GUID(MF_CAPTURE_ENGINE_EVENT_GENERATOR_GUID, 0xabfa8ad5, 0xfc6d, 0x4911, 0x87, 0xe0, 0x96, 0x19, 0x45, 0xf8, 0xf7, 0xce);
+EXTERN_GUID(MF_CAPTURE_ENGINE_EVENT_STREAM_INDEX, 0x82697f44, 0xb1cf, 0x42eb, 0x97, 0x53, 0xf8, 0x6d, 0x64, 0x9c, 0x88, 0x65);
+EXTERN_GUID(MF_CAPTURE_ENGINE_SELECTEDCAMERAPROFILE, 0x03160b7e, 0x1c6f, 0x4db2, 0xad, 0x56, 0xa7, 0xc4, 0x30, 0xf8, 0x23, 0x92);
+EXTERN_GUID(MF_CAPTURE_ENGINE_SELECTEDCAMERAPROFILE_INDEX, 0x3ce88613, 0x2214, 0x46c3, 0xb4, 0x17, 0x82, 0xf8, 0xa3, 0x13, 0xc9, 0xc3);
+/*****************************************************************************
+ * IMFCaptureEngineOnEventCallback interface
+ */
+#ifndef __IMFCaptureEngineOnEventCallback_INTERFACE_DEFINED__
+#define __IMFCaptureEngineOnEventCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureEngineOnEventCallback, 0xaeda51c0, 0x9025, 0x4983, 0x90,0x12, 0xde,0x59,0x7b,0x88,0xb0,0x89);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("aeda51c0-9025-4983-9012-de597b88b089")
+IMFCaptureEngineOnEventCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnEvent(
+ IMFMediaEvent *pEvent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureEngineOnEventCallback, 0xaeda51c0, 0x9025, 0x4983, 0x90,0x12, 0xde,0x59,0x7b,0x88,0xb0,0x89)
+#endif
+#else
+typedef struct IMFCaptureEngineOnEventCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureEngineOnEventCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureEngineOnEventCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureEngineOnEventCallback *This);
+
+ /*** IMFCaptureEngineOnEventCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnEvent)(
+ IMFCaptureEngineOnEventCallback *This,
+ IMFMediaEvent *pEvent);
+
+ END_INTERFACE
+} IMFCaptureEngineOnEventCallbackVtbl;
+
+interface IMFCaptureEngineOnEventCallback {
+ CONST_VTBL IMFCaptureEngineOnEventCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureEngineOnEventCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureEngineOnEventCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureEngineOnEventCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureEngineOnEventCallback methods ***/
+#define IMFCaptureEngineOnEventCallback_OnEvent(This,pEvent) (This)->lpVtbl->OnEvent(This,pEvent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnEventCallback_QueryInterface(IMFCaptureEngineOnEventCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureEngineOnEventCallback_AddRef(IMFCaptureEngineOnEventCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureEngineOnEventCallback_Release(IMFCaptureEngineOnEventCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureEngineOnEventCallback methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnEventCallback_OnEvent(IMFCaptureEngineOnEventCallback* This,IMFMediaEvent *pEvent) {
+ return This->lpVtbl->OnEvent(This,pEvent);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureEngineOnEventCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCaptureEngineOnSampleCallback interface
+ */
+#ifndef __IMFCaptureEngineOnSampleCallback_INTERFACE_DEFINED__
+#define __IMFCaptureEngineOnSampleCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureEngineOnSampleCallback, 0x52150b82, 0xab39, 0x4467, 0x98,0x0f, 0xe4,0x8b,0xf0,0x82,0x2e,0xcd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("52150b82-ab39-4467-980f-e48bf0822ecd")
+IMFCaptureEngineOnSampleCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnSample(
+ IMFSample *pSample) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureEngineOnSampleCallback, 0x52150b82, 0xab39, 0x4467, 0x98,0x0f, 0xe4,0x8b,0xf0,0x82,0x2e,0xcd)
+#endif
+#else
+typedef struct IMFCaptureEngineOnSampleCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureEngineOnSampleCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureEngineOnSampleCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureEngineOnSampleCallback *This);
+
+ /*** IMFCaptureEngineOnSampleCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnSample)(
+ IMFCaptureEngineOnSampleCallback *This,
+ IMFSample *pSample);
+
+ END_INTERFACE
+} IMFCaptureEngineOnSampleCallbackVtbl;
+
+interface IMFCaptureEngineOnSampleCallback {
+ CONST_VTBL IMFCaptureEngineOnSampleCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureEngineOnSampleCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureEngineOnSampleCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureEngineOnSampleCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureEngineOnSampleCallback methods ***/
+#define IMFCaptureEngineOnSampleCallback_OnSample(This,pSample) (This)->lpVtbl->OnSample(This,pSample)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnSampleCallback_QueryInterface(IMFCaptureEngineOnSampleCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureEngineOnSampleCallback_AddRef(IMFCaptureEngineOnSampleCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureEngineOnSampleCallback_Release(IMFCaptureEngineOnSampleCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureEngineOnSampleCallback methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnSampleCallback_OnSample(IMFCaptureEngineOnSampleCallback* This,IMFSample *pSample) {
+ return This->lpVtbl->OnSample(This,pSample);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureEngineOnSampleCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCaptureSink interface
+ */
+#ifndef __IMFCaptureSink_INTERFACE_DEFINED__
+#define __IMFCaptureSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureSink, 0x72d6135b, 0x35e9, 0x412c, 0xb9,0x26, 0xfd,0x52,0x65,0xf2,0xa8,0x85);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("72d6135b-35e9-412c-b926-fd5265f2a885")
+IMFCaptureSink : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetOutputMediaType(
+ DWORD dwSinkStreamIndex,
+ IMFMediaType **ppMediaType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetService(
+ DWORD dwSinkStreamIndex,
+ REFGUID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddStream(
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pAttributes,
+ DWORD *pdwSinkStreamIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Prepare(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveAllStreams(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureSink, 0x72d6135b, 0x35e9, 0x412c, 0xb9,0x26, 0xfd,0x52,0x65,0xf2,0xa8,0x85)
+#endif
+#else
+typedef struct IMFCaptureSinkVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureSink *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureSink *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureSink *This);
+
+ /*** IMFCaptureSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
+ IMFCaptureSink *This,
+ DWORD dwSinkStreamIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IMFCaptureSink *This,
+ DWORD dwSinkStreamIndex,
+ REFGUID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *AddStream)(
+ IMFCaptureSink *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pAttributes,
+ DWORD *pdwSinkStreamIndex);
+
+ HRESULT (STDMETHODCALLTYPE *Prepare)(
+ IMFCaptureSink *This);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
+ IMFCaptureSink *This);
+
+ END_INTERFACE
+} IMFCaptureSinkVtbl;
+
+interface IMFCaptureSink {
+ CONST_VTBL IMFCaptureSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureSink methods ***/
+#define IMFCaptureSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
+#define IMFCaptureSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
+#define IMFCaptureSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
+#define IMFCaptureSink_Prepare(This) (This)->lpVtbl->Prepare(This)
+#define IMFCaptureSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureSink_QueryInterface(IMFCaptureSink* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureSink_AddRef(IMFCaptureSink* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureSink_Release(IMFCaptureSink* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureSink methods ***/
+static FORCEINLINE HRESULT IMFCaptureSink_GetOutputMediaType(IMFCaptureSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCaptureSink_GetService(IMFCaptureSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
+ return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
+}
+static FORCEINLINE HRESULT IMFCaptureSink_AddStream(IMFCaptureSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
+ return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
+}
+static FORCEINLINE HRESULT IMFCaptureSink_Prepare(IMFCaptureSink* This) {
+ return This->lpVtbl->Prepare(This);
+}
+static FORCEINLINE HRESULT IMFCaptureSink_RemoveAllStreams(IMFCaptureSink* This) {
+ return This->lpVtbl->RemoveAllStreams(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureSink_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCaptureRecordSink interface
+ */
+#ifndef __IMFCaptureRecordSink_INTERFACE_DEFINED__
+#define __IMFCaptureRecordSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureRecordSink, 0x3323b55a, 0xf92a, 0x4fe2, 0x8e,0xdc, 0xe9,0xbf,0xc0,0x63,0x4d,0x77);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3323b55a-f92a-4fe2-8edc-e9bfc0634d77")
+IMFCaptureRecordSink : public IMFCaptureSink
+{
+ virtual HRESULT STDMETHODCALLTYPE SetOutputByteStream(
+ IMFByteStream *pByteStream,
+ REFGUID guidContainerType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
+ LPCWSTR fileName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSampleCallback(
+ DWORD dwStreamSinkIndex,
+ IMFCaptureEngineOnSampleCallback *pCallback) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustomSink(
+ IMFMediaSink *pMediaSink) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRotation(
+ DWORD dwStreamIndex,
+ DWORD *pdwRotationValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRotation(
+ DWORD dwStreamIndex,
+ DWORD dwRotationValue) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureRecordSink, 0x3323b55a, 0xf92a, 0x4fe2, 0x8e,0xdc, 0xe9,0xbf,0xc0,0x63,0x4d,0x77)
+#endif
+#else
+typedef struct IMFCaptureRecordSinkVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureRecordSink *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureRecordSink *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureRecordSink *This);
+
+ /*** IMFCaptureSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
+ IMFCaptureRecordSink *This,
+ DWORD dwSinkStreamIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IMFCaptureRecordSink *This,
+ DWORD dwSinkStreamIndex,
+ REFGUID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *AddStream)(
+ IMFCaptureRecordSink *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pAttributes,
+ DWORD *pdwSinkStreamIndex);
+
+ HRESULT (STDMETHODCALLTYPE *Prepare)(
+ IMFCaptureRecordSink *This);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
+ IMFCaptureRecordSink *This);
+
+ /*** IMFCaptureRecordSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetOutputByteStream)(
+ IMFCaptureRecordSink *This,
+ IMFByteStream *pByteStream,
+ REFGUID guidContainerType);
+
+ HRESULT (STDMETHODCALLTYPE *SetOutputFileName)(
+ IMFCaptureRecordSink *This,
+ LPCWSTR fileName);
+
+ HRESULT (STDMETHODCALLTYPE *SetSampleCallback)(
+ IMFCaptureRecordSink *This,
+ DWORD dwStreamSinkIndex,
+ IMFCaptureEngineOnSampleCallback *pCallback);
+
+ HRESULT (STDMETHODCALLTYPE *SetCustomSink)(
+ IMFCaptureRecordSink *This,
+ IMFMediaSink *pMediaSink);
+
+ HRESULT (STDMETHODCALLTYPE *GetRotation)(
+ IMFCaptureRecordSink *This,
+ DWORD dwStreamIndex,
+ DWORD *pdwRotationValue);
+
+ HRESULT (STDMETHODCALLTYPE *SetRotation)(
+ IMFCaptureRecordSink *This,
+ DWORD dwStreamIndex,
+ DWORD dwRotationValue);
+
+ END_INTERFACE
+} IMFCaptureRecordSinkVtbl;
+
+interface IMFCaptureRecordSink {
+ CONST_VTBL IMFCaptureRecordSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureRecordSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureRecordSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureRecordSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureSink methods ***/
+#define IMFCaptureRecordSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
+#define IMFCaptureRecordSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
+#define IMFCaptureRecordSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
+#define IMFCaptureRecordSink_Prepare(This) (This)->lpVtbl->Prepare(This)
+#define IMFCaptureRecordSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
+/*** IMFCaptureRecordSink methods ***/
+#define IMFCaptureRecordSink_SetOutputByteStream(This,pByteStream,guidContainerType) (This)->lpVtbl->SetOutputByteStream(This,pByteStream,guidContainerType)
+#define IMFCaptureRecordSink_SetOutputFileName(This,fileName) (This)->lpVtbl->SetOutputFileName(This,fileName)
+#define IMFCaptureRecordSink_SetSampleCallback(This,dwStreamSinkIndex,pCallback) (This)->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback)
+#define IMFCaptureRecordSink_SetCustomSink(This,pMediaSink) (This)->lpVtbl->SetCustomSink(This,pMediaSink)
+#define IMFCaptureRecordSink_GetRotation(This,dwStreamIndex,pdwRotationValue) (This)->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue)
+#define IMFCaptureRecordSink_SetRotation(This,dwStreamIndex,dwRotationValue) (This)->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureRecordSink_QueryInterface(IMFCaptureRecordSink* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureRecordSink_AddRef(IMFCaptureRecordSink* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureRecordSink_Release(IMFCaptureRecordSink* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureSink methods ***/
+static FORCEINLINE HRESULT IMFCaptureRecordSink_GetOutputMediaType(IMFCaptureRecordSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_GetService(IMFCaptureRecordSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
+ return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_AddStream(IMFCaptureRecordSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
+ return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_Prepare(IMFCaptureRecordSink* This) {
+ return This->lpVtbl->Prepare(This);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_RemoveAllStreams(IMFCaptureRecordSink* This) {
+ return This->lpVtbl->RemoveAllStreams(This);
+}
+/*** IMFCaptureRecordSink methods ***/
+static FORCEINLINE HRESULT IMFCaptureRecordSink_SetOutputByteStream(IMFCaptureRecordSink* This,IMFByteStream *pByteStream,REFGUID guidContainerType) {
+ return This->lpVtbl->SetOutputByteStream(This,pByteStream,guidContainerType);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_SetOutputFileName(IMFCaptureRecordSink* This,LPCWSTR fileName) {
+ return This->lpVtbl->SetOutputFileName(This,fileName);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_SetSampleCallback(IMFCaptureRecordSink* This,DWORD dwStreamSinkIndex,IMFCaptureEngineOnSampleCallback *pCallback) {
+ return This->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_SetCustomSink(IMFCaptureRecordSink* This,IMFMediaSink *pMediaSink) {
+ return This->lpVtbl->SetCustomSink(This,pMediaSink);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_GetRotation(IMFCaptureRecordSink* This,DWORD dwStreamIndex,DWORD *pdwRotationValue) {
+ return This->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue);
+}
+static FORCEINLINE HRESULT IMFCaptureRecordSink_SetRotation(IMFCaptureRecordSink* This,DWORD dwStreamIndex,DWORD dwRotationValue) {
+ return This->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureRecordSink_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCapturePreviewSink interface
+ */
+#ifndef __IMFCapturePreviewSink_INTERFACE_DEFINED__
+#define __IMFCapturePreviewSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCapturePreviewSink, 0x77346cfd, 0x5b49, 0x4d73, 0xac,0xe0, 0x5b,0x52,0xa8,0x59,0xf2,0xe0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("77346cfd-5b49-4d73-ace0-5b52a859f2e0")
+IMFCapturePreviewSink : public IMFCaptureSink
+{
+ virtual HRESULT STDMETHODCALLTYPE SetRenderHandle(
+ HANDLE handle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRenderSurface(
+ IUnknown *pSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UpdateVideo(
+ const MFVideoNormalizedRect *pSrc,
+ const RECT *pDst,
+ const COLORREF *pBorderClr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSampleCallback(
+ DWORD dwStreamSinkIndex,
+ IMFCaptureEngineOnSampleCallback *pCallback) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMirrorState(
+ WINBOOL *pfMirrorState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMirrorState(
+ WINBOOL fMirrorState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRotation(
+ DWORD dwStreamIndex,
+ DWORD *pdwRotationValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRotation(
+ DWORD dwStreamIndex,
+ DWORD dwRotationValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustomSink(
+ IMFMediaSink *pMediaSink) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCapturePreviewSink, 0x77346cfd, 0x5b49, 0x4d73, 0xac,0xe0, 0x5b,0x52,0xa8,0x59,0xf2,0xe0)
+#endif
+#else
+typedef struct IMFCapturePreviewSinkVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCapturePreviewSink *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCapturePreviewSink *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCapturePreviewSink *This);
+
+ /*** IMFCaptureSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
+ IMFCapturePreviewSink *This,
+ DWORD dwSinkStreamIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IMFCapturePreviewSink *This,
+ DWORD dwSinkStreamIndex,
+ REFGUID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *AddStream)(
+ IMFCapturePreviewSink *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pAttributes,
+ DWORD *pdwSinkStreamIndex);
+
+ HRESULT (STDMETHODCALLTYPE *Prepare)(
+ IMFCapturePreviewSink *This);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
+ IMFCapturePreviewSink *This);
+
+ /*** IMFCapturePreviewSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetRenderHandle)(
+ IMFCapturePreviewSink *This,
+ HANDLE handle);
+
+ HRESULT (STDMETHODCALLTYPE *SetRenderSurface)(
+ IMFCapturePreviewSink *This,
+ IUnknown *pSurface);
+
+ HRESULT (STDMETHODCALLTYPE *UpdateVideo)(
+ IMFCapturePreviewSink *This,
+ const MFVideoNormalizedRect *pSrc,
+ const RECT *pDst,
+ const COLORREF *pBorderClr);
+
+ HRESULT (STDMETHODCALLTYPE *SetSampleCallback)(
+ IMFCapturePreviewSink *This,
+ DWORD dwStreamSinkIndex,
+ IMFCaptureEngineOnSampleCallback *pCallback);
+
+ HRESULT (STDMETHODCALLTYPE *GetMirrorState)(
+ IMFCapturePreviewSink *This,
+ WINBOOL *pfMirrorState);
+
+ HRESULT (STDMETHODCALLTYPE *SetMirrorState)(
+ IMFCapturePreviewSink *This,
+ WINBOOL fMirrorState);
+
+ HRESULT (STDMETHODCALLTYPE *GetRotation)(
+ IMFCapturePreviewSink *This,
+ DWORD dwStreamIndex,
+ DWORD *pdwRotationValue);
+
+ HRESULT (STDMETHODCALLTYPE *SetRotation)(
+ IMFCapturePreviewSink *This,
+ DWORD dwStreamIndex,
+ DWORD dwRotationValue);
+
+ HRESULT (STDMETHODCALLTYPE *SetCustomSink)(
+ IMFCapturePreviewSink *This,
+ IMFMediaSink *pMediaSink);
+
+ END_INTERFACE
+} IMFCapturePreviewSinkVtbl;
+
+interface IMFCapturePreviewSink {
+ CONST_VTBL IMFCapturePreviewSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCapturePreviewSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCapturePreviewSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCapturePreviewSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureSink methods ***/
+#define IMFCapturePreviewSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
+#define IMFCapturePreviewSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
+#define IMFCapturePreviewSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
+#define IMFCapturePreviewSink_Prepare(This) (This)->lpVtbl->Prepare(This)
+#define IMFCapturePreviewSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
+/*** IMFCapturePreviewSink methods ***/
+#define IMFCapturePreviewSink_SetRenderHandle(This,handle) (This)->lpVtbl->SetRenderHandle(This,handle)
+#define IMFCapturePreviewSink_SetRenderSurface(This,pSurface) (This)->lpVtbl->SetRenderSurface(This,pSurface)
+#define IMFCapturePreviewSink_UpdateVideo(This,pSrc,pDst,pBorderClr) (This)->lpVtbl->UpdateVideo(This,pSrc,pDst,pBorderClr)
+#define IMFCapturePreviewSink_SetSampleCallback(This,dwStreamSinkIndex,pCallback) (This)->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback)
+#define IMFCapturePreviewSink_GetMirrorState(This,pfMirrorState) (This)->lpVtbl->GetMirrorState(This,pfMirrorState)
+#define IMFCapturePreviewSink_SetMirrorState(This,fMirrorState) (This)->lpVtbl->SetMirrorState(This,fMirrorState)
+#define IMFCapturePreviewSink_GetRotation(This,dwStreamIndex,pdwRotationValue) (This)->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue)
+#define IMFCapturePreviewSink_SetRotation(This,dwStreamIndex,dwRotationValue) (This)->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue)
+#define IMFCapturePreviewSink_SetCustomSink(This,pMediaSink) (This)->lpVtbl->SetCustomSink(This,pMediaSink)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCapturePreviewSink_QueryInterface(IMFCapturePreviewSink* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCapturePreviewSink_AddRef(IMFCapturePreviewSink* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCapturePreviewSink_Release(IMFCapturePreviewSink* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureSink methods ***/
+static FORCEINLINE HRESULT IMFCapturePreviewSink_GetOutputMediaType(IMFCapturePreviewSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_GetService(IMFCapturePreviewSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
+ return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_AddStream(IMFCapturePreviewSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
+ return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_Prepare(IMFCapturePreviewSink* This) {
+ return This->lpVtbl->Prepare(This);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_RemoveAllStreams(IMFCapturePreviewSink* This) {
+ return This->lpVtbl->RemoveAllStreams(This);
+}
+/*** IMFCapturePreviewSink methods ***/
+static FORCEINLINE HRESULT IMFCapturePreviewSink_SetRenderHandle(IMFCapturePreviewSink* This,HANDLE handle) {
+ return This->lpVtbl->SetRenderHandle(This,handle);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_SetRenderSurface(IMFCapturePreviewSink* This,IUnknown *pSurface) {
+ return This->lpVtbl->SetRenderSurface(This,pSurface);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_UpdateVideo(IMFCapturePreviewSink* This,const MFVideoNormalizedRect *pSrc,const RECT *pDst,const COLORREF *pBorderClr) {
+ return This->lpVtbl->UpdateVideo(This,pSrc,pDst,pBorderClr);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_SetSampleCallback(IMFCapturePreviewSink* This,DWORD dwStreamSinkIndex,IMFCaptureEngineOnSampleCallback *pCallback) {
+ return This->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_GetMirrorState(IMFCapturePreviewSink* This,WINBOOL *pfMirrorState) {
+ return This->lpVtbl->GetMirrorState(This,pfMirrorState);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_SetMirrorState(IMFCapturePreviewSink* This,WINBOOL fMirrorState) {
+ return This->lpVtbl->SetMirrorState(This,fMirrorState);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_GetRotation(IMFCapturePreviewSink* This,DWORD dwStreamIndex,DWORD *pdwRotationValue) {
+ return This->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_SetRotation(IMFCapturePreviewSink* This,DWORD dwStreamIndex,DWORD dwRotationValue) {
+ return This->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue);
+}
+static FORCEINLINE HRESULT IMFCapturePreviewSink_SetCustomSink(IMFCapturePreviewSink* This,IMFMediaSink *pMediaSink) {
+ return This->lpVtbl->SetCustomSink(This,pMediaSink);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCapturePreviewSink_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCapturePhotoSink interface
+ */
+#ifndef __IMFCapturePhotoSink_INTERFACE_DEFINED__
+#define __IMFCapturePhotoSink_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCapturePhotoSink, 0xd2d43cc8, 0x48bb, 0x4aa7, 0x95,0xdb, 0x10,0xc0,0x69,0x77,0xe7,0x77);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d2d43cc8-48bb-4aa7-95db-10c06977e777")
+IMFCapturePhotoSink : public IMFCaptureSink
+{
+ virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
+ LPCWSTR fileName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSampleCallback(
+ IMFCaptureEngineOnSampleCallback *pCallback) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetOutputByteStream(
+ IMFByteStream *pByteStream) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCapturePhotoSink, 0xd2d43cc8, 0x48bb, 0x4aa7, 0x95,0xdb, 0x10,0xc0,0x69,0x77,0xe7,0x77)
+#endif
+#else
+typedef struct IMFCapturePhotoSinkVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCapturePhotoSink *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCapturePhotoSink *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCapturePhotoSink *This);
+
+ /*** IMFCaptureSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
+ IMFCapturePhotoSink *This,
+ DWORD dwSinkStreamIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IMFCapturePhotoSink *This,
+ DWORD dwSinkStreamIndex,
+ REFGUID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *AddStream)(
+ IMFCapturePhotoSink *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pAttributes,
+ DWORD *pdwSinkStreamIndex);
+
+ HRESULT (STDMETHODCALLTYPE *Prepare)(
+ IMFCapturePhotoSink *This);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
+ IMFCapturePhotoSink *This);
+
+ /*** IMFCapturePhotoSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetOutputFileName)(
+ IMFCapturePhotoSink *This,
+ LPCWSTR fileName);
+
+ HRESULT (STDMETHODCALLTYPE *SetSampleCallback)(
+ IMFCapturePhotoSink *This,
+ IMFCaptureEngineOnSampleCallback *pCallback);
+
+ HRESULT (STDMETHODCALLTYPE *SetOutputByteStream)(
+ IMFCapturePhotoSink *This,
+ IMFByteStream *pByteStream);
+
+ END_INTERFACE
+} IMFCapturePhotoSinkVtbl;
+
+interface IMFCapturePhotoSink {
+ CONST_VTBL IMFCapturePhotoSinkVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCapturePhotoSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCapturePhotoSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCapturePhotoSink_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureSink methods ***/
+#define IMFCapturePhotoSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
+#define IMFCapturePhotoSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
+#define IMFCapturePhotoSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
+#define IMFCapturePhotoSink_Prepare(This) (This)->lpVtbl->Prepare(This)
+#define IMFCapturePhotoSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
+/*** IMFCapturePhotoSink methods ***/
+#define IMFCapturePhotoSink_SetOutputFileName(This,fileName) (This)->lpVtbl->SetOutputFileName(This,fileName)
+#define IMFCapturePhotoSink_SetSampleCallback(This,pCallback) (This)->lpVtbl->SetSampleCallback(This,pCallback)
+#define IMFCapturePhotoSink_SetOutputByteStream(This,pByteStream) (This)->lpVtbl->SetOutputByteStream(This,pByteStream)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCapturePhotoSink_QueryInterface(IMFCapturePhotoSink* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCapturePhotoSink_AddRef(IMFCapturePhotoSink* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCapturePhotoSink_Release(IMFCapturePhotoSink* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureSink methods ***/
+static FORCEINLINE HRESULT IMFCapturePhotoSink_GetOutputMediaType(IMFCapturePhotoSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCapturePhotoSink_GetService(IMFCapturePhotoSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
+ return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
+}
+static FORCEINLINE HRESULT IMFCapturePhotoSink_AddStream(IMFCapturePhotoSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
+ return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
+}
+static FORCEINLINE HRESULT IMFCapturePhotoSink_Prepare(IMFCapturePhotoSink* This) {
+ return This->lpVtbl->Prepare(This);
+}
+static FORCEINLINE HRESULT IMFCapturePhotoSink_RemoveAllStreams(IMFCapturePhotoSink* This) {
+ return This->lpVtbl->RemoveAllStreams(This);
+}
+/*** IMFCapturePhotoSink methods ***/
+static FORCEINLINE HRESULT IMFCapturePhotoSink_SetOutputFileName(IMFCapturePhotoSink* This,LPCWSTR fileName) {
+ return This->lpVtbl->SetOutputFileName(This,fileName);
+}
+static FORCEINLINE HRESULT IMFCapturePhotoSink_SetSampleCallback(IMFCapturePhotoSink* This,IMFCaptureEngineOnSampleCallback *pCallback) {
+ return This->lpVtbl->SetSampleCallback(This,pCallback);
+}
+static FORCEINLINE HRESULT IMFCapturePhotoSink_SetOutputByteStream(IMFCapturePhotoSink* This,IMFByteStream *pByteStream) {
+ return This->lpVtbl->SetOutputByteStream(This,pByteStream);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCapturePhotoSink_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCaptureSource interface
+ */
+#ifndef __IMFCaptureSource_INTERFACE_DEFINED__
+#define __IMFCaptureSource_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureSource, 0x439a42a8, 0x0d2c, 0x4505, 0xbe,0x83, 0xf7,0x9b,0x2a,0x05,0xd5,0xc4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("439a42a8-0d2c-4505-be83-f79b2a05d5c4")
+IMFCaptureSource : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetCaptureDeviceSource(
+ MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
+ IMFMediaSource **ppMediaSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCaptureDeviceActivate(
+ MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
+ IMFActivate **ppActivate) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetService(
+ REFIID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddEffect(
+ DWORD dwSourceStreamIndex,
+ IUnknown *pUnknown) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveEffect(
+ DWORD dwSourceStreamIndex,
+ IUnknown *pUnknown) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveAllEffects(
+ DWORD dwSourceStreamIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAvailableDeviceMediaType(
+ DWORD dwSourceStreamIndex,
+ DWORD dwMediaTypeIndex,
+ IMFMediaType **ppMediaType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCurrentDeviceMediaType(
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentDeviceMediaType(
+ DWORD dwSourceStreamIndex,
+ IMFMediaType **ppMediaType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeviceStreamCount(
+ DWORD *pdwStreamCount) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeviceStreamCategory(
+ DWORD dwSourceStreamIndex,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY *pStreamCategory) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMirrorState(
+ DWORD dwStreamIndex,
+ WINBOOL *pfMirrorState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMirrorState(
+ DWORD dwStreamIndex,
+ WINBOOL fMirrorState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStreamIndexFromFriendlyName(
+ UINT32 uifriendlyName,
+ DWORD *pdwActualStreamIndex) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureSource, 0x439a42a8, 0x0d2c, 0x4505, 0xbe,0x83, 0xf7,0x9b,0x2a,0x05,0xd5,0xc4)
+#endif
+#else
+typedef struct IMFCaptureSourceVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureSource *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureSource *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureSource *This);
+
+ /*** IMFCaptureSource methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetCaptureDeviceSource)(
+ IMFCaptureSource *This,
+ MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
+ IMFMediaSource **ppMediaSource);
+
+ HRESULT (STDMETHODCALLTYPE *GetCaptureDeviceActivate)(
+ IMFCaptureSource *This,
+ MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
+ IMFActivate **ppActivate);
+
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IMFCaptureSource *This,
+ REFIID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *AddEffect)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex,
+ IUnknown *pUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveEffect)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex,
+ IUnknown *pUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveAllEffects)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex);
+
+ HRESULT (STDMETHODCALLTYPE *GetAvailableDeviceMediaType)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex,
+ DWORD dwMediaTypeIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *SetCurrentDeviceMediaType)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetCurrentDeviceMediaType)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetDeviceStreamCount)(
+ IMFCaptureSource *This,
+ DWORD *pdwStreamCount);
+
+ HRESULT (STDMETHODCALLTYPE *GetDeviceStreamCategory)(
+ IMFCaptureSource *This,
+ DWORD dwSourceStreamIndex,
+ MF_CAPTURE_ENGINE_STREAM_CATEGORY *pStreamCategory);
+
+ HRESULT (STDMETHODCALLTYPE *GetMirrorState)(
+ IMFCaptureSource *This,
+ DWORD dwStreamIndex,
+ WINBOOL *pfMirrorState);
+
+ HRESULT (STDMETHODCALLTYPE *SetMirrorState)(
+ IMFCaptureSource *This,
+ DWORD dwStreamIndex,
+ WINBOOL fMirrorState);
+
+ HRESULT (STDMETHODCALLTYPE *GetStreamIndexFromFriendlyName)(
+ IMFCaptureSource *This,
+ UINT32 uifriendlyName,
+ DWORD *pdwActualStreamIndex);
+
+ END_INTERFACE
+} IMFCaptureSourceVtbl;
+
+interface IMFCaptureSource {
+ CONST_VTBL IMFCaptureSourceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureSource_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureSource_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureSource methods ***/
+#define IMFCaptureSource_GetCaptureDeviceSource(This,mfCaptureEngineDeviceType,ppMediaSource) (This)->lpVtbl->GetCaptureDeviceSource(This,mfCaptureEngineDeviceType,ppMediaSource)
+#define IMFCaptureSource_GetCaptureDeviceActivate(This,mfCaptureEngineDeviceType,ppActivate) (This)->lpVtbl->GetCaptureDeviceActivate(This,mfCaptureEngineDeviceType,ppActivate)
+#define IMFCaptureSource_GetService(This,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,rguidService,riid,ppUnknown)
+#define IMFCaptureSource_AddEffect(This,dwSourceStreamIndex,pUnknown) (This)->lpVtbl->AddEffect(This,dwSourceStreamIndex,pUnknown)
+#define IMFCaptureSource_RemoveEffect(This,dwSourceStreamIndex,pUnknown) (This)->lpVtbl->RemoveEffect(This,dwSourceStreamIndex,pUnknown)
+#define IMFCaptureSource_RemoveAllEffects(This,dwSourceStreamIndex) (This)->lpVtbl->RemoveAllEffects(This,dwSourceStreamIndex)
+#define IMFCaptureSource_GetAvailableDeviceMediaType(This,dwSourceStreamIndex,dwMediaTypeIndex,ppMediaType) (This)->lpVtbl->GetAvailableDeviceMediaType(This,dwSourceStreamIndex,dwMediaTypeIndex,ppMediaType)
+#define IMFCaptureSource_SetCurrentDeviceMediaType(This,dwSourceStreamIndex,pMediaType) (This)->lpVtbl->SetCurrentDeviceMediaType(This,dwSourceStreamIndex,pMediaType)
+#define IMFCaptureSource_GetCurrentDeviceMediaType(This,dwSourceStreamIndex,ppMediaType) (This)->lpVtbl->GetCurrentDeviceMediaType(This,dwSourceStreamIndex,ppMediaType)
+#define IMFCaptureSource_GetDeviceStreamCount(This,pdwStreamCount) (This)->lpVtbl->GetDeviceStreamCount(This,pdwStreamCount)
+#define IMFCaptureSource_GetDeviceStreamCategory(This,dwSourceStreamIndex,pStreamCategory) (This)->lpVtbl->GetDeviceStreamCategory(This,dwSourceStreamIndex,pStreamCategory)
+#define IMFCaptureSource_GetMirrorState(This,dwStreamIndex,pfMirrorState) (This)->lpVtbl->GetMirrorState(This,dwStreamIndex,pfMirrorState)
+#define IMFCaptureSource_SetMirrorState(This,dwStreamIndex,fMirrorState) (This)->lpVtbl->SetMirrorState(This,dwStreamIndex,fMirrorState)
+#define IMFCaptureSource_GetStreamIndexFromFriendlyName(This,uifriendlyName,pdwActualStreamIndex) (This)->lpVtbl->GetStreamIndexFromFriendlyName(This,uifriendlyName,pdwActualStreamIndex)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureSource_QueryInterface(IMFCaptureSource* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureSource_AddRef(IMFCaptureSource* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureSource_Release(IMFCaptureSource* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureSource methods ***/
+static FORCEINLINE HRESULT IMFCaptureSource_GetCaptureDeviceSource(IMFCaptureSource* This,MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,IMFMediaSource **ppMediaSource) {
+ return This->lpVtbl->GetCaptureDeviceSource(This,mfCaptureEngineDeviceType,ppMediaSource);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetCaptureDeviceActivate(IMFCaptureSource* This,MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,IMFActivate **ppActivate) {
+ return This->lpVtbl->GetCaptureDeviceActivate(This,mfCaptureEngineDeviceType,ppActivate);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetService(IMFCaptureSource* This,REFIID rguidService,REFIID riid,IUnknown **ppUnknown) {
+ return This->lpVtbl->GetService(This,rguidService,riid,ppUnknown);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_AddEffect(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IUnknown *pUnknown) {
+ return This->lpVtbl->AddEffect(This,dwSourceStreamIndex,pUnknown);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_RemoveEffect(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IUnknown *pUnknown) {
+ return This->lpVtbl->RemoveEffect(This,dwSourceStreamIndex,pUnknown);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_RemoveAllEffects(IMFCaptureSource* This,DWORD dwSourceStreamIndex) {
+ return This->lpVtbl->RemoveAllEffects(This,dwSourceStreamIndex);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetAvailableDeviceMediaType(IMFCaptureSource* This,DWORD dwSourceStreamIndex,DWORD dwMediaTypeIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetAvailableDeviceMediaType(This,dwSourceStreamIndex,dwMediaTypeIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_SetCurrentDeviceMediaType(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType) {
+ return This->lpVtbl->SetCurrentDeviceMediaType(This,dwSourceStreamIndex,pMediaType);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetCurrentDeviceMediaType(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetCurrentDeviceMediaType(This,dwSourceStreamIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetDeviceStreamCount(IMFCaptureSource* This,DWORD *pdwStreamCount) {
+ return This->lpVtbl->GetDeviceStreamCount(This,pdwStreamCount);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetDeviceStreamCategory(IMFCaptureSource* This,DWORD dwSourceStreamIndex,MF_CAPTURE_ENGINE_STREAM_CATEGORY *pStreamCategory) {
+ return This->lpVtbl->GetDeviceStreamCategory(This,dwSourceStreamIndex,pStreamCategory);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetMirrorState(IMFCaptureSource* This,DWORD dwStreamIndex,WINBOOL *pfMirrorState) {
+ return This->lpVtbl->GetMirrorState(This,dwStreamIndex,pfMirrorState);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_SetMirrorState(IMFCaptureSource* This,DWORD dwStreamIndex,WINBOOL fMirrorState) {
+ return This->lpVtbl->SetMirrorState(This,dwStreamIndex,fMirrorState);
+}
+static FORCEINLINE HRESULT IMFCaptureSource_GetStreamIndexFromFriendlyName(IMFCaptureSource* This,UINT32 uifriendlyName,DWORD *pdwActualStreamIndex) {
+ return This->lpVtbl->GetStreamIndexFromFriendlyName(This,uifriendlyName,pdwActualStreamIndex);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureSource_INTERFACE_DEFINED__ */
+
+EXTERN_GUID(CLSID_MFCaptureEngine, 0xefce38d3, 0x8914, 0x4674,0xa7, 0xdf, 0xae, 0x1b, 0x3d, 0x65, 0x4b, 0x8a);
+/*****************************************************************************
+ * IMFCaptureEngine interface
+ */
+#ifndef __IMFCaptureEngine_INTERFACE_DEFINED__
+#define __IMFCaptureEngine_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureEngine, 0xa6bba433, 0x176b, 0x48b2, 0xb3,0x75, 0x53,0xaa,0x03,0x47,0x32,0x07);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a6bba433-176b-48b2-b375-53aa03473207")
+IMFCaptureEngine : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Initialize(
+ IMFCaptureEngineOnEventCallback *pEventCallback,
+ IMFAttributes *pAttributes,
+ IUnknown *pAudioSource,
+ IUnknown *pVideoSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StartPreview(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StopPreview(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StartRecord(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StopRecord(
+ WINBOOL bFinalize,
+ WINBOOL bFlushUnprocessedSamples) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TakePhoto(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSink(
+ MF_CAPTURE_ENGINE_SINK_TYPE mfCaptureEngineSinkType,
+ IMFCaptureSink **ppSink) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSource(
+ IMFCaptureSource **ppSource) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureEngine, 0xa6bba433, 0x176b, 0x48b2, 0xb3,0x75, 0x53,0xaa,0x03,0x47,0x32,0x07)
+#endif
+#else
+typedef struct IMFCaptureEngineVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureEngine *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureEngine *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureEngine *This);
+
+ /*** IMFCaptureEngine methods ***/
+ HRESULT (STDMETHODCALLTYPE *Initialize)(
+ IMFCaptureEngine *This,
+ IMFCaptureEngineOnEventCallback *pEventCallback,
+ IMFAttributes *pAttributes,
+ IUnknown *pAudioSource,
+ IUnknown *pVideoSource);
+
+ HRESULT (STDMETHODCALLTYPE *StartPreview)(
+ IMFCaptureEngine *This);
+
+ HRESULT (STDMETHODCALLTYPE *StopPreview)(
+ IMFCaptureEngine *This);
+
+ HRESULT (STDMETHODCALLTYPE *StartRecord)(
+ IMFCaptureEngine *This);
+
+ HRESULT (STDMETHODCALLTYPE *StopRecord)(
+ IMFCaptureEngine *This,
+ WINBOOL bFinalize,
+ WINBOOL bFlushUnprocessedSamples);
+
+ HRESULT (STDMETHODCALLTYPE *TakePhoto)(
+ IMFCaptureEngine *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetSink)(
+ IMFCaptureEngine *This,
+ MF_CAPTURE_ENGINE_SINK_TYPE mfCaptureEngineSinkType,
+ IMFCaptureSink **ppSink);
+
+ HRESULT (STDMETHODCALLTYPE *GetSource)(
+ IMFCaptureEngine *This,
+ IMFCaptureSource **ppSource);
+
+ END_INTERFACE
+} IMFCaptureEngineVtbl;
+
+interface IMFCaptureEngine {
+ CONST_VTBL IMFCaptureEngineVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureEngine_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureEngine_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureEngine_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureEngine methods ***/
+#define IMFCaptureEngine_Initialize(This,pEventCallback,pAttributes,pAudioSource,pVideoSource) (This)->lpVtbl->Initialize(This,pEventCallback,pAttributes,pAudioSource,pVideoSource)
+#define IMFCaptureEngine_StartPreview(This) (This)->lpVtbl->StartPreview(This)
+#define IMFCaptureEngine_StopPreview(This) (This)->lpVtbl->StopPreview(This)
+#define IMFCaptureEngine_StartRecord(This) (This)->lpVtbl->StartRecord(This)
+#define IMFCaptureEngine_StopRecord(This,bFinalize,bFlushUnprocessedSamples) (This)->lpVtbl->StopRecord(This,bFinalize,bFlushUnprocessedSamples)
+#define IMFCaptureEngine_TakePhoto(This) (This)->lpVtbl->TakePhoto(This)
+#define IMFCaptureEngine_GetSink(This,mfCaptureEngineSinkType,ppSink) (This)->lpVtbl->GetSink(This,mfCaptureEngineSinkType,ppSink)
+#define IMFCaptureEngine_GetSource(This,ppSource) (This)->lpVtbl->GetSource(This,ppSource)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngine_QueryInterface(IMFCaptureEngine* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureEngine_AddRef(IMFCaptureEngine* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureEngine_Release(IMFCaptureEngine* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureEngine methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngine_Initialize(IMFCaptureEngine* This,IMFCaptureEngineOnEventCallback *pEventCallback,IMFAttributes *pAttributes,IUnknown *pAudioSource,IUnknown *pVideoSource) {
+ return This->lpVtbl->Initialize(This,pEventCallback,pAttributes,pAudioSource,pVideoSource);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_StartPreview(IMFCaptureEngine* This) {
+ return This->lpVtbl->StartPreview(This);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_StopPreview(IMFCaptureEngine* This) {
+ return This->lpVtbl->StopPreview(This);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_StartRecord(IMFCaptureEngine* This) {
+ return This->lpVtbl->StartRecord(This);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_StopRecord(IMFCaptureEngine* This,WINBOOL bFinalize,WINBOOL bFlushUnprocessedSamples) {
+ return This->lpVtbl->StopRecord(This,bFinalize,bFlushUnprocessedSamples);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_TakePhoto(IMFCaptureEngine* This) {
+ return This->lpVtbl->TakePhoto(This);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_GetSink(IMFCaptureEngine* This,MF_CAPTURE_ENGINE_SINK_TYPE mfCaptureEngineSinkType,IMFCaptureSink **ppSink) {
+ return This->lpVtbl->GetSink(This,mfCaptureEngineSinkType,ppSink);
+}
+static FORCEINLINE HRESULT IMFCaptureEngine_GetSource(IMFCaptureEngine* This,IMFCaptureSource **ppSource) {
+ return This->lpVtbl->GetSource(This,ppSource);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureEngine_INTERFACE_DEFINED__ */
+
+EXTERN_GUID(CLSID_MFCaptureEngineClassFactory, 0xefce38d3, 0x8914, 0x4674,0xa7, 0xdf, 0xae, 0x1b, 0x3d, 0x65, 0x4b, 0x8a);
+/*****************************************************************************
+ * IMFCaptureEngineClassFactory interface
+ */
+#ifndef __IMFCaptureEngineClassFactory_INTERFACE_DEFINED__
+#define __IMFCaptureEngineClassFactory_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureEngineClassFactory, 0x8f02d140, 0x56fc, 0x4302, 0xa7,0x05, 0x3a,0x97,0xc7,0x8b,0xe7,0x79);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8f02d140-56fc-4302-a705-3a97c78be779")
+IMFCaptureEngineClassFactory : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE CreateInstance(
+ REFCLSID clsid,
+ REFIID riid,
+ LPVOID *ppvObject) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureEngineClassFactory, 0x8f02d140, 0x56fc, 0x4302, 0xa7,0x05, 0x3a,0x97,0xc7,0x8b,0xe7,0x79)
+#endif
+#else
+typedef struct IMFCaptureEngineClassFactoryVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureEngineClassFactory *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureEngineClassFactory *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureEngineClassFactory *This);
+
+ /*** IMFCaptureEngineClassFactory methods ***/
+ HRESULT (STDMETHODCALLTYPE *CreateInstance)(
+ IMFCaptureEngineClassFactory *This,
+ REFCLSID clsid,
+ REFIID riid,
+ LPVOID *ppvObject);
+
+ END_INTERFACE
+} IMFCaptureEngineClassFactoryVtbl;
+
+interface IMFCaptureEngineClassFactory {
+ CONST_VTBL IMFCaptureEngineClassFactoryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureEngineClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureEngineClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureEngineClassFactory_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureEngineClassFactory methods ***/
+#define IMFCaptureEngineClassFactory_CreateInstance(This,clsid,riid,ppvObject) (This)->lpVtbl->CreateInstance(This,clsid,riid,ppvObject)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineClassFactory_QueryInterface(IMFCaptureEngineClassFactory* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureEngineClassFactory_AddRef(IMFCaptureEngineClassFactory* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureEngineClassFactory_Release(IMFCaptureEngineClassFactory* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureEngineClassFactory methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineClassFactory_CreateInstance(IMFCaptureEngineClassFactory* This,REFCLSID clsid,REFIID riid,LPVOID *ppvObject) {
+ return This->lpVtbl->CreateInstance(This,clsid,riid,ppvObject);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureEngineClassFactory_INTERFACE_DEFINED__ */
+
+EXTERN_GUID(MFSampleExtension_DeviceReferenceSystemTime, 0x6523775a, 0xba2d, 0x405f,0xb2, 0xc5, 0x01, 0xff, 0x88, 0xe2, 0xe8, 0xf6);
+/*****************************************************************************
+ * IMFCaptureEngineOnSampleCallback2 interface
+ */
+#ifndef __IMFCaptureEngineOnSampleCallback2_INTERFACE_DEFINED__
+#define __IMFCaptureEngineOnSampleCallback2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureEngineOnSampleCallback2, 0xe37ceed7, 0x340f, 0x4514, 0x9f,0x4d, 0x9c,0x2a,0xe0,0x26,0x10,0x0b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e37ceed7-340f-4514-9f4d-9c2ae026100b")
+IMFCaptureEngineOnSampleCallback2 : public IMFCaptureEngineOnSampleCallback
+{
+ virtual HRESULT STDMETHODCALLTYPE OnSynchronizedEvent(
+ IMFMediaEvent *pEvent) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureEngineOnSampleCallback2, 0xe37ceed7, 0x340f, 0x4514, 0x9f,0x4d, 0x9c,0x2a,0xe0,0x26,0x10,0x0b)
+#endif
+#else
+typedef struct IMFCaptureEngineOnSampleCallback2Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureEngineOnSampleCallback2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureEngineOnSampleCallback2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureEngineOnSampleCallback2 *This);
+
+ /*** IMFCaptureEngineOnSampleCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnSample)(
+ IMFCaptureEngineOnSampleCallback2 *This,
+ IMFSample *pSample);
+
+ /*** IMFCaptureEngineOnSampleCallback2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnSynchronizedEvent)(
+ IMFCaptureEngineOnSampleCallback2 *This,
+ IMFMediaEvent *pEvent);
+
+ END_INTERFACE
+} IMFCaptureEngineOnSampleCallback2Vtbl;
+
+interface IMFCaptureEngineOnSampleCallback2 {
+ CONST_VTBL IMFCaptureEngineOnSampleCallback2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureEngineOnSampleCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureEngineOnSampleCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureEngineOnSampleCallback2_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureEngineOnSampleCallback methods ***/
+#define IMFCaptureEngineOnSampleCallback2_OnSample(This,pSample) (This)->lpVtbl->OnSample(This,pSample)
+/*** IMFCaptureEngineOnSampleCallback2 methods ***/
+#define IMFCaptureEngineOnSampleCallback2_OnSynchronizedEvent(This,pEvent) (This)->lpVtbl->OnSynchronizedEvent(This,pEvent)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnSampleCallback2_QueryInterface(IMFCaptureEngineOnSampleCallback2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureEngineOnSampleCallback2_AddRef(IMFCaptureEngineOnSampleCallback2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureEngineOnSampleCallback2_Release(IMFCaptureEngineOnSampleCallback2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureEngineOnSampleCallback methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnSampleCallback2_OnSample(IMFCaptureEngineOnSampleCallback2* This,IMFSample *pSample) {
+ return This->lpVtbl->OnSample(This,pSample);
+}
+/*** IMFCaptureEngineOnSampleCallback2 methods ***/
+static FORCEINLINE HRESULT IMFCaptureEngineOnSampleCallback2_OnSynchronizedEvent(IMFCaptureEngineOnSampleCallback2* This,IMFMediaEvent *pEvent) {
+ return This->lpVtbl->OnSynchronizedEvent(This,pEvent);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureEngineOnSampleCallback2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFCaptureSink2 interface
+ */
+#ifndef __IMFCaptureSink2_INTERFACE_DEFINED__
+#define __IMFCaptureSink2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFCaptureSink2, 0xf9e4219e, 0x6197, 0x4b5e, 0xb8,0x88, 0xbe,0xe3,0x10,0xab,0x2c,0x59);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f9e4219e-6197-4b5e-b888-bee310ab2c59")
+IMFCaptureSink2 : public IMFCaptureSink
+{
+ virtual HRESULT STDMETHODCALLTYPE SetOutputMediaType(
+ DWORD dwStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pEncodingAttributes) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFCaptureSink2, 0xf9e4219e, 0x6197, 0x4b5e, 0xb8,0x88, 0xbe,0xe3,0x10,0xab,0x2c,0x59)
+#endif
+#else
+typedef struct IMFCaptureSink2Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFCaptureSink2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFCaptureSink2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFCaptureSink2 *This);
+
+ /*** IMFCaptureSink methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
+ IMFCaptureSink2 *This,
+ DWORD dwSinkStreamIndex,
+ IMFMediaType **ppMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IMFCaptureSink2 *This,
+ DWORD dwSinkStreamIndex,
+ REFGUID rguidService,
+ REFIID riid,
+ IUnknown **ppUnknown);
+
+ HRESULT (STDMETHODCALLTYPE *AddStream)(
+ IMFCaptureSink2 *This,
+ DWORD dwSourceStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pAttributes,
+ DWORD *pdwSinkStreamIndex);
+
+ HRESULT (STDMETHODCALLTYPE *Prepare)(
+ IMFCaptureSink2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
+ IMFCaptureSink2 *This);
+
+ /*** IMFCaptureSink2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetOutputMediaType)(
+ IMFCaptureSink2 *This,
+ DWORD dwStreamIndex,
+ IMFMediaType *pMediaType,
+ IMFAttributes *pEncodingAttributes);
+
+ END_INTERFACE
+} IMFCaptureSink2Vtbl;
+
+interface IMFCaptureSink2 {
+ CONST_VTBL IMFCaptureSink2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFCaptureSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFCaptureSink2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFCaptureSink2_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFCaptureSink methods ***/
+#define IMFCaptureSink2_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
+#define IMFCaptureSink2_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
+#define IMFCaptureSink2_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
+#define IMFCaptureSink2_Prepare(This) (This)->lpVtbl->Prepare(This)
+#define IMFCaptureSink2_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
+/*** IMFCaptureSink2 methods ***/
+#define IMFCaptureSink2_SetOutputMediaType(This,dwStreamIndex,pMediaType,pEncodingAttributes) (This)->lpVtbl->SetOutputMediaType(This,dwStreamIndex,pMediaType,pEncodingAttributes)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFCaptureSink2_QueryInterface(IMFCaptureSink2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFCaptureSink2_AddRef(IMFCaptureSink2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFCaptureSink2_Release(IMFCaptureSink2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFCaptureSink methods ***/
+static FORCEINLINE HRESULT IMFCaptureSink2_GetOutputMediaType(IMFCaptureSink2* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
+ return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
+}
+static FORCEINLINE HRESULT IMFCaptureSink2_GetService(IMFCaptureSink2* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
+ return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
+}
+static FORCEINLINE HRESULT IMFCaptureSink2_AddStream(IMFCaptureSink2* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
+ return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
+}
+static FORCEINLINE HRESULT IMFCaptureSink2_Prepare(IMFCaptureSink2* This) {
+ return This->lpVtbl->Prepare(This);
+}
+static FORCEINLINE HRESULT IMFCaptureSink2_RemoveAllStreams(IMFCaptureSink2* This) {
+ return This->lpVtbl->RemoveAllStreams(This);
+}
+/*** IMFCaptureSink2 methods ***/
+static FORCEINLINE HRESULT IMFCaptureSink2_SetOutputMediaType(IMFCaptureSink2* This,DWORD dwStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pEncodingAttributes) {
+ return This->lpVtbl->SetOutputMediaType(This,dwStreamIndex,pMediaType,pEncodingAttributes);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFCaptureSink2_INTERFACE_DEFINED__ */
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+#endif /* WINVER >= _WIN32_WINNT_WIN7 */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __mfcaptureengine_h__ */
diff --git a/lib/libc/include/any-windows-any/mfd3d12.h b/lib/libc/include/any-windows-any/mfd3d12.h
new file mode 100644
index 0000000000..231bf23dfa
--- /dev/null
+++ b/lib/libc/include/any-windows-any/mfd3d12.h
@@ -0,0 +1,275 @@
+/*** Autogenerated by WIDL 7.0 from include/mfd3d12.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __mfd3d12_h__
+#define __mfd3d12_h__
+
+/* Forward declarations */
+
+#ifndef __IMFD3D12SynchronizationObjectCommands_FWD_DEFINED__
+#define __IMFD3D12SynchronizationObjectCommands_FWD_DEFINED__
+typedef interface IMFD3D12SynchronizationObjectCommands IMFD3D12SynchronizationObjectCommands;
+#ifdef __cplusplus
+interface IMFD3D12SynchronizationObjectCommands;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFD3D12SynchronizationObject_FWD_DEFINED__
+#define __IMFD3D12SynchronizationObject_FWD_DEFINED__
+typedef interface IMFD3D12SynchronizationObject IMFD3D12SynchronizationObject;
+#ifdef __cplusplus
+interface IMFD3D12SynchronizationObject;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <mfidl.h>
+#include <d3d12.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+/*****************************************************************************
+ * IMFD3D12SynchronizationObjectCommands interface
+ */
+#ifndef __IMFD3D12SynchronizationObjectCommands_INTERFACE_DEFINED__
+#define __IMFD3D12SynchronizationObjectCommands_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFD3D12SynchronizationObjectCommands, 0x09d0f835, 0x92ff, 0x4e53, 0x8e,0xfa, 0x40,0xfa,0xa5,0x51,0xf2,0x33);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("09d0f835-92ff-4e53-8efa-40faa551f233")
+IMFD3D12SynchronizationObjectCommands : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE EnqueueResourceReady(
+ ID3D12CommandQueue *pProducerCommandQueue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnqueueResourceReadyWait(
+ ID3D12CommandQueue *pConsumerCommandQueue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SignalEventOnResourceReady(
+ HANDLE hEvent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnqueueResourceRelease(
+ ID3D12CommandQueue *pConsumerCommandQueue) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFD3D12SynchronizationObjectCommands, 0x09d0f835, 0x92ff, 0x4e53, 0x8e,0xfa, 0x40,0xfa,0xa5,0x51,0xf2,0x33)
+#endif
+#else
+typedef struct IMFD3D12SynchronizationObjectCommandsVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFD3D12SynchronizationObjectCommands *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFD3D12SynchronizationObjectCommands *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFD3D12SynchronizationObjectCommands *This);
+
+ /*** IMFD3D12SynchronizationObjectCommands methods ***/
+ HRESULT (STDMETHODCALLTYPE *EnqueueResourceReady)(
+ IMFD3D12SynchronizationObjectCommands *This,
+ ID3D12CommandQueue *pProducerCommandQueue);
+
+ HRESULT (STDMETHODCALLTYPE *EnqueueResourceReadyWait)(
+ IMFD3D12SynchronizationObjectCommands *This,
+ ID3D12CommandQueue *pConsumerCommandQueue);
+
+ HRESULT (STDMETHODCALLTYPE *SignalEventOnResourceReady)(
+ IMFD3D12SynchronizationObjectCommands *This,
+ HANDLE hEvent);
+
+ HRESULT (STDMETHODCALLTYPE *EnqueueResourceRelease)(
+ IMFD3D12SynchronizationObjectCommands *This,
+ ID3D12CommandQueue *pConsumerCommandQueue);
+
+ END_INTERFACE
+} IMFD3D12SynchronizationObjectCommandsVtbl;
+
+interface IMFD3D12SynchronizationObjectCommands {
+ CONST_VTBL IMFD3D12SynchronizationObjectCommandsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFD3D12SynchronizationObjectCommands_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFD3D12SynchronizationObjectCommands_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFD3D12SynchronizationObjectCommands_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFD3D12SynchronizationObjectCommands methods ***/
+#define IMFD3D12SynchronizationObjectCommands_EnqueueResourceReady(This,pProducerCommandQueue) (This)->lpVtbl->EnqueueResourceReady(This,pProducerCommandQueue)
+#define IMFD3D12SynchronizationObjectCommands_EnqueueResourceReadyWait(This,pConsumerCommandQueue) (This)->lpVtbl->EnqueueResourceReadyWait(This,pConsumerCommandQueue)
+#define IMFD3D12SynchronizationObjectCommands_SignalEventOnResourceReady(This,hEvent) (This)->lpVtbl->SignalEventOnResourceReady(This,hEvent)
+#define IMFD3D12SynchronizationObjectCommands_EnqueueResourceRelease(This,pConsumerCommandQueue) (This)->lpVtbl->EnqueueResourceRelease(This,pConsumerCommandQueue)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObjectCommands_QueryInterface(IMFD3D12SynchronizationObjectCommands* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFD3D12SynchronizationObjectCommands_AddRef(IMFD3D12SynchronizationObjectCommands* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFD3D12SynchronizationObjectCommands_Release(IMFD3D12SynchronizationObjectCommands* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFD3D12SynchronizationObjectCommands methods ***/
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObjectCommands_EnqueueResourceReady(IMFD3D12SynchronizationObjectCommands* This,ID3D12CommandQueue *pProducerCommandQueue) {
+ return This->lpVtbl->EnqueueResourceReady(This,pProducerCommandQueue);
+}
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObjectCommands_EnqueueResourceReadyWait(IMFD3D12SynchronizationObjectCommands* This,ID3D12CommandQueue *pConsumerCommandQueue) {
+ return This->lpVtbl->EnqueueResourceReadyWait(This,pConsumerCommandQueue);
+}
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObjectCommands_SignalEventOnResourceReady(IMFD3D12SynchronizationObjectCommands* This,HANDLE hEvent) {
+ return This->lpVtbl->SignalEventOnResourceReady(This,hEvent);
+}
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObjectCommands_EnqueueResourceRelease(IMFD3D12SynchronizationObjectCommands* This,ID3D12CommandQueue *pConsumerCommandQueue) {
+ return This->lpVtbl->EnqueueResourceRelease(This,pConsumerCommandQueue);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFD3D12SynchronizationObjectCommands_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFD3D12SynchronizationObject interface
+ */
+#ifndef __IMFD3D12SynchronizationObject_INTERFACE_DEFINED__
+#define __IMFD3D12SynchronizationObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFD3D12SynchronizationObject, 0x802302b0, 0x82de, 0x45e1, 0xb4,0x21, 0xf1,0x9e,0xe5,0xbd,0xaf,0x23);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("802302b0-82de-45e1-b421-f19ee5bdaf23")
+IMFD3D12SynchronizationObject : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SignalEventOnFinalResourceRelease(
+ HANDLE hEvent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFD3D12SynchronizationObject, 0x802302b0, 0x82de, 0x45e1, 0xb4,0x21, 0xf1,0x9e,0xe5,0xbd,0xaf,0x23)
+#endif
+#else
+typedef struct IMFD3D12SynchronizationObjectVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFD3D12SynchronizationObject *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFD3D12SynchronizationObject *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFD3D12SynchronizationObject *This);
+
+ /*** IMFD3D12SynchronizationObject methods ***/
+ HRESULT (STDMETHODCALLTYPE *SignalEventOnFinalResourceRelease)(
+ IMFD3D12SynchronizationObject *This,
+ HANDLE hEvent);
+
+ HRESULT (STDMETHODCALLTYPE *Reset)(
+ IMFD3D12SynchronizationObject *This);
+
+ END_INTERFACE
+} IMFD3D12SynchronizationObjectVtbl;
+
+interface IMFD3D12SynchronizationObject {
+ CONST_VTBL IMFD3D12SynchronizationObjectVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFD3D12SynchronizationObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFD3D12SynchronizationObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFD3D12SynchronizationObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFD3D12SynchronizationObject methods ***/
+#define IMFD3D12SynchronizationObject_SignalEventOnFinalResourceRelease(This,hEvent) (This)->lpVtbl->SignalEventOnFinalResourceRelease(This,hEvent)
+#define IMFD3D12SynchronizationObject_Reset(This) (This)->lpVtbl->Reset(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObject_QueryInterface(IMFD3D12SynchronizationObject* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFD3D12SynchronizationObject_AddRef(IMFD3D12SynchronizationObject* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFD3D12SynchronizationObject_Release(IMFD3D12SynchronizationObject* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFD3D12SynchronizationObject methods ***/
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObject_SignalEventOnFinalResourceRelease(IMFD3D12SynchronizationObject* This,HANDLE hEvent) {
+ return This->lpVtbl->SignalEventOnFinalResourceRelease(This,hEvent);
+}
+static FORCEINLINE HRESULT IMFD3D12SynchronizationObject_Reset(IMFD3D12SynchronizationObject* This) {
+ return This->lpVtbl->Reset(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFD3D12SynchronizationObject_INTERFACE_DEFINED__ */
+
+#if NTDDI_VERSION >= NTDDI_WIN10_CO
+HRESULT MFCreateD3D12SynchronizationObject(ID3D12Device *pDevice, REFIID riid, void **ppvSyncObject);
+#endif /* NTDDI_WIN10_CO */
+typedef enum MF_MT_D3D_RESOURCE_VERSION_ENUM {
+ MF_D3D11_RESOURCE = 0,
+ MF_D3D12_RESOURCE = 1
+} MF_MT_D3D_RESOURCE_VERSION_ENUM;
+EXTERN_GUID(MF_D3D12_SYNCHRONIZATION_OBJECT, 0x2a7c8d6a, 0x85a6, 0x494d, 0xa0, 0x46, 0x6, 0xea, 0x1a, 0x13, 0x8f, 0x4b);
+EXTERN_GUID(MF_MT_D3D_RESOURCE_VERSION, 0x174f1e85, 0xfe26, 0x453d, 0xb5, 0x2e, 0x5b, 0xdd, 0x4e, 0x55, 0xb9, 0x44);
+EXTERN_GUID(MF_MT_D3D12_CPU_READBACK, 0x28ee9fe3, 0xd481, 0x46a6, 0xb9, 0x8a, 0x7f, 0x69, 0xd5, 0x28, 0xe, 0x82);
+EXTERN_GUID(MF_MT_D3D12_TEXTURE_LAYOUT, 0x97c85caa, 0xbeb, 0x4ee1, 0x97, 0x15, 0xf2, 0x2f, 0xad, 0x8c, 0x10, 0xf5);
+EXTERN_GUID(MF_MT_D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET, 0xeeac2585, 0x3430, 0x498c, 0x84, 0xa2, 0x77, 0xb1, 0xbb, 0xa5, 0x70, 0xf6);
+EXTERN_GUID(MF_MT_D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL, 0xb1138dc3, 0x1d5, 0x4c14, 0x9b, 0xdc, 0xcd, 0xc9, 0x33, 0x6f, 0x55, 0xb9);
+EXTERN_GUID(MF_MT_D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, 0x82c85647, 0x5057, 0x4960, 0x95, 0x59, 0xf4, 0x5b, 0x8e, 0x27, 0x14, 0x27);
+EXTERN_GUID(MF_MT_D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE, 0xba06bfac, 0xffe3, 0x474a, 0xab, 0x55, 0x16, 0x1e, 0xe4, 0x41, 0x7a, 0x2e);
+EXTERN_GUID(MF_MT_D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER, 0xa6a1e439, 0x2f96, 0x4ab5, 0x98, 0xdc, 0xad, 0xf7, 0x49, 0x73, 0x50, 0x5d);
+EXTERN_GUID(MF_MT_D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS, 0xa4940b2, 0xcfd6, 0x4738, 0x9d, 0x2, 0x98, 0x11, 0x37, 0x34, 0x1, 0x5a);
+EXTERN_GUID(MF_SA_D3D12_HEAP_FLAGS, 0x496b3266, 0xd28f, 0x4f8c, 0x93, 0xa7, 0x4a, 0x59, 0x6b, 0x1a, 0x31, 0xa1);
+EXTERN_GUID(MF_SA_D3D12_HEAP_TYPE, 0x56f26a76, 0xbbc1, 0x4ce0, 0xbb, 0x11, 0xe2, 0x23, 0x68, 0xd8, 0x74, 0xed);
+EXTERN_GUID(MF_SA_D3D12_CLEAR_VALUE, 0x86ba9a39, 0x526, 0x495d, 0x9a, 0xb5, 0x54, 0xec, 0x9f, 0xad, 0x6f, 0xc3);
+#endif /* WINAPI_PARTITION_APP */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __mfd3d12_h__ */
diff --git a/lib/libc/include/any-windows-any/mfidl.h b/lib/libc/include/any-windows-any/mfidl.h
index 9e93075e12..0c8a84a15c 100644
--- a/lib/libc/include/any-windows-any/mfidl.h
+++ b/lib/libc/include/any-windows-any/mfidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mfidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mfidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -90,6 +90,14 @@ interface IMFMediaSource;
#endif /* __cplusplus */
#endif
+#ifndef __IMFMediaSourceEx_FWD_DEFINED__
+#define __IMFMediaSourceEx_FWD_DEFINED__
+typedef interface IMFMediaSourceEx IMFMediaSourceEx;
+#ifdef __cplusplus
+interface IMFMediaSourceEx;
+#endif /* __cplusplus */
+#endif
+
#ifndef __IMFByteStreamBuffering_FWD_DEFINED__
#define __IMFByteStreamBuffering_FWD_DEFINED__
typedef interface IMFByteStreamBuffering IMFByteStreamBuffering;
@@ -202,6 +210,22 @@ interface IMFSampleGrabberSinkCallback;
#endif /* __cplusplus */
#endif
+#ifndef __IMFShutdown_FWD_DEFINED__
+#define __IMFShutdown_FWD_DEFINED__
+typedef interface IMFShutdown IMFShutdown;
+#ifdef __cplusplus
+interface IMFShutdown;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFSimpleAudioVolume_FWD_DEFINED__
+#define __IMFSimpleAudioVolume_FWD_DEFINED__
+typedef interface IMFSimpleAudioVolume IMFSimpleAudioVolume;
+#ifdef __cplusplus
+interface IMFSimpleAudioVolume;
+#endif /* __cplusplus */
+#endif
+
#ifndef __IMFSourceResolver_FWD_DEFINED__
#define __IMFSourceResolver_FWD_DEFINED__
typedef interface IMFSourceResolver IMFSourceResolver;
@@ -218,6 +242,14 @@ interface IMFStreamSink;
#endif /* __cplusplus */
#endif
+#ifndef __IMFTimer_FWD_DEFINED__
+#define __IMFTimer_FWD_DEFINED__
+typedef interface IMFTimer IMFTimer;
+#ifdef __cplusplus
+interface IMFTimer;
+#endif /* __cplusplus */
+#endif
+
#ifndef __IMFTopoLoader_FWD_DEFINED__
#define __IMFTopoLoader_FWD_DEFINED__
typedef interface IMFTopoLoader IMFTopoLoader;
@@ -226,6 +258,78 @@ interface IMFTopoLoader;
#endif /* __cplusplus */
#endif
+#ifndef __IMFVideoSampleAllocator_FWD_DEFINED__
+#define __IMFVideoSampleAllocator_FWD_DEFINED__
+typedef interface IMFVideoSampleAllocator IMFVideoSampleAllocator;
+#ifdef __cplusplus
+interface IMFVideoSampleAllocator;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoSampleAllocatorNotify_FWD_DEFINED__
+#define __IMFVideoSampleAllocatorNotify_FWD_DEFINED__
+typedef interface IMFVideoSampleAllocatorNotify IMFVideoSampleAllocatorNotify;
+#ifdef __cplusplus
+interface IMFVideoSampleAllocatorNotify;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoSampleAllocatorNotifyEx_FWD_DEFINED__
+#define __IMFVideoSampleAllocatorNotifyEx_FWD_DEFINED__
+typedef interface IMFVideoSampleAllocatorNotifyEx IMFVideoSampleAllocatorNotifyEx;
+#ifdef __cplusplus
+interface IMFVideoSampleAllocatorNotifyEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoSampleAllocatorCallback_FWD_DEFINED__
+#define __IMFVideoSampleAllocatorCallback_FWD_DEFINED__
+typedef interface IMFVideoSampleAllocatorCallback IMFVideoSampleAllocatorCallback;
+#ifdef __cplusplus
+interface IMFVideoSampleAllocatorCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoSampleAllocatorEx_FWD_DEFINED__
+#define __IMFVideoSampleAllocatorEx_FWD_DEFINED__
+typedef interface IMFVideoSampleAllocatorEx IMFVideoSampleAllocatorEx;
+#ifdef __cplusplus
+interface IMFVideoSampleAllocatorEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoProcessorControl_FWD_DEFINED__
+#define __IMFVideoProcessorControl_FWD_DEFINED__
+typedef interface IMFVideoProcessorControl IMFVideoProcessorControl;
+#ifdef __cplusplus
+interface IMFVideoProcessorControl;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoProcessorControl2_FWD_DEFINED__
+#define __IMFVideoProcessorControl2_FWD_DEFINED__
+typedef interface IMFVideoProcessorControl2 IMFVideoProcessorControl2;
+#ifdef __cplusplus
+interface IMFVideoProcessorControl2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoProcessorControl3_FWD_DEFINED__
+#define __IMFVideoProcessorControl3_FWD_DEFINED__
+typedef interface IMFVideoProcessorControl3 IMFVideoProcessorControl3;
+#ifdef __cplusplus
+interface IMFVideoProcessorControl3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IMFVideoRendererEffectControl_FWD_DEFINED__
+#define __IMFVideoRendererEffectControl_FWD_DEFINED__
+typedef interface IMFVideoRendererEffectControl IMFVideoRendererEffectControl;
+#ifdef __cplusplus
+interface IMFVideoRendererEffectControl;
+#endif /* __cplusplus */
+#endif
+
/* Headers for imported files */
#include <mfobjects.h>
@@ -242,10 +346,11 @@ typedef enum MFSESSION_SETTOPOLOGY_FLAGS {
MFSESSION_SETTOPOLOGY_CLEAR_CURRENT = 0x4
} MFSESSION_SETTOPOLOGY_FLAGS;
typedef enum MFSESSION_GETFULLTOPOLOGY_FLAGS {
- MFSESSION_GETFULLTOPOLOGY_CURRENT = 0
+ MFSESSION_GETFULLTOPOLOGY_CURRENT = 0x1
} MFSESSION_GETFULLTOPOLOGY_FLAGS;
typedef enum MFPMPSESSION_CREATION_FLAGS {
- MFPMPSESSION_UNPROTECTED_PROCESS = 0x1
+ MFPMPSESSION_UNPROTECTED_PROCESS = 0x1,
+ MFPMPSESSION_IN_PROCESS = 0x2
} MFPMPSESSION_CREATION_FLAGS;
typedef UINT64 TOPOID;
typedef enum MF_TOPOLOGY_TYPE {
@@ -2852,6 +2957,201 @@ HRESULT __RPC_STUB IMFMediaSource_CreatePresentationDescriptor_Stub(
#endif /* __IMFMediaSource_INTERFACE_DEFINED__ */
+#if (WINVER >= _WIN32_WINNT_WIN8)
+/*****************************************************************************
+ * IMFMediaSourceEx interface
+ */
+#ifndef __IMFMediaSourceEx_INTERFACE_DEFINED__
+#define __IMFMediaSourceEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFMediaSourceEx, 0x3c9b2eb9, 0x86d5, 0x4514, 0xa3,0x94, 0xf5,0x66,0x64,0xf9,0xf0,0xd8);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3c9b2eb9-86d5-4514-a394-f56664f9f0d8")
+IMFMediaSourceEx : public IMFMediaSource
+{
+ virtual HRESULT STDMETHODCALLTYPE GetSourceAttributes(
+ IMFAttributes **ppAttributes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStreamAttributes(
+ DWORD dwStreamIdentifier,
+ IMFAttributes **ppAttributes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetD3DManager(
+ IUnknown *pManager) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFMediaSourceEx, 0x3c9b2eb9, 0x86d5, 0x4514, 0xa3,0x94, 0xf5,0x66,0x64,0xf9,0xf0,0xd8)
+#endif
+#else
+typedef struct IMFMediaSourceExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFMediaSourceEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFMediaSourceEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFMediaSourceEx *This);
+
+ /*** IMFMediaEventGenerator methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetEvent)(
+ IMFMediaSourceEx *This,
+ DWORD dwFlags,
+ IMFMediaEvent **ppEvent);
+
+ HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
+ IMFMediaSourceEx *This,
+ IMFAsyncCallback *pCallback,
+ IUnknown *punkState);
+
+ HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
+ IMFMediaSourceEx *This,
+ IMFAsyncResult *pResult,
+ IMFMediaEvent **ppEvent);
+
+ HRESULT (STDMETHODCALLTYPE *QueueEvent)(
+ IMFMediaSourceEx *This,
+ MediaEventType met,
+ REFGUID guidExtendedType,
+ HRESULT hrStatus,
+ const PROPVARIANT *pvValue);
+
+ /*** IMFMediaSource methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
+ IMFMediaSourceEx *This,
+ DWORD *pdwCharacteristics);
+
+ HRESULT (STDMETHODCALLTYPE *CreatePresentationDescriptor)(
+ IMFMediaSourceEx *This,
+ IMFPresentationDescriptor **ppPresentationDescriptor);
+
+ HRESULT (STDMETHODCALLTYPE *Start)(
+ IMFMediaSourceEx *This,
+ IMFPresentationDescriptor *pPresentationDescriptor,
+ const GUID *pguidTimeFormat,
+ const PROPVARIANT *pvarStartPosition);
+
+ HRESULT (STDMETHODCALLTYPE *Stop)(
+ IMFMediaSourceEx *This);
+
+ HRESULT (STDMETHODCALLTYPE *Pause)(
+ IMFMediaSourceEx *This);
+
+ HRESULT (STDMETHODCALLTYPE *Shutdown)(
+ IMFMediaSourceEx *This);
+
+ /*** IMFMediaSourceEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetSourceAttributes)(
+ IMFMediaSourceEx *This,
+ IMFAttributes **ppAttributes);
+
+ HRESULT (STDMETHODCALLTYPE *GetStreamAttributes)(
+ IMFMediaSourceEx *This,
+ DWORD dwStreamIdentifier,
+ IMFAttributes **ppAttributes);
+
+ HRESULT (STDMETHODCALLTYPE *SetD3DManager)(
+ IMFMediaSourceEx *This,
+ IUnknown *pManager);
+
+ END_INTERFACE
+} IMFMediaSourceExVtbl;
+
+interface IMFMediaSourceEx {
+ CONST_VTBL IMFMediaSourceExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFMediaSourceEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFMediaSourceEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFMediaSourceEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFMediaEventGenerator methods ***/
+#define IMFMediaSourceEx_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
+#define IMFMediaSourceEx_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
+#define IMFMediaSourceEx_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
+#define IMFMediaSourceEx_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
+/*** IMFMediaSource methods ***/
+#define IMFMediaSourceEx_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
+#define IMFMediaSourceEx_CreatePresentationDescriptor(This,ppPresentationDescriptor) (This)->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor)
+#define IMFMediaSourceEx_Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition) (This)->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition)
+#define IMFMediaSourceEx_Stop(This) (This)->lpVtbl->Stop(This)
+#define IMFMediaSourceEx_Pause(This) (This)->lpVtbl->Pause(This)
+#define IMFMediaSourceEx_Shutdown(This) (This)->lpVtbl->Shutdown(This)
+/*** IMFMediaSourceEx methods ***/
+#define IMFMediaSourceEx_GetSourceAttributes(This,ppAttributes) (This)->lpVtbl->GetSourceAttributes(This,ppAttributes)
+#define IMFMediaSourceEx_GetStreamAttributes(This,dwStreamIdentifier,ppAttributes) (This)->lpVtbl->GetStreamAttributes(This,dwStreamIdentifier,ppAttributes)
+#define IMFMediaSourceEx_SetD3DManager(This,pManager) (This)->lpVtbl->SetD3DManager(This,pManager)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFMediaSourceEx_QueryInterface(IMFMediaSourceEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFMediaSourceEx_AddRef(IMFMediaSourceEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFMediaSourceEx_Release(IMFMediaSourceEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFMediaEventGenerator methods ***/
+static FORCEINLINE HRESULT IMFMediaSourceEx_GetEvent(IMFMediaSourceEx* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
+ return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_BeginGetEvent(IMFMediaSourceEx* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
+ return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_EndGetEvent(IMFMediaSourceEx* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
+ return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_QueueEvent(IMFMediaSourceEx* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
+ return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
+}
+/*** IMFMediaSource methods ***/
+static FORCEINLINE HRESULT IMFMediaSourceEx_GetCharacteristics(IMFMediaSourceEx* This,DWORD *pdwCharacteristics) {
+ return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_CreatePresentationDescriptor(IMFMediaSourceEx* This,IMFPresentationDescriptor **ppPresentationDescriptor) {
+ return This->lpVtbl->CreatePresentationDescriptor(This,ppPresentationDescriptor);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_Start(IMFMediaSourceEx* This,IMFPresentationDescriptor *pPresentationDescriptor,const GUID *pguidTimeFormat,const PROPVARIANT *pvarStartPosition) {
+ return This->lpVtbl->Start(This,pPresentationDescriptor,pguidTimeFormat,pvarStartPosition);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_Stop(IMFMediaSourceEx* This) {
+ return This->lpVtbl->Stop(This);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_Pause(IMFMediaSourceEx* This) {
+ return This->lpVtbl->Pause(This);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_Shutdown(IMFMediaSourceEx* This) {
+ return This->lpVtbl->Shutdown(This);
+}
+/*** IMFMediaSourceEx methods ***/
+static FORCEINLINE HRESULT IMFMediaSourceEx_GetSourceAttributes(IMFMediaSourceEx* This,IMFAttributes **ppAttributes) {
+ return This->lpVtbl->GetSourceAttributes(This,ppAttributes);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_GetStreamAttributes(IMFMediaSourceEx* This,DWORD dwStreamIdentifier,IMFAttributes **ppAttributes) {
+ return This->lpVtbl->GetStreamAttributes(This,dwStreamIdentifier,ppAttributes);
+}
+static FORCEINLINE HRESULT IMFMediaSourceEx_SetD3DManager(IMFMediaSourceEx* This,IUnknown *pManager) {
+ return This->lpVtbl->SetD3DManager(This,pManager);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFMediaSourceEx_INTERFACE_DEFINED__ */
+
+EXTERN_GUID(MF_SOURCE_STREAM_SUPPORTS_HW_CONNECTION, 0xa38253aa, 0x6314, 0x42fd, 0xa3, 0xce, 0xbb, 0x27, 0xb6, 0x85, 0x99, 0x46);
+#endif /* (WINVER >= _WIN32_WINNT_WIN8) */
typedef struct _MF_LEAKY_BUCKET_PAIR {
DWORD dwBitrate;
DWORD msBufferWindow;
@@ -3141,6 +3441,21 @@ typedef enum _MF_TRANSCODE_TOPOLOGY_MODE_FLAGS {
MF_TRANSCODE_TOPOLOGYMODE_HARDWARE_ALLOWED = 1
} MF_TRANSCODE_TOPOLOGYMODE_FLAGS;
#endif
+EXTERN_GUID(MF_TRANSCODE_CONTAINERTYPE, 0x150ff23f, 0x4abc, 0x478b, 0xac, 0x4f, 0xe1, 0x91, 0x6f, 0xba, 0x1c, 0xca);
+EXTERN_GUID(MFTranscodeContainerType_ASF, 0x430f6f6e, 0xb6bf, 0x4fc1, 0xa0, 0xbd, 0x9e, 0xe4, 0x6e, 0xee, 0x2a, 0xfb);
+EXTERN_GUID(MFTranscodeContainerType_MPEG4, 0xdc6cd05d, 0xb9d0, 0x40ef, 0xbd, 0x35, 0xfa, 0x62, 0x2c, 0x1a, 0xb2, 0x8a);
+EXTERN_GUID(MFTranscodeContainerType_MP3, 0xe438b912, 0x83f1, 0x4de6, 0x9e, 0x3a, 0x9f, 0xfb, 0xc6, 0xdd, 0x24, 0xd1);
+EXTERN_GUID(MFTranscodeContainerType_FLAC, 0x31344aa3, 0x05a9, 0x42b5, 0x90, 0x1b, 0x8e, 0x9d, 0x42, 0x57, 0xf7, 0x5e);
+EXTERN_GUID(MFTranscodeContainerType_3GP, 0x34c50167, 0x4472, 0x4f34, 0x9e, 0xa0, 0xc4, 0x9f, 0xba, 0xcf, 0x03, 0x7d);
+EXTERN_GUID(MFTranscodeContainerType_AC3, 0x6d8d91c3, 0x8c91, 0x4ed1, 0x87, 0x42, 0x8c, 0x34, 0x7d, 0x5b, 0x44, 0xd0);
+EXTERN_GUID(MFTranscodeContainerType_ADTS, 0x132fd27d, 0x0f02, 0x43de, 0xa3, 0x01, 0x38, 0xfb, 0xbb, 0xb3, 0x83, 0x4e);
+EXTERN_GUID(MFTranscodeContainerType_MPEG2, 0xbfc2dbf9, 0x7bb4, 0x4f8f, 0xaf, 0xde, 0xe1, 0x12, 0xc4, 0x4b, 0xa8, 0x82);
+EXTERN_GUID(MFTranscodeContainerType_WAVE, 0x64c3453c, 0x0f26, 0x4741, 0xbe, 0x63, 0x87, 0xbd, 0xf8, 0xbb, 0x93, 0x5b);
+EXTERN_GUID(MFTranscodeContainerType_AVI, 0x7edfe8af, 0x402f, 0x4d76, 0xa3, 0x3c, 0x61, 0x9f, 0xd1, 0x57, 0xd0, 0xf1);
+#if (WINVER >= _WIN32_WINNT_WIN8)
+EXTERN_GUID(MFTranscodeContainerType_FMPEG4, 0x9ba876f1, 0x419f, 0x4b77, 0xa1, 0xe0, 0x35, 0x95, 0x9d, 0x9d, 0x40, 0x4);
+#endif /* (WINVER >= _WIN32_WINNT_WIN8) */
+EXTERN_GUID(MFTranscodeContainerType_AMR, 0x25d5ad3, 0x621a, 0x475b, 0x96, 0x4d, 0x66, 0xb1, 0xc8, 0x24, 0xf0, 0x79);
typedef enum __WIDL_mfidl_generated_name_0000002E {
MF_LICENSE_URL_UNTRUSTED = 0,
MF_LICENSE_URL_TRUSTED = 1,
@@ -5055,6 +5370,203 @@ static FORCEINLINE HRESULT IMFSampleGrabberSinkCallback_OnShutdown(IMFSampleGrab
#endif /* __IMFSampleGrabberSinkCallback_INTERFACE_DEFINED__ */
/*****************************************************************************
+ * IMFShutdown interface
+ */
+#ifndef __IMFShutdown_INTERFACE_DEFINED__
+#define __IMFShutdown_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFShutdown, 0x97ec2ea4, 0x0e42, 0x4937, 0x97,0xac, 0x9d,0x6d,0x32,0x88,0x24,0xe1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("97ec2ea4-0e42-4937-97ac-9d6d328824e1")
+IMFShutdown : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Shutdown(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetShutdownStatus(
+ MFSHUTDOWN_STATUS *pStatus) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFShutdown, 0x97ec2ea4, 0x0e42, 0x4937, 0x97,0xac, 0x9d,0x6d,0x32,0x88,0x24,0xe1)
+#endif
+#else
+typedef struct IMFShutdownVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFShutdown *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFShutdown *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFShutdown *This);
+
+ /*** IMFShutdown methods ***/
+ HRESULT (STDMETHODCALLTYPE *Shutdown)(
+ IMFShutdown *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetShutdownStatus)(
+ IMFShutdown *This,
+ MFSHUTDOWN_STATUS *pStatus);
+
+ END_INTERFACE
+} IMFShutdownVtbl;
+
+interface IMFShutdown {
+ CONST_VTBL IMFShutdownVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFShutdown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFShutdown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFShutdown_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFShutdown methods ***/
+#define IMFShutdown_Shutdown(This) (This)->lpVtbl->Shutdown(This)
+#define IMFShutdown_GetShutdownStatus(This,pStatus) (This)->lpVtbl->GetShutdownStatus(This,pStatus)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFShutdown_QueryInterface(IMFShutdown* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFShutdown_AddRef(IMFShutdown* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFShutdown_Release(IMFShutdown* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFShutdown methods ***/
+static FORCEINLINE HRESULT IMFShutdown_Shutdown(IMFShutdown* This) {
+ return This->lpVtbl->Shutdown(This);
+}
+static FORCEINLINE HRESULT IMFShutdown_GetShutdownStatus(IMFShutdown* This,MFSHUTDOWN_STATUS *pStatus) {
+ return This->lpVtbl->GetShutdownStatus(This,pStatus);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFShutdown_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFSimpleAudioVolume interface
+ */
+#ifndef __IMFSimpleAudioVolume_INTERFACE_DEFINED__
+#define __IMFSimpleAudioVolume_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFSimpleAudioVolume, 0x089edf13, 0xcf71, 0x4338, 0x8d,0x13, 0x9e,0x56,0x9d,0xbd,0xc3,0x19);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("089edf13-cf71-4338-8d13-9e569dbdc319")
+IMFSimpleAudioVolume : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetMasterVolume(
+ float fLevel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMasterVolume(
+ float *pfLevel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMute(
+ const WINBOOL bMute) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMute(
+ WINBOOL *pbMute) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFSimpleAudioVolume, 0x089edf13, 0xcf71, 0x4338, 0x8d,0x13, 0x9e,0x56,0x9d,0xbd,0xc3,0x19)
+#endif
+#else
+typedef struct IMFSimpleAudioVolumeVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFSimpleAudioVolume *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFSimpleAudioVolume *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFSimpleAudioVolume *This);
+
+ /*** IMFSimpleAudioVolume methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetMasterVolume)(
+ IMFSimpleAudioVolume *This,
+ float fLevel);
+
+ HRESULT (STDMETHODCALLTYPE *GetMasterVolume)(
+ IMFSimpleAudioVolume *This,
+ float *pfLevel);
+
+ HRESULT (STDMETHODCALLTYPE *SetMute)(
+ IMFSimpleAudioVolume *This,
+ const WINBOOL bMute);
+
+ HRESULT (STDMETHODCALLTYPE *GetMute)(
+ IMFSimpleAudioVolume *This,
+ WINBOOL *pbMute);
+
+ END_INTERFACE
+} IMFSimpleAudioVolumeVtbl;
+
+interface IMFSimpleAudioVolume {
+ CONST_VTBL IMFSimpleAudioVolumeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFSimpleAudioVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFSimpleAudioVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFSimpleAudioVolume_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFSimpleAudioVolume methods ***/
+#define IMFSimpleAudioVolume_SetMasterVolume(This,fLevel) (This)->lpVtbl->SetMasterVolume(This,fLevel)
+#define IMFSimpleAudioVolume_GetMasterVolume(This,pfLevel) (This)->lpVtbl->GetMasterVolume(This,pfLevel)
+#define IMFSimpleAudioVolume_SetMute(This,bMute) (This)->lpVtbl->SetMute(This,bMute)
+#define IMFSimpleAudioVolume_GetMute(This,pbMute) (This)->lpVtbl->GetMute(This,pbMute)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFSimpleAudioVolume_QueryInterface(IMFSimpleAudioVolume* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFSimpleAudioVolume_AddRef(IMFSimpleAudioVolume* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFSimpleAudioVolume_Release(IMFSimpleAudioVolume* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFSimpleAudioVolume methods ***/
+static FORCEINLINE HRESULT IMFSimpleAudioVolume_SetMasterVolume(IMFSimpleAudioVolume* This,float fLevel) {
+ return This->lpVtbl->SetMasterVolume(This,fLevel);
+}
+static FORCEINLINE HRESULT IMFSimpleAudioVolume_GetMasterVolume(IMFSimpleAudioVolume* This,float *pfLevel) {
+ return This->lpVtbl->GetMasterVolume(This,pfLevel);
+}
+static FORCEINLINE HRESULT IMFSimpleAudioVolume_SetMute(IMFSimpleAudioVolume* This,const WINBOOL bMute) {
+ return This->lpVtbl->SetMute(This,bMute);
+}
+static FORCEINLINE HRESULT IMFSimpleAudioVolume_GetMute(IMFSimpleAudioVolume* This,WINBOOL *pbMute) {
+ return This->lpVtbl->GetMute(This,pbMute);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFSimpleAudioVolume_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
* IMFSourceResolver interface
*/
#ifndef __IMFSourceResolver_INTERFACE_DEFINED__
@@ -5515,6 +6027,102 @@ static FORCEINLINE HRESULT IMFStreamSink_Flush(IMFStreamSink* This) {
#endif /* __IMFStreamSink_INTERFACE_DEFINED__ */
/*****************************************************************************
+ * IMFTimer interface
+ */
+#ifndef __IMFTimer_INTERFACE_DEFINED__
+#define __IMFTimer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFTimer, 0xe56e4cbd, 0x8f70, 0x49d8, 0xa0,0xf8, 0xed,0xb3,0xd6,0xab,0x9b,0xf2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e56e4cbd-8f70-49d8-a0f8-edb3d6ab9bf2")
+IMFTimer : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetTimer(
+ DWORD dwFlags,
+ LONGLONG llClockTime,
+ IMFAsyncCallback *pCallback,
+ IUnknown *punkState,
+ IUnknown **ppunkKey) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CancelTimer(
+ IUnknown *punkKey) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFTimer, 0xe56e4cbd, 0x8f70, 0x49d8, 0xa0,0xf8, 0xed,0xb3,0xd6,0xab,0x9b,0xf2)
+#endif
+#else
+typedef struct IMFTimerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFTimer *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFTimer *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFTimer *This);
+
+ /*** IMFTimer methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetTimer)(
+ IMFTimer *This,
+ DWORD dwFlags,
+ LONGLONG llClockTime,
+ IMFAsyncCallback *pCallback,
+ IUnknown *punkState,
+ IUnknown **ppunkKey);
+
+ HRESULT (STDMETHODCALLTYPE *CancelTimer)(
+ IMFTimer *This,
+ IUnknown *punkKey);
+
+ END_INTERFACE
+} IMFTimerVtbl;
+
+interface IMFTimer {
+ CONST_VTBL IMFTimerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFTimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFTimer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFTimer_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFTimer methods ***/
+#define IMFTimer_SetTimer(This,dwFlags,llClockTime,pCallback,punkState,ppunkKey) (This)->lpVtbl->SetTimer(This,dwFlags,llClockTime,pCallback,punkState,ppunkKey)
+#define IMFTimer_CancelTimer(This,punkKey) (This)->lpVtbl->CancelTimer(This,punkKey)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFTimer_QueryInterface(IMFTimer* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFTimer_AddRef(IMFTimer* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFTimer_Release(IMFTimer* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFTimer methods ***/
+static FORCEINLINE HRESULT IMFTimer_SetTimer(IMFTimer* This,DWORD dwFlags,LONGLONG llClockTime,IMFAsyncCallback *pCallback,IUnknown *punkState,IUnknown **ppunkKey) {
+ return This->lpVtbl->SetTimer(This,dwFlags,llClockTime,pCallback,punkState,ppunkKey);
+}
+static FORCEINLINE HRESULT IMFTimer_CancelTimer(IMFTimer* This,IUnknown *punkKey) {
+ return This->lpVtbl->CancelTimer(This,punkKey);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFTimer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
* IMFTopoLoader interface
*/
#ifndef __IMFTopoLoader_INTERFACE_DEFINED__
@@ -5595,8 +6203,1079 @@ static FORCEINLINE HRESULT IMFTopoLoader_Load(IMFTopoLoader* This,IMFTopology *p
#endif /* __IMFTopoLoader_INTERFACE_DEFINED__ */
-HRESULT MFCreate3GPMediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
-HRESULT MFCreateAggregateSource(IMFCollection *pSourceCollection,IMFMediaSource **ppAggSource);
+/*****************************************************************************
+ * IMFVideoSampleAllocator interface
+ */
+#ifndef __IMFVideoSampleAllocator_INTERFACE_DEFINED__
+#define __IMFVideoSampleAllocator_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoSampleAllocator, 0x86cbc910, 0xe533, 0x4751, 0x8e,0x3b, 0xf1,0x9b,0x5b,0x80,0x6a,0x03);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("86cbc910-e533-4751-8e3b-f19b5b806a03")
+IMFVideoSampleAllocator : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetDirectXManager(
+ IUnknown *pManager) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UninitializeSampleAllocator(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitializeSampleAllocator(
+ DWORD cRequestedFrames,
+ IMFMediaType *pMediaType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AllocateSample(
+ IMFSample **ppSample) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoSampleAllocator, 0x86cbc910, 0xe533, 0x4751, 0x8e,0x3b, 0xf1,0x9b,0x5b,0x80,0x6a,0x03)
+#endif
+#else
+typedef struct IMFVideoSampleAllocatorVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoSampleAllocator *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoSampleAllocator *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoSampleAllocator *This);
+
+ /*** IMFVideoSampleAllocator methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetDirectXManager)(
+ IMFVideoSampleAllocator *This,
+ IUnknown *pManager);
+
+ HRESULT (STDMETHODCALLTYPE *UninitializeSampleAllocator)(
+ IMFVideoSampleAllocator *This);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeSampleAllocator)(
+ IMFVideoSampleAllocator *This,
+ DWORD cRequestedFrames,
+ IMFMediaType *pMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *AllocateSample)(
+ IMFVideoSampleAllocator *This,
+ IMFSample **ppSample);
+
+ END_INTERFACE
+} IMFVideoSampleAllocatorVtbl;
+
+interface IMFVideoSampleAllocator {
+ CONST_VTBL IMFVideoSampleAllocatorVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoSampleAllocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoSampleAllocator_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoSampleAllocator_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoSampleAllocator methods ***/
+#define IMFVideoSampleAllocator_SetDirectXManager(This,pManager) (This)->lpVtbl->SetDirectXManager(This,pManager)
+#define IMFVideoSampleAllocator_UninitializeSampleAllocator(This) (This)->lpVtbl->UninitializeSampleAllocator(This)
+#define IMFVideoSampleAllocator_InitializeSampleAllocator(This,cRequestedFrames,pMediaType) (This)->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType)
+#define IMFVideoSampleAllocator_AllocateSample(This,ppSample) (This)->lpVtbl->AllocateSample(This,ppSample)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocator_QueryInterface(IMFVideoSampleAllocator* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocator_AddRef(IMFVideoSampleAllocator* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocator_Release(IMFVideoSampleAllocator* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoSampleAllocator methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocator_SetDirectXManager(IMFVideoSampleAllocator* This,IUnknown *pManager) {
+ return This->lpVtbl->SetDirectXManager(This,pManager);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocator_UninitializeSampleAllocator(IMFVideoSampleAllocator* This) {
+ return This->lpVtbl->UninitializeSampleAllocator(This);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocator_InitializeSampleAllocator(IMFVideoSampleAllocator* This,DWORD cRequestedFrames,IMFMediaType *pMediaType) {
+ return This->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocator_AllocateSample(IMFVideoSampleAllocator* This,IMFSample **ppSample) {
+ return This->lpVtbl->AllocateSample(This,ppSample);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoSampleAllocator_INTERFACE_DEFINED__ */
+
+#if WINVER >= _WIN32_WINNT_WIN7
+/*****************************************************************************
+ * IMFVideoSampleAllocatorNotify interface
+ */
+#ifndef __IMFVideoSampleAllocatorNotify_INTERFACE_DEFINED__
+#define __IMFVideoSampleAllocatorNotify_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoSampleAllocatorNotify, 0xa792cdbe, 0xc374, 0x4e89, 0x83,0x35, 0x27,0x8e,0x7b,0x99,0x56,0xa4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a792cdbe-c374-4e89-8335-278e7b9956a4")
+IMFVideoSampleAllocatorNotify : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE NotifyRelease(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoSampleAllocatorNotify, 0xa792cdbe, 0xc374, 0x4e89, 0x83,0x35, 0x27,0x8e,0x7b,0x99,0x56,0xa4)
+#endif
+#else
+typedef struct IMFVideoSampleAllocatorNotifyVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoSampleAllocatorNotify *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoSampleAllocatorNotify *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoSampleAllocatorNotify *This);
+
+ /*** IMFVideoSampleAllocatorNotify methods ***/
+ HRESULT (STDMETHODCALLTYPE *NotifyRelease)(
+ IMFVideoSampleAllocatorNotify *This);
+
+ END_INTERFACE
+} IMFVideoSampleAllocatorNotifyVtbl;
+
+interface IMFVideoSampleAllocatorNotify {
+ CONST_VTBL IMFVideoSampleAllocatorNotifyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoSampleAllocatorNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoSampleAllocatorNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoSampleAllocatorNotify_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoSampleAllocatorNotify methods ***/
+#define IMFVideoSampleAllocatorNotify_NotifyRelease(This) (This)->lpVtbl->NotifyRelease(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorNotify_QueryInterface(IMFVideoSampleAllocatorNotify* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorNotify_AddRef(IMFVideoSampleAllocatorNotify* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorNotify_Release(IMFVideoSampleAllocatorNotify* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoSampleAllocatorNotify methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorNotify_NotifyRelease(IMFVideoSampleAllocatorNotify* This) {
+ return This->lpVtbl->NotifyRelease(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoSampleAllocatorNotify_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFVideoSampleAllocatorNotifyEx interface
+ */
+#ifndef __IMFVideoSampleAllocatorNotifyEx_INTERFACE_DEFINED__
+#define __IMFVideoSampleAllocatorNotifyEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoSampleAllocatorNotifyEx, 0x3978aa1a, 0x6d5b, 0x4b7f, 0xa3,0x40, 0x90,0x89,0x91,0x89,0xae,0x34);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3978aa1a-6d5b-4b7f-a340-90899189ae34")
+IMFVideoSampleAllocatorNotifyEx : public IMFVideoSampleAllocatorNotify
+{
+ virtual HRESULT STDMETHODCALLTYPE NotifyPrune(
+ IMFSample *ppSample) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoSampleAllocatorNotifyEx, 0x3978aa1a, 0x6d5b, 0x4b7f, 0xa3,0x40, 0x90,0x89,0x91,0x89,0xae,0x34)
+#endif
+#else
+typedef struct IMFVideoSampleAllocatorNotifyExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoSampleAllocatorNotifyEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoSampleAllocatorNotifyEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoSampleAllocatorNotifyEx *This);
+
+ /*** IMFVideoSampleAllocatorNotify methods ***/
+ HRESULT (STDMETHODCALLTYPE *NotifyRelease)(
+ IMFVideoSampleAllocatorNotifyEx *This);
+
+ /*** IMFVideoSampleAllocatorNotifyEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *NotifyPrune)(
+ IMFVideoSampleAllocatorNotifyEx *This,
+ IMFSample *ppSample);
+
+ END_INTERFACE
+} IMFVideoSampleAllocatorNotifyExVtbl;
+
+interface IMFVideoSampleAllocatorNotifyEx {
+ CONST_VTBL IMFVideoSampleAllocatorNotifyExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoSampleAllocatorNotifyEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoSampleAllocatorNotifyEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoSampleAllocatorNotifyEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoSampleAllocatorNotify methods ***/
+#define IMFVideoSampleAllocatorNotifyEx_NotifyRelease(This) (This)->lpVtbl->NotifyRelease(This)
+/*** IMFVideoSampleAllocatorNotifyEx methods ***/
+#define IMFVideoSampleAllocatorNotifyEx_NotifyPrune(This,ppSample) (This)->lpVtbl->NotifyPrune(This,ppSample)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorNotifyEx_QueryInterface(IMFVideoSampleAllocatorNotifyEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorNotifyEx_AddRef(IMFVideoSampleAllocatorNotifyEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorNotifyEx_Release(IMFVideoSampleAllocatorNotifyEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoSampleAllocatorNotify methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorNotifyEx_NotifyRelease(IMFVideoSampleAllocatorNotifyEx* This) {
+ return This->lpVtbl->NotifyRelease(This);
+}
+/*** IMFVideoSampleAllocatorNotifyEx methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorNotifyEx_NotifyPrune(IMFVideoSampleAllocatorNotifyEx* This,IMFSample *ppSample) {
+ return This->lpVtbl->NotifyPrune(This,ppSample);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoSampleAllocatorNotifyEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFVideoSampleAllocatorCallback interface
+ */
+#ifndef __IMFVideoSampleAllocatorCallback_INTERFACE_DEFINED__
+#define __IMFVideoSampleAllocatorCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoSampleAllocatorCallback, 0x992388b4, 0x3372, 0x4f67, 0x8b,0x6f, 0xc8,0x4c,0x07,0x1f,0x47,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("992388b4-3372-4f67-8b6f-c84c071f4751")
+IMFVideoSampleAllocatorCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetCallback(
+ IMFVideoSampleAllocatorNotify *pNotify) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFreeSampleCount(
+ LONG *plSamples) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoSampleAllocatorCallback, 0x992388b4, 0x3372, 0x4f67, 0x8b,0x6f, 0xc8,0x4c,0x07,0x1f,0x47,0x51)
+#endif
+#else
+typedef struct IMFVideoSampleAllocatorCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoSampleAllocatorCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoSampleAllocatorCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoSampleAllocatorCallback *This);
+
+ /*** IMFVideoSampleAllocatorCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetCallback)(
+ IMFVideoSampleAllocatorCallback *This,
+ IMFVideoSampleAllocatorNotify *pNotify);
+
+ HRESULT (STDMETHODCALLTYPE *GetFreeSampleCount)(
+ IMFVideoSampleAllocatorCallback *This,
+ LONG *plSamples);
+
+ END_INTERFACE
+} IMFVideoSampleAllocatorCallbackVtbl;
+
+interface IMFVideoSampleAllocatorCallback {
+ CONST_VTBL IMFVideoSampleAllocatorCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoSampleAllocatorCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoSampleAllocatorCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoSampleAllocatorCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoSampleAllocatorCallback methods ***/
+#define IMFVideoSampleAllocatorCallback_SetCallback(This,pNotify) (This)->lpVtbl->SetCallback(This,pNotify)
+#define IMFVideoSampleAllocatorCallback_GetFreeSampleCount(This,plSamples) (This)->lpVtbl->GetFreeSampleCount(This,plSamples)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorCallback_QueryInterface(IMFVideoSampleAllocatorCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorCallback_AddRef(IMFVideoSampleAllocatorCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorCallback_Release(IMFVideoSampleAllocatorCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoSampleAllocatorCallback methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorCallback_SetCallback(IMFVideoSampleAllocatorCallback* This,IMFVideoSampleAllocatorNotify *pNotify) {
+ return This->lpVtbl->SetCallback(This,pNotify);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorCallback_GetFreeSampleCount(IMFVideoSampleAllocatorCallback* This,LONG *plSamples) {
+ return This->lpVtbl->GetFreeSampleCount(This,plSamples);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoSampleAllocatorCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IMFVideoSampleAllocatorEx interface
+ */
+#ifndef __IMFVideoSampleAllocatorEx_INTERFACE_DEFINED__
+#define __IMFVideoSampleAllocatorEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoSampleAllocatorEx, 0x545b3a48, 0x3283, 0x4f62, 0x86,0x6f, 0xa6,0x2d,0x8f,0x59,0x8f,0x9f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("545b3a48-3283-4f62-866f-a62d8f598f9f")
+IMFVideoSampleAllocatorEx : public IMFVideoSampleAllocator
+{
+ virtual HRESULT STDMETHODCALLTYPE InitializeSampleAllocatorEx(
+ DWORD cInitialSamples,
+ DWORD cMaximumSamples,
+ IMFAttributes *pAttributes,
+ IMFMediaType *pMediaType) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoSampleAllocatorEx, 0x545b3a48, 0x3283, 0x4f62, 0x86,0x6f, 0xa6,0x2d,0x8f,0x59,0x8f,0x9f)
+#endif
+#else
+typedef struct IMFVideoSampleAllocatorExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoSampleAllocatorEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoSampleAllocatorEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoSampleAllocatorEx *This);
+
+ /*** IMFVideoSampleAllocator methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetDirectXManager)(
+ IMFVideoSampleAllocatorEx *This,
+ IUnknown *pManager);
+
+ HRESULT (STDMETHODCALLTYPE *UninitializeSampleAllocator)(
+ IMFVideoSampleAllocatorEx *This);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeSampleAllocator)(
+ IMFVideoSampleAllocatorEx *This,
+ DWORD cRequestedFrames,
+ IMFMediaType *pMediaType);
+
+ HRESULT (STDMETHODCALLTYPE *AllocateSample)(
+ IMFVideoSampleAllocatorEx *This,
+ IMFSample **ppSample);
+
+ /*** IMFVideoSampleAllocatorEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *InitializeSampleAllocatorEx)(
+ IMFVideoSampleAllocatorEx *This,
+ DWORD cInitialSamples,
+ DWORD cMaximumSamples,
+ IMFAttributes *pAttributes,
+ IMFMediaType *pMediaType);
+
+ END_INTERFACE
+} IMFVideoSampleAllocatorExVtbl;
+
+interface IMFVideoSampleAllocatorEx {
+ CONST_VTBL IMFVideoSampleAllocatorExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoSampleAllocatorEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoSampleAllocatorEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoSampleAllocatorEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoSampleAllocator methods ***/
+#define IMFVideoSampleAllocatorEx_SetDirectXManager(This,pManager) (This)->lpVtbl->SetDirectXManager(This,pManager)
+#define IMFVideoSampleAllocatorEx_UninitializeSampleAllocator(This) (This)->lpVtbl->UninitializeSampleAllocator(This)
+#define IMFVideoSampleAllocatorEx_InitializeSampleAllocator(This,cRequestedFrames,pMediaType) (This)->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType)
+#define IMFVideoSampleAllocatorEx_AllocateSample(This,ppSample) (This)->lpVtbl->AllocateSample(This,ppSample)
+/*** IMFVideoSampleAllocatorEx methods ***/
+#define IMFVideoSampleAllocatorEx_InitializeSampleAllocatorEx(This,cInitialSamples,cMaximumSamples,pAttributes,pMediaType) (This)->lpVtbl->InitializeSampleAllocatorEx(This,cInitialSamples,cMaximumSamples,pAttributes,pMediaType)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorEx_QueryInterface(IMFVideoSampleAllocatorEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorEx_AddRef(IMFVideoSampleAllocatorEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoSampleAllocatorEx_Release(IMFVideoSampleAllocatorEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoSampleAllocator methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorEx_SetDirectXManager(IMFVideoSampleAllocatorEx* This,IUnknown *pManager) {
+ return This->lpVtbl->SetDirectXManager(This,pManager);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorEx_UninitializeSampleAllocator(IMFVideoSampleAllocatorEx* This) {
+ return This->lpVtbl->UninitializeSampleAllocator(This);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorEx_InitializeSampleAllocator(IMFVideoSampleAllocatorEx* This,DWORD cRequestedFrames,IMFMediaType *pMediaType) {
+ return This->lpVtbl->InitializeSampleAllocator(This,cRequestedFrames,pMediaType);
+}
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorEx_AllocateSample(IMFVideoSampleAllocatorEx* This,IMFSample **ppSample) {
+ return This->lpVtbl->AllocateSample(This,ppSample);
+}
+/*** IMFVideoSampleAllocatorEx methods ***/
+static FORCEINLINE HRESULT IMFVideoSampleAllocatorEx_InitializeSampleAllocatorEx(IMFVideoSampleAllocatorEx* This,DWORD cInitialSamples,DWORD cMaximumSamples,IMFAttributes *pAttributes,IMFMediaType *pMediaType) {
+ return This->lpVtbl->InitializeSampleAllocatorEx(This,cInitialSamples,cMaximumSamples,pAttributes,pMediaType);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoSampleAllocatorEx_INTERFACE_DEFINED__ */
+
+#endif /* WINVER >= _WIN32_WINNT_WIN7 */
+#if WINVER >= _WIN32_WINNT_WIN8
+typedef enum _MF_VIDEO_PROCESSOR_ROTATION {
+ ROTATION_NONE = 0,
+ ROTATION_NORMAL = 1
+} MF_VIDEO_PROCESSOR_ROTATION;
+typedef enum _MF_VIDEO_PROCESSOR_MIRROR {
+ MIRROR_NONE = 0,
+ MIRROR_HORIZONTAL = 1,
+ MIRROR_VERTICAL = 2
+} MF_VIDEO_PROCESSOR_MIRROR;
+/*****************************************************************************
+ * IMFVideoProcessorControl interface
+ */
+#ifndef __IMFVideoProcessorControl_INTERFACE_DEFINED__
+#define __IMFVideoProcessorControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoProcessorControl, 0xa3f675d5, 0x6119, 0x4f7f, 0xa1,0x00, 0x1d,0x8b,0x28,0x0f,0x0e,0xfb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a3f675d5-6119-4f7f-a100-1d8b280f0efb")
+IMFVideoProcessorControl : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetBorderColor(
+ MFARGB *pBorderColor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSourceRectangle(
+ RECT *pSrcRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDestinationRectangle(
+ RECT *pDstRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMirror(
+ MF_VIDEO_PROCESSOR_MIRROR eMirror) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRotation(
+ MF_VIDEO_PROCESSOR_ROTATION eRotation) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetConstrictionSize(
+ SIZE *pConstrictionSize) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoProcessorControl, 0xa3f675d5, 0x6119, 0x4f7f, 0xa1,0x00, 0x1d,0x8b,0x28,0x0f,0x0e,0xfb)
+#endif
+#else
+typedef struct IMFVideoProcessorControlVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoProcessorControl *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoProcessorControl *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoProcessorControl *This);
+
+ /*** IMFVideoProcessorControl methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
+ IMFVideoProcessorControl *This,
+ MFARGB *pBorderColor);
+
+ HRESULT (STDMETHODCALLTYPE *SetSourceRectangle)(
+ IMFVideoProcessorControl *This,
+ RECT *pSrcRect);
+
+ HRESULT (STDMETHODCALLTYPE *SetDestinationRectangle)(
+ IMFVideoProcessorControl *This,
+ RECT *pDstRect);
+
+ HRESULT (STDMETHODCALLTYPE *SetMirror)(
+ IMFVideoProcessorControl *This,
+ MF_VIDEO_PROCESSOR_MIRROR eMirror);
+
+ HRESULT (STDMETHODCALLTYPE *SetRotation)(
+ IMFVideoProcessorControl *This,
+ MF_VIDEO_PROCESSOR_ROTATION eRotation);
+
+ HRESULT (STDMETHODCALLTYPE *SetConstrictionSize)(
+ IMFVideoProcessorControl *This,
+ SIZE *pConstrictionSize);
+
+ END_INTERFACE
+} IMFVideoProcessorControlVtbl;
+
+interface IMFVideoProcessorControl {
+ CONST_VTBL IMFVideoProcessorControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoProcessorControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoProcessorControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoProcessorControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoProcessorControl methods ***/
+#define IMFVideoProcessorControl_SetBorderColor(This,pBorderColor) (This)->lpVtbl->SetBorderColor(This,pBorderColor)
+#define IMFVideoProcessorControl_SetSourceRectangle(This,pSrcRect) (This)->lpVtbl->SetSourceRectangle(This,pSrcRect)
+#define IMFVideoProcessorControl_SetDestinationRectangle(This,pDstRect) (This)->lpVtbl->SetDestinationRectangle(This,pDstRect)
+#define IMFVideoProcessorControl_SetMirror(This,eMirror) (This)->lpVtbl->SetMirror(This,eMirror)
+#define IMFVideoProcessorControl_SetRotation(This,eRotation) (This)->lpVtbl->SetRotation(This,eRotation)
+#define IMFVideoProcessorControl_SetConstrictionSize(This,pConstrictionSize) (This)->lpVtbl->SetConstrictionSize(This,pConstrictionSize)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl_QueryInterface(IMFVideoProcessorControl* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoProcessorControl_AddRef(IMFVideoProcessorControl* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoProcessorControl_Release(IMFVideoProcessorControl* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoProcessorControl methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl_SetBorderColor(IMFVideoProcessorControl* This,MFARGB *pBorderColor) {
+ return This->lpVtbl->SetBorderColor(This,pBorderColor);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl_SetSourceRectangle(IMFVideoProcessorControl* This,RECT *pSrcRect) {
+ return This->lpVtbl->SetSourceRectangle(This,pSrcRect);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl_SetDestinationRectangle(IMFVideoProcessorControl* This,RECT *pDstRect) {
+ return This->lpVtbl->SetDestinationRectangle(This,pDstRect);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl_SetMirror(IMFVideoProcessorControl* This,MF_VIDEO_PROCESSOR_MIRROR eMirror) {
+ return This->lpVtbl->SetMirror(This,eMirror);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl_SetRotation(IMFVideoProcessorControl* This,MF_VIDEO_PROCESSOR_ROTATION eRotation) {
+ return This->lpVtbl->SetRotation(This,eRotation);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl_SetConstrictionSize(IMFVideoProcessorControl* This,SIZE *pConstrictionSize) {
+ return This->lpVtbl->SetConstrictionSize(This,pConstrictionSize);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoProcessorControl_INTERFACE_DEFINED__ */
+
+#if WINVER >= _WIN32_WINNT_WINBLUE
+/*****************************************************************************
+ * IMFVideoProcessorControl2 interface
+ */
+#ifndef __IMFVideoProcessorControl2_INTERFACE_DEFINED__
+#define __IMFVideoProcessorControl2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoProcessorControl2, 0xbde633d3, 0xe1dc, 0x4a7f, 0xa6,0x93, 0xbb,0xae,0x39,0x9c,0x4a,0x20);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("bde633d3-e1dc-4a7f-a693-bbae399c4a20")
+IMFVideoProcessorControl2 : public IMFVideoProcessorControl
+{
+ virtual HRESULT STDMETHODCALLTYPE SetRotationOverride(
+ UINT uiRotation) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableHardwareEffects(
+ WINBOOL fEnabled) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSupportedHardwareEffects(
+ UINT *puiSupport) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoProcessorControl2, 0xbde633d3, 0xe1dc, 0x4a7f, 0xa6,0x93, 0xbb,0xae,0x39,0x9c,0x4a,0x20)
+#endif
+#else
+typedef struct IMFVideoProcessorControl2Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoProcessorControl2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoProcessorControl2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoProcessorControl2 *This);
+
+ /*** IMFVideoProcessorControl methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
+ IMFVideoProcessorControl2 *This,
+ MFARGB *pBorderColor);
+
+ HRESULT (STDMETHODCALLTYPE *SetSourceRectangle)(
+ IMFVideoProcessorControl2 *This,
+ RECT *pSrcRect);
+
+ HRESULT (STDMETHODCALLTYPE *SetDestinationRectangle)(
+ IMFVideoProcessorControl2 *This,
+ RECT *pDstRect);
+
+ HRESULT (STDMETHODCALLTYPE *SetMirror)(
+ IMFVideoProcessorControl2 *This,
+ MF_VIDEO_PROCESSOR_MIRROR eMirror);
+
+ HRESULT (STDMETHODCALLTYPE *SetRotation)(
+ IMFVideoProcessorControl2 *This,
+ MF_VIDEO_PROCESSOR_ROTATION eRotation);
+
+ HRESULT (STDMETHODCALLTYPE *SetConstrictionSize)(
+ IMFVideoProcessorControl2 *This,
+ SIZE *pConstrictionSize);
+
+ /*** IMFVideoProcessorControl2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetRotationOverride)(
+ IMFVideoProcessorControl2 *This,
+ UINT uiRotation);
+
+ HRESULT (STDMETHODCALLTYPE *EnableHardwareEffects)(
+ IMFVideoProcessorControl2 *This,
+ WINBOOL fEnabled);
+
+ HRESULT (STDMETHODCALLTYPE *GetSupportedHardwareEffects)(
+ IMFVideoProcessorControl2 *This,
+ UINT *puiSupport);
+
+ END_INTERFACE
+} IMFVideoProcessorControl2Vtbl;
+
+interface IMFVideoProcessorControl2 {
+ CONST_VTBL IMFVideoProcessorControl2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoProcessorControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoProcessorControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoProcessorControl2_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoProcessorControl methods ***/
+#define IMFVideoProcessorControl2_SetBorderColor(This,pBorderColor) (This)->lpVtbl->SetBorderColor(This,pBorderColor)
+#define IMFVideoProcessorControl2_SetSourceRectangle(This,pSrcRect) (This)->lpVtbl->SetSourceRectangle(This,pSrcRect)
+#define IMFVideoProcessorControl2_SetDestinationRectangle(This,pDstRect) (This)->lpVtbl->SetDestinationRectangle(This,pDstRect)
+#define IMFVideoProcessorControl2_SetMirror(This,eMirror) (This)->lpVtbl->SetMirror(This,eMirror)
+#define IMFVideoProcessorControl2_SetRotation(This,eRotation) (This)->lpVtbl->SetRotation(This,eRotation)
+#define IMFVideoProcessorControl2_SetConstrictionSize(This,pConstrictionSize) (This)->lpVtbl->SetConstrictionSize(This,pConstrictionSize)
+/*** IMFVideoProcessorControl2 methods ***/
+#define IMFVideoProcessorControl2_SetRotationOverride(This,uiRotation) (This)->lpVtbl->SetRotationOverride(This,uiRotation)
+#define IMFVideoProcessorControl2_EnableHardwareEffects(This,fEnabled) (This)->lpVtbl->EnableHardwareEffects(This,fEnabled)
+#define IMFVideoProcessorControl2_GetSupportedHardwareEffects(This,puiSupport) (This)->lpVtbl->GetSupportedHardwareEffects(This,puiSupport)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_QueryInterface(IMFVideoProcessorControl2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoProcessorControl2_AddRef(IMFVideoProcessorControl2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoProcessorControl2_Release(IMFVideoProcessorControl2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoProcessorControl methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetBorderColor(IMFVideoProcessorControl2* This,MFARGB *pBorderColor) {
+ return This->lpVtbl->SetBorderColor(This,pBorderColor);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetSourceRectangle(IMFVideoProcessorControl2* This,RECT *pSrcRect) {
+ return This->lpVtbl->SetSourceRectangle(This,pSrcRect);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetDestinationRectangle(IMFVideoProcessorControl2* This,RECT *pDstRect) {
+ return This->lpVtbl->SetDestinationRectangle(This,pDstRect);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetMirror(IMFVideoProcessorControl2* This,MF_VIDEO_PROCESSOR_MIRROR eMirror) {
+ return This->lpVtbl->SetMirror(This,eMirror);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetRotation(IMFVideoProcessorControl2* This,MF_VIDEO_PROCESSOR_ROTATION eRotation) {
+ return This->lpVtbl->SetRotation(This,eRotation);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetConstrictionSize(IMFVideoProcessorControl2* This,SIZE *pConstrictionSize) {
+ return This->lpVtbl->SetConstrictionSize(This,pConstrictionSize);
+}
+/*** IMFVideoProcessorControl2 methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_SetRotationOverride(IMFVideoProcessorControl2* This,UINT uiRotation) {
+ return This->lpVtbl->SetRotationOverride(This,uiRotation);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_EnableHardwareEffects(IMFVideoProcessorControl2* This,WINBOOL fEnabled) {
+ return This->lpVtbl->EnableHardwareEffects(This,fEnabled);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl2_GetSupportedHardwareEffects(IMFVideoProcessorControl2* This,UINT *puiSupport) {
+ return This->lpVtbl->GetSupportedHardwareEffects(This,puiSupport);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoProcessorControl2_INTERFACE_DEFINED__ */
+
+#if WINVER >= _WIN32_WINNT_WIN10
+typedef enum _MFVideoSphericalFormat {
+ MFVideoSphericalFormat_Unsupported = 0,
+ MFVideoSphericalFormat_Equirectangular = 1,
+ MFVideoSphericalFormat_CubeMap = 2,
+ MFVideoSphericalFormat_3DMesh = 3
+} MFVideoSphericalFormat;
+#endif /* WINVER >= _WIN32_WINNT_WIN10 */
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+EXTERN_GUID(MF_XVP_SAMPLE_LOCK_TIMEOUT, 0xaa4ddb29, 0x5134, 0x4363, 0xac, 0x72, 0x83, 0xec, 0x4b, 0xc1, 0x4, 0x26);
+typedef enum MFVideoSphericalProjectionMode {
+ MFVideoSphericalProjectionMode_Spherical = 0,
+ MFVideoSphericalProjectionMode_Flat = 1
+} MFVideoSphericalProjectionMode;
+/*****************************************************************************
+ * IMFVideoProcessorControl3 interface
+ */
+#ifndef __IMFVideoProcessorControl3_INTERFACE_DEFINED__
+#define __IMFVideoProcessorControl3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoProcessorControl3, 0x2424b3f2, 0xeb23, 0x40f1, 0x91,0xaa, 0x74,0xbd,0xde,0xea,0x08,0x83);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2424b3f2-eb23-40f1-91aa-74bddeea0883")
+IMFVideoProcessorControl3 : public IMFVideoProcessorControl2
+{
+ virtual HRESULT STDMETHODCALLTYPE GetNaturalOutputType(
+ IMFMediaType **ppType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableSphericalVideoProcessing(
+ WINBOOL fEnable,
+ MFVideoSphericalFormat eFormat,
+ MFVideoSphericalProjectionMode eProjectionMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSphericalVideoProperties(
+ float X,
+ float Y,
+ float Z,
+ float W,
+ float fieldOfView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetOutputDevice(
+ IUnknown *pOutputDevice) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoProcessorControl3, 0x2424b3f2, 0xeb23, 0x40f1, 0x91,0xaa, 0x74,0xbd,0xde,0xea,0x08,0x83)
+#endif
+#else
+typedef struct IMFVideoProcessorControl3Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoProcessorControl3 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoProcessorControl3 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoProcessorControl3 *This);
+
+ /*** IMFVideoProcessorControl methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetBorderColor)(
+ IMFVideoProcessorControl3 *This,
+ MFARGB *pBorderColor);
+
+ HRESULT (STDMETHODCALLTYPE *SetSourceRectangle)(
+ IMFVideoProcessorControl3 *This,
+ RECT *pSrcRect);
+
+ HRESULT (STDMETHODCALLTYPE *SetDestinationRectangle)(
+ IMFVideoProcessorControl3 *This,
+ RECT *pDstRect);
+
+ HRESULT (STDMETHODCALLTYPE *SetMirror)(
+ IMFVideoProcessorControl3 *This,
+ MF_VIDEO_PROCESSOR_MIRROR eMirror);
+
+ HRESULT (STDMETHODCALLTYPE *SetRotation)(
+ IMFVideoProcessorControl3 *This,
+ MF_VIDEO_PROCESSOR_ROTATION eRotation);
+
+ HRESULT (STDMETHODCALLTYPE *SetConstrictionSize)(
+ IMFVideoProcessorControl3 *This,
+ SIZE *pConstrictionSize);
+
+ /*** IMFVideoProcessorControl2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetRotationOverride)(
+ IMFVideoProcessorControl3 *This,
+ UINT uiRotation);
+
+ HRESULT (STDMETHODCALLTYPE *EnableHardwareEffects)(
+ IMFVideoProcessorControl3 *This,
+ WINBOOL fEnabled);
+
+ HRESULT (STDMETHODCALLTYPE *GetSupportedHardwareEffects)(
+ IMFVideoProcessorControl3 *This,
+ UINT *puiSupport);
+
+ /*** IMFVideoProcessorControl3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetNaturalOutputType)(
+ IMFVideoProcessorControl3 *This,
+ IMFMediaType **ppType);
+
+ HRESULT (STDMETHODCALLTYPE *EnableSphericalVideoProcessing)(
+ IMFVideoProcessorControl3 *This,
+ WINBOOL fEnable,
+ MFVideoSphericalFormat eFormat,
+ MFVideoSphericalProjectionMode eProjectionMode);
+
+ HRESULT (STDMETHODCALLTYPE *SetSphericalVideoProperties)(
+ IMFVideoProcessorControl3 *This,
+ float X,
+ float Y,
+ float Z,
+ float W,
+ float fieldOfView);
+
+ HRESULT (STDMETHODCALLTYPE *SetOutputDevice)(
+ IMFVideoProcessorControl3 *This,
+ IUnknown *pOutputDevice);
+
+ END_INTERFACE
+} IMFVideoProcessorControl3Vtbl;
+
+interface IMFVideoProcessorControl3 {
+ CONST_VTBL IMFVideoProcessorControl3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoProcessorControl3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoProcessorControl3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoProcessorControl3_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoProcessorControl methods ***/
+#define IMFVideoProcessorControl3_SetBorderColor(This,pBorderColor) (This)->lpVtbl->SetBorderColor(This,pBorderColor)
+#define IMFVideoProcessorControl3_SetSourceRectangle(This,pSrcRect) (This)->lpVtbl->SetSourceRectangle(This,pSrcRect)
+#define IMFVideoProcessorControl3_SetDestinationRectangle(This,pDstRect) (This)->lpVtbl->SetDestinationRectangle(This,pDstRect)
+#define IMFVideoProcessorControl3_SetMirror(This,eMirror) (This)->lpVtbl->SetMirror(This,eMirror)
+#define IMFVideoProcessorControl3_SetRotation(This,eRotation) (This)->lpVtbl->SetRotation(This,eRotation)
+#define IMFVideoProcessorControl3_SetConstrictionSize(This,pConstrictionSize) (This)->lpVtbl->SetConstrictionSize(This,pConstrictionSize)
+/*** IMFVideoProcessorControl2 methods ***/
+#define IMFVideoProcessorControl3_SetRotationOverride(This,uiRotation) (This)->lpVtbl->SetRotationOverride(This,uiRotation)
+#define IMFVideoProcessorControl3_EnableHardwareEffects(This,fEnabled) (This)->lpVtbl->EnableHardwareEffects(This,fEnabled)
+#define IMFVideoProcessorControl3_GetSupportedHardwareEffects(This,puiSupport) (This)->lpVtbl->GetSupportedHardwareEffects(This,puiSupport)
+/*** IMFVideoProcessorControl3 methods ***/
+#define IMFVideoProcessorControl3_GetNaturalOutputType(This,ppType) (This)->lpVtbl->GetNaturalOutputType(This,ppType)
+#define IMFVideoProcessorControl3_EnableSphericalVideoProcessing(This,fEnable,eFormat,eProjectionMode) (This)->lpVtbl->EnableSphericalVideoProcessing(This,fEnable,eFormat,eProjectionMode)
+#define IMFVideoProcessorControl3_SetSphericalVideoProperties(This,X,Y,Z,W,fieldOfView) (This)->lpVtbl->SetSphericalVideoProperties(This,X,Y,Z,W,fieldOfView)
+#define IMFVideoProcessorControl3_SetOutputDevice(This,pOutputDevice) (This)->lpVtbl->SetOutputDevice(This,pOutputDevice)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_QueryInterface(IMFVideoProcessorControl3* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoProcessorControl3_AddRef(IMFVideoProcessorControl3* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoProcessorControl3_Release(IMFVideoProcessorControl3* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoProcessorControl methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetBorderColor(IMFVideoProcessorControl3* This,MFARGB *pBorderColor) {
+ return This->lpVtbl->SetBorderColor(This,pBorderColor);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetSourceRectangle(IMFVideoProcessorControl3* This,RECT *pSrcRect) {
+ return This->lpVtbl->SetSourceRectangle(This,pSrcRect);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetDestinationRectangle(IMFVideoProcessorControl3* This,RECT *pDstRect) {
+ return This->lpVtbl->SetDestinationRectangle(This,pDstRect);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetMirror(IMFVideoProcessorControl3* This,MF_VIDEO_PROCESSOR_MIRROR eMirror) {
+ return This->lpVtbl->SetMirror(This,eMirror);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetRotation(IMFVideoProcessorControl3* This,MF_VIDEO_PROCESSOR_ROTATION eRotation) {
+ return This->lpVtbl->SetRotation(This,eRotation);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetConstrictionSize(IMFVideoProcessorControl3* This,SIZE *pConstrictionSize) {
+ return This->lpVtbl->SetConstrictionSize(This,pConstrictionSize);
+}
+/*** IMFVideoProcessorControl2 methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetRotationOverride(IMFVideoProcessorControl3* This,UINT uiRotation) {
+ return This->lpVtbl->SetRotationOverride(This,uiRotation);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_EnableHardwareEffects(IMFVideoProcessorControl3* This,WINBOOL fEnabled) {
+ return This->lpVtbl->EnableHardwareEffects(This,fEnabled);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_GetSupportedHardwareEffects(IMFVideoProcessorControl3* This,UINT *puiSupport) {
+ return This->lpVtbl->GetSupportedHardwareEffects(This,puiSupport);
+}
+/*** IMFVideoProcessorControl3 methods ***/
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_GetNaturalOutputType(IMFVideoProcessorControl3* This,IMFMediaType **ppType) {
+ return This->lpVtbl->GetNaturalOutputType(This,ppType);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_EnableSphericalVideoProcessing(IMFVideoProcessorControl3* This,WINBOOL fEnable,MFVideoSphericalFormat eFormat,MFVideoSphericalProjectionMode eProjectionMode) {
+ return This->lpVtbl->EnableSphericalVideoProcessing(This,fEnable,eFormat,eProjectionMode);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetSphericalVideoProperties(IMFVideoProcessorControl3* This,float X,float Y,float Z,float W,float fieldOfView) {
+ return This->lpVtbl->SetSphericalVideoProperties(This,X,Y,Z,W,fieldOfView);
+}
+static FORCEINLINE HRESULT IMFVideoProcessorControl3_SetOutputDevice(IMFVideoProcessorControl3* This,IUnknown *pOutputDevice) {
+ return This->lpVtbl->SetOutputDevice(This,pOutputDevice);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoProcessorControl3_INTERFACE_DEFINED__ */
+
+#endif /* NTDDI_VERSION >= NTDDI_WIN10_RS3 */
+#endif /* WINVER >= _WIN32_WINNT_WINBLUE */
+#if NTDDI_VERSION >= NTDDI_WIN10_VB
+/*****************************************************************************
+ * IMFVideoRendererEffectControl interface
+ */
+#ifndef __IMFVideoRendererEffectControl_INTERFACE_DEFINED__
+#define __IMFVideoRendererEffectControl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IMFVideoRendererEffectControl, 0x604d33d7, 0xcf23, 0x41d5, 0x82,0x24, 0x5b,0xbb,0xb1,0xa8,0x74,0x75);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("604d33d7-cf23-41d5-8224-5bbbb1a87475")
+IMFVideoRendererEffectControl : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnAppServiceConnectionEstablished(
+ IUnknown *pAppServiceConnection) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IMFVideoRendererEffectControl, 0x604d33d7, 0xcf23, 0x41d5, 0x82,0x24, 0x5b,0xbb,0xb1,0xa8,0x74,0x75)
+#endif
+#else
+typedef struct IMFVideoRendererEffectControlVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IMFVideoRendererEffectControl *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IMFVideoRendererEffectControl *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IMFVideoRendererEffectControl *This);
+
+ /*** IMFVideoRendererEffectControl methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnAppServiceConnectionEstablished)(
+ IMFVideoRendererEffectControl *This,
+ IUnknown *pAppServiceConnection);
+
+ END_INTERFACE
+} IMFVideoRendererEffectControlVtbl;
+
+interface IMFVideoRendererEffectControl {
+ CONST_VTBL IMFVideoRendererEffectControlVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IMFVideoRendererEffectControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMFVideoRendererEffectControl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMFVideoRendererEffectControl_Release(This) (This)->lpVtbl->Release(This)
+/*** IMFVideoRendererEffectControl methods ***/
+#define IMFVideoRendererEffectControl_OnAppServiceConnectionEstablished(This,pAppServiceConnection) (This)->lpVtbl->OnAppServiceConnectionEstablished(This,pAppServiceConnection)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IMFVideoRendererEffectControl_QueryInterface(IMFVideoRendererEffectControl* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IMFVideoRendererEffectControl_AddRef(IMFVideoRendererEffectControl* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IMFVideoRendererEffectControl_Release(IMFVideoRendererEffectControl* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IMFVideoRendererEffectControl methods ***/
+static FORCEINLINE HRESULT IMFVideoRendererEffectControl_OnAppServiceConnectionEstablished(IMFVideoRendererEffectControl* This,IUnknown *pAppServiceConnection) {
+ return This->lpVtbl->OnAppServiceConnectionEstablished(This,pAppServiceConnection);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IMFVideoRendererEffectControl_INTERFACE_DEFINED__ */
+
+#endif /* WINVER >= NTDDI_WIN10_VB */
+#endif /* WINVER >= _WIN32_WINNT_WIN8 */
+HRESULT WINAPI MFCreate3GPMediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
+HRESULT WINAPI MFCreateAggregateSource(IMFCollection *pSourceCollection,IMFMediaSource **ppAggSource);
HRESULT WINAPI MFCreateAlignedMemoryBuffer(DWORD cbMaxLength,DWORD fAlignmentFlags,IMFMediaBuffer **ppBuffer);
HRESULT WINAPI MFCreateASFContentInfo(IMFASFContentInfo **ppIContentInfo);
@@ -5610,6 +7289,7 @@ HRESULT WINAPI MFCreateASFProfileFromPresentationDescriptor(IMFPresentationDescr
HRESULT WINAPI MFCreateASFSplitter(IMFASFSplitter **ppISplitter);
HRESULT WINAPI MFCreateAudioRenderer(IMFAttributes *pAudioAttributes, IMFMediaSink **ppSink);
HRESULT WINAPI MFCreateAudioRendererActivate(IMFActivate **ppActivate);
+HRESULT WINAPI MFCreateDeviceSource(IMFAttributes *pAttributes,IMFMediaSource **ppSource);
HRESULT WINAPI MFCreateMediaSession(IMFAttributes *pConfiguration,IMFMediaSession **ppMS);
HRESULT WINAPI MFCreateMP3MediaSink(IMFByteStream *pTargetByteStream,IMFMediaSink **ppMediaSink);
HRESULT WINAPI MFCreateMPEG4MediaSink(IMFByteStream *pIByteStream,IMFMediaType *pVideoMediaType,IMFMediaType *pAudioMediaType,IMFMediaSink **ppIMediaSink);
@@ -5666,6 +7346,7 @@ EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_ENDPOINT_ROLE, 0x6ba644ff, 0x27c5, 0x4d0
EXTERN_GUID(MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY, 0xa9770471, 0x92ec, 0x4df4, 0x94, 0xfe, 0x81, 0xc3, 0x6f, 0xc, 0x3a, 0x7a);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME, 0x60d0e559,0x52f8,0x4fa2,0xbb,0xce,0xac,0xdb,0x34,0xa8,0xec,0x1);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE, 0x56a819ca,0xc78,0x4de4,0xa0,0xa7,0x3d,0xda,0xba,0xf,0x24,0xd4);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_GUID, 0x14dd9a1c, 0x7cff, 0x41be, 0xb1, 0xb9, 0xba, 0x1a, 0xc6, 0xec, 0xb5, 0x71);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID, 0x30da9258,0xfeb9,0x47a7,0xa4,0x53,0x76,0x3a,0x7a,0x8e,0x1c,0x5f);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ROLE, 0xbc9d118e,0x8c67,0x4a18,0x85,0xd4,0x12,0xd3,0x0,0x40,0x5,0x52);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY, 0x77f0ae69,0xc3bd,0x4509,0x94,0x1d,0x46,0x7e,0x4d,0x24,0x89,0x9e);
@@ -5674,10 +7355,20 @@ EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_MAX_BUFFERS, 0x7dd9b730,0x
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, 0x58f0aad8,0x22bf,0x4f8a,0xbb,0x3d,0xd2,0xc4,0x97,0x8c,0x6e,0x2f);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, 0xc60ac5fe,0x252a,0x478f,0xa0,0xef,0xbc,0x8f,0xa5,0xf7,0xca,0xd3);
EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID, 0x8ac3587a,0x4ae7,0x42d8,0x99,0xe0,0x0a,0x60,0x13,0xee,0xf9,0x0f);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_SYMBOLIC_LINK, 0x98d24b5e, 0x5930, 0x4614, 0xb5, 0xa1, 0xf6, 0x0, 0xf9, 0x35, 0x5a, 0x78);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_PROVIDER_DEVICE_ID, 0x36689d42, 0xa06c, 0x40ae, 0x84, 0xcf, 0xf5, 0xa0, 0x34, 0x6, 0x7c, 0xc4);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_XADDRESS, 0xbca0be52, 0xc327, 0x44c7, 0x9b, 0x7d, 0x7f, 0xa8, 0xd9, 0xb5, 0xbc, 0xda);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_STREAM_URL, 0x9d7b40d2, 0x3617, 0x4043, 0x93, 0xe3, 0x8d, 0x6d, 0xa9, 0xbb, 0x34, 0x92);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_USERNAME,0x5d01add, 0x949f, 0x46eb, 0xbc, 0x8e, 0x8b, 0xd, 0x2b, 0x32, 0xd7, 0x9d);
+EXTERN_GUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_PASSWORD, 0xa0fd7e16, 0x42d9, 0x49df, 0x84, 0xc0, 0xe8, 0x2c, 0x5e, 0xab, 0x88, 0x74);
EXTERN_GUID(MF_METADATA_PROVIDER_SERVICE, 0xdb214084, 0x58a4, 0x4d2e, 0xb8, 0x4f, 0x6f, 0x75, 0x5b, 0x2f, 0x7a, 0xd);
EXTERN_GUID(MF_PROPERTY_HANDLER_SERVICE, 0xa3face02, 0x32b8, 0x41dd, 0x90, 0xe7, 0x5f, 0xef, 0x7c, 0x89, 0x91, 0xb5);
EXTERN_GUID(MF_RATE_CONTROL_SERVICE, 0x866fa297, 0xb802, 0x4bf8, 0x9d, 0xc9, 0x5e, 0x3b, 0x6a, 0x9f, 0x53, 0xc9);
EXTERN_GUID(MF_SAMPLEGRABBERSINK_IGNORE_CLOCK, 0x0efda2c0, 0x2b69, 0x4e2e, 0xab, 0x8d, 0x46, 0xdc, 0xbf, 0xf7, 0xd2, 0x5d);
+EXTERN_GUID(MF_SD_LANGUAGE, 0xaf2180, 0xbdc2, 0x423c, 0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21);
+EXTERN_GUID(MF_SD_PROTECTED, 0xaf2181, 0xbdc2, 0x423c, 0xab, 0xca, 0xf5, 0x3, 0x59, 0x3b, 0xc1, 0x21);
+EXTERN_GUID(MF_SD_STREAM_NAME, 0x4f1b099d, 0xd314, 0x41e5, 0xa7, 0x81, 0x7f, 0xef, 0xaa, 0x4c, 0x50, 0x1f);
+EXTERN_GUID(MF_SD_MUTUALLY_EXCLUSIVE, 0x23ef79c, 0x388d, 0x487f, 0xac, 0x17, 0x69, 0x6c, 0xd6, 0xe3, 0xc6, 0xf5);
EXTERN_GUID(MF_TOPONODE_DRAIN, 0x494bbce9, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
EXTERN_GUID(MF_TOPONODE_D3DAWARE, 0x494bbced, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
EXTERN_GUID(MF_TOPOLOGY_RESOLUTION_STATUS, 0x494bbcde, 0xb031, 0x4e38, 0x97, 0xc4, 0xd5, 0x42, 0x2d, 0xd6, 0x18, 0xdc);
@@ -5708,6 +7399,15 @@ EXTERN_GUID(MF_TOPONODE_NOSHUTDOWN_ON_REMOVE, 0x14932f9c, 0x9087, 0x4bb4, 0x84,
EXTERN_GUID(MF_TOPONODE_RATELESS, 0x14932f9d, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
EXTERN_GUID(MF_TOPONODE_DISABLE_PREROLL, 0x14932f9e, 0x9087, 0x4bb4, 0x84, 0x12, 0x51, 0x67, 0x14, 0x5c, 0xbe, 0x04);
EXTERN_GUID(MF_TOPONODE_PRIMARYOUTPUT, 0x6304ef99, 0x16b2, 0x4ebe, 0x9d, 0x67, 0xe4, 0xc5, 0x39, 0xb3, 0xa2, 0x59);
+EXTERN_GUID(MF_TRANSCODE_SKIP_METADATA_TRANSFER, 0x4e4469ef, 0xb571, 0x4959, 0x8f, 0x83, 0x3d, 0xcf, 0xba, 0x33, 0xa3, 0x93);
+EXTERN_GUID(MF_TRANSCODE_TOPOLOGYMODE, 0x3e3df610, 0x394a, 0x40b2, 0x9d, 0xea, 0x3b, 0xab, 0x65, 0xb, 0xeb, 0xf2);
+EXTERN_GUID(MF_TRANSCODE_ADJUST_PROFILE, 0x9c37c21b, 0x60f, 0x487c, 0xa6, 0x90, 0x80, 0xd7, 0xf5, 0xd, 0x1c, 0x72);
+EXTERN_GUID(MF_TRANSCODE_ENCODINGPROFILE, 0x6947787c, 0xf508, 0x4ea9, 0xb1, 0xe9, 0xa1, 0xfe, 0x3a, 0x49, 0xfb, 0xc9);
+EXTERN_GUID(MF_TRANSCODE_QUALITYVSSPEED, 0x98332df8, 0x03cd, 0x476b, 0x89, 0xfa, 0x3f, 0x9e, 0x44, 0x2d, 0xec, 0x9f);
+EXTERN_GUID(MF_TRANSCODE_DONOT_INSERT_ENCODER, 0xf45aa7ce, 0xab24, 0x4012, 0xa1, 0x1b, 0xdc, 0x82, 0x20, 0x20, 0x14, 0x10);
+EXTERN_GUID(MR_AUDIO_POLICY_SERVICE, 0x911fd737, 0x6775, 0x4ab0, 0xa6, 0x14, 0x29, 0x78, 0x62, 0xfd, 0xac, 0x88);
+EXTERN_GUID(MR_CAPTURE_POLICY_VOLUME_SERVICE, 0x24030acd, 0x107a, 0x4265, 0x97, 0x5c, 0x41, 0x4e, 0x33, 0xe6, 0x5f, 0x2a);
+EXTERN_GUID(MR_POLICY_VOLUME_SERVICE, 0x1abaa2ac, 0x9d3b, 0x47c6, 0xab, 0x48, 0xc5, 0x95, 0x6, 0xde, 0x78, 0x4d);
EXTERN_GUID(MR_STREAM_VOLUME_SERVICE, 0xf8b5fa2f, 0x32ef, 0x46f5, 0xb1, 0x72, 0x13, 0x21, 0x21, 0x2f, 0xb2, 0xc4);
/* Begin additional prototypes for all interfaces */
diff --git a/lib/libc/include/any-windows-any/mfmediacapture.h b/lib/libc/include/any-windows-any/mfmediacapture.h
new file mode 100644
index 0000000000..15876327c4
--- /dev/null
+++ b/lib/libc/include/any-windows-any/mfmediacapture.h
@@ -0,0 +1,298 @@
+/*** Autogenerated by WIDL 7.0 from include/mfmediacapture.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __mfmediacapture_h__
+#define __mfmediacapture_h__
+
+/* Forward declarations */
+
+#ifndef __IAdvancedMediaCaptureInitializationSettings_FWD_DEFINED__
+#define __IAdvancedMediaCaptureInitializationSettings_FWD_DEFINED__
+typedef interface IAdvancedMediaCaptureInitializationSettings IAdvancedMediaCaptureInitializationSettings;
+#ifdef __cplusplus
+interface IAdvancedMediaCaptureInitializationSettings;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IAdvancedMediaCaptureSettings_FWD_DEFINED__
+#define __IAdvancedMediaCaptureSettings_FWD_DEFINED__
+typedef interface IAdvancedMediaCaptureSettings IAdvancedMediaCaptureSettings;
+#ifdef __cplusplus
+interface IAdvancedMediaCaptureSettings;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IAdvancedMediaCapture_FWD_DEFINED__
+#define __IAdvancedMediaCapture_FWD_DEFINED__
+typedef interface IAdvancedMediaCapture IAdvancedMediaCapture;
+#ifdef __cplusplus
+interface IAdvancedMediaCapture;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <mfobjects.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if NTDDI_VERSION >= NTDDI_WIN8
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+/*****************************************************************************
+ * IAdvancedMediaCaptureInitializationSettings interface
+ */
+#ifndef __IAdvancedMediaCaptureInitializationSettings_INTERFACE_DEFINED__
+#define __IAdvancedMediaCaptureInitializationSettings_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAdvancedMediaCaptureInitializationSettings, 0x3de21209, 0x8ba6, 0x4f2a, 0xa5,0x77, 0x28,0x19,0xb5,0x6f,0xf1,0x4d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3de21209-8ba6-4f2a-a577-2819b56ff14d")
+IAdvancedMediaCaptureInitializationSettings : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetDirectxDeviceManager(
+ IMFDXGIDeviceManager *pManager) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAdvancedMediaCaptureInitializationSettings, 0x3de21209, 0x8ba6, 0x4f2a, 0xa5,0x77, 0x28,0x19,0xb5,0x6f,0xf1,0x4d)
+#endif
+#else
+typedef struct IAdvancedMediaCaptureInitializationSettingsVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IAdvancedMediaCaptureInitializationSettings *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IAdvancedMediaCaptureInitializationSettings *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IAdvancedMediaCaptureInitializationSettings *This);
+
+ /*** IAdvancedMediaCaptureInitializationSettings methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetDirectxDeviceManager)(
+ IAdvancedMediaCaptureInitializationSettings *This,
+ IMFDXGIDeviceManager *pManager);
+
+ END_INTERFACE
+} IAdvancedMediaCaptureInitializationSettingsVtbl;
+
+interface IAdvancedMediaCaptureInitializationSettings {
+ CONST_VTBL IAdvancedMediaCaptureInitializationSettingsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAdvancedMediaCaptureInitializationSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdvancedMediaCaptureInitializationSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdvancedMediaCaptureInitializationSettings_Release(This) (This)->lpVtbl->Release(This)
+/*** IAdvancedMediaCaptureInitializationSettings methods ***/
+#define IAdvancedMediaCaptureInitializationSettings_SetDirectxDeviceManager(This,pManager) (This)->lpVtbl->SetDirectxDeviceManager(This,pManager)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAdvancedMediaCaptureInitializationSettings_QueryInterface(IAdvancedMediaCaptureInitializationSettings* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAdvancedMediaCaptureInitializationSettings_AddRef(IAdvancedMediaCaptureInitializationSettings* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAdvancedMediaCaptureInitializationSettings_Release(IAdvancedMediaCaptureInitializationSettings* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IAdvancedMediaCaptureInitializationSettings methods ***/
+static FORCEINLINE HRESULT IAdvancedMediaCaptureInitializationSettings_SetDirectxDeviceManager(IAdvancedMediaCaptureInitializationSettings* This,IMFDXGIDeviceManager *pManager) {
+ return This->lpVtbl->SetDirectxDeviceManager(This,pManager);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IAdvancedMediaCaptureInitializationSettings_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAdvancedMediaCaptureSettings interface
+ */
+#ifndef __IAdvancedMediaCaptureSettings_INTERFACE_DEFINED__
+#define __IAdvancedMediaCaptureSettings_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAdvancedMediaCaptureSettings, 0x24e0485f, 0xa33e, 0x4aa1, 0xb5,0x64, 0x60,0x19,0xb1,0xd1,0x4f,0x65);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("24e0485f-a33e-4aa1-b564-6019b1d14f65")
+IAdvancedMediaCaptureSettings : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetDirectxDeviceManager(
+ IMFDXGIDeviceManager **ppManager) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAdvancedMediaCaptureSettings, 0x24e0485f, 0xa33e, 0x4aa1, 0xb5,0x64, 0x60,0x19,0xb1,0xd1,0x4f,0x65)
+#endif
+#else
+typedef struct IAdvancedMediaCaptureSettingsVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IAdvancedMediaCaptureSettings *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IAdvancedMediaCaptureSettings *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IAdvancedMediaCaptureSettings *This);
+
+ /*** IAdvancedMediaCaptureSettings methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetDirectxDeviceManager)(
+ IAdvancedMediaCaptureSettings *This,
+ IMFDXGIDeviceManager **ppManager);
+
+ END_INTERFACE
+} IAdvancedMediaCaptureSettingsVtbl;
+
+interface IAdvancedMediaCaptureSettings {
+ CONST_VTBL IAdvancedMediaCaptureSettingsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAdvancedMediaCaptureSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdvancedMediaCaptureSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdvancedMediaCaptureSettings_Release(This) (This)->lpVtbl->Release(This)
+/*** IAdvancedMediaCaptureSettings methods ***/
+#define IAdvancedMediaCaptureSettings_GetDirectxDeviceManager(This,ppManager) (This)->lpVtbl->GetDirectxDeviceManager(This,ppManager)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAdvancedMediaCaptureSettings_QueryInterface(IAdvancedMediaCaptureSettings* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAdvancedMediaCaptureSettings_AddRef(IAdvancedMediaCaptureSettings* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAdvancedMediaCaptureSettings_Release(IAdvancedMediaCaptureSettings* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IAdvancedMediaCaptureSettings methods ***/
+static FORCEINLINE HRESULT IAdvancedMediaCaptureSettings_GetDirectxDeviceManager(IAdvancedMediaCaptureSettings* This,IMFDXGIDeviceManager **ppManager) {
+ return This->lpVtbl->GetDirectxDeviceManager(This,ppManager);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IAdvancedMediaCaptureSettings_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAdvancedMediaCapture interface
+ */
+#ifndef __IAdvancedMediaCapture_INTERFACE_DEFINED__
+#define __IAdvancedMediaCapture_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IAdvancedMediaCapture, 0xd0751585, 0xd216, 0x4344, 0xb5,0xbf, 0x46,0x3b,0x68,0xf9,0x77,0xbb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d0751585-d216-4344-b5bf-463b68f977bb")
+IAdvancedMediaCapture : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetAdvancedMediaCaptureSettings(
+ IAdvancedMediaCaptureSettings **ppSettings) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IAdvancedMediaCapture, 0xd0751585, 0xd216, 0x4344, 0xb5,0xbf, 0x46,0x3b,0x68,0xf9,0x77,0xbb)
+#endif
+#else
+typedef struct IAdvancedMediaCaptureVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IAdvancedMediaCapture *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IAdvancedMediaCapture *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IAdvancedMediaCapture *This);
+
+ /*** IAdvancedMediaCapture methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetAdvancedMediaCaptureSettings)(
+ IAdvancedMediaCapture *This,
+ IAdvancedMediaCaptureSettings **ppSettings);
+
+ END_INTERFACE
+} IAdvancedMediaCaptureVtbl;
+
+interface IAdvancedMediaCapture {
+ CONST_VTBL IAdvancedMediaCaptureVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IAdvancedMediaCapture_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdvancedMediaCapture_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdvancedMediaCapture_Release(This) (This)->lpVtbl->Release(This)
+/*** IAdvancedMediaCapture methods ***/
+#define IAdvancedMediaCapture_GetAdvancedMediaCaptureSettings(This,ppSettings) (This)->lpVtbl->GetAdvancedMediaCaptureSettings(This,ppSettings)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IAdvancedMediaCapture_QueryInterface(IAdvancedMediaCapture* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IAdvancedMediaCapture_AddRef(IAdvancedMediaCapture* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IAdvancedMediaCapture_Release(IAdvancedMediaCapture* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IAdvancedMediaCapture methods ***/
+static FORCEINLINE HRESULT IAdvancedMediaCapture_GetAdvancedMediaCaptureSettings(IAdvancedMediaCapture* This,IAdvancedMediaCaptureSettings **ppSettings) {
+ return This->lpVtbl->GetAdvancedMediaCaptureSettings(This,ppSettings);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IAdvancedMediaCapture_INTERFACE_DEFINED__ */
+
+#endif /* WINAPI_PARTITION_APP */
+#endif /* NTDDI >= NTDDI_WIN8 */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __mfmediacapture_h__ */
diff --git a/lib/libc/include/any-windows-any/mfobjects.h b/lib/libc/include/any-windows-any/mfobjects.h
index 68e70f6219..07eaae7bb8 100644
--- a/lib/libc/include/any-windows-any/mfobjects.h
+++ b/lib/libc/include/any-windows-any/mfobjects.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mfobjects.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mfobjects.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mfplay.h b/lib/libc/include/any-windows-any/mfplay.h
index 783917710e..b9294b15dd 100644
--- a/lib/libc/include/any-windows-any/mfplay.h
+++ b/lib/libc/include/any-windows-any/mfplay.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mfplay.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mfplay.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mfreadwrite.h b/lib/libc/include/any-windows-any/mfreadwrite.h
index ad876da281..516504309c 100644
--- a/lib/libc/include/any-windows-any/mfreadwrite.h
+++ b/lib/libc/include/any-windows-any/mfreadwrite.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mfreadwrite.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mfreadwrite.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mftransform.h b/lib/libc/include/any-windows-any/mftransform.h
index 3c3e4b2715..799e1a98e6 100644
--- a/lib/libc/include/any-windows-any/mftransform.h
+++ b/lib/libc/include/any-windows-any/mftransform.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mftransform.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mftransform.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mmdeviceapi.h b/lib/libc/include/any-windows-any/mmdeviceapi.h
index 8ac7c8ca55..dc2a8dcaa2 100644
--- a/lib/libc/include/any-windows-any/mmdeviceapi.h
+++ b/lib/libc/include/any-windows-any/mmdeviceapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mmdeviceapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mmdeviceapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mmreg.h b/lib/libc/include/any-windows-any/mmreg.h
index c7ddc892e2..092a052008 100644
--- a/lib/libc/include/any-windows-any/mmreg.h
+++ b/lib/libc/include/any-windows-any/mmreg.h
@@ -2008,6 +2008,7 @@ extern "C" {
#define WAVE_FORMAT_LEAD_SPEECH 0x434c
#define WAVE_FORMAT_LEAD_VORBIS 0x564c
#define WAVE_FORMAT_WAVPACK_AUDIO 0x5756
+#define WAVE_FORMAT_ALAC 0x6c61
#define WAVE_FORMAT_OGG_VORBIS_MODE_1 0x674f
#define WAVE_FORMAT_OGG_VORBIS_MODE_2 0x6750
#define WAVE_FORMAT_OGG_VORBIS_MODE_3 0x6751
@@ -2015,7 +2016,11 @@ extern "C" {
#define WAVE_FORMAT_OGG_VORBIS_MODE_2_PLUS 0x6770
#define WAVE_FORMAT_OGG_VORBIS_MODE_3_PLUS 0x6771
#define WAVE_FORMAT_3COM_NBX 0x7000
+#define WAVE_FORMAT_OPUS 0x704f
#define WAVE_FORMAT_FAAD_AAC 0x706d
+#define WAVE_FORMAT_AMR_NB 0x7361
+#define WAVE_FORMAT_AMR_WB 0x7362
+#define WAVE_FORMAT_AMR_WP 0x7363
#define WAVE_FORMAT_GSM_AMR_CBR 0x7a21
#define WAVE_FORMAT_GSM_AMR_VBR_SID 0x7a22
#define WAVE_FORMAT_COMVERSE_INFOSYS_G723_1 0xa100
@@ -2055,6 +2060,7 @@ extern "C" {
#define WAVE_FORMAT_NICE_G728 0xa122
#define WAVE_FORMAT_FRACE_TELECOM_G729 0xa123
#define WAVE_FORMAT_CODIAN 0xa124
+#define WAVE_FORMAT_DOLBY_AC4 0xac40
#define WAVE_FORMAT_FLAC 0xf1ac
#if !defined (WAVE_FORMAT_EXTENSIBLE)
diff --git a/lib/libc/include/any-windows-any/mmstream.h b/lib/libc/include/any-windows-any/mmstream.h
index f2d2c5c49a..1a8313a7f3 100644
--- a/lib/libc/include/any-windows-any/mmstream.h
+++ b/lib/libc/include/any-windows-any/mmstream.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mmstream.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mmstream.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mmsystem.h b/lib/libc/include/any-windows-any/mmsystem.h
index c021d54a7a..7ec2e8bc0c 100644
--- a/lib/libc/include/any-windows-any/mmsystem.h
+++ b/lib/libc/include/any-windows-any/mmsystem.h
@@ -302,6 +302,7 @@ extern "C" {
#define WAVE_MAPPED 0x0004
#define WAVE_FORMAT_DIRECT 0x0008
#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
+#define WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE 0x0010
typedef struct wavehdr_tag {
LPSTR lpData;
diff --git a/lib/libc/include/any-windows-any/mscoree.h b/lib/libc/include/any-windows-any/mscoree.h
index bf0fa9ca13..7a48cae924 100644
--- a/lib/libc/include/any-windows-any/mscoree.h
+++ b/lib/libc/include/any-windows-any/mscoree.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mscoree.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mscoree.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/msctf.h b/lib/libc/include/any-windows-any/msctf.h
index 7be5801309..80ea3ee180 100644
--- a/lib/libc/include/any-windows-any/msctf.h
+++ b/lib/libc/include/any-windows-any/msctf.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/msctf.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/msctf.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mshtmhst.h b/lib/libc/include/any-windows-any/mshtmhst.h
index 058297b40c..1784e94784 100644
--- a/lib/libc/include/any-windows-any/mshtmhst.h
+++ b/lib/libc/include/any-windows-any/mshtmhst.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mshtmhst.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mshtmhst.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mshtml.h b/lib/libc/include/any-windows-any/mshtml.h
index 95e0cbcb97..a3e0501a90 100644
--- a/lib/libc/include/any-windows-any/mshtml.h
+++ b/lib/libc/include/any-windows-any/mshtml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/mshtml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/mshtml.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/msinkaut.h b/lib/libc/include/any-windows-any/msinkaut.h
index 4d4dffccd6..b59d2a449c 100644
--- a/lib/libc/include/any-windows-any/msinkaut.h
+++ b/lib/libc/include/any-windows-any/msinkaut.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/msinkaut.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/msinkaut.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/msinkaut_i.c b/lib/libc/include/any-windows-any/msinkaut_i.c
index 1394188f71..c27ee73f05 100644
--- a/lib/libc/include/any-windows-any/msinkaut_i.c
+++ b/lib/libc/include/any-windows-any/msinkaut_i.c
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/msinkaut.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/msinkaut.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>
diff --git a/lib/libc/include/any-windows-any/msopc.h b/lib/libc/include/any-windows-any/msopc.h
index e18fd9d8ea..ddd77c3643 100644
--- a/lib/libc/include/any-windows-any/msopc.h
+++ b/lib/libc/include/any-windows-any/msopc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/msopc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/msopc.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/mstcpip.h b/lib/libc/include/any-windows-any/mstcpip.h
index b040ba739b..1e1bc24e71 100644
--- a/lib/libc/include/any-windows-any/mstcpip.h
+++ b/lib/libc/include/any-windows-any/mstcpip.h
@@ -15,12 +15,68 @@
#define u_long __ms_u_long
#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_RS2
+typedef enum _TCPSTATE {
+ TCPSTATE_CLOSED,
+ TCPSTATE_LISTEN,
+ TCPSTATE_SYN_SENT,
+ TCPSTATE_SYN_RCVD,
+ TCPSTATE_ESTABLISHED,
+ TCPSTATE_FIN_WAIT_1,
+ TCPSTATE_FIN_WAIT_2,
+ TCPSTATE_CLOSE_WAIT,
+ TCPSTATE_CLOSING,
+ TCPSTATE_LAST_ACK,
+ TCPSTATE_TIME_WAIT,
+ TCPSTATE_MAX
+} TCPSTATE;
+#endif
+
+#ifndef _TRANSPORT_SETTING_COMMON_
+#define _TRANSPORT_SETTING_COMMON_
+typedef struct TRANSPORT_SETTING_ID {
+ GUID Guid;
+} TRANSPORT_SETTING_ID, *PTRANSPORT_SETTING_ID;
+#endif
+
struct tcp_keepalive {
u_long onoff;
u_long keepalivetime;
u_long keepaliveinterval;
};
+typedef enum {
+ CONTROL_CHANNEL_TRIGGER_STATUS_INVALID = 0,
+ CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED = 1,
+ CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED = 2,
+ CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR = 3,
+ CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR = 4,
+ CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED = 5,
+ CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE = 6
+} CONTROL_CHANNEL_TRIGGER_STATUS, *PCONTROL_CHANNEL_TRIGGER_STATUS;
+
+#define CONTROL_CHANNEL_TRIGGER_STATUS_MAX CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR
+
+typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT {
+ TRANSPORT_SETTING_ID TransportSettingId;
+ GUID BrokerEventGuid;
+} REAL_TIME_NOTIFICATION_SETTING_INPUT, *PREAL_TIME_NOTIFICATION_SETTING_INPUT;
+
+typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX {
+ TRANSPORT_SETTING_ID TransportSettingId;
+ GUID BrokerEventGuid;
+ BOOLEAN Unmark;
+} REAL_TIME_NOTIFICATION_SETTING_INPUT_EX, *PREAL_TIME_NOTIFICATION_SETTING_INPUT_EX;
+
+typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT {
+ CONTROL_CHANNEL_TRIGGER_STATUS ChannelStatus;
+} REAL_TIME_NOTIFICATION_SETTING_OUTPUT, *PREAL_TIME_NOTIFICATION_SETTING_OUTPUT;
+
+typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT {
+ TRANSPORT_SETTING_ID TransportSettingId;
+ UINT64 Handle;
+} ASSOCIATE_NAMERES_CONTEXT_INPUT, *PASSOCIATE_NAMERES_CONTEXT_INPUT;
+
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
#define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2)
#define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3)
@@ -32,11 +88,188 @@ struct tcp_keepalive {
#define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9)
#define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10)
#define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11)
+#define SIO_RCVALL_MCAST_IF _WSAIOW(IOC_VENDOR,13)
+#define SIO_RCVALL_IF _WSAIOW(IOC_VENDOR,14)
+#define SIO_LOOPBACK_FAST_PATH _WSAIOW(IOC_VENDOR,16)
+#define SIO_TCP_INITIAL_RTO _WSAIOW(IOC_VENDOR,17)
+#define SIO_APPLY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,19)
+#define SIO_QUERY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,20)
+#define SIO_TCP_SET_ICW _WSAIOW(IOC_VENDOR,22)
+#define SIO_TCP_SET_ACK_FREQUENCY _WSAIOW(IOC_VENDOR,23)
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+#define SIO_SET_PRIORITY_HINT _WSAIOW(IOC_VENDOR,24)
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_FE
+#define SIO_PRIORITY_HINT SIO_SET_PRIORITY_HINT
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_RS2
+#define SIO_TCP_INFO _WSAIORW(IOC_VENDOR,39)
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_VB
+#define SIO_CPU_AFFINITY _WSAIOW(IOC_VENDOR,21)
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_FE
+
+#define SIO_TIMESTAMPING _WSAIOW(IOC_VENDOR, 235)
+
+typedef struct _TIMESTAMPING_CONFIG {
+ ULONG Flags;
+ USHORT TxTimestampsBuffered;
+} TIMESTAMPING_CONFIG, *PTIMESTAMPING_CONFIG;
+
+#define TIMESTAMPING_FLAG_RX 0x1
+#define TIMESTAMPING_FLAG_TX 0x2
+
+#define SO_TIMESTAMP 0x300A
+
+#define SO_TIMESTAMP_ID 0x300B
+
+#define SIO_GET_TX_TIMESTAMP _WSAIOW(IOC_VENDOR, 234)
+
+typedef enum {
+ SocketPriorityHintVeryLow = 0,
+ SocketPriorityHintLow,
+ SocketPriorityHintNormal,
+ SocketMaximumPriorityHintType
+} SOCKET_PRIORITY_HINT, *PSOCKET_PRIORITY_HINT;
+
+typedef struct _PRIORITY_STATUS {
+ SOCKET_PRIORITY_HINT Sender;
+ SOCKET_PRIORITY_HINT Receiver;
+} PRIORITY_STATUS, *PPRIORITY_STATUS;
+#endif /* NTDDI_WIN10_FE */
+
+typedef enum {
+ RCVALL_OFF = 0,
+ RCVALL_ON = 1,
+ RCVALL_SOCKETLEVELONLY = 2,
+ RCVALL_IPLEVEL = 3
+} RCVALL_VALUE, *PRCVALL_VALUE;
+
+#define RCVALL_MAX RCVALL_IPLEVEL
+
+typedef struct {
+ RCVALL_VALUE Mode;
+ ULONG Interface;
+} RCVALL_IF, *PRCVALL_IF;
+
+#define TCP_INITIAL_RTO_UNSPECIFIED_RTT ((USHORT) -1)
+#define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS ((UCHAR) -1)
+
+#define TCP_INITIAL_RTO_DEFAULT_RTT (0)
+#define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS (0)
+#define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS ((UCHAR) -2)
+
+typedef struct _TCP_INITIAL_RTO_PARAMETERS {
+ USHORT Rtt;
+ UCHAR MaxSynRetransmissions;
+} TCP_INITIAL_RTO_PARAMETERS, *PTCP_INITIAL_RTO_PARAMETERS;
+
+typedef enum {
+ TCP_ICW_LEVEL_DEFAULT = 0,
+ TCP_ICW_LEVEL_HIGH = 1,
+ TCP_ICW_LEVEL_VERY_HIGH = 2,
+ TCP_ICW_LEVEL_AGGRESSIVE = 3,
+ TCP_ICW_LEVEL_EXPERIMENTAL = 4,
+ TCP_ICW_LEVEL_COMPAT = 254,
+ TCP_ICW_LEVEL_MAX = 255
+} TCP_ICW_LEVEL, *PTCP_ICW_LEVEL;
+
+typedef struct _TCP_ICW_PARAMETERS {
+ TCP_ICW_LEVEL Level;
+} TCP_ICW_PARAMETERS, *PTCP_ICW_PARAMETERS;
+
+typedef struct _TCP_ACK_FREQUENCY_PARAMETERS {
+ UCHAR TcpDelayedAckFrequency;
+} TCP_ACK_FREQUENCY_PARAMETERS, *PTCP_ACK_FREQUENCY_PARAMETERS;
+
+#if NTDDI_VERSION >= NTDDI_WIN10_RS2
+typedef struct _TCP_INFO_v0 {
+ TCPSTATE State;
+ ULONG Mss;
+ ULONG64 ConnectionTimeMs;
+ BOOLEAN TimestampsEnabled;
+ ULONG RttUs;
+ ULONG MinRttUs;
+ ULONG BytesInFlight;
+ ULONG Cwnd;
+ ULONG SndWnd;
+ ULONG RcvWnd;
+ ULONG RcvBuf;
+ ULONG64 BytesOut;
+ ULONG64 BytesIn;
+ ULONG BytesReordered;
+ ULONG BytesRetrans;
+ ULONG FastRetrans;
+ ULONG DupAcksIn;
+ ULONG TimeoutEpisodes;
+ UCHAR SynRetrans;
+} TCP_INFO_v0, *PTCP_INFO_v0;
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN10_RS5
+typedef struct _TCP_INFO_v1 {
+ TCPSTATE State;
+ ULONG Mss;
+ ULONG64 ConnectionTimeMs;
+ BOOLEAN TimestampsEnabled;
+ ULONG RttUs;
+ ULONG MinRttUs;
+ ULONG BytesInFlight;
+ ULONG Cwnd;
+ ULONG SndWnd;
+ ULONG RcvWnd;
+ ULONG RcvBuf;
+ ULONG64 BytesOut;
+ ULONG64 BytesIn;
+ ULONG BytesReordered;
+ ULONG BytesRetrans;
+ ULONG FastRetrans;
+ ULONG DupAcksIn;
+ ULONG TimeoutEpisodes;
+ UCHAR SynRetrans;
+ ULONG SndLimTransRwin;
+ ULONG SndLimTimeRwin;
+ ULONG64 SndLimBytesRwin;
+ ULONG SndLimTransCwnd;
+ ULONG SndLimTimeCwnd;
+ ULONG64 SndLimBytesCwnd;
+ ULONG SndLimTransSnd;
+ ULONG SndLimTimeSnd;
+ ULONG64 SndLimBytesSnd;
+} TCP_INFO_v1, *PTCP_INFO_v1;
+#endif
+
+#define SIO_ACQUIRE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 100)
+#define SIO_RELEASE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 101)
+#define SIO_ASSOCIATE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 102)
+
+typedef struct _INET_PORT_RANGE {
+ USHORT StartPort;
+ USHORT NumberOfPorts;
+} INET_PORT_RANGE, *PINET_PORT_RANGE;
+
+typedef struct _INET_PORT_RANGE INET_PORT_RESERVATION, *PINET_PORT_RESERVATION;
+
+typedef struct {
+ ULONG64 Token;
+} INET_PORT_RESERVATION_TOKEN, *PINET_PORT_RESERVATION_TOKEN;
+
+#define INVALID_PORT_RESERVATION_TOKEN ((ULONG64)0)
+
+typedef struct {
+#ifdef __cplusplus
+ INET_PORT_RESERVATION Reservation;
+ INET_PORT_RESERVATION_TOKEN Token;
+#else
+ INET_PORT_RESERVATION;
+ INET_PORT_RESERVATION_TOKEN;
+#endif
+} INET_PORT_RESERVATION_INSTANCE, *PINET_PORT_RESERVATION_INSTANCE;
-#define RCVALL_OFF 0
-#define RCVALL_ON 1
-#define RCVALL_SOCKETLEVELONLY 2
-#define RCVALL_IPLEVEL 3
+typedef struct {
+ ULONG OwningPid;
+} INET_PORT_RESERVATION_INFORMATION, *PINET_PORT_RESERVATION_INFORMATION;
#if (_WIN32_WINNT >= 0x0502)
typedef enum _SOCKET_SECURITY_PROTOCOL {
diff --git a/lib/libc/include/any-windows-any/msxml.h b/lib/libc/include/any-windows-any/msxml.h
index a5e8998edb..54281c231e 100644
--- a/lib/libc/include/any-windows-any/msxml.h
+++ b/lib/libc/include/any-windows-any/msxml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/msxml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/msxml.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napcertrelyingparty.h b/lib/libc/include/any-windows-any/napcertrelyingparty.h
index ced669e687..dfc61d122e 100644
--- a/lib/libc/include/any-windows-any/napcertrelyingparty.h
+++ b/lib/libc/include/any-windows-any/napcertrelyingparty.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napcertrelyingparty.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napcertrelyingparty.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napcommon.h b/lib/libc/include/any-windows-any/napcommon.h
index 79ba5afc9b..8f57316415 100644
--- a/lib/libc/include/any-windows-any/napcommon.h
+++ b/lib/libc/include/any-windows-any/napcommon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napcommon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napcommon.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napenforcementclient.h b/lib/libc/include/any-windows-any/napenforcementclient.h
index dac6ae0704..f7998ef8eb 100644
--- a/lib/libc/include/any-windows-any/napenforcementclient.h
+++ b/lib/libc/include/any-windows-any/napenforcementclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napenforcementclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napenforcementclient.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napmanagement.h b/lib/libc/include/any-windows-any/napmanagement.h
index c961deab0e..2cd8941ee6 100644
--- a/lib/libc/include/any-windows-any/napmanagement.h
+++ b/lib/libc/include/any-windows-any/napmanagement.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napmanagement.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napmanagement.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napprotocol.h b/lib/libc/include/any-windows-any/napprotocol.h
index 79202b4eea..bd2072ce3b 100644
--- a/lib/libc/include/any-windows-any/napprotocol.h
+++ b/lib/libc/include/any-windows-any/napprotocol.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napprotocol.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napprotocol.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napservermanagement.h b/lib/libc/include/any-windows-any/napservermanagement.h
index a8f630747e..468786fad8 100644
--- a/lib/libc/include/any-windows-any/napservermanagement.h
+++ b/lib/libc/include/any-windows-any/napservermanagement.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napservermanagement.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napservermanagement.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napsystemhealthagent.h b/lib/libc/include/any-windows-any/napsystemhealthagent.h
index b57143334f..a5c139e74d 100644
--- a/lib/libc/include/any-windows-any/napsystemhealthagent.h
+++ b/lib/libc/include/any-windows-any/napsystemhealthagent.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napsystemhealthagent.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napsystemhealthagent.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/napsystemhealthvalidator.h b/lib/libc/include/any-windows-any/napsystemhealthvalidator.h
index df785c94a7..923f060621 100644
--- a/lib/libc/include/any-windows-any/napsystemhealthvalidator.h
+++ b/lib/libc/include/any-windows-any/napsystemhealthvalidator.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/napsystemhealthvalidator.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/napsystemhealthvalidator.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/naptypes.h b/lib/libc/include/any-windows-any/naptypes.h
index d00d4f520a..7f2f2ab8a0 100644
--- a/lib/libc/include/any-windows-any/naptypes.h
+++ b/lib/libc/include/any-windows-any/naptypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/naptypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/naptypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/netcfgn.h b/lib/libc/include/any-windows-any/netcfgn.h
index 25204e4f2d..96adc6cf4a 100644
--- a/lib/libc/include/any-windows-any/netcfgn.h
+++ b/lib/libc/include/any-windows-any/netcfgn.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/netcfgn.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/netcfgn.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/netcfgx.h b/lib/libc/include/any-windows-any/netcfgx.h
index fe50972633..a4fe148940 100644
--- a/lib/libc/include/any-windows-any/netcfgx.h
+++ b/lib/libc/include/any-windows-any/netcfgx.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/netcfgx.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/netcfgx.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/netfw.h b/lib/libc/include/any-windows-any/netfw.h
index df2f18ec4c..52802f8a75 100644
--- a/lib/libc/include/any-windows-any/netfw.h
+++ b/lib/libc/include/any-windows-any/netfw.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/netfw.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/netfw.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/netlistmgr.h b/lib/libc/include/any-windows-any/netlistmgr.h
index 00ebcebc0c..d2e67b292e 100644
--- a/lib/libc/include/any-windows-any/netlistmgr.h
+++ b/lib/libc/include/any-windows-any/netlistmgr.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/netlistmgr.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/netlistmgr.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/ntdddisk.h b/lib/libc/include/any-windows-any/ntdddisk.h
index fa0b7865e2..ed03237038 100644
--- a/lib/libc/include/any-windows-any/ntdddisk.h
+++ b/lib/libc/include/any-windows-any/ntdddisk.h
@@ -366,6 +366,9 @@ typedef struct _PARTITION_INFORMATION_MBR {
BOOLEAN BootIndicator;
BOOLEAN RecognizedPartition;
ULONG HiddenSectors;
+#if NTDDI_VERSION > NTDDI_WINBLUE
+ GUID PartitionId;
+#endif
} PARTITION_INFORMATION_MBR, *PPARTITION_INFORMATION_MBR;
typedef struct _PARTITION_INFORMATION_EX {
@@ -374,6 +377,9 @@ typedef struct _PARTITION_INFORMATION_EX {
LARGE_INTEGER PartitionLength;
ULONG PartitionNumber;
BOOLEAN RewritePartition;
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+ BOOLEAN IsServicePartition;
+#endif
_ANONYMOUS_UNION union {
PARTITION_INFORMATION_MBR Mbr;
PARTITION_INFORMATION_GPT Gpt;
diff --git a/lib/libc/include/any-windows-any/ntioring_x.h b/lib/libc/include/any-windows-any/ntioring_x.h
new file mode 100644
index 0000000000..2fe02aabb4
--- /dev/null
+++ b/lib/libc/include/any-windows-any/ntioring_x.h
@@ -0,0 +1,54 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _NTIORINGX_H_
+#define _NTIORINGX_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN10_CO
+
+typedef enum IORING_VERSION {
+ IORING_VERSION_INVALID = 0,
+ IORING_VERSION_1
+} IORING_VERSION;
+
+typedef enum IORING_FEATURE_FLAGS {
+ IORING_FEATURE_FLAGS_NONE = 0,
+ IORING_FEATURE_UM_EMULATION = 0x00000001,
+ IORING_FEATURE_SET_COMPLETION_EVENT = 0x00000002
+} IORING_FEATURE_FLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(IORING_FEATURE_FLAGS)
+
+typedef enum IORING_OP_CODE {
+ IORING_OP_NOP,
+ IORING_OP_READ,
+ IORING_OP_REGISTER_FILES,
+ IORING_OP_REGISTER_BUFFERS,
+ IORING_OP_CANCEL
+} IORING_OP_CODE;
+
+typedef struct IORING_BUFFER_INFO {
+ void* Address;
+ UINT32 Length;
+} IORING_BUFFER_INFO;
+
+typedef struct IORING_REGISTERED_BUFFER {
+ UINT32 BufferIndex;
+ UINT32 Offset;
+} IORING_REGISTERED_BUFFER;
+
+#define IORING_SUBMIT_WAIT_ALL MAXUINT32
+
+#endif /* NTDDI_WIN10_CO */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTIORINGX_H_ */
diff --git a/lib/libc/include/any-windows-any/ntsecapi.h b/lib/libc/include/any-windows-any/ntsecapi.h
index 2d4f141b14..f5dba11a09 100644
--- a/lib/libc/include/any-windows-any/ntsecapi.h
+++ b/lib/libc/include/any-windows-any/ntsecapi.h
@@ -3,6 +3,485 @@
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
+
+#ifdef DEFINE_GUID
+
+#if !defined(INITGUID) || !defined(Audit_System_SecurityStateChange_defined)
+DEFINE_GUID(Audit_System_SecurityStateChange, 0x0cce9210, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_System_SecurityStateChange_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_System_SecuritySubsystemExtension_defined)
+DEFINE_GUID(Audit_System_SecuritySubsystemExtension, 0x0cce9211, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_System_SecuritySubsystemExtension_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_System_Integrity_defined)
+DEFINE_GUID(Audit_System_Integrity, 0x0cce9212, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_System_Integrity_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_System_IPSecDriverEvents_defined)
+DEFINE_GUID(Audit_System_IPSecDriverEvents, 0x0cce9213, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_System_IPSecDriverEvents_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_System_Others_defined)
+DEFINE_GUID(Audit_System_Others, 0x0cce9214, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_System_Others_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_Logon_defined)
+DEFINE_GUID(Audit_Logon_Logon, 0x0cce9215, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_Logon_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_Logoff_defined)
+DEFINE_GUID(Audit_Logon_Logoff, 0x0cce9216, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_Logoff_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_AccountLockout_defined)
+DEFINE_GUID(Audit_Logon_AccountLockout, 0x0cce9217, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_AccountLockout_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_IPSecMainMode_defined)
+DEFINE_GUID(Audit_Logon_IPSecMainMode, 0x0cce9218, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_IPSecMainMode_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_IPSecQuickMode_defined)
+DEFINE_GUID(Audit_Logon_IPSecQuickMode, 0x0cce9219, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_IPSecQuickMode_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_IPSecUserMode_defined)
+DEFINE_GUID(Audit_Logon_IPSecUserMode, 0x0cce921a, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_IPSecUserMode_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_SpecialLogon_defined)
+DEFINE_GUID(Audit_Logon_SpecialLogon, 0x0cce921b, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_SpecialLogon_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_Others_defined)
+DEFINE_GUID(Audit_Logon_Others, 0x0cce921c, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_Others_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_FileSystem_defined)
+DEFINE_GUID(Audit_ObjectAccess_FileSystem, 0x0cce921d, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_FileSystem_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Registry_defined)
+DEFINE_GUID(Audit_ObjectAccess_Registry, 0x0cce921e, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_Registry_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Kernel_defined)
+DEFINE_GUID(Audit_ObjectAccess_Kernel, 0x0cce921f, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_Kernel_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Sam_defined)
+DEFINE_GUID(Audit_ObjectAccess_Sam, 0x0cce9220, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_Sam_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_CertificationServices_defined)
+DEFINE_GUID(Audit_ObjectAccess_CertificationServices, 0x0cce9221, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_CertificationServices_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_ApplicationGenerated_defined)
+DEFINE_GUID(Audit_ObjectAccess_ApplicationGenerated, 0x0cce9222, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_ApplicationGenerated_defined
+#endif
+#endif
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Handle_defined)
+DEFINE_GUID(Audit_ObjectAccess_Handle, 0x0cce9223, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_Handle_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Share_defined)
+DEFINE_GUID(Audit_ObjectAccess_Share, 0x0cce9224, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_Share_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_FirewallPacketDrops_defined)
+DEFINE_GUID(Audit_ObjectAccess_FirewallPacketDrops, 0x0cce9225, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_FirewallPacketDrops_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_FirewallConnection_defined)
+DEFINE_GUID(Audit_ObjectAccess_FirewallConnection, 0x0cce9226, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_FirewallConnection_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Other_defined)
+DEFINE_GUID(Audit_ObjectAccess_Other, 0x0cce9227, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_Other_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_Sensitive_defined)
+DEFINE_GUID(Audit_PrivilegeUse_Sensitive, 0x0cce9228, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PrivilegeUse_Sensitive_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_NonSensitive_defined)
+DEFINE_GUID(Audit_PrivilegeUse_NonSensitive, 0x0cce9229, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PrivilegeUse_NonSensitive_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_Others_defined)
+DEFINE_GUID(Audit_PrivilegeUse_Others, 0x0cce922a, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PrivilegeUse_Others_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_ProcessCreation_defined)
+DEFINE_GUID(Audit_DetailedTracking_ProcessCreation, 0x0cce922b, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_ProcessCreation_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_ProcessTermination_defined)
+DEFINE_GUID(Audit_DetailedTracking_ProcessTermination, 0x0cce922c, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_ProcessTermination_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_DpapiActivity_defined)
+DEFINE_GUID(Audit_DetailedTracking_DpapiActivity, 0x0cce922d, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_DpapiActivity_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_RpcCall_defined)
+DEFINE_GUID(Audit_DetailedTracking_RpcCall, 0x0cce922e, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_RpcCall_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_AuditPolicy_defined)
+DEFINE_GUID(Audit_PolicyChange_AuditPolicy, 0x0cce922f, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_AuditPolicy_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_AuthenticationPolicy_defined)
+DEFINE_GUID(Audit_PolicyChange_AuthenticationPolicy, 0x0cce9230, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_AuthenticationPolicy_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_AuthorizationPolicy_defined)
+DEFINE_GUID(Audit_PolicyChange_AuthorizationPolicy, 0x0cce9231, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_AuthorizationPolicy_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_MpsscvRulePolicy_defined)
+DEFINE_GUID(Audit_PolicyChange_MpsscvRulePolicy, 0x0cce9232, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_MpsscvRulePolicy_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_WfpIPSecPolicy_defined)
+DEFINE_GUID(Audit_PolicyChange_WfpIPSecPolicy, 0x0cce9233, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_WfpIPSecPolicy_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_Others_defined)
+DEFINE_GUID(Audit_PolicyChange_Others, 0x0cce9234, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_Others_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_UserAccount_defined)
+DEFINE_GUID(Audit_AccountManagement_UserAccount, 0x0cce9235, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_UserAccount_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_ComputerAccount_defined)
+DEFINE_GUID(Audit_AccountManagement_ComputerAccount, 0x0cce9236, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_ComputerAccount_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_SecurityGroup_defined)
+DEFINE_GUID(Audit_AccountManagement_SecurityGroup, 0x0cce9237, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_SecurityGroup_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_DistributionGroup_defined)
+DEFINE_GUID(Audit_AccountManagement_DistributionGroup, 0x0cce9238, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_DistributionGroup_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_ApplicationGroup_defined)
+DEFINE_GUID(Audit_AccountManagement_ApplicationGroup, 0x0cce9239, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_ApplicationGroup_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_Others_defined)
+DEFINE_GUID(Audit_AccountManagement_Others, 0x0cce923a, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_Others_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DSAccess_DSAccess_defined)
+DEFINE_GUID(Audit_DSAccess_DSAccess, 0x0cce923b, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DSAccess_DSAccess_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DsAccess_AdAuditChanges_defined)
+DEFINE_GUID(Audit_DsAccess_AdAuditChanges, 0x0cce923c, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DsAccess_AdAuditChanges_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Ds_Replication_defined)
+DEFINE_GUID(Audit_Ds_Replication, 0x0cce923d, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Ds_Replication_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Ds_DetailedReplication_defined)
+DEFINE_GUID(Audit_Ds_DetailedReplication, 0x0cce923e, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Ds_DetailedReplication_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountLogon_CredentialValidation_defined)
+DEFINE_GUID(Audit_AccountLogon_CredentialValidation, 0x0cce923f, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountLogon_CredentialValidation_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountLogon_Kerberos_defined)
+DEFINE_GUID(Audit_AccountLogon_Kerberos, 0x0cce9240, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountLogon_Kerberos_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountLogon_Others_defined)
+DEFINE_GUID(Audit_AccountLogon_Others, 0x0cce9241, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountLogon_Others_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountLogon_KerbCredentialValidation_defined)
+DEFINE_GUID(Audit_AccountLogon_KerbCredentialValidation, 0x0cce9242, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountLogon_KerbCredentialValidation_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_NPS_defined)
+DEFINE_GUID(Audit_Logon_NPS, 0x0cce9243, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_NPS_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_DetailedFileShare_defined)
+DEFINE_GUID(Audit_ObjectAccess_DetailedFileShare, 0x0cce9244, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_DetailedFileShare_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_RemovableStorage_defined)
+DEFINE_GUID(Audit_ObjectAccess_RemovableStorage, 0x0cce9245, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_RemovableStorage_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_CbacStaging_defined)
+DEFINE_GUID(Audit_ObjectAccess_CbacStaging, 0x0cce9246, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_CbacStaging_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_Claims_defined)
+DEFINE_GUID(Audit_Logon_Claims, 0x0cce9247, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_Claims_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_PnpActivity_defined)
+DEFINE_GUID(Audit_DetailedTracking_PnpActivity, 0x0cce9248, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_PnpActivity_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_Groups_defined)
+DEFINE_GUID(Audit_Logon_Groups, 0x0cce9249, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_Groups_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_TokenRightAdjusted_defined)
+DEFINE_GUID(Audit_DetailedTracking_TokenRightAdjusted, 0x0cce924a, 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_TokenRightAdjusted_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_System_defined)
+DEFINE_GUID(Audit_System, 0x69979848, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_System_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_Logon_defined)
+DEFINE_GUID(Audit_Logon, 0x69979849, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_Logon_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_ObjectAccess_defined)
+DEFINE_GUID(Audit_ObjectAccess, 0x6997984a, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_ObjectAccess_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_defined)
+DEFINE_GUID(Audit_PrivilegeUse, 0x6997984b, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PrivilegeUse_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DetailedTracking_defined)
+DEFINE_GUID(Audit_DetailedTracking, 0x6997984c, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DetailedTracking_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_PolicyChange_defined)
+DEFINE_GUID(Audit_PolicyChange, 0x6997984d, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_PolicyChange_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountManagement_defined)
+DEFINE_GUID(Audit_AccountManagement, 0x6997984e, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountManagement_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_DirectoryServiceAccess_defined)
+DEFINE_GUID(Audit_DirectoryServiceAccess, 0x6997984f, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_DirectoryServiceAccess_defined
+#endif
+#endif
+
+#if !defined(INITGUID) || !defined(Audit_AccountLogon_defined)
+DEFINE_GUID(Audit_AccountLogon, 0x69979850, 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+#ifdef INITGUID
+#define Audit_AccountLogon_defined
+#endif
+#endif
+#endif
+
#ifndef _NTSECAPI_
#define _NTSECAPI_
@@ -414,9 +893,19 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
typedef PVOID LSA_HANDLE,*PLSA_HANDLE;
typedef enum _TRUSTED_INFORMATION_CLASS {
- TrustedDomainNameInformation = 1,TrustedControllersInformation,TrustedPosixOffsetInformation,TrustedPasswordInformation,
- TrustedDomainInformationBasic,TrustedDomainInformationEx,TrustedDomainAuthInformation,TrustedDomainFullInformation,
- TrustedDomainAuthInformationInternal,TrustedDomainFullInformationInternal,TrustedDomainInformationEx2Internal,TrustedDomainFullInformation2Internal
+ TrustedDomainNameInformation = 1,
+ TrustedControllersInformation,
+ TrustedPosixOffsetInformation,
+ TrustedPasswordInformation,
+ TrustedDomainInformationBasic,
+ TrustedDomainInformationEx,
+ TrustedDomainAuthInformation,
+ TrustedDomainFullInformation,
+ TrustedDomainAuthInformationInternal,
+ TrustedDomainFullInformationInternal,
+ TrustedDomainInformationEx2Internal,
+ TrustedDomainFullInformation2Internal,
+ TrustedDomainSupportedEncryptionTypes
} TRUSTED_INFORMATION_CLASS,*PTRUSTED_INFORMATION_CLASS;
typedef struct _TRUSTED_DOMAIN_NAME_INFO {
@@ -456,7 +945,20 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010
#define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020
#define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040
+
+#if _WIN32_WINNT >= 0x0600
#define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080
+#define TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS 0x00000100
+#endif
+
+#if _WIN32_WINNT >= 0x0602
+#define TRUST_ATTRIBUTE_CROSS_ORGANIZATION_NO_TGT_DELEGATION 0x00000200
+#define TRUST_ATTRIBUTE_PIM_TRUST 0x00000400
+#endif
+
+#if _WIN32_WINNT >= 0x0603
+#define TRUST_ATTRIBUTE_CROSS_ORGANIZATION_ENABLE_TGT_DELEGATION 0x00000800
+#endif
#define TRUST_ATTRIBUTES_VALID 0xFF03FFFF
#define TRUST_ATTRIBUTES_USER 0xFF000000
@@ -514,6 +1016,10 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
} TRUSTED_DOMAIN_FULL_INFORMATION2,*PTRUSTED_DOMAIN_FULL_INFORMATION2;
+ typedef struct _TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES {
+ ULONG SupportedEncryptionTypes;
+ } TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES,*PTRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES;
+
typedef enum {
ForestTrustTopLevelName,ForestTrustTopLevelNameEx,ForestTrustDomainInfo,ForestTrustRecordTypeLast = ForestTrustDomainInfo
} LSA_FOREST_TRUST_RECORD_TYPE;
@@ -592,7 +1098,7 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
ULONG FailedAttemptCountSinceLastSuccessfulLogon;
} LSA_LAST_INTER_LOGON_INFO,*PLSA_LAST_INTER_LOGON_INFO;
#endif
-
+
typedef struct _SECURITY_LOGON_SESSION_DATA {
ULONG Size;
LUID LogonId;
@@ -634,6 +1140,52 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE PolicyHandle,ULONG Count,PLSA_UNICODE_STRING Names,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_SID *Sids);
NTSTATUS NTAPI LsaLookupNames2(LSA_HANDLE PolicyHandle,ULONG Flags,ULONG Count,PLSA_UNICODE_STRING Names,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_SID2 *Sids);
NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE PolicyHandle,ULONG Count,PSID *Sids,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_NAME *Names);
+ NTSTATUS NTAPI LsaLookupSids2(LSA_HANDLE PolicyHandle,ULONG LookupOptions,ULONG Count,PSID *Sids,PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,PLSA_TRANSLATED_NAME *Names);
+ NTSTATUS NTAPI LsaSetCAPs(PLSA_UNICODE_STRING CAPDNs,ULONG CAPDNCount,ULONG Flags);
+ NTSTATUS NTAPI LsaGetAppliedCAPIDs(PLSA_UNICODE_STRING SystemName,PSID **CAPIDs,PULONG CAPIDCount);
+
+ #define MAXIMUM_CAPES_PER_CAP 0x7f
+
+ #define CENTRAL_ACCESS_POLICY_OWNER_RIGHTS_PRESENT_FLAG 0x00000001
+ #define CENTRAL_ACCESS_POLICY_STAGED_OWNER_RIGHTS_PRESENT_FLAG 0x00000100
+ #define CENTRAL_ACCESS_POLICY_STAGED_FLAG 0x00010000
+ #define STAGING_FLAG(Effective) ((Effective & 0xf) << 8)
+
+ #define CENTRAL_ACCESS_POLICY_VALID_FLAG_MASK (CENTRAL_ACCESS_POLICY_OWNER_RIGHTS_PRESENT_FLAG | \
+ CENTRAL_ACCESS_POLICY_STAGED_OWNER_RIGHTS_PRESENT_FLAG | \
+ CENTRAL_ACCESS_POLICY_STAGED_FLAG)
+
+ #define LSASETCAPS_RELOAD_FLAG 0x00000001
+ #define LSASETCAPS_VALID_FLAG_MASK LSASETCAPS_RELOAD_FLAG
+
+ typedef struct _CENTRAL_ACCESS_POLICY_ENTRY {
+ LSA_UNICODE_STRING Name;
+ LSA_UNICODE_STRING Description;
+ LSA_UNICODE_STRING ChangeId;
+ ULONG LengthAppliesTo;
+ PUCHAR AppliesTo;
+ ULONG LengthSD;
+ PSECURITY_DESCRIPTOR SD;
+ ULONG LengthStagedSD;
+ PSECURITY_DESCRIPTOR StagedSD;
+ ULONG Flags;
+ } CENTRAL_ACCESS_POLICY_ENTRY, *PCENTRAL_ACCESS_POLICY_ENTRY;
+
+ typedef const CENTRAL_ACCESS_POLICY_ENTRY *PCCENTRAL_ACCESS_POLICY_ENTRY;
+
+ typedef struct _CENTRAL_ACCESS_POLICY {
+ PSID CAPID;
+ LSA_UNICODE_STRING Name;
+ LSA_UNICODE_STRING Description;
+ LSA_UNICODE_STRING ChangeId;
+ ULONG Flags;
+ ULONG CAPECount;
+ PCENTRAL_ACCESS_POLICY_ENTRY *CAPEs;
+ } CENTRAL_ACCESS_POLICY, *PCENTRAL_ACCESS_POLICY;
+
+ typedef const CENTRAL_ACCESS_POLICY *PCCENTRAL_ACCESS_POLICY;
+
+ NTSTATUS NTAPI LsaQueryCAPs(PSID *CAPIDs,ULONG CAPIDCount,PCENTRAL_ACCESS_POLICY *CAPs,PULONG CAPCount);
#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight")
#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight")
@@ -674,7 +1226,11 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#endif
enum NEGOTIATE_MESSAGES {
- NegEnumPackagePrefixes = 0,NegGetCallerName = 1,NegCallPackageMax
+ NegEnumPackagePrefixes = 0,
+ NegGetCallerName = 1,
+ NegTransferCredentials = 2,
+ NegMsgReserved1 = 3,
+ NegCallPackageMax
};
#define NEGOTIATE_MAX_PREFIX 32
@@ -733,6 +1289,10 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define DOMAIN_PASSWORD_STORE_CLEARTEXT __MSABI_LONG(0x00000010)
#define DOMAIN_REFUSE_PASSWORD_CHANGE __MSABI_LONG(0x00000020)
+#if _WIN32_WINNT >= 0x0502
+#define DOMAIN_NO_LM_OWF_CHANGE __MSABI_LONG(0x00000040)
+#endif
+
#ifndef _PASSWORD_NOTIFICATION_DEFINED
#define _PASSWORD_NOTIFICATION_DEFINED
typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING UserName,ULONG RelativeId,PUNICODE_STRING NewPassword);
@@ -755,7 +1315,15 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
- MsV1_0InteractiveLogon = 2,MsV1_0Lm20Logon,MsV1_0NetworkLogon,MsV1_0SubAuthLogon,MsV1_0WorkstationUnlockLogon = 7
+ MsV1_0InteractiveLogon = 2,
+ MsV1_0Lm20Logon,
+ MsV1_0NetworkLogon,
+ MsV1_0SubAuthLogon,
+ MsV1_0WorkstationUnlockLogon = 7,
+ MsV1_0S4ULogon = 12,
+ MsV1_0VirtualLogon = 82,
+ MsV1_0NoElevationLogon,
+ MsV1_0LuidLogon
} MSV1_0_LOGON_SUBMIT_TYPE,*PMSV1_0_LOGON_SUBMIT_TYPE;
typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
@@ -811,6 +1379,15 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define MSV1_0_SUBAUTHENTICATION_DLL_EX 0x00100000
#define MSV1_0_ALLOW_MSVCHAPV2 0x00010000
+#if _WIN32_WINNT >= 0x0600
+#define MSV1_0_S4U2SELF 0x00020000
+#define MSV1_0_CHECK_LOGONHOURS_FOR_S4U 0x00040000
+#endif
+
+#if _WIN32_WINNT >= 0x0602
+#define MSV1_0_INTERNET_DOMAIN 0x00080000
+#endif
+
#define MSV1_0_SUBAUTHENTICATION_DLL 0xFF000000
#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
#define MSV1_0_MNS_LOGON 0x01000000
@@ -841,6 +1418,19 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
ULONG SubAuthPackageId;
} MSV1_0_SUBAUTH_LOGON,*PMSV1_0_SUBAUTH_LOGON;
+#if _WIN32_WINNT >= 0x0600
+
+#define MSV1_0_S4U_LOGON_FLAG_CHECK_LOGONHOURS 0x2
+
+ typedef struct _MSV1_0_S4U_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ ULONG Flags;
+ UNICODE_STRING UserPrincipalName;
+ UNICODE_STRING DomainName;
+ } MSV1_0_S4U_LOGON, *PMSV1_0_S4U_LOGON;
+
+#endif
+
#define LOGON_GUEST 0x01
#define LOGON_NOENCRYPTION 0x02
#define LOGON_CACHED_ACCOUNT 0x04
@@ -851,6 +1441,21 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define LOGON_NTLMV2_ENABLED 0x100
#define LOGON_RESOURCE_GROUPS 0x200
#define LOGON_PROFILE_PATH_RETURNED 0x400
+#define LOGON_NT_V2 0x800
+#define LOGON_LM_V2 0x1000
+#define LOGON_NTLM_V2 0x2000
+
+#if _WIN32_WINNT >= 0x0600
+#define LOGON_OPTIMIZED 0x4000
+#define LOGON_WINLOGON 0x8000
+#define LOGON_PKINIT 0x10000
+#define LOGON_NO_OPTIMIZED 0x20000
+#endif
+
+#if _WIN32_WINNT >= 0x0602
+#define LOGON_NO_ELEVATION 0x40000
+#define LOGON_MANAGED_SERVICE 0x80000
+#endif
#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xFF000000
@@ -869,9 +1474,34 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
} MSV1_0_LM20_LOGON_PROFILE,*PMSV1_0_LM20_LOGON_PROFILE;
#define MSV1_0_OWF_PASSWORD_LENGTH 16
+#define MSV1_0_SHA_PASSWORD_LENGTH 20
+#define MSV1_0_CREDENTIAL_KEY_LENGTH 20
#define MSV1_0_CRED_LM_PRESENT 0x1
#define MSV1_0_CRED_NT_PRESENT 0x2
+#define MSV1_0_CRED_REMOVED 0x4
+#define MSV1_0_CRED_CREDKEY_PRESENT 0x8
+#define MSV1_0_CRED_SHA_PRESENT 0x10
+
#define MSV1_0_CRED_VERSION 0
+#define MSV1_0_CRED_VERSION_V2 2
+#define MSV1_0_CRED_VERSION_V3 4
+#define MSV1_0_CRED_VERSION_IUM 0xffff0001
+#define MSV1_0_CRED_VERSION_REMOTE 0xffff0002
+#define MSV1_0_CRED_VERSION_ARSO 0xffff0003
+#define MSV1_0_CRED_VERSION_RESERVED_1 0xfffffffe
+#define MSV1_0_CRED_VERSION_INVALID 0xffffffff
+
+ typedef enum _MSV1_0_CREDENTIAL_KEY_TYPE {
+ InvalidCredKey,
+ DeprecatedIUMCredKey,
+ DomainUserCredKey,
+ LocalUserCredKey,
+ ExternallySuppliedCredKey
+ } MSV1_0_CREDENTIAL_KEY_TYPE;
+
+ typedef struct _MSV1_0_CREDENTIAL_KEY {
+ UCHAR Data[MSV1_0_CREDENTIAL_KEY_LENGTH];
+ } MSV1_0_CREDENTIAL_KEY, *PMSV1_0_CREDENTIAL_KEY;
typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
ULONG Version;
@@ -880,6 +1510,40 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
} MSV1_0_SUPPLEMENTAL_CREDENTIAL,*PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
+ typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL_V2 {
+ ULONG Version;
+ ULONG Flags;
+ UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
+ MSV1_0_CREDENTIAL_KEY CredentialKey;
+ } MSV1_0_SUPPLEMENTAL_CREDENTIAL_V2, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL_V2;
+
+ typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL_V3 {
+ ULONG Version;
+ ULONG Flags;
+ MSV1_0_CREDENTIAL_KEY_TYPE CredentialKeyType;
+ UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
+ MSV1_0_CREDENTIAL_KEY CredentialKey;
+ UCHAR ShaPassword[MSV1_0_SHA_PASSWORD_LENGTH];
+ } MSV1_0_SUPPLEMENTAL_CREDENTIAL_V3, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL_V3;
+
+ typedef struct _MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL {
+ ULONG Version;
+ ULONG EncryptedCredsSize;
+ UCHAR EncryptedCreds[1];
+ } MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL;
+
+#define MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL_SIZE(Creds) \
+ (FIELD_OFFSET(MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL, EncryptedCreds) + (Creds)->EncryptedCredsSize)
+
+ typedef struct _MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL {
+ ULONG Version;
+ ULONG Flags;
+ MSV1_0_CREDENTIAL_KEY CredentialKey;
+ MSV1_0_CREDENTIAL_KEY_TYPE CredentialKeyType;
+ ULONG EncryptedCredsSize;
+ UCHAR EncryptedCreds[1];
+ } MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL;
+
#define MSV1_0_NTLM3_RESPONSE_LENGTH 16
#define MSV1_0_NTLM3_OWF_LENGTH 16
@@ -888,6 +1552,14 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define MSV1_0_AV_FLAG_FORCE_GUEST 0x00000001
+#if _WIN32_WINNT >= 0x0600
+#define MSV1_0_AV_FLAG_MIC_HANDSHAKE_MESSAGES 0x00000002
+#endif
+
+#if _WIN32_WINNT >= 0x0601
+#define MSV1_0_AV_FLAG_UNVERIFIED_TARGET 0x00000004
+#endif
+
typedef struct _MSV1_0_NTLM3_RESPONSE {
UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH];
UCHAR RespType;
@@ -903,6 +1575,7 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH)
#define MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH RTL_SIZEOF_THROUGH_FIELD(MSV1_0_NTLM3_RESPONSE,AvPairsOff)
+/* MsvAvSingleHost present in MS-NLMP specifications but not in WinSDK */
typedef enum {
MsvAvEOL,
MsvAvNbComputerName,
@@ -915,6 +1588,7 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#if _WIN32_WINNT >= 0x0600
,MsvAvTimestamp
,MsvAvRestrictions
+ ,MsvAvSingleHost = MsvAvRestrictions
,MsvAvTargetName
,MsvAvChannelBindings
#endif
@@ -924,13 +1598,44 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
typedef struct _MSV1_0_AV_PAIR {
USHORT AvId;
USHORT AvLen;
-
} MSV1_0_AV_PAIR,*PMSV1_0_AV_PAIR;
typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
- MsV1_0Lm20ChallengeRequest = 0,MsV1_0Lm20GetChallengeResponse,MsV1_0EnumerateUsers,MsV1_0GetUserInfo,MsV1_0ReLogonUsers,MsV1_0ChangePassword,
- MsV1_0ChangeCachedPassword,MsV1_0GenericPassthrough,MsV1_0CacheLogon,MsV1_0SubAuth,MsV1_0DeriveCredential,MsV1_0CacheLookup,
- MsV1_0SetProcessOption
+ MsV1_0Lm20ChallengeRequest = 0,
+ MsV1_0Lm20GetChallengeResponse,
+ MsV1_0EnumerateUsers,
+ MsV1_0GetUserInfo,
+ MsV1_0ReLogonUsers,
+ MsV1_0ChangePassword,
+ MsV1_0ChangeCachedPassword,
+ MsV1_0GenericPassthrough,
+ MsV1_0CacheLogon,
+ MsV1_0SubAuth,
+ MsV1_0DeriveCredential,
+ MsV1_0CacheLookup,
+#if _WIN32_WINNT >= 0x0501
+ MsV1_0SetProcessOption,
+#endif
+#if _WIN32_WINNT >= 0x0600
+ MsV1_0ConfigLocalAliases,
+ MsV1_0ClearCachedCredentials,
+#endif
+#if _WIN32_WINNT >= 0x0601
+ MsV1_0LookupToken,
+#endif
+#if _WIN32_WINNT >= 0x0602
+ MsV1_0ValidateAuth,
+ MsV1_0CacheLookupEx,
+ MsV1_0GetCredentialKey,
+ MsV1_0SetThreadOption,
+#endif
+#if _WIN32_WINNT >= 0x0A00
+ MsV1_0DecryptDpapiMasterKey,
+ MsV1_0GetStrongCredentialKey,
+ MsV1_0TransferCred,
+ MsV1_0ProvisionTbal,
+ MsV1_0DeleteTbalSecrets
+#endif
} MSV1_0_PROTOCOL_MESSAGE_TYPE,*PMSV1_0_PROTOCOL_MESSAGE_TYPE;
typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
@@ -986,6 +1691,7 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define RTL_ENCRYPT_MEMORY_SIZE 8
#define RTL_ENCRYPT_OPTION_CROSS_PROCESS 0x01
#define RTL_ENCRYPT_OPTION_SAME_LOGON 0x02
+#define RTL_ENCRYPT_OPTION_FOR_SYSTEM 0x04
NTSTATUS WINAPI RtlEncryptMemory(PVOID Memory,ULONG MemorySize,ULONG OptionFlags);
NTSTATUS WINAPI RtlDecryptMemory(PVOID Memory,ULONG MemorySize,ULONG OptionFlags);
@@ -997,6 +1703,8 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_ETYPE_DES_CBC_CRC 1
#define KERB_ETYPE_DES_CBC_MD4 2
#define KERB_ETYPE_DES_CBC_MD5 3
+#define KERB_ETYPE_AES128_CTS_HMAC_SHA1_96 17
+#define KERB_ETYPE_AES256_CTS_HMAC_SHA1_96 18
#define KERB_ETYPE_RC4_MD4 -128
#define KERB_ETYPE_RC4_PLAIN2 -129
@@ -1009,6 +1717,8 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_ETYPE_RC4_PLAIN_OLD_EXP -136
#define KERB_ETYPE_RC4_PLAIN -140
#define KERB_ETYPE_RC4_PLAIN_EXP -141
+#define KERB_ETYPE_AES128_CTS_HMAC_SHA1_96_PLAIN -148
+#define KERB_ETYPE_AES256_CTS_HMAC_SHA1_96_PLAIN -149
#define KERB_ETYPE_DSA_SHA1_CMS 9
#define KERB_ETYPE_RSA_MD5_CMS 10
@@ -1040,6 +1750,9 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_CHECKSUM_KRB_DES_MAC_K 5
#define KERB_CHECKSUM_MD5 7
#define KERB_CHECKSUM_MD5_DES 8
+#define KERB_CHECKSUM_SHA1_NEW 14
+#define KERB_CHECKSUM_HMAC_SHA1_96_AES128 15
+#define KERB_CHECKSUM_HMAC_SHA1_96_AES256 16
#define KERB_CHECKSUM_LM -130
#define KERB_CHECKSUM_SHA1 -131
@@ -1050,6 +1763,8 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_CHECKSUM_RC4_MD5 -136
#define KERB_CHECKSUM_MD5_HMAC -137
#define KERB_CHECKSUM_HMAC_MD5 -138
+#define KERB_CHECKSUM_HMAC_SHA1_96_AES128_Ki -150
+#define KERB_CHECKSUM_HMAC_SHA1_96_AES256_Ki -151
#define AUTH_REQ_ALLOW_FORWARDABLE 0x00000001
#define AUTH_REQ_ALLOW_PROXIABLE 0x00000002
@@ -1080,6 +1795,10 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_TICKET_FLAGS_hw_authent 0x00100000
#define KERB_TICKET_FLAGS_ok_as_delegate 0x00040000
#define KERB_TICKET_FLAGS_name_canonicalize 0x00010000
+#if _WIN32_WINNT == 0x0501
+#define KERB_TICKET_FLAGS_cname_in_pa_data 0x00040000
+#endif
+#define KERB_TICKET_FLAGS_enc_pa_rep 0x00010000
#define KERB_TICKET_FLAGS_reserved1 0x00000001
#define KRB_NT_UNKNOWN 0
@@ -1091,12 +1810,21 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KRB_NT_SRV_XHST 4
#define KRB_NT_UID 5
#define KRB_NT_ENTERPRISE_PRINCIPAL 10
+#define KRB_NT_WELLKNOWN 11
+#define KRB_NT_MS_BRANCH_ID -133
#define KRB_NT_ENT_PRINCIPAL_AND_ID -130
#define KRB_NT_MS_PRINCIPAL -128
#define KRB_NT_MS_PRINCIPAL_AND_ID -129
#define KERB_IS_MS_PRINCIPAL(_x_) (((_x_) <= KRB_NT_MS_PRINCIPAL) || ((_x_) >= KRB_NT_ENTERPRISE_PRINCIPAL))
+#if _WIN32_WINNT >= 0x0600
+#define KRB_NT_X500_PRINCIPAL 6
+#endif
+
+#define KRB_WELLKNOWN_STRING L"WELLKNOWN"
+#define KRB_ANONYMOUS_STRING L"ANONYMOUS"
+
#ifndef MICROSOFT_KERBEROS_NAME_A
#define MICROSOFT_KERBEROS_NAME_A "Kerberos"
@@ -1111,12 +1839,22 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_WRAP_NO_ENCRYPT 0x80000001
typedef enum _KERB_LOGON_SUBMIT_TYPE {
- KerbInteractiveLogon = 2,KerbSmartCardLogon = 6,KerbWorkstationUnlockLogon = 7,KerbSmartCardUnlockLogon = 8,KerbProxyLogon = 9,
- KerbTicketLogon = 10,KerbTicketUnlockLogon = 11,KerbS4ULogon = 12
+ KerbInteractiveLogon = 2,
+ KerbSmartCardLogon = 6,
+ KerbWorkstationUnlockLogon = 7,
+ KerbSmartCardUnlockLogon = 8,
+ KerbProxyLogon = 9,
+ KerbTicketLogon = 10,
+ KerbTicketUnlockLogon = 11,
+ KerbS4ULogon = 12,
#if (_WIN32_WINNT >= 0x0600)
- ,KerbCertificateLogon = 13,
- KerbCertificateS4ULogon = 14,
- KerbCertificateUnlockLogon = 15
+ KerbCertificateLogon = 13,
+ KerbCertificateS4ULogon = 14,
+ KerbCertificateUnlockLogon = 15,
+#endif
+#if (_WIN32_WINNT >= 0x0602)
+ KerbNoElevationLogon = 83,
+ KerbLuidLogon = 84
#endif
} KERB_LOGON_SUBMIT_TYPE,*PKERB_LOGON_SUBMIT_TYPE;
@@ -1154,12 +1892,18 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
} KERB_TICKET_LOGON,*PKERB_TICKET_LOGON;
#define KERB_LOGON_FLAG_ALLOW_EXPIRED_TICKET 0x1
+#define KERB_LOGON_FLAG_REDIRECTED 0x2
typedef struct _KERB_TICKET_UNLOCK_LOGON {
KERB_TICKET_LOGON Logon;
LUID LogonId;
} KERB_TICKET_UNLOCK_LOGON,*PKERB_TICKET_UNLOCK_LOGON;
+#if _WIN32_WINNT >= 0x0600
+#define KERB_S4U_LOGON_FLAG_CHECK_LOGONHOURS 0x2
+#define KERB_S4U_LOGON_FLAG_IDENTIFY 0x8
+#endif
+
typedef struct _KERB_S4U_LOGON {
KERB_LOGON_SUBMIT_TYPE MessageType;
ULONG Flags;
@@ -1202,17 +1946,63 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
PUCHAR Value;
} KERB_CRYPTO_KEY,*PKERB_CRYPTO_KEY;
+ typedef struct KERB_CRYPTO_KEY32 {
+ LONG KeyType;
+ ULONG Length;
+ ULONG Offset;
+ } KERB_CRYPTO_KEY32,*PKERB_CRYPTO_KEY32;
+
typedef struct _KERB_TICKET_PROFILE {
KERB_INTERACTIVE_PROFILE Profile;
KERB_CRYPTO_KEY SessionKey;
} KERB_TICKET_PROFILE,*PKERB_TICKET_PROFILE;
typedef enum _KERB_PROTOCOL_MESSAGE_TYPE {
- KerbDebugRequestMessage = 0,KerbQueryTicketCacheMessage,KerbChangeMachinePasswordMessage,KerbVerifyPacMessage,KerbRetrieveTicketMessage,
- KerbUpdateAddressesMessage,KerbPurgeTicketCacheMessage,KerbChangePasswordMessage,KerbRetrieveEncodedTicketMessage,KerbDecryptDataMessage,
- KerbAddBindingCacheEntryMessage,KerbSetPasswordMessage,KerbSetPasswordExMessage,KerbVerifyCredentialsMessage,KerbQueryTicketCacheExMessage,
- KerbPurgeTicketCacheExMessage,KerbRefreshSmartcardCredentialsMessage,KerbAddExtraCredentialsMessage,KerbQuerySupplementalCredentialsMessage,
- KerbTransferCredentialsMessage,KerbQueryTicketCacheEx2Message
+ KerbDebugRequestMessage = 0,
+ KerbQueryTicketCacheMessage,
+ KerbChangeMachinePasswordMessage,
+ KerbVerifyPacMessage,
+ KerbRetrieveTicketMessage,
+ KerbUpdateAddressesMessage,
+ KerbPurgeTicketCacheMessage,
+ KerbChangePasswordMessage,
+ KerbRetrieveEncodedTicketMessage,
+ KerbDecryptDataMessage,
+ KerbAddBindingCacheEntryMessage,
+ KerbSetPasswordMessage,
+ KerbSetPasswordExMessage,
+#if _WIN32_WINNT >= 0x0501
+ KerbVerifyCredentialsMessage,
+ KerbQueryTicketCacheExMessage,
+ KerbPurgeTicketCacheExMessage,
+#endif
+#if _WIN32_WINNT >= 0x0502
+ KerbRefreshSmartcardCredentialsMessage,
+ KerbAddExtraCredentialsMessage,
+ KerbQuerySupplementalCredentialsMessage,
+#endif
+#if _WIN32_WINNT >= 0x0600
+ KerbTransferCredentialsMessage,
+ KerbQueryTicketCacheEx2Message,
+ KerbSubmitTicketMessage,
+ KerbAddExtraCredentialsExMessage,
+#endif
+#if _WIN32_WINNT >= 0x0602
+ KerbQueryKdcProxyCacheMessage,
+ KerbPurgeKdcProxyCacheMessage,
+ KerbQueryTicketCacheEx3Message,
+ KerbCleanupMachinePkinitCredsMessage,
+ KerbAddBindingCacheEntryExMessage,
+ KerbQueryBindingCacheMessage,
+ KerbPurgeBindingCacheMessage,
+ KerbPinKdcMessage,
+ KerbUnpinAllKdcsMessage,
+ KerbQueryDomainExtendedPoliciesMessage,
+ KerbQueryS4U2ProxyCacheMessage,
+#endif
+#if _WIN32_WINNT >= 0x0A00
+ KerbRetrieveKeyTabMessage
+#endif
} KERB_PROTOCOL_MESSAGE_TYPE,*PKERB_PROTOCOL_MESSAGE_TYPE;
typedef struct _KERB_QUERY_TKT_CACHE_REQUEST {
@@ -1255,6 +2045,24 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
ULONG SessionKeyType;
} KERB_TICKET_CACHE_INFO_EX2,*PKERB_TICKET_CACHE_INFO_EX2;
+#if _WIN32_WINNT >= 0x0602
+ typedef struct _KERB_TICKET_CACHE_INFO_EX3 {
+ UNICODE_STRING ClientName;
+ UNICODE_STRING ClientRealm;
+ UNICODE_STRING ServerName;
+ UNICODE_STRING ServerRealm;
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER EndTime;
+ LARGE_INTEGER RenewTime;
+ LONG EncryptionType;
+ ULONG TicketFlags;
+ ULONG SessionKeyType;
+ ULONG BranchId;
+ ULONG CacheFlags;
+ UNICODE_STRING KdcCalled;
+ } KERB_TICKET_CACHE_INFO_EX3, *PKERB_TICKET_CACHE_INFO_EX3;
+#endif
+
typedef struct _KERB_QUERY_TKT_CACHE_RESPONSE {
KERB_PROTOCOL_MESSAGE_TYPE MessageType;
ULONG CountOfTickets;
@@ -1273,6 +2081,14 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
KERB_TICKET_CACHE_INFO_EX2 Tickets[ANYSIZE_ARRAY];
} KERB_QUERY_TKT_CACHE_EX2_RESPONSE,*PKERB_QUERY_TKT_CACHE_EX2_RESPONSE;
+#if _WIN32_WINNT >= 0x0602
+ typedef struct _KERB_QUERY_TKT_CACHE_EX3_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG CountOfTickets;
+ KERB_TICKET_CACHE_INFO_EX3 Tickets[ANYSIZE_ARRAY];
+ } KERB_QUERY_TKT_CACHE_EX3_RESPONSE, *PKERB_QUERY_TKT_CACHE_EX3_RESPONSE;
+#endif
+
#ifndef __SECHANDLE_DEFINED__
typedef struct _SecHandle {
ULONG_PTR dwLower;
@@ -1290,7 +2106,14 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_RETRIEVE_TICKET_USE_CREDHANDLE 0x4
#define KERB_RETRIEVE_TICKET_AS_KERB_CRED 0x8
#define KERB_RETRIEVE_TICKET_WITH_SEC_CRED 0x10
+
+#if _WIN32_WINNT >= 0x0600
#define KERB_RETRIEVE_TICKET_CACHE_TICKET 0x20
+#endif
+
+#if _WIN32_WINNT >= 0x0601
+#define KERB_RETRIEVE_TICKET_MAX_LIFETIME 0x40
+#endif
#define KERB_ETYPE_DEFAULT 0x0
@@ -1366,6 +2189,105 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
KERB_TICKET_CACHE_INFO_EX TicketTemplate;
} KERB_PURGE_TKT_CACHE_EX_REQUEST,*PKERB_PURGE_TKT_CACHE_EX_REQUEST;
+ typedef struct _KERB_SUBMIT_TKT_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+ ULONG Flags;
+ KERB_CRYPTO_KEY32 Key;
+ ULONG KerbCredSize;
+ ULONG KerbCredOffset;
+ } KERB_SUBMIT_TKT_REQUEST, *PKERB_SUBMIT_TKT_REQUEST;
+
+#if _WIN32_WINNT >= 0x0602
+
+ typedef struct _KERB_QUERY_KDC_PROXY_CACHE_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG Flags;
+ LUID LogonId;
+ } KERB_QUERY_KDC_PROXY_CACHE_REQUEST, *PKERB_QUERY_KDC_PROXY_CACHE_REQUEST;
+
+ typedef struct _KDC_PROXY_CACHE_ENTRY_DATA {
+ ULONG64 SinceLastUsed;
+ UNICODE_STRING DomainName;
+ UNICODE_STRING ProxyServerName;
+ UNICODE_STRING ProxyServerVdir;
+ USHORT ProxyServerPort;
+ LUID LogonId;
+ UNICODE_STRING CredUserName;
+ UNICODE_STRING CredDomainName;
+ BOOLEAN GlobalCache;
+ } KDC_PROXY_CACHE_ENTRY_DATA, *PKDC_PROXY_CACHE_ENTRY_DATA;
+
+ typedef struct _KERB_QUERY_KDC_PROXY_CACHE_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG CountOfEntries;
+ PKDC_PROXY_CACHE_ENTRY_DATA Entries;
+ } KERB_QUERY_KDC_PROXY_CACHE_RESPONSE, *PKERB_QUERY_KDC_PROXY_CACHE_RESPONSE;
+
+ typedef struct _KERB_PURGE_KDC_PROXY_CACHE_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG Flags;
+ LUID LogonId;
+ } KERB_PURGE_KDC_PROXY_CACHE_REQUEST, *PKERB_PURGE_KDC_PROXY_CACHE_REQUEST;
+
+ typedef struct _KERB_PURGE_KDC_PROXY_CACHE_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG CountOfPurged;
+ } KERB_PURGE_KDC_PROXY_CACHE_RESPONSE, *PKERB_PURGE_KDC_PROXY_CACHE_RESPONSE;
+
+#define KERB_S4U2PROXY_CACHE_ENTRY_INFO_FLAG_NEGATIVE 0x1
+
+ typedef struct _KERB_S4U2PROXY_CACHE_ENTRY_INFO {
+ UNICODE_STRING ServerName;
+ ULONG Flags;
+ NTSTATUS LastStatus;
+ LARGE_INTEGER Expiry;
+ } KERB_S4U2PROXY_CACHE_ENTRY_INFO, *PKERB_S4U2PROXY_CACHE_ENTRY_INFO;
+
+#define KERB_S4U2PROXY_CRED_FLAG_NEGATIVE 0x1
+
+ typedef struct _KERB_S4U2PROXY_CRED {
+ UNICODE_STRING UserName;
+ UNICODE_STRING DomainName;
+ ULONG Flags;
+ NTSTATUS LastStatus;
+ LARGE_INTEGER Expiry;
+ ULONG CountOfEntries;
+ PKERB_S4U2PROXY_CACHE_ENTRY_INFO Entries;
+ } KERB_S4U2PROXY_CRED, *PKERB_S4U2PROXY_CRED;
+
+ typedef struct _KERB_QUERY_S4U2PROXY_CACHE_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG Flags;
+ LUID LogonId;
+ } KERB_QUERY_S4U2PROXY_CACHE_REQUEST, *PKERB_QUERY_S4U2PROXY_CACHE_REQUEST;
+
+ typedef struct _KERB_QUERY_S4U2PROXY_CACHE_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG CountOfCreds;
+ PKERB_S4U2PROXY_CRED Creds;
+ } KERB_QUERY_S4U2PROXY_CACHE_RESPONSE, *PKERB_QUERY_S4U2PROXY_CACHE_RESPONSE;
+
+#endif
+
+#if _WIN32_WINNT >= 0x0A00
+
+ typedef struct _KERB_RETRIEVE_KEY_TAB_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG Flags;
+ UNICODE_STRING UserName;
+ UNICODE_STRING DomainName;
+ UNICODE_STRING Password;
+ } KERB_RETRIEVE_KEY_TAB_REQUEST, *PKERB_RETRIEVE_KEY_TAB_REQUEST;
+
+ typedef struct _KERB_RETRIEVE_KEY_TAB_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG KeyTabLength;
+ PUCHAR KeyTab;
+ } KERB_RETRIEVE_KEY_TAB_RESPONSE, *PKERB_RETRIEVE_KEY_TAB_RESPONSE;
+
+#endif
+
typedef struct _KERB_CHANGEPASSWORD_REQUEST {
KERB_PROTOCOL_MESSAGE_TYPE MessageType;
UNICODE_STRING DomainName;
@@ -1453,6 +2375,16 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
#define KERB_REQUEST_REPLACE_CREDENTIAL 2
#define KERB_REQUEST_REMOVE_CREDENTIAL 4
+#if _WIN32_WINNT >= 0x0600
+
+ typedef struct _KERB_ADD_CREDENTIALS_REQUEST_EX {
+ KERB_ADD_CREDENTIALS_REQUEST Credentials;
+ ULONG PrincipalNameCount;
+ UNICODE_STRING PrincipalNames[1];
+ } KERB_ADD_CREDENTIALS_REQUEST_EX, *PKERB_ADD_CREDENTIALS_REQUEST_EX;
+
+#endif
+
typedef struct _KERB_TRANSFER_CRED_REQUEST {
KERB_PROTOCOL_MESSAGE_TYPE MessageType;
LUID OriginLogonId;
@@ -1460,7 +2392,79 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
ULONG Flags;
} KERB_TRANSFER_CRED_REQUEST,*PKERB_TRANSFER_CRED_REQUEST;
-#if (_WIN32_WINNT >= 0x0600)
+#define KERB_TRANSFER_CRED_WITH_TICKETS 1
+#define KERB_TRANSFER_CRED_CLEANUP_CREDENTIALS 2
+
+#if _WIN32_WINNT >= 0x0602
+
+ typedef struct _KERB_CLEANUP_MACHINE_PKINIT_CREDS_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+ } KERB_CLEANUP_MACHINE_PKINIT_CREDS_REQUEST, *PKERB_CLEANUP_MACHINE_PKINIT_CREDS_REQUEST;
+
+ typedef struct _KERB_BINDING_CACHE_ENTRY_DATA {
+ ULONG64 DiscoveryTime;
+ UNICODE_STRING RealmName;
+ UNICODE_STRING KdcAddress;
+ ULONG AddressType;
+ ULONG Flags;
+ ULONG DcFlags;
+ ULONG CacheFlags;
+ UNICODE_STRING KdcName;
+ } KERB_BINDING_CACHE_ENTRY_DATA, *PKERB_BINDING_CACHE_ENTRY_DATA;
+
+ typedef struct _KERB_QUERY_BINDING_CACHE_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG CountOfEntries;
+ PKERB_BINDING_CACHE_ENTRY_DATA Entries;
+ } KERB_QUERY_BINDING_CACHE_RESPONSE, *PKERB_QUERY_BINDING_CACHE_RESPONSE;
+
+ typedef struct _KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ UNICODE_STRING RealmName;
+ UNICODE_STRING KdcAddress;
+ ULONG AddressType;
+ ULONG DcFlags;
+ } KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST, *PKERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST;
+
+ typedef struct _KERB_QUERY_BINDING_CACHE_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ } KERB_QUERY_BINDING_CACHE_REQUEST, *PKERB_QUERY_BINDING_CACHE_REQUEST;
+
+ typedef struct _KERB_PURGE_BINDING_CACHE_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ } KERB_PURGE_BINDING_CACHE_REQUEST, *PKERB_PURGE_BINDING_CACHE_REQUEST;
+
+ typedef struct _KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG Flags;
+ UNICODE_STRING DomainName;
+ } KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST, *PKERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST;
+
+#define KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE_FLAG_DAC_DISABLED 1
+
+ typedef struct _KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE {
+ KERB_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG Flags;
+ ULONG ExtendedPolicies;
+ ULONG DsFlags;
+ } KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE, *PKERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE;
+
+ typedef enum _KERB_CERTIFICATE_INFO_TYPE {
+ CertHashInfo = 1,
+ } KERB_CERTIFICATE_INFO_TYPE, *PKERB_CERTIFICATE_INFO_TYPE;
+
+ typedef struct _KERB_CERTIFICATE_HASHINFO {
+ USHORT StoreNameLength;
+ USHORT HashLength;
+ } KERB_CERTIFICATE_HASHINFO, *PKERB_CERTIFICATE_HASHINFO;
+
+ typedef struct _KERB_CERTIFICATE_INFO {
+ ULONG CertInfoSize;
+ ULONG InfoType;
+ } KERB_CERTIFICATE_INFO, *PKERB_CERTIFICATE_INFO;
+
+#endif
#define PER_USER_POLICY_UNCHANGED 0x00
#define PER_USER_AUDIT_SUCCESS_INCLUDE 0x01
@@ -1478,11 +2482,36 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
} AUDIT_POLICY_INFORMATION, *PAUDIT_POLICY_INFORMATION;
typedef const PAUDIT_POLICY_INFORMATION PCAUDIT_POLICY_INFORMATION, LPCAUDIT_POLICY_INFORMATION;
+#define AUDIT_SET_SYSTEM_POLICY 0x0001
+#define AUDIT_QUERY_SYSTEM_POLICY 0x0002
+#define AUDIT_SET_USER_POLICY 0x0004
+#define AUDIT_QUERY_USER_POLICY 0x0008
+#define AUDIT_ENUMERATE_USERS 0x0010
+#define AUDIT_SET_MISC_POLICY 0x0020
+#define AUDIT_QUERY_MISC_POLICY 0x0040
+
+#define AUDIT_GENERIC_ALL (STANDARD_RIGHTS_REQUIRED | AUDIT_SET_SYSTEM_POLICY | AUDIT_QUERY_SYSTEM_POLICY | \
+ AUDIT_SET_USER_POLICY | AUDIT_QUERY_USER_POLICY | AUDIT_ENUMERATE_USERS | \
+ AUDIT_SET_MISC_POLICY | AUDIT_QUERY_MISC_POLICY)
+
+#define AUDIT_GENERIC_READ (STANDARD_RIGHTS_READ | AUDIT_QUERY_SYSTEM_POLICY | AUDIT_QUERY_USER_POLICY | \
+ AUDIT_ENUMERATE_USERS | AUDIT_QUERY_MISC_POLICY)
+
+#define AUDIT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | AUDIT_SET_USER_POLICY | AUDIT_SET_MISC_POLICY | \
+ AUDIT_SET_SYSTEM_POLICY)
+
+#define AUDIT_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE
+
typedef struct _POLICY_AUDIT_SID_ARRAY {
ULONG UsersCount;
PSID *UserSidArray;
} POLICY_AUDIT_SID_ARRAY, *PPOLICY_AUDIT_SID_ARRAY;
+#if _WIN32_WINNT >= 0x0600
+
+#define KERB_CERTIFICATE_LOGON_FLAG_CHECK_DUPLICATES 0x1
+#define KERB_CERTIFICATE_LOGON_FLAG_USE_CERTIFICATE_INFO 0x2
+
typedef struct _KERB_CERTIFICATE_LOGON {
KERB_LOGON_SUBMIT_TYPE MessageType;
UNICODE_STRING DomainName;
@@ -1498,6 +2527,20 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
LUID LogonId;
} KERB_CERTIFICATE_UNLOCK_LOGON, *PKERB_CERTIFICATE_UNLOCK_LOGON;
+#define KERB_CERTIFICATE_S4U_LOGON_FLAG_CHECK_DUPLICATES 0x1
+#define KERB_CERTIFICATE_S4U_LOGON_FLAG_CHECK_LOGONHOURS 0x2
+#define KERB_CERTIFICATE_S4U_LOGON_FLAG_FAIL_IF_NT_AUTH_POLICY_REQUIRED 0x4
+#define KERB_CERTIFICATE_S4U_LOGON_FLAG_IDENTIFY 0x8
+
+ typedef struct _KERB_CERTIFICATE_S4U_LOGON {
+ KERB_LOGON_SUBMIT_TYPE MessageType;
+ ULONG Flags;
+ UNICODE_STRING UserPrincipalName;
+ UNICODE_STRING DomainName;
+ ULONG CertificateLength;
+ PUCHAR Certificate;
+ } KERB_CERTIFICATE_S4U_LOGON, *PKERB_CERTIFICATE_S4U_LOGON;
+
typedef struct _KERB_SMARTCARD_CSP_INFO {
DWORD dwCspInfoLen;
DWORD MessageType;
@@ -1514,6 +2557,8 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
TCHAR bBuffer;
} KERB_SMARTCARD_CSP_INFO, *PKERB_SMARTCARD_CSP_INFO;
+#endif
+
BOOLEAN WINAPI AuditComputeEffectivePolicyBySid(
const PSID pSid,
const GUID *pSubCategoryGuids,
@@ -1615,7 +2660,65 @@ typedef enum _SE_ADT_PARAMETER_TYPE {
PSECURITY_DESCRIPTOR pSecurityDescriptor
);
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+ BOOLEAN NTAPI AuditSetGlobalSaclW(
+ PCWSTR ObjectTypeName,
+ PACL Acl
+ );
+
+ BOOLEAN NTAPI AuditSetGlobalSaclA(
+ PCSTR ObjectTypeName,
+ PACL Acl
+ );
+
+#define AuditSetGlobalSacl __MINGW_NAME_AW(AuditSetGlobalSacl)
+
+ BOOLEAN NTAPI AuditQueryGlobalSaclW(
+ PCWSTR ObjectTypeName,
+ PACL *Acl
+ );
+
+ BOOLEAN NTAPI AuditQueryGlobalSaclA(
+ PCSTR ObjectTypeName,
+ PACL *Acl
+ );
+
+#define AuditQueryGlobalSacl __MINGW_NAME_AW(AuditQueryGlobalSacl)
+
+#if _WIN32_WINNT >= 0x0601
+
+#define PKU2U_PACKAGE_NAME_A "pku2u"
+#define PKU2U_PACKAGE_NAME L"pku2u"
+#define PKU2U_PACKAGE_NAME_W PKU2U_PACKAGE_NAME
+
+ typedef struct _PKU2U_CERT_BLOB {
+ ULONG CertOffset;
+ USHORT CertLength;
+ } PKU2U_CERT_BLOB, *PPKU2U_CERT_BLOB;
+
+#define PKU2U_CREDUI_CONTEXT_VERSION 0x4154414454524543
+
+ typedef struct _PKU2U_CREDUI_CONTEXT {
+ ULONG64 Version;
+ USHORT cbHeaderLength;
+ ULONG cbStructureLength;
+ USHORT CertArrayCount;
+ ULONG CertArrayOffset;
+ } PKU2U_CREDUI_CONTEXT, *PPKU2U_CREDUI_CONTEXT;
+
+ typedef enum _PKU2U_LOGON_SUBMIT_TYPE {
+ Pku2uCertificateS4ULogon = 14,
+ } PKU2U_LOGON_SUBMIT_TYPE, *PPKU2U_LOGON_SUBMIT_TYPE;
+
+ typedef struct _PKU2U_CERTIFICATE_S4U_LOGON {
+ PKU2U_LOGON_SUBMIT_TYPE MessageType;
+ ULONG Flags;
+ UNICODE_STRING UserPrincipalName;
+ UNICODE_STRING DomainName;
+ ULONG CertificateLength;
+ PUCHAR Certificate;
+ } PKU2U_CERTIFICATE_S4U_LOGON, *PPKU2U_CERTIFICATE_S4U_LOGON;
+
+#endif
#ifdef __cplusplus
}
diff --git a/lib/libc/include/any-windows-any/ntstatus.h b/lib/libc/include/any-windows-any/ntstatus.h
index eace03e9f8..c511d2e9c8 100644
--- a/lib/libc/include/any-windows-any/ntstatus.h
+++ b/lib/libc/include/any-windows-any/ntstatus.h
@@ -1002,6 +1002,7 @@
#define STATUS_SYSTEM_DEVICE_NOT_FOUND ((NTSTATUS)0xC0000452)
#define STATUS_RESTART_BOOT_APPLICATION ((NTSTATUS)0xC0000453)
#define STATUS_INSUFFICIENT_NVRAM_RESOURCES ((NTSTATUS)0xC0000454)
+#define STATUS_CASE_DIFFERING_NAMES_IN_DIR ((NTSTATUS)0xC00004B3)
#define STATUS_INVALID_TASK_NAME ((NTSTATUS)0xC0000500)
#define STATUS_INVALID_TASK_INDEX ((NTSTATUS)0xC0000501)
#define STATUS_THREAD_ALREADY_IN_TASK ((NTSTATUS)0xC0000502)
diff --git a/lib/libc/include/any-windows-any/nvme.h b/lib/libc/include/any-windows-any/nvme.h
new file mode 100644
index 0000000000..5787768ccb
--- /dev/null
+++ b/lib/libc/include/any-windows-any/nvme.h
@@ -0,0 +1,2835 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef NVME_INCLUDED
+#define NVME_INCLUDED
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+typedef enum {
+ NVME_AMS_ROUND_ROBIN = 0,
+ NVME_AMS_WEIGHTED_ROUND_ROBIN_URGENT = 1
+} NVME_AMS_OPTION;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONGLONG MQES : 16;
+ ULONGLONG CQR : 1;
+ ULONGLONG AMS_WeightedRoundRobinWithUrgent : 1;
+ ULONGLONG AMS_VendorSpecific : 1;
+ ULONGLONG Reserved0 : 5;
+ ULONGLONG TO : 8;
+ ULONGLONG DSTRD : 4;
+ ULONGLONG NSSRS : 1;
+ ULONGLONG CSS_NVM : 1;
+ ULONGLONG CSS_Reserved0 : 1;
+ ULONGLONG CSS_Reserved1 : 1;
+ ULONGLONG CSS_Reserved2 : 1;
+ ULONGLONG CSS_Reserved3 : 1;
+ ULONGLONG CSS_Reserved4 : 1;
+ ULONGLONG CSS_MultipleIo : 1;
+ ULONGLONG CSS_AdminOnly : 1;
+ ULONGLONG Reserved2 : 3;
+ ULONGLONG MPSMIN : 4;
+ ULONGLONG MPSMAX : 4;
+ ULONGLONG Reserved3 : 8;
+ };
+ ULONGLONG AsUlonglong;
+} NVME_CONTROLLER_CAPABILITIES, *PNVME_CONTROLLER_CAPABILITIES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG TER : 8;
+ ULONG MNR : 8;
+ ULONG MJR : 16;
+ };
+ ULONG AsUlong;
+} NVME_VERSION, *PNVME_VERSION;
+
+typedef enum {
+ NVME_CC_SHN_NO_NOTIFICATION = 0,
+ NVME_CC_SHN_NORMAL_SHUTDOWN = 1,
+ NVME_CC_SHN_ABRUPT_SHUTDOWN = 2
+} NVME_CC_SHN_SHUTDOWN_NOTIFICATIONS;
+
+typedef enum {
+ NVME_CSS_NVM_COMMAND_SET = 0,
+ NVME_CSS_ALL_SUPPORTED_IO_COMMAND_SET = 6,
+ NVME_CSS_ADMIN_COMMAND_SET_ONLY = 7
+} NVME_CSS_COMMAND_SETS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG EN : 1;
+ ULONG Reserved0 : 3;
+ ULONG CSS : 3;
+ ULONG MPS : 4;
+ ULONG AMS : 3;
+ ULONG SHN : 2;
+ ULONG IOSQES : 4;
+ ULONG IOCQES : 4;
+ ULONG Reserved1 : 8;
+ };
+ ULONG AsUlong;
+} NVME_CONTROLLER_CONFIGURATION, *PNVME_CONTROLLER_CONFIGURATION;
+
+typedef enum {
+ NVME_CSTS_SHST_NO_SHUTDOWN = 0,
+ NVME_CSTS_SHST_SHUTDOWN_IN_PROCESS = 1,
+ NVME_CSTS_SHST_SHUTDOWN_COMPLETED = 2
+} NVME_CSTS_SHST_SHUTDOWN_STATUS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG RDY : 1;
+ ULONG CFS : 1;
+ ULONG SHST : 2;
+ ULONG NSSRO : 1;
+ ULONG PP : 1;
+ ULONG Reserved0 : 26;
+ };
+ ULONG AsUlong;
+} NVME_CONTROLLER_STATUS, *PNVME_CONTROLLER_STATUS;
+
+typedef struct _NVME_NVM_SUBSYSTEM_RESET {
+ ULONG NSSRC;
+} NVME_NVM_SUBSYSTEM_RESET, *PNVME_NVM_SUBSYSTEM_RESET;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG ASQS : 12;
+ ULONG Reserved0 : 4;
+ ULONG ACQS : 12;
+ ULONG Reserved1 : 4;
+ };
+ ULONG AsUlong;
+} NVME_ADMIN_QUEUE_ATTRIBUTES, *PNVME_ADMIN_QUEUE_ATTRIBUTES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONGLONG Reserved0 : 12;
+ ULONGLONG ASQB : 52;
+ };
+ ULONGLONG AsUlonglong;
+} NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS, *PNVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONGLONG Reserved0 : 12;
+ ULONGLONG ACQB : 52;
+ };
+ ULONGLONG AsUlonglong;
+} NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS, *PNVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG BIR : 3;
+ ULONG Reserved : 9;
+ ULONG OFST : 20;
+ };
+ ULONG AsUlong;
+} NVME_CONTROLLER_MEMORY_BUFFER_LOCATION, *PNVME_CONTROLLER_MEMORY_BUFFER_LOCATION;
+
+typedef enum {
+ NVME_CMBSZ_SIZE_UNITS_4KB = 0,
+ NVME_CMBSZ_SIZE_UNITS_64KB = 1,
+ NVME_CMBSZ_SIZE_UNITS_1MB = 2,
+ NVME_CMBSZ_SIZE_UNITS_16MB = 3,
+ NVME_CMBSZ_SIZE_UNITS_256MB = 4,
+ NVME_CMBSZ_SIZE_UNITS_4GB = 5,
+ NVME_CMBSZ_SIZE_UNITS_64GB = 6
+} NVME_CMBSZ_SIZE_UNITS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG SQS : 1;
+ ULONG CQS : 1;
+ ULONG LISTS : 1;
+ ULONG RDS : 1;
+ ULONG WDS : 1;
+ ULONG Reserved : 3;
+ ULONG SZU : 4;
+ ULONG SZ : 20;
+ };
+ ULONG AsUlong;
+} NVME_CONTROLLER_MEMORY_BUFFER_SIZE, *PNVME_CONTROLLER_MEMORY_BUFFER_SIZE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG SQT : 16;
+ ULONG Reserved0 : 16;
+ };
+ ULONG AsUlong;
+} NVME_SUBMISSION_QUEUE_TAIL_DOORBELL, *PNVME_SUBMISSION_QUEUE_TAIL_DOORBELL;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG CQH : 16;
+ ULONG Reserved0 : 16;
+ };
+ ULONG AsUlong;
+} NVME_COMPLETION_QUEUE_HEAD_DOORBELL, *PNVME_COMPLETION_QUEUE_HEAD_DOORBELL;
+
+typedef struct {
+ NVME_CONTROLLER_CAPABILITIES CAP;
+ NVME_VERSION VS;
+ ULONG INTMS;
+ ULONG INTMC;
+ NVME_CONTROLLER_CONFIGURATION CC;
+ ULONG Reserved0;
+ NVME_CONTROLLER_STATUS CSTS;
+ NVME_NVM_SUBSYSTEM_RESET NSSR;
+ NVME_ADMIN_QUEUE_ATTRIBUTES AQA;
+ NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS ASQ;
+ NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS ACQ;
+ NVME_CONTROLLER_MEMORY_BUFFER_LOCATION CMBLOC;
+ NVME_CONTROLLER_MEMORY_BUFFER_SIZE CMBSZ;
+ ULONG Reserved2[944];
+ ULONG Reserved3[64];
+ ULONG Doorbells[0];
+} NVME_CONTROLLER_REGISTERS, *PNVME_CONTROLLER_REGISTERS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ USHORT P : 1;
+ USHORT SC : 8;
+ USHORT SCT : 3;
+ USHORT Reserved : 2;
+ USHORT M : 1;
+ USHORT DNR : 1;
+ };
+ USHORT AsUshort;
+} NVME_COMMAND_STATUS, *PNVME_COMMAND_STATUS;
+
+typedef struct {
+ ULONG DW0;
+ ULONG DW1;
+ union {
+ __C89_NAMELESS struct {
+ USHORT SQHD;
+ USHORT SQID;
+ };
+ ULONG AsUlong;
+ } DW2;
+ union {
+ __C89_NAMELESS struct {
+ USHORT CID;
+ NVME_COMMAND_STATUS Status;
+ };
+ ULONG AsUlong;
+ } DW3;
+} NVME_COMPLETION_ENTRY, *PNVME_COMPLETION_ENTRY;
+
+typedef enum {
+ NVME_ASYNC_EVENT_TYPE_ERROR_STATUS = 0,
+ NVME_ASYNC_EVENT_TYPE_HEALTH_STATUS = 1,
+ NVME_ASYNC_EVENT_TYPE_NOTICE = 2,
+ NVME_ASYNC_EVENT_TYPE_IO_COMMAND_SET_STATUS = 6,
+ NVME_ASYNC_EVENT_TYPE_VENDOR_SPECIFIC = 7
+} NVME_ASYNC_EVENT_TYPES;
+
+typedef enum {
+ NVME_ASYNC_ERROR_INVALID_SUBMISSION_QUEUE = 0,
+ NVME_ASYNC_ERROR_INVALID_DOORBELL_WRITE_VALUE = 1,
+ NVME_ASYNC_ERROR_DIAG_FAILURE = 2,
+ NVME_ASYNC_ERROR_PERSISTENT_INTERNAL_DEVICE_ERROR = 3,
+ NVME_ASYNC_ERROR_TRANSIENT_INTERNAL_DEVICE_ERROR = 4,
+ NVME_ASYNC_ERROR_FIRMWARE_IMAGE_LOAD_ERROR = 5
+} NVME_ASYNC_EVENT_ERROR_STATUS_CODES;
+
+typedef enum {
+ NVME_ASYNC_HEALTH_NVM_SUBSYSTEM_RELIABILITY = 0,
+ NVME_ASYNC_HEALTH_TEMPERATURE_THRESHOLD = 1,
+ NVME_ASYNC_HEALTH_SPARE_BELOW_THRESHOLD = 2
+} NVME_ASYNC_EVENT_HEALTH_STATUS_CODES;
+
+typedef enum {
+ NVME_ASYNC_NOTICE_NAMESPACE_ATTRIBUTE_CHANGED = 0,
+ NVME_ASYNC_NOTICE_FIRMWARE_ACTIVATION_STARTING = 1,
+ NVME_ASYNC_NOTICE_TELEMETRY_LOG_CHANGED = 2,
+ NVME_ASYNC_NOTICE_ASYMMETRIC_ACCESS_CHANGE = 3,
+ NVME_ASYNC_NOTICE_PREDICTABLE_LATENCY_EVENT_AGGREGATE_LOG_CHANGE = 4,
+ NVME_ASYNC_NOTICE_LBA_STATUS_INFORMATION_ALERT = 5,
+ NVME_ASYNC_NOTICE_ENDURANCE_GROUP_EVENT_AGGREGATE_LOG_CHANGE = 6,
+ NVME_ASYNC_NOTICE_ZONE_DESCRIPTOR_CHANGED = 0xEF
+} NVME_ASYNC_EVENT_NOTICE_CODES;
+
+typedef enum {
+ NVME_ASYNC_IO_CMD_SET_RESERVATION_LOG_PAGE_AVAILABLE = 0,
+ NVME_ASYNC_IO_CMD_SANITIZE_OPERATION_COMPLETED = 1,
+ NVME_ASYNC_IO_CMD_SANITIZE_OPERATION_COMPLETED_WITH_UNEXPECTED_DEALLOCATION = 2
+} NVME_ASYNC_EVENT_IO_COMMAND_SET_STATUS_CODES;
+
+typedef struct {
+ ULONG AsyncEventType : 3;
+ ULONG Reserved0 : 5;
+ ULONG AsyncEventInfo : 8;
+ ULONG LogPage : 8;
+ ULONG Reserved1 : 8;
+} NVME_COMPLETION_DW0_ASYNC_EVENT_REQUEST, *PNVME_COMPLETION_DW0_ASYNC_EVENT_REQUEST;
+
+typedef enum {
+ NVME_STATUS_TYPE_GENERIC_COMMAND = 0,
+ NVME_STATUS_TYPE_COMMAND_SPECIFIC = 1,
+ NVME_STATUS_TYPE_MEDIA_ERROR = 2,
+ NVME_STATUS_TYPE_VENDOR_SPECIFIC = 7
+} NVME_STATUS_TYPES;
+
+typedef enum {
+ NVME_STATUS_SUCCESS_COMPLETION = 0x00,
+ NVME_STATUS_INVALID_COMMAND_OPCODE = 0x01,
+ NVME_STATUS_INVALID_FIELD_IN_COMMAND = 0x02,
+ NVME_STATUS_COMMAND_ID_CONFLICT = 0x03,
+ NVME_STATUS_DATA_TRANSFER_ERROR = 0x04,
+ NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION = 0x05,
+ NVME_STATUS_INTERNAL_DEVICE_ERROR = 0x06,
+ NVME_STATUS_COMMAND_ABORT_REQUESTED = 0x07,
+ NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION = 0x08,
+ NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND = 0x09,
+ NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND = 0x0A,
+ NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT = 0x0B,
+ NVME_STATUS_COMMAND_SEQUENCE_ERROR = 0x0C,
+ NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR = 0x0D,
+ NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR = 0x0E,
+ NVME_STATUS_DATA_SGL_LENGTH_INVALID = 0x0F,
+ NVME_STATUS_METADATA_SGL_LENGTH_INVALID = 0x10,
+ NVME_STATUS_SGL_DESCR_TYPE_INVALID = 0x11,
+ NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER = 0x12,
+ NVME_STATUS_PRP_OFFSET_INVALID = 0x13,
+ NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED = 0x14,
+ NVME_STATUS_OPERATION_DENIED = 0x15,
+ NVME_STATUS_SGL_OFFSET_INVALID = 0x16,
+ NVME_STATUS_RESERVED = 0x17,
+ NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT = 0x18,
+ NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED = 0x19,
+ NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID = 0x1A,
+ NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT = 0x1B,
+ NVME_STATUS_SANITIZE_FAILED = 0x1C,
+ NVME_STATUS_SANITIZE_IN_PROGRESS = 0x1D,
+ NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID = 0x1E,
+ NVME_STATUS_DIRECTIVE_TYPE_INVALID = 0x70,
+ NVME_STATUS_DIRECTIVE_ID_INVALID = 0x71,
+ NVME_STATUS_NVM_LBA_OUT_OF_RANGE = 0x80,
+ NVME_STATUS_NVM_CAPACITY_EXCEEDED = 0x81,
+ NVME_STATUS_NVM_NAMESPACE_NOT_READY = 0x82,
+ NVME_STATUS_NVM_RESERVATION_CONFLICT = 0x83,
+ NVME_STATUS_FORMAT_IN_PROGRESS = 0x84
+} NVME_STATUS_GENERIC_COMMAND_CODES;
+
+typedef enum {
+ NVME_STATUS_COMPLETION_QUEUE_INVALID = 0x00,
+ NVME_STATUS_INVALID_QUEUE_IDENTIFIER = 0x01,
+ NVME_STATUS_MAX_QUEUE_SIZE_EXCEEDED = 0x02,
+ NVME_STATUS_ABORT_COMMAND_LIMIT_EXCEEDED = 0x03,
+ NVME_STATUS_ASYNC_EVENT_REQUEST_LIMIT_EXCEEDED = 0x05,
+ NVME_STATUS_INVALID_FIRMWARE_SLOT = 0x06,
+ NVME_STATUS_INVALID_FIRMWARE_IMAGE = 0x07,
+ NVME_STATUS_INVALID_INTERRUPT_VECTOR = 0x08,
+ NVME_STATUS_INVALID_LOG_PAGE = 0x09,
+ NVME_STATUS_INVALID_FORMAT = 0x0A,
+ NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_CONVENTIONAL_RESET = 0x0B,
+ NVME_STATUS_INVALID_QUEUE_DELETION = 0x0C,
+ NVME_STATUS_FEATURE_ID_NOT_SAVEABLE = 0x0D,
+ NVME_STATUS_FEATURE_NOT_CHANGEABLE = 0x0E,
+ NVME_STATUS_FEATURE_NOT_NAMESPACE_SPECIFIC = 0x0F,
+ NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_NVM_SUBSYSTEM_RESET = 0x10,
+ NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_RESET = 0x11,
+ NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_MAX_TIME_VIOLATION = 0x12,
+ NVME_STATUS_FIRMWARE_ACTIVATION_PROHIBITED = 0x13,
+ NVME_STATUS_OVERLAPPING_RANGE = 0x14,
+ NVME_STATUS_NAMESPACE_INSUFFICIENT_CAPACITY = 0x15,
+ NVME_STATUS_NAMESPACE_IDENTIFIER_UNAVAILABLE = 0x16,
+ NVME_STATUS_NAMESPACE_ALREADY_ATTACHED = 0x18,
+ NVME_STATUS_NAMESPACE_IS_PRIVATE = 0x19,
+ NVME_STATUS_NAMESPACE_NOT_ATTACHED = 0x1A,
+ NVME_STATUS_NAMESPACE_THIN_PROVISIONING_NOT_SUPPORTED = 0x1B,
+ NVME_STATUS_CONTROLLER_LIST_INVALID = 0x1C,
+ NVME_STATUS_DEVICE_SELF_TEST_IN_PROGRESS = 0x1D,
+ NVME_STATUS_BOOT_PARTITION_WRITE_PROHIBITED = 0x1E,
+ NVME_STATUS_INVALID_CONTROLLER_IDENTIFIER = 0x1F,
+ NVME_STATUS_INVALID_SECONDARY_CONTROLLER_STATE = 0x20,
+ NVME_STATUS_INVALID_NUMBER_OF_CONTROLLER_RESOURCES = 0x21,
+ NVME_STATUS_INVALID_RESOURCE_IDENTIFIER = 0x22,
+ NVME_STATUS_SANITIZE_PROHIBITED_ON_PERSISTENT_MEMORY = 0x23,
+ NVME_STATUS_INVALID_ANA_GROUP_IDENTIFIER = 0x24,
+ NVME_STATUS_ANA_ATTACH_FAILED = 0x25,
+ NVME_IO_COMMAND_SET_NOT_SUPPORTED = 0x29,
+ NVME_IO_COMMAND_SET_NOT_ENABLED = 0x2A,
+ NVME_IO_COMMAND_SET_COMBINATION_REJECTED = 0x2B,
+ NVME_IO_COMMAND_SET_INVALID = 0x2C,
+ NVME_STATUS_STREAM_RESOURCE_ALLOCATION_FAILED = 0x7F,
+ NVME_STATUS_ZONE_INVALID_FORMAT = 0x7F,
+ NVME_STATUS_NVM_CONFLICTING_ATTRIBUTES = 0x80,
+ NVME_STATUS_NVM_INVALID_PROTECTION_INFORMATION = 0x81,
+ NVME_STATUS_NVM_ATTEMPTED_WRITE_TO_READ_ONLY_RANGE = 0x82,
+ NVME_STATUS_NVM_COMMAND_SIZE_LIMIT_EXCEEDED = 0x83,
+ NVME_STATUS_ZONE_BOUNDARY_ERROR = 0xB8,
+ NVME_STATUS_ZONE_FULL = 0xB9,
+ NVME_STATUS_ZONE_READ_ONLY = 0xBA,
+ NVME_STATUS_ZONE_OFFLINE = 0xBB,
+ NVME_STATUS_ZONE_INVALID_WRITE = 0xBC,
+ NVME_STATUS_ZONE_TOO_MANY_ACTIVE = 0xBD,
+ NVME_STATUS_ZONE_TOO_MANY_OPEN = 0xBE,
+ NVME_STATUS_ZONE_INVALID_STATE_TRANSITION = 0xBF
+} NVME_STATUS_COMMAND_SPECIFIC_CODES;
+
+typedef enum {
+ NVME_STATUS_NVM_WRITE_FAULT = 0x80,
+ NVME_STATUS_NVM_UNRECOVERED_READ_ERROR = 0x81,
+ NVME_STATUS_NVM_END_TO_END_GUARD_CHECK_ERROR = 0x82,
+ NVME_STATUS_NVM_END_TO_END_APPLICATION_TAG_CHECK_ERROR = 0x83,
+ NVME_STATUS_NVM_END_TO_END_REFERENCE_TAG_CHECK_ERROR = 0x84,
+ NVME_STATUS_NVM_COMPARE_FAILURE = 0x85,
+ NVME_STATUS_NVM_ACCESS_DENIED = 0x86,
+ NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK = 0x87
+} NVME_STATUS_MEDIA_ERROR_CODES;
+
+typedef enum {
+ NVME_ADMIN_COMMAND_DELETE_IO_SQ = 0x00,
+ NVME_ADMIN_COMMAND_CREATE_IO_SQ = 0x01,
+ NVME_ADMIN_COMMAND_GET_LOG_PAGE = 0x02,
+ NVME_ADMIN_COMMAND_DELETE_IO_CQ = 0x04,
+ NVME_ADMIN_COMMAND_CREATE_IO_CQ = 0x05,
+ NVME_ADMIN_COMMAND_IDENTIFY = 0x06,
+ NVME_ADMIN_COMMAND_ABORT = 0x08,
+ NVME_ADMIN_COMMAND_SET_FEATURES = 0x09,
+ NVME_ADMIN_COMMAND_GET_FEATURES = 0x0A,
+ NVME_ADMIN_COMMAND_ASYNC_EVENT_REQUEST = 0x0C,
+ NVME_ADMIN_COMMAND_NAMESPACE_MANAGEMENT = 0x0D,
+ NVME_ADMIN_COMMAND_FIRMWARE_ACTIVATE = 0x10,
+ NVME_ADMIN_COMMAND_FIRMWARE_COMMIT = 0x10,
+ NVME_ADMIN_COMMAND_FIRMWARE_IMAGE_DOWNLOAD = 0x11,
+ NVME_ADMIN_COMMAND_DEVICE_SELF_TEST = 0x14,
+ NVME_ADMIN_COMMAND_NAMESPACE_ATTACHMENT = 0x15,
+ NVME_ADMIN_COMMAND_DIRECTIVE_SEND = 0x19,
+ NVME_ADMIN_COMMAND_DIRECTIVE_RECEIVE = 0x1A,
+ NVME_ADMIN_COMMAND_VIRTUALIZATION_MANAGEMENT = 0x1C,
+ NVME_ADMIN_COMMAND_NVME_MI_SEND = 0x1D,
+ NVME_ADMIN_COMMAND_NVME_MI_RECEIVE = 0x1E,
+ NVME_ADMIN_COMMAND_DOORBELL_BUFFER_CONFIG = 0x7C,
+ NVME_ADMIN_COMMAND_FORMAT_NVM = 0x80,
+ NVME_ADMIN_COMMAND_SECURITY_SEND = 0x81,
+ NVME_ADMIN_COMMAND_SECURITY_RECEIVE = 0x82,
+ NVME_ADMIN_COMMAND_SANITIZE = 0x84,
+ NVME_ADMIN_COMMAND_GET_LBA_STATUS = 0x86
+} NVME_ADMIN_COMMANDS;
+
+typedef enum {
+ NVME_FEATURE_ARBITRATION = 0x01,
+ NVME_FEATURE_POWER_MANAGEMENT = 0x02,
+ NVME_FEATURE_LBA_RANGE_TYPE = 0x03,
+ NVME_FEATURE_TEMPERATURE_THRESHOLD = 0x04,
+ NVME_FEATURE_ERROR_RECOVERY = 0x05,
+ NVME_FEATURE_VOLATILE_WRITE_CACHE = 0x06,
+ NVME_FEATURE_NUMBER_OF_QUEUES = 0x07,
+ NVME_FEATURE_INTERRUPT_COALESCING = 0x08,
+ NVME_FEATURE_INTERRUPT_VECTOR_CONFIG = 0x09,
+ NVME_FEATURE_WRITE_ATOMICITY = 0x0A,
+ NVME_FEATURE_ASYNC_EVENT_CONFIG = 0x0B,
+ NVME_FEATURE_AUTONOMOUS_POWER_STATE_TRANSITION = 0x0C,
+ NVME_FEATURE_HOST_MEMORY_BUFFER = 0x0D,
+ NVME_FEATURE_TIMESTAMP = 0x0E,
+ NVME_FEATURE_KEEP_ALIVE = 0x0F,
+ NVME_FEATURE_HOST_CONTROLLED_THERMAL_MANAGEMENT = 0x10,
+ NVME_FEATURE_NONOPERATIONAL_POWER_STATE = 0x11,
+ NVME_FEATURE_READ_RECOVERY_LEVEL_CONFIG = 0x12,
+ NVME_FEATURE_PREDICTABLE_LATENCY_MODE_CONFIG = 0x13,
+ NVME_FEATURE_PREDICTABLE_LATENCY_MODE_WINDOW = 0x14,
+ NVME_FEATURE_LBA_STATUS_INFORMATION_REPORT_INTERVAL = 0x15,
+ NVME_FEATURE_HOST_BEHAVIOR_SUPPORT = 0x16,
+ NVME_FEATURE_SANITIZE_CONFIG = 0x17,
+ NVME_FEATURE_ENDURANCE_GROUP_EVENT_CONFIG = 0x18,
+ NVME_FEATURE_IO_COMMAND_SET_PROFILE = 0x19,
+ NVME_FEATURE_ENHANCED_CONTROLLER_METADATA = 0x7D,
+ NVME_FEATURE_CONTROLLER_METADATA = 0x7E,
+ NVME_FEATURE_NAMESPACE_METADATA = 0x7F,
+ NVME_FEATURE_NVM_SOFTWARE_PROGRESS_MARKER = 0x80,
+ NVME_FEATURE_NVM_HOST_IDENTIFIER = 0x81,
+ NVME_FEATURE_NVM_RESERVATION_NOTIFICATION_MASK = 0x82,
+ NVME_FEATURE_NVM_RESERVATION_PERSISTANCE = 0x83,
+ NVME_FEATURE_NVM_NAMESPACE_WRITE_PROTECTION_CONFIG = 0x84,
+ NVME_FEATURE_ERROR_INJECTION = 0xC0,
+ NVME_FEATURE_CLEAR_FW_UPDATE_HISTORY = 0xC1,
+ NVME_FEATURE_READONLY_WRITETHROUGH_MODE = 0xC2,
+ NVME_FEATURE_CLEAR_PCIE_CORRECTABLE_ERROR_COUNTERS = 0xC3,
+ NVME_FEATURE_ENABLE_IEEE1667_SILO = 0xC4,
+ NVME_FEATURE_PLP_HEALTH_MONITOR = 0xC5
+} NVME_FEATURES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG SQID : 8;
+ ULONG CID : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_ABORT, *PNVME_CDW10_ABORT;
+
+typedef enum {
+ NVME_IDENTIFY_CNS_SPECIFIC_NAMESPACE = 0x0,
+ NVME_IDENTIFY_CNS_CONTROLLER = 0x1,
+ NVME_IDENTIFY_CNS_ACTIVE_NAMESPACES = 0x2,
+ NVME_IDENTIFY_CNS_DESCRIPTOR_NAMESPACE = 0x3,
+ NVME_IDENTIFY_CNS_NVM_SET = 0x4,
+ NVME_IDENTIFY_CNS_SPECIFIC_NAMESPACE_IO_COMMAND_SET = 0x5,
+ NVME_IDENTIFY_CNS_SPECIFIC_CONTROLLER_IO_COMMAND_SET = 0x6,
+ NVME_IDENTIFY_CNS_ACTIVE_NAMESPACE_LIST_IO_COMMAND_SET = 0x7,
+ NVME_IDENTIFY_CNS_ALLOCATED_NAMESPACE_LIST = 0x10,
+ NVME_IDENTIFY_CNS_ALLOCATED_NAMESPACE = 0x11,
+ NVME_IDENTIFY_CNS_CONTROLLER_LIST_OF_NSID = 0x12,
+ NVME_IDENTIFY_CNS_CONTROLLER_LIST_OF_NVM_SUBSYSTEM = 0x13,
+ NVME_IDENTIFY_CNS_PRIMARY_CONTROLLER_CAPABILITIES = 0x14,
+ NVME_IDENTIFY_CNS_SECONDARY_CONTROLLER_LIST = 0x15,
+ NVME_IDENTIFY_CNS_NAMESPACE_GRANULARITY_LIST = 0x16,
+ NVME_IDENTIFY_CNS_UUID_LIST = 0x17,
+ NVME_IDENTIFY_CNS_DOMAIN_LIST = 0x18,
+ NVME_IDENTIFY_CNS_ENDURANCE_GROUP_LIST = 0x19,
+ NVME_IDENTIFY_CNS_ALLOCATED_NAMSPACE_LIST_IO_COMMAND_SET = 0x1A,
+ NVME_IDENTIFY_CNS_ALLOCATED_NAMESPACE_IO_COMMAND_SET = 0x1B,
+ NVME_IDENTIFY_CNS_IO_COMMAND_SET = 0x1C
+} NVME_IDENTIFY_CNS_CODES;
+
+typedef enum {
+ NVME_COMMAND_SET_NVM = 0x0,
+ NVME_COMMAND_SET_KEY_VALUE = 0x1,
+ NVME_COMMAND_SET_ZONED_NAMESPACE = 0x2
+} NVME_COMMAND_SET_IDENTIFIERS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG CNS : 8;
+ ULONG Reserved : 8;
+ ULONG CNTID : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_IDENTIFY, *PNVME_CDW10_IDENTIFY;
+
+typedef union {
+ __C89_NAMELESS struct {
+ USHORT NVMSETID;
+ USHORT Reserved;
+ };
+ __C89_NAMELESS struct {
+ ULONG CNSID : 16;
+ ULONG Reserved2 : 8;
+ ULONG CSI : 8;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_IDENTIFY, *PNVME_CDW11_IDENTIFY;
+
+typedef union {
+ __C89_NAMELESS struct {
+ USHORT MS;
+ UCHAR LBADS;
+ UCHAR RP : 2;
+ UCHAR Reserved0 : 6;
+ };
+ ULONG AsUlong;
+} NVME_LBA_FORMAT, *PNVME_LBA_FORMAT;
+
+typedef union {
+ __C89_NAMELESS struct {
+ UCHAR PersistThroughPowerLoss : 1;
+ UCHAR WriteExclusiveReservation : 1;
+ UCHAR ExclusiveAccessReservation : 1;
+ UCHAR WriteExclusiveRegistrantsOnlyReservation : 1;
+ UCHAR ExclusiveAccessRegistrantsOnlyReservation : 1;
+ UCHAR WriteExclusiveAllRegistrantsReservation : 1;
+ UCHAR ExclusiveAccessAllRegistrantsReservation : 1;
+ UCHAR Reserved : 1;
+ };
+ UCHAR AsUchar;
+} NVM_RESERVATION_CAPABILITIES, *PNVME_RESERVATION_CAPABILITIES;
+
+typedef struct {
+ ULONGLONG NSZE;
+ ULONGLONG NCAP;
+ ULONGLONG NUSE;
+ struct {
+ UCHAR ThinProvisioning : 1;
+ UCHAR NameSpaceAtomicWriteUnit : 1;
+ UCHAR DeallocatedOrUnwrittenError : 1;
+ UCHAR SkipReuseUI : 1;
+ UCHAR NameSpaceIoOptimization : 1;
+ UCHAR Reserved : 3;
+ } NSFEAT;
+ UCHAR NLBAF;
+ struct {
+ UCHAR LbaFormatIndex : 4;
+ UCHAR MetadataInExtendedDataLBA : 1;
+ UCHAR Reserved : 3;
+ } FLBAS;
+ struct {
+ UCHAR MetadataInExtendedDataLBA : 1;
+ UCHAR MetadataInSeparateBuffer : 1;
+ UCHAR Reserved : 6;
+ } MC;
+ struct {
+ UCHAR ProtectionInfoType1 : 1;
+ UCHAR ProtectionInfoType2 : 1;
+ UCHAR ProtectionInfoType3 : 1;
+ UCHAR InfoAtBeginningOfMetadata : 1;
+ UCHAR InfoAtEndOfMetadata : 1;
+ UCHAR Reserved : 3;
+ } DPC;
+ struct {
+ UCHAR ProtectionInfoTypeEnabled : 3;
+ UCHAR InfoAtBeginningOfMetadata : 1;
+ UCHAR Reserved : 4;
+ } DPS;
+ struct {
+ UCHAR SharedNameSpace : 1;
+ UCHAR Reserved : 7;
+ } NMIC;
+ NVM_RESERVATION_CAPABILITIES RESCAP;
+ struct {
+ UCHAR PercentageRemained : 7;
+ UCHAR Supported : 1;
+ } FPI;
+ struct {
+ UCHAR ReadBehavior : 3;
+ UCHAR WriteZeroes : 1;
+ UCHAR GuardFieldWithCRC : 1;
+ UCHAR Reserved : 3;
+ } DLFEAT;
+ USHORT NAWUN;
+ USHORT NAWUPF;
+ USHORT NACWU;
+ USHORT NABSN;
+ USHORT NABO;
+ USHORT NABSPF;
+ USHORT NOIOB;
+ UCHAR NVMCAP[16];
+ USHORT NPWG;
+ USHORT NPWA;
+ USHORT NPDG;
+ USHORT NPDA;
+ USHORT NOWS;
+ USHORT MSSRL;
+ ULONG MCL;
+ UCHAR MSRC;
+ UCHAR Reserved2[11];
+ ULONG ANAGRPID;
+ UCHAR Reserved3[3];
+ struct {
+ UCHAR WriteProtected : 1;
+ UCHAR Reserved : 7;
+ } NSATTR;
+ USHORT NVMSETID;
+ USHORT ENDGID;
+ UCHAR NGUID[16];
+ UCHAR EUI64[8];
+ NVME_LBA_FORMAT LBAF[16];
+ UCHAR Reserved4[192];
+ UCHAR VS[3712];
+} NVME_IDENTIFY_NAMESPACE_DATA, *PNVME_IDENTIFY_NAMESPACE_DATA;
+
+typedef struct {
+ USHORT MP;
+ UCHAR Reserved0;
+ UCHAR MPS : 1;
+ UCHAR NOPS : 1;
+ UCHAR Reserved1 : 6;
+ ULONG ENLAT;
+ ULONG EXLAT;
+ UCHAR RRT : 5;
+ UCHAR Reserved2 : 3;
+ UCHAR RRL : 5;
+ UCHAR Reserved3 : 3;
+ UCHAR RWT : 5;
+ UCHAR Reserved4 : 3;
+ UCHAR RWL : 5;
+ UCHAR Reserved5 : 3;
+ USHORT IDLP;
+ UCHAR Reserved6 : 6;
+ UCHAR IPS : 2;
+ UCHAR Reserved7;
+ USHORT ACTP;
+ UCHAR APW : 3;
+ UCHAR Reserved8 : 3;
+ UCHAR APS : 2;
+ UCHAR Reserved9[9];
+} NVME_POWER_STATE_DESC, *PNVME_POWER_STATE_DESC;
+
+typedef struct {
+ USHORT VID;
+ USHORT SSVID;
+ UCHAR SN[20];
+ UCHAR MN[40];
+ UCHAR FR[8];
+ UCHAR RAB;
+ UCHAR IEEE[3];
+ struct {
+ UCHAR MultiPCIePorts : 1;
+ UCHAR MultiControllers : 1;
+ UCHAR SRIOV : 1;
+ UCHAR Reserved : 5;
+ } CMIC;
+ UCHAR MDTS;
+ USHORT CNTLID;
+ ULONG VER;
+ ULONG RTD3R;
+ ULONG RTD3E;
+ struct {
+ ULONG Reserved0 : 8;
+ ULONG NamespaceAttributeChanged : 1;
+ ULONG FirmwareActivation : 1;
+ ULONG Reserved1 : 1;
+ ULONG AsymmetricAccessChanged : 1;
+ ULONG PredictableLatencyAggregateLogChanged : 1;
+ ULONG LbaStatusChanged : 1;
+ ULONG EnduranceGroupAggregateLogChanged : 1;
+ ULONG Reserved2 : 12;
+ ULONG ZoneInformation : 1;
+ ULONG Reserved3 : 4;
+ } OAES;
+ struct {
+ ULONG HostIdentifier128Bit : 1;
+ ULONG NOPSPMode : 1;
+ ULONG NVMSets : 1;
+ ULONG ReadRecoveryLevels : 1;
+ ULONG EnduranceGroups : 1;
+ ULONG PredictableLatencyMode : 1;
+ ULONG TBKAS : 1;
+ ULONG NamespaceGranularity : 1;
+ ULONG SQAssociations : 1;
+ ULONG UUIDList : 1;
+ ULONG Reserved0 : 22;
+ } CTRATT;
+ struct {
+ USHORT ReadRecoveryLevel0 : 1;
+ USHORT ReadRecoveryLevel1 : 1;
+ USHORT ReadRecoveryLevel2 : 1;
+ USHORT ReadRecoveryLevel3 : 1;
+ USHORT ReadRecoveryLevel4 : 1;
+ USHORT ReadRecoveryLevel5 : 1;
+ USHORT ReadRecoveryLevel6 : 1;
+ USHORT ReadRecoveryLevel7 : 1;
+ USHORT ReadRecoveryLevel8 : 1;
+ USHORT ReadRecoveryLevel9 : 1;
+ USHORT ReadRecoveryLevel10 : 1;
+ USHORT ReadRecoveryLevel11 : 1;
+ USHORT ReadRecoveryLevel12 : 1;
+ USHORT ReadRecoveryLevel13 : 1;
+ USHORT ReadRecoveryLevel14 : 1;
+ USHORT ReadRecoveryLevel15 : 1;
+ } RRLS;
+ UCHAR Reserved0[9];
+ UCHAR CNTRLTYPE;
+ UCHAR FGUID[16];
+ USHORT CRDT1;
+ USHORT CRDT2;
+ USHORT CRDT3;
+ UCHAR Reserved0_1[106];
+ UCHAR ReservedForManagement[16];
+ struct {
+ USHORT SecurityCommands : 1;
+ USHORT FormatNVM : 1;
+ USHORT FirmwareCommands : 1;
+ USHORT NamespaceCommands : 1;
+ USHORT DeviceSelfTest : 1;
+ USHORT Directives : 1;
+ USHORT NVMeMICommands : 1;
+ USHORT VirtualizationMgmt : 1;
+ USHORT DoorBellBufferConfig: 1;
+ USHORT GetLBAStatus : 1;
+ USHORT Reserved : 6;
+ } OACS;
+ UCHAR ACL;
+ UCHAR AERL;
+ struct {
+ UCHAR Slot1ReadOnly : 1;
+ UCHAR SlotCount : 3;
+ UCHAR ActivationWithoutReset : 1;
+ UCHAR Reserved : 3;
+ } FRMW;
+ struct {
+ UCHAR SmartPagePerNamespace : 1;
+ UCHAR CommandEffectsLog : 1;
+ UCHAR LogPageExtendedData : 1;
+ UCHAR TelemetrySupport : 1;
+ UCHAR PersistentEventLog : 1;
+ UCHAR Reserved0 : 1;
+ UCHAR TelemetryDataArea4 : 1;
+ UCHAR Reserved1 : 1;
+ } LPA;
+ UCHAR ELPE;
+ UCHAR NPSS;
+ struct {
+ UCHAR CommandFormatInSpec : 1;
+ UCHAR Reserved : 7;
+ } AVSCC;
+ struct {
+ UCHAR Supported : 1;
+ UCHAR Reserved : 7;
+ } APSTA;
+ USHORT WCTEMP;
+ USHORT CCTEMP;
+ USHORT MTFA;
+ ULONG HMPRE;
+ ULONG HMMIN;
+ UCHAR TNVMCAP[16];
+ UCHAR UNVMCAP[16];
+ struct {
+ ULONG RPMBUnitCount : 3;
+ ULONG AuthenticationMethod : 3;
+ ULONG Reserved0 : 10;
+ ULONG TotalSize : 8;
+ ULONG AccessSize : 8;
+ } RPMBS;
+ USHORT EDSTT;
+ UCHAR DSTO;
+ UCHAR FWUG;
+ USHORT KAS;
+ struct {
+ USHORT Supported : 1;
+ USHORT Reserved : 15;
+ } HCTMA;
+ USHORT MNTMT;
+ USHORT MXTMT;
+ struct {
+ ULONG CryptoErase : 1;
+ ULONG BlockErase : 1;
+ ULONG Overwrite : 1;
+ ULONG Reserved : 26;
+ ULONG NDI : 1;
+ ULONG NODMMAS : 2;
+ } SANICAP;
+ ULONG HMMINDS;
+ USHORT HMMAXD;
+ USHORT NSETIDMAX;
+ USHORT ENDGIDMAX;
+ UCHAR ANATT;
+ struct {
+ UCHAR OptimizedState : 1;
+ UCHAR NonOptimizedState : 1;
+ UCHAR InaccessibleState : 1;
+ UCHAR PersistentLossState : 1;
+ UCHAR ChangeState : 1;
+ UCHAR Reserved : 1;
+ UCHAR StaticANAGRPID : 1;
+ UCHAR SupportNonZeroANAGRPID : 1;
+ } ANACAP;
+ ULONG ANAGRPMAX;
+ ULONG NANAGRPID;
+ ULONG PELS;
+ UCHAR Reserved1[156];
+ struct {
+ UCHAR RequiredEntrySize : 4;
+ UCHAR MaxEntrySize : 4;
+ } SQES;
+ struct {
+ UCHAR RequiredEntrySize : 4;
+ UCHAR MaxEntrySize : 4;
+ } CQES;
+ USHORT MAXCMD;
+ ULONG NN;
+ struct {
+ USHORT Compare : 1;
+ USHORT WriteUncorrectable : 1;
+ USHORT DatasetManagement : 1;
+ USHORT WriteZeroes : 1;
+ USHORT FeatureField : 1;
+ USHORT Reservations : 1;
+ USHORT Timestamp : 1;
+ USHORT Verify : 1;
+ USHORT Reserved : 8;
+ } ONCS;
+ struct {
+ USHORT CompareAndWrite : 1;
+ USHORT Reserved : 15;
+ } FUSES;
+ struct {
+ UCHAR FormatApplyToAll : 1;
+ UCHAR SecureEraseApplyToAll : 1;
+ UCHAR CryptographicEraseSupported : 1;
+ UCHAR FormatSupportNSIDAllF : 1;
+ UCHAR Reserved : 4;
+ } FNA;
+ struct {
+ UCHAR Present : 1;
+ UCHAR FlushBehavior : 2;
+ UCHAR Reserved : 5;
+ } VWC;
+ USHORT AWUN;
+ USHORT AWUPF;
+ struct {
+ UCHAR CommandFormatInSpec : 1;
+ UCHAR Reserved : 7;
+ } NVSCC;
+ struct {
+ UCHAR WriteProtect : 1;
+ UCHAR UntilPowerCycle : 1;
+ UCHAR Permanent : 1;
+ UCHAR Reserved : 5;
+ } NWPC;
+ USHORT ACWU;
+ UCHAR Reserved4[2];
+ struct {
+ ULONG SGLSupported : 2;
+ ULONG KeyedSGLData : 1;
+ ULONG Reserved0 : 13;
+ ULONG BitBucketDescrSupported : 1;
+ ULONG ByteAlignedContiguousPhysicalBuffer : 1;
+ ULONG SGLLengthLargerThanDataLength : 1;
+ ULONG MPTRSGLDescriptor : 1;
+ ULONG AddressFieldSGLDataBlock: 1;
+ ULONG TransportSGLData : 1;
+ ULONG Reserved1 : 10;
+ } SGLS;
+ ULONG MNAN;
+ UCHAR Reserved6[224];
+ UCHAR SUBNQN[256];
+ UCHAR Reserved7[768];
+ UCHAR Reserved8[256];
+ NVME_POWER_STATE_DESC PDS[32];
+ UCHAR VS[1024];
+} NVME_IDENTIFY_CONTROLLER_DATA, *PNVME_IDENTIFY_CONTROLLER_DATA;
+
+typedef enum {
+ NVME_IDENTIFIER_TYPE_EUI64 = 0x1,
+ NVME_IDENTIFIER_TYPE_NGUID = 0x2,
+ NVME_IDENTIFIER_TYPE_UUID = 0x3,
+ NVME_IDENTIFIER_TYPE_CSI = 0x4
+} NVME_IDENTIFIER_TYPE;
+
+typedef enum {
+ NVME_IDENTIFIER_TYPE_EUI64_LENGTH = 0x8,
+ NVME_IDENTIFIER_TYPE_NGUID_LENGTH = 0x10,
+ NVME_IDENTIFIER_TYPE_UUID_LENGTH = 0x10,
+ NVME_IDENTIFIER_TYPE_CSI_LENGTH = 0x1
+} NVME_IDENTIFIER_TYPE_LENGTH;
+
+#define NVME_IDENTIFY_CNS_DESCRIPTOR_NAMESPACE_SIZE 0x1000
+
+typedef struct {
+ UCHAR NIDT;
+ UCHAR NIDL;
+ UCHAR Reserved[2];
+ UCHAR NID[ANYSIZE_ARRAY];
+} NVME_IDENTIFY_NAMESPACE_DESCRIPTOR, *PNVME_IDENTIFY_NAMESPACE_DESCRIPTOR;
+
+typedef struct {
+ USHORT Identifier;
+ USHORT ENDGID;
+ ULONG Reserved1;
+ ULONG Random4KBReadTypical;
+ ULONG OptimalWriteSize;
+ UCHAR TotalCapacity[16];
+ UCHAR UnallocatedCapacity[16];
+ UCHAR Reserved2[80];
+} NVME_SET_ATTRIBUTES_ENTRY, *PNVME_SET_ATTRIBUTES_ENTRY;
+
+typedef struct {
+ UCHAR IdentifierCount;
+ UCHAR Reserved[127];
+ NVME_SET_ATTRIBUTES_ENTRY Entry[ANYSIZE_ARRAY];
+} NVM_SET_LIST, *PNVM_SET_LIST;
+
+typedef struct {
+ ULONGLONG ZoneSize;
+ UCHAR ZDES;
+ UCHAR Reserved[7];
+} NVME_LBA_ZONE_FORMAT, *PNVME_LBA_ZONE_FORMAT;
+
+typedef struct {
+ struct {
+ USHORT VariableZoneCapacity : 1;
+ USHORT ZoneExcursions : 1;
+ USHORT Reserved : 14;
+ } ZOC;
+ struct {
+ USHORT ReadAcrossZoneBoundaries : 1;
+ USHORT Reserved : 15;
+ } OZCS;
+ ULONG MAR;
+ ULONG MOR;
+ ULONG RRL;
+ ULONG FRL;
+ UCHAR Reserved0[2796];
+ NVME_LBA_ZONE_FORMAT LBAEF[16];
+ UCHAR Reserved1[768];
+ UCHAR VS[256];
+} NVME_IDENTIFY_SPECIFIC_NAMESPACE_IO_COMMAND_SET, *PNVME_IDENTIFY_SPECIFIC_NAMESPACE_IO_COMMAND_SET;
+
+typedef struct {
+ UCHAR VSL;
+ UCHAR WZSL;
+ UCHAR WUSL;
+ UCHAR DMRL;
+ ULONG DMRSL;
+ ULONGLONG DMSL;
+ UCHAR Reserved[4080];
+} NVME_IDENTIFY_NVM_SPECIFIC_CONTROLLER_IO_COMMAND_SET, *PNVME_IDENTIFY_NVM_SPECIFIC_CONTROLLER_IO_COMMAND_SET;
+
+typedef struct {
+ UCHAR ZASL;
+ UCHAR Reserved[4095];
+} NVME_IDENTIFY_ZNS_SPECIFIC_CONTROLLER_IO_COMMAND_SET, *PNVME_IDENTIFY_ZNS_SPECIFIC_CONTROLLER_IO_COMMAND_SET;
+
+typedef struct {
+ USHORT NumberOfIdentifiers;
+ USHORT ControllerID[2047];
+} NVME_CONTROLLER_LIST, *PNVME_CONTROLLER_LIST;
+
+typedef struct {
+ ULONGLONG IOCommandSetVector[512];
+} NVME_IDENTIFY_IO_COMMAND_SET, *PNVME_IDENTIFY_IO_COMMAND_SET;
+
+typedef enum {
+ NVME_LBA_RANGE_TYPE_RESERVED = 0,
+ NVME_LBA_RANGE_TYPE_FILESYSTEM = 1,
+ NVME_LBA_RANGE_TYPE_RAID = 2,
+ NVME_LBA_RANGE_TYPE_CACHE = 3,
+ NVME_LBA_RANGE_TYPE_PAGE_SWAP_FILE = 4
+} NVME_LBA_RANGE_TYPES;
+
+typedef struct {
+ UCHAR Type;
+ struct {
+ UCHAR MayOverwritten : 1;
+ UCHAR Hidden : 1;
+ UCHAR Reserved : 6;
+ } Attributes;
+ UCHAR Reserved0[14];
+ ULONGLONG SLBA;
+ ULONGLONG NLB;
+ UCHAR GUID[16];
+ UCHAR Reserved1[16];
+} NVME_LBA_RANGET_TYPE_ENTRY, *PNVME_LBA_RANGET_TYPE_ENTRY;
+
+typedef enum {
+ NVME_LOG_PAGE_WCS_DEVICE_SMART_ATTRIBUTES = 0xC0,
+ NVME_LOG_PAGE_WCS_DEVICE_ERROR_RECOVERY = 0xC1
+} NVME_VENDOR_LOG_PAGES;
+
+#define GUID_WCS_DEVICE_SMART_ATTRIBUTESGuid { 0x2810AFC5, 0xBFEA, 0xA4F2, { 0x9C, 0x4F, 0x6F, 0x7C, 0xC9, 0x14, 0xD5, 0xAF} }
+DEFINE_GUID(GUID_WCS_DEVICE_SMART_ATTRIBUTES, 0x2810AFC5, 0xBFEA, 0xA4F2, 0x9C, 0x4F, 0x6F, 0x7C, 0xC9, 0x14, 0xD5, 0xAF);
+
+#define GUID_WCS_DEVICE_ERROR_RECOVERYGuid { 0x2131D944, 0x30FE, 0xAE34, {0xAB, 0x4D, 0xFD, 0x3D, 0xBA, 0x83, 0x19, 0x5A} }
+DEFINE_GUID(GUID_WCS_DEVICE_ERROR_RECOVERY, 0x2131D944, 0x30FE, 0xAE34, 0xAB, 0x4D, 0xFD, 0x3D, 0xBA, 0x83, 0x19, 0x5A);
+
+typedef enum {
+ NVME_ASYNC_EVENT_TYPE_VENDOR_SPECIFIC_RESERVED = 0,
+ NVME_ASYNC_EVENT_TYPE_VENDOR_SPECIFIC_DEVICE_PANIC = 1
+} NVME_ASYNC_EVENT_TYPE_VENDOR_SPECIFIC_CODES;
+
+typedef struct _NVME_WCS_DEVICE_RESET_ACTION {
+ union {
+ __C89_NAMELESS struct {
+ UCHAR ControllerReset : 1;
+ UCHAR NVMeSubsystemReset : 1;
+ UCHAR PCIeFLR : 1;
+ UCHAR PERST : 1;
+ UCHAR PowerCycle : 1;
+ UCHAR PCIeConventionalHotReset : 1;
+ UCHAR Reserved : 2;
+ };
+ UCHAR AsUCHAR;
+ };
+} NVME_WCS_DEVICE_RESET_ACTION, *PNVME_WCS_DEVICE_RESET_ACTION;
+
+typedef struct _NVME_WCS_DEVICE_CAPABILITIES {
+ union {
+ __C89_NAMELESS struct {
+ ULONG PanicAEN : 1;
+ ULONG PanicCFS : 1;
+ ULONG Reserved : 30;
+ };
+ ULONG AsULONG;
+ };
+} NVME_WCS_DEVICE_CAPABILITIES, *PNVME_WCS_DEVICE_CAPABILITIES;
+
+typedef enum _NVME_WCS_DEVICE_RECOVERY_ACTION {
+ NVMeDeviceRecoveryNoAction = 0,
+ NVMeDeviceRecoveryFormatNVM,
+ NVMeDeviceRecoveryVendorSpecificCommand,
+ NVMeDeviceRecoveryVendorAnalysis,
+ NVMeDeviceRecoveryDeviceReplacement,
+ NVMeDeviceRecoverySanitize,
+ NVMeDeviceRecoveryMax = 15
+} NVME_WCS_DEVICE_RECOVERY_ACTION, *PNVME_WCS_DEVICE_RECOVERY_ACTION;
+
+#pragma pack(push, 1)
+
+typedef struct _NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG {
+ UCHAR VersionSpecificData[494];
+ USHORT LogPageVersionNumber;
+ GUID LogPageGUID;
+} NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG, *PNVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG;
+
+C_ASSERT(sizeof(NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG) == 512);
+
+#define NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG_VERSION_2 0x0002
+
+typedef struct _NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG_V2 {
+ UCHAR MediaUnitsWritten[16];
+ UCHAR MediaUnitsRead[16];
+ struct {
+ UCHAR RawCount[6];
+ UCHAR Normalized[2];
+ } BadUserNANDBlockCount;
+ struct {
+ UCHAR RawCount[6];
+ UCHAR Normalized[2];
+ } BadSystemNANDBlockCount;
+ ULONGLONG XORRecoveryCount;
+ ULONGLONG UnrecoverableReadErrorCount;
+ ULONGLONG SoftECCErrorCount;
+ struct {
+ ULONG DetectedCounts;
+ ULONG CorrectedCounts;
+ } EndToEndCorrectionCounts;
+ UCHAR PercentageSystemDataUsed;
+ UCHAR RefreshCount[7];
+ struct {
+ ULONG MaximumCount;
+ ULONG MinimumCount;
+ } UserDataEraseCounts;
+ struct {
+ UCHAR EventCount;
+ UCHAR Status;
+ } ThermalThrottling;
+ UCHAR Reserved0[6];
+ ULONGLONG PCIeCorrectableErrorCount;
+ ULONG IncompleteShutdownCount;
+ ULONG Reserved1;
+ UCHAR PercentageFreeBlocks;
+ UCHAR Reserved2[7];
+ USHORT CapacitorHealth;
+ UCHAR Reserved3[6];
+ ULONGLONG UnalignedIOCount;
+ ULONGLONG SecurityVersionNumber;
+ ULONGLONG NUSE;
+ UCHAR PLPStartCount[16];
+ UCHAR EnduranceEstimate[16];
+ UCHAR Reserved4[302];
+ USHORT LogPageVersionNumber;
+ GUID LogPageGUID;
+} NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG_V2, *PNVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG_V2;
+
+C_ASSERT(sizeof(NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG_V2) == sizeof(NVME_WCS_DEVICE_SMART_ATTRIBUTES_LOG));
+
+typedef struct _NVME_WCS_DEVICE_ERROR_RECOVERY_LOG {
+ USHORT PanicResetWaitTime;
+ NVME_WCS_DEVICE_RESET_ACTION PanicResetAction;
+ UCHAR DriveRecoveryAction;
+ ULONGLONG PanicId;
+ NVME_WCS_DEVICE_CAPABILITIES DeviceCapabilities;
+ UCHAR VendorSpecificRecoveryCode;
+ UCHAR Reserved0[3];
+ ULONG VendorSpecificCommandCDW12;
+ ULONG VendorSpecificCommandCDW13;
+ UCHAR Reserved1[466];
+ USHORT LogPageVersionNumber;
+ GUID LogPageGUID;
+} NVME_WCS_DEVICE_ERROR_RECOVERY_LOG, *PNVME_WCS_DEVICE_ERROR_RECOVERY_LOG;
+
+C_ASSERT(sizeof(NVME_WCS_DEVICE_ERROR_RECOVERY_LOG) == 512);
+
+#pragma pack(pop)
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG QID : 16;
+ ULONG QSIZE : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_CREATE_IO_QUEUE, *PNVME_CDW10_CREATE_IO_QUEUE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG PC : 1;
+ ULONG IEN : 1;
+ ULONG Reserved0 : 14;
+ ULONG IV : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_CREATE_IO_CQ, *PNVME_CDW11_CREATE_IO_CQ;
+
+typedef enum {
+ NVME_NVM_QUEUE_PRIORITY_URGENT = 0,
+ NVME_NVM_QUEUE_PRIORITY_HIGH = 1,
+ NVME_NVM_QUEUE_PRIORITY_MEDIUM = 2,
+ NVME_NVM_QUEUE_PRIORITY_LOW = 3
+} NVME_NVM_QUEUE_PRIORITIES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG PC : 1;
+ ULONG QPRIO : 2;
+ ULONG Reserved0 : 13;
+ ULONG CQID : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_CREATE_IO_SQ, *PNVME_CDW11_CREATE_IO_SQ;
+
+typedef enum {
+ NVME_FEATURE_VALUE_CURRENT = 0,
+ NVME_FEATURE_VALUE_DEFAULT = 1,
+ NVME_FEATURE_VALUE_SAVED = 2,
+ NVME_FEATURE_VALUE_SUPPORTED_CAPABILITIES = 3
+} NVME_FEATURE_VALUE_CODES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG FID : 8;
+ ULONG SEL : 3;
+ ULONG Reserved0 : 21;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_GET_FEATURES, *PNVME_CDW10_GET_FEATURES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG FID : 8;
+ ULONG Reserved0 : 23;
+ ULONG SV : 1;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_SET_FEATURES, *PNVME_CDW10_SET_FEATURES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NSQ : 16;
+ ULONG NCQ : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_NUMBER_OF_QUEUES, *PNVME_CDW11_FEATURE_NUMBER_OF_QUEUES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG THR : 8;
+ ULONG TIME : 8;
+ ULONG Reserved0 : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_INTERRUPT_COALESCING, *PNVME_CDW11_FEATURE_INTERRUPT_COALESCING;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG IV : 16;
+ ULONG CD : 1;
+ ULONG Reserved0 : 15;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_INTERRUPT_VECTOR_CONFIG, *PNVME_CDW11_FEATURE_INTERRUPT_VECTOR_CONFIG;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG DN : 1;
+ ULONG Reserved0 : 31;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_WRITE_ATOMICITY_NORMAL, *PNVME_CDW11_FEATURE_WRITE_ATOMICITY_NORMAL;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NOPPME : 1;
+ ULONG Reserved0 : 31;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_NON_OPERATIONAL_POWER_STATE, *PNVME_CDW11_FEATURE_NON_OPERATIONAL_POWER_STATE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NUM : 6;
+ ULONG Reserved0 : 26;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_LBA_RANGE_TYPE, *PNVME_CDW11_FEATURE_LBA_RANGE_TYPE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG AB : 3;
+ ULONG Reserved0 : 5;
+ ULONG LPW : 8;
+ ULONG MPW : 8;
+ ULONG HPW : 8;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_ARBITRATION, *PNVME_CDW11_FEATURE_ARBITRATION;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG WCE : 1;
+ ULONG Reserved0 : 31;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_VOLATILE_WRITE_CACHE, *PNVME_CDW11_FEATURE_VOLATILE_WRITE_CACHE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG SAVE : 1;
+ ULONG NSS : 1;
+ ULONG MOD : 1;
+ ULONG Reserved0 : 29;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_SUPPORTED_CAPABILITY, *PNVME_CDW11_FEATURE_SUPPORTED_CAPABILITY;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG CriticalWarnings : 8;
+ ULONG NsAttributeNotices : 1;
+ ULONG FwActivationNotices : 1;
+ ULONG TelemetryLogNotices : 1;
+ ULONG ANAChangeNotices : 1;
+ ULONG PredictableLogChangeNotices : 1;
+ ULONG LBAStatusNotices : 1;
+ ULONG EnduranceEventNotices : 1;
+ ULONG Reserved0 : 12;
+ ULONG ZoneDescriptorNotices : 1;
+ ULONG Reserved1 : 4;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_ASYNC_EVENT_CONFIG, *PNVME_CDW11_FEATURE_ASYNC_EVENT_CONFIG;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG PS : 5;
+ ULONG Reserved0 : 27;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_POWER_MANAGEMENT, *PNVME_CDW11_FEATURE_POWER_MANAGEMENT;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG APSTE : 1;
+ ULONG Reserved0 : 31;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_AUTO_POWER_STATE_TRANSITION, *PNVME_CDW11_FEATURE_AUTO_POWER_STATE_TRANSITION;
+
+typedef struct {
+ ULONG Reserved0 : 3;
+ ULONG IdleTransitionPowerState : 5;
+ ULONG IdleTimePriorToTransition : 24;
+ ULONG Reserved1;
+} NVME_AUTO_POWER_STATE_TRANSITION_ENTRY, *PNVME_AUTO_POWER_STATE_TRANSITION_ENTRY;
+
+typedef enum {
+ NVME_TEMPERATURE_OVER_THRESHOLD = 0,
+ NVME_TEMPERATURE_UNDER_THRESHOLD = 1
+} NVME_TEMPERATURE_THRESHOLD_TYPES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG TMPTH : 16;
+ ULONG TMPSEL : 4;
+ ULONG THSEL : 2;
+ ULONG Reserved0 : 10;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD, *PNVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG TLER : 16;
+ ULONG DULBE : 1;
+ ULONG Reserved0 : 15;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_ERROR_RECOVERY, *PNVME_CDW11_FEATURE_ERROR_RECOVERY;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG EHM : 1;
+ ULONG MR : 1;
+ ULONG Reserved : 30;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_HOST_MEMORY_BUFFER, *PNVME_CDW11_FEATURE_HOST_MEMORY_BUFFER;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG HSIZE;
+ };
+ ULONG AsUlong;
+} NVME_CDW12_FEATURE_HOST_MEMORY_BUFFER, *PNVME_CDW12_FEATURE_HOST_MEMORY_BUFFER;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved : 4;
+ ULONG HMDLLA : 28;
+ };
+ ULONG AsUlong;
+} NVME_CDW13_FEATURE_HOST_MEMORY_BUFFER, *PNVME_CDW13_FEATURE_HOST_MEMORY_BUFFER;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG HMDLUA;
+ };
+ ULONG AsUlong;
+} NVME_CDW14_FEATURE_HOST_MEMORY_BUFFER, *PNVME_CDW14_FEATURE_HOST_MEMORY_BUFFER;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG HMDLEC;
+ };
+ ULONG AsUlong;
+} NVME_CDW15_FEATURE_HOST_MEMORY_BUFFER, *PNVME_CDW15_FEATURE_HOST_MEMORY_BUFFER;
+
+typedef struct {
+ ULONGLONG BADD;
+ ULONG BSIZE;
+ ULONG Reserved;
+} NVME_HOST_MEMORY_BUFFER_DESCRIPTOR_ENTRY, *PNVME_HOST_MEMORY_BUFFER_DESCRIPTOR_ENTRY;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG IOCSCI : 8;
+ ULONG Reserved : 24;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_IO_COMMAND_SET_PROFILE, *PNVME_CDW11_FEATURE_IO_COMMAND_SET_PROFILE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG GDHM : 1;
+ ULONG Reserved : 31;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_GET_HOST_METADATA, *PNVME_CDW11_FEATURE_GET_HOST_METADATA;
+
+typedef enum {
+ NVME_HOST_METADATA_ADD_REPLACE_ENTRY = 0,
+ NVME_HOST_METADATA_DELETE_ENTRY_MULTIPLE = 1,
+ NVME_HOST_METADATA_ADD_ENTRY_MULTIPLE = 2
+} NVME_HOST_METADATA_ELEMENT_ACTIONS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved0 : 13;
+ ULONG EA : 2;
+ ULONG Reserved1 : 17;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_SET_HOST_METADATA, *PNVME_CDW11_FEATURE_SET_HOST_METADATA;
+
+typedef enum {
+ NVME_CONTROLLER_METADATA_OPERATING_SYSTEM_CONTROLLER_NAME = 0x1,
+ NVME_CONTROLLER_METADATA_OPERATING_SYSTEM_DRIVER_NAME = 0x2,
+ NVME_CONTROLLER_METADATA_OPERATING_SYSTEM_DRIVER_VERSION = 0x3,
+ NVME_CONTROLLER_METADATA_PREBOOT_CONTROLLER_NAME = 0x4,
+ NVME_CONTROLLER_METADATA_PREBOOT_DRIVER_NAME = 0x5,
+ NVME_CONTROLLER_METADATA_PREBOOT_DRIVER_VERSION = 0x6,
+ NVME_CONTROLLER_METADATA_SYSTEM_PROCESSOR_MODEL = 0x7,
+ NVME_CONTROLLER_METADATA_CHIPSET_DRIVER_NAME = 0x8,
+ NVME_CONTROLLER_METADATA_CHIPSET_DRIVER_VERSION = 0x9,
+ NVME_CONTROLLER_METADATA_OPERATING_SYSTEM_NAME_AND_BUILD = 0xA,
+ NVME_CONTROLLER_METADATA_SYSTEM_PRODUCT_NAME = 0xB,
+ NVME_CONTROLLER_METADATA_FIRMWARE_VERSION = 0xC,
+ NVME_CONTROLLER_METADATA_OPERATING_SYSTEM_DRIVER_FILENAME = 0xD,
+ NVME_CONTROLLER_METADATA_DISPLAY_DRIVER_NAME = 0xE,
+ NVME_CONTROLLER_METADATA_DISPLAY_DRIVER_VERSION = 0xF,
+ NVME_CONTROLLER_METADATA_HOST_DETERMINED_FAILURE_RECORD = 0x10
+} NVME_CONTROLLER_METADATA_ELEMENT_TYPES;
+
+typedef enum {
+ NVME_NAMESPACE_METADATA_OPERATING_SYSTEM_NAMESPACE_NAME = 0x1,
+ NVME_NAMESPACE_METADATA_PREBOOT_NAMESPACE_NAME = 0x2,
+ NVME_NAMESPACE_METADATA_OPERATING_SYSTEM_NAMESPACE_NAME_QUALIFIER_1 = 0x3,
+ NVME_NAMESPACE_METADATA_OPERATING_SYSTEM_NAMESPACE_NAME_QUALIFIER_2 = 0x4
+} NVME_NAMESPACE_METADATA_ELEMENT_TYPES;
+
+typedef struct {
+ ULONG ET : 6;
+ ULONG Reserved0 : 2;
+ ULONG ER : 4;
+ ULONG Reserved1 : 4;
+ ULONG ELEN : 16;
+ UCHAR EVAL[ANYSIZE_ARRAY];
+} NVME_HOST_METADATA_ELEMENT_DESCRIPTOR, *PNVME_HOST_METADATA_ELEMENT_DESCRIPTOR;
+
+typedef struct {
+ UCHAR NumberOfMetadataElementDescriptors;
+ UCHAR Reserved0;
+ UCHAR MetadataElementDescriptors[4094];
+} NVME_FEATURE_HOST_METADATA_DATA, *PNVME_FEATURE_HOST_METADATA_DATA;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NUM : 7;
+ ULONG Reserved0 : 25;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_ERROR_INJECTION, *PNVME_CDW11_FEATURE_ERROR_INJECTION;
+
+typedef NVME_CDW11_FEATURE_ERROR_INJECTION NVME_CDW0_FEATURE_ERROR_INJECTION, *PNVME_CDW0_FEATURE_ERROR_INJECTION;
+
+typedef struct {
+ union {
+ __C89_NAMELESS struct {
+ UCHAR Enable : 1;
+ UCHAR SingleInstance : 1;
+ UCHAR Reserved0 : 6;
+ };
+ UCHAR AsUchar;
+ } Flags;
+ UCHAR Reserved1;
+ USHORT ErrorInjectionType;
+ UCHAR ErrorInjectionTypeSpecific[28];
+} NVME_ERROR_INJECTION_ENTRY, *PNVME_ERROR_INJECTION_ENTRY;
+
+typedef enum {
+ NVME_ERROR_INJECTION_TYPE_RESERVED0 = 0,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_CPU_CONTROLLER_HANG,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_NAND_HANG,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_PLP_DEFECT,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_LOGICAL_FW_ERROR,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_DRAM_CORRUPTION_CRITICAL,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_DRAM_CORRUPTION_NONCRITICAL,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_NAND_CORRUPTION,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_SRAM_CORRUPTION,
+ NVME_ERROR_INJECTION_TYPE_DEVICE_PANIC_HW_MALFUNCTION,
+ NVME_ERROR_INJECTION_TYPE_RESERVED1,
+ NVME_ERROR_INJECTION_TYPE_MAX = 0xFFFF
+} NVME_ERROR_INJECTION_TYPES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved0 : 31;
+ ULONG Clear : 1;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_CLEAR_FW_UPDATE_HISTORY, *PNVME_CDW11_FEATURE_CLEAR_FW_UPDATE_HISTORY;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved0 : 30;
+ ULONG EOLBehavior : 2;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_READONLY_WRITETHROUGH_MODE, *PNVME_CDW11_FEATURE_READONLY_WRITETHROUGH_MODE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG EOLBehavior : 3;
+ ULONG Reserved0 : 29;
+ };
+ ULONG AsUlong;
+} NVME_CDW0_FEATURE_READONLY_WRITETHROUGH_MODE, *PNVME_CDW0_FEATURE_READONLY_WRITETHROUGH_MODE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved0 : 31;
+ ULONG Clear : 1;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_CLEAR_PCIE_CORRECTABLE_ERROR_COUNTERS, *PNVME_CDW11_FEATURE_CLEAR_PCIE_CORRECTABLE_ERROR_COUNTERS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved0 : 31;
+ ULONG Enable : 1;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_FEATURE_ENABLE_IEEE1667_SILO, *PNVME_CDW11_FEATURE_ENABLE_IEEE1667_SILO;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Enabled : 3;
+ ULONG Reserved0 : 29;
+ };
+ ULONG AsUlong;
+} NVME_CDW0_FEATURE_ENABLE_IEEE1667_SILO, *PNVME_CDW0_FEATURE_ENABLE_IEEE1667_SILO;
+
+#define NVME_MAX_HOST_IDENTIFIER_SIZE 16
+#define NVME_HOST_IDENTIFIER_SIZE 8
+#define NVME_EXTENDED_HOST_IDENTIFIER_SIZE 16
+
+typedef struct {
+ ULONG EXHID : 1;
+ ULONG Reserved : 31;
+} NVME_CDW11_FEATURE_HOST_IDENTIFIER, *PNVME_CDW11_FEATURE_HOST_IDENTIFIER;
+
+typedef struct {
+ UCHAR HOSTID[NVME_MAX_HOST_IDENTIFIER_SIZE];
+} NVME_FEATURE_HOST_IDENTIFIER_DATA, *PNVME_FEATURE_HOST_IDENTIFIER_DATA;
+
+typedef struct {
+ ULONG PTPL : 1;
+ ULONG Reserved : 31;
+} NVME_CDW11_FEATURE_RESERVATION_PERSISTENCE, *PNVME_CDW11_FEATURE_RESERVATION_PERSISTENCE;
+
+typedef struct {
+ ULONG Reserved : 1;
+ ULONG REGPRE : 1;
+ ULONG RESREL : 1;
+ ULONG RESPRE : 1;
+ ULONG Reserved1 : 28;
+} NVME_CDW11_FEATURE_RESERVATION_NOTIFICATION_MASK, *PNVME_CDW11_FEATURE_RESERVATION_NOTIFICATION_MASK;
+
+typedef union {
+ NVME_CDW11_FEATURE_NUMBER_OF_QUEUES NumberOfQueues;
+ NVME_CDW11_FEATURE_INTERRUPT_COALESCING InterruptCoalescing;
+ NVME_CDW11_FEATURE_INTERRUPT_VECTOR_CONFIG InterruptVectorConfig;
+ NVME_CDW11_FEATURE_LBA_RANGE_TYPE LbaRangeType;
+ NVME_CDW11_FEATURE_ARBITRATION Arbitration;
+ NVME_CDW11_FEATURE_VOLATILE_WRITE_CACHE VolatileWriteCache;
+ NVME_CDW11_FEATURE_ASYNC_EVENT_CONFIG AsyncEventConfig;
+ NVME_CDW11_FEATURE_POWER_MANAGEMENT PowerManagement;
+ NVME_CDW11_FEATURE_AUTO_POWER_STATE_TRANSITION AutoPowerStateTransition;
+ NVME_CDW11_FEATURE_TEMPERATURE_THRESHOLD TemperatureThreshold;
+ NVME_CDW11_FEATURE_ERROR_RECOVERY ErrorRecovery;
+ NVME_CDW11_FEATURE_HOST_MEMORY_BUFFER HostMemoryBuffer;
+ NVME_CDW11_FEATURE_WRITE_ATOMICITY_NORMAL WriteAtomicityNormal;
+ NVME_CDW11_FEATURE_NON_OPERATIONAL_POWER_STATE NonOperationalPowerState;
+ NVME_CDW11_FEATURE_IO_COMMAND_SET_PROFILE IoCommandSetProfile;
+ NVME_CDW11_FEATURE_ERROR_INJECTION ErrorInjection;
+ NVME_CDW11_FEATURE_HOST_IDENTIFIER HostIdentifier;
+ NVME_CDW11_FEATURE_RESERVATION_PERSISTENCE ReservationPersistence;
+ NVME_CDW11_FEATURE_RESERVATION_NOTIFICATION_MASK ReservationNotificationMask;
+ NVME_CDW11_FEATURE_GET_HOST_METADATA GetHostMetadata;
+ NVME_CDW11_FEATURE_SET_HOST_METADATA SetHostMetadata;
+ ULONG AsUlong;
+} NVME_CDW11_FEATURES, *PNVME_CDW11_FEATURES;
+
+typedef union {
+ NVME_CDW12_FEATURE_HOST_MEMORY_BUFFER HostMemoryBuffer;
+ ULONG AsUlong;
+} NVME_CDW12_FEATURES, *PNVME_CDW12_FEATURES;
+
+typedef union {
+ NVME_CDW13_FEATURE_HOST_MEMORY_BUFFER HostMemoryBuffer;
+ ULONG AsUlong;
+} NVME_CDW13_FEATURES, *PNVME_CDW13_FEATURES;
+
+typedef union {
+ NVME_CDW14_FEATURE_HOST_MEMORY_BUFFER HostMemoryBuffer;
+ ULONG AsUlong;
+} NVME_CDW14_FEATURES, *PNVME_CDW14_FEATURES;
+
+typedef union {
+ NVME_CDW15_FEATURE_HOST_MEMORY_BUFFER HostMemoryBuffer;
+ ULONG AsUlong;
+} NVME_CDW15_FEATURES, *PNVME_CDW15_FEATURES;
+
+#define NVME_MAX_LOG_SIZE 0x1000
+
+typedef enum {
+ NVME_LOG_PAGE_ERROR_INFO = 0x01,
+ NVME_LOG_PAGE_HEALTH_INFO = 0x02,
+ NVME_LOG_PAGE_FIRMWARE_SLOT_INFO = 0x03,
+ NVME_LOG_PAGE_CHANGED_NAMESPACE_LIST = 0x04,
+ NVME_LOG_PAGE_COMMAND_EFFECTS = 0x05,
+ NVME_LOG_PAGE_DEVICE_SELF_TEST = 0x06,
+ NVME_LOG_PAGE_TELEMETRY_HOST_INITIATED = 0x07,
+ NVME_LOG_PAGE_TELEMETRY_CTLR_INITIATED = 0x08,
+ NVME_LOG_PAGE_ENDURANCE_GROUP_INFORMATION = 0x09,
+ NVME_LOG_PAGE_PREDICTABLE_LATENCY_NVM_SET = 0x0A,
+ NVME_LOG_PAGE_PREDICTABLE_LATENCY_EVENT_AGGREGATE = 0x0B,
+ NVME_LOG_PAGE_ASYMMETRIC_NAMESPACE_ACCESS = 0x0C,
+ NVME_LOG_PAGE_PERSISTENT_EVENT_LOG = 0x0D,
+ NVME_LOG_PAGE_LBA_STATUS_INFORMATION = 0x0E,
+ NVME_LOG_PAGE_ENDURANCE_GROUP_EVENT_AGGREGATE = 0x0F,
+ NVME_LOG_PAGE_RESERVATION_NOTIFICATION = 0x80,
+ NVME_LOG_PAGE_SANITIZE_STATUS = 0x81,
+ NVME_LOG_PAGE_CHANGED_ZONE_LIST = 0xBF
+} NVME_LOG_PAGES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG LID : 8;
+ ULONG Reserved0 : 8;
+ ULONG NUMD : 12;
+ ULONG Reserved1 : 4;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_GET_LOG_PAGE, *PNVME_CDW10_GET_LOG_PAGE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG LID : 8;
+ ULONG LSP : 4;
+ ULONG Reserved0 : 3;
+ ULONG RAE : 1;
+ ULONG NUMDL : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_GET_LOG_PAGE_V13, *PNVME_CDW10_GET_LOG_PAGE_V13;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NUMDU : 16;
+ ULONG LogSpecificIdentifier : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_GET_LOG_PAGE, *PNVME_CDW11_GET_LOG_PAGE;
+
+typedef struct {
+ ULONG LPOL;
+} NVME_CDW12_GET_LOG_PAGE, *PNVME_CDW12_GET_LOG_PAGE;
+
+typedef struct {
+ ULONG LPOU;
+} NVME_CDW13_GET_LOG_PAGE, *PNVME_CDW13_GET_LOG_PAGE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG UUIDIndex : 7;
+ ULONG Reserved : 17;
+ ULONG CommandSetIdentifier : 8;
+ };
+ ULONG AsUlong;
+} NVME_CDW14_GET_LOG_PAGE, *PNVME_CDW14_GET_LOG_PAGE;
+
+typedef struct {
+ ULONGLONG ErrorCount;
+ USHORT SQID;
+ USHORT CMDID;
+ NVME_COMMAND_STATUS Status;
+ struct {
+ USHORT Byte : 8;
+ USHORT Bit : 3;
+ USHORT Reserved : 5;
+ } ParameterErrorLocation;
+ ULONGLONG Lba;
+ ULONG NameSpace;
+ UCHAR VendorInfoAvailable;
+ UCHAR Reserved0[3];
+ ULONGLONG CommandSpecificInfo;
+ UCHAR Reserved1[24];
+} NVME_ERROR_INFO_LOG, *PNVME_ERROR_INFO_LOG;
+
+typedef struct {
+ union {
+ __C89_NAMELESS struct {
+ UCHAR AvailableSpaceLow : 1;
+ UCHAR TemperatureThreshold : 1;
+ UCHAR ReliabilityDegraded : 1;
+ UCHAR ReadOnly : 1;
+ UCHAR VolatileMemoryBackupDeviceFailed : 1;
+ UCHAR Reserved : 3;
+ };
+ UCHAR AsUchar;
+ } CriticalWarning;
+ UCHAR Temperature[2];
+ UCHAR AvailableSpare;
+ UCHAR AvailableSpareThreshold;
+ UCHAR PercentageUsed;
+ UCHAR Reserved0[26];
+ UCHAR DataUnitRead[16];
+ UCHAR DataUnitWritten[16];
+ UCHAR HostReadCommands[16];
+ UCHAR HostWrittenCommands[16];
+ UCHAR ControllerBusyTime[16];
+ UCHAR PowerCycle[16];
+ UCHAR PowerOnHours[16];
+ UCHAR UnsafeShutdowns[16];
+ UCHAR MediaErrors[16];
+ UCHAR ErrorInfoLogEntryCount[16];
+ ULONG WarningCompositeTemperatureTime;
+ ULONG CriticalCompositeTemperatureTime;
+ USHORT TemperatureSensor1;
+ USHORT TemperatureSensor2;
+ USHORT TemperatureSensor3;
+ USHORT TemperatureSensor4;
+ USHORT TemperatureSensor5;
+ USHORT TemperatureSensor6;
+ USHORT TemperatureSensor7;
+ USHORT TemperatureSensor8;
+ UCHAR Reserved1[296];
+} NVME_HEALTH_INFO_LOG, *PNVME_HEALTH_INFO_LOG;
+
+#define NVME_TELEMETRY_DATA_BLOCK_SIZE 0x200
+
+typedef struct _NVME_TELEMETRY_HOST_INITIATED_LOG {
+ UCHAR LogIdentifier;
+ UCHAR Reserved0[4];
+ UCHAR OrganizationID[3];
+ USHORT Area1LastBlock;
+ USHORT Area2LastBlock;
+ USHORT Area3LastBlock;
+ UCHAR Reserved1[2];
+ ULONG Area4LastBlock;
+ UCHAR Reserved2[361];
+ UCHAR HostInitiatedDataGenerationNumber;
+ UCHAR ControllerInitiatedDataAvailable;
+ UCHAR ControllerInitiatedDataGenerationNumber;
+ UCHAR ReasonIdentifier[128];
+} NVME_TELEMETRY_HOST_INITIATED_LOG, *PNVME_TELEMETRY_HOST_INITIATED_LOG;
+
+typedef struct _NVME_TELEMETRY_CONTROLLER_INITIATED_LOG {
+ UCHAR LogIdentifier;
+ UCHAR Reserved0[4];
+ UCHAR OrganizationID[3];
+ USHORT Area1LastBlock;
+ USHORT Area2LastBlock;
+ USHORT Area3LastBlock;
+ UCHAR Reserved1[2];
+ ULONG Area4LastBlock;
+ UCHAR Reserved2[362];
+ UCHAR ControllerInitiatedDataAvailable;
+ UCHAR ControllerInitiatedDataGenerationNumber;
+ UCHAR ReasonIdentifier[128];
+} NVME_TELEMETRY_CONTROLLER_INITIATED_LOG, *PNVME_TELEMETRY_CONTROLLER_INITIATED_LOG;
+
+typedef struct {
+ struct {
+ UCHAR ActiveSlot : 3;
+ UCHAR Reserved0 : 1;
+ UCHAR PendingActivateSlot : 3;
+ UCHAR Reserved1 : 1;
+ } AFI;
+ UCHAR Reserved0[7];
+ ULONGLONG FRS[7];
+ UCHAR Reserved1[448];
+} NVME_FIRMWARE_SLOT_INFO_LOG, *PNVME_FIRMWARE_SLOT_INFO_LOG;
+
+typedef struct {
+ ULONG NSID[1024];
+} NVME_CHANGED_NAMESPACE_LIST_LOG, *PNVME_CHANGED_NAMESPACE_LIST_LOG;
+
+typedef struct {
+ USHORT ZoneIdentifiersCount;
+ UCHAR Reserved[6];
+ ULONGLONG ZoneIdentifier[511];
+} NVME_CHANGED_ZONE_LIST_LOG, *PNVME_CHANGED_ZONE_LIST_LOG;
+
+typedef enum {
+ NVME_COMMAND_EFFECT_SBUMISSION_EXECUTION_LIMIT_NONE = 0,
+ NVME_COMMAND_EFFECT_SBUMISSION_EXECUTION_LIMIT_SINGLE_PER_NAMESPACE = 1,
+ NVME_COMMAND_EFFECT_SBUMISSION_EXECUTION_LIMIT_SINGLE_PER_CONTROLLER = 2
+} NVME_COMMAND_EFFECT_SBUMISSION_EXECUTION_LIMITS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG CSUPP : 1;
+ ULONG LBCC : 1;
+ ULONG NCC : 1;
+ ULONG NIC : 1;
+ ULONG CCC : 1;
+ ULONG Reserved0 : 11;
+ ULONG CSE : 3;
+ ULONG Reserved1 : 13;
+ };
+ ULONG AsUlong;
+} NVME_COMMAND_EFFECTS_DATA, *PNVME_COMMAND_EFFECTS_DATA;
+
+typedef struct {
+ NVME_COMMAND_EFFECTS_DATA ACS[256];
+ NVME_COMMAND_EFFECTS_DATA IOCS[256];
+ UCHAR Reserved[2048];
+} NVME_COMMAND_EFFECTS_LOG, *PNVME_COMMAND_EFFECTS_LOG;
+
+#pragma pack(push, 1)
+typedef struct {
+ struct {
+ UCHAR Result : 4;
+ UCHAR CodeValue : 4;
+ } Status;
+ UCHAR SegmentNumber;
+ struct {
+ UCHAR NSIDValid : 1;
+ UCHAR FLBAValid : 1;
+ UCHAR SCTValid : 1;
+ UCHAR SCValid : 1;
+ UCHAR Reserved : 4;
+ } ValidDiagnostics;
+ UCHAR Reserved;
+ ULONGLONG POH;
+ ULONG NSID;
+ ULONGLONG FailingLBA;
+ struct {
+ UCHAR AdditionalInfo : 3;
+ UCHAR Reserved : 5;
+ } StatusCodeType;
+ UCHAR StatusCode;
+ USHORT VendorSpecific;
+} NVME_DEVICE_SELF_TEST_RESULT_DATA, *PNVME_DEVICE_SELF_TEST_RESULT_DATA;
+
+typedef struct {
+ struct {
+ UCHAR Status : 4;
+ UCHAR Reserved : 4;
+ } CurrentOperation;
+ struct {
+ UCHAR CompletePercent : 7;
+ UCHAR Reserved : 1;
+ } CurrentCompletion;
+ UCHAR Reserved[2];
+ NVME_DEVICE_SELF_TEST_RESULT_DATA ResultData[20];
+} NVME_DEVICE_SELF_TEST_LOG, *PNVME_DEVICE_SELF_TEST_LOG;
+
+typedef struct {
+ ULONG Reserved0;
+ UCHAR AvailableSpareThreshold;
+ UCHAR PercentageUsed;
+ UCHAR Reserved1[26];
+ UCHAR EnduranceEstimate[16];
+ UCHAR DataUnitsRead[16];
+ UCHAR DataUnitsWritten[16];
+ UCHAR MediaUnitsWritten[16];
+ UCHAR Reserved2[416];
+} NVME_ENDURANCE_GROUP_LOG, *PNVME_ENDURANCE_GROUP_LOG;
+
+typedef struct {
+ UCHAR LogIdentifier;
+ UCHAR Reserved0[3];
+ ULONG TotalNumberOfEvents;
+ ULONGLONG TotalLogLength;
+ UCHAR LogRevision;
+ UCHAR Reserved1;
+ USHORT LogHeaderLength;
+ ULONGLONG Timestamp;
+ UCHAR PowerOnHours[16];
+ ULONGLONG PowerCycleCount;
+ USHORT PciVendorId;
+ USHORT PciSubsystemVendorId;
+ UCHAR SerialNumber[20];
+ UCHAR ModelNumber[40];
+ UCHAR NVMSubsystemNVMeQualifiedName[256];
+ UCHAR Reserved[108];
+ UCHAR SupportedEventsBitmap[32];
+} NVME_PERSISTENT_EVENT_LOG_HEADER, *PNVME_PERSISTENT_EVENT_LOG_HEADER;
+
+typedef struct {
+ UCHAR EventType;
+ UCHAR EventTypeRevision;
+ UCHAR EventHeaderLength;
+ UCHAR Reserved0;
+ USHORT ControllerIdentifier;
+ ULONGLONG EventTimestamp;
+ UCHAR Reserved1[6];
+ USHORT VendorSpecificInformationLength;
+ USHORT EventLength;
+} NVME_PERSISTENT_EVENT_LOG_EVENT_HEADER, *PNVME_PERSISTENT_EVENT_LOG_EVENT_HEADER;
+
+typedef enum {
+ NVME_PERSISTENT_EVENT_TYPE_RESERVED0 = 0x00,
+ NVME_PERSISTENT_EVENT_TYPE_SMART_HEALTH_LOG_SNAPSHOT = 0x01,
+ NVME_PERSISTENT_EVENT_TYPE_FIRMWARE_COMMIT = 0x02,
+ NVME_PERSISTENT_EVENT_TYPE_TIMESTAMP_CHANGE = 0x03,
+ NVME_PERSISTENT_EVENT_TYPE_POWER_ON_OR_RESET = 0x04,
+ NVME_PERSISTENT_EVENT_TYPE_NVM_SUBSYSTEM_HARDWARE_ERROR = 0x05,
+ NVME_PERSISTENT_EVENT_TYPE_CHANGE_NAMESPACE = 0x06,
+ NVME_PERSISTENT_EVENT_TYPE_FORMAT_NVM_START = 0x07,
+ NVME_PERSISTENT_EVENT_TYPE_FORMAT_NVM_COMPLETION = 0x08,
+ NVME_PERSISTENT_EVENT_TYPE_SANITIZE_START = 0x09,
+ NVME_PERSISTENT_EVENT_TYPE_SANITIZE_COMPLETION = 0x0A,
+ NVME_PERSISTENT_EVENT_TYPE_SET_FEATURE = 0x0B,
+ NVME_PERSISTENT_EVENT_TYPE_TELEMETRY_LOG_CREATED = 0x0C,
+ NVME_PERSISTENT_EVENT_TYPE_THERMAL_EXCURSION = 0x0D,
+ NVME_PERSISTENT_EVENT_TYPE_RESERVED1_BEGIN = 0x0E,
+ NVME_PERSISTENT_EVENT_TYPE_RESERVED1_END = 0xDD,
+ NVME_PERSISTENT_EVENT_TYPE_VENDOR_SPECIFIC_EVENT = 0xDE,
+ NVME_PERSISTENT_EVENT_TYPE_TCG_DEFINED = 0xDF,
+ NVME_PERSISTENT_EVENT_TYPE_RESERVED2_BEGIN = 0xE0,
+ NVME_PERSISTENT_EVENT_TYPE_RESERVED2_END = 0xFF,
+ NVME_PERSISTENT_EVENT_TYPE_MAX = 0xFF
+} NVME_PERSISTENT_EVENT_LOG_EVENT_TYPES;
+
+#pragma pack(pop)
+
+typedef enum {
+ NVME_RESERVATION_NOTIFICATION_TYPE_EMPTY_LOG_PAGE = 0,
+ NVME_RESERVATION_NOTIFICATION_TYPE_REGISTRATION_PREEMPTED = 1,
+ NVME_RESERVATION_NOTIFICATION_TYPE_REGISTRATION_RELEASED = 2,
+ NVME_RESERVATION_NOTIFICATION_TYPE_RESERVATION_PREEPMPTED = 3
+} NVME_RESERVATION_NOTIFICATION_TYPES;
+
+typedef struct {
+ ULONGLONG LogPageCount;
+ UCHAR LogPageType;
+ UCHAR AvailableLogPageCount;
+ UCHAR Reserved0[2];
+ ULONG NameSpaceId;
+ UCHAR Reserved1[48];
+} NVME_RESERVATION_NOTIFICATION_LOG, *PNVME_RESERVATION_NOTIFICATION_LOG;
+
+typedef enum {
+ NVME_SANITIZE_OPERATION_NONE = 0,
+ NVME_SANITIZE_OPERATION_SUCCEEDED = 1,
+ NVME_SANITIZE_OPERATION_IN_PROGRESS = 2,
+ NVME_SANITIZE_OPERATION_FAILED = 3,
+ NVME_SANITIZE_OPERATION_SUCCEEDED_WITH_FORCED_DEALLOCATION = 4
+} NVME_SANITIZE_OPERATION_STATUS, *PNVME_SANITIZE_OPERATION_STATUS;
+
+typedef struct {
+ USHORT MostRecentSanitizeOperationStatus : 3;
+ USHORT NumberCompletedPassesOfOverwrite : 4;
+ USHORT GlobalDataErased : 1;
+ USHORT Reserved : 8;
+} NVME_SANITIZE_STATUS, *PNVME_SANITIZE_STATUS;
+
+typedef struct {
+ USHORT SPROG;
+ NVME_SANITIZE_STATUS SSTAT;
+ ULONG SCDW10;
+ ULONG EstimatedTimeForOverwrite;
+ ULONG EstimatedTimeForBlockErase;
+ ULONG EstimatedTimeForCryptoErase;
+ ULONG EstimatedTimeForOverwriteWithNoDeallocateMediaModification;
+ ULONG EstimatedTimeForBlockEraseWithNoDeallocateMediaModification;
+ ULONG EstimatedTimeForCryptoEraseWithNoDeallocateMediaModification;
+ UCHAR Reserved[480];
+} NVME_SANITIZE_STATUS_LOG, *PNVME_SANITIZE_STATUS_LOG;
+
+typedef struct {
+ ULONG NUMD;
+} NVME_CDW10_FIRMWARE_DOWNLOAD, *PNVME_CDW10_FIRMWARE_DOWNLOAD;
+
+typedef struct {
+ ULONG OFST;
+} NVME_CDW11_FIRMWARE_DOWNLOAD, *PNVME_CDW11_FIRMWARE_DOWNLOAD;
+
+typedef enum {
+ NVME_FIRMWARE_ACTIVATE_ACTION_DOWNLOAD_TO_SLOT = 0,
+ NVME_FIRMWARE_ACTIVATE_ACTION_DOWNLOAD_TO_SLOT_AND_ACTIVATE = 1,
+ NVME_FIRMWARE_ACTIVATE_ACTION_ACTIVATE = 2,
+ NVME_FIRMWARE_ACTIVATE_ACTION_DOWNLOAD_TO_SLOT_AND_ACTIVATE_IMMEDIATE = 3
+} NVME_FIRMWARE_ACTIVATE_ACTIONS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG FS : 3;
+ ULONG AA : 2;
+ ULONG Reserved : 27;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_FIRMWARE_ACTIVATE, *PNVME_CDW10_FIRMWARE_ACTIVATE;
+
+typedef enum {
+ NVME_PROTECTION_INFORMATION_NOT_ENABLED = 0,
+ NVME_PROTECTION_INFORMATION_TYPE1 = 1,
+ NVME_PROTECTION_INFORMATION_TYPE2 = 2,
+ NVME_PROTECTION_INFORMATION_TYPE3 = 3
+} NVME_PROTECTION_INFORMATION_TYPES;
+
+typedef enum {
+ NVME_SECURE_ERASE_NONE = 0,
+ NVME_SECURE_ERASE_USER_DATA = 1,
+ NVME_SECURE_ERASE_CRYPTOGRAPHIC = 2
+} NVME_SECURE_ERASE_SETTINGS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG LBAF : 4;
+ ULONG MS : 1;
+ ULONG PI : 3;
+ ULONG PIL : 1;
+ ULONG SES : 3;
+ ULONG ZF : 2;
+ ULONG Reserved : 18;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_FORMAT_NVM, *PNVME_CDW10_FORMAT_NVM;
+
+typedef enum {
+ NVME_MEDIA_ADDITIONALLY_MODIFIED_AFTER_SANITIZE_NOT_DEFINED = 0,
+ NVME_MEDIA_NOT_ADDITIONALLY_MODIFIED_AFTER_SANITIZE = 1,
+ NVME_MEDIA_ADDITIONALLY_MOFIDIED_AFTER_SANITIZE = 2
+} NVME_NO_DEALLOCATE_MODIFIES_MEDIA_AFTER_SANITIZE, *PNVME_NO_DEALLOCATE_MODIFIES_MEDIA_AFTER_SANITIZE;
+
+typedef enum {
+ NVME_SANITIZE_ACTION_RESERVED = 0,
+ NVME_SANITIZE_ACTION_EXIT_FAILURE_MODE = 1,
+ NVME_SANITIZE_ACTION_START_BLOCK_ERASE_SANITIZE = 2,
+ NVME_SANITIZE_ACTION_START_OVERWRITE_SANITIZE = 3,
+ NVME_SANITIZE_ACTION_START_CRYPTO_ERASE_SANITIZE = 4
+} NVME_SANITIZE_ACTION, *PNVME_SANITIZE_ACTION;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG SANACT : 3;
+ ULONG AUSE : 1;
+ ULONG OWPASS : 4;
+ ULONG OIPBP : 1;
+ ULONG NDAS : 1;
+ ULONG Reserved : 22;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_SANITIZE, *PNVME_CDW10_SANITIZE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG OVRPAT;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_SANITIZE;
+
+typedef enum {
+ NVME_RESERVATION_TYPE_RESERVED = 0,
+ NVME_RESERVATION_TYPE_WRITE_EXCLUSIVE = 1,
+ NVME_RESERVATION_TYPE_EXCLUSIVE_ACCESS = 2,
+ NVME_RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY = 3,
+ NVME_RESERVATION_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY = 4,
+ NVME_RESERVATION_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS = 5,
+ NVME_RESERVATION_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS = 6
+} NVME_RESERVATION_TYPES;
+
+typedef enum {
+ NVME_RESERVATION_ACQUIRE_ACTION_ACQUIRE = 0,
+ NVME_RESERVATION_ACQUIRE_ACTION_PREEMPT = 1,
+ NVME_RESERVATION_ACQUIRE_ACTION_PREEMPT_AND_ABORT = 2
+} NVME_RESERVATION_ACQUIRE_ACTIONS;
+
+typedef struct {
+ ULONG PTPL : 1;
+ ULONG Reserved : 31;
+} NVME_CDW0_RESERVATION_PERSISTENCE, *PNVME_CDW0_RESERVATION_PERSISTENCE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG RACQA : 3;
+ ULONG IEKEY : 1;
+ ULONG Reserved : 4;
+ ULONG RTYPE : 8;
+ ULONG Reserved1 : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_RESERVATION_ACQUIRE, *PNVME_CDW10_RESERVATION_ACQUIRE;
+
+typedef struct {
+ ULONGLONG CRKEY;
+ ULONGLONG PRKEY;
+} NVME_RESERVATION_ACQUIRE_DATA_STRUCTURE, *PNVME_RESERVATION_ACQUIRE_DATA_STRUCTURE;
+
+typedef enum {
+ NVME_RESERVATION_REGISTER_ACTION_REGISTER = 0,
+ NVME_RESERVATION_REGISTER_ACTION_UNREGISTER = 1,
+ NVME_RESERVATION_REGISTER_ACTION_REPLACE = 2
+} NVME_RESERVATION_REGISTER_ACTIONS;
+
+typedef enum {
+ NVME_RESERVATION_REGISTER_PTPL_STATE_NO_CHANGE = 0,
+ NVME_RESERVATION_REGISTER_PTPL_STATE_RESERVED = 1,
+ NVME_RESERVATION_REGISTER_PTPL_STATE_SET_TO_0 = 2,
+ NVME_RESERVATION_REGISTER_PTPL_STATE_SET_TO_1 = 3
+} NVME_RESERVATION_REGISTER_PTPL_STATE_CHANGES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG RREGA : 3;
+ ULONG IEKEY : 1;
+ ULONG Reserved : 26;
+ ULONG CPTPL : 2;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_RESERVATION_REGISTER, *PNVME_CDW10_RESERVATION_REGISTER;
+
+typedef struct {
+ ULONGLONG CRKEY;
+ ULONGLONG NRKEY;
+} NVME_RESERVATION_REGISTER_DATA_STRUCTURE, *PNVME_RESERVATION_REGISTER_DATA_STRUCTURE;
+
+typedef enum {
+ NVME_RESERVATION_RELEASE_ACTION_RELEASE = 0,
+ NVME_RESERVATION_RELEASE_ACTION_CLEAR = 1
+} NVME_RESERVATION_RELEASE_ACTIONS;
+
+typedef union {
+ struct {
+ ULONG RRELA : 3;
+ ULONG IEKEY : 1;
+ ULONG Reserved : 4;
+ ULONG RTYPE : 8;
+ ULONG Reserved1 : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_RESERVATION_RELEASE, *PNVME_CDW10_RESERVATION_RELEASE;
+
+typedef struct {
+ ULONGLONG CRKEY;
+} NVME_RESERVATION_RELEASE_DATA_STRUCTURE, *PNVME_RESERVATION_RELEASE_DATA_STRUCTURE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NUMD;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_RESERVATION_REPORT, *PNVME_CDW10_RESERVATION_REPORT;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG EDS : 1;
+ ULONG Reserved : 31;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_RESERVATION_REPORT, *PNVME_CDW11_RESERVATION_REPORT;
+
+#pragma pack(push, 1)
+typedef struct {
+ ULONG GEN;
+ UCHAR RTYPE;
+ USHORT REGCTL;
+ UCHAR Reserved[2];
+ UCHAR PTPLS;
+ UCHAR Reserved1[14];
+} NVME_RESERVATION_REPORT_STATUS_HEADER, *PNVME_RESERVATION_REPORT_STATUS_HEADER;
+#pragma pack(pop)
+
+C_ASSERT(sizeof(NVME_RESERVATION_REPORT_STATUS_HEADER) == 24);
+
+typedef struct {
+ USHORT CNTLID;
+ struct {
+ UCHAR HoldReservation : 1;
+ UCHAR Reserved : 7;
+ } RCSTS;
+ UCHAR Reserved[5];
+ UCHAR HOSTID[8];
+ ULONGLONG RKEY;
+} NVME_REGISTERED_CONTROLLER_DATA, *PNVME_REGISTERED_CONTROLLER_DATA;
+
+C_ASSERT(sizeof(NVME_REGISTERED_CONTROLLER_DATA) == 24);
+
+typedef struct {
+ NVME_RESERVATION_REPORT_STATUS_HEADER Header;
+ NVME_REGISTERED_CONTROLLER_DATA RegisteredControllersData[ANYSIZE_ARRAY];
+} NVME_RESERVATION_REPORT_STATUS_DATA_STRUCTURE, *PNVME_RESERVATION_REPORT_STATUS_DATA_STRUCTURE;
+
+typedef struct {
+ USHORT CNTLID;
+ struct {
+ UCHAR HoldReservation : 1;
+ UCHAR Reserved : 7;
+ } RCSTS;
+ UCHAR Reserved[5];
+ ULONGLONG RKEY;
+ UCHAR HOSTID[16];
+ UCHAR Reserved1[32];
+} NVME_REGISTERED_CONTROLLER_EXTENDED_DATA, *PNVME_REGISTERED_CONTROLLER_EXTENDED_DATA;
+
+C_ASSERT(sizeof(NVME_REGISTERED_CONTROLLER_EXTENDED_DATA) == 64);
+
+typedef struct {
+ NVME_RESERVATION_REPORT_STATUS_HEADER Header;
+ UCHAR Reserved1[40];
+ NVME_REGISTERED_CONTROLLER_EXTENDED_DATA RegisteredControllersExtendedData[ANYSIZE_ARRAY];
+} NVME_RESERVATION_REPORT_STATUS_EXTENDED_DATA_STRUCTURE, *PNVME_RESERVATION_REPORT_STATUS_EXTENDED_DATA_STRUCTURE;
+
+typedef enum {
+ NVME_DIRECTIVE_TYPE_IDENTIFY = 0x00,
+ NVME_DIRECTIVE_TYPE_STREAMS = 0x01
+} NVME_DIRECTIVE_TYPES;
+
+#define NVME_STREAMS_ID_MIN 1
+#define NVME_STREAMS_ID_MAX 0xFFFF
+
+typedef struct {
+ ULONG NUMD;
+} NVME_CDW10_DIRECTIVE_RECEIVE, *PNVME_CDW10_DIRECTIVE_RECEIVE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG DOPER : 8;
+ ULONG DTYPE : 8;
+ ULONG DSPEC : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_DIRECTIVE_RECEIVE, *PNVME_CDW11_DIRECTIVE_RECEIVE;
+
+typedef struct {
+ ULONG NUMD;
+} NVME_CDW10_DIRECTIVE_SEND, *PNVME_CDW10_DIRECTIVE_SEND;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG DOPER : 8;
+ ULONG DTYPE : 8;
+ ULONG DSPEC : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_DIRECTIVE_SEND, *PNVME_CDW11_DIRECTIVE_SEND;
+
+typedef enum {
+ NVME_DIRECTIVE_RECEIVE_IDENTIFY_OPERATION_RETURN_PARAMETERS = 1
+} NVME_DIRECTIVE_RECEIVE_IDENTIFY_OPERATIONS;
+
+typedef enum {
+ NVME_DIRECTIVE_SEND_IDENTIFY_OPERATION_ENABLE_DIRECTIVE = 1
+} NVME_DIRECTIVE_SEND_IDENTIFY_OPERATIONS;
+
+typedef struct {
+ UCHAR Identify : 1;
+ UCHAR Streams : 1;
+ UCHAR Reserved0 : 6;
+ UCHAR Reserved1[31];
+} NVME_DIRECTIVE_IDENTIFY_RETURN_PARAMETERS_DESCRIPTOR, *PNVME_DIRECTIVE_IDENTIFY_RETURN_PARAMETERS_DESCRIPTOR;
+
+typedef struct {
+ NVME_DIRECTIVE_IDENTIFY_RETURN_PARAMETERS_DESCRIPTOR DirectivesSupported;
+ NVME_DIRECTIVE_IDENTIFY_RETURN_PARAMETERS_DESCRIPTOR DirectivesEnabled;
+} NVME_DIRECTIVE_IDENTIFY_RETURN_PARAMETERS, *PNVME_DIRECTIVE_IDENTIFY_RETURN_PARAMETERS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG ENDIR : 1;
+ ULONG Reserved0 : 7;
+ ULONG DTYPE : 8;
+ ULONG Reserved1 : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW12_DIRECTIVE_SEND_IDENTIFY_ENABLE_DIRECTIVE, *PNVME_CDW12_DIRECTIVE_SEND_IDENTIFY_ENABLE_DIRECTIVE;
+
+typedef enum {
+ NVME_DIRECTIVE_RECEIVE_STREAMS_OPERATION_RETURN_PARAMETERS = 1,
+ NVME_DIRECTIVE_RECEIVE_STREAMS_OPERATION_GET_STATUS = 2,
+ NVME_DIRECTIVE_RECEIVE_STREAMS_OPERATION_ALLOCATE_RESOURCES = 3
+} NVME_DIRECTIVE_RECEIVE_STREAMS_OPERATIONS;
+
+typedef enum {
+ NVME_DIRECTIVE_SEND_STREAMS_OPERATION_RELEASE_IDENTIFIER = 1,
+ NVME_DIRECTIVE_SEND_STREAMS_OPERATION_RELEASE_RESOURCES = 2
+} NVME_DIRECTIVE_SEND_STREAMS_OPERATIONS;
+
+typedef struct {
+ USHORT MSL;
+ USHORT NSSA;
+ USHORT NSSO;
+ UCHAR Reserved0[10];
+ ULONG SWS;
+ USHORT SGS;
+ USHORT NSA;
+ USHORT NSO;
+ UCHAR Reserved1[6];
+} NVME_DIRECTIVE_STREAMS_RETURN_PARAMETERS, *PNVME_DIRECTIVE_STREAMS_RETURN_PARAMETERS;
+
+#define NVME_STREAMS_GET_STATUS_MAX_IDS 65535
+
+typedef struct {
+ USHORT OpenStreamCount;
+ USHORT StreamIdentifiers[NVME_STREAMS_GET_STATUS_MAX_IDS];
+} NVME_DIRECTIVE_STREAMS_GET_STATUS_DATA, *PNVME_DIRECTIVE_STREAMS_GET_STATUS_DATA;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NSR : 16;
+ ULONG Reserved : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW12_DIRECTIVE_RECEIVE_STREAMS_ALLOCATE_RESOURCES, *PNVME_CDW12_DIRECTIVE_RECEIVE_STREAMS_ALLOCATE_RESOURCES;
+
+typedef struct {
+ __C89_NAMELESS struct {
+ ULONG NSA : 16;
+ ULONG Reserved : 16;
+ };
+ ULONG AsUlong;
+} NVME_COMPLETION_DW0_DIRECTIVE_RECEIVE_STREAMS_ALLOCATE_RESOURCES, *PNVME_COMPLETION_DW0_DIRECTIVE_RECEIVE_STREAMS_ALLOCATE_RESOURCES;
+
+typedef union {
+ NVME_CDW12_DIRECTIVE_SEND_IDENTIFY_ENABLE_DIRECTIVE EnableDirective;
+ ULONG AsUlong;
+} NVME_CDW12_DIRECTIVE_SEND;
+
+typedef union {
+ NVME_CDW12_DIRECTIVE_RECEIVE_STREAMS_ALLOCATE_RESOURCES AllocateResources;
+ ULONG AsUlong;
+} NVME_CDW12_DIRECTIVE_RECEIVE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG Reserved0 : 8;
+ ULONG SPSP : 16;
+ ULONG SECP : 8;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_SECURITY_SEND_RECEIVE, *PNVME_CDW10_SECURITY_SEND_RECEIVE;
+
+typedef struct {
+ ULONG TL;
+} NVME_CDW11_SECURITY_SEND, *PNVME_CDW11_SECURITY_SEND;
+
+typedef struct {
+ ULONG AL;
+} NVME_CDW11_SECURITY_RECEIVE, *PNVME_CDW11_SECURITY_RECEIVE;
+
+typedef enum {
+ NVME_NVM_COMMAND_FLUSH = 0x00,
+ NVME_NVM_COMMAND_WRITE = 0x01,
+ NVME_NVM_COMMAND_READ = 0x02,
+ NVME_NVM_COMMAND_WRITE_UNCORRECTABLE = 0x04,
+ NVME_NVM_COMMAND_COMPARE = 0x05,
+ NVME_NVM_COMMAND_WRITE_ZEROES = 0x08,
+ NVME_NVM_COMMAND_DATASET_MANAGEMENT = 0x09,
+ NVME_NVM_COMMAND_VERIFY = 0x0C,
+ NVME_NVM_COMMAND_RESERVATION_REGISTER = 0x0D,
+ NVME_NVM_COMMAND_RESERVATION_REPORT = 0x0E,
+ NVME_NVM_COMMAND_RESERVATION_ACQUIRE = 0x11,
+ NVME_NVM_COMMAND_RESERVATION_RELEASE = 0x15,
+ NVME_NVM_COMMAND_COPY = 0x19,
+ NVME_NVM_COMMAND_ZONE_MANAGEMENT_SEND = 0x79,
+ NVME_NVM_COMMAND_ZONE_MANAGEMENT_RECEIVE = 0x7A,
+ NVME_NVM_COMMAND_ZONE_APPEND = 0x7D
+} NVME_NVM_COMMANDS;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NLB : 16;
+ ULONG Reserved0 : 4;
+ ULONG DTYPE : 4;
+ ULONG Reserved1 : 2;
+ ULONG PRINFO : 4;
+ ULONG FUA : 1;
+ ULONG LR : 1;
+ };
+ ULONG AsUlong;
+} NVME_CDW12_READ_WRITE, *PNVME_CDW12_READ_WRITE;
+
+typedef enum {
+ NVME_ACCESS_FREQUENCY_NONE = 0,
+ NVME_ACCESS_FREQUENCY_TYPICAL = 1,
+ NVME_ACCESS_FREQUENCY_INFR_WRITE_INFR_READ = 2,
+ NVME_ACCESS_FREQUENCY_INFR_WRITE_FR_READ = 3,
+ NVME_ACCESS_FREQUENCY_FR_WRITE_INFR_READ = 4,
+ NVME_ACCESS_FREQUENCY_FR_WRITE_FR_READ = 5,
+ NVME_ACCESS_FREQUENCY_ONE_TIME_READ = 6,
+ NVME_ACCESS_FREQUENCY_SPECULATIVE_READ = 7,
+ NVME_ACCESS_FREQUENCY_WILL_BE_OVERWRITTEN = 8
+} NVME_ACCESS_FREQUENCIES;
+
+typedef enum {
+ NVME_ACCESS_LATENCY_NONE = 0,
+ NVME_ACCESS_LATENCY_IDLE = 1,
+ NVME_ACCESS_LATENCY_NORMAL = 2,
+ NVME_ACCESS_LATENCY_LOW = 3
+} NVME_ACCESS_LATENCIES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ struct {
+ UCHAR AccessFrequency : 4;
+ UCHAR AccessLatency : 2;
+ UCHAR SequentialRequest : 1;
+ UCHAR Incompressible : 1;
+ } DSM;
+ UCHAR Reserved;
+ USHORT DSPEC;
+ };
+ ULONG AsUlong;
+} NVME_CDW13_READ_WRITE, *PNVME_CDW13_READ_WRITE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG ELBAT : 16;
+ ULONG ELBATM : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW15_READ_WRITE, *PNVME_CDW15_READ_WRITE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG AccessFrequency : 4;
+ ULONG AccessLatency : 2;
+ ULONG Reserved0 : 2;
+ ULONG SequentialReadRange : 1;
+ ULONG SequentialWriteRange : 1;
+ ULONG WritePrepare : 1;
+ ULONG Reserved1 : 13;
+ ULONG CommandAccessSize : 8;
+ };
+ ULONG AsUlong;
+} NVME_CONTEXT_ATTRIBUTES, *PNVME_CONTEXT_ATTRIBUTES;
+
+typedef struct {
+ NVME_CONTEXT_ATTRIBUTES Attributes;
+ ULONG LogicalBlockCount;
+ ULONGLONG StartingLBA;
+} NVME_LBA_RANGE, *PNVME_LBA_RANGE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NR : 8;
+ ULONG Reserved : 24;
+ };
+ ULONG AsUlong;
+} NVME_CDW10_DATASET_MANAGEMENT, *PNVME_CDW10_DATASET_MANAGEMENT;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG IDR : 1;
+ ULONG IDW : 1;
+ ULONG AD : 1;
+ ULONG Reserved : 29;
+ };
+ ULONG AsUlong;
+} NVME_CDW11_DATASET_MANAGEMENT, *PNVME_CDW11_DATASET_MANAGEMENT;
+
+typedef struct {
+ __C89_NAMELESS struct {
+ UCHAR ZT : 4;
+ UCHAR Reserved1 : 4;
+ };
+ __C89_NAMELESS struct {
+ UCHAR Reserved2 : 4;
+ UCHAR ZS : 4;
+ };
+ struct {
+ UCHAR ZFC : 1;
+ UCHAR FZR : 1;
+ UCHAR RZR : 1;
+ UCHAR Reserved : 4;
+ UCHAR ZDEV : 1;
+ } ZA;
+ UCHAR Reserved3[5];
+ ULONGLONG ZCAP;
+ ULONGLONG ZSLBA;
+ ULONGLONG WritePointer;
+ UCHAR Reserved4[32];
+} NVME_ZONE_DESCRIPTOR, *PNVME_ZONE_DESCRIPTOR;
+
+typedef enum {
+ NVME_STATE_ZSE = 0x1,
+ NVME_STATE_ZSIO = 0x2,
+ NVME_STATE_ZSEO = 0x3,
+ NVME_STATE_ZSC = 0x4,
+ NVME_STATE_ZSRO = 0xD,
+ NVME_STATE_ZSF = 0xE,
+ NVME_STATE_ZSO = 0xF
+} ZONE_STATE;
+
+typedef enum {
+ NVME_ZONE_SEND_CLOSE = 1,
+ NVME_ZONE_SEND_FINISH = 2,
+ NVME_ZONE_SEND_OPEN = 3,
+ NVME_ZONE_SEND_RESET = 4,
+ NVME_ZONE_SEND_OFFLINE = 5,
+ NVME_ZONE_SEND_SET_ZONE_DESCRIPTOR = 0x10
+} NVME_ZONE_SEND_ACTION;
+
+typedef struct {
+ ULONGLONG SLBA;
+} NVME_CDW10_ZONE_MANAGEMENT_SEND, *PNVME_CDW10_ZONE_MANAGEMENT_SEND;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG ZSA : 8;
+ ULONG SelectAll : 1;
+ ULONG Reserved : 23;
+ };
+ ULONG AsUlong;
+} NVME_CDW13_ZONE_MANAGEMENT_SEND, *PNVME_CDW13_ZONE_MANAGEMENT_SEND;
+
+typedef struct {
+ ULONGLONG ZoneCount;
+ ULONGLONG Reserved[7];
+ NVME_ZONE_DESCRIPTOR ZoneDescriptor[ANYSIZE_ARRAY];
+} NVME_REPORT_ZONE_INFO, *PNVME_REPORT_ZONE_INFO;
+
+typedef struct{
+ UCHAR ZoneDescriptorExtensionInfo[64];
+} NVME_ZONE_DESCRIPTOR_EXTENSION, *PNVME_ZONE_DESCRIPTOR_EXTENSION;
+
+typedef struct {
+ NVME_ZONE_DESCRIPTOR ZoneDescriptor;
+ NVME_ZONE_DESCRIPTOR_EXTENSION ZoneDescriptorExtension[ANYSIZE_ARRAY];
+} NVME_ZONE_EXTENDED_REPORT_ZONE_DESC, *PNVME_ZONE_EXTENDED_REPORT_ZONE_DESC;
+
+typedef struct {
+ ULONGLONG ZoneCount;
+ ULONGLONG Reserved[7];
+ NVME_ZONE_EXTENDED_REPORT_ZONE_DESC Desc[ANYSIZE_ARRAY];
+} NVME_EXTENDED_REPORT_ZONE_INFO, *PNVME_EXTENDED_REPORT_ZONE_INFO;
+
+typedef enum {
+ NVME_ZONE_RECEIVE_REPORT_ZONES = 0,
+ NVME_ZONE_RECEIVE_EXTENDED_REPORT_ZONES = 1
+} NVME_ZONE_RECEIVE_ACTION;
+
+typedef enum {
+ NVME_ZRA_ALL_ZONES = 0,
+ NVME_ZRA_EMPTY_STATE_ZONES = 1,
+ NVME_ZRA_IO_STATE_ZONES = 2,
+ NVME_ZRA_EO_STATE_ZONES = 3,
+ NVME_ZRA_CLOSED_STATE_ZONES = 4,
+ NVME_ZRA_FULL_STATE_ZONES = 5,
+ NVME_ZRA_RO_STATE_ZONES = 6,
+ NVME_ZRA_OFFLINE_STATE_ZONES = 7
+} NVME_ZONE_RECEIVE_ACTION_SPECIFIC;
+
+typedef struct {
+ ULONGLONG SLBA;
+} NVME_CDW10_ZONE_MANAGEMENT_RECEIVE, *PNVME_CDW10_ZONE_MANAGEMENT_RECEIVE;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG ZRA : 8;
+ ULONG ZRASpecific : 8;
+ ULONG Partial : 1;
+ ULONG Reserved : 15;
+ };
+ ULONG AsUlong;
+} NVME_CDW13_ZONE_MANAGEMENT_RECEIVE, *PNVME_CDW13_ZONE_MANAGEMENT_RECEIVE;
+
+typedef struct {
+ ULONGLONG SLBA;
+} NVME_CDW10_ZONE_APPEND, *PNVME_CDW10_ZONE_APPEND;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG NLB : 16;
+ ULONG Reserved : 9;
+ ULONG PIREMAP : 1;
+ ULONG PRINFO : 4;
+ ULONG FUA : 1;
+ ULONG LR : 1;
+ };
+ ULONG AsUlong;
+} NVME_CDW12_ZONE_APPEND, *PNVME_CDW12_ZONE_APPEND;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG LBAT : 16;
+ ULONG LBATM : 16;
+ };
+ ULONG AsUlong;
+} NVME_CDW15_ZONE_APPEND, *PNVME_CDW15_ZONE_APPEND;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONG OPC : 8;
+ ULONG FUSE : 2;
+ ULONG Reserved0 : 5;
+ ULONG PSDT : 1;
+ ULONG CID : 16;
+ };
+ ULONG AsUlong;
+} NVME_COMMAND_DWORD0, *PNVME_COMMAND_DWORD0;
+
+typedef enum {
+ NVME_FUSED_OPERATION_NORMAL = 0,
+ NVME_FUSED_OPERATION_FIRST_CMD = 1,
+ NVME_FUSED_OPERATION_SECOND_CMD = 2
+} NVME_FUSED_OPERATION_CODES;
+
+typedef union {
+ __C89_NAMELESS struct {
+ ULONGLONG Reserved0 : 2;
+ ULONGLONG PBAO : 62;
+ };
+ ULONGLONG AsUlonglong;
+} NVME_PRP_ENTRY, *PNVME_PRP_ENTRY;
+
+#define NVME_NAMESPACE_ALL 0xFFFFFFFF
+
+typedef struct {
+ NVME_COMMAND_DWORD0 CDW0;
+ ULONG NSID;
+ ULONG Reserved0[2];
+ ULONGLONG MPTR;
+ ULONGLONG PRP1;
+ ULONGLONG PRP2;
+ union {
+ struct {
+ ULONG CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } GENERAL;
+ struct {
+ NVME_CDW10_IDENTIFY CDW10;
+ NVME_CDW11_IDENTIFY CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } IDENTIFY;
+ struct {
+ NVME_CDW10_ABORT CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } ABORT;
+ struct {
+ NVME_CDW10_GET_FEATURES CDW10;
+ NVME_CDW11_FEATURES CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } GETFEATURES;
+ struct {
+ NVME_CDW10_SET_FEATURES CDW10;
+ NVME_CDW11_FEATURES CDW11;
+ NVME_CDW12_FEATURES CDW12;
+ NVME_CDW13_FEATURES CDW13;
+ NVME_CDW14_FEATURES CDW14;
+ NVME_CDW15_FEATURES CDW15;
+ } SETFEATURES;
+ struct {
+ union {
+ NVME_CDW10_GET_LOG_PAGE CDW10;
+ NVME_CDW10_GET_LOG_PAGE_V13 CDW10_V13;
+ };
+ NVME_CDW11_GET_LOG_PAGE CDW11;
+ NVME_CDW12_GET_LOG_PAGE CDW12;
+ NVME_CDW13_GET_LOG_PAGE CDW13;
+ NVME_CDW14_GET_LOG_PAGE CDW14;
+ ULONG CDW15;
+ } GETLOGPAGE;
+ struct {
+ NVME_CDW10_CREATE_IO_QUEUE CDW10;
+ NVME_CDW11_CREATE_IO_CQ CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } CREATEIOCQ;
+ struct {
+ NVME_CDW10_CREATE_IO_QUEUE CDW10;
+ NVME_CDW11_CREATE_IO_SQ CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } CREATEIOSQ;
+ struct {
+ NVME_CDW10_DATASET_MANAGEMENT CDW10;
+ NVME_CDW11_DATASET_MANAGEMENT CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } DATASETMANAGEMENT;
+ struct {
+ NVME_CDW10_SECURITY_SEND_RECEIVE CDW10;
+ NVME_CDW11_SECURITY_SEND CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } SECURITYSEND;
+ struct {
+ NVME_CDW10_SECURITY_SEND_RECEIVE CDW10;
+ NVME_CDW11_SECURITY_RECEIVE CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } SECURITYRECEIVE;
+ struct {
+ NVME_CDW10_FIRMWARE_DOWNLOAD CDW10;
+ NVME_CDW11_FIRMWARE_DOWNLOAD CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } FIRMWAREDOWNLOAD;
+ struct {
+ NVME_CDW10_FIRMWARE_ACTIVATE CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } FIRMWAREACTIVATE;
+ struct {
+ NVME_CDW10_FORMAT_NVM CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } FORMATNVM;
+ struct {
+ NVME_CDW10_DIRECTIVE_RECEIVE CDW10;
+ NVME_CDW11_DIRECTIVE_RECEIVE CDW11;
+ NVME_CDW12_DIRECTIVE_RECEIVE CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } DIRECTIVERECEIVE;
+ struct {
+ NVME_CDW10_DIRECTIVE_SEND CDW10;
+ NVME_CDW11_DIRECTIVE_SEND CDW11;
+ NVME_CDW12_DIRECTIVE_SEND CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } DIRECTIVESEND;
+ struct {
+ NVME_CDW10_SANITIZE CDW10;
+ NVME_CDW11_SANITIZE CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } SANITIZE;
+ struct {
+ ULONG LBALOW;
+ ULONG LBAHIGH;
+ NVME_CDW12_READ_WRITE CDW12;
+ NVME_CDW13_READ_WRITE CDW13;
+ ULONG CDW14;
+ NVME_CDW15_READ_WRITE CDW15;
+ } READWRITE;
+ struct {
+ NVME_CDW10_RESERVATION_ACQUIRE CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } RESERVATIONACQUIRE;
+ struct {
+ NVME_CDW10_RESERVATION_REGISTER CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } RESERVATIONREGISTER;
+ struct {
+ NVME_CDW10_RESERVATION_RELEASE CDW10;
+ ULONG CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } RESERVATIONRELEASE;
+ struct {
+ NVME_CDW10_RESERVATION_REPORT CDW10;
+ NVME_CDW11_RESERVATION_REPORT CDW11;
+ ULONG CDW12;
+ ULONG CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } RESERVATIONREPORT;
+ struct {
+ NVME_CDW10_ZONE_MANAGEMENT_SEND CDW1011;
+ ULONG CDW12;
+ NVME_CDW13_ZONE_MANAGEMENT_SEND CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } ZONEMANAGEMENTSEND;
+ struct {
+ NVME_CDW10_ZONE_MANAGEMENT_RECEIVE CDW1011;
+ ULONG DWORDCOUNT;
+ NVME_CDW13_ZONE_MANAGEMENT_RECEIVE CDW13;
+ ULONG CDW14;
+ ULONG CDW15;
+ } ZONEMANAGEMENTRECEIVE;
+ struct {
+ NVME_CDW10_ZONE_APPEND CDW1011;
+ NVME_CDW12_ZONE_APPEND CDW12;
+ ULONG CDW13;
+ ULONG ILBRT;
+ NVME_CDW15_ZONE_APPEND CDW15;
+ } ZONEAPPEND;
+ } u;
+} NVME_COMMAND, *PNVME_COMMAND;
+
+C_ASSERT(sizeof(NVME_COMMAND) == 64);
+
+typedef struct {
+ CHAR PCIVendorID[4];
+ CHAR ModelNumber[40];
+ CHAR NamespaceID[4];
+ CHAR SerialNumber[20];
+} NVME_SCSI_NAME_STRING, *PNVME_SCSI_NAME_STRING;
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#endif /* NVME_INCLUDED */
diff --git a/lib/libc/include/any-windows-any/oaidl.h b/lib/libc/include/any-windows-any/oaidl.h
index d4a4673dfe..92d525d225 100644
--- a/lib/libc/include/any-windows-any/oaidl.h
+++ b/lib/libc/include/any-windows-any/oaidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/oaidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/oaidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/objectarray.h b/lib/libc/include/any-windows-any/objectarray.h
index 1c980bcc20..7ed55460cc 100644
--- a/lib/libc/include/any-windows-any/objectarray.h
+++ b/lib/libc/include/any-windows-any/objectarray.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/objectarray.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/objectarray.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/objidl.h b/lib/libc/include/any-windows-any/objidl.h
index 6d6f32c868..70ba62486e 100644
--- a/lib/libc/include/any-windows-any/objidl.h
+++ b/lib/libc/include/any-windows-any/objidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/objidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/objidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/objidlbase.h b/lib/libc/include/any-windows-any/objidlbase.h
index 388af0083a..cb6e6dc59b 100644
--- a/lib/libc/include/any-windows-any/objidlbase.h
+++ b/lib/libc/include/any-windows-any/objidlbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/objidlbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/objidlbase.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/ocidl.h b/lib/libc/include/any-windows-any/ocidl.h
index 1e5024dead..09f89d7be7 100644
--- a/lib/libc/include/any-windows-any/ocidl.h
+++ b/lib/libc/include/any-windows-any/ocidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/ocidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/ocidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/oleacc.h b/lib/libc/include/any-windows-any/oleacc.h
index d0e4c90a87..aa5906db4e 100644
--- a/lib/libc/include/any-windows-any/oleacc.h
+++ b/lib/libc/include/any-windows-any/oleacc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/oleacc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/oleacc.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/oleidl.h b/lib/libc/include/any-windows-any/oleidl.h
index 999024db1a..ab263c7bf8 100644
--- a/lib/libc/include/any-windows-any/oleidl.h
+++ b/lib/libc/include/any-windows-any/oleidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/oleidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/oleidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/optary.h b/lib/libc/include/any-windows-any/optary.h
index 7b77570bfd..0b38f903a1 100644
--- a/lib/libc/include/any-windows-any/optary.h
+++ b/lib/libc/include/any-windows-any/optary.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/optary.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/optary.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/pchannel.h b/lib/libc/include/any-windows-any/pchannel.h
index 021219ca33..1eb7899f28 100644
--- a/lib/libc/include/any-windows-any/pchannel.h
+++ b/lib/libc/include/any-windows-any/pchannel.h
@@ -3,10 +3,18 @@
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
+
#ifndef _H_PCHANNEL
#define _H_PCHANNEL
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#if NTDDI_VERSION >= NTDDI_XP
+
#define CHANNEL_CHUNK_LENGTH 1600
+#define CHANNEL_BUFFER_SIZE 65535
#define CHANNEL_PDU_LENGTH (CHANNEL_CHUNK_LENGTH + sizeof(CHANNEL_PDU_HEADER))
@@ -29,6 +37,7 @@
#define CHANNEL_OPTION_COMPRESS_RDP 0x00800000
#define CHANNEL_OPTION_COMPRESS 0x00400000
#define CHANNEL_OPTION_SHOW_PROTOCOL 0x00200000
+#define CHANNEL_OPTION_REMOTE_CONTROL_PERSISTENT 0x00100000
#define CHANNEL_MAX_COUNT 30
#define CHANNEL_NAME_LEN 7
@@ -42,4 +51,9 @@ typedef struct tagCHANNEL_PDU_HEADER {
UINT32 length;
UINT32 flags;
} CHANNEL_PDU_HEADER,*PCHANNEL_PDU_HEADER;
-#endif
+
+#endif /* (NTDDI_VERSION >= NTDDI_XP) */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
+
+#endif /* _H_PCHANNEL */
diff --git a/lib/libc/include/any-windows-any/portabledevicetypes.h b/lib/libc/include/any-windows-any/portabledevicetypes.h
index 62108fb82b..a562c6dabb 100644
--- a/lib/libc/include/any-windows-any/portabledevicetypes.h
+++ b/lib/libc/include/any-windows-any/portabledevicetypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/portabledevicetypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/portabledevicetypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/processthreadsapi.h b/lib/libc/include/any-windows-any/processthreadsapi.h
index 888915101b..fe71aa80e5 100644
--- a/lib/libc/include/any-windows-any/processthreadsapi.h
+++ b/lib/libc/include/any-windows-any/processthreadsapi.h
@@ -99,8 +99,92 @@ extern "C" {
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
+
+ typedef enum _PROCESS_INFORMATION_CLASS {
+ ProcessMemoryPriority,
+ ProcessMemoryExhaustionInfo,
+ ProcessAppMemoryInfo,
+ ProcessInPrivateInfo,
+ ProcessPowerThrottling,
+ ProcessReservedValue1,
+ ProcessTelemetryCoverageInfo,
+ ProcessProtectionLevelInfo,
+ ProcessLeapSecondInfo,
+ ProcessMachineTypeInfo,
+ ProcessInformationClassMax
+ } PROCESS_INFORMATION_CLASS;
+
+ typedef struct _APP_MEMORY_INFORMATION {
+ ULONG64 AvailableCommit;
+ ULONG64 PrivateCommitUsage;
+ ULONG64 PeakPrivateCommitUsage;
+ ULONG64 TotalCommitUsage;
+ } APP_MEMORY_INFORMATION, *PAPP_MEMORY_INFORMATION;
+
+ typedef enum _MACHINE_ATTRIBUTES {
+ UserEnabled = 0x00000001,
+ KernelEnabled = 0x00000002,
+ Wow64Container = 0x00000004
+ } MACHINE_ATTRIBUTES;
+#ifndef __WIDL__
+DEFINE_ENUM_FLAG_OPERATORS(MACHINE_ATTRIBUTES);
+#endif
+
+ typedef struct _PROCESS_MACHINE_INFORMATION {
+ USHORT ProcessMachine;
+ USHORT Res0;
+ MACHINE_ATTRIBUTES MachineAttributes;
+ } PROCESS_MACHINE_INFORMATION;
+
+#define PME_CURRENT_VERSION 1
+
+ typedef enum _PROCESS_MEMORY_EXHAUSTION_TYPE {
+ PMETypeFailFastOnCommitFailure,
+ PMETypeMax
+ } PROCESS_MEMORY_EXHAUSTION_TYPE, *PPROCESS_MEMORY_EXHAUSTION_TYPE;
+
+#define PME_FAILFAST_ON_COMMIT_FAIL_DISABLE 0x0
+#define PME_FAILFAST_ON_COMMIT_FAIL_ENABLE 0x1
+
+ typedef struct _PROCESS_MEMORY_EXHAUSTION_INFO {
+ USHORT Version;
+ USHORT Reserved;
+ PROCESS_MEMORY_EXHAUSTION_TYPE Type;
+ ULONG_PTR Value;
+ } PROCESS_MEMORY_EXHAUSTION_INFO, *PPROCESS_MEMORY_EXHAUSTION_INFO;
+
+#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 1
+
+#define PROCESS_POWER_THROTTLING_EXECUTION_SPEED 0x1
+#define PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION 0x4
+
+#define PROCESS_POWER_THROTTLING_VALID_FLAGS (PROCESS_POWER_THROTTLING_EXECUTION_SPEED | PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION)
+
+ typedef struct _PROCESS_POWER_THROTTLING_STATE {
+ ULONG Version;
+ ULONG ControlMask;
+ ULONG StateMask;
+ } PROCESS_POWER_THROTTLING_STATE, *PPROCESS_POWER_THROTTLING_STATE;
+
+ typedef struct PROCESS_PROTECTION_LEVEL_INFORMATION {
+ DWORD ProtectionLevel;
+ } PROCESS_PROTECTION_LEVEL_INFORMATION;
+
+#define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1
+#define PROCESS_LEAP_SECOND_INFO_VALID_FLAGS PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND
+
+ typedef struct _PROCESS_LEAP_SECOND_INFO {
+ ULONG Flags;
+ ULONG Reserved;
+ } PROCESS_LEAP_SECOND_INFO, *PPROCESS_LEAP_SECOND_INFO;
+
+#if _WIN32_WINNT >= 0x0602
+ WINBASEAPI WINBOOL WINAPI GetProcessInformation (HANDLE hProcess, PROCESS_INFORMATION_CLASS ProcessInformationClass, LPVOID ProcessInformation, DWORD ProcessInformationSize);
+ WINBASEAPI WINBOOL WINAPI SetProcessInformation (HANDLE hProcess, PROCESS_INFORMATION_CLASS ProcessInformationClass, LPVOID ProcessInformation, DWORD ProcessInformationSize);
#endif
+#endif /* WINAPI_PARTITION_APP */
+
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC_THREAD_ATTRIBUTE_LIST;
@@ -210,6 +294,19 @@ extern "C" {
#if _WIN32_WINNT >= 0x0601
WINBASEAPI WINBOOL WINAPI SetThreadIdealProcessorEx (HANDLE hThread, PPROCESSOR_NUMBER lpIdealProcessor, PPROCESSOR_NUMBER lpPreviousIdealProcessor);
#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_VB
+ WINBASEAPI WINBOOL WINAPI SetProcessDynamicEHContinuationTargets (HANDLE Process, USHORT NumberOfTargets, PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets);
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_MN
+ typedef enum _QUEUE_USER_APC_FLAGS {
+ QUEUE_USER_APC_FLAGS_NONE = 0x0,
+ QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC = 0x1
+ } QUEUE_USER_APC_FLAGS;
+ WINBASEAPI WINBOOL WINAPI QueueUserAPC2 (PAPCFUNC ApcRoutine, HANDLE Thread, ULONG_PTR Data, QUEUE_USER_APC_FLAGS Flags);
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_FE
+ WINBASEAPI WINBOOL WINAPI SetProcessDynamicEnforcedCetCompatibleRanges (HANDLE Process, USHORT NumberOfRanges, PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges);
+#endif
#endif
diff --git a/lib/libc/include/any-windows-any/proofofpossessioncookieinfo.h b/lib/libc/include/any-windows-any/proofofpossessioncookieinfo.h
new file mode 100644
index 0000000000..348e09b7b3
--- /dev/null
+++ b/lib/libc/include/any-windows-any/proofofpossessioncookieinfo.h
@@ -0,0 +1,173 @@
+/*** Autogenerated by WIDL 7.0 from include/proofofpossessioncookieinfo.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __proofofpossessioncookieinfo_h__
+#define __proofofpossessioncookieinfo_h__
+
+/* Forward declarations */
+
+#ifndef __IProofOfPossessionCookieInfoManager_FWD_DEFINED__
+#define __IProofOfPossessionCookieInfoManager_FWD_DEFINED__
+typedef interface IProofOfPossessionCookieInfoManager IProofOfPossessionCookieInfoManager;
+#ifdef __cplusplus
+interface IProofOfPossessionCookieInfoManager;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __ProofOfPossessionCookieInfoManager_FWD_DEFINED__
+#define __ProofOfPossessionCookieInfoManager_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ProofOfPossessionCookieInfoManager ProofOfPossessionCookieInfoManager;
+#else
+typedef struct ProofOfPossessionCookieInfoManager ProofOfPossessionCookieInfoManager;
+#endif /* defined __cplusplus */
+#endif /* defined __ProofOfPossessionCookieInfoManager_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ProofOfPossessionCookieInfo {
+ LPWSTR name;
+ LPWSTR data;
+ DWORD flags;
+ LPWSTR p3pHeader;
+} ProofOfPossessionCookieInfo;
+static inline void FreeProofOfPossessionCookieInfoArray(ProofOfPossessionCookieInfo *cookie_info, DWORD count)
+{
+ unsigned int i;
+ for (i = 0; i < count; i++)
+ {
+ CoTaskMemFree(cookie_info[i].name);
+ CoTaskMemFree(cookie_info[i].data);
+ CoTaskMemFree(cookie_info[i].p3pHeader);
+ }
+ CoTaskMemFree(cookie_info);
+}
+/*****************************************************************************
+ * IProofOfPossessionCookieInfoManager interface
+ */
+#ifndef __IProofOfPossessionCookieInfoManager_INTERFACE_DEFINED__
+#define __IProofOfPossessionCookieInfoManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IProofOfPossessionCookieInfoManager, 0xcdaece56, 0x4edf, 0x43df, 0xb1,0x13, 0x88,0xe4,0x55,0x6f,0xa1,0xbb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("cdaece56-4edf-43df-b113-88e4556fa1bb")
+IProofOfPossessionCookieInfoManager : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetCookieInfoForUri(
+ LPCWSTR uri,
+ DWORD *cookieInfoCount,
+ ProofOfPossessionCookieInfo **cookieInfo) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IProofOfPossessionCookieInfoManager, 0xcdaece56, 0x4edf, 0x43df, 0xb1,0x13, 0x88,0xe4,0x55,0x6f,0xa1,0xbb)
+#endif
+#else
+typedef struct IProofOfPossessionCookieInfoManagerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IProofOfPossessionCookieInfoManager *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IProofOfPossessionCookieInfoManager *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IProofOfPossessionCookieInfoManager *This);
+
+ /*** IProofOfPossessionCookieInfoManager methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetCookieInfoForUri)(
+ IProofOfPossessionCookieInfoManager *This,
+ LPCWSTR uri,
+ DWORD *cookieInfoCount,
+ ProofOfPossessionCookieInfo **cookieInfo);
+
+ END_INTERFACE
+} IProofOfPossessionCookieInfoManagerVtbl;
+
+interface IProofOfPossessionCookieInfoManager {
+ CONST_VTBL IProofOfPossessionCookieInfoManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IProofOfPossessionCookieInfoManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IProofOfPossessionCookieInfoManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IProofOfPossessionCookieInfoManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IProofOfPossessionCookieInfoManager methods ***/
+#define IProofOfPossessionCookieInfoManager_GetCookieInfoForUri(This,uri,cookieInfoCount,cookieInfo) (This)->lpVtbl->GetCookieInfoForUri(This,uri,cookieInfoCount,cookieInfo)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IProofOfPossessionCookieInfoManager_QueryInterface(IProofOfPossessionCookieInfoManager* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IProofOfPossessionCookieInfoManager_AddRef(IProofOfPossessionCookieInfoManager* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IProofOfPossessionCookieInfoManager_Release(IProofOfPossessionCookieInfoManager* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IProofOfPossessionCookieInfoManager methods ***/
+static FORCEINLINE HRESULT IProofOfPossessionCookieInfoManager_GetCookieInfoForUri(IProofOfPossessionCookieInfoManager* This,LPCWSTR uri,DWORD *cookieInfoCount,ProofOfPossessionCookieInfo **cookieInfo) {
+ return This->lpVtbl->GetCookieInfoForUri(This,uri,cookieInfoCount,cookieInfo);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IProofOfPossessionCookieInfoManager_INTERFACE_DEFINED__ */
+
+#ifndef __ProofOfPossessionCookieInfoManagerLib_LIBRARY_DEFINED__
+#define __ProofOfPossessionCookieInfoManagerLib_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_ProofOfPossessionCookieInfoManagerLib, 0x7681a019, 0x8f51, 0x4594, 0x95,0x07, 0xf2,0x70,0x40,0xf7,0x1f,0x01);
+
+/*****************************************************************************
+ * ProofOfPossessionCookieInfoManager coclass
+ */
+
+DEFINE_GUID(CLSID_ProofOfPossessionCookieInfoManager, 0xa9927f85, 0xa304, 0x4390, 0x8b,0x23, 0xa7,0x5f,0x1c,0x66,0x86,0x00);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("a9927f85-a304-4390-8b23-a75f1c668600") ProofOfPossessionCookieInfoManager;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ProofOfPossessionCookieInfoManager, 0xa9927f85, 0xa304, 0x4390, 0x8b,0x23, 0xa7,0x5f,0x1c,0x66,0x86,0x00)
+#endif
+#endif
+
+#endif /* __ProofOfPossessionCookieInfoManagerLib_LIBRARY_DEFINED__ */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __proofofpossessioncookieinfo_h__ */
diff --git a/lib/libc/include/any-windows-any/propidl.h b/lib/libc/include/any-windows-any/propidl.h
index 8f51c7bb15..cad573498a 100644
--- a/lib/libc/include/any-windows-any/propidl.h
+++ b/lib/libc/include/any-windows-any/propidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/propidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/propidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/propsys.h b/lib/libc/include/any-windows-any/propsys.h
index 2f67c14c02..c2667c92a3 100644
--- a/lib/libc/include/any-windows-any/propsys.h
+++ b/lib/libc/include/any-windows-any/propsys.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/propsys.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/propsys.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/propvarutil.h b/lib/libc/include/any-windows-any/propvarutil.h
index 5be1e1d1e1..b88580b90e 100644
--- a/lib/libc/include/any-windows-any/propvarutil.h
+++ b/lib/libc/include/any-windows-any/propvarutil.h
@@ -22,9 +22,13 @@
#include <shtypes.h>
#include <shlwapi.h>
-#if !defined (_NTDEF_) && !defined (_NTSTATUS_PSDK)
-#define _NTSTATUS_PSDK
-typedef LONG NTSTATUS, *PNTSTATUS;
+#ifndef WINE_NTSTATUS_DECLARED
+#define WINE_NTSTATUS_DECLARED
+typedef LONG NTSTATUS;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
#endif
enum tagPROPVAR_CHANGE_FLAGS
@@ -69,26 +73,42 @@ HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT p
HRESULT WINAPI InitPropVariantFromGUIDAsString(REFGUID guid, PROPVARIANT *ppropvar);
HRESULT WINAPI InitVariantFromGUIDAsString(REFGUID guid, VARIANT *pvar);
HRESULT WINAPI InitPropVariantFromBuffer(const VOID *pv, UINT cb, PROPVARIANT *ppropvar);
+HRESULT WINAPI InitPropVariantFromCLSID(REFCLSID clsid, PROPVARIANT *ppropvar);
HRESULT WINAPI InitVariantFromBuffer(const VOID *pv, UINT cb, VARIANT *pvar);
HRESULT WINAPI PropVariantToGUID(const PROPVARIANT *ppropvar, GUID *guid);
HRESULT WINAPI VariantToGUID(const VARIANT *pvar, GUID *guid);
INT WINAPI PropVariantCompareEx(REFPROPVARIANT propvar1, REFPROPVARIANT propvar2,
PROPVAR_COMPARE_UNIT uint, PROPVAR_COMPARE_FLAGS flags);
+HRESULT WINAPI InitPropVariantFromFileTime(const FILETIME *pftIn, PROPVARIANT *ppropvar);
+HRESULT WINAPI PropVariantToDouble(REFPROPVARIANT propvarIn, double *ret);
HRESULT WINAPI PropVariantToInt16(REFPROPVARIANT propvarIn, SHORT *ret);
HRESULT WINAPI PropVariantToInt32(REFPROPVARIANT propvarIn, LONG *ret);
HRESULT WINAPI PropVariantToInt64(REFPROPVARIANT propvarIn, LONGLONG *ret);
HRESULT WINAPI PropVariantToUInt16(REFPROPVARIANT propvarIn, USHORT *ret);
HRESULT WINAPI PropVariantToUInt32(REFPROPVARIANT propvarIn, ULONG *ret);
HRESULT WINAPI PropVariantToUInt64(REFPROPVARIANT propvarIn, ULONGLONG *ret);
+HRESULT WINAPI PropVariantToBoolean(REFPROPVARIANT propvarIn, WINBOOL *ret);
+HRESULT WINAPI PropVariantToBuffer(REFPROPVARIANT propvarIn, void *ret, UINT cb);
+HRESULT WINAPI PropVariantToString(REFPROPVARIANT propvarIn, PWSTR ret, UINT cch);
+PCWSTR WINAPI PropVariantToStringWithDefault(REFPROPVARIANT propvarIn, LPCWSTR pszDefault);
HRESULT WINAPI PropVariantToStringAlloc(REFPROPVARIANT propvarIn, WCHAR **ret);
#ifdef __cplusplus
HRESULT InitPropVariantFromBoolean(WINBOOL fVal, PROPVARIANT *ppropvar);
-HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromInt16(SHORT nVal, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromUInt16(USHORT uiVal, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromInt32(LONG lVal, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromUInt32(ULONG ulVal, PROPVARIANT *ppropvar);
HRESULT InitPropVariantFromInt64(LONGLONG llVal, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromUInt64(ULONGLONG ullVal, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromDouble(DOUBLE dblVal, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar);
+HRESULT InitPropVariantFromGUIDAsBuffer(REFGUID guid, PROPVARIANT *ppropvar);
+WINBOOL IsPropVariantVector(REFPROPVARIANT propvar);
+WINBOOL IsPropVariantString(REFPROPVARIANT propvar);
#ifndef NO_PROPVAR_INLINES
@@ -99,6 +119,55 @@ inline HRESULT InitPropVariantFromBoolean(WINBOOL fVal, PROPVARIANT *ppropvar)
return S_OK;
}
+inline HRESULT InitPropVariantFromInt16(SHORT nVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_I2;
+ ppropvar->iVal = nVal;
+ return S_OK;
+}
+
+inline HRESULT InitPropVariantFromUInt16(USHORT uiVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_UI2;
+ ppropvar->uiVal = uiVal;
+ return S_OK;
+}
+
+inline HRESULT InitPropVariantFromInt32(LONG lVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_I4;
+ ppropvar->lVal = lVal;
+ return S_OK;
+}
+
+inline HRESULT InitPropVariantFromUInt32(ULONG ulVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_UI4;
+ ppropvar->ulVal = ulVal;
+ return S_OK;
+}
+
+inline HRESULT InitPropVariantFromInt64(LONGLONG llVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_I8;
+ ppropvar->hVal.QuadPart = llVal;
+ return S_OK;
+}
+
+inline HRESULT InitPropVariantFromUInt64(ULONGLONG ullVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_UI8;
+ ppropvar->uhVal.QuadPart = ullVal;
+ return S_OK;
+}
+
+inline HRESULT InitPropVariantFromDouble(DOUBLE dblVal, PROPVARIANT *ppropvar)
+{
+ ppropvar->vt = VT_R8;
+ ppropvar->dblVal = dblVal;
+ return S_OK;
+}
+
inline HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar)
{
HRESULT hres;
@@ -112,14 +181,31 @@ inline HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar)
return hres;
}
-inline HRESULT InitPropVariantFromInt64(LONGLONG llVal, PROPVARIANT *ppropvar)
+inline HRESULT InitPropVariantFromGUIDAsBuffer(REFGUID guid, PROPVARIANT *ppropvar)
{
- ppropvar->vt = VT_I8;
- ppropvar->hVal.QuadPart = llVal;
- return S_OK;
+#ifdef __cplusplus
+ return InitPropVariantFromBuffer(&guid, sizeof(GUID), ppropvar);
+#else
+ return InitPropVariantFromBuffer(guid, sizeof(GUID), ppropvar);
+#endif
}
-#endif
+inline WINBOOL IsPropVariantVector(REFPROPVARIANT propvar)
+{
+ return (propvar.vt & (VT_ARRAY | VT_VECTOR));
+}
+
+inline WINBOOL IsPropVariantString(REFPROPVARIANT propvar)
+{
+ return (PropVariantToStringWithDefault(propvar, NULL) != NULL);
+}
+
+#endif /* NO_PROPVAR_INLINES */
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
#endif
#endif /* __WINE_PROPVARUTIL_H */
diff --git a/lib/libc/include/any-windows-any/psdk_inc/_dbg_common.h b/lib/libc/include/any-windows-any/psdk_inc/_dbg_common.h
index 48f2b9d7dd..f11d3c9e8f 100644
--- a/lib/libc/include/any-windows-any/psdk_inc/_dbg_common.h
+++ b/lib/libc/include/any-windows-any/psdk_inc/_dbg_common.h
@@ -192,7 +192,12 @@ extern "C" {
DWORD64 KiUserExceptionDispatcher;
DWORD64 StackBase;
DWORD64 StackLimit;
- DWORD64 Reserved[5];
+ DWORD BuildVersion;
+ DWORD RetpolineStubFunctionTableSize;
+ DWORD64 RetpolineStubFunctionTable;
+ DWORD RetpolineStubOffset;
+ DWORD RetpolineStubSize;
+ DWORD64 Reserved0[2];
} KDHELP64,*PKDHELP64;
#ifdef _IMAGEHLP64
@@ -242,6 +247,25 @@ extern "C" {
KDHELP64 KdHelp;
} STACKFRAME64,*LPSTACKFRAME64;
+#define INLINE_FRAME_CONTEXT_INIT 0
+#define INLINE_FRAME_CONTEXT_IGNORE 0xFFFFFFFF
+
+ typedef struct _tagSTACKFRAME_EX {
+ ADDRESS64 AddrPC;
+ ADDRESS64 AddrReturn;
+ ADDRESS64 AddrFrame;
+ ADDRESS64 AddrStack;
+ ADDRESS64 AddrBStore;
+ PVOID FuncTableEntry;
+ DWORD64 Params[4];
+ WINBOOL Far;
+ WINBOOL Virtual;
+ DWORD64 Reserved[3];
+ KDHELP64 KdHelp;
+ DWORD StackFrameSize;
+ DWORD InlineFrameContext;
+ } STACKFRAME_EX,*LPSTACKFRAME_EX;
+
#ifdef _IMAGEHLP64
#define STACKFRAME STACKFRAME64
#define LPSTACKFRAME LPSTACKFRAME64
@@ -336,6 +360,18 @@ GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
#define SYMFLAG_VIRTUAL 0x00001000
#define SYMFLAG_THUNK 0x00002000
#define SYMFLAG_TLSREL 0x00004000
+#define SYMFLAG_SLOT 0x00008000
+#define SYMFLAG_ILREL 0x00010000
+#define SYMFLAG_METADATA 0x00020000
+#define SYMFLAG_CLR_TOKEN 0x00040000
+#define SYMFLAG_NULL 0x00080000
+#define SYMFLAG_FUNC_NO_RETURN 0x00100000
+#define SYMFLAG_SYNTHETIC_ZEROBASE 0x00200000
+#define SYMFLAG_PUBLIC_CODE 0x00400000
+#define SYMFLAG_REGREL_ALIASINDIR 0x00800000
+#define SYMFLAG_FIXUP_ARM64X 0x01000000
+#define SYMFLAG_GLOBAL 0x02000000
+#define SYMFLAG_RESET 0x80000000
typedef enum {
SymNone = 0,
@@ -411,8 +447,15 @@ GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
WINBOOL TypeInfo;
WINBOOL SourceIndexed;
WINBOOL Publics;
+ DWORD MachineType;
+ DWORD Reserved;
} IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64;
+ typedef struct _IMAGEHLP_MODULE64_EX {
+ IMAGEHLP_MODULE64 Module;
+ DWORD RegionFlags;
+ } IMAGEHLP_MODULE64_EX,*PIMAGEHLP_MODULE64_EX;
+
typedef struct _IMAGEHLP_MODULE64W {
DWORD SizeOfStruct;
DWORD64 BaseOfImage;
@@ -437,8 +480,15 @@ GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
WINBOOL TypeInfo;
WINBOOL SourceIndexed;
WINBOOL Publics;
+ DWORD MachineType;
+ DWORD Reserved;
} IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64;
+ typedef struct _IMAGEHLP_MODULEW64_EX {
+ IMAGEHLP_MODULEW64 Module;
+ DWORD RegionFlags;
+ } IMAGEHLP_MODULEW64_EX,*PIMAGEHLP_MODULEW64_EX;
+
#ifdef _IMAGEHLP64
#define IMAGEHLP_MODULE IMAGEHLP_MODULE64
#define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
@@ -1137,6 +1187,11 @@ typedef struct _SYMSRV_INDEX_INFOW {
ThreadInfoListStream = 17,
HandleOperationListStream = 18,
TokenStream = 19,
+ JavaScriptDataStream = 20,
+ SystemMemoryInfoStream = 21,
+ ProcessVmCountersStream = 22,
+ IptTraceStream = 23,
+ ThreadNamesStream = 24,
ceStreamNull = 0x8000,
ceStreamSystemInfo = 0x8001,
ceStreamException = 0x8002,
@@ -1283,6 +1338,25 @@ typedef struct _SYMSRV_INDEX_INFOW {
WINBOOL ClientPointers;
} MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64;
+ typedef enum _MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE {
+ MiniHandleObjectInformationNone,
+ MiniThreadInformation1,
+ MiniMutantInformation1,
+ MiniMutantInformation2,
+ MiniProcessInformation1,
+ MiniProcessInformation2,
+ MiniEventInformation1,
+ MiniSectionInformation1,
+ MiniSemaphoreInformation1,
+ MiniHandleObjectInformationTypeMax
+ } MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE;
+
+ typedef struct _MINIDUMP_HANDLE_OBJECT_INFORMATION {
+ RVA NextInfoRva;
+ ULONG32 InfoType;
+ ULONG32 SizeOfInfo;
+ } MINIDUMP_HANDLE_OBJECT_INFORMATION;
+
typedef struct _MINIDUMP_HANDLE_DESCRIPTOR {
ULONG64 Handle;
RVA TypeNameRva;
@@ -1376,12 +1450,20 @@ typedef struct _SYMSRV_INDEX_INFOW {
IoWriteAllCallback,
IoFinishCallback,
ReadMemoryFailureCallback,
- SecondaryFlagsCallback
+ SecondaryFlagsCallback,
+ IsProcessSnapshotCallback,
+ VmStartCallback,
+ VmQueryCallback,
+ VmPreReadCallback,
+ VmPostReadCallback
} MINIDUMP_CALLBACK_TYPE;
typedef struct _MINIDUMP_THREAD_CALLBACK {
ULONG ThreadId;
HANDLE ThreadHandle;
+#if defined(__aarch64__)
+ ULONG Pad;
+#endif
CONTEXT Context;
ULONG SizeOfContext;
ULONG64 StackBase;
@@ -1391,6 +1473,9 @@ typedef struct _SYMSRV_INDEX_INFOW {
typedef struct _MINIDUMP_THREAD_EX_CALLBACK {
ULONG ThreadId;
HANDLE ThreadHandle;
+#if defined(__aarch64__)
+ ULONG Pad;
+#endif
CONTEXT Context;
ULONG SizeOfContext;
ULONG64 StackBase;
@@ -1531,7 +1616,13 @@ typedef struct _MINIDUMP_MEMORY_INFO_LIST {
MiniDumpWithFullAuxiliaryState = 0x00008000,
MiniDumpWithPrivateWriteCopyMemory = 0x00010000,
MiniDumpIgnoreInaccessibleMemory = 0x00020000,
- MiniDumpWithTokenInformation = 0x00040000
+ MiniDumpWithTokenInformation = 0x00040000,
+ MiniDumpWithModuleHeaders = 0x00080000,
+ MiniDumpFilterTriage = 0x00100000,
+ MiniDumpWithAvxXStateContext = 0x00200000,
+ MiniDumpWithIptTrace = 0x00400000,
+ MiniDumpScanInaccessiblePartialPages = 0x00800000,
+ MiniDumpValidTypeFlags = 0x00ffffff
} MINIDUMP_TYPE;
#define MINIDUMP_THREAD_INFO_ERROR_THREAD 0x00000001
diff --git a/lib/libc/include/any-windows-any/psdk_inc/_ip_mreq1.h b/lib/libc/include/any-windows-any/psdk_inc/_ip_mreq1.h
index 5ca7bb3861..1840ecb3b5 100644
--- a/lib/libc/include/any-windows-any/psdk_inc/_ip_mreq1.h
+++ b/lib/libc/include/any-windows-any/psdk_inc/_ip_mreq1.h
@@ -4,9 +4,18 @@
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
+/*
+ * Shared data types between winsock and winsock2
+ */
+
#ifndef _MINGW_IP_MREQ1_H
#define _MINGW_IP_MREQ1_H
#include <inaddr.h>
+typedef struct ip_mreq {
+ struct in_addr imr_multiaddr;
+ struct in_addr imr_interface;
+} IP_MREQ, *PIP_MREQ;
+
#endif /* _MINGW_IP_MREQ1_H */
diff --git a/lib/libc/include/any-windows-any/psdk_inc/intrin-impl.h b/lib/libc/include/any-windows-any/psdk_inc/intrin-impl.h
index 27cc26acbe..3ee404d6af 100644
--- a/lib/libc/include/any-windows-any/psdk_inc/intrin-impl.h
+++ b/lib/libc/include/any-windows-any/psdk_inc/intrin-impl.h
@@ -1424,6 +1424,123 @@ unsigned char _BitScanReverse64(unsigned __LONG32 *Index, unsigned __int64 Mask)
#endif /* __INTRINSIC_PROLOG */
#endif /* defined(__aarch64__) || define(_ARM64_) */
+
+#if defined(__arm__) || defined(_ARM_) || defined(__aarch64__) || defined(_ARM64_)
+
+#if __INTRINSIC_PROLOG(_bittest)
+unsigned char _bittest(const __LONG32 *__a, __LONG32 __b);
+#if !__has_builtin(_bittest)
+__INTRINSICS_USEINLINE
+unsigned char _bittest(const __LONG32 *__a, __LONG32 __b)
+{
+ return (*__a >> __b) & 1;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittest
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandset)
+unsigned char _bittestandset(__LONG32 *__a, __LONG32 __b);
+#if !__has_builtin(_bittestandset)
+__INTRINSICS_USEINLINE
+unsigned char _bittestandset(__LONG32 *__a, __LONG32 __b)
+{
+ unsigned char __v = (*__a >> __b) & 1;
+ *__a |= 1UL << __b;
+ return __v;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittestandset
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandreset)
+unsigned char _bittestandreset(__LONG32 *__a, __LONG32 __b);
+#if !__has_builtin(_bittestandreset)
+__INTRINSICS_USEINLINE
+unsigned char _bittestandreset(__LONG32 *__a, __LONG32 __b)
+{
+ unsigned char __v = (*__a >> __b) & 1;
+ *__a &= ~(1UL << __b);
+ return __v;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittestandreset
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandcomplement)
+unsigned char _bittestandcomplement(__LONG32 *a, __LONG32 b);
+#if !__has_builtin(_bittestandcomplement)
+__INTRINSICS_USEINLINE
+unsigned char _bittestandcomplement(__LONG32 *__a, __LONG32 __b)
+{
+ unsigned char __v = (*__a >> __b) & 1;
+ *__a ^= 1UL << __b;
+ return __v;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittestandcomplement
+#endif /* __INTRINSIC_PROLOG */
+
+#endif /* defined(__arm__) || defined(_ARM_) || defined(__aarch64__) || defined(_ARM64_) */
+
+#if defined(__aarch64__) || defined(_ARM64_)
+
+#if __INTRINSIC_PROLOG(_bittest64)
+unsigned char _bittest64(const __int64 *__a, __int64 __b);
+#if !__has_builtin(_bittest64)
+__INTRINSICS_USEINLINE
+unsigned char _bittest64(const __int64 *__a, __int64 __b)
+{
+ return (*__a >> __b) & 1;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittest64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandset64)
+unsigned char _bittestandset64(__int64 *__a, __int64 __b);
+#if !__has_builtin(_bittestandset64)
+__INTRINSICS_USEINLINE
+unsigned char _bittestandset64(__int64 *__a, __int64 __b)
+{
+ unsigned char __v = (*__a >> __b) & 1;
+ *__a |= 1ULL << __b;
+ return __v;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittestandset64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandreset64)
+unsigned char _bittestandreset64(__int64 *__a, __int64 __b);
+#if !__has_builtin(_bittestandreset64)
+__INTRINSICS_USEINLINE
+unsigned char _bittestandreset64(__int64 *__a, __int64 __b)
+{
+ unsigned char __v = (*__a >> __b) & 1;
+ *__a &= ~(1ULL << __b);
+ return __v;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittestandreset64
+#endif /* __INTRINSIC_PROLOG */
+
+#if __INTRINSIC_PROLOG(_bittestandcomplement64)
+unsigned char _bittestandcomplement64(__int64 *a, __int64 b);
+#if !__has_builtin(_bittestandcomplement64)
+__INTRINSICS_USEINLINE
+unsigned char _bittestandcomplement64(__int64 *__a, __int64 __b)
+{
+ unsigned char __v = (*__a >> __b) & 1;
+ *__a ^= 1ULL << __b;
+ return __v;
+}
+#endif
+#define __INTRINSIC_DEFINED__bittestandcomplement64
+#endif /* __INTRINSIC_PROLOG */
+
+#endif /* defined(__aarch64__) || define(_ARM64_) */
+
/* ***************************************************** */
#if defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_) || defined(__arm__) || defined(_ARM_) || defined(__aarch64__) || defined(_ARM64_)
@@ -1906,6 +2023,7 @@ void __cpuid(int CPUInfo[4], int InfoType) {
#define __INTRINSIC_DEFINED___cpuid
#endif /* __INTRINSIC_PROLOG */
+#if (!defined(__GNUC__) || __GNUC__ < 11)
#if __INTRINSIC_PROLOG(__cpuidex)
void __cpuidex(int CPUInfo[4], int, int);
#if !__has_builtin(__cpuidex)
@@ -1919,6 +2037,7 @@ void __cpuidex(int CPUInfo[4], int function_id, int subfunction_id) {
#endif
#define __INTRINSIC_DEFINED___cpuidex
#endif /* __INTRINSIC_PROLOG */
+#endif /* __GNUC__ < 11 */
#if __INTRINSIC_PROLOG(__readmsr)
__MINGW_EXTENSION unsigned __int64 __readmsr(unsigned __LONG32);
diff --git a/lib/libc/include/any-windows-any/qedit.h b/lib/libc/include/any-windows-any/qedit.h
index 17cf22f558..7c113a6a8d 100644
--- a/lib/libc/include/any-windows-any/qedit.h
+++ b/lib/libc/include/any-windows-any/qedit.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/qedit.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/qedit.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/qnetwork.h b/lib/libc/include/any-windows-any/qnetwork.h
index 9a59e93bcf..0347335171 100644
--- a/lib/libc/include/any-windows-any/qnetwork.h
+++ b/lib/libc/include/any-windows-any/qnetwork.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/qnetwork.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/qnetwork.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/rdpencomapi.h b/lib/libc/include/any-windows-any/rdpencomapi.h
index 1241fd3dbd..bc0c3ca600 100644
--- a/lib/libc/include/any-windows-any/rdpencomapi.h
+++ b/lib/libc/include/any-windows-any/rdpencomapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/rdpencomapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/rdpencomapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/regbag.h b/lib/libc/include/any-windows-any/regbag.h
index e51b862a49..51cbd27ea4 100644
--- a/lib/libc/include/any-windows-any/regbag.h
+++ b/lib/libc/include/any-windows-any/regbag.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/regbag.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/regbag.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/relogger.h b/lib/libc/include/any-windows-any/relogger.h
index ea671e8a15..5888f0887c 100644
--- a/lib/libc/include/any-windows-any/relogger.h
+++ b/lib/libc/include/any-windows-any/relogger.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/relogger.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/relogger.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/rtworkq.h b/lib/libc/include/any-windows-any/rtworkq.h
index b55a84fcc5..06704ebd94 100644
--- a/lib/libc/include/any-windows-any/rtworkq.h
+++ b/lib/libc/include/any-windows-any/rtworkq.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/rtworkq.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/rtworkq.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/sal.h b/lib/libc/include/any-windows-any/sal.h
index de4938fba5..4848a768c7 100644
--- a/lib/libc/include/any-windows-any/sal.h
+++ b/lib/libc/include/any-windows-any/sal.h
@@ -295,6 +295,10 @@
#define _Deref_out_range_(low, hi)
#define _Deref_inout_range_(low, hi)
#define _Struct_size_bytes_(size)
+#define _Deref_out_
+#define _Deref_out_opt_
+#define _Deref_opt_out_
+#define _Deref_opt_out_opt_
/* Function annotations */
#define _Called_from_function_class_(name)
diff --git a/lib/libc/include/any-windows-any/sapi51.h b/lib/libc/include/any-windows-any/sapi51.h
index 8052ccf5b0..23497a6ab9 100644
--- a/lib/libc/include/any-windows-any/sapi51.h
+++ b/lib/libc/include/any-windows-any/sapi51.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/sapi51.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/sapi51.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/sapi53.h b/lib/libc/include/any-windows-any/sapi53.h
index c4f1bfdf8a..bcbbc75240 100644
--- a/lib/libc/include/any-windows-any/sapi53.h
+++ b/lib/libc/include/any-windows-any/sapi53.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/sapi53.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/sapi53.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/sapi54.h b/lib/libc/include/any-windows-any/sapi54.h
index dfcaa6a4b7..39d8e71f6b 100644
--- a/lib/libc/include/any-windows-any/sapi54.h
+++ b/lib/libc/include/any-windows-any/sapi54.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/sapi54.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/sapi54.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/sdkddkver.h b/lib/libc/include/any-windows-any/sdkddkver.h
index 44b5fb2f15..2c214b2d35 100644
--- a/lib/libc/include/any-windows-any/sdkddkver.h
+++ b/lib/libc/include/any-windows-any/sdkddkver.h
@@ -144,8 +144,9 @@
#define NTDDI_WIN10_VB 0x0A000008
#define NTDDI_WIN10_MN 0x0A000009
#define NTDDI_WIN10_FE 0x0A00000A
+#define NTDDI_WIN10_CO 0x0A00000B
-#define WDK_NTDDI_VERSION NTDDI_WIN10_FE
+#define WDK_NTDDI_VERSION NTDDI_WIN10_CO
/* Version Fields in NTDDI_VERSION */
#define OSVERSION_MASK 0xFFFF0000U
diff --git a/lib/libc/include/any-windows-any/sensorsapi.h b/lib/libc/include/any-windows-any/sensorsapi.h
index c13957aecc..f3fd74a17c 100644
--- a/lib/libc/include/any-windows-any/sensorsapi.h
+++ b/lib/libc/include/any-windows-any/sensorsapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/sensorsapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/sensorsapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/servprov.h b/lib/libc/include/any-windows-any/servprov.h
index 612702918f..79726f4982 100644
--- a/lib/libc/include/any-windows-any/servprov.h
+++ b/lib/libc/include/any-windows-any/servprov.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/servprov.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/servprov.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/setjmp.h b/lib/libc/include/any-windows-any/setjmp.h
index eb772a34b3..3869c0870a 100644
--- a/lib/libc/include/any-windows-any/setjmp.h
+++ b/lib/libc/include/any-windows-any/setjmp.h
@@ -128,7 +128,9 @@ extern "C" {
__MINGW_EXTENSION unsigned __int64 R14;
__MINGW_EXTENSION unsigned __int64 R15;
__MINGW_EXTENSION unsigned __int64 Rip;
- __MINGW_EXTENSION unsigned __int64 Spare;
+ unsigned long MxCsr;
+ unsigned short FpCsr;
+ unsigned short Spare;
SETJMP_FLOAT128 Xmm6;
SETJMP_FLOAT128 Xmm7;
SETJMP_FLOAT128 Xmm8;
@@ -231,7 +233,7 @@ void * __cdecl __attribute__ ((__nothrow__)) mingw_getsp (void);
# elif defined(__SEH__)
# if defined(__aarch64__) || defined(_ARM64_)
# define setjmp(BUF) _setjmp((BUF), __builtin_sponentry())
-# elif (__MINGW_GCC_VERSION < 40702)
+# elif (__MINGW_GCC_VERSION < 40702) && !defined(__clang__)
# define setjmp(BUF) _setjmp((BUF), mingw_getsp())
# else
# define setjmp(BUF) _setjmp((BUF), __builtin_frame_address (0))
@@ -244,7 +246,7 @@ void * __cdecl __attribute__ ((__nothrow__)) mingw_getsp (void);
# else
# undef setjmp
# ifdef __SEH__
-# if (__MINGW_GCC_VERSION < 40702)
+# if (__MINGW_GCC_VERSION < 40702) && !defined(__clang__)
# define setjmp(BUF) _setjmpex((BUF), mingw_getsp())
# define setjmpex(BUF) _setjmpex((BUF), mingw_getsp())
# else
diff --git a/lib/libc/include/any-windows-any/shldisp.h b/lib/libc/include/any-windows-any/shldisp.h
index 0cf8d98451..8b934df91f 100644
--- a/lib/libc/include/any-windows-any/shldisp.h
+++ b/lib/libc/include/any-windows-any/shldisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/shldisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/shldisp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/shobjidl.h b/lib/libc/include/any-windows-any/shobjidl.h
index bd1633aeb9..87b57bcc26 100644
--- a/lib/libc/include/any-windows-any/shobjidl.h
+++ b/lib/libc/include/any-windows-any/shobjidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/shobjidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/shobjidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -1562,6 +1562,14 @@ interface IDesktopGadget;
#endif /* __cplusplus */
#endif
+#ifndef __IVirtualDesktopManager_FWD_DEFINED__
+#define __IVirtualDesktopManager_FWD_DEFINED__
+typedef interface IVirtualDesktopManager IVirtualDesktopManager;
+#ifdef __cplusplus
+interface IVirtualDesktopManager;
+#endif /* __cplusplus */
+#endif
+
#ifndef __IDesktopWallpaper_FWD_DEFINED__
#define __IDesktopWallpaper_FWD_DEFINED__
typedef interface IDesktopWallpaper IDesktopWallpaper;
@@ -2246,6 +2254,15 @@ typedef struct ExecuteFolder ExecuteFolder;
#endif /* defined __cplusplus */
#endif /* defined __ExecuteFolder_FWD_DEFINED__ */
+#ifndef __VirtualDesktopManager_FWD_DEFINED__
+#define __VirtualDesktopManager_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class VirtualDesktopManager VirtualDesktopManager;
+#else
+typedef struct VirtualDesktopManager VirtualDesktopManager;
+#endif /* defined __cplusplus */
+#endif /* defined __VirtualDesktopManager_FWD_DEFINED__ */
+
#ifndef __IAssocHandlerInvoker_FWD_DEFINED__
#define __IAssocHandlerInvoker_FWD_DEFINED__
typedef interface IAssocHandlerInvoker IAssocHandlerInvoker;
@@ -30555,6 +30572,114 @@ static FORCEINLINE HRESULT IDesktopGadget_RunGadget(IDesktopGadget* This,LPCWSTR
#endif /* __IDesktopGadget_INTERFACE_DEFINED__ */
+#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
+/*****************************************************************************
+ * IVirtualDesktopManager interface
+ */
+#ifndef __IVirtualDesktopManager_INTERFACE_DEFINED__
+#define __IVirtualDesktopManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d,0x04, 0xd8,0x28,0x79,0xfb,0x3f,0x1b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a5cd92ff-29be-454c-8d04-d82879fb3f1b")
+IVirtualDesktopManager : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE IsWindowOnCurrentVirtualDesktop(
+ HWND topLevelWindow,
+ WINBOOL *onCurrentDesktop) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWindowDesktopId(
+ HWND topLevelWindow,
+ GUID *desktopId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveWindowToDesktop(
+ HWND topLevelWindow,
+ REFGUID desktopId) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d,0x04, 0xd8,0x28,0x79,0xfb,0x3f,0x1b)
+#endif
+#else
+typedef struct IVirtualDesktopManagerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVirtualDesktopManager *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVirtualDesktopManager *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVirtualDesktopManager *This);
+
+ /*** IVirtualDesktopManager methods ***/
+ HRESULT (STDMETHODCALLTYPE *IsWindowOnCurrentVirtualDesktop)(
+ IVirtualDesktopManager *This,
+ HWND topLevelWindow,
+ WINBOOL *onCurrentDesktop);
+
+ HRESULT (STDMETHODCALLTYPE *GetWindowDesktopId)(
+ IVirtualDesktopManager *This,
+ HWND topLevelWindow,
+ GUID *desktopId);
+
+ HRESULT (STDMETHODCALLTYPE *MoveWindowToDesktop)(
+ IVirtualDesktopManager *This,
+ HWND topLevelWindow,
+ REFGUID desktopId);
+
+ END_INTERFACE
+} IVirtualDesktopManagerVtbl;
+
+interface IVirtualDesktopManager {
+ CONST_VTBL IVirtualDesktopManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVirtualDesktopManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVirtualDesktopManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVirtualDesktopManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IVirtualDesktopManager methods ***/
+#define IVirtualDesktopManager_IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop) (This)->lpVtbl->IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop)
+#define IVirtualDesktopManager_GetWindowDesktopId(This,topLevelWindow,desktopId) (This)->lpVtbl->GetWindowDesktopId(This,topLevelWindow,desktopId)
+#define IVirtualDesktopManager_MoveWindowToDesktop(This,topLevelWindow,desktopId) (This)->lpVtbl->MoveWindowToDesktop(This,topLevelWindow,desktopId)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVirtualDesktopManager_QueryInterface(IVirtualDesktopManager* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVirtualDesktopManager_AddRef(IVirtualDesktopManager* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVirtualDesktopManager_Release(IVirtualDesktopManager* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVirtualDesktopManager methods ***/
+static FORCEINLINE HRESULT IVirtualDesktopManager_IsWindowOnCurrentVirtualDesktop(IVirtualDesktopManager* This,HWND topLevelWindow,WINBOOL *onCurrentDesktop) {
+ return This->lpVtbl->IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop);
+}
+static FORCEINLINE HRESULT IVirtualDesktopManager_GetWindowDesktopId(IVirtualDesktopManager* This,HWND topLevelWindow,GUID *desktopId) {
+ return This->lpVtbl->GetWindowDesktopId(This,topLevelWindow,desktopId);
+}
+static FORCEINLINE HRESULT IVirtualDesktopManager_MoveWindowToDesktop(IVirtualDesktopManager* This,HWND topLevelWindow,REFGUID desktopId) {
+ return This->lpVtbl->MoveWindowToDesktop(This,topLevelWindow,desktopId);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVirtualDesktopManager_INTERFACE_DEFINED__ */
+
+#endif
+
#if NTDDI_VERSION >= NTDDI_WIN8
/*****************************************************************************
* IDesktopWallpaper interface
@@ -32797,6 +32922,19 @@ __CRT_UUID_DECL(ExecuteFolder, 0x11dbb47c, 0xa525, 0x400b, 0x9e,0x80, 0xa5,0x46,
#endif
#endif
+/*****************************************************************************
+ * VirtualDesktopManager coclass
+ */
+
+DEFINE_GUID(CLSID_VirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f,0x95, 0x58,0x9d,0x3c,0x07,0xb4,0x8a);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("aa509086-5ca9-4c25-8f95-589d3c07b48a") VirtualDesktopManager;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(VirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f,0x95, 0x58,0x9d,0x3c,0x07,0xb4,0x8a)
+#endif
+#endif
+
#endif /* __ShellObjects_LIBRARY_DEFINED__ */
#if NTDDI_VERSION >= NTDDI_VISTA
diff --git a/lib/libc/include/any-windows-any/shtypes.h b/lib/libc/include/any-windows-any/shtypes.h
index 1e98d7be15..5a79f283f3 100644
--- a/lib/libc/include/any-windows-any/shtypes.h
+++ b/lib/libc/include/any-windows-any/shtypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/shtypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/shtypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/spatialaudioclient.h b/lib/libc/include/any-windows-any/spatialaudioclient.h
index 1bb13b43bd..55433a39a6 100644
--- a/lib/libc/include/any-windows-any/spatialaudioclient.h
+++ b/lib/libc/include/any-windows-any/spatialaudioclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/spatialaudioclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/spatialaudioclient.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/spellcheck.h b/lib/libc/include/any-windows-any/spellcheck.h
index 31d01b97fa..3fb4ddfaf0 100644
--- a/lib/libc/include/any-windows-any/spellcheck.h
+++ b/lib/libc/include/any-windows-any/spellcheck.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/spellcheck.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/spellcheck.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/stdio.h b/lib/libc/include/any-windows-any/stdio.h
index 0769e1e55c..76fffa177b 100644
--- a/lib/libc/include/any-windows-any/stdio.h
+++ b/lib/libc/include/any-windows-any/stdio.h
@@ -720,6 +720,8 @@ int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_li
int __cdecl setvbuf(FILE * __restrict__ _File,char * __restrict__ _Buf,int _Mode,size_t _Size);
#ifdef _UCRT
__mingw_ovr
+ __MINGW_ATTRIB_PURE
+ __attribute__((__format__ (__MINGW_PRINTF_FORMAT, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
int __cdecl _scprintf(const char * __restrict__ _Format,...)
{
__builtin_va_list __ap;
@@ -730,6 +732,7 @@ int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_li
return __ret;
}
__mingw_ovr __MINGW_ATTRIB_DEPRECATED_SEC_WARN
+ __attribute__((__format__ (__MINGW_SCANF_FORMAT, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
int __cdecl _snscanf(const char * __restrict__ _Src,size_t _MaxCount,const char * __restrict__ _Format,...)
{
__builtin_va_list __ap;
@@ -740,9 +743,15 @@ int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_li
return __ret;
}
#else
+ __MINGW_ATTRIB_PURE
+ __attribute__((__format__ (ms_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
_CRTIMP int __cdecl _scprintf(const char * __restrict__ _Format,...);
+ __attribute__((__format__ (ms_scanf, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
_CRTIMP int __cdecl _snscanf(const char * __restrict__ _Src,size_t _MaxCount,const char * __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
#endif
+ __MINGW_ATTRIB_PURE
+ __attribute__((__format__ (ms_printf, 1, 0))) __MINGW_ATTRIB_NONNULL(1)
+ _CRTIMP int __cdecl _vscprintf(const char * __restrict__ _Format,va_list _ArgList);
FILE *__cdecl tmpfile(void) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
char *__cdecl tmpnam(char *_Buffer);
int __cdecl ungetc(int _Ch,FILE *_File);
@@ -844,6 +853,8 @@ char * tmpnam(char * __dst)
#if __MINGW_FORTIFY_LEVEL > 0
__mingw_bos_ptr_chk_warn(__stream, __n, 1);
#endif
+ if (__builtin_constant_p(__n) && __n == 0)
+ return _vscprintf(__format, __local_argv);
return __ms_vsnprintf (__stream, __n, __format, __local_argv);
}
@@ -858,6 +869,8 @@ __attribute__((__format__ (ms_printf, 3, 4))) __MINGW_ATTRIB_NONNULL(3)
int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict__ __format, ...)
{
__mingw_bos_ptr_chk_warn(__stream, __n, 1);
+ if (__builtin_constant_p(__n) && __n == 0)
+ return _scprintf(__format, __builtin_va_arg_pack());
return __ms_snprintf(__stream, __n, __format, __builtin_va_arg_pack());
}
@@ -869,7 +882,10 @@ int snprintf (char * __restrict__ __stream, size_t __n, const char * __restrict_
{
int __retval;
__builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
- __retval = __ms_vsnprintf (__stream, __n, __format, __local_argv);
+ if (__builtin_constant_p(__n) && __n == 0)
+ __retval = _vscprintf(__format, __local_argv);
+ else
+ __retval = __ms_vsnprintf (__stream, __n, __format, __local_argv);
__builtin_va_end( __local_argv );
return __retval;
}
@@ -921,8 +937,6 @@ int vsprintf (char * __restrict__ __stream, const char * __restrict__ __format,
#endif /* _UCRT */
#endif /* __USE_MINGW_ANSI_STDIO */
- _CRTIMP int __cdecl _vscprintf(const char * __restrict__ _Format,va_list _ArgList);
-
_CRTIMP int __cdecl _set_printf_count_output(int _Value);
_CRTIMP int __cdecl _get_printf_count_output(void);
diff --git a/lib/libc/include/any-windows-any/strmif.h b/lib/libc/include/any-windows-any/strmif.h
index 40a0867620..f90ab258be 100644
--- a/lib/libc/include/any-windows-any/strmif.h
+++ b/lib/libc/include/any-windows-any/strmif.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/strmif.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/strmif.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/structuredquerycondition.h b/lib/libc/include/any-windows-any/structuredquerycondition.h
index c3309b8b0d..bfd9440e25 100644
--- a/lib/libc/include/any-windows-any/structuredquerycondition.h
+++ b/lib/libc/include/any-windows-any/structuredquerycondition.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/structuredquerycondition.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/structuredquerycondition.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/sys/timeb.h b/lib/libc/include/any-windows-any/sys/timeb.h
index 7bfe98e0c2..8f69a46482 100644
--- a/lib/libc/include/any-windows-any/sys/timeb.h
+++ b/lib/libc/include/any-windows-any/sys/timeb.h
@@ -86,6 +86,16 @@ extern "C" {
#define _ftime _ftime32
#endif
+struct _timespec32 {
+ __time32_t tv_sec;
+ long tv_nsec;
+};
+
+struct _timespec64 {
+ __time64_t tv_sec;
+ long tv_nsec;
+};
+
#ifndef _TIMESPEC_DEFINED
#define _TIMESPEC_DEFINED
struct timespec {
diff --git a/lib/libc/include/any-windows-any/taskschd.h b/lib/libc/include/any-windows-any/taskschd.h
index bb06396f75..7037998882 100644
--- a/lib/libc/include/any-windows-any/taskschd.h
+++ b/lib/libc/include/any-windows-any/taskschd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/taskschd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/taskschd.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/textstor.h b/lib/libc/include/any-windows-any/textstor.h
index 86959dffb2..536599b1a8 100644
--- a/lib/libc/include/any-windows-any/textstor.h
+++ b/lib/libc/include/any-windows-any/textstor.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/textstor.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/textstor.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/thumbcache.h b/lib/libc/include/any-windows-any/thumbcache.h
index 9003d93a39..355d30a497 100644
--- a/lib/libc/include/any-windows-any/thumbcache.h
+++ b/lib/libc/include/any-windows-any/thumbcache.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/thumbcache.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/thumbcache.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/time.h b/lib/libc/include/any-windows-any/time.h
index ad4d52d111..b2a1631e2e 100644
--- a/lib/libc/include/any-windows-any/time.h
+++ b/lib/libc/include/any-windows-any/time.h
@@ -21,6 +21,9 @@
#endif /* _SECIMP */
#endif /* defined(_CRTBLD) || defined(__LIBMSVCRT__) */
+/* Adding timespec definition. */
+#include <sys/timeb.h>
+
#pragma pack(push,_CRT_PACKING)
#ifdef __cplusplus
@@ -110,6 +113,10 @@ extern "C" {
#define CLOCKS_PER_SEC 1000
#ifdef _UCRT
+#define TIME_UTC 1
+#endif
+
+#ifdef _UCRT
_CRTIMP int *__cdecl __daylight(void);
_CRTIMP long *__cdecl __dstbias(void);
_CRTIMP long *__cdecl __timezone(void);
@@ -146,6 +153,9 @@ extern "C" {
_CRTIMP char *__cdecl _strtime(char *_Buffer) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
_SECIMP errno_t __cdecl _strtime_s (char *_Buf ,size_t _SizeInBytes);
_CRTIMP __time32_t __cdecl _time32(__time32_t *_Time);
+#ifdef _UCRT
+ _CRTIMP int __cdecl _timespec32_get(struct _timespec32 *_Ts, int _Base);
+#endif
_CRTIMP __time32_t __cdecl _mktime32(struct tm *_Tm);
_CRTIMP __time32_t __cdecl _mkgmtime32(struct tm *_Tm);
@@ -169,6 +179,9 @@ extern "C" {
_CRTIMP __time64_t __cdecl _mktime64(struct tm *_Tm);
_CRTIMP __time64_t __cdecl _mkgmtime64(struct tm *_Tm);
_CRTIMP __time64_t __cdecl _time64(__time64_t *_Time);
+#ifdef _UCRT
+ _CRTIMP int __cdecl _timespec64_get(struct _timespec64 *_Ts, int _Base);
+#endif
unsigned __cdecl _getsystime(struct tm *_Tm);
unsigned __cdecl _setsystime(struct tm *_Tm,unsigned _MilliSec);
@@ -217,6 +230,9 @@ extern "C" {
#ifdef _USE_32BIT_TIME_T
static __inline time_t __CRTDECL time(time_t *_Time) { return _time32(_Time); }
+#ifdef _UCRT
+static __inline int __CRTDECL timespec_get(struct timespec* _Ts, int _Base) { return _timespec32_get((struct _timespec32*)_Ts, _Base); }
+#endif
static __inline double __CRTDECL difftime(time_t _Time1,time_t _Time2) { return _difftime32(_Time1,_Time2); }
static __inline struct tm *__CRTDECL localtime(const time_t *_Time) { return _localtime32(_Time); }
static __inline errno_t __CRTDECL localtime_s(struct tm *_Tm,const time_t *_Time) { return _localtime32_s(_Tm,_Time); }
@@ -228,6 +244,9 @@ static __inline time_t __CRTDECL mktime(struct tm *_Tm) { return _mktime32(_Tm);
static __inline time_t __CRTDECL _mkgmtime(struct tm *_Tm) { return _mkgmtime32(_Tm); }
#else
static __inline time_t __CRTDECL time(time_t *_Time) { return _time64(_Time); }
+#ifdef _UCRT
+static __inline int __CRTDECL timespec_get(struct timespec* _Ts, int _Base) { return _timespec64_get((struct _timespec64*)_Ts, _Base); }
+#endif
static __inline double __CRTDECL difftime(time_t _Time1,time_t _Time2) { return _difftime64(_Time1,_Time2); }
static __inline struct tm *__CRTDECL localtime(const time_t *_Time) { return _localtime64(_Time); }
static __inline errno_t __CRTDECL localtime_s(struct tm *_Tm,const time_t *_Time) { return _localtime64_s(_Tm,_Time); }
@@ -296,9 +315,6 @@ __forceinline char *__CRTDECL asctime_r(const struct tm *_Tm, char * _Str) {
}
#endif
-/* Adding timespec definition. */
-#include <sys/timeb.h>
-
/* POSIX 2008 says clock_gettime and timespec are defined in time.h header,
but other systems - like Linux, Solaris, etc - tend to declare such
recent extensions only if the following guards are met. */
diff --git a/lib/libc/include/any-windows-any/timeapi.h b/lib/libc/include/any-windows-any/timeapi.h
new file mode 100644
index 0000000000..159532ad59
--- /dev/null
+++ b/lib/libc/include/any-windows-any/timeapi.h
@@ -0,0 +1,12 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _INC_TIMEAPI
+#define _INC_TIMEAPI
+
+/* timeBeginPeriod and al are defined in mmsystem.h */
+#include <mmsystem.h>
+
+#endif
diff --git a/lib/libc/include/any-windows-any/tlbref.h b/lib/libc/include/any-windows-any/tlbref.h
index c9b7f44522..414baa2848 100644
--- a/lib/libc/include/any-windows-any/tlbref.h
+++ b/lib/libc/include/any-windows-any/tlbref.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/tlbref.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/tlbref.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/tlogstg.h b/lib/libc/include/any-windows-any/tlogstg.h
index 89f12362ea..e5f34e1c22 100644
--- a/lib/libc/include/any-windows-any/tlogstg.h
+++ b/lib/libc/include/any-windows-any/tlogstg.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/tlogstg.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/tlogstg.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/tpcshrd.h b/lib/libc/include/any-windows-any/tpcshrd.h
index f8ea4612dc..d4d3ce3fc6 100644
--- a/lib/libc/include/any-windows-any/tpcshrd.h
+++ b/lib/libc/include/any-windows-any/tpcshrd.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/tpcshrd.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/tpcshrd.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/tsvirtualchannels.h b/lib/libc/include/any-windows-any/tsvirtualchannels.h
new file mode 100644
index 0000000000..3cd69b8ce1
--- /dev/null
+++ b/lib/libc/include/any-windows-any/tsvirtualchannels.h
@@ -0,0 +1,1060 @@
+/*** Autogenerated by WIDL 7.0 from include/tsvirtualchannels.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __tsvirtualchannels_h__
+#define __tsvirtualchannels_h__
+
+/* Forward declarations */
+
+#ifndef __IWTSPlugin_FWD_DEFINED__
+#define __IWTSPlugin_FWD_DEFINED__
+typedef interface IWTSPlugin IWTSPlugin;
+#ifdef __cplusplus
+interface IWTSPlugin;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSListener_FWD_DEFINED__
+#define __IWTSListener_FWD_DEFINED__
+typedef interface IWTSListener IWTSListener;
+#ifdef __cplusplus
+interface IWTSListener;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSListenerCallback_FWD_DEFINED__
+#define __IWTSListenerCallback_FWD_DEFINED__
+typedef interface IWTSListenerCallback IWTSListenerCallback;
+#ifdef __cplusplus
+interface IWTSListenerCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSVirtualChannelCallback_FWD_DEFINED__
+#define __IWTSVirtualChannelCallback_FWD_DEFINED__
+typedef interface IWTSVirtualChannelCallback IWTSVirtualChannelCallback;
+#ifdef __cplusplus
+interface IWTSVirtualChannelCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSVirtualChannelManager_FWD_DEFINED__
+#define __IWTSVirtualChannelManager_FWD_DEFINED__
+typedef interface IWTSVirtualChannelManager IWTSVirtualChannelManager;
+#ifdef __cplusplus
+interface IWTSVirtualChannelManager;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSVirtualChannel_FWD_DEFINED__
+#define __IWTSVirtualChannel_FWD_DEFINED__
+typedef interface IWTSVirtualChannel IWTSVirtualChannel;
+#ifdef __cplusplus
+interface IWTSVirtualChannel;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSPluginServiceProvider_FWD_DEFINED__
+#define __IWTSPluginServiceProvider_FWD_DEFINED__
+typedef interface IWTSPluginServiceProvider IWTSPluginServiceProvider;
+#ifdef __cplusplus
+interface IWTSPluginServiceProvider;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSBitmapRenderer_FWD_DEFINED__
+#define __IWTSBitmapRenderer_FWD_DEFINED__
+typedef interface IWTSBitmapRenderer IWTSBitmapRenderer;
+#ifdef __cplusplus
+interface IWTSBitmapRenderer;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSBitmapRendererCallback_FWD_DEFINED__
+#define __IWTSBitmapRendererCallback_FWD_DEFINED__
+typedef interface IWTSBitmapRendererCallback IWTSBitmapRendererCallback;
+#ifdef __cplusplus
+interface IWTSBitmapRendererCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSBitmapRenderService_FWD_DEFINED__
+#define __IWTSBitmapRenderService_FWD_DEFINED__
+typedef interface IWTSBitmapRenderService IWTSBitmapRenderService;
+#ifdef __cplusplus
+interface IWTSBitmapRenderService;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <unknwn.h>
+#include <oaidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#ifndef __IWTSPlugin_FWD_DEFINED__
+#define __IWTSPlugin_FWD_DEFINED__
+typedef interface IWTSPlugin IWTSPlugin;
+#ifdef __cplusplus
+interface IWTSPlugin;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSListener_FWD_DEFINED__
+#define __IWTSListener_FWD_DEFINED__
+typedef interface IWTSListener IWTSListener;
+#ifdef __cplusplus
+interface IWTSListener;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSListenerCallback_FWD_DEFINED__
+#define __IWTSListenerCallback_FWD_DEFINED__
+typedef interface IWTSListenerCallback IWTSListenerCallback;
+#ifdef __cplusplus
+interface IWTSListenerCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSVirtualChannelCallback_FWD_DEFINED__
+#define __IWTSVirtualChannelCallback_FWD_DEFINED__
+typedef interface IWTSVirtualChannelCallback IWTSVirtualChannelCallback;
+#ifdef __cplusplus
+interface IWTSVirtualChannelCallback;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSVirtualChannelManager_FWD_DEFINED__
+#define __IWTSVirtualChannelManager_FWD_DEFINED__
+typedef interface IWTSVirtualChannelManager IWTSVirtualChannelManager;
+#ifdef __cplusplus
+interface IWTSVirtualChannelManager;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWTSVirtualChannel_FWD_DEFINED__
+#define __IWTSVirtualChannel_FWD_DEFINED__
+typedef interface IWTSVirtualChannel IWTSVirtualChannel;
+#ifdef __cplusplus
+interface IWTSVirtualChannel;
+#endif /* __cplusplus */
+#endif
+
+#define WTS_PROPERTY_DEFAULT_CONFIG L"DefaultConfig"
+#define E_MAPPEDRENDERER_SHUTDOWN HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
+#define E_DUPLICATE_WINDOW_HINT HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)
+/*****************************************************************************
+ * IWTSPlugin interface
+ */
+#ifndef __IWTSPlugin_INTERFACE_DEFINED__
+#define __IWTSPlugin_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSPlugin, 0xa1230201, 0x1439, 0x4e62, 0xa4,0x14, 0x19,0x0d,0x0a,0xc3,0xd4,0x0e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a1230201-1439-4e62-a414-190d0ac3d40e")
+IWTSPlugin : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Initialize(
+ IWTSVirtualChannelManager *pChannelMgr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Connected(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Disconnected(
+ DWORD dwDisconnectCode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Terminated(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSPlugin, 0xa1230201, 0x1439, 0x4e62, 0xa4,0x14, 0x19,0x0d,0x0a,0xc3,0xd4,0x0e)
+#endif
+#else
+typedef struct IWTSPluginVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSPlugin *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSPlugin *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSPlugin *This);
+
+ /*** IWTSPlugin methods ***/
+ HRESULT (STDMETHODCALLTYPE *Initialize)(
+ IWTSPlugin *This,
+ IWTSVirtualChannelManager *pChannelMgr);
+
+ HRESULT (STDMETHODCALLTYPE *Connected)(
+ IWTSPlugin *This);
+
+ HRESULT (STDMETHODCALLTYPE *Disconnected)(
+ IWTSPlugin *This,
+ DWORD dwDisconnectCode);
+
+ HRESULT (STDMETHODCALLTYPE *Terminated)(
+ IWTSPlugin *This);
+
+ END_INTERFACE
+} IWTSPluginVtbl;
+
+interface IWTSPlugin {
+ CONST_VTBL IWTSPluginVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSPlugin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSPlugin_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSPlugin_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSPlugin methods ***/
+#define IWTSPlugin_Initialize(This,pChannelMgr) (This)->lpVtbl->Initialize(This,pChannelMgr)
+#define IWTSPlugin_Connected(This) (This)->lpVtbl->Connected(This)
+#define IWTSPlugin_Disconnected(This,dwDisconnectCode) (This)->lpVtbl->Disconnected(This,dwDisconnectCode)
+#define IWTSPlugin_Terminated(This) (This)->lpVtbl->Terminated(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSPlugin_QueryInterface(IWTSPlugin* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSPlugin_AddRef(IWTSPlugin* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSPlugin_Release(IWTSPlugin* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSPlugin methods ***/
+static FORCEINLINE HRESULT IWTSPlugin_Initialize(IWTSPlugin* This,IWTSVirtualChannelManager *pChannelMgr) {
+ return This->lpVtbl->Initialize(This,pChannelMgr);
+}
+static FORCEINLINE HRESULT IWTSPlugin_Connected(IWTSPlugin* This) {
+ return This->lpVtbl->Connected(This);
+}
+static FORCEINLINE HRESULT IWTSPlugin_Disconnected(IWTSPlugin* This,DWORD dwDisconnectCode) {
+ return This->lpVtbl->Disconnected(This,dwDisconnectCode);
+}
+static FORCEINLINE HRESULT IWTSPlugin_Terminated(IWTSPlugin* This) {
+ return This->lpVtbl->Terminated(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSPlugin_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWTSListener interface
+ */
+#ifndef __IWTSListener_INTERFACE_DEFINED__
+#define __IWTSListener_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSListener, 0xa1230206, 0x9a39, 0x4d58, 0x86,0x74, 0xcd,0xb4,0xdf,0xf4,0xe7,0x3b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a1230206-9a39-4d58-8674-cdb4dff4e73b")
+IWTSListener : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetConfiguration(
+ IPropertyBag **ppPropertyBag) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSListener, 0xa1230206, 0x9a39, 0x4d58, 0x86,0x74, 0xcd,0xb4,0xdf,0xf4,0xe7,0x3b)
+#endif
+#else
+typedef struct IWTSListenerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSListener *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSListener *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSListener *This);
+
+ /*** IWTSListener methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetConfiguration)(
+ IWTSListener *This,
+ IPropertyBag **ppPropertyBag);
+
+ END_INTERFACE
+} IWTSListenerVtbl;
+
+interface IWTSListener {
+ CONST_VTBL IWTSListenerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSListener_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSListener_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSListener_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSListener methods ***/
+#define IWTSListener_GetConfiguration(This,ppPropertyBag) (This)->lpVtbl->GetConfiguration(This,ppPropertyBag)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSListener_QueryInterface(IWTSListener* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSListener_AddRef(IWTSListener* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSListener_Release(IWTSListener* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSListener methods ***/
+static FORCEINLINE HRESULT IWTSListener_GetConfiguration(IWTSListener* This,IPropertyBag **ppPropertyBag) {
+ return This->lpVtbl->GetConfiguration(This,ppPropertyBag);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSListener_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWTSListenerCallback interface
+ */
+#ifndef __IWTSListenerCallback_INTERFACE_DEFINED__
+#define __IWTSListenerCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSListenerCallback, 0xa1230203, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a1230203-d6a7-11d8-b9fd-000bdbd1f198")
+IWTSListenerCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnNewChannelConnection(
+ IWTSVirtualChannel *pChannel,
+ BSTR data,
+ WINBOOL *pbAccept,
+ IWTSVirtualChannelCallback **ppCallback) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSListenerCallback, 0xa1230203, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98)
+#endif
+#else
+typedef struct IWTSListenerCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSListenerCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSListenerCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSListenerCallback *This);
+
+ /*** IWTSListenerCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnNewChannelConnection)(
+ IWTSListenerCallback *This,
+ IWTSVirtualChannel *pChannel,
+ BSTR data,
+ WINBOOL *pbAccept,
+ IWTSVirtualChannelCallback **ppCallback);
+
+ END_INTERFACE
+} IWTSListenerCallbackVtbl;
+
+interface IWTSListenerCallback {
+ CONST_VTBL IWTSListenerCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSListenerCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSListenerCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSListenerCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSListenerCallback methods ***/
+#define IWTSListenerCallback_OnNewChannelConnection(This,pChannel,data,pbAccept,ppCallback) (This)->lpVtbl->OnNewChannelConnection(This,pChannel,data,pbAccept,ppCallback)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSListenerCallback_QueryInterface(IWTSListenerCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSListenerCallback_AddRef(IWTSListenerCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSListenerCallback_Release(IWTSListenerCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSListenerCallback methods ***/
+static FORCEINLINE HRESULT IWTSListenerCallback_OnNewChannelConnection(IWTSListenerCallback* This,IWTSVirtualChannel *pChannel,BSTR data,WINBOOL *pbAccept,IWTSVirtualChannelCallback **ppCallback) {
+ return This->lpVtbl->OnNewChannelConnection(This,pChannel,data,pbAccept,ppCallback);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSListenerCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWTSVirtualChannelCallback interface
+ */
+#ifndef __IWTSVirtualChannelCallback_INTERFACE_DEFINED__
+#define __IWTSVirtualChannelCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSVirtualChannelCallback, 0xa1230204, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a1230204-d6a7-11d8-b9fd-000bdbd1f198")
+IWTSVirtualChannelCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnDataReceived(
+ ULONG cbSize,
+ BYTE *pBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnClose(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSVirtualChannelCallback, 0xa1230204, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98)
+#endif
+#else
+typedef struct IWTSVirtualChannelCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSVirtualChannelCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSVirtualChannelCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSVirtualChannelCallback *This);
+
+ /*** IWTSVirtualChannelCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnDataReceived)(
+ IWTSVirtualChannelCallback *This,
+ ULONG cbSize,
+ BYTE *pBuffer);
+
+ HRESULT (STDMETHODCALLTYPE *OnClose)(
+ IWTSVirtualChannelCallback *This);
+
+ END_INTERFACE
+} IWTSVirtualChannelCallbackVtbl;
+
+interface IWTSVirtualChannelCallback {
+ CONST_VTBL IWTSVirtualChannelCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSVirtualChannelCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSVirtualChannelCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSVirtualChannelCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSVirtualChannelCallback methods ***/
+#define IWTSVirtualChannelCallback_OnDataReceived(This,cbSize,pBuffer) (This)->lpVtbl->OnDataReceived(This,cbSize,pBuffer)
+#define IWTSVirtualChannelCallback_OnClose(This) (This)->lpVtbl->OnClose(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSVirtualChannelCallback_QueryInterface(IWTSVirtualChannelCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSVirtualChannelCallback_AddRef(IWTSVirtualChannelCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSVirtualChannelCallback_Release(IWTSVirtualChannelCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSVirtualChannelCallback methods ***/
+static FORCEINLINE HRESULT IWTSVirtualChannelCallback_OnDataReceived(IWTSVirtualChannelCallback* This,ULONG cbSize,BYTE *pBuffer) {
+ return This->lpVtbl->OnDataReceived(This,cbSize,pBuffer);
+}
+static FORCEINLINE HRESULT IWTSVirtualChannelCallback_OnClose(IWTSVirtualChannelCallback* This) {
+ return This->lpVtbl->OnClose(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSVirtualChannelCallback_INTERFACE_DEFINED__ */
+
+#define TS_VC_LISTENER_STATIC_CHANNEL 0x00000001
+/*****************************************************************************
+ * IWTSVirtualChannelManager interface
+ */
+#ifndef __IWTSVirtualChannelManager_INTERFACE_DEFINED__
+#define __IWTSVirtualChannelManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSVirtualChannelManager, 0xa1230205, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a1230205-d6a7-11d8-b9fd-000bdbd1f198")
+IWTSVirtualChannelManager : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE CreateListener(
+ const char *pszChannelName,
+ ULONG uFlags,
+ IWTSListenerCallback *pListenerCallback,
+ IWTSListener **ppListener) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSVirtualChannelManager, 0xa1230205, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98)
+#endif
+#else
+typedef struct IWTSVirtualChannelManagerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSVirtualChannelManager *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSVirtualChannelManager *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSVirtualChannelManager *This);
+
+ /*** IWTSVirtualChannelManager methods ***/
+ HRESULT (STDMETHODCALLTYPE *CreateListener)(
+ IWTSVirtualChannelManager *This,
+ const char *pszChannelName,
+ ULONG uFlags,
+ IWTSListenerCallback *pListenerCallback,
+ IWTSListener **ppListener);
+
+ END_INTERFACE
+} IWTSVirtualChannelManagerVtbl;
+
+interface IWTSVirtualChannelManager {
+ CONST_VTBL IWTSVirtualChannelManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSVirtualChannelManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSVirtualChannelManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSVirtualChannelManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSVirtualChannelManager methods ***/
+#define IWTSVirtualChannelManager_CreateListener(This,pszChannelName,uFlags,pListenerCallback,ppListener) (This)->lpVtbl->CreateListener(This,pszChannelName,uFlags,pListenerCallback,ppListener)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSVirtualChannelManager_QueryInterface(IWTSVirtualChannelManager* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSVirtualChannelManager_AddRef(IWTSVirtualChannelManager* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSVirtualChannelManager_Release(IWTSVirtualChannelManager* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSVirtualChannelManager methods ***/
+static FORCEINLINE HRESULT IWTSVirtualChannelManager_CreateListener(IWTSVirtualChannelManager* This,const char *pszChannelName,ULONG uFlags,IWTSListenerCallback *pListenerCallback,IWTSListener **ppListener) {
+ return This->lpVtbl->CreateListener(This,pszChannelName,uFlags,pListenerCallback,ppListener);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSVirtualChannelManager_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWTSVirtualChannel interface
+ */
+#ifndef __IWTSVirtualChannel_INTERFACE_DEFINED__
+#define __IWTSVirtualChannel_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSVirtualChannel, 0xa1230207, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a1230207-d6a7-11d8-b9fd-000bdbd1f198")
+IWTSVirtualChannel : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Write(
+ ULONG cbSize,
+ BYTE *pBuffer,
+ IUnknown *pReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSVirtualChannel, 0xa1230207, 0xd6a7, 0x11d8, 0xb9,0xfd, 0x00,0x0b,0xdb,0xd1,0xf1,0x98)
+#endif
+#else
+typedef struct IWTSVirtualChannelVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSVirtualChannel *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSVirtualChannel *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSVirtualChannel *This);
+
+ /*** IWTSVirtualChannel methods ***/
+ HRESULT (STDMETHODCALLTYPE *Write)(
+ IWTSVirtualChannel *This,
+ ULONG cbSize,
+ BYTE *pBuffer,
+ IUnknown *pReserved);
+
+ HRESULT (STDMETHODCALLTYPE *Close)(
+ IWTSVirtualChannel *This);
+
+ END_INTERFACE
+} IWTSVirtualChannelVtbl;
+
+interface IWTSVirtualChannel {
+ CONST_VTBL IWTSVirtualChannelVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSVirtualChannel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSVirtualChannel_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSVirtualChannel_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSVirtualChannel methods ***/
+#define IWTSVirtualChannel_Write(This,cbSize,pBuffer,pReserved) (This)->lpVtbl->Write(This,cbSize,pBuffer,pReserved)
+#define IWTSVirtualChannel_Close(This) (This)->lpVtbl->Close(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSVirtualChannel_QueryInterface(IWTSVirtualChannel* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSVirtualChannel_AddRef(IWTSVirtualChannel* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSVirtualChannel_Release(IWTSVirtualChannel* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSVirtualChannel methods ***/
+static FORCEINLINE HRESULT IWTSVirtualChannel_Write(IWTSVirtualChannel* This,ULONG cbSize,BYTE *pBuffer,IUnknown *pReserved) {
+ return This->lpVtbl->Write(This,cbSize,pBuffer,pReserved);
+}
+static FORCEINLINE HRESULT IWTSVirtualChannel_Close(IWTSVirtualChannel* This) {
+ return This->lpVtbl->Close(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSVirtualChannel_INTERFACE_DEFINED__ */
+
+EXTERN_GUID( RDCLIENT_BITMAP_RENDER_SERVICE, 0xe4cc08cb, 0x942e, 0x4b19, 0x85, 0x4, 0xbd, 0x5a, 0x89, 0xa7, 0x47, 0xf5);
+/*****************************************************************************
+ * IWTSPluginServiceProvider interface
+ */
+#ifndef __IWTSPluginServiceProvider_INTERFACE_DEFINED__
+#define __IWTSPluginServiceProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSPluginServiceProvider, 0xd3e07363, 0x087c, 0x476c, 0x86,0xa7, 0xdb,0xb1,0x5f,0x46,0xdd,0xb4);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d3e07363-087c-476c-86a7-dbb15f46ddb4")
+IWTSPluginServiceProvider : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetService(
+ GUID ServiceId,
+ IUnknown **ppunkObject) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSPluginServiceProvider, 0xd3e07363, 0x087c, 0x476c, 0x86,0xa7, 0xdb,0xb1,0x5f,0x46,0xdd,0xb4)
+#endif
+#else
+typedef struct IWTSPluginServiceProviderVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSPluginServiceProvider *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSPluginServiceProvider *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSPluginServiceProvider *This);
+
+ /*** IWTSPluginServiceProvider methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetService)(
+ IWTSPluginServiceProvider *This,
+ GUID ServiceId,
+ IUnknown **ppunkObject);
+
+ END_INTERFACE
+} IWTSPluginServiceProviderVtbl;
+
+interface IWTSPluginServiceProvider {
+ CONST_VTBL IWTSPluginServiceProviderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSPluginServiceProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSPluginServiceProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSPluginServiceProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSPluginServiceProvider methods ***/
+#define IWTSPluginServiceProvider_GetService(This,ServiceId,ppunkObject) (This)->lpVtbl->GetService(This,ServiceId,ppunkObject)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSPluginServiceProvider_QueryInterface(IWTSPluginServiceProvider* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSPluginServiceProvider_AddRef(IWTSPluginServiceProvider* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSPluginServiceProvider_Release(IWTSPluginServiceProvider* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSPluginServiceProvider methods ***/
+static FORCEINLINE HRESULT IWTSPluginServiceProvider_GetService(IWTSPluginServiceProvider* This,GUID ServiceId,IUnknown **ppunkObject) {
+ return This->lpVtbl->GetService(This,ServiceId,ppunkObject);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSPluginServiceProvider_INTERFACE_DEFINED__ */
+
+typedef struct __BITMAP_RENDERER_STATISTICS {
+ DWORD dwFramesDelivered;
+ DWORD dwFramesDropped;
+} BITMAP_RENDERER_STATISTICS;
+typedef struct __BITMAP_RENDERER_STATISTICS *PBITMAP_RENDERER_STATISTICS;
+/*****************************************************************************
+ * IWTSBitmapRenderer interface
+ */
+#ifndef __IWTSBitmapRenderer_INTERFACE_DEFINED__
+#define __IWTSBitmapRenderer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSBitmapRenderer, 0x5b7acc97, 0xf3c9, 0x46f7, 0x8c,0x5b, 0xfa,0x68,0x5d,0x34,0x41,0xb1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5b7acc97-f3c9-46f7-8c5b-fa685d3441b1")
+IWTSBitmapRenderer : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Render(
+ GUID imageFormat,
+ DWORD dwWidth,
+ DWORD dwHeight,
+ LONG cbStride,
+ DWORD cbImageBuffer,
+ BYTE *pImageBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRendererStatistics(
+ BITMAP_RENDERER_STATISTICS *pStatistics) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveMapping(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSBitmapRenderer, 0x5b7acc97, 0xf3c9, 0x46f7, 0x8c,0x5b, 0xfa,0x68,0x5d,0x34,0x41,0xb1)
+#endif
+#else
+typedef struct IWTSBitmapRendererVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSBitmapRenderer *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSBitmapRenderer *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSBitmapRenderer *This);
+
+ /*** IWTSBitmapRenderer methods ***/
+ HRESULT (STDMETHODCALLTYPE *Render)(
+ IWTSBitmapRenderer *This,
+ GUID imageFormat,
+ DWORD dwWidth,
+ DWORD dwHeight,
+ LONG cbStride,
+ DWORD cbImageBuffer,
+ BYTE *pImageBuffer);
+
+ HRESULT (STDMETHODCALLTYPE *GetRendererStatistics)(
+ IWTSBitmapRenderer *This,
+ BITMAP_RENDERER_STATISTICS *pStatistics);
+
+ HRESULT (STDMETHODCALLTYPE *RemoveMapping)(
+ IWTSBitmapRenderer *This);
+
+ END_INTERFACE
+} IWTSBitmapRendererVtbl;
+
+interface IWTSBitmapRenderer {
+ CONST_VTBL IWTSBitmapRendererVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSBitmapRenderer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSBitmapRenderer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSBitmapRenderer_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSBitmapRenderer methods ***/
+#define IWTSBitmapRenderer_Render(This,imageFormat,dwWidth,dwHeight,cbStride,cbImageBuffer,pImageBuffer) (This)->lpVtbl->Render(This,imageFormat,dwWidth,dwHeight,cbStride,cbImageBuffer,pImageBuffer)
+#define IWTSBitmapRenderer_GetRendererStatistics(This,pStatistics) (This)->lpVtbl->GetRendererStatistics(This,pStatistics)
+#define IWTSBitmapRenderer_RemoveMapping(This) (This)->lpVtbl->RemoveMapping(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSBitmapRenderer_QueryInterface(IWTSBitmapRenderer* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSBitmapRenderer_AddRef(IWTSBitmapRenderer* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSBitmapRenderer_Release(IWTSBitmapRenderer* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSBitmapRenderer methods ***/
+static FORCEINLINE HRESULT IWTSBitmapRenderer_Render(IWTSBitmapRenderer* This,GUID imageFormat,DWORD dwWidth,DWORD dwHeight,LONG cbStride,DWORD cbImageBuffer,BYTE *pImageBuffer) {
+ return This->lpVtbl->Render(This,imageFormat,dwWidth,dwHeight,cbStride,cbImageBuffer,pImageBuffer);
+}
+static FORCEINLINE HRESULT IWTSBitmapRenderer_GetRendererStatistics(IWTSBitmapRenderer* This,BITMAP_RENDERER_STATISTICS *pStatistics) {
+ return This->lpVtbl->GetRendererStatistics(This,pStatistics);
+}
+static FORCEINLINE HRESULT IWTSBitmapRenderer_RemoveMapping(IWTSBitmapRenderer* This) {
+ return This->lpVtbl->RemoveMapping(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSBitmapRenderer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWTSBitmapRendererCallback interface
+ */
+#ifndef __IWTSBitmapRendererCallback_INTERFACE_DEFINED__
+#define __IWTSBitmapRendererCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSBitmapRendererCallback, 0xd782928e, 0xfe4e, 0x4e77, 0xae,0x90, 0x9c,0xd0,0xb3,0xe3,0xb3,0x53);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d782928e-fe4e-4e77-ae90-9cd0b3e3b353")
+IWTSBitmapRendererCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnTargetSizeChanged(
+ RECT rcNewSize) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSBitmapRendererCallback, 0xd782928e, 0xfe4e, 0x4e77, 0xae,0x90, 0x9c,0xd0,0xb3,0xe3,0xb3,0x53)
+#endif
+#else
+typedef struct IWTSBitmapRendererCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSBitmapRendererCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSBitmapRendererCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSBitmapRendererCallback *This);
+
+ /*** IWTSBitmapRendererCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnTargetSizeChanged)(
+ IWTSBitmapRendererCallback *This,
+ RECT rcNewSize);
+
+ END_INTERFACE
+} IWTSBitmapRendererCallbackVtbl;
+
+interface IWTSBitmapRendererCallback {
+ CONST_VTBL IWTSBitmapRendererCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSBitmapRendererCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSBitmapRendererCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSBitmapRendererCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSBitmapRendererCallback methods ***/
+#define IWTSBitmapRendererCallback_OnTargetSizeChanged(This,rcNewSize) (This)->lpVtbl->OnTargetSizeChanged(This,rcNewSize)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSBitmapRendererCallback_QueryInterface(IWTSBitmapRendererCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSBitmapRendererCallback_AddRef(IWTSBitmapRendererCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSBitmapRendererCallback_Release(IWTSBitmapRendererCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSBitmapRendererCallback methods ***/
+static FORCEINLINE HRESULT IWTSBitmapRendererCallback_OnTargetSizeChanged(IWTSBitmapRendererCallback* This,RECT rcNewSize) {
+ return This->lpVtbl->OnTargetSizeChanged(This,rcNewSize);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSBitmapRendererCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWTSBitmapRenderService interface
+ */
+#ifndef __IWTSBitmapRenderService_INTERFACE_DEFINED__
+#define __IWTSBitmapRenderService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWTSBitmapRenderService, 0xea326091, 0x05fe, 0x40c1, 0xb4,0x9c, 0x3d,0x2e,0xf4,0x62,0x6a,0x0e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ea326091-05fe-40c1-b49c-3d2ef4626a0e")
+IWTSBitmapRenderService : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetMappedRenderer(
+ UINT64 mappingId,
+ IWTSBitmapRendererCallback *pMappedRendererCallback,
+ IWTSBitmapRenderer **ppMappedRenderer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWTSBitmapRenderService, 0xea326091, 0x05fe, 0x40c1, 0xb4,0x9c, 0x3d,0x2e,0xf4,0x62,0x6a,0x0e)
+#endif
+#else
+typedef struct IWTSBitmapRenderServiceVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWTSBitmapRenderService *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWTSBitmapRenderService *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWTSBitmapRenderService *This);
+
+ /*** IWTSBitmapRenderService methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetMappedRenderer)(
+ IWTSBitmapRenderService *This,
+ UINT64 mappingId,
+ IWTSBitmapRendererCallback *pMappedRendererCallback,
+ IWTSBitmapRenderer **ppMappedRenderer);
+
+ END_INTERFACE
+} IWTSBitmapRenderServiceVtbl;
+
+interface IWTSBitmapRenderService {
+ CONST_VTBL IWTSBitmapRenderServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWTSBitmapRenderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWTSBitmapRenderService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWTSBitmapRenderService_Release(This) (This)->lpVtbl->Release(This)
+/*** IWTSBitmapRenderService methods ***/
+#define IWTSBitmapRenderService_GetMappedRenderer(This,mappingId,pMappedRendererCallback,ppMappedRenderer) (This)->lpVtbl->GetMappedRenderer(This,mappingId,pMappedRendererCallback,ppMappedRenderer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWTSBitmapRenderService_QueryInterface(IWTSBitmapRenderService* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWTSBitmapRenderService_AddRef(IWTSBitmapRenderService* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWTSBitmapRenderService_Release(IWTSBitmapRenderService* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWTSBitmapRenderService methods ***/
+static FORCEINLINE HRESULT IWTSBitmapRenderService_GetMappedRenderer(IWTSBitmapRenderService* This,UINT64 mappingId,IWTSBitmapRendererCallback *pMappedRendererCallback,IWTSBitmapRenderer **ppMappedRenderer) {
+ return This->lpVtbl->GetMappedRenderer(This,mappingId,pMappedRendererCallback,ppMappedRenderer);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWTSBitmapRenderService_INTERFACE_DEFINED__ */
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void __RPC_USER BSTR_UserFree (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __tsvirtualchannels_h__ */
diff --git a/lib/libc/include/any-windows-any/tuner.h b/lib/libc/include/any-windows-any/tuner.h
index f7a5e077fe..c9eb04b8fd 100644
--- a/lib/libc/include/any-windows-any/tuner.h
+++ b/lib/libc/include/any-windows-any/tuner.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/tuner.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/tuner.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/uianimation.h b/lib/libc/include/any-windows-any/uianimation.h
index 044376b308..9ce8afacee 100644
--- a/lib/libc/include/any-windows-any/uianimation.h
+++ b/lib/libc/include/any-windows-any/uianimation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/uianimation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/uianimation.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/uiautomationclient.h b/lib/libc/include/any-windows-any/uiautomationclient.h
index 26356eb60b..15fd9c3fec 100644
--- a/lib/libc/include/any-windows-any/uiautomationclient.h
+++ b/lib/libc/include/any-windows-any/uiautomationclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/uiautomationclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/uiautomationclient.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -31,6 +31,74 @@ extern "C" {
DEFINE_GUID(LIBID_UIAutomationClient, 0x944de083, 0x8fb8, 0x45cf, 0xbc,0xb7, 0xc4,0x77,0xac,0xb2,0xf8,0x97);
+#define UIA_InvokePatternId (10000)
+
+#define UIA_SelectionPatternId (10001)
+
+#define UIA_ValuePatternId (10002)
+
+#define UIA_RangeValuePatternId (10003)
+
+#define UIA_ScrollPatternId (10004)
+
+#define UIA_ExpandCollapsePatternId (10005)
+
+#define UIA_GridPatternId (10006)
+
+#define UIA_GridItemPatternId (10007)
+
+#define UIA_MultipleViewPatternId (10008)
+
+#define UIA_WindowPatternId (10009)
+
+#define UIA_SelectionItemPatternId (10010)
+
+#define UIA_DockPatternId (10011)
+
+#define UIA_TablePatternId (10012)
+
+#define UIA_TableItemPatternId (10013)
+
+#define UIA_TextPatternId (10014)
+
+#define UIA_TogglePatternId (10015)
+
+#define UIA_TransformPatternId (10016)
+
+#define UIA_ScrollItemPatternId (10017)
+
+#define UIA_LegacyIAccessiblePatternId (10018)
+
+#define UIA_ItemContainerPatternId (10019)
+
+#define UIA_VirtualizedItemPatternId (10020)
+
+#define UIA_SynchronizedInputPatternId (10021)
+
+#define UIA_ObjectModelPatternId (10022)
+
+#define UIA_AnnotationPatternId (10023)
+
+#define UIA_TextPattern2Id (10024)
+
+#define UIA_StylesPatternId (10025)
+
+#define UIA_SpreadsheetPatternId (10026)
+
+#define UIA_SpreadsheetItemPatternId (10027)
+
+#define UIA_TransformPattern2Id (10028)
+
+#define UIA_TextChildPatternId (10029)
+
+#define UIA_DragPatternId (10030)
+
+#define UIA_DropTargetPatternId (10031)
+
+#define UIA_TextEditPatternId (10032)
+
+#define UIA_CustomNavigationPatternId (10033)
+
#define UIA_RuntimeIdPropertyId (30000)
#define UIA_BoundingRectanglePropertyId (30001)
@@ -253,6 +321,134 @@ DEFINE_GUID(LIBID_UIAutomationClient, 0x944de083, 0x8fb8, 0x45cf, 0xbc,0xb7, 0xc
#define UIA_IsSynchronizedInputPatternAvailablePropertyId (30110)
+#define UIA_OptimizeForVisualContentPropertyId (30111)
+
+#define UIA_IsObjectModelPatternAvailablePropertyId (30112)
+
+#define UIA_AnnotationAnnotationTypeIdPropertyId (30113)
+
+#define UIA_AnnotationAnnotationTypeNamePropertyId (30114)
+
+#define UIA_AnnotationAuthorPropertyId (30115)
+
+#define UIA_AnnotationDateTimePropertyId (30116)
+
+#define UIA_AnnotationTargetPropertyId (30117)
+
+#define UIA_IsAnnotationPatternAvailablePropertyId (30118)
+
+#define UIA_IsTextPattern2AvailablePropertyId (30119)
+
+#define UIA_StylesStyleIdPropertyId (30120)
+
+#define UIA_StylesStyleNamePropertyId (30121)
+
+#define UIA_StylesFillColorPropertyId (30122)
+
+#define UIA_StylesFillPatternStylePropertyId (30123)
+
+#define UIA_StylesShapePropertyId (30124)
+
+#define UIA_StylesFillPatternColorPropertyId (30125)
+
+#define UIA_StylesExtendedPropertiesPropertyId (30126)
+
+#define UIA_IsStylesPatternAvailablePropertyId (30127)
+
+#define UIA_IsSpreadsheetPatternAvailablePropertyId (30128)
+
+#define UIA_SpreadsheetItemFormulaPropertyId (30129)
+
+#define UIA_SpreadsheetItemAnnotationObjectsPropertyId (30130)
+
+#define UIA_SpreadsheetItemAnnotationTypesPropertyId (30131)
+
+#define UIA_IsSpreadsheetItemPatternAvailablePropertyId (30132)
+
+#define UIA_Transform2CanZoomPropertyId (30133)
+
+#define UIA_IsTransformPattern2AvailablePropertyId (30134)
+
+#define UIA_LiveSettingPropertyId (30135)
+
+#define UIA_IsTextChildPatternAvailablePropertyId (30136)
+
+#define UIA_IsDragPatternAvailablePropertyId (30137)
+
+#define UIA_DragIsGrabbedPropertyId (30138)
+
+#define UIA_DragDropEffectPropertyId (30139)
+
+#define UIA_DragDropEffectsPropertyId (30140)
+
+#define UIA_IsDropTargetPatternAvailablePropertyId (30141)
+
+#define UIA_DropTargetDropTargetEffectPropertyId (30142)
+
+#define UIA_DropTargetDropTargetEffectsPropertyId (30143)
+
+#define UIA_DragGrabbedItemsPropertyId (30144)
+
+#define UIA_Transform2ZoomLevelPropertyId (30145)
+
+#define UIA_Transform2ZoomMinimumPropertyId (30146)
+
+#define UIA_Transform2ZoomMaximumPropertyId (30147)
+
+#define UIA_FlowsFromPropertyId (30148)
+
+#define UIA_IsTextEditPatternAvailablePropertyId (30149)
+
+#define UIA_IsPeripheralPropertyId (30150)
+
+#define UIA_IsCustomNavigationPatternAvailablePropertyId (30151)
+
+#define UIA_PositionInSetPropertyId (30152)
+
+#define UIA_SizeOfSetPropertyId (30153)
+
+#define UIA_LevelPropertyId (30154)
+
+#define UIA_AnnotationTypesPropertyId (30155)
+
+#define UIA_AnnotationObjectsPropertyId (30156)
+
+#define UIA_LandmarkTypePropertyId (30157)
+
+#define UIA_LocalizedLandmarkTypePropertyId (30158)
+
+#define UIA_FullDescriptionPropertyId (30159)
+
+#define UIA_FillColorPropertyId (30160)
+
+#define UIA_OutlineColorPropertyId (30161)
+
+#define UIA_FillTypePropertyId (30162)
+
+#define UIA_VisualEffectsPropertyId (30163)
+
+#define UIA_OutlineThicknessPropertyId (30164)
+
+#define UIA_CenterPointPropertyId (30165)
+
+#define UIA_RotationPropertyId (30166)
+
+#define UIA_SizePropertyId (30167)
+
+#define UIA_IsSelectionPattern2AvailablePropertyId (30168)
+
+#define UIA_Selection2FirstSelectedItemPropertyId (30169)
+
+#define UIA_Selection2LastSelectedItemPropertyId (30170)
+
+#define UIA_Selection2CurrentSelectedItemPropertyId (30171)
+
+#define UIA_Selection2ItemCountPropertyId (30172)
+
+#define UIA_HeadingLevelPropertyId (30173)
+
+#define UIA_IsDialogPropertyId (30174)
+
#endif /* __UIAutomationClient_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */
diff --git a/lib/libc/include/any-windows-any/uiautomationcore.h b/lib/libc/include/any-windows-any/uiautomationcore.h
index c06ca9c56f..6667fb7b20 100644
--- a/lib/libc/include/any-windows-any/uiautomationcore.h
+++ b/lib/libc/include/any-windows-any/uiautomationcore.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/uiautomationcore.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/uiautomationcore.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -34,6 +34,22 @@ interface IAccessibleEx;
#endif /* __cplusplus */
#endif
+#ifndef __IRawElementProviderFragment_FWD_DEFINED__
+#define __IRawElementProviderFragment_FWD_DEFINED__
+typedef interface IRawElementProviderFragment IRawElementProviderFragment;
+#ifdef __cplusplus
+interface IRawElementProviderFragment;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IRawElementProviderFragmentRoot_FWD_DEFINED__
+#define __IRawElementProviderFragmentRoot_FWD_DEFINED__
+typedef interface IRawElementProviderFragmentRoot IRawElementProviderFragmentRoot;
+#ifdef __cplusplus
+interface IRawElementProviderFragmentRoot;
+#endif /* __cplusplus */
+#endif
+
/* Headers for imported files */
#include <oaidl.h>
@@ -43,19 +59,35 @@ interface IAccessibleEx;
extern "C" {
#endif
+enum NavigateDirection {
+ NavigateDirection_Parent = 0x0,
+ NavigateDirection_NextSibling = 0x1,
+ NavigateDirection_PreviousSibling = 0x2,
+ NavigateDirection_FirstChild = 0x3,
+ NavigateDirection_LastChild = 0x4
+};
enum ProviderOptions {
ProviderOptions_ClientSideProvider = 0x1,
ProviderOptions_ServerSideProvider = 0x2,
ProviderOptions_NonClientAreaProvider = 0x4,
ProviderOptions_OverrideProvider = 0x8,
ProviderOptions_ProviderOwnsSetFocus = 0x10,
- ProviderOptions_UseComThreading = 0x20
+ ProviderOptions_UseComThreading = 0x20,
+ ProviderOptions_RefuseNonClientSupport = 0x40,
+ ProviderOptions_HasNativeIAccessible = 0x80,
+ ProviderOptions_UseClientCoordinates = 0x100
};
typedef int PROPERTYID;
typedef int PATTERNID;
typedef int EVENTID;
typedef int TEXTATTRIBUTEID;
typedef int CONTROLTYPEID;
+struct UiaRect {
+ double left;
+ double top;
+ double width;
+ double height;
+};
#ifndef __UIA_LIBRARY_DEFINED__
#define __UIA_LIBRARY_DEFINED__
@@ -291,6 +323,239 @@ static FORCEINLINE HRESULT IAccessibleEx_ConvertReturnedElement(IAccessibleEx* T
#endif /* __IAccessibleEx_INTERFACE_DEFINED__ */
+#ifndef __IRawElementProviderFragmentRoot_FWD_DEFINED__
+#define __IRawElementProviderFragmentRoot_FWD_DEFINED__
+typedef interface IRawElementProviderFragmentRoot IRawElementProviderFragmentRoot;
+#ifdef __cplusplus
+interface IRawElementProviderFragmentRoot;
+#endif /* __cplusplus */
+#endif
+
+/*****************************************************************************
+ * IRawElementProviderFragment interface
+ */
+#ifndef __IRawElementProviderFragment_INTERFACE_DEFINED__
+#define __IRawElementProviderFragment_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92,0x97, 0xbb,0xc5,0x29,0x9a,0x7d,0x87);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f7063da8-8359-439c-9297-bbc5299a7d87")
+IRawElementProviderFragment : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Navigate(
+ enum NavigateDirection direction,
+ IRawElementProviderFragment **pRetVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRuntimeId(
+ SAFEARRAY **pRetVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_BoundingRectangle(
+ struct UiaRect *pRetVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetEmbeddedFragmentRoots(
+ SAFEARRAY **pRetVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFocus(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_FragmentRoot(
+ IRawElementProviderFragmentRoot **pRetVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92,0x97, 0xbb,0xc5,0x29,0x9a,0x7d,0x87)
+#endif
+#else
+typedef struct IRawElementProviderFragmentVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IRawElementProviderFragment *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IRawElementProviderFragment *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IRawElementProviderFragment *This);
+
+ /*** IRawElementProviderFragment methods ***/
+ HRESULT (STDMETHODCALLTYPE *Navigate)(
+ IRawElementProviderFragment *This,
+ enum NavigateDirection direction,
+ IRawElementProviderFragment **pRetVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
+ IRawElementProviderFragment *This,
+ SAFEARRAY **pRetVal);
+
+ HRESULT (STDMETHODCALLTYPE *get_BoundingRectangle)(
+ IRawElementProviderFragment *This,
+ struct UiaRect *pRetVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetEmbeddedFragmentRoots)(
+ IRawElementProviderFragment *This,
+ SAFEARRAY **pRetVal);
+
+ HRESULT (STDMETHODCALLTYPE *SetFocus)(
+ IRawElementProviderFragment *This);
+
+ HRESULT (STDMETHODCALLTYPE *get_FragmentRoot)(
+ IRawElementProviderFragment *This,
+ IRawElementProviderFragmentRoot **pRetVal);
+
+ END_INTERFACE
+} IRawElementProviderFragmentVtbl;
+
+interface IRawElementProviderFragment {
+ CONST_VTBL IRawElementProviderFragmentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IRawElementProviderFragment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRawElementProviderFragment_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRawElementProviderFragment_Release(This) (This)->lpVtbl->Release(This)
+/*** IRawElementProviderFragment methods ***/
+#define IRawElementProviderFragment_Navigate(This,direction,pRetVal) (This)->lpVtbl->Navigate(This,direction,pRetVal)
+#define IRawElementProviderFragment_GetRuntimeId(This,pRetVal) (This)->lpVtbl->GetRuntimeId(This,pRetVal)
+#define IRawElementProviderFragment_get_BoundingRectangle(This,pRetVal) (This)->lpVtbl->get_BoundingRectangle(This,pRetVal)
+#define IRawElementProviderFragment_GetEmbeddedFragmentRoots(This,pRetVal) (This)->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal)
+#define IRawElementProviderFragment_SetFocus(This) (This)->lpVtbl->SetFocus(This)
+#define IRawElementProviderFragment_get_FragmentRoot(This,pRetVal) (This)->lpVtbl->get_FragmentRoot(This,pRetVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragment_QueryInterface(IRawElementProviderFragment* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IRawElementProviderFragment_AddRef(IRawElementProviderFragment* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IRawElementProviderFragment_Release(IRawElementProviderFragment* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IRawElementProviderFragment methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragment_Navigate(IRawElementProviderFragment* This,enum NavigateDirection direction,IRawElementProviderFragment **pRetVal) {
+ return This->lpVtbl->Navigate(This,direction,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_GetRuntimeId(IRawElementProviderFragment* This,SAFEARRAY **pRetVal) {
+ return This->lpVtbl->GetRuntimeId(This,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_get_BoundingRectangle(IRawElementProviderFragment* This,struct UiaRect *pRetVal) {
+ return This->lpVtbl->get_BoundingRectangle(This,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_GetEmbeddedFragmentRoots(IRawElementProviderFragment* This,SAFEARRAY **pRetVal) {
+ return This->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_SetFocus(IRawElementProviderFragment* This) {
+ return This->lpVtbl->SetFocus(This);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_get_FragmentRoot(IRawElementProviderFragment* This,IRawElementProviderFragmentRoot **pRetVal) {
+ return This->lpVtbl->get_FragmentRoot(This,pRetVal);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IRawElementProviderFragment_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IRawElementProviderFragmentRoot interface
+ */
+#ifndef __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__
+#define __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86,0xcb, 0xde,0x3c,0x75,0x59,0x9b,0x58);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("620ce2a5-ab8f-40a9-86cb-de3c75599b58")
+IRawElementProviderFragmentRoot : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE ElementProviderFromPoint(
+ double x,
+ double y,
+ IRawElementProviderFragment **pRetVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFocus(
+ IRawElementProviderFragment **pRetVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86,0xcb, 0xde,0x3c,0x75,0x59,0x9b,0x58)
+#endif
+#else
+typedef struct IRawElementProviderFragmentRootVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IRawElementProviderFragmentRoot *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IRawElementProviderFragmentRoot *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IRawElementProviderFragmentRoot *This);
+
+ /*** IRawElementProviderFragmentRoot methods ***/
+ HRESULT (STDMETHODCALLTYPE *ElementProviderFromPoint)(
+ IRawElementProviderFragmentRoot *This,
+ double x,
+ double y,
+ IRawElementProviderFragment **pRetVal);
+
+ HRESULT (STDMETHODCALLTYPE *GetFocus)(
+ IRawElementProviderFragmentRoot *This,
+ IRawElementProviderFragment **pRetVal);
+
+ END_INTERFACE
+} IRawElementProviderFragmentRootVtbl;
+
+interface IRawElementProviderFragmentRoot {
+ CONST_VTBL IRawElementProviderFragmentRootVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IRawElementProviderFragmentRoot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRawElementProviderFragmentRoot_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRawElementProviderFragmentRoot_Release(This) (This)->lpVtbl->Release(This)
+/*** IRawElementProviderFragmentRoot methods ***/
+#define IRawElementProviderFragmentRoot_ElementProviderFromPoint(This,x,y,pRetVal) (This)->lpVtbl->ElementProviderFromPoint(This,x,y,pRetVal)
+#define IRawElementProviderFragmentRoot_GetFocus(This,pRetVal) (This)->lpVtbl->GetFocus(This,pRetVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragmentRoot_QueryInterface(IRawElementProviderFragmentRoot* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IRawElementProviderFragmentRoot_AddRef(IRawElementProviderFragmentRoot* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IRawElementProviderFragmentRoot_Release(IRawElementProviderFragmentRoot* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IRawElementProviderFragmentRoot methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragmentRoot_ElementProviderFromPoint(IRawElementProviderFragmentRoot* This,double x,double y,IRawElementProviderFragment **pRetVal) {
+ return This->lpVtbl->ElementProviderFromPoint(This,x,y,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragmentRoot_GetFocus(IRawElementProviderFragmentRoot* This,IRawElementProviderFragment **pRetVal) {
+ return This->lpVtbl->GetFocus(This,pRetVal);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__ */
+
#endif /* __UIA_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */
diff --git a/lib/libc/include/any-windows-any/uiautomationcoreapi.h b/lib/libc/include/any-windows-any/uiautomationcoreapi.h
index 451ce4cd42..0c0bcb064a 100644
--- a/lib/libc/include/any-windows-any/uiautomationcoreapi.h
+++ b/lib/libc/include/any-windows-any/uiautomationcoreapi.h
@@ -66,6 +66,7 @@ HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value);
int WINAPI UiaLookupId(enum AutomationIdentifierType type, const GUID *guid);
WINBOOL WINAPI UiaPatternRelease(HUIAPATTERNOBJECT hobj);
HRESULT WINAPI UiaRaiseAutomationEvent(IRawElementProviderSimple *provider, EVENTID id);
+HRESULT WINAPI UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple *provider, PROPERTYID id, VARIANT old, VARIANT new);
void WINAPI UiaRegisterProviderCallback(UiaProviderCallback *pCallback);
LRESULT WINAPI UiaReturnRawElementProvider(HWND hwnd, WPARAM wParam, LPARAM lParam, IRawElementProviderSimple *elprov);
WINBOOL WINAPI UiaTextRangeRelease(HUIATEXTRANGE hobj);
diff --git a/lib/libc/include/any-windows-any/uiviewsettingsinterop.h b/lib/libc/include/any-windows-any/uiviewsettingsinterop.h
index df2d34e9c5..ae3ab60155 100644
--- a/lib/libc/include/any-windows-any/uiviewsettingsinterop.h
+++ b/lib/libc/include/any-windows-any/uiviewsettingsinterop.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/uiviewsettingsinterop.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/uiviewsettingsinterop.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/unknwn.h b/lib/libc/include/any-windows-any/unknwn.h
index d8c309071d..d28f95ec3f 100644
--- a/lib/libc/include/any-windows-any/unknwn.h
+++ b/lib/libc/include/any-windows-any/unknwn.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/unknwn.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/unknwn.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/unknwnbase.h b/lib/libc/include/any-windows-any/unknwnbase.h
index 5119637514..62c38b5cdb 100644
--- a/lib/libc/include/any-windows-any/unknwnbase.h
+++ b/lib/libc/include/any-windows-any/unknwnbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/unknwnbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/unknwnbase.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/urlhist.h b/lib/libc/include/any-windows-any/urlhist.h
index 5283d58990..683a79bf77 100644
--- a/lib/libc/include/any-windows-any/urlhist.h
+++ b/lib/libc/include/any-windows-any/urlhist.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/urlhist.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/urlhist.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/urlmon.h b/lib/libc/include/any-windows-any/urlmon.h
index a676dd6a25..23cca081f4 100644
--- a/lib/libc/include/any-windows-any/urlmon.h
+++ b/lib/libc/include/any-windows-any/urlmon.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/urlmon.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/urlmon.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/vdslun.h b/lib/libc/include/any-windows-any/vdslun.h
index 2206b68a19..2394c123f4 100644
--- a/lib/libc/include/any-windows-any/vdslun.h
+++ b/lib/libc/include/any-windows-any/vdslun.h
@@ -1,32 +1,126 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_VDSLUN
-#define _INC_VDSLUN
+/*** Autogenerated by WIDL 7.0 from include/vdslun.idl - Do not edit ***/
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __vdslun_h__
+#define __vdslun_h__
+
+/* Forward declarations */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+typedef enum _VDS_STORAGE_IDENTIFIER_CODE_SET {
+ VDSStorageIdCodeSetReserved = 0,
+ VDSStorageIdCodeSetBinary = 1,
+ VDSStorageIdCodeSetAscii = 2,
+ VDSStorageIdCodeSetUtf8 = 3
+} VDS_STORAGE_IDENTIFIER_CODE_SET;
+typedef enum _VDS_STORAGE_IDENTIFIER_TYPE {
+ VDSStorageIdTypeVendorSpecific = 0,
+ VDSStorageIdTypeVendorId = 1,
+ VDSStorageIdTypeEUI64 = 2,
+ VDSStorageIdTypeFCPHName = 3,
+ VDSStorageIdTypePortRelative = 4,
+ VDSStorageIdTypeTargetPortGroup = 5,
+ VDSStorageIdTypeLogicalUnitGroup = 6,
+ VDSStorageIdTypeMD5LogicalUnitIdentifier = 7,
+ VDSStorageIdTypeScsiNameString = 8
+} VDS_STORAGE_IDENTIFIER_TYPE;
+typedef enum _VDS_STORAGE_BUS_TYPE {
+ VDSBusTypeUnknown = 0x0,
+ VDSBusTypeScsi = 0x1,
+ VDSBusTypeAtapi = 0x2,
+ VDSBusTypeAta = 0x3,
+ VDSBusType1394 = 0x4,
+ VDSBusTypeSsa = 0x5,
+ VDSBusTypeFibre = 0x6,
+ VDSBusTypeUsb = 0x7,
+ VDSBusTypeRAID = 0x8,
+ VDSBusTypeiScsi = 0x9,
+ VDSBusTypeSas = 0xa,
+ VDSBusTypeSata = 0xb,
+ VDSBusTypeSd = 0xc,
+ VDSBusTypeMmc = 0xd,
+ VDSBusTypeMax = 0xe,
+ VDSBusTypeVirtual = 0xe,
+ VDSBusTypeFileBackedVirtual = 0xf,
+ VDSBusTypeSpaces = 0x10,
+ VDSBusTypeNVMe = 0x11,
+ VDSBusTypeScm = 0x12,
+ VDSBusTypeUfs = 0x13,
+ VDSBusTypeMaxReserved = 0x7f
+} VDS_STORAGE_BUS_TYPE;
+typedef struct _VDS_STORAGE_IDENTIFIER {
+ VDS_STORAGE_IDENTIFIER_CODE_SET m_CodeSet;
+ VDS_STORAGE_IDENTIFIER_TYPE m_Type;
+ ULONG m_cbIdentifier;
+ BYTE *m_rgbIdentifier;
+} VDS_STORAGE_IDENTIFIER;
+typedef struct _VDS_STORAGE_DEVICE_ID_DESCRIPTOR {
+ ULONG m_version;
+ ULONG m_cIdentifiers;
+ VDS_STORAGE_IDENTIFIER *m_rgIdentifiers;
+} VDS_STORAGE_DEVICE_ID_DESCRIPTOR;
+typedef enum _VDS_INTERCONNECT_ADDRESS_TYPE {
+ VDS_IA_UNKNOWN = 0,
+ VDS_IA_FCFS = 1,
+ VDS_IA_FCPH = 2,
+ VDS_IA_FCPH3 = 3,
+ VDS_IA_MAC = 4,
+ VDS_IA_SCSI = 5
+} VDS_INTERCONNECT_ADDRESS_TYPE;
typedef struct _VDS_INTERCONNECT {
- VDS_INTERCONNECT_ADDRESS_TYPE m_addressType;
- ULONG m_cbPort; BYTE* m_pbPort;
- ULONG m_cbAddress;
- BYTE *m_pbAddress;
+ VDS_INTERCONNECT_ADDRESS_TYPE m_addressType;
+ ULONG m_cbPort;
+ BYTE *m_pbPort;
+ ULONG m_cbAddress;
+ BYTE *m_pbAddress;
} VDS_INTERCONNECT;
-
typedef struct _VDS_LUN_INFORMATION {
- ULONG m_version;
- BYTE m_DeviceType;
- BYTE m_DeviceTypeModifier;
- WINBOOL m_bCommandQueueing;
- VDS_STORAGE_BUS_TYPE m_BusType;
- char* m_szVendorId;
- char* m_szProductId;
- char* m_szProductRevision;
- char* m_szSerialNumber;
- GUID m_diskSignature;
- VDS_STORAGE_DEVICE_ID_DESCRIPTOR m_deviceIdDescriptor;
- ULONG m_cInterconnects;
- VDS_INTERCONNECT *m_rgInterconnects;
+ ULONG m_version;
+ BYTE m_DeviceType;
+ BYTE m_DeviceTypeModifier;
+ WINBOOL m_bCommandQueueing;
+ VDS_STORAGE_BUS_TYPE m_BusType;
+ char *m_szVendorId;
+ char *m_szProductId;
+ char *m_szProductRevision;
+ char *m_szSerialNumber;
+ GUID m_diskSignature;
+ VDS_STORAGE_DEVICE_ID_DESCRIPTOR m_deviceIdDescriptor;
+ ULONG m_cInterconnects;
+ VDS_INTERCONNECT *m_rgInterconnects;
} VDS_LUN_INFORMATION;
+#define VER_VDS_LUN_INFORMATION (1)
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
-#endif /*_INC_VDSLUN*/
+#endif /* __vdslun_h__ */
diff --git a/lib/libc/include/any-windows-any/vmr9.h b/lib/libc/include/any-windows-any/vmr9.h
index 644bbc0b4c..0254f08256 100644
--- a/lib/libc/include/any-windows-any/vmr9.h
+++ b/lib/libc/include/any-windows-any/vmr9.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/vmr9.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/vmr9.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/vsadmin.h b/lib/libc/include/any-windows-any/vsadmin.h
index 2f9c478484..b57d5cc978 100644
--- a/lib/libc/include/any-windows-any/vsadmin.h
+++ b/lib/libc/include/any-windows-any/vsadmin.h
@@ -1,45 +1,350 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_VSADMIN
-#define _INC_VSADMIN
+/*** Autogenerated by WIDL 7.0 from include/vsadmin.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+#ifndef __vsadmin_h__
+#define __vsadmin_h__
+
+/* Forward declarations */
+
+#ifndef __IVssAdmin_FWD_DEFINED__
+#define __IVssAdmin_FWD_DEFINED__
+typedef interface IVssAdmin IVssAdmin;
+#ifdef __cplusplus
+interface IVssAdmin;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssAdminEx_FWD_DEFINED__
+#define __IVssAdminEx_FWD_DEFINED__
+typedef interface IVssAdminEx IVssAdminEx;
+#ifdef __cplusplus
+interface IVssAdminEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __VSSCoordinator_FWD_DEFINED__
+#define __VSSCoordinator_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class VSSCoordinator VSSCoordinator;
+#else
+typedef struct VSSCoordinator VSSCoordinator;
+#endif /* defined __cplusplus */
+#endif /* defined __VSSCoordinator_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
#include <vss.h>
-#if (_WIN32_WINNT >= 0x600)
-#undef INTERFACE
-#define INTERFACE IVssAdmin
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssAdmin,IUnknown)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+/*****************************************************************************
+ * IVssAdmin interface
+ */
+#ifndef __IVssAdmin_INTERFACE_DEFINED__
+#define __IVssAdmin_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssAdmin, 0x77ed5996, 0x2f63, 0x11d3, 0x8a,0x39, 0x00,0xc0,0x4f,0x72,0xd8,0xe3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("77ed5996-2f63-11d3-8a39-00c04f72d8e3")
+IVssAdmin : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE RegisterProvider(
+ VSS_ID pProviderId,
+ CLSID ClassId,
+ VSS_PWSZ pwszProviderName,
+ VSS_PROVIDER_TYPE eProviderType,
+ VSS_PWSZ pwszProviderVersion,
+ VSS_ID ProviderVersionId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterProvider(
+ VSS_ID ProviderId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryProviders(
+ IVssEnumObject **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AbortAllSnapshotsInProgress(
+ ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssAdmin, 0x77ed5996, 0x2f63, 0x11d3, 0x8a,0x39, 0x00,0xc0,0x4f,0x72,0xd8,0xe3)
+#endif
+#else
+typedef struct IVssAdminVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssAdmin *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssAdmin *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssAdmin *This);
- /* IVssAdmin methods */
- STDMETHOD_(HRESULT,RegisterProvider)(THIS_ VSS_ID pProviderId,CLSID ClassId,VSS_PWSZ pwszProviderName,VSS_PROVIDER_TYPE eProviderType,VSS_PWSZ pwszProviderVersion,VSS_ID ProviderVersionId) PURE;
- STDMETHOD_(HRESULT,UnregisterProvider)(THIS_ VSS_ID ProviderId) PURE;
- STDMETHOD_(HRESULT,QueryProviders)(THIS_ IVssEnumObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,AbortAllSnapshotsInProgress)(THIS) PURE;
+ /*** IVssAdmin methods ***/
+ HRESULT (STDMETHODCALLTYPE *RegisterProvider)(
+ IVssAdmin *This,
+ VSS_ID pProviderId,
+ CLSID ClassId,
+ VSS_PWSZ pwszProviderName,
+ VSS_PROVIDER_TYPE eProviderType,
+ VSS_PWSZ pwszProviderVersion,
+ VSS_ID ProviderVersionId);
+
+ HRESULT (STDMETHODCALLTYPE *UnregisterProvider)(
+ IVssAdmin *This,
+ VSS_ID ProviderId);
+
+ HRESULT (STDMETHODCALLTYPE *QueryProviders)(
+ IVssAdmin *This,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *AbortAllSnapshotsInProgress)(
+ IVssAdmin *This);
END_INTERFACE
+} IVssAdminVtbl;
+
+interface IVssAdmin {
+ CONST_VTBL IVssAdminVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssAdmin_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssAdmin_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssAdmin_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssAdmin methods ***/
#define IVssAdmin_RegisterProvider(This,pProviderId,ClassId,pwszProviderName,eProviderType,pwszProviderVersion,ProviderVersionId) (This)->lpVtbl->RegisterProvider(This,pProviderId,ClassId,pwszProviderName,eProviderType,pwszProviderVersion,ProviderVersionId)
#define IVssAdmin_UnregisterProvider(This,ProviderId) (This)->lpVtbl->UnregisterProvider(This,ProviderId)
#define IVssAdmin_QueryProviders(This,ppEnum) (This)->lpVtbl->QueryProviders(This,ppEnum)
-#define IVssAdmin_AbortAllSnapshotsInProgress() (This)->lpVtbl->AbortAllSnapshotsInProgress(This)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x600)*/
-#endif /*_INC_VSWRITER*/
+#define IVssAdmin_AbortAllSnapshotsInProgress(This) (This)->lpVtbl->AbortAllSnapshotsInProgress(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssAdmin_QueryInterface(IVssAdmin* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssAdmin_AddRef(IVssAdmin* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssAdmin_Release(IVssAdmin* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssAdmin methods ***/
+static FORCEINLINE HRESULT IVssAdmin_RegisterProvider(IVssAdmin* This,VSS_ID pProviderId,CLSID ClassId,VSS_PWSZ pwszProviderName,VSS_PROVIDER_TYPE eProviderType,VSS_PWSZ pwszProviderVersion,VSS_ID ProviderVersionId) {
+ return This->lpVtbl->RegisterProvider(This,pProviderId,ClassId,pwszProviderName,eProviderType,pwszProviderVersion,ProviderVersionId);
+}
+static FORCEINLINE HRESULT IVssAdmin_UnregisterProvider(IVssAdmin* This,VSS_ID ProviderId) {
+ return This->lpVtbl->UnregisterProvider(This,ProviderId);
+}
+static FORCEINLINE HRESULT IVssAdmin_QueryProviders(IVssAdmin* This,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->QueryProviders(This,ppEnum);
+}
+static FORCEINLINE HRESULT IVssAdmin_AbortAllSnapshotsInProgress(IVssAdmin* This) {
+ return This->lpVtbl->AbortAllSnapshotsInProgress(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssAdmin_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssAdminEx interface
+ */
+#ifndef __IVssAdminEx_INTERFACE_DEFINED__
+#define __IVssAdminEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssAdminEx, 0x7858a9f8, 0xb1fa, 0x41a6, 0x96,0x4f, 0xb9,0xb3,0x6b,0x8c,0xd8,0xd8);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7858a9f8-b1fa-41a6-964f-b9b36b8cd8d8")
+IVssAdminEx : public IVssAdmin
+{
+ virtual HRESULT STDMETHODCALLTYPE GetProviderCapability(
+ VSS_ID pProviderId,
+ ULONGLONG *pllOriginalCapabilityMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProviderContext(
+ VSS_ID ProviderId,
+ LONG *plContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetProviderContext(
+ VSS_ID ProviderId,
+ LONG lContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssAdminEx, 0x7858a9f8, 0xb1fa, 0x41a6, 0x96,0x4f, 0xb9,0xb3,0x6b,0x8c,0xd8,0xd8)
+#endif
+#else
+typedef struct IVssAdminExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssAdminEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssAdminEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssAdminEx *This);
+
+ /*** IVssAdmin methods ***/
+ HRESULT (STDMETHODCALLTYPE *RegisterProvider)(
+ IVssAdminEx *This,
+ VSS_ID pProviderId,
+ CLSID ClassId,
+ VSS_PWSZ pwszProviderName,
+ VSS_PROVIDER_TYPE eProviderType,
+ VSS_PWSZ pwszProviderVersion,
+ VSS_ID ProviderVersionId);
+
+ HRESULT (STDMETHODCALLTYPE *UnregisterProvider)(
+ IVssAdminEx *This,
+ VSS_ID ProviderId);
+
+ HRESULT (STDMETHODCALLTYPE *QueryProviders)(
+ IVssAdminEx *This,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *AbortAllSnapshotsInProgress)(
+ IVssAdminEx *This);
+
+ /*** IVssAdminEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetProviderCapability)(
+ IVssAdminEx *This,
+ VSS_ID pProviderId,
+ ULONGLONG *pllOriginalCapabilityMask);
+
+ HRESULT (STDMETHODCALLTYPE *GetProviderContext)(
+ IVssAdminEx *This,
+ VSS_ID ProviderId,
+ LONG *plContext);
+
+ HRESULT (STDMETHODCALLTYPE *SetProviderContext)(
+ IVssAdminEx *This,
+ VSS_ID ProviderId,
+ LONG lContext);
+
+ END_INTERFACE
+} IVssAdminExVtbl;
+
+interface IVssAdminEx {
+ CONST_VTBL IVssAdminExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssAdminEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssAdminEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssAdminEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssAdmin methods ***/
+#define IVssAdminEx_RegisterProvider(This,pProviderId,ClassId,pwszProviderName,eProviderType,pwszProviderVersion,ProviderVersionId) (This)->lpVtbl->RegisterProvider(This,pProviderId,ClassId,pwszProviderName,eProviderType,pwszProviderVersion,ProviderVersionId)
+#define IVssAdminEx_UnregisterProvider(This,ProviderId) (This)->lpVtbl->UnregisterProvider(This,ProviderId)
+#define IVssAdminEx_QueryProviders(This,ppEnum) (This)->lpVtbl->QueryProviders(This,ppEnum)
+#define IVssAdminEx_AbortAllSnapshotsInProgress(This) (This)->lpVtbl->AbortAllSnapshotsInProgress(This)
+/*** IVssAdminEx methods ***/
+#define IVssAdminEx_GetProviderCapability(This,pProviderId,pllOriginalCapabilityMask) (This)->lpVtbl->GetProviderCapability(This,pProviderId,pllOriginalCapabilityMask)
+#define IVssAdminEx_GetProviderContext(This,ProviderId,plContext) (This)->lpVtbl->GetProviderContext(This,ProviderId,plContext)
+#define IVssAdminEx_SetProviderContext(This,ProviderId,lContext) (This)->lpVtbl->SetProviderContext(This,ProviderId,lContext)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssAdminEx_QueryInterface(IVssAdminEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssAdminEx_AddRef(IVssAdminEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssAdminEx_Release(IVssAdminEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssAdmin methods ***/
+static FORCEINLINE HRESULT IVssAdminEx_RegisterProvider(IVssAdminEx* This,VSS_ID pProviderId,CLSID ClassId,VSS_PWSZ pwszProviderName,VSS_PROVIDER_TYPE eProviderType,VSS_PWSZ pwszProviderVersion,VSS_ID ProviderVersionId) {
+ return This->lpVtbl->RegisterProvider(This,pProviderId,ClassId,pwszProviderName,eProviderType,pwszProviderVersion,ProviderVersionId);
+}
+static FORCEINLINE HRESULT IVssAdminEx_UnregisterProvider(IVssAdminEx* This,VSS_ID ProviderId) {
+ return This->lpVtbl->UnregisterProvider(This,ProviderId);
+}
+static FORCEINLINE HRESULT IVssAdminEx_QueryProviders(IVssAdminEx* This,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->QueryProviders(This,ppEnum);
+}
+static FORCEINLINE HRESULT IVssAdminEx_AbortAllSnapshotsInProgress(IVssAdminEx* This) {
+ return This->lpVtbl->AbortAllSnapshotsInProgress(This);
+}
+/*** IVssAdminEx methods ***/
+static FORCEINLINE HRESULT IVssAdminEx_GetProviderCapability(IVssAdminEx* This,VSS_ID pProviderId,ULONGLONG *pllOriginalCapabilityMask) {
+ return This->lpVtbl->GetProviderCapability(This,pProviderId,pllOriginalCapabilityMask);
+}
+static FORCEINLINE HRESULT IVssAdminEx_GetProviderContext(IVssAdminEx* This,VSS_ID ProviderId,LONG *plContext) {
+ return This->lpVtbl->GetProviderContext(This,ProviderId,plContext);
+}
+static FORCEINLINE HRESULT IVssAdminEx_SetProviderContext(IVssAdminEx* This,VSS_ID ProviderId,LONG lContext) {
+ return This->lpVtbl->SetProviderContext(This,ProviderId,lContext);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssAdminEx_INTERFACE_DEFINED__ */
+
+#ifndef __VSSAdmin_LIBRARY_DEFINED__
+#define __VSSAdmin_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_VSSAdmin, 0x9148a774, 0x0304, 0x4243, 0xb2,0x69, 0xa3,0x39,0xaa,0x96,0xd2,0x64);
+
+/*****************************************************************************
+ * VSSCoordinator coclass
+ */
+
+DEFINE_GUID(CLSID_VSSCoordinator, 0xe579ab5f, 0x1cc4, 0x44b4, 0xbe,0xd9, 0xde,0x09,0x91,0xff,0x06,0x23);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("e579ab5f-1cc4-44b4-bed9-de0991ff0623") VSSCoordinator;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(VSSCoordinator, 0xe579ab5f, 0x1cc4, 0x44b4, 0xbe,0xd9, 0xde,0x09,0x91,0xff,0x06,0x23)
+#endif
+#endif
+
+#endif /* __VSSAdmin_LIBRARY_DEFINED__ */
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __vsadmin_h__ */
diff --git a/lib/libc/include/any-windows-any/vsanimation.h b/lib/libc/include/any-windows-any/vsanimation.h
new file mode 100644
index 0000000000..431a7e9e14
--- /dev/null
+++ b/lib/libc/include/any-windows-any/vsanimation.h
@@ -0,0 +1,242 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef __VSANIMATION_H__
+#define __VSANIMATION_H__
+
+#ifndef VSCLASS_ANIMATIONS
+#define VSCLASS_ANIMATIONS L"ANIMATIONS"
+#endif
+
+enum ANIMATIONSPARTS {
+ TAS_EXPAND = 1,
+ TAS_COLLAPSE = 2,
+ TAS_REPOSITION = 3,
+ TAS_FADEIN = 4,
+ TAS_FADEOUT = 5,
+ TAS_ADDTOLIST = 6,
+ TAS_DELETEFROMLIST = 7,
+ TAS_ADDTOGRID = 8,
+ TAS_DELETEFROMGRID = 9,
+ TAS_ADDTOSEARCHGRID = 10,
+ TAS_DELETEFROMSEARCHGRID = 11,
+ TAS_ADDTOSEARCHLIST = 12,
+ TAS_DELETEFROMSEARCHLIST = 13,
+ TAS_SHOWEDGEUI = 14,
+ TAS_SHOWPANEL = 15,
+ TAS_HIDEEDGEUI = 16,
+ TAS_HIDEPANEL = 17,
+ TAS_SHOWPOPUP = 18,
+ TAS_HIDEPOPUP = 19,
+ TAS_POINTERDOWN = 20,
+ TAS_POINTERUP = 21,
+ TAS_DRAGSOURCESTART = 22,
+ TAS_DRAGSOURCEEND = 23,
+ TAS_TRANSITIONCONTENT = 24,
+ TAS_REVEAL = 25,
+ TAS_HIDE = 26,
+ TAS_DRAGBETWEENENTER = 27,
+ TAS_DRAGBETWEENLEAVE = 28,
+ TAS_SWIPESELECT = 29,
+ TAS_SWIPEDESELECT = 30,
+ TAS_SWIPEREVEAL = 31,
+ TAS_ENTERPAGE = 32,
+ TAS_TRANSITIONPAGE = 33,
+ TAS_CROSSFADE = 34,
+ TAS_PEEK = 35,
+ TAS_UPDATEBADGE = 36
+};
+
+enum EXPANDSTATES {
+ TA_EXPAND_AFFECTED = 1,
+ TA_EXPAND_REVEALED = 2
+};
+
+enum COLLAPSESTATES {
+ TA_COLLAPSE_HIDDEN = 1,
+ TA_COLLAPSE_AFFECTED = 2
+};
+
+enum REPOSITIONSTATES {
+ TA_REPOSITION_TARGET = 1
+};
+
+enum FADEINSTATES {
+ TA_FADEIN_SHOWN = 1
+};
+
+enum FADEOUTSTATES {
+ TA_FADEOUT_HIDDEN = 1
+};
+
+enum ADDTOGRIDSTATES {
+ TA_ADDTOGRID_ADDED = 1,
+ TA_ADDTOGRID_AFFECTED = 2,
+ TA_ADDTOGRID_ROWOUT = 3,
+ TA_ADDTOGRID_ROWIN = 4
+};
+
+enum DELETEFROMGRIDSTATES {
+ TA_DELETEFROMGRID_DELETED = 1,
+ TA_DELETEFROMGRID_REMAINING = 2,
+ TA_DELETEFROMGRID_ROWOUT = 3,
+ TA_DELETEFROMGRID_ROWIN = 4
+};
+
+enum ADDTOLISTSTATES {
+ TA_ADDTOLIST_ADDED = 1,
+ TA_ADDTOLIST_AFFECTED = 2
+};
+
+enum DELETEFROMLISTSTATES {
+ TA_DELETEFROMLIST_DELETED = 1,
+ TA_DELETEFROMLIST_REMAINING = 2
+};
+
+enum ADDTOSEARCHGRIDSTATES {
+ TA_ADDTOSEARCHGRID_ADDED = 1,
+ TA_ADDTOSEARCHGRID_AFFECTED = 2,
+ TA_ADDTOSEARCHGRID_ROWOUT = 3,
+ TA_ADDTOSEARCHGRID_ROWIN = 4
+};
+
+enum DELETEFROMSEARCHGRIDSTATES {
+ TA_DELETEFROMSEARCHGRID_DELETED = 1,
+ TA_DELETEFROMSEARCHGRID_REMAINING = 2,
+ TA_DELETEFROMSEARCHGRID_ROWOUT = 3,
+ TA_DELETEFROMSEARCHGRID_ROWIN = 4
+};
+
+enum ADDTOSEARCHLISTSTATES {
+ TA_ADDTOSEARCHLIST_ADDED = 1,
+ TA_ADDTOSEARCHLIST_AFFECTED = 2
+};
+
+enum DELETEFROMSEARCHLISTSTATES {
+ TA_DELETEFROMSEARCHLIST_DELETED = 1,
+ TA_DELETEFROMSEARCHLIST_REMAINING = 2
+};
+
+enum SHOWEDGEUISTATES {
+ TA_SHOWEDGEUI_TARGET = 1
+};
+
+enum HIDEEDGEUISTATES {
+ TA_HIDEEDGEUI_TARGET = 1
+};
+
+enum SHOWPANELSTATES {
+ TA_SHOWPANEL_TARGET = 1
+};
+
+enum HIDEPANELSTATES {
+ TA_HIDEPANEL_TARGET = 1
+};
+
+enum SHOWPOPUPSTATES {
+ TA_SHOWPOPUP_TARGET = 1
+};
+
+enum HIDEPOPUPSTATES {
+ TA_HIDEPOPUP_TARGET = 1
+};
+
+enum POINTERDOWNSTATES {
+ TA_POINTERDOWN_TARGET = 1
+};
+
+enum POINTERUPSTATES {
+ TA_POINTERUP_TARGET = 1
+};
+
+enum DRAGSOURCESTARTSTATES {
+ TA_DRAGSOURCESTART_DRAGSOURCE = 1,
+ TA_DRAGSOURCESTART_AFFECTED = 2
+};
+
+enum DRAGSOURCEENDSTATES {
+ TA_DRAGSOURCEEND_DRAGSOURCE = 1,
+ TA_DRAGSOURCEEND_AFFECTED = 2
+};
+
+enum TRANSITIONCONTENTSTATES {
+ TA_TRANSITIONCONTENT_INCOMING = 1,
+ TA_TRANSITIONCONTENT_OUTGOING = 2
+};
+
+enum REVEALSTATES {
+ TA_REVEAL_BACKGROUND = 1,
+ TA_REVEAL_CONTENT = 2,
+ TA_REVEAL_OUTLINE = 3,
+ TA_REVEAL_TAPPED = 4
+};
+
+enum HIDESTATES {
+ TA_HIDE_BACKGROUND = 1,
+ TA_HIDE_CONTENT = 2,
+ TA_HIDE_OUTLINE = 3,
+ TA_HIDE_TAPPED = 4
+};
+
+enum DRAGBETWEENENTERSTATES {
+ TA_DRAGBETWEENENTER_AFFECTED = 1
+};
+
+enum DRAGBETWEENLEAVESTATES {
+ TA_DRAGBETWEENLEAVE_AFFECTED = 1
+};
+
+enum SWIPESELECTSTATES {
+ TA_SWIPESELECT_SELECTED = 1,
+ TA_SWIPESELECT_SELECTION = 2
+};
+
+enum SWIPEDESELECTSTATES {
+ TA_SWIPEDESELECT_DESELECTED = 1,
+ TA_SWIPEDESELECT_SELECTION = 2
+};
+
+enum SWIPEREVEALSTATES {
+ TA_SWIPEREVEAL_TARGET = 1
+};
+
+enum ENTERPAGESTATES {
+ TA_ENTERPAGE_TARGET = 1
+};
+
+enum TRANSITIONPAGESTATES {
+ TA_TRANSITIONPAGE_INCOMING = 1,
+ TA_TRANSITIONPAGE_OUTGOING = 2
+};
+
+enum CROSSFADESTATES {
+ TA_CROSSFADE_INCOMING = 1,
+ TA_CROSSFADE_OUTGOING = 2
+};
+
+enum PEEKSTATES {
+ TA_PEEK_TARGET = 1
+};
+
+enum UPDATEBADGESTATES {
+ TA_UPDATEBADGE_INCOMING = 1,
+ TA_UPDATEBADGE_OUTGOING = 2
+};
+
+#ifndef VSCLASS_TIMINGFUNCTION
+#define VSCLASS_TIMINGFUNCTION L"TIMINGFUNCTION"
+#endif
+
+enum TIMINGFUNCTIONPARTS {
+ TATF_LINEAR = 1,
+ TATF_EASEIN = 2,
+ TATF_EASEOUT = 3,
+ TATF_FASTIN = 4,
+ TATF_EXPONENTIAL = 5,
+ TATF_FASTINFORTYSEVENPERCENT = 6
+};
+
+#endif /* __VSANIMATION_H__ */
diff --git a/lib/libc/include/any-windows-any/vsbackup.h b/lib/libc/include/any-windows-any/vsbackup.h
index cf7a9147f0..364d551e34 100644
--- a/lib/libc/include/any-windows-any/vsbackup.h
+++ b/lib/libc/include/any-windows-any/vsbackup.h
@@ -1,11 +1,107 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_VSBACKUP
-#define _INC_VSBACKUP
+/*** Autogenerated by WIDL 7.0 from include/vsbackup.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __vsbackup_h__
+#define __vsbackup_h__
+
+/* Forward declarations */
+
+#ifndef __IVssWMComponent_FWD_DEFINED__
+#define __IVssWMComponent_FWD_DEFINED__
+typedef interface IVssWMComponent IVssWMComponent;
+#ifdef __cplusplus
+interface IVssWMComponent;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssExamineWriterMetadata_FWD_DEFINED__
+#define __IVssExamineWriterMetadata_FWD_DEFINED__
+typedef interface IVssExamineWriterMetadata IVssExamineWriterMetadata;
+#ifdef __cplusplus
+interface IVssExamineWriterMetadata;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssExamineWriterMetadataEx_FWD_DEFINED__
+#define __IVssExamineWriterMetadataEx_FWD_DEFINED__
+typedef interface IVssExamineWriterMetadataEx IVssExamineWriterMetadataEx;
+#ifdef __cplusplus
+interface IVssExamineWriterMetadataEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssExamineWriterMetadataEx2_FWD_DEFINED__
+#define __IVssExamineWriterMetadataEx2_FWD_DEFINED__
+typedef interface IVssExamineWriterMetadataEx2 IVssExamineWriterMetadataEx2;
+#ifdef __cplusplus
+interface IVssExamineWriterMetadataEx2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssWriterComponentsExt_FWD_DEFINED__
+#define __IVssWriterComponentsExt_FWD_DEFINED__
+typedef interface IVssWriterComponentsExt IVssWriterComponentsExt;
+#ifdef __cplusplus
+interface IVssWriterComponentsExt;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssBackupComponents_FWD_DEFINED__
+#define __IVssBackupComponents_FWD_DEFINED__
+typedef interface IVssBackupComponents IVssBackupComponents;
+#ifdef __cplusplus
+interface IVssBackupComponents;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssBackupComponentsEx_FWD_DEFINED__
+#define __IVssBackupComponentsEx_FWD_DEFINED__
+typedef interface IVssBackupComponentsEx IVssBackupComponentsEx;
+#ifdef __cplusplus
+interface IVssBackupComponentsEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssBackupComponentsEx2_FWD_DEFINED__
+#define __IVssBackupComponentsEx2_FWD_DEFINED__
+typedef interface IVssBackupComponentsEx2 IVssBackupComponentsEx2;
+#ifdef __cplusplus
+interface IVssBackupComponentsEx2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssBackupComponentsEx3_FWD_DEFINED__
+#define __IVssBackupComponentsEx3_FWD_DEFINED__
+typedef interface IVssBackupComponentsEx3 IVssBackupComponentsEx3;
+#ifdef __cplusplus
+interface IVssBackupComponentsEx3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssBackupComponentsEx4_FWD_DEFINED__
+#define __IVssBackupComponentsEx4_FWD_DEFINED__
+typedef interface IVssBackupComponentsEx4 IVssBackupComponentsEx4;
+#ifdef __cplusplus
+interface IVssBackupComponentsEx4;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+#include <oaidl.h>
+#include <ocidl.h>
#include <vss.h>
#include <vswriter.h>
@@ -13,194 +109,1454 @@
extern "C" {
#endif
-typedef struct VSS_COMPONENTINFO {
- VSS_COMPONENT_TYPE type;
- BSTR bstrLogicalPath;
- BSTR bstrComponentName;
- BSTR bstrCaption;
- BYTE *pbIcon;
- UINT cbIcon;
- BOOLEAN bRestoreMetadata;
- BOOLEAN bNotifyOnBackupComplete;
- BOOLEAN bSelectable;
- BOOLEAN bSelectableForRestore;
- DWORD dwComponentFlags;
- UINT cFileCount;
- UINT cDatabases;
- UINT cLogFiles;
- UINT cDependencies;
-} VSS_COMPONENTINFO, *PVSSCOMPONENTINFO;
-
-HRESULT WINAPI CreateVssBackupComponentsInternal(
- IVssBackupComponents **ppBackup
-);
-
-FORCEINLINE
-HRESULT WINAPI CreateVssBackupComponents(
- IVssBackupComponents **ppBackup
-){return CreateVssBackupComponentsInternal(ppBackup);}
-
-HRESULT WINAPI CreateVssExamineWriterMetadataInternal(
- BSTR bstrXML,
- IVssExamineWriterMetadata **ppMetadata
-);
-
-FORCEINLINE
-HRESULT WINAPI CreateVssExamineWriterMetadata(
- BSTR bstrXML,
- IVssExamineWriterMetadata **ppMetadata
-){return CreateVssExamineWriterMetadataInternal(bstrXML,ppMetadata);}
-
-HRESULT WINAPI IsVolumeSnapshottedInternal(
- VSS_PWSZ pwszVolumeName,
- BOOLEAN *pbSnapshotsPresent,
- LONG *plSnapshotCapability
-);
-
-FORCEINLINE
-HRESULT WINAPI IsVolumeSnapshotted(
- VSS_PWSZ pwszVolumeName,
- BOOLEAN *pbSnapshotsPresent,
- LONG *plSnapshotCapability
-){return IsVolumeSnapshottedInternal(pwszVolumeName,pbSnapshotsPresent,plSnapshotCapability);}
-
-HRESULT WINAPI ShouldBlockRevertInternal(
- LPCWSTR wszVolumeName,
- BOOLEAN *pbBlock
-);
-
-FORCEINLINE
-HRESULT WINAPI ShouldBlockRevert(
- LPCWSTR wszVolumeName,
- BOOLEAN *pbBlock
-){return ShouldBlockRevertInternal(wszVolumeName,pbBlock);}
-
-void WINAPI VssFreeSnapshotPropertiesInternal(
- VSS_SNAPSHOT_PROP *pProp
-);
-
-FORCEINLINE
-void WINAPI VssFreeSnapshotProperties(
- VSS_SNAPSHOT_PROP *pProp
-){VssFreeSnapshotPropertiesInternal(pProp);}
-
-HRESULT WINAPI GetProviderMgmtInterfaceInternal(
- VSS_ID ProviderId,
- IID InterfaceId,
- IUnknown** ppItf
-);
-
-FORCEINLINE
-HRESULT WINAPI GetProviderMgmtInterface(
- VSS_ID ProviderId,
- IID InterfaceId,
- IUnknown** ppItf
-){return GetProviderMgmtInterfaceInternal(ProviderId,InterfaceId,ppItf);}
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+typedef struct _VSS_COMPONENTINFO {
+ VSS_COMPONENT_TYPE type;
+ BSTR bstrLogicalPath;
+ BSTR bstrComponentName;
+ BSTR bstrCaption;
+ BYTE *pbIcon;
+ UINT cbIcon;
+ boolean bRestoreMetadata;
+ boolean bNotifyOnBackupComplete;
+ boolean bSelectable;
+ boolean bSelectableForRestore;
+ DWORD dwComponentFlags;
+ UINT cFileCount;
+ UINT cDatabases;
+ UINT cLogFiles;
+ UINT cDependencies;
+} VSS_COMPONENTINFO;
+typedef const VSS_COMPONENTINFO *PVSSCOMPONENTINFO;
+/*****************************************************************************
+ * IVssWMComponent interface
+ */
+#ifndef __IVssWMComponent_INTERFACE_DEFINED__
+#define __IVssWMComponent_INTERFACE_DEFINED__
-#ifdef __cplusplus
+DEFINE_GUID(IID_IVssWMComponent, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssWMComponent : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetComponentInfo(
+ PVSSCOMPONENTINFO *ppInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeComponentInfo(
+ PVSSCOMPONENTINFO pInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFile(
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDatabaseFile(
+ UINT iDBFile,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDatabaseLogFile(
+ UINT iDbLogFile,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDependency(
+ UINT iDependency,
+ IVssWMDependency **ppDependency) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssWMComponent, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
+#endif
+#else
+typedef struct IVssWMComponentVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssWMComponent *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssWMComponent *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssWMComponent *This);
+
+ /*** IVssWMComponent methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetComponentInfo)(
+ IVssWMComponent *This,
+ PVSSCOMPONENTINFO *ppInfo);
+
+ HRESULT (STDMETHODCALLTYPE *FreeComponentInfo)(
+ IVssWMComponent *This,
+ PVSSCOMPONENTINFO pInfo);
+
+ HRESULT (STDMETHODCALLTYPE *GetFile)(
+ IVssWMComponent *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetDatabaseFile)(
+ IVssWMComponent *This,
+ UINT iDBFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetDatabaseLogFile)(
+ IVssWMComponent *This,
+ UINT iDbLogFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetDependency)(
+ IVssWMComponent *This,
+ UINT iDependency,
+ IVssWMDependency **ppDependency);
+
+ END_INTERFACE
+} IVssWMComponentVtbl;
+
+interface IVssWMComponent {
+ CONST_VTBL IVssWMComponentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssWMComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssWMComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssWMComponent_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssWMComponent methods ***/
+#define IVssWMComponent_GetComponentInfo(This,ppInfo) (This)->lpVtbl->GetComponentInfo(This,ppInfo)
+#define IVssWMComponent_FreeComponentInfo(This,pInfo) (This)->lpVtbl->FreeComponentInfo(This,pInfo)
+#define IVssWMComponent_GetFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetFile(This,iFile,ppFiledesc)
+#define IVssWMComponent_GetDatabaseFile(This,iDBFile,ppFiledesc) (This)->lpVtbl->GetDatabaseFile(This,iDBFile,ppFiledesc)
+#define IVssWMComponent_GetDatabaseLogFile(This,iDbLogFile,ppFiledesc) (This)->lpVtbl->GetDatabaseLogFile(This,iDbLogFile,ppFiledesc)
+#define IVssWMComponent_GetDependency(This,iDependency,ppDependency) (This)->lpVtbl->GetDependency(This,iDependency,ppDependency)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssWMComponent_QueryInterface(IVssWMComponent* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssWMComponent_AddRef(IVssWMComponent* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssWMComponent_Release(IVssWMComponent* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssWMComponent methods ***/
+static FORCEINLINE HRESULT IVssWMComponent_GetComponentInfo(IVssWMComponent* This,PVSSCOMPONENTINFO *ppInfo) {
+ return This->lpVtbl->GetComponentInfo(This,ppInfo);
+}
+static FORCEINLINE HRESULT IVssWMComponent_FreeComponentInfo(IVssWMComponent* This,PVSSCOMPONENTINFO pInfo) {
+ return This->lpVtbl->FreeComponentInfo(This,pInfo);
+}
+static FORCEINLINE HRESULT IVssWMComponent_GetFile(IVssWMComponent* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssWMComponent_GetDatabaseFile(IVssWMComponent* This,UINT iDBFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetDatabaseFile(This,iDBFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssWMComponent_GetDatabaseLogFile(IVssWMComponent* This,UINT iDbLogFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetDatabaseLogFile(This,iDbLogFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssWMComponent_GetDependency(IVssWMComponent* This,UINT iDependency,IVssWMDependency **ppDependency) {
+ return This->lpVtbl->GetDependency(This,iDependency,ppDependency);
}
#endif
+#endif
-#undef INTERFACE
-#define INTERFACE IVssBackupComponents
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssBackupComponents,IUnknown)
+
+
+#endif /* __IVssWMComponent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssExamineWriterMetadata interface
+ */
+#ifndef __IVssExamineWriterMetadata_INTERFACE_DEFINED__
+#define __IVssExamineWriterMetadata_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssExamineWriterMetadata, 0x902fcf7f, 0xb7fd, 0x42f8, 0x81,0xf1, 0xb2,0xe4,0x00,0xb1,0xe5,0xbd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("902fcf7f-b7fd-42f8-81f1-b2e400b1e5bd")
+IVssExamineWriterMetadata : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE GetIdentity(
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFileCounts(
+ UINT *pcIncludeFiles,
+ UINT *pcExcludeFiles,
+ UINT *pcComponents) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIncludeFile(
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetExcludeFile(
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetComponent(
+ UINT iComponent,
+ IVssWMComponent **ppComponent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreMethod(
+ VSS_RESTOREMETHOD_ENUM *pMethod,
+ BSTR *pbstrService,
+ BSTR *pbstrUserProcedure,
+ VSS_WRITERRESTORE_ENUM *pwriterRestore,
+ boolean *pbRebootRequired,
+ UINT *pcMappings) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAlternateLocationMapping(
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackupSchema(
+ DWORD *pdwSchemaMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDocument(
+ IXMLDOMDocument **pDoc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
+ BSTR *pbstrXML) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LoadFromXML(
+ BSTR bstrXML) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssExamineWriterMetadata, 0x902fcf7f, 0xb7fd, 0x42f8, 0x81,0xf1, 0xb2,0xe4,0x00,0xb1,0xe5,0xbd)
+#endif
+#else
+typedef struct IVssExamineWriterMetadataVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssBackupComponents methods */
- STDMETHOD_(HRESULT,GetWriterComponentsCount)(THIS_ UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetWriterComponents)(THIS_ UINT iWriter,IVssWriterComponentsExt **pWriterComponents) PURE;
- STDMETHOD_(HRESULT,InitializeForBackup)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupState)(THIS_ BOOLEAN bSelectComponents,BOOLEAN bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,BOOLEAN bPartialFileSupport) PURE;
- STDMETHOD_(HRESULT,InitializeForRestore)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetRestoreState)(THIS_ VSS_RESTORE_TYPE restoreType) PURE;
- STDMETHOD_(HRESULT,GatherWriterMetadata)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadataCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadata)(THIS_ UINT iWriter,VSS_ID *pidWriterInstance,IVssExamineWriterMetadata **ppMetadata) PURE;
- STDMETHOD_(HRESULT,FreeWriterMetadata)(THIS) PURE;
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) PURE;
- STDMETHOD_(HRESULT,PrepareForBackup)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AbortBackup)(THIS) PURE;
- STDMETHOD_(HRESULT,GatherWriterStatus)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterStatusCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,FreeWriterStatus)(THIS) PURE;
- STDMETHOD_(HRESULT,GetWriterStatus)(THIS_ UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pState,HRESULT *pHrResultFailure) PURE;
- STDMETHOD_(HRESULT,SetBackupSucceeded)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSucceeded) PURE;
- STDMETHOD_(HRESULT,SetBackupOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestore)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,SetRestoreOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) PURE;
- STDMETHOD_(HRESULT,SetAdditionalRestores)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bAdditionalResources) PURE;
- STDMETHOD_(HRESULT,SetPreviousBackupStamp)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,BackupComplete)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AddAlternativeLocationMapping)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE;
- STDMETHOD_(HRESULT,AddRestoreSubcomponent)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,BOOLEAN bRepair) PURE;
- STDMETHOD_(HRESULT,SetFileRestoreStatus)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) PURE;
- STDMETHOD_(HRESULT,AddNewTarget)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,BOOLEAN bRecursive,LPCWSTR wszAlternatePath) PURE;
- STDMETHOD_(HRESULT,SetRangesFilePath)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) PURE;
- STDMETHOD_(HRESULT,PreRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,PostRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,SetContext)(THIS_ LONG lContext) PURE;
- STDMETHOD_(HRESULT,StartSnapshotSet)(THIS_ VSS_ID *pSnapshotSetId) PURE;
- STDMETHOD_(HRESULT,AddToSnapshotSet)(THIS_ VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) PURE;
- STDMETHOD_(HRESULT,DoSnapshotSet)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,DeleteSnapshots)(THIS_ VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,BOOLEAN bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) PURE;
- STDMETHOD_(HRESULT,ImportSnapshots)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,BreakSnapshotSet)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,GetSnapshotProperties)(THIS_ VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) PURE;
- STDMETHOD_(HRESULT,Query)(THIS_ VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,IsVolumeSupported)(THIS_ VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,BOOLEAN *pbSupportedByThisProvider) PURE;
- STDMETHOD_(HRESULT,DisableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,EnableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,DisableWriterInstances)(THIS_ const VSS_ID *rgWriterInstanceId,UINT cInstanceId) PURE;
- STDMETHOD_(HRESULT,ExposeSnapshot)(THIS_ VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) PURE;
- STDMETHOD_(HRESULT,RevertToSnapshot)(THIS_ VSS_ID SnapshotId,BOOLEAN bForceDismount) PURE;
- STDMETHOD_(HRESULT,QueryRevertStatus)(THIS_ VSS_PWSZ pwszVolume,IVssAsync **ppAsync) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssExamineWriterMetadata *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssExamineWriterMetadata *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssExamineWriterMetadata *This);
+
+ /*** IVssExamineWriterMetadata methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIdentity)(
+ IVssExamineWriterMetadata *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileCounts)(
+ IVssExamineWriterMetadata *This,
+ UINT *pcIncludeFiles,
+ UINT *pcExcludeFiles,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetIncludeFile)(
+ IVssExamineWriterMetadata *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetExcludeFile)(
+ IVssExamineWriterMetadata *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponent)(
+ IVssExamineWriterMetadata *This,
+ UINT iComponent,
+ IVssWMComponent **ppComponent);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreMethod)(
+ IVssExamineWriterMetadata *This,
+ VSS_RESTOREMETHOD_ENUM *pMethod,
+ BSTR *pbstrService,
+ BSTR *pbstrUserProcedure,
+ VSS_WRITERRESTORE_ENUM *pwriterRestore,
+ boolean *pbRebootRequired,
+ UINT *pcMappings);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
+ IVssExamineWriterMetadata *This,
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupSchema)(
+ IVssExamineWriterMetadata *This,
+ DWORD *pdwSchemaMask);
+
+ HRESULT (STDMETHODCALLTYPE *GetDocument)(
+ IVssExamineWriterMetadata *This,
+ IXMLDOMDocument **pDoc);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssExamineWriterMetadata *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *LoadFromXML)(
+ IVssExamineWriterMetadata *This,
+ BSTR bstrXML);
END_INTERFACE
+} IVssExamineWriterMetadataVtbl;
+
+interface IVssExamineWriterMetadata {
+ CONST_VTBL IVssExamineWriterMetadataVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssExamineWriterMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssExamineWriterMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssExamineWriterMetadata_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssExamineWriterMetadata methods ***/
+#define IVssExamineWriterMetadata_GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource) (This)->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource)
+#define IVssExamineWriterMetadata_GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents) (This)->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents)
+#define IVssExamineWriterMetadata_GetIncludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc)
+#define IVssExamineWriterMetadata_GetExcludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc)
+#define IVssExamineWriterMetadata_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
+#define IVssExamineWriterMetadata_GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings) (This)->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings)
+#define IVssExamineWriterMetadata_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
+#define IVssExamineWriterMetadata_GetBackupSchema(This,pdwSchemaMask) (This)->lpVtbl->GetBackupSchema(This,pdwSchemaMask)
+#define IVssExamineWriterMetadata_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
+#define IVssExamineWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#define IVssExamineWriterMetadata_LoadFromXML(This,bstrXML) (This)->lpVtbl->LoadFromXML(This,bstrXML)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_QueryInterface(IVssExamineWriterMetadata* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssExamineWriterMetadata_AddRef(IVssExamineWriterMetadata* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssExamineWriterMetadata_Release(IVssExamineWriterMetadata* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssExamineWriterMetadata methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetIdentity(IVssExamineWriterMetadata* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
+ return This->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetFileCounts(IVssExamineWriterMetadata* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
+ return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetIncludeFile(IVssExamineWriterMetadata* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetExcludeFile(IVssExamineWriterMetadata* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetComponent(IVssExamineWriterMetadata* This,UINT iComponent,IVssWMComponent **ppComponent) {
+ return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetRestoreMethod(IVssExamineWriterMetadata* This,VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwriterRestore,boolean *pbRebootRequired,UINT *pcMappings) {
+ return This->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetAlternateLocationMapping(IVssExamineWriterMetadata* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetBackupSchema(IVssExamineWriterMetadata* This,DWORD *pdwSchemaMask) {
+ return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_GetDocument(IVssExamineWriterMetadata* This,IXMLDOMDocument **pDoc) {
+ return This->lpVtbl->GetDocument(This,pDoc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_SaveAsXML(IVssExamineWriterMetadata* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadata_LoadFromXML(IVssExamineWriterMetadata* This,BSTR bstrXML) {
+ return This->lpVtbl->LoadFromXML(This,bstrXML);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssExamineWriterMetadata_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssExamineWriterMetadataEx interface
+ */
+#ifndef __IVssExamineWriterMetadataEx_INTERFACE_DEFINED__
+#define __IVssExamineWriterMetadataEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssExamineWriterMetadataEx, 0x0c0e5ec0, 0xca44, 0x472b, 0xb7,0x02, 0xe6,0x52,0xdb,0x1c,0x04,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0c0e5ec0-ca44-472b-b702-e652db1c0451")
+IVssExamineWriterMetadataEx : public IVssExamineWriterMetadata
+{
+ virtual HRESULT STDMETHODCALLTYPE GetIdentityEx(
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ BSTR *pbstrInstanceName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssExamineWriterMetadataEx, 0x0c0e5ec0, 0xca44, 0x472b, 0xb7,0x02, 0xe6,0x52,0xdb,0x1c,0x04,0x51)
+#endif
+#else
+typedef struct IVssExamineWriterMetadataExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssExamineWriterMetadataEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssExamineWriterMetadataEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssExamineWriterMetadataEx *This);
+
+ /*** IVssExamineWriterMetadata methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIdentity)(
+ IVssExamineWriterMetadataEx *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileCounts)(
+ IVssExamineWriterMetadataEx *This,
+ UINT *pcIncludeFiles,
+ UINT *pcExcludeFiles,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetIncludeFile)(
+ IVssExamineWriterMetadataEx *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetExcludeFile)(
+ IVssExamineWriterMetadataEx *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponent)(
+ IVssExamineWriterMetadataEx *This,
+ UINT iComponent,
+ IVssWMComponent **ppComponent);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreMethod)(
+ IVssExamineWriterMetadataEx *This,
+ VSS_RESTOREMETHOD_ENUM *pMethod,
+ BSTR *pbstrService,
+ BSTR *pbstrUserProcedure,
+ VSS_WRITERRESTORE_ENUM *pwriterRestore,
+ boolean *pbRebootRequired,
+ UINT *pcMappings);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
+ IVssExamineWriterMetadataEx *This,
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupSchema)(
+ IVssExamineWriterMetadataEx *This,
+ DWORD *pdwSchemaMask);
+
+ HRESULT (STDMETHODCALLTYPE *GetDocument)(
+ IVssExamineWriterMetadataEx *This,
+ IXMLDOMDocument **pDoc);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssExamineWriterMetadataEx *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *LoadFromXML)(
+ IVssExamineWriterMetadataEx *This,
+ BSTR bstrXML);
+
+ /*** IVssExamineWriterMetadataEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIdentityEx)(
+ IVssExamineWriterMetadataEx *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ BSTR *pbstrInstanceName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource);
+
+ END_INTERFACE
+} IVssExamineWriterMetadataExVtbl;
+
+interface IVssExamineWriterMetadataEx {
+ CONST_VTBL IVssExamineWriterMetadataExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssExamineWriterMetadataEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssExamineWriterMetadataEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssExamineWriterMetadataEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssExamineWriterMetadata methods ***/
+#define IVssExamineWriterMetadataEx_GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource) (This)->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource)
+#define IVssExamineWriterMetadataEx_GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents) (This)->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents)
+#define IVssExamineWriterMetadataEx_GetIncludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc)
+#define IVssExamineWriterMetadataEx_GetExcludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc)
+#define IVssExamineWriterMetadataEx_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
+#define IVssExamineWriterMetadataEx_GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings) (This)->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings)
+#define IVssExamineWriterMetadataEx_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
+#define IVssExamineWriterMetadataEx_GetBackupSchema(This,pdwSchemaMask) (This)->lpVtbl->GetBackupSchema(This,pdwSchemaMask)
+#define IVssExamineWriterMetadataEx_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
+#define IVssExamineWriterMetadataEx_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#define IVssExamineWriterMetadataEx_LoadFromXML(This,bstrXML) (This)->lpVtbl->LoadFromXML(This,bstrXML)
+/*** IVssExamineWriterMetadataEx methods ***/
+#define IVssExamineWriterMetadataEx_GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource) (This)->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_QueryInterface(IVssExamineWriterMetadataEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssExamineWriterMetadataEx_AddRef(IVssExamineWriterMetadataEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssExamineWriterMetadataEx_Release(IVssExamineWriterMetadataEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssExamineWriterMetadata methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetIdentity(IVssExamineWriterMetadataEx* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
+ return This->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetFileCounts(IVssExamineWriterMetadataEx* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
+ return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetIncludeFile(IVssExamineWriterMetadataEx* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetExcludeFile(IVssExamineWriterMetadataEx* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetComponent(IVssExamineWriterMetadataEx* This,UINT iComponent,IVssWMComponent **ppComponent) {
+ return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetRestoreMethod(IVssExamineWriterMetadataEx* This,VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwriterRestore,boolean *pbRebootRequired,UINT *pcMappings) {
+ return This->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetAlternateLocationMapping(IVssExamineWriterMetadataEx* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetBackupSchema(IVssExamineWriterMetadataEx* This,DWORD *pdwSchemaMask) {
+ return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetDocument(IVssExamineWriterMetadataEx* This,IXMLDOMDocument **pDoc) {
+ return This->lpVtbl->GetDocument(This,pDoc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_SaveAsXML(IVssExamineWriterMetadataEx* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_LoadFromXML(IVssExamineWriterMetadataEx* This,BSTR bstrXML) {
+ return This->lpVtbl->LoadFromXML(This,bstrXML);
+}
+/*** IVssExamineWriterMetadataEx methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx_GetIdentityEx(IVssExamineWriterMetadataEx* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,BSTR *pbstrInstanceName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
+ return This->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssExamineWriterMetadataEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssExamineWriterMetadataEx2 interface
+ */
+#ifndef __IVssExamineWriterMetadataEx2_INTERFACE_DEFINED__
+#define __IVssExamineWriterMetadataEx2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssExamineWriterMetadataEx2, 0xce115780, 0xa611, 0x431b, 0xb5,0x7f, 0xc3,0x83,0x03,0xab,0x6a,0xee);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ce115780-a611-431b-b57f-c38303ab6aee")
+IVssExamineWriterMetadataEx2 : public IVssExamineWriterMetadataEx
+{
+ virtual HRESULT STDMETHODCALLTYPE GetVersion(
+ DWORD *pdwMajorVersion,
+ DWORD *pdwMinorVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetExcludeFromSnapshotCount(
+ UINT *pcExcludedFromSnapshot) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetExcludeFromSnapshotFile(
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssExamineWriterMetadataEx2, 0xce115780, 0xa611, 0x431b, 0xb5,0x7f, 0xc3,0x83,0x03,0xab,0x6a,0xee)
+#endif
+#else
+typedef struct IVssExamineWriterMetadataEx2Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssExamineWriterMetadataEx2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssExamineWriterMetadataEx2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssExamineWriterMetadataEx2 *This);
+
+ /*** IVssExamineWriterMetadata methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIdentity)(
+ IVssExamineWriterMetadataEx2 *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileCounts)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT *pcIncludeFiles,
+ UINT *pcExcludeFiles,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetIncludeFile)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetExcludeFile)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponent)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT iComponent,
+ IVssWMComponent **ppComponent);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreMethod)(
+ IVssExamineWriterMetadataEx2 *This,
+ VSS_RESTOREMETHOD_ENUM *pMethod,
+ BSTR *pbstrService,
+ BSTR *pbstrUserProcedure,
+ VSS_WRITERRESTORE_ENUM *pwriterRestore,
+ boolean *pbRebootRequired,
+ UINT *pcMappings);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupSchema)(
+ IVssExamineWriterMetadataEx2 *This,
+ DWORD *pdwSchemaMask);
+
+ HRESULT (STDMETHODCALLTYPE *GetDocument)(
+ IVssExamineWriterMetadataEx2 *This,
+ IXMLDOMDocument **pDoc);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssExamineWriterMetadataEx2 *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *LoadFromXML)(
+ IVssExamineWriterMetadataEx2 *This,
+ BSTR bstrXML);
+
+ /*** IVssExamineWriterMetadataEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIdentityEx)(
+ IVssExamineWriterMetadataEx2 *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriterName,
+ BSTR *pbstrInstanceName,
+ VSS_USAGE_TYPE *pUsage,
+ VSS_SOURCE_TYPE *pSource);
+
+ /*** IVssExamineWriterMetadataEx2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetVersion)(
+ IVssExamineWriterMetadataEx2 *This,
+ DWORD *pdwMajorVersion,
+ DWORD *pdwMinorVersion);
+
+ HRESULT (STDMETHODCALLTYPE *GetExcludeFromSnapshotCount)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT *pcExcludedFromSnapshot);
+
+ HRESULT (STDMETHODCALLTYPE *GetExcludeFromSnapshotFile)(
+ IVssExamineWriterMetadataEx2 *This,
+ UINT iFile,
+ IVssWMFiledesc **ppFiledesc);
+
+ END_INTERFACE
+} IVssExamineWriterMetadataEx2Vtbl;
+
+interface IVssExamineWriterMetadataEx2 {
+ CONST_VTBL IVssExamineWriterMetadataEx2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssExamineWriterMetadataEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssExamineWriterMetadataEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssExamineWriterMetadataEx2_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssExamineWriterMetadata methods ***/
+#define IVssExamineWriterMetadataEx2_GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource) (This)->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource)
+#define IVssExamineWriterMetadataEx2_GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents) (This)->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents)
+#define IVssExamineWriterMetadataEx2_GetIncludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc)
+#define IVssExamineWriterMetadataEx2_GetExcludeFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc)
+#define IVssExamineWriterMetadataEx2_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
+#define IVssExamineWriterMetadataEx2_GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings) (This)->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings)
+#define IVssExamineWriterMetadataEx2_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
+#define IVssExamineWriterMetadataEx2_GetBackupSchema(This,pdwSchemaMask) (This)->lpVtbl->GetBackupSchema(This,pdwSchemaMask)
+#define IVssExamineWriterMetadataEx2_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
+#define IVssExamineWriterMetadataEx2_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#define IVssExamineWriterMetadataEx2_LoadFromXML(This,bstrXML) (This)->lpVtbl->LoadFromXML(This,bstrXML)
+/*** IVssExamineWriterMetadataEx methods ***/
+#define IVssExamineWriterMetadataEx2_GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource) (This)->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource)
+/*** IVssExamineWriterMetadataEx2 methods ***/
+#define IVssExamineWriterMetadataEx2_GetVersion(This,pdwMajorVersion,pdwMinorVersion) (This)->lpVtbl->GetVersion(This,pdwMajorVersion,pdwMinorVersion)
+#define IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot) (This)->lpVtbl->GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot)
+#define IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotFile(This,iFile,ppFiledesc) (This)->lpVtbl->GetExcludeFromSnapshotFile(This,iFile,ppFiledesc)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_QueryInterface(IVssExamineWriterMetadataEx2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssExamineWriterMetadataEx2_AddRef(IVssExamineWriterMetadataEx2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssExamineWriterMetadataEx2_Release(IVssExamineWriterMetadataEx2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssExamineWriterMetadata methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetIdentity(IVssExamineWriterMetadataEx2* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
+ return This->lpVtbl->GetIdentity(This,pidInstance,pidWriter,pbstrWriterName,pUsage,pSource);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetFileCounts(IVssExamineWriterMetadataEx2* This,UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) {
+ return This->lpVtbl->GetFileCounts(This,pcIncludeFiles,pcExcludeFiles,pcComponents);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetIncludeFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetIncludeFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetExcludeFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetExcludeFile(This,iFile,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetComponent(IVssExamineWriterMetadataEx2* This,UINT iComponent,IVssWMComponent **ppComponent) {
+ return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetRestoreMethod(IVssExamineWriterMetadataEx2* This,VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwriterRestore,boolean *pbRebootRequired,UINT *pcMappings) {
+ return This->lpVtbl->GetRestoreMethod(This,pMethod,pbstrService,pbstrUserProcedure,pwriterRestore,pbRebootRequired,pcMappings);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetAlternateLocationMapping(IVssExamineWriterMetadataEx2* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetBackupSchema(IVssExamineWriterMetadataEx2* This,DWORD *pdwSchemaMask) {
+ return This->lpVtbl->GetBackupSchema(This,pdwSchemaMask);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetDocument(IVssExamineWriterMetadataEx2* This,IXMLDOMDocument **pDoc) {
+ return This->lpVtbl->GetDocument(This,pDoc);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_SaveAsXML(IVssExamineWriterMetadataEx2* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_LoadFromXML(IVssExamineWriterMetadataEx2* This,BSTR bstrXML) {
+ return This->lpVtbl->LoadFromXML(This,bstrXML);
+}
+/*** IVssExamineWriterMetadataEx methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetIdentityEx(IVssExamineWriterMetadataEx2* This,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,BSTR *pbstrInstanceName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) {
+ return This->lpVtbl->GetIdentityEx(This,pidInstance,pidWriter,pbstrWriterName,pbstrInstanceName,pUsage,pSource);
+}
+/*** IVssExamineWriterMetadataEx2 methods ***/
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetVersion(IVssExamineWriterMetadataEx2* This,DWORD *pdwMajorVersion,DWORD *pdwMinorVersion) {
+ return This->lpVtbl->GetVersion(This,pdwMajorVersion,pdwMinorVersion);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotCount(IVssExamineWriterMetadataEx2* This,UINT *pcExcludedFromSnapshot) {
+ return This->lpVtbl->GetExcludeFromSnapshotCount(This,pcExcludedFromSnapshot);
+}
+static FORCEINLINE HRESULT IVssExamineWriterMetadataEx2_GetExcludeFromSnapshotFile(IVssExamineWriterMetadataEx2* This,UINT iFile,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetExcludeFromSnapshotFile(This,iFile,ppFiledesc);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssExamineWriterMetadataEx2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssWriterComponentsExt interface
+ */
+#ifndef __IVssWriterComponentsExt_INTERFACE_DEFINED__
+#define __IVssWriterComponentsExt_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssWriterComponentsExt, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssWriterComponentsExt : public IVssWriterComponents
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssWriterComponentsExt, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
+#endif
+#else
+typedef struct IVssWriterComponentsExtVtbl {
+ BEGIN_INTERFACE
+
+ /*** IVssWriterComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetComponentCount)(
+ IVssWriterComponentsExt *This,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterInfo)(
+ IVssWriterComponentsExt *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponent)(
+ IVssWriterComponentsExt *This,
+ UINT iComponent,
+ IVssComponent **ppComponent);
+
+ END_INTERFACE
+} IVssWriterComponentsExtVtbl;
+
+interface IVssWriterComponentsExt {
+ CONST_VTBL IVssWriterComponentsExtVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IVssWriterComponents methods ***/
+#define IVssWriterComponentsExt_GetComponentCount(This,pcComponents) (This)->lpVtbl->GetComponentCount(This,pcComponents)
+#define IVssWriterComponentsExt_GetWriterInfo(This,pidInstance,pidWriter) (This)->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter)
+#define IVssWriterComponentsExt_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
+#else
+/*** IVssWriterComponents methods ***/
+static FORCEINLINE HRESULT IVssWriterComponentsExt_GetComponentCount(IVssWriterComponentsExt* This,UINT *pcComponents) {
+ return This->lpVtbl->GetComponentCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssWriterComponentsExt_GetWriterInfo(IVssWriterComponentsExt* This,VSS_ID *pidInstance,VSS_ID *pidWriter) {
+ return This->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter);
+}
+static FORCEINLINE HRESULT IVssWriterComponentsExt_GetComponent(IVssWriterComponentsExt* This,UINT iComponent,IVssComponent **ppComponent) {
+ return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssWriterComponentsExt_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssBackupComponents interface
+ */
+#ifndef __IVssBackupComponents_INTERFACE_DEFINED__
+#define __IVssBackupComponents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssBackupComponents, 0x665c1d5f, 0xc218, 0x414d, 0xa0,0x5d, 0x7f,0xef,0x5f,0x9d,0x5c,0x86);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("665c1d5f-c218-414d-a05d-7fef5f9d5c86")
+IVssBackupComponents : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetWriterComponentsCount(
+ UINT *pcComponents) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWriterComponents(
+ UINT iWriter,
+ IVssWriterComponentsExt **ppWriter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitializeForBackup(
+ BSTR bstrXML = 0) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupState(
+ boolean bSelectComponents,
+ boolean bBackupBootableSystemState,
+ VSS_BACKUP_TYPE backupType,
+ boolean bPartialFileSupport = 0) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitializeForRestore(
+ BSTR bstrXML) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreState(
+ VSS_RESTORE_TYPE restoreType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GatherWriterMetadata(
+ IVssAsync **pAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWriterMetadataCount(
+ UINT *pcWriters) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWriterMetadata(
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadata **ppMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeWriterMetadata(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddComponent(
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PrepareForBackup(
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AbortBackup(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GatherWriterStatus(
+ IVssAsync **pAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWriterStatusCount(
+ UINT *pcWriters) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeWriterStatus(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWriterStatus(
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phResultFailure) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupSucceeded(
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSucceded) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupOptions(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszBackupOptions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSelectedForRestore(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreOptions(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreOptions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAdditionalRestores(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAdditionalRestores) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPreviousBackupStamp(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPreviousBackupStamp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
+ BSTR *pbstrXML) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BackupComplete(
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddAlternativeLocationMapping(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddRestoreSubcomponent(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszSubComponentLogicalPath,
+ LPCWSTR wszSubComponentName,
+ boolean bRepair) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFileRestoreStatus(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_FILE_RESTORE_STATUS status) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddNewTarget(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFileName,
+ boolean bRecursive,
+ LPCWSTR wszAlternatePath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRangesFilePath(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ UINT iPartialFile,
+ LPCWSTR wszRangesFile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PreRestore(
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostRestore(
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetContext(
+ LONG lContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StartSnapshotSet(
+ VSS_ID *pSnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddToSnapshotSet(
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ VSS_ID *pidSnapshot) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DoSnapshotSet(
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteSnapshots(
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ImportSnapshots(
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BreakSnapshotSet(
+ VSS_ID SnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSnapshotProperties(
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Query(
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsVolumeSupported(
+ VSS_ID ProviderId,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DisableWriterClasses(
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableWriterClasses(
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DisableWriterInstances(
+ const VSS_ID *rgWriterInstanceId,
+ UINT cInstanceId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ExposeSnapshot(
+ VSS_ID SnapshotId,
+ VSS_PWSZ wszPathFromRoot,
+ LONG lAttributes,
+ VSS_PWSZ wszExpose,
+ VSS_PWSZ *pwszExposed) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevertToSnapshot(
+ VSS_ID SnapshotId,
+ WINBOOL bForceDismount) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryRevertStatus(
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssBackupComponents, 0x665c1d5f, 0xc218, 0x414d, 0xa0,0x5d, 0x7f,0xef,0x5f,0x9d,0x5c,0x86)
+#endif
+#else
+typedef struct IVssBackupComponentsVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssBackupComponents *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssBackupComponents *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssBackupComponents *This);
+
+ /*** IVssBackupComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
+ IVssBackupComponents *This,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
+ IVssBackupComponents *This,
+ UINT iWriter,
+ IVssWriterComponentsExt **ppWriter);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
+ IVssBackupComponents *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupState)(
+ IVssBackupComponents *This,
+ boolean bSelectComponents,
+ boolean bBackupBootableSystemState,
+ VSS_BACKUP_TYPE backupType,
+ boolean bPartialFileSupport);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
+ IVssBackupComponents *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
+ IVssBackupComponents *This,
+ VSS_RESTORE_TYPE restoreType);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
+ IVssBackupComponents *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
+ IVssBackupComponents *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
+ IVssBackupComponents *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadata **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
+ IVssBackupComponents *This);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssBackupComponents *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
+ IVssBackupComponents *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AbortBackup)(
+ IVssBackupComponents *This);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
+ IVssBackupComponents *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
+ IVssBackupComponents *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
+ IVssBackupComponents *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
+ IVssBackupComponents *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phResultFailure);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
+ IVssBackupComponents *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSucceded);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPreviousBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssBackupComponents *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *BackupComplete)(
+ IVssBackupComponents *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszSubComponentLogicalPath,
+ LPCWSTR wszSubComponentName,
+ boolean bRepair);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_FILE_RESTORE_STATUS status);
+
+ HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFileName,
+ boolean bRecursive,
+ LPCWSTR wszAlternatePath);
+
+ HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
+ IVssBackupComponents *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ UINT iPartialFile,
+ LPCWSTR wszRangesFile);
+
+ HRESULT (STDMETHODCALLTYPE *PreRestore)(
+ IVssBackupComponents *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PostRestore)(
+ IVssBackupComponents *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssBackupComponents *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
+ IVssBackupComponents *This,
+ VSS_ID *pSnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
+ IVssBackupComponents *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ VSS_ID *pidSnapshot);
+
+ HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
+ IVssBackupComponents *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssBackupComponents *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
+ IVssBackupComponents *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
+ IVssBackupComponents *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssBackupComponents *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssBackupComponents *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
+ IVssBackupComponents *This,
+ VSS_ID ProviderId,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
+ IVssBackupComponents *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
+ IVssBackupComponents *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
+ IVssBackupComponents *This,
+ const VSS_ID *rgWriterInstanceId,
+ UINT cInstanceId);
+
+ HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
+ IVssBackupComponents *This,
+ VSS_ID SnapshotId,
+ VSS_PWSZ wszPathFromRoot,
+ LONG lAttributes,
+ VSS_PWSZ wszExpose,
+ VSS_PWSZ *pwszExposed);
+
+ HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
+ IVssBackupComponents *This,
+ VSS_ID SnapshotId,
+ WINBOOL bForceDismount);
+
+ HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
+ IVssBackupComponents *This,
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync);
+
+ END_INTERFACE
+} IVssBackupComponentsVtbl;
+
+interface IVssBackupComponents {
+ CONST_VTBL IVssBackupComponentsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssBackupComponents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssBackupComponents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssBackupComponents_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssBackupComponents methods ***/
#define IVssBackupComponents_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
-#define IVssBackupComponents_GetWriterComponents(This,iWriter,pWriterComponents) (This)->lpVtbl->GetWriterComponents(This,iWriter,pWriterComponents)
+#define IVssBackupComponents_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
#define IVssBackupComponents_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
#define IVssBackupComponents_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
#define IVssBackupComponents_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
#define IVssBackupComponents_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
-#define IVssBackupComponents_GatherWriterMetadata(This,ppAsync) (This)->lpVtbl->GatherWriterMetadata(This,ppAsync)
+#define IVssBackupComponents_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
#define IVssBackupComponents_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
-#define IVssBackupComponents_GetWriterMetadata(This,iWriter,pidWriterInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidWriterInstance,ppMetadata)
-#define IVssBackupComponents_FreeWriterMetadata() (This)->lpVtbl->FreeWriterMetadata(This)
-#define IVssBackupComponents_AddComponent(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName)
+#define IVssBackupComponents_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponents_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
+#define IVssBackupComponents_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
#define IVssBackupComponents_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
-#define IVssBackupComponents_AbortBackup() (This)->lpVtbl->AbortBackup(This)
-#define IVssBackupComponents_GatherWriterStatus(This,ppAsync) (This)->lpVtbl->GatherWriterStatus(This,ppAsync)
+#define IVssBackupComponents_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
+#define IVssBackupComponents_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
#define IVssBackupComponents_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
-#define IVssBackupComponents_FreeWriterStatus() (This)->lpVtbl->FreeWriterStatus(This)
-#define IVssBackupComponents_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pState,pHrResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pState,pHrResultFailure)
-#define IVssBackupComponents_SetBackupSucceeded(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName,bSucceeded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName,bSucceeded)
-#define IVssBackupComponents_SetBackupOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszBackupOptions)
-#define IVssBackupComponents_SetSelectedForRestore(This,writerId,componentType,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,componentType,wszLogicalPath,wszComponentName,bSelectedForRestore)
-#define IVssBackupComponents_SetRestoreOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszRestoreOptions)
-#define IVssBackupComponents_SetAdditionalRestores(This,writerId,componentType,wszLogicalPath,wszComponentName,bAdditionalResources) (This)->lpVtbl->SetAdditionalRestores(This,writerId,componentType,wszLogicalPath,wszComponentName,bAdditionalResources)
-#define IVssBackupComponents_SetPreviousBackupStamp(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
+#define IVssBackupComponents_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
+#define IVssBackupComponents_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
+#define IVssBackupComponents_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
+#define IVssBackupComponents_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
+#define IVssBackupComponents_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
+#define IVssBackupComponents_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
+#define IVssBackupComponents_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
+#define IVssBackupComponents_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
#define IVssBackupComponents_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
#define IVssBackupComponents_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
#define IVssBackupComponents_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
#define IVssBackupComponents_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
-#define IVssBackupComponents_SetFileRestoreStatus(This,writerId,componentType,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,componentType,wszLogicalPath,wszComponentName,status)
+#define IVssBackupComponents_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
#define IVssBackupComponents_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
#define IVssBackupComponents_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
#define IVssBackupComponents_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
@@ -221,113 +1577,552 @@ DECLARE_INTERFACE_(IVssBackupComponents,IUnknown)
#define IVssBackupComponents_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
#define IVssBackupComponents_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
#define IVssBackupComponents_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssBackupComponents_QueryInterface(IVssBackupComponents* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssBackupComponents_AddRef(IVssBackupComponents* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssBackupComponents_Release(IVssBackupComponents* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssBackupComponents methods ***/
+static FORCEINLINE HRESULT IVssBackupComponents_GetWriterComponentsCount(IVssBackupComponents* This,UINT *pcComponents) {
+ return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GetWriterComponents(IVssBackupComponents* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
+ return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_InitializeForBackup(IVssBackupComponents* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForBackup(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetBackupState(IVssBackupComponents* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
+ return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_InitializeForRestore(IVssBackupComponents* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForRestore(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetRestoreState(IVssBackupComponents* This,VSS_RESTORE_TYPE restoreType) {
+ return This->lpVtbl->SetRestoreState(This,restoreType);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GatherWriterMetadata(IVssBackupComponents* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterMetadata(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GetWriterMetadataCount(IVssBackupComponents* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GetWriterMetadata(IVssBackupComponents* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_FreeWriterMetadata(IVssBackupComponents* This) {
+ return This->lpVtbl->FreeWriterMetadata(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_AddComponent(IVssBackupComponents* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
+ return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_PrepareForBackup(IVssBackupComponents* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PrepareForBackup(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_AbortBackup(IVssBackupComponents* This) {
+ return This->lpVtbl->AbortBackup(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GatherWriterStatus(IVssBackupComponents* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterStatus(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GetWriterStatusCount(IVssBackupComponents* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_FreeWriterStatus(IVssBackupComponents* This) {
+ return This->lpVtbl->FreeWriterStatus(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GetWriterStatus(IVssBackupComponents* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
+ return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetBackupSucceeded(IVssBackupComponents* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
+ return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetBackupOptions(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
+ return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetSelectedForRestore(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
+ return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetRestoreOptions(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
+ return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetAdditionalRestores(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
+ return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetPreviousBackupStamp(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
+ return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SaveAsXML(IVssBackupComponents* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_BackupComplete(IVssBackupComponents* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->BackupComplete(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_AddAlternativeLocationMapping(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_AddRestoreSubcomponent(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
+ return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetFileRestoreStatus(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
+ return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_AddNewTarget(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
+ return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetRangesFilePath(IVssBackupComponents* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
+ return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_PreRestore(IVssBackupComponents* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_PostRestore(IVssBackupComponents* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PostRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_SetContext(IVssBackupComponents* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_StartSnapshotSet(IVssBackupComponents* This,VSS_ID *pSnapshotSetId) {
+ return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_AddToSnapshotSet(IVssBackupComponents* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
+ return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_DoSnapshotSet(IVssBackupComponents* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->DoSnapshotSet(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_DeleteSnapshots(IVssBackupComponents* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_ImportSnapshots(IVssBackupComponents* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->ImportSnapshots(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_BreakSnapshotSet(IVssBackupComponents* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_GetSnapshotProperties(IVssBackupComponents* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_Query(IVssBackupComponents* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_IsVolumeSupported(IVssBackupComponents* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_DisableWriterClasses(IVssBackupComponents* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_EnableWriterClasses(IVssBackupComponents* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_DisableWriterInstances(IVssBackupComponents* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
+ return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_ExposeSnapshot(IVssBackupComponents* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
+ return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_RevertToSnapshot(IVssBackupComponents* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
+ return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
+}
+static FORCEINLINE HRESULT IVssBackupComponents_QueryRevertStatus(IVssBackupComponents* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
+}
+#endif
+#endif
-#if (_WIN32_WINNT >= 0x0600)
-#undef INTERFACE
-#define INTERFACE IVssBackupComponentsEx
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssBackupComponentsEx,IVssBackupComponents)
+
+
+#endif /* __IVssBackupComponents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssBackupComponentsEx interface
+ */
+#ifndef __IVssBackupComponentsEx_INTERFACE_DEFINED__
+#define __IVssBackupComponentsEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssBackupComponentsEx, 0x963f03ad, 0x9e4c, 0x4a34, 0xac,0x15, 0xe4,0xb6,0x17,0x4e,0x50,0x36);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("963f03ad-9e4c-4a34-ac15-e4b6174e5036")
+IVssBackupComponentsEx : public IVssBackupComponents
{
+ virtual HRESULT STDMETHODCALLTYPE GetWriterMetadataEx(
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadataEx **ppMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSelectedForRestoreEx(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore,
+ VSS_ID instanceId) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssBackupComponentsEx, 0x963f03ad, 0x9e4c, 0x4a34, 0xac,0x15, 0xe4,0xb6,0x17,0x4e,0x50,0x36)
+#endif
+#else
+typedef struct IVssBackupComponentsExVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssBackupComponents methods */
- STDMETHOD_(HRESULT,GetWriterComponentsCount)(THIS_ UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetWriterComponents)(THIS_ UINT iWriter,IVssWriterComponentsExt **pWriterComponents) PURE;
- STDMETHOD_(HRESULT,InitializeForBackup)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupState)(THIS_ BOOLEAN bSelectComponents,BOOLEAN bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,BOOLEAN bPartialFileSupport) PURE;
- STDMETHOD_(HRESULT,InitializeForRestore)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetRestoreState)(THIS_ VSS_RESTORE_TYPE restoreType) PURE;
- STDMETHOD_(HRESULT,GatherWriterMetadata)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadataCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadata)(THIS_ UINT iWriter,VSS_ID *pidWriterInstance,IVssExamineWriterMetadata **ppMetadata) PURE;
- STDMETHOD_(HRESULT,FreeWriterMetadata)(THIS) PURE;
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) PURE;
- STDMETHOD_(HRESULT,PrepareForBackup)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AbortBackup)(THIS) PURE;
- STDMETHOD_(HRESULT,GatherWriterStatus)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterStatusCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,FreeWriterStatus)(THIS) PURE;
- STDMETHOD_(HRESULT,GetWriterStatus)(THIS_ UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pState,HRESULT *pHrResultFailure) PURE;
- STDMETHOD_(HRESULT,SetBackupSucceeded)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSucceeded) PURE;
- STDMETHOD_(HRESULT,SetBackupOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestore)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,SetRestoreOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) PURE;
- STDMETHOD_(HRESULT,SetAdditionalRestores)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bAdditionalResources) PURE;
- STDMETHOD_(HRESULT,SetPreviousBackupStamp)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,BackupComplete)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AddAlternativeLocationMapping)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE;
- STDMETHOD_(HRESULT,AddRestoreSubcomponent)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,BOOLEAN bRepair) PURE;
- STDMETHOD_(HRESULT,SetFileRestoreStatus)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) PURE;
- STDMETHOD_(HRESULT,AddNewTarget)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,BOOLEAN bRecursive,LPCWSTR wszAlternatePath) PURE;
- STDMETHOD_(HRESULT,SetRangesFilePath)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) PURE;
- STDMETHOD_(HRESULT,PreRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,PostRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,SetContext)(THIS_ LONG lContext) PURE;
- STDMETHOD_(HRESULT,StartSnapshotSet)(THIS_ VSS_ID *pSnapshotSetId) PURE;
- STDMETHOD_(HRESULT,AddToSnapshotSet)(THIS_ VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) PURE;
- STDMETHOD_(HRESULT,DoSnapshotSet)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,DeleteSnapshots)(THIS_ VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,BOOLEAN bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) PURE;
- STDMETHOD_(HRESULT,ImportSnapshots)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,BreakSnapshotSet)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,GetSnapshotProperties)(THIS_ VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) PURE;
- STDMETHOD_(HRESULT,Query)(THIS_ VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,IsVolumeSupported)(THIS_ VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,BOOLEAN *pbSupportedByThisProvider) PURE;
- STDMETHOD_(HRESULT,DisableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,EnableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,DisableWriterInstances)(THIS_ const VSS_ID *rgWriterInstanceId,UINT cInstanceId) PURE;
- STDMETHOD_(HRESULT,ExposeSnapshot)(THIS_ VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) PURE;
- STDMETHOD_(HRESULT,RevertToSnapshot)(THIS_ VSS_ID SnapshotId,BOOLEAN bForceDismount) PURE;
- STDMETHOD_(HRESULT,QueryRevertStatus)(THIS_ VSS_PWSZ pwszVolume,IVssAsync **ppAsync) PURE;
-
- /* IVssBackupComponentsEx methods */
- STDMETHOD_(HRESULT,GetWriterMetadataEx)(THIS_ UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestoreEx)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore,VSS_ID instanceId) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssBackupComponentsEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssBackupComponentsEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssBackupComponentsEx *This);
+
+ /*** IVssBackupComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
+ IVssBackupComponentsEx *This,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
+ IVssBackupComponentsEx *This,
+ UINT iWriter,
+ IVssWriterComponentsExt **ppWriter);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
+ IVssBackupComponentsEx *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupState)(
+ IVssBackupComponentsEx *This,
+ boolean bSelectComponents,
+ boolean bBackupBootableSystemState,
+ VSS_BACKUP_TYPE backupType,
+ boolean bPartialFileSupport);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
+ IVssBackupComponentsEx *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
+ IVssBackupComponentsEx *This,
+ VSS_RESTORE_TYPE restoreType);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
+ IVssBackupComponentsEx *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
+ IVssBackupComponentsEx *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadata **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
+ IVssBackupComponentsEx *This);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssBackupComponentsEx *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AbortBackup)(
+ IVssBackupComponentsEx *This);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
+ IVssBackupComponentsEx *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
+ IVssBackupComponentsEx *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
+ IVssBackupComponentsEx *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phResultFailure);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
+ IVssBackupComponentsEx *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSucceded);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPreviousBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssBackupComponentsEx *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *BackupComplete)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszSubComponentLogicalPath,
+ LPCWSTR wszSubComponentName,
+ boolean bRepair);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_FILE_RESTORE_STATUS status);
+
+ HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFileName,
+ boolean bRecursive,
+ LPCWSTR wszAlternatePath);
+
+ HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ UINT iPartialFile,
+ LPCWSTR wszRangesFile);
+
+ HRESULT (STDMETHODCALLTYPE *PreRestore)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PostRestore)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssBackupComponentsEx *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
+ IVssBackupComponentsEx *This,
+ VSS_ID *pSnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
+ IVssBackupComponentsEx *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ VSS_ID *pidSnapshot);
+
+ HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssBackupComponentsEx *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
+ IVssBackupComponentsEx *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
+ IVssBackupComponentsEx *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssBackupComponentsEx *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssBackupComponentsEx *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
+ IVssBackupComponentsEx *This,
+ VSS_ID ProviderId,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
+ IVssBackupComponentsEx *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
+ IVssBackupComponentsEx *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
+ IVssBackupComponentsEx *This,
+ const VSS_ID *rgWriterInstanceId,
+ UINT cInstanceId);
+
+ HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
+ IVssBackupComponentsEx *This,
+ VSS_ID SnapshotId,
+ VSS_PWSZ wszPathFromRoot,
+ LONG lAttributes,
+ VSS_PWSZ wszExpose,
+ VSS_PWSZ *pwszExposed);
+
+ HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
+ IVssBackupComponentsEx *This,
+ VSS_ID SnapshotId,
+ WINBOOL bForceDismount);
+
+ HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
+ IVssBackupComponentsEx *This,
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync);
+
+ /*** IVssBackupComponentsEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
+ IVssBackupComponentsEx *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadataEx **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
+ IVssBackupComponentsEx *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore,
+ VSS_ID instanceId);
END_INTERFACE
+} IVssBackupComponentsExVtbl;
+
+interface IVssBackupComponentsEx {
+ CONST_VTBL IVssBackupComponentsExVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssBackupComponentsEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssBackupComponentsEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssBackupComponentsEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssBackupComponents methods ***/
#define IVssBackupComponentsEx_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
-#define IVssBackupComponentsEx_GetWriterComponents(This,iWriter,pWriterComponents) (This)->lpVtbl->GetWriterComponents(This,iWriter,pWriterComponents)
+#define IVssBackupComponentsEx_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
#define IVssBackupComponentsEx_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
#define IVssBackupComponentsEx_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
#define IVssBackupComponentsEx_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
#define IVssBackupComponentsEx_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
-#define IVssBackupComponentsEx_GatherWriterMetadata(This,ppAsync) (This)->lpVtbl->GatherWriterMetadata(This,ppAsync)
+#define IVssBackupComponentsEx_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
#define IVssBackupComponentsEx_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
-#define IVssBackupComponentsEx_GetWriterMetadata(This,iWriter,pidWriterInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidWriterInstance,ppMetadata)
-#define IVssBackupComponentsEx_FreeWriterMetadata() (This)->lpVtbl->FreeWriterMetadata(This)
-#define IVssBackupComponentsEx_AddComponent(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName)
+#define IVssBackupComponentsEx_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponentsEx_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
+#define IVssBackupComponentsEx_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
#define IVssBackupComponentsEx_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
-#define IVssBackupComponentsEx_AbortBackup() (This)->lpVtbl->AbortBackup(This)
-#define IVssBackupComponentsEx_GatherWriterStatus(This,ppAsync) (This)->lpVtbl->GatherWriterStatus(This,ppAsync)
+#define IVssBackupComponentsEx_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
+#define IVssBackupComponentsEx_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
#define IVssBackupComponentsEx_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
-#define IVssBackupComponentsEx_FreeWriterStatus() (This)->lpVtbl->FreeWriterStatus(This)
-#define IVssBackupComponentsEx_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pState,pHrResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pState,pHrResultFailure)
-#define IVssBackupComponentsEx_SetBackupSucceeded(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName,bSucceeded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName,bSucceeded)
-#define IVssBackupComponentsEx_SetBackupOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszBackupOptions)
-#define IVssBackupComponentsEx_SetSelectedForRestore(This,writerId,componentType,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,componentType,wszLogicalPath,wszComponentName,bSelectedForRestore)
-#define IVssBackupComponentsEx_SetRestoreOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszRestoreOptions)
-#define IVssBackupComponentsEx_SetAdditionalRestores(This,writerId,componentType,wszLogicalPath,wszComponentName,bAdditionalResources) (This)->lpVtbl->SetAdditionalRestores(This,writerId,componentType,wszLogicalPath,wszComponentName,bAdditionalResources)
-#define IVssBackupComponentsEx_SetPreviousBackupStamp(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
+#define IVssBackupComponentsEx_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
+#define IVssBackupComponentsEx_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
+#define IVssBackupComponentsEx_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
+#define IVssBackupComponentsEx_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
+#define IVssBackupComponentsEx_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
+#define IVssBackupComponentsEx_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
+#define IVssBackupComponentsEx_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
+#define IVssBackupComponentsEx_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
#define IVssBackupComponentsEx_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
#define IVssBackupComponentsEx_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
#define IVssBackupComponentsEx_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
#define IVssBackupComponentsEx_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
-#define IVssBackupComponentsEx_SetFileRestoreStatus(This,writerId,componentType,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,componentType,wszLogicalPath,wszComponentName,status)
+#define IVssBackupComponentsEx_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
#define IVssBackupComponentsEx_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
#define IVssBackupComponentsEx_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
#define IVssBackupComponentsEx_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
@@ -348,123 +2143,637 @@ DECLARE_INTERFACE_(IVssBackupComponentsEx,IVssBackupComponents)
#define IVssBackupComponentsEx_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
#define IVssBackupComponentsEx_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
#define IVssBackupComponentsEx_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
+/*** IVssBackupComponentsEx methods ***/
#define IVssBackupComponentsEx_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
#define IVssBackupComponentsEx_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx_QueryInterface(IVssBackupComponentsEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx_AddRef(IVssBackupComponentsEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx_Release(IVssBackupComponentsEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssBackupComponents methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterComponentsCount(IVssBackupComponentsEx* This,UINT *pcComponents) {
+ return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterComponents(IVssBackupComponentsEx* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
+ return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_InitializeForBackup(IVssBackupComponentsEx* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForBackup(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetBackupState(IVssBackupComponentsEx* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
+ return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_InitializeForRestore(IVssBackupComponentsEx* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForRestore(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetRestoreState(IVssBackupComponentsEx* This,VSS_RESTORE_TYPE restoreType) {
+ return This->lpVtbl->SetRestoreState(This,restoreType);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GatherWriterMetadata(IVssBackupComponentsEx* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterMetadata(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterMetadataCount(IVssBackupComponentsEx* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterMetadata(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_FreeWriterMetadata(IVssBackupComponentsEx* This) {
+ return This->lpVtbl->FreeWriterMetadata(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_AddComponent(IVssBackupComponentsEx* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
+ return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_PrepareForBackup(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PrepareForBackup(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_AbortBackup(IVssBackupComponentsEx* This) {
+ return This->lpVtbl->AbortBackup(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GatherWriterStatus(IVssBackupComponentsEx* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterStatus(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterStatusCount(IVssBackupComponentsEx* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_FreeWriterStatus(IVssBackupComponentsEx* This) {
+ return This->lpVtbl->FreeWriterStatus(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterStatus(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
+ return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetBackupSucceeded(IVssBackupComponentsEx* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
+ return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetBackupOptions(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
+ return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetSelectedForRestore(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
+ return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetRestoreOptions(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
+ return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetAdditionalRestores(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
+ return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetPreviousBackupStamp(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
+ return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SaveAsXML(IVssBackupComponentsEx* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_BackupComplete(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->BackupComplete(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_AddAlternativeLocationMapping(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_AddRestoreSubcomponent(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
+ return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetFileRestoreStatus(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
+ return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_AddNewTarget(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
+ return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetRangesFilePath(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
+ return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_PreRestore(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_PostRestore(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PostRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetContext(IVssBackupComponentsEx* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_StartSnapshotSet(IVssBackupComponentsEx* This,VSS_ID *pSnapshotSetId) {
+ return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_AddToSnapshotSet(IVssBackupComponentsEx* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
+ return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_DoSnapshotSet(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->DoSnapshotSet(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_DeleteSnapshots(IVssBackupComponentsEx* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_ImportSnapshots(IVssBackupComponentsEx* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->ImportSnapshots(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_BreakSnapshotSet(IVssBackupComponentsEx* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetSnapshotProperties(IVssBackupComponentsEx* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_Query(IVssBackupComponentsEx* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_IsVolumeSupported(IVssBackupComponentsEx* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_DisableWriterClasses(IVssBackupComponentsEx* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_EnableWriterClasses(IVssBackupComponentsEx* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_DisableWriterInstances(IVssBackupComponentsEx* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
+ return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_ExposeSnapshot(IVssBackupComponentsEx* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
+ return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_RevertToSnapshot(IVssBackupComponentsEx* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
+ return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_QueryRevertStatus(IVssBackupComponentsEx* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
+}
+/*** IVssBackupComponentsEx methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx_GetWriterMetadataEx(IVssBackupComponentsEx* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx_SetSelectedForRestoreEx(IVssBackupComponentsEx* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
+ return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
+}
+#endif
+#endif
-#undef INTERFACE
-#define INTERFACE IVssBackupComponentsEx2
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssBackupComponentsEx2,IVssBackupComponentsEx)
+
+
+#endif /* __IVssBackupComponentsEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssBackupComponentsEx2 interface
+ */
+#ifndef __IVssBackupComponentsEx2_INTERFACE_DEFINED__
+#define __IVssBackupComponentsEx2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssBackupComponentsEx2, 0xacfe2b3a, 0x22c9, 0x4ef8, 0xbd,0x03, 0x2f,0x9c,0xa2,0x30,0x08,0x4e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("acfe2b3a-22c9-4ef8-bd03-2f9ca230084e")
+IVssBackupComponentsEx2 : public IVssBackupComponentsEx
{
+ virtual HRESULT STDMETHODCALLTYPE UnexposeSnapshot(
+ VSS_ID snapshotId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAuthoritativeRestore(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAuth) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRollForward(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_ROLLFORWARD_TYPE rollType,
+ LPCWSTR wszRollForwardPoint) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreName(
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BreakSnapshotSetEx(
+ VSS_ID SnapshotSetID,
+ DWORD dwBreakFlags,
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PreFastRecovery(
+ VSS_ID SnapshotSetID,
+ DWORD dwPreFastRecoveryFlags,
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FastRecovery(
+ VSS_ID SnapshotSetID,
+ DWORD dwFastRecoveryFlags,
+ IVssAsync **ppAsync) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssBackupComponentsEx2, 0xacfe2b3a, 0x22c9, 0x4ef8, 0xbd,0x03, 0x2f,0x9c,0xa2,0x30,0x08,0x4e)
+#endif
+#else
+typedef struct IVssBackupComponentsEx2Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssBackupComponents methods */
- STDMETHOD_(HRESULT,GetWriterComponentsCount)(THIS_ UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetWriterComponents)(THIS_ UINT iWriter,IVssWriterComponentsExt **pWriterComponents) PURE;
- STDMETHOD_(HRESULT,InitializeForBackup)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupState)(THIS_ BOOLEAN bSelectComponents,BOOLEAN bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,BOOLEAN bPartialFileSupport) PURE;
- STDMETHOD_(HRESULT,InitializeForRestore)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetRestoreState)(THIS_ VSS_RESTORE_TYPE restoreType) PURE;
- STDMETHOD_(HRESULT,GatherWriterMetadata)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadataCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadata)(THIS_ UINT iWriter,VSS_ID *pidWriterInstance,IVssExamineWriterMetadata **ppMetadata) PURE;
- STDMETHOD_(HRESULT,FreeWriterMetadata)(THIS) PURE;
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) PURE;
- STDMETHOD_(HRESULT,PrepareForBackup)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AbortBackup)(THIS) PURE;
- STDMETHOD_(HRESULT,GatherWriterStatus)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterStatusCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,FreeWriterStatus)(THIS) PURE;
- STDMETHOD_(HRESULT,GetWriterStatus)(THIS_ UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pState,HRESULT *pHrResultFailure) PURE;
- STDMETHOD_(HRESULT,SetBackupSucceeded)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSucceeded) PURE;
- STDMETHOD_(HRESULT,SetBackupOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestore)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,SetRestoreOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) PURE;
- STDMETHOD_(HRESULT,SetAdditionalRestores)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bAdditionalResources) PURE;
- STDMETHOD_(HRESULT,SetPreviousBackupStamp)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,BackupComplete)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AddAlternativeLocationMapping)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE;
- STDMETHOD_(HRESULT,AddRestoreSubcomponent)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,BOOLEAN bRepair) PURE;
- STDMETHOD_(HRESULT,SetFileRestoreStatus)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) PURE;
- STDMETHOD_(HRESULT,AddNewTarget)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,BOOLEAN bRecursive,LPCWSTR wszAlternatePath) PURE;
- STDMETHOD_(HRESULT,SetRangesFilePath)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) PURE;
- STDMETHOD_(HRESULT,PreRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,PostRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,SetContext)(THIS_ LONG lContext) PURE;
- STDMETHOD_(HRESULT,StartSnapshotSet)(THIS_ VSS_ID *pSnapshotSetId) PURE;
- STDMETHOD_(HRESULT,AddToSnapshotSet)(THIS_ VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) PURE;
- STDMETHOD_(HRESULT,DoSnapshotSet)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,DeleteSnapshots)(THIS_ VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,BOOLEAN bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) PURE;
- STDMETHOD_(HRESULT,ImportSnapshots)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,BreakSnapshotSet)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,GetSnapshotProperties)(THIS_ VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) PURE;
- STDMETHOD_(HRESULT,Query)(THIS_ VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,IsVolumeSupported)(THIS_ VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,BOOLEAN *pbSupportedByThisProvider) PURE;
- STDMETHOD_(HRESULT,DisableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,EnableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,DisableWriterInstances)(THIS_ const VSS_ID *rgWriterInstanceId,UINT cInstanceId) PURE;
- STDMETHOD_(HRESULT,ExposeSnapshot)(THIS_ VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) PURE;
- STDMETHOD_(HRESULT,RevertToSnapshot)(THIS_ VSS_ID SnapshotId,BOOLEAN bForceDismount) PURE;
- STDMETHOD_(HRESULT,QueryRevertStatus)(THIS_ VSS_PWSZ pwszVolume,IVssAsync **ppAsync) PURE;
-
- /* IVssBackupComponentsEx methods */
- STDMETHOD_(HRESULT,GetWriterMetadataEx)(THIS_ UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestoreEx)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore,VSS_ID instanceId) PURE;
-
- /* IVssBackupComponentsEx2 methods */
- STDMETHOD_(HRESULT,UnexposeSnapshot)(THIS_ VSS_ID snapshotId) PURE;
- STDMETHOD_(HRESULT,SetAuthoritativeRestore)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bAuth) PURE;
- STDMETHOD_(HRESULT,SetRollForward)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) PURE;
- STDMETHOD_(HRESULT,SetRestoreName)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) PURE;
- STDMETHOD_(HRESULT,BreakSnapshotSetEx)(THIS_ VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,PreFastRecovery)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,FastRecovery)(THIS) PURE; /*Unsupported*/
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssBackupComponentsEx2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssBackupComponentsEx2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssBackupComponentsEx2 *This);
+
+ /*** IVssBackupComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
+ IVssBackupComponentsEx2 *This,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
+ IVssBackupComponentsEx2 *This,
+ UINT iWriter,
+ IVssWriterComponentsExt **ppWriter);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
+ IVssBackupComponentsEx2 *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupState)(
+ IVssBackupComponentsEx2 *This,
+ boolean bSelectComponents,
+ boolean bBackupBootableSystemState,
+ VSS_BACKUP_TYPE backupType,
+ boolean bPartialFileSupport);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
+ IVssBackupComponentsEx2 *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
+ IVssBackupComponentsEx2 *This,
+ VSS_RESTORE_TYPE restoreType);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
+ IVssBackupComponentsEx2 *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
+ IVssBackupComponentsEx2 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadata **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
+ IVssBackupComponentsEx2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AbortBackup)(
+ IVssBackupComponentsEx2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
+ IVssBackupComponentsEx2 *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
+ IVssBackupComponentsEx2 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
+ IVssBackupComponentsEx2 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phResultFailure);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSucceded);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPreviousBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssBackupComponentsEx2 *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *BackupComplete)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszSubComponentLogicalPath,
+ LPCWSTR wszSubComponentName,
+ boolean bRepair);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_FILE_RESTORE_STATUS status);
+
+ HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFileName,
+ boolean bRecursive,
+ LPCWSTR wszAlternatePath);
+
+ HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ UINT iPartialFile,
+ LPCWSTR wszRangesFile);
+
+ HRESULT (STDMETHODCALLTYPE *PreRestore)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PostRestore)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssBackupComponentsEx2 *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID *pSnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
+ IVssBackupComponentsEx2 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ VSS_ID *pidSnapshot);
+
+ HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
+ IVssBackupComponentsEx2 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID ProviderId,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
+ IVssBackupComponentsEx2 *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
+ IVssBackupComponentsEx2 *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
+ IVssBackupComponentsEx2 *This,
+ const VSS_ID *rgWriterInstanceId,
+ UINT cInstanceId);
+
+ HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotId,
+ VSS_PWSZ wszPathFromRoot,
+ LONG lAttributes,
+ VSS_PWSZ wszExpose,
+ VSS_PWSZ *pwszExposed);
+
+ HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotId,
+ WINBOOL bForceDismount);
+
+ HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
+ IVssBackupComponentsEx2 *This,
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync);
+
+ /*** IVssBackupComponentsEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
+ IVssBackupComponentsEx2 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadataEx **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore,
+ VSS_ID instanceId);
+
+ /*** IVssBackupComponentsEx2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *UnexposeSnapshot)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID snapshotId);
+
+ HRESULT (STDMETHODCALLTYPE *SetAuthoritativeRestore)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAuth);
+
+ HRESULT (STDMETHODCALLTYPE *SetRollForward)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_ROLLFORWARD_TYPE rollType,
+ LPCWSTR wszRollForwardPoint);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreName)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreName);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSetEx)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwBreakFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PreFastRecovery)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwPreFastRecoveryFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *FastRecovery)(
+ IVssBackupComponentsEx2 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwFastRecoveryFlags,
+ IVssAsync **ppAsync);
END_INTERFACE
+} IVssBackupComponentsEx2Vtbl;
+
+interface IVssBackupComponentsEx2 {
+ CONST_VTBL IVssBackupComponentsEx2Vtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssBackupComponentsEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssBackupComponentsEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssBackupComponentsEx2_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssBackupComponents methods ***/
#define IVssBackupComponentsEx2_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
-#define IVssBackupComponentsEx2_GetWriterComponents(This,iWriter,pWriterComponents) (This)->lpVtbl->GetWriterComponents(This,iWriter,pWriterComponents)
+#define IVssBackupComponentsEx2_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
#define IVssBackupComponentsEx2_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
#define IVssBackupComponentsEx2_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
#define IVssBackupComponentsEx2_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
#define IVssBackupComponentsEx2_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
-#define IVssBackupComponentsEx2_GatherWriterMetadata(This,ppAsync) (This)->lpVtbl->GatherWriterMetadata(This,ppAsync)
+#define IVssBackupComponentsEx2_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
#define IVssBackupComponentsEx2_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
-#define IVssBackupComponentsEx2_GetWriterMetadata(This,iWriter,pidWriterInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidWriterInstance,ppMetadata)
-#define IVssBackupComponentsEx2_FreeWriterMetadata() (This)->lpVtbl->FreeWriterMetadata(This)
-#define IVssBackupComponentsEx2_AddComponent(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName)
+#define IVssBackupComponentsEx2_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponentsEx2_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
+#define IVssBackupComponentsEx2_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
#define IVssBackupComponentsEx2_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
-#define IVssBackupComponentsEx2_AbortBackup() (This)->lpVtbl->AbortBackup(This)
-#define IVssBackupComponentsEx2_GatherWriterStatus(This,ppAsync) (This)->lpVtbl->GatherWriterStatus(This,ppAsync)
+#define IVssBackupComponentsEx2_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
+#define IVssBackupComponentsEx2_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
#define IVssBackupComponentsEx2_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
-#define IVssBackupComponentsEx2_FreeWriterStatus() (This)->lpVtbl->FreeWriterStatus(This)
-#define IVssBackupComponentsEx2_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pState,pHrResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pState,pHrResultFailure)
-#define IVssBackupComponentsEx2_SetBackupSucceeded(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName,bSucceeded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,componentType,wszLogicalPath,wszComponentName,bSucceeded)
-#define IVssBackupComponentsEx2_SetBackupOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszBackupOptions)
-#define IVssBackupComponentsEx2_SetSelectedForRestore(This,writerId,componentType,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,componentType,wszLogicalPath,wszComponentName,bSelectedForRestore)
-#define IVssBackupComponentsEx2_SetRestoreOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,componentType,wszLogicalPath,wszComponentName,wszRestoreOptions)
-#define IVssBackupComponentsEx2_SetAdditionalRestores(This,writerId,componentType,wszLogicalPath,wszComponentName,bAdditionalResources) (This)->lpVtbl->SetAdditionalRestores(This,writerId,componentType,wszLogicalPath,wszComponentName,bAdditionalResources)
-#define IVssBackupComponentsEx2_SetPreviousBackupStamp(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
+#define IVssBackupComponentsEx2_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
+#define IVssBackupComponentsEx2_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
+#define IVssBackupComponentsEx2_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
+#define IVssBackupComponentsEx2_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
+#define IVssBackupComponentsEx2_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
+#define IVssBackupComponentsEx2_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
+#define IVssBackupComponentsEx2_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
+#define IVssBackupComponentsEx2_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
#define IVssBackupComponentsEx2_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
#define IVssBackupComponentsEx2_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
#define IVssBackupComponentsEx2_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
#define IVssBackupComponentsEx2_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
-#define IVssBackupComponentsEx2_SetFileRestoreStatus(This,writerId,componentType,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,componentType,wszLogicalPath,wszComponentName,status)
+#define IVssBackupComponentsEx2_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
#define IVssBackupComponentsEx2_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
#define IVssBackupComponentsEx2_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
#define IVssBackupComponentsEx2_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
@@ -485,272 +2794,1649 @@ DECLARE_INTERFACE_(IVssBackupComponentsEx2,IVssBackupComponentsEx)
#define IVssBackupComponentsEx2_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
#define IVssBackupComponentsEx2_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
#define IVssBackupComponentsEx2_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
+/*** IVssBackupComponentsEx methods ***/
#define IVssBackupComponentsEx2_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
#define IVssBackupComponentsEx2_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
+/*** IVssBackupComponentsEx2 methods ***/
#define IVssBackupComponentsEx2_UnexposeSnapshot(This,snapshotId) (This)->lpVtbl->UnexposeSnapshot(This,snapshotId)
#define IVssBackupComponentsEx2_SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth) (This)->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth)
#define IVssBackupComponentsEx2_SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint) (This)->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint)
#define IVssBackupComponentsEx2_SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName) (This)->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName)
#define IVssBackupComponentsEx2_BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync) (This)->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync)
-#define IVssBackupComponentsEx2_PreFastRecovery() (This)->lpVtbl->PreFastRecovery(This)
-#define IVssBackupComponentsEx2_FastRecovery() (This)->lpVtbl->FastRecovery(This)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-
-#if (_WIN32_WINNT >= 0x0601)
-#undef INTERFACE
-#define INTERFACE IVssBackupComponentsEx3
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssBackupComponentsEx3,IVssBackupComponentsEx2)
+#define IVssBackupComponentsEx2_PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync) (This)->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync)
+#define IVssBackupComponentsEx2_FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync) (This)->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_QueryInterface(IVssBackupComponentsEx2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx2_AddRef(IVssBackupComponentsEx2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx2_Release(IVssBackupComponentsEx2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssBackupComponents methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterComponentsCount(IVssBackupComponentsEx2* This,UINT *pcComponents) {
+ return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterComponents(IVssBackupComponentsEx2* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
+ return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_InitializeForBackup(IVssBackupComponentsEx2* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForBackup(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetBackupState(IVssBackupComponentsEx2* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
+ return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_InitializeForRestore(IVssBackupComponentsEx2* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForRestore(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetRestoreState(IVssBackupComponentsEx2* This,VSS_RESTORE_TYPE restoreType) {
+ return This->lpVtbl->SetRestoreState(This,restoreType);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GatherWriterMetadata(IVssBackupComponentsEx2* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterMetadata(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterMetadataCount(IVssBackupComponentsEx2* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterMetadata(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_FreeWriterMetadata(IVssBackupComponentsEx2* This) {
+ return This->lpVtbl->FreeWriterMetadata(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_AddComponent(IVssBackupComponentsEx2* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
+ return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_PrepareForBackup(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PrepareForBackup(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_AbortBackup(IVssBackupComponentsEx2* This) {
+ return This->lpVtbl->AbortBackup(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GatherWriterStatus(IVssBackupComponentsEx2* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterStatus(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterStatusCount(IVssBackupComponentsEx2* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_FreeWriterStatus(IVssBackupComponentsEx2* This) {
+ return This->lpVtbl->FreeWriterStatus(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterStatus(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
+ return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetBackupSucceeded(IVssBackupComponentsEx2* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
+ return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetBackupOptions(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
+ return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetSelectedForRestore(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
+ return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetRestoreOptions(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
+ return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetAdditionalRestores(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
+ return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetPreviousBackupStamp(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
+ return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SaveAsXML(IVssBackupComponentsEx2* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_BackupComplete(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->BackupComplete(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_AddAlternativeLocationMapping(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_AddRestoreSubcomponent(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
+ return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetFileRestoreStatus(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
+ return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_AddNewTarget(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
+ return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetRangesFilePath(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
+ return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_PreRestore(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_PostRestore(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PostRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetContext(IVssBackupComponentsEx2* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_StartSnapshotSet(IVssBackupComponentsEx2* This,VSS_ID *pSnapshotSetId) {
+ return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_AddToSnapshotSet(IVssBackupComponentsEx2* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
+ return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_DoSnapshotSet(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->DoSnapshotSet(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_DeleteSnapshots(IVssBackupComponentsEx2* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_ImportSnapshots(IVssBackupComponentsEx2* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->ImportSnapshots(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_BreakSnapshotSet(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetSnapshotProperties(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_Query(IVssBackupComponentsEx2* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_IsVolumeSupported(IVssBackupComponentsEx2* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_DisableWriterClasses(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_EnableWriterClasses(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_DisableWriterInstances(IVssBackupComponentsEx2* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
+ return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_ExposeSnapshot(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
+ return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_RevertToSnapshot(IVssBackupComponentsEx2* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
+ return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_QueryRevertStatus(IVssBackupComponentsEx2* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
+}
+/*** IVssBackupComponentsEx methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_GetWriterMetadataEx(IVssBackupComponentsEx2* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetSelectedForRestoreEx(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
+ return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
+}
+/*** IVssBackupComponentsEx2 methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_UnexposeSnapshot(IVssBackupComponentsEx2* This,VSS_ID snapshotId) {
+ return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetAuthoritativeRestore(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAuth) {
+ return This->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetRollForward(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) {
+ return This->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_SetRestoreName(IVssBackupComponentsEx2* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) {
+ return This->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_BreakSnapshotSetEx(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_PreFastRecovery(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx2_FastRecovery(IVssBackupComponentsEx2* This,VSS_ID SnapshotSetID,DWORD dwFastRecoveryFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssBackupComponentsEx2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssBackupComponentsEx3 interface
+ */
+#ifndef __IVssBackupComponentsEx3_INTERFACE_DEFINED__
+#define __IVssBackupComponentsEx3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssBackupComponentsEx3, 0xc191bfbc, 0xb602, 0x4675, 0x8b,0xd1, 0x67,0xd6,0x42,0xf5,0x29,0xd5);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c191bfbc-b602-4675-8bd1-67d642f529d5")
+IVssBackupComponentsEx3 : public IVssBackupComponentsEx2
{
+ virtual HRESULT STDMETHODCALLTYPE GetWriterStatusEx(
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phrFailureWriter,
+ HRESULT *phrApplication = 0,
+ BSTR *pbstrApplicationMessage = 0) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddSnapshotToRecoverySet(
+ VSS_ID snapshotId,
+ DWORD dwFlags,
+ VSS_PWSZ pwszDestinationVolume = 0) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RecoverSet(
+ DWORD dwFlags,
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSessionId(
+ VSS_ID *idSession) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssBackupComponentsEx3, 0xc191bfbc, 0xb602, 0x4675, 0x8b,0xd1, 0x67,0xd6,0x42,0xf5,0x29,0xd5)
+#endif
+#else
+typedef struct IVssBackupComponentsEx3Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssBackupComponents methods */
- STDMETHOD_(HRESULT,GetWriterComponentsCount)(THIS_ UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetWriterComponents)(THIS_ UINT iWriter,IVssWriterComponentsExt **pWriterComponents) PURE;
- STDMETHOD_(HRESULT,InitializeForBackup)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupState)(THIS_ BOOLEAN bSelectComponents,BOOLEAN bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,BOOLEAN bPartialFileSupport) PURE;
- STDMETHOD_(HRESULT,InitializeForRestore)(THIS_ BSTR bstrXML) PURE;
- STDMETHOD_(HRESULT,SetRestoreState)(THIS_ VSS_RESTORE_TYPE restoreType) PURE;
- STDMETHOD_(HRESULT,GatherWriterMetadata)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadataCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,GetWriterMetadata)(THIS_ UINT iWriter,VSS_ID *pidWriterInstance,IVssExamineWriterMetadata **ppMetadata) PURE;
- STDMETHOD_(HRESULT,FreeWriterMetadata)(THIS) PURE;
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) PURE;
- STDMETHOD_(HRESULT,PrepareForBackup)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AbortBackup)(THIS) PURE;
- STDMETHOD_(HRESULT,GatherWriterStatus)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,GetWriterStatusCount)(THIS_ UINT *pcWriters) PURE;
- STDMETHOD_(HRESULT,FreeWriterStatus)(THIS) PURE;
- STDMETHOD_(HRESULT,GetWriterStatus)(THIS_ UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pState,HRESULT *pHrResultFailure) PURE;
- STDMETHOD_(HRESULT,SetBackupSucceeded)(THIS_ VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSucceeded) PURE;
- STDMETHOD_(HRESULT,SetBackupOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestore)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,SetRestoreOptions)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) PURE;
- STDMETHOD_(HRESULT,SetAdditionalRestores)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bAdditionalResources) PURE;
- STDMETHOD_(HRESULT,SetPreviousBackupStamp)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,BackupComplete)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,AddAlternativeLocationMapping)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE;
- STDMETHOD_(HRESULT,AddRestoreSubcomponent)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,BOOLEAN bRepair) PURE;
- STDMETHOD_(HRESULT,SetFileRestoreStatus)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) PURE;
- STDMETHOD_(HRESULT,AddNewTarget)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,BOOLEAN bRecursive,LPCWSTR wszAlternatePath) PURE;
- STDMETHOD_(HRESULT,SetRangesFilePath)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) PURE;
- STDMETHOD_(HRESULT,PreRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,PostRestore)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,SetContext)(THIS_ LONG lContext) PURE;
- STDMETHOD_(HRESULT,StartSnapshotSet)(THIS_ VSS_ID *pSnapshotSetId) PURE;
- STDMETHOD_(HRESULT,AddToSnapshotSet)(THIS_ VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) PURE;
- STDMETHOD_(HRESULT,DoSnapshotSet)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,DeleteSnapshots)(THIS_ VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,BOOLEAN bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) PURE;
- STDMETHOD_(HRESULT,ImportSnapshots)(THIS_ IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,BreakSnapshotSet)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,GetSnapshotProperties)(THIS_ VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) PURE;
- STDMETHOD_(HRESULT,Query)(THIS_ VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,IsVolumeSupported)(THIS_ VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,BOOLEAN *pbSupportedByThisProvider) PURE;
- STDMETHOD_(HRESULT,DisableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,EnableWriterClasses)(THIS_ const VSS_ID *rgWriterClassId,UINT cClassId) PURE;
- STDMETHOD_(HRESULT,DisableWriterInstances)(THIS_ const VSS_ID *rgWriterInstanceId,UINT cInstanceId) PURE;
- STDMETHOD_(HRESULT,ExposeSnapshot)(THIS_ VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) PURE;
- STDMETHOD_(HRESULT,RevertToSnapshot)(THIS_ VSS_ID SnapshotId,BOOLEAN bForceDismount) PURE;
- STDMETHOD_(HRESULT,QueryRevertStatus)(THIS_ VSS_PWSZ pwszVolume,IVssAsync **ppAsync) PURE;
-
- /* IVssBackupComponentsEx methods */
- STDMETHOD_(HRESULT,GetWriterMetadataEx)(THIS_ UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) PURE;
- STDMETHOD_(HRESULT,SetSelectedForRestoreEx)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bSelectedForRestore,VSS_ID instanceId) PURE;
-
- /* IVssBackupComponentsEx2 methods */
- STDMETHOD_(HRESULT,UnexposeSnapshot)(THIS_ VSS_ID snapshotId) PURE;
- STDMETHOD_(HRESULT,SetAuthoritativeRestore)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,BOOLEAN bAuth) PURE;
- STDMETHOD_(HRESULT,SetRollForward)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) PURE;
- STDMETHOD_(HRESULT,SetRestoreName)(THIS_ VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) PURE;
- STDMETHOD_(HRESULT,BreakSnapshotSetEx)(THIS_ VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) PURE;
- STDMETHOD_(HRESULT,PreFastRecovery)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,FastRecovery)(THIS) PURE; /*Unsupported*/
-
- /* IVssBackupComponentsEx3 methods */
- STDMETHOD_(HRESULT,AddSnapshotToRecoverySet)(THIS_ VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) PURE;
- STDMETHOD_(HRESULT,GetSessionId)(THIS_ VSS_ID *idSession) PURE;
- STDMETHOD_(HRESULT,GetWriterStatusEx)(THIS_ UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phrFailureWriter,BSTR *pbstrApplicationMessage) PURE;
- STDMETHOD_(HRESULT,RecoverSet)(THIS_ DWORD dwFlags,IVssAsync **ppAsync) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssBackupComponentsEx3 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssBackupComponentsEx3 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssBackupComponentsEx3 *This);
+
+ /*** IVssBackupComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
+ IVssBackupComponentsEx3 *This,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
+ IVssBackupComponentsEx3 *This,
+ UINT iWriter,
+ IVssWriterComponentsExt **ppWriter);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
+ IVssBackupComponentsEx3 *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupState)(
+ IVssBackupComponentsEx3 *This,
+ boolean bSelectComponents,
+ boolean bBackupBootableSystemState,
+ VSS_BACKUP_TYPE backupType,
+ boolean bPartialFileSupport);
+
+ HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
+ IVssBackupComponentsEx3 *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
+ IVssBackupComponentsEx3 *This,
+ VSS_RESTORE_TYPE restoreType);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
+ IVssBackupComponentsEx3 *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
+ IVssBackupComponentsEx3 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadata **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
+ IVssBackupComponentsEx3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AbortBackup)(
+ IVssBackupComponentsEx3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
+ IVssBackupComponentsEx3 *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
+ IVssBackupComponentsEx3 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
+ IVssBackupComponentsEx3 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phResultFailure);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSucceded);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPreviousBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssBackupComponentsEx3 *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *BackupComplete)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszSubComponentLogicalPath,
+ LPCWSTR wszSubComponentName,
+ boolean bRepair);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_FILE_RESTORE_STATUS status);
+
+ HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFileName,
+ boolean bRecursive,
+ LPCWSTR wszAlternatePath);
+
+ HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ UINT iPartialFile,
+ LPCWSTR wszRangesFile);
+
+ HRESULT (STDMETHODCALLTYPE *PreRestore)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PostRestore)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssBackupComponentsEx3 *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID *pSnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
+ IVssBackupComponentsEx3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ VSS_ID *pidSnapshot);
+
+ HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
+ IVssBackupComponentsEx3 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID ProviderId,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
+ IVssBackupComponentsEx3 *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
+ IVssBackupComponentsEx3 *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
+ IVssBackupComponentsEx3 *This,
+ const VSS_ID *rgWriterInstanceId,
+ UINT cInstanceId);
+
+ HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotId,
+ VSS_PWSZ wszPathFromRoot,
+ LONG lAttributes,
+ VSS_PWSZ wszExpose,
+ VSS_PWSZ *pwszExposed);
+
+ HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotId,
+ WINBOOL bForceDismount);
+
+ HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
+ IVssBackupComponentsEx3 *This,
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync);
+
+ /*** IVssBackupComponentsEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
+ IVssBackupComponentsEx3 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadataEx **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore,
+ VSS_ID instanceId);
+
+ /*** IVssBackupComponentsEx2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *UnexposeSnapshot)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID snapshotId);
+
+ HRESULT (STDMETHODCALLTYPE *SetAuthoritativeRestore)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAuth);
+
+ HRESULT (STDMETHODCALLTYPE *SetRollForward)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_ROLLFORWARD_TYPE rollType,
+ LPCWSTR wszRollForwardPoint);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreName)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreName);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSetEx)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwBreakFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PreFastRecovery)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwPreFastRecoveryFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *FastRecovery)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwFastRecoveryFlags,
+ IVssAsync **ppAsync);
+
+ /*** IVssBackupComponentsEx3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusEx)(
+ IVssBackupComponentsEx3 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phrFailureWriter,
+ HRESULT *phrApplication,
+ BSTR *pbstrApplicationMessage);
+
+ HRESULT (STDMETHODCALLTYPE *AddSnapshotToRecoverySet)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID snapshotId,
+ DWORD dwFlags,
+ VSS_PWSZ pwszDestinationVolume);
+
+ HRESULT (STDMETHODCALLTYPE *RecoverSet)(
+ IVssBackupComponentsEx3 *This,
+ DWORD dwFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetSessionId)(
+ IVssBackupComponentsEx3 *This,
+ VSS_ID *idSession);
END_INTERFACE
+} IVssBackupComponentsEx3Vtbl;
+
+interface IVssBackupComponentsEx3 {
+ CONST_VTBL IVssBackupComponentsEx3Vtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssBackupComponentsEx3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssBackupComponentsEx3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssBackupComponentsEx3_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssBackupComponents methods ***/
+#define IVssBackupComponentsEx3_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
+#define IVssBackupComponentsEx3_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
+#define IVssBackupComponentsEx3_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
+#define IVssBackupComponentsEx3_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
+#define IVssBackupComponentsEx3_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
+#define IVssBackupComponentsEx3_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
+#define IVssBackupComponentsEx3_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
+#define IVssBackupComponentsEx3_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
+#define IVssBackupComponentsEx3_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponentsEx3_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
+#define IVssBackupComponentsEx3_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
+#define IVssBackupComponentsEx3_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
+#define IVssBackupComponentsEx3_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
+#define IVssBackupComponentsEx3_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
+#define IVssBackupComponentsEx3_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
+#define IVssBackupComponentsEx3_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
+#define IVssBackupComponentsEx3_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
+#define IVssBackupComponentsEx3_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
+#define IVssBackupComponentsEx3_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
+#define IVssBackupComponentsEx3_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
+#define IVssBackupComponentsEx3_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
+#define IVssBackupComponentsEx3_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
+#define IVssBackupComponentsEx3_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
+#define IVssBackupComponentsEx3_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#define IVssBackupComponentsEx3_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
+#define IVssBackupComponentsEx3_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
+#define IVssBackupComponentsEx3_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
+#define IVssBackupComponentsEx3_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
+#define IVssBackupComponentsEx3_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
+#define IVssBackupComponentsEx3_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
+#define IVssBackupComponentsEx3_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
+#define IVssBackupComponentsEx3_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
+#define IVssBackupComponentsEx3_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
+#define IVssBackupComponentsEx3_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
+#define IVssBackupComponentsEx3_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
+#define IVssBackupComponentsEx3_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
+#define IVssBackupComponentsEx3_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
+#define IVssBackupComponentsEx3_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
+#define IVssBackupComponentsEx3_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
+#define IVssBackupComponentsEx3_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
+#define IVssBackupComponentsEx3_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
+#define IVssBackupComponentsEx3_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
+#define IVssBackupComponentsEx3_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
+#define IVssBackupComponentsEx3_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
+#define IVssBackupComponentsEx3_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
+#define IVssBackupComponentsEx3_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
+#define IVssBackupComponentsEx3_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
+#define IVssBackupComponentsEx3_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
+/*** IVssBackupComponentsEx methods ***/
+#define IVssBackupComponentsEx3_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponentsEx3_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
+/*** IVssBackupComponentsEx2 methods ***/
+#define IVssBackupComponentsEx3_UnexposeSnapshot(This,snapshotId) (This)->lpVtbl->UnexposeSnapshot(This,snapshotId)
+#define IVssBackupComponentsEx3_SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth) (This)->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth)
+#define IVssBackupComponentsEx3_SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint) (This)->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint)
+#define IVssBackupComponentsEx3_SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName) (This)->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName)
+#define IVssBackupComponentsEx3_BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync) (This)->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync)
+#define IVssBackupComponentsEx3_PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync) (This)->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync)
+#define IVssBackupComponentsEx3_FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync) (This)->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync)
+/*** IVssBackupComponentsEx3 methods ***/
+#define IVssBackupComponentsEx3_GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage) (This)->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage)
#define IVssBackupComponentsEx3_AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume) (This)->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume)
-#define IVssBackupComponentsEx3_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
-#define IVssBackupComponentsEx3_GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,pbstrApplicationMessage) (This)->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,pbstrApplicationMessage)
#define IVssBackupComponentsEx3_RecoverSet(This,dwFlags,ppAsync) (This)->lpVtbl->RecoverSet(This,dwFlags,ppAsync)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x0601)*/
+#define IVssBackupComponentsEx3_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_QueryInterface(IVssBackupComponentsEx3* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx3_AddRef(IVssBackupComponentsEx3* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx3_Release(IVssBackupComponentsEx3* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssBackupComponents methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterComponentsCount(IVssBackupComponentsEx3* This,UINT *pcComponents) {
+ return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterComponents(IVssBackupComponentsEx3* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
+ return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_InitializeForBackup(IVssBackupComponentsEx3* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForBackup(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetBackupState(IVssBackupComponentsEx3* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
+ return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_InitializeForRestore(IVssBackupComponentsEx3* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForRestore(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetRestoreState(IVssBackupComponentsEx3* This,VSS_RESTORE_TYPE restoreType) {
+ return This->lpVtbl->SetRestoreState(This,restoreType);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GatherWriterMetadata(IVssBackupComponentsEx3* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterMetadata(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterMetadataCount(IVssBackupComponentsEx3* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterMetadata(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_FreeWriterMetadata(IVssBackupComponentsEx3* This) {
+ return This->lpVtbl->FreeWriterMetadata(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AddComponent(IVssBackupComponentsEx3* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
+ return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_PrepareForBackup(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PrepareForBackup(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AbortBackup(IVssBackupComponentsEx3* This) {
+ return This->lpVtbl->AbortBackup(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GatherWriterStatus(IVssBackupComponentsEx3* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterStatus(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterStatusCount(IVssBackupComponentsEx3* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_FreeWriterStatus(IVssBackupComponentsEx3* This) {
+ return This->lpVtbl->FreeWriterStatus(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterStatus(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
+ return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetBackupSucceeded(IVssBackupComponentsEx3* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
+ return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetBackupOptions(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
+ return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetSelectedForRestore(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
+ return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetRestoreOptions(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
+ return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetAdditionalRestores(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
+ return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetPreviousBackupStamp(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
+ return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SaveAsXML(IVssBackupComponentsEx3* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_BackupComplete(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->BackupComplete(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AddAlternativeLocationMapping(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AddRestoreSubcomponent(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
+ return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetFileRestoreStatus(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
+ return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AddNewTarget(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
+ return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetRangesFilePath(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
+ return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_PreRestore(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_PostRestore(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PostRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetContext(IVssBackupComponentsEx3* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_StartSnapshotSet(IVssBackupComponentsEx3* This,VSS_ID *pSnapshotSetId) {
+ return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AddToSnapshotSet(IVssBackupComponentsEx3* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
+ return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_DoSnapshotSet(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->DoSnapshotSet(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_DeleteSnapshots(IVssBackupComponentsEx3* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_ImportSnapshots(IVssBackupComponentsEx3* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->ImportSnapshots(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_BreakSnapshotSet(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetSnapshotProperties(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_Query(IVssBackupComponentsEx3* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_IsVolumeSupported(IVssBackupComponentsEx3* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_DisableWriterClasses(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_EnableWriterClasses(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_DisableWriterInstances(IVssBackupComponentsEx3* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
+ return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_ExposeSnapshot(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
+ return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_RevertToSnapshot(IVssBackupComponentsEx3* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
+ return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_QueryRevertStatus(IVssBackupComponentsEx3* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
+}
+/*** IVssBackupComponentsEx methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterMetadataEx(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetSelectedForRestoreEx(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
+ return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
+}
+/*** IVssBackupComponentsEx2 methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_UnexposeSnapshot(IVssBackupComponentsEx3* This,VSS_ID snapshotId) {
+ return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetAuthoritativeRestore(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAuth) {
+ return This->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetRollForward(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) {
+ return This->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_SetRestoreName(IVssBackupComponentsEx3* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) {
+ return This->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_BreakSnapshotSetEx(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_PreFastRecovery(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_FastRecovery(IVssBackupComponentsEx3* This,VSS_ID SnapshotSetID,DWORD dwFastRecoveryFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync);
+}
+/*** IVssBackupComponentsEx3 methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetWriterStatusEx(IVssBackupComponentsEx3* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phrFailureWriter,HRESULT *phrApplication,BSTR *pbstrApplicationMessage) {
+ return This->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_AddSnapshotToRecoverySet(IVssBackupComponentsEx3* This,VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) {
+ return This->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_RecoverSet(IVssBackupComponentsEx3* This,DWORD dwFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->RecoverSet(This,dwFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx3_GetSessionId(IVssBackupComponentsEx3* This,VSS_ID *idSession) {
+ return This->lpVtbl->GetSessionId(This,idSession);
+}
+#endif
+#endif
-#ifdef __cplusplus
-/* Is a C++ interface instead of a COM */
-#undef INTERFACE
-#define INTERFACE IVssExamineWriterMetadata
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssExamineWriterMetadata,IUnknown)
-{
- BEGIN_INTERFACE
+#endif
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssExamineWriterMetadata methods */
- STDMETHOD_(HRESULT,GetIdentity)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) PURE;
- STDMETHOD_(HRESULT,GetFileCounts)(THIS_ UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetIncludeFile)(THIS) PURE;
- STDMETHOD_(HRESULT,GetExcludeFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,GetComponent)(THIS_ UINT iComponent,IVssWMComponent **ppComponent) PURE;
- STDMETHOD_(HRESULT,GetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwreWriterRestore,BOOLEAN *pbRebootRequired,UINT *piMappings) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,IVssWMFiledesc **ppMapping) PURE;
- STDMETHOD_(HRESULT,GetBackupSchema)(THIS_ DWORD *pdsSchemaMask) PURE;
- STDMETHOD_(HRESULT,GetDocument)(THIS) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,LoadFromXML)(THIS_ BSTR bstrXML) PURE;
- END_INTERFACE
-};
+#endif /* __IVssBackupComponentsEx3_INTERFACE_DEFINED__ */
-#if (_WIN32_WINNT >= 0x0600)
-#undef INTERFACE
-#define INTERFACE IVssExamineWriterMetadataEx
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssExamineWriterMetadataEx,IVssExamineWriterMetadata)
-{
- BEGIN_INTERFACE
+/*****************************************************************************
+ * IVssBackupComponentsEx4 interface
+ */
+#ifndef __IVssBackupComponentsEx4_INTERFACE_DEFINED__
+#define __IVssBackupComponentsEx4_INTERFACE_DEFINED__
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssExamineWriterMetadata methods */
- STDMETHOD_(HRESULT,GetIdentity)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) PURE;
- STDMETHOD_(HRESULT,GetFileCounts)(THIS_ UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetIncludeFile)(THIS) PURE;
- STDMETHOD_(HRESULT,GetExcludeFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,GetComponent)(THIS_ UINT iComponent,IVssWMComponent **ppComponent) PURE;
- STDMETHOD_(HRESULT,GetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwreWriterRestore,BOOLEAN *pbRebootRequired,UINT *piMappings) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,IVssWMFiledesc **ppMapping) PURE;
- STDMETHOD_(HRESULT,GetBackupSchema)(THIS_ DWORD *pdsSchemaMask) PURE;
- STDMETHOD_(HRESULT,GetDocument)(THIS) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,LoadFromXML)(THIS_ BSTR bstrXML) PURE;
-
- /* IVssExamineWriterMetadataEx methods */
- STDMETHOD_(HRESULT,GetIdentityEx)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,BSTR *pbstrInstanceName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) PURE;
+DEFINE_GUID(IID_IVssBackupComponentsEx4, 0xf434c2fd, 0xb553, 0x4961, 0xa9,0xf9, 0xa8,0xe9,0x0b,0x67,0x3e,0x53);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f434c2fd-b553-4961-a9f9-a8e90b673e53")
+IVssBackupComponentsEx4 : public IVssBackupComponentsEx3
+{
+ virtual HRESULT STDMETHODCALLTYPE GetRootAndLogicalPrefixPaths(
+ VSS_PWSZ pwszFilePath,
+ VSS_PWSZ *ppwszRootPath,
+ VSS_PWSZ *ppwszLogicalPrefix,
+ WINBOOL bNormalizeFQDNforRootPath = FALSE) = 0;
- END_INTERFACE
};
-
-#undef INTERFACE
-#define INTERFACE IVssExamineWriterMetadataEx2
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssBackupComponentsEx4, 0xf434c2fd, 0xb553, 0x4961, 0xa9,0xf9, 0xa8,0xe9,0x0b,0x67,0x3e,0x53)
#endif
-DECLARE_INTERFACE_(IVssExamineWriterMetadataEx2,IVssExamineWriterMetadataEx)
-{
+#else
+typedef struct IVssBackupComponentsEx4Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-/* IVssExamineWriterMetadata methods */
- STDMETHOD_(HRESULT,GetIdentity)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) PURE;
- STDMETHOD_(HRESULT,GetFileCounts)(THIS_ UINT *pcIncludeFiles,UINT *pcExcludeFiles,UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetIncludeFile)(THIS) PURE;
- STDMETHOD_(HRESULT,GetExcludeFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,GetComponent)(THIS_ UINT iComponent,IVssWMComponent **ppComponent) PURE;
- STDMETHOD_(HRESULT,GetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM *pMethod,BSTR *pbstrService,BSTR *pbstrUserProcedure,VSS_WRITERRESTORE_ENUM *pwreWriterRestore,BOOLEAN *pbRebootRequired,UINT *piMappings) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,IVssWMFiledesc **ppMapping) PURE;
- STDMETHOD_(HRESULT,GetBackupSchema)(THIS_ DWORD *pdsSchemaMask) PURE;
- STDMETHOD_(HRESULT,GetDocument)(THIS) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,LoadFromXML)(THIS_ BSTR bstrXML) PURE;
-
- /* IVssExamineWriterMetadataEx methods */
- STDMETHOD_(HRESULT,GetIdentityEx)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriterName,BSTR *pbstrInstanceName,VSS_USAGE_TYPE *pUsage,VSS_SOURCE_TYPE *pSource) PURE;
-
- /* IVssExamineWriterMetadataEx2 methods */
- STDMETHOD_(HRESULT,GetVersion)(THIS_ DWORD *pdwMajorVersion,DWORD *pdwMinorVersion) PURE;
- STDMETHOD_(HRESULT,GetExcludeFromSnapshotCount)(THIS_ UINT *pcExcludedFromSnapshot) PURE;
- STDMETHOD_(HRESULT,GetExcludeFromSnapshotFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssBackupComponentsEx4 *This,
+ REFIID riid,
+ void **ppvObject);
- END_INTERFACE
-};
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssBackupComponentsEx4 *This);
-#endif /*(_WIN32_WINNT >= 0x0600)*/
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssBackupComponentsEx4 *This);
-#undef INTERFACE
-#define INTERFACE IVssWMComponent
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssWMComponent,IUnknown)
-{
- BEGIN_INTERFACE
+ /*** IVssBackupComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponentsCount)(
+ IVssBackupComponentsEx4 *This,
+ UINT *pcComponents);
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ HRESULT (STDMETHODCALLTYPE *GetWriterComponents)(
+ IVssBackupComponentsEx4 *This,
+ UINT iWriter,
+ IVssWriterComponentsExt **ppWriter);
- /* IVssWMComponent methods */
- STDMETHOD_(HRESULT,GetComponentInfo)(THIS_ PVSSCOMPONENTINFO *ppInfo) PURE;
- STDMETHOD_(HRESULT,FreeComponentInfo)(THIS_ VSS_COMPONENTINFO *pInfo) PURE;
- STDMETHOD_(HRESULT,GetFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,GetDatabaseFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,GetDatabaseLogFile)(THIS_ UINT iFile,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,GetDependency)(THIS_ UINT iDependency,IVssWMDependency **ppDependency) PURE;
+ HRESULT (STDMETHODCALLTYPE *InitializeForBackup)(
+ IVssBackupComponentsEx4 *This,
+ BSTR bstrXML);
- END_INTERFACE
-};
+ HRESULT (STDMETHODCALLTYPE *SetBackupState)(
+ IVssBackupComponentsEx4 *This,
+ boolean bSelectComponents,
+ boolean bBackupBootableSystemState,
+ VSS_BACKUP_TYPE backupType,
+ boolean bPartialFileSupport);
-#undef INTERFACE
-#define INTERFACE IVssWriterComponentsExt
-DECLARE_INTERFACE_(IVssWriterComponentsExt,IUnknown)
-{
- BEGIN_INTERFACE
+ HRESULT (STDMETHODCALLTYPE *InitializeForRestore)(
+ IVssBackupComponentsEx4 *This,
+ BSTR bstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreState)(
+ IVssBackupComponentsEx4 *This,
+ VSS_RESTORE_TYPE restoreType);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterMetadata)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataCount)(
+ IVssBackupComponentsEx4 *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadata)(
+ IVssBackupComponentsEx4 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadata **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterMetadata)(
+ IVssBackupComponentsEx4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *PrepareForBackup)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AbortBackup)(
+ IVssBackupComponentsEx4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GatherWriterStatus)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **pAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusCount)(
+ IVssBackupComponentsEx4 *This,
+ UINT *pcWriters);
+
+ HRESULT (STDMETHODCALLTYPE *FreeWriterStatus)(
+ IVssBackupComponentsEx4 *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatus)(
+ IVssBackupComponentsEx4 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phResultFailure);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSucceeded)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID instanceId,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSucceded);
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ HRESULT (STDMETHODCALLTYPE *SetBackupOptions)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszBackupOptions);
- /* IVssWriterComponentsExt methods */
- /* No additional members */
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestore)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreOptions)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *SetAdditionalRestores)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreviousBackupStamp)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPreviousBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssBackupComponentsEx4 *This,
+ BSTR *pbstrXML);
+
+ HRESULT (STDMETHODCALLTYPE *BackupComplete)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternativeLocationMapping)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddRestoreSubcomponent)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE componentType,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszSubComponentLogicalPath,
+ LPCWSTR wszSubComponentName,
+ boolean bRepair);
+
+ HRESULT (STDMETHODCALLTYPE *SetFileRestoreStatus)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_FILE_RESTORE_STATUS status);
+
+ HRESULT (STDMETHODCALLTYPE *AddNewTarget)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFileName,
+ boolean bRecursive,
+ LPCWSTR wszAlternatePath);
+
+ HRESULT (STDMETHODCALLTYPE *SetRangesFilePath)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ UINT iPartialFile,
+ LPCWSTR wszRangesFile);
+
+ HRESULT (STDMETHODCALLTYPE *PreRestore)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PostRestore)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssBackupComponentsEx4 *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *StartSnapshotSet)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID *pSnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *AddToSnapshotSet)(
+ IVssBackupComponentsEx4 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ VSS_ID *pidSnapshot);
+
+ HRESULT (STDMETHODCALLTYPE *DoSnapshotSet)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *ImportSnapshots)(
+ IVssBackupComponentsEx4 *This,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSet)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID ProviderId,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterClasses)(
+ IVssBackupComponentsEx4 *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *EnableWriterClasses)(
+ IVssBackupComponentsEx4 *This,
+ const VSS_ID *rgWriterClassId,
+ UINT cClassId);
+
+ HRESULT (STDMETHODCALLTYPE *DisableWriterInstances)(
+ IVssBackupComponentsEx4 *This,
+ const VSS_ID *rgWriterInstanceId,
+ UINT cInstanceId);
+
+ HRESULT (STDMETHODCALLTYPE *ExposeSnapshot)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotId,
+ VSS_PWSZ wszPathFromRoot,
+ LONG lAttributes,
+ VSS_PWSZ wszExpose,
+ VSS_PWSZ *pwszExposed);
+
+ HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotId,
+ WINBOOL bForceDismount);
+
+ HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
+ IVssBackupComponentsEx4 *This,
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync);
+
+ /*** IVssBackupComponentsEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterMetadataEx)(
+ IVssBackupComponentsEx4 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ IVssExamineWriterMetadataEx **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetSelectedForRestoreEx)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bSelectedForRestore,
+ VSS_ID instanceId);
+
+ /*** IVssBackupComponentsEx2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *UnexposeSnapshot)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID snapshotId);
+
+ HRESULT (STDMETHODCALLTYPE *SetAuthoritativeRestore)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ boolean bAuth);
+
+ HRESULT (STDMETHODCALLTYPE *SetRollForward)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ VSS_ROLLFORWARD_TYPE rollType,
+ LPCWSTR wszRollForwardPoint);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreName)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID writerId,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszRestoreName);
+
+ HRESULT (STDMETHODCALLTYPE *BreakSnapshotSetEx)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwBreakFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *PreFastRecovery)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwPreFastRecoveryFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *FastRecovery)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID SnapshotSetID,
+ DWORD dwFastRecoveryFlags,
+ IVssAsync **ppAsync);
+
+ /*** IVssBackupComponentsEx3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterStatusEx)(
+ IVssBackupComponentsEx4 *This,
+ UINT iWriter,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter,
+ BSTR *pbstrWriter,
+ VSS_WRITER_STATE *pnStatus,
+ HRESULT *phrFailureWriter,
+ HRESULT *phrApplication,
+ BSTR *pbstrApplicationMessage);
+
+ HRESULT (STDMETHODCALLTYPE *AddSnapshotToRecoverySet)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID snapshotId,
+ DWORD dwFlags,
+ VSS_PWSZ pwszDestinationVolume);
+
+ HRESULT (STDMETHODCALLTYPE *RecoverSet)(
+ IVssBackupComponentsEx4 *This,
+ DWORD dwFlags,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *GetSessionId)(
+ IVssBackupComponentsEx4 *This,
+ VSS_ID *idSession);
+
+ /*** IVssBackupComponentsEx4 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetRootAndLogicalPrefixPaths)(
+ IVssBackupComponentsEx4 *This,
+ VSS_PWSZ pwszFilePath,
+ VSS_PWSZ *ppwszRootPath,
+ VSS_PWSZ *ppwszLogicalPrefix,
+ WINBOOL bNormalizeFQDNforRootPath);
END_INTERFACE
+} IVssBackupComponentsEx4Vtbl;
+
+interface IVssBackupComponentsEx4 {
+ CONST_VTBL IVssBackupComponentsEx4Vtbl* lpVtbl;
};
-#endif /*__cplusplus*/
-#endif /*_INC_VSBACKUP*/
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssBackupComponentsEx4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssBackupComponentsEx4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssBackupComponentsEx4_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssBackupComponents methods ***/
+#define IVssBackupComponentsEx4_GetWriterComponentsCount(This,pcComponents) (This)->lpVtbl->GetWriterComponentsCount(This,pcComponents)
+#define IVssBackupComponentsEx4_GetWriterComponents(This,iWriter,ppWriter) (This)->lpVtbl->GetWriterComponents(This,iWriter,ppWriter)
+#define IVssBackupComponentsEx4_InitializeForBackup(This,bstrXML) (This)->lpVtbl->InitializeForBackup(This,bstrXML)
+#define IVssBackupComponentsEx4_SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport) (This)->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport)
+#define IVssBackupComponentsEx4_InitializeForRestore(This,bstrXML) (This)->lpVtbl->InitializeForRestore(This,bstrXML)
+#define IVssBackupComponentsEx4_SetRestoreState(This,restoreType) (This)->lpVtbl->SetRestoreState(This,restoreType)
+#define IVssBackupComponentsEx4_GatherWriterMetadata(This,pAsync) (This)->lpVtbl->GatherWriterMetadata(This,pAsync)
+#define IVssBackupComponentsEx4_GetWriterMetadataCount(This,pcWriters) (This)->lpVtbl->GetWriterMetadataCount(This,pcWriters)
+#define IVssBackupComponentsEx4_GetWriterMetadata(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponentsEx4_FreeWriterMetadata(This) (This)->lpVtbl->FreeWriterMetadata(This)
+#define IVssBackupComponentsEx4_AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName) (This)->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName)
+#define IVssBackupComponentsEx4_PrepareForBackup(This,ppAsync) (This)->lpVtbl->PrepareForBackup(This,ppAsync)
+#define IVssBackupComponentsEx4_AbortBackup(This) (This)->lpVtbl->AbortBackup(This)
+#define IVssBackupComponentsEx4_GatherWriterStatus(This,pAsync) (This)->lpVtbl->GatherWriterStatus(This,pAsync)
+#define IVssBackupComponentsEx4_GetWriterStatusCount(This,pcWriters) (This)->lpVtbl->GetWriterStatusCount(This,pcWriters)
+#define IVssBackupComponentsEx4_FreeWriterStatus(This) (This)->lpVtbl->FreeWriterStatus(This)
+#define IVssBackupComponentsEx4_GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure) (This)->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure)
+#define IVssBackupComponentsEx4_SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded) (This)->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded)
+#define IVssBackupComponentsEx4_SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions) (This)->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions)
+#define IVssBackupComponentsEx4_SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore) (This)->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore)
+#define IVssBackupComponentsEx4_SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions) (This)->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions)
+#define IVssBackupComponentsEx4_SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores) (This)->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores)
+#define IVssBackupComponentsEx4_SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp) (This)->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp)
+#define IVssBackupComponentsEx4_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#define IVssBackupComponentsEx4_BackupComplete(This,ppAsync) (This)->lpVtbl->BackupComplete(This,ppAsync)
+#define IVssBackupComponentsEx4_AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination)
+#define IVssBackupComponentsEx4_AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair) (This)->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair)
+#define IVssBackupComponentsEx4_SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status) (This)->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status)
+#define IVssBackupComponentsEx4_AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath) (This)->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath)
+#define IVssBackupComponentsEx4_SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile) (This)->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile)
+#define IVssBackupComponentsEx4_PreRestore(This,ppAsync) (This)->lpVtbl->PreRestore(This,ppAsync)
+#define IVssBackupComponentsEx4_PostRestore(This,ppAsync) (This)->lpVtbl->PostRestore(This,ppAsync)
+#define IVssBackupComponentsEx4_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
+#define IVssBackupComponentsEx4_StartSnapshotSet(This,pSnapshotSetId) (This)->lpVtbl->StartSnapshotSet(This,pSnapshotSetId)
+#define IVssBackupComponentsEx4_AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot) (This)->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot)
+#define IVssBackupComponentsEx4_DoSnapshotSet(This,ppAsync) (This)->lpVtbl->DoSnapshotSet(This,ppAsync)
+#define IVssBackupComponentsEx4_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
+#define IVssBackupComponentsEx4_ImportSnapshots(This,ppAsync) (This)->lpVtbl->ImportSnapshots(This,ppAsync)
+#define IVssBackupComponentsEx4_BreakSnapshotSet(This,SnapshotSetId) (This)->lpVtbl->BreakSnapshotSet(This,SnapshotSetId)
+#define IVssBackupComponentsEx4_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
+#define IVssBackupComponentsEx4_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
+#define IVssBackupComponentsEx4_IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider)
+#define IVssBackupComponentsEx4_DisableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId)
+#define IVssBackupComponentsEx4_EnableWriterClasses(This,rgWriterClassId,cClassId) (This)->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId)
+#define IVssBackupComponentsEx4_DisableWriterInstances(This,rgWriterInstanceId,cInstanceId) (This)->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId)
+#define IVssBackupComponentsEx4_ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed) (This)->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed)
+#define IVssBackupComponentsEx4_RevertToSnapshot(This,SnapshotId,bForceDismount) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount)
+#define IVssBackupComponentsEx4_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
+/*** IVssBackupComponentsEx methods ***/
+#define IVssBackupComponentsEx4_GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata) (This)->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata)
+#define IVssBackupComponentsEx4_SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId) (This)->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId)
+/*** IVssBackupComponentsEx2 methods ***/
+#define IVssBackupComponentsEx4_UnexposeSnapshot(This,snapshotId) (This)->lpVtbl->UnexposeSnapshot(This,snapshotId)
+#define IVssBackupComponentsEx4_SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth) (This)->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth)
+#define IVssBackupComponentsEx4_SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint) (This)->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint)
+#define IVssBackupComponentsEx4_SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName) (This)->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName)
+#define IVssBackupComponentsEx4_BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync) (This)->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync)
+#define IVssBackupComponentsEx4_PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync) (This)->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync)
+#define IVssBackupComponentsEx4_FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync) (This)->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync)
+/*** IVssBackupComponentsEx3 methods ***/
+#define IVssBackupComponentsEx4_GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage) (This)->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage)
+#define IVssBackupComponentsEx4_AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume) (This)->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume)
+#define IVssBackupComponentsEx4_RecoverSet(This,dwFlags,ppAsync) (This)->lpVtbl->RecoverSet(This,dwFlags,ppAsync)
+#define IVssBackupComponentsEx4_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
+/*** IVssBackupComponentsEx4 methods ***/
+#define IVssBackupComponentsEx4_GetRootAndLogicalPrefixPaths(This,pwszFilePath,ppwszRootPath,ppwszLogicalPrefix,bNormalizeFQDNforRootPath) (This)->lpVtbl->GetRootAndLogicalPrefixPaths(This,pwszFilePath,ppwszRootPath,ppwszLogicalPrefix,bNormalizeFQDNforRootPath)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_QueryInterface(IVssBackupComponentsEx4* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx4_AddRef(IVssBackupComponentsEx4* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssBackupComponentsEx4_Release(IVssBackupComponentsEx4* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssBackupComponents methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterComponentsCount(IVssBackupComponentsEx4* This,UINT *pcComponents) {
+ return This->lpVtbl->GetWriterComponentsCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterComponents(IVssBackupComponentsEx4* This,UINT iWriter,IVssWriterComponentsExt **ppWriter) {
+ return This->lpVtbl->GetWriterComponents(This,iWriter,ppWriter);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_InitializeForBackup(IVssBackupComponentsEx4* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForBackup(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetBackupState(IVssBackupComponentsEx4* This,boolean bSelectComponents,boolean bBackupBootableSystemState,VSS_BACKUP_TYPE backupType,boolean bPartialFileSupport) {
+ return This->lpVtbl->SetBackupState(This,bSelectComponents,bBackupBootableSystemState,backupType,bPartialFileSupport);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_InitializeForRestore(IVssBackupComponentsEx4* This,BSTR bstrXML) {
+ return This->lpVtbl->InitializeForRestore(This,bstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetRestoreState(IVssBackupComponentsEx4* This,VSS_RESTORE_TYPE restoreType) {
+ return This->lpVtbl->SetRestoreState(This,restoreType);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GatherWriterMetadata(IVssBackupComponentsEx4* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterMetadata(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterMetadataCount(IVssBackupComponentsEx4* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterMetadataCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterMetadata(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadata **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadata(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_FreeWriterMetadata(IVssBackupComponentsEx4* This) {
+ return This->lpVtbl->FreeWriterMetadata(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AddComponent(IVssBackupComponentsEx4* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName) {
+ return This->lpVtbl->AddComponent(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_PrepareForBackup(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PrepareForBackup(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AbortBackup(IVssBackupComponentsEx4* This) {
+ return This->lpVtbl->AbortBackup(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GatherWriterStatus(IVssBackupComponentsEx4* This,IVssAsync **pAsync) {
+ return This->lpVtbl->GatherWriterStatus(This,pAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterStatusCount(IVssBackupComponentsEx4* This,UINT *pcWriters) {
+ return This->lpVtbl->GetWriterStatusCount(This,pcWriters);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_FreeWriterStatus(IVssBackupComponentsEx4* This) {
+ return This->lpVtbl->FreeWriterStatus(This);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterStatus(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phResultFailure) {
+ return This->lpVtbl->GetWriterStatus(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phResultFailure);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetBackupSucceeded(IVssBackupComponentsEx4* This,VSS_ID instanceId,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSucceded) {
+ return This->lpVtbl->SetBackupSucceeded(This,instanceId,writerId,ct,wszLogicalPath,wszComponentName,bSucceded);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetBackupOptions(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszBackupOptions) {
+ return This->lpVtbl->SetBackupOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszBackupOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetSelectedForRestore(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore) {
+ return This->lpVtbl->SetSelectedForRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetRestoreOptions(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreOptions) {
+ return This->lpVtbl->SetRestoreOptions(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetAdditionalRestores(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAdditionalRestores) {
+ return This->lpVtbl->SetAdditionalRestores(This,writerId,ct,wszLogicalPath,wszComponentName,bAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetPreviousBackupStamp(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPreviousBackupStamp) {
+ return This->lpVtbl->SetPreviousBackupStamp(This,writerId,ct,wszLogicalPath,wszComponentName,wszPreviousBackupStamp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SaveAsXML(IVssBackupComponentsEx4* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_BackupComplete(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->BackupComplete(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AddAlternativeLocationMapping(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternativeLocationMapping(This,writerId,componentType,wszLogicalPath,wszComponentName,wszPath,wszFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AddRestoreSubcomponent(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszSubComponentLogicalPath,LPCWSTR wszSubComponentName,boolean bRepair) {
+ return This->lpVtbl->AddRestoreSubcomponent(This,writerId,componentType,wszLogicalPath,wszComponentName,wszSubComponentLogicalPath,wszSubComponentName,bRepair);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetFileRestoreStatus(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_FILE_RESTORE_STATUS status) {
+ return This->lpVtbl->SetFileRestoreStatus(This,writerId,ct,wszLogicalPath,wszComponentName,status);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AddNewTarget(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszPath,LPCWSTR wszFileName,boolean bRecursive,LPCWSTR wszAlternatePath) {
+ return This->lpVtbl->AddNewTarget(This,writerId,ct,wszLogicalPath,wszComponentName,wszPath,wszFileName,bRecursive,wszAlternatePath);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetRangesFilePath(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,UINT iPartialFile,LPCWSTR wszRangesFile) {
+ return This->lpVtbl->SetRangesFilePath(This,writerId,ct,wszLogicalPath,wszComponentName,iPartialFile,wszRangesFile);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_PreRestore(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_PostRestore(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->PostRestore(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetContext(IVssBackupComponentsEx4* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_StartSnapshotSet(IVssBackupComponentsEx4* This,VSS_ID *pSnapshotSetId) {
+ return This->lpVtbl->StartSnapshotSet(This,pSnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AddToSnapshotSet(IVssBackupComponentsEx4* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,VSS_ID *pidSnapshot) {
+ return This->lpVtbl->AddToSnapshotSet(This,pwszVolumeName,ProviderId,pidSnapshot);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_DoSnapshotSet(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->DoSnapshotSet(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_DeleteSnapshots(IVssBackupComponentsEx4* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_ImportSnapshots(IVssBackupComponentsEx4* This,IVssAsync **ppAsync) {
+ return This->lpVtbl->ImportSnapshots(This,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_BreakSnapshotSet(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->BreakSnapshotSet(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetSnapshotProperties(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_Query(IVssBackupComponentsEx4* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_IsVolumeSupported(IVssBackupComponentsEx4* This,VSS_ID ProviderId,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsVolumeSupported(This,ProviderId,pwszVolumeName,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_DisableWriterClasses(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->DisableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_EnableWriterClasses(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterClassId,UINT cClassId) {
+ return This->lpVtbl->EnableWriterClasses(This,rgWriterClassId,cClassId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_DisableWriterInstances(IVssBackupComponentsEx4* This,const VSS_ID *rgWriterInstanceId,UINT cInstanceId) {
+ return This->lpVtbl->DisableWriterInstances(This,rgWriterInstanceId,cInstanceId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_ExposeSnapshot(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,VSS_PWSZ wszPathFromRoot,LONG lAttributes,VSS_PWSZ wszExpose,VSS_PWSZ *pwszExposed) {
+ return This->lpVtbl->ExposeSnapshot(This,SnapshotId,wszPathFromRoot,lAttributes,wszExpose,pwszExposed);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_RevertToSnapshot(IVssBackupComponentsEx4* This,VSS_ID SnapshotId,WINBOOL bForceDismount) {
+ return This->lpVtbl->RevertToSnapshot(This,SnapshotId,bForceDismount);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_QueryRevertStatus(IVssBackupComponentsEx4* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
+}
+/*** IVssBackupComponentsEx methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterMetadataEx(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,IVssExamineWriterMetadataEx **ppMetadata) {
+ return This->lpVtbl->GetWriterMetadataEx(This,iWriter,pidInstance,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetSelectedForRestoreEx(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bSelectedForRestore,VSS_ID instanceId) {
+ return This->lpVtbl->SetSelectedForRestoreEx(This,writerId,ct,wszLogicalPath,wszComponentName,bSelectedForRestore,instanceId);
+}
+/*** IVssBackupComponentsEx2 methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_UnexposeSnapshot(IVssBackupComponentsEx4* This,VSS_ID snapshotId) {
+ return This->lpVtbl->UnexposeSnapshot(This,snapshotId);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetAuthoritativeRestore(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,boolean bAuth) {
+ return This->lpVtbl->SetAuthoritativeRestore(This,writerId,ct,wszLogicalPath,wszComponentName,bAuth);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetRollForward(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,VSS_ROLLFORWARD_TYPE rollType,LPCWSTR wszRollForwardPoint) {
+ return This->lpVtbl->SetRollForward(This,writerId,ct,wszLogicalPath,wszComponentName,rollType,wszRollForwardPoint);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_SetRestoreName(IVssBackupComponentsEx4* This,VSS_ID writerId,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszRestoreName) {
+ return This->lpVtbl->SetRestoreName(This,writerId,ct,wszLogicalPath,wszComponentName,wszRestoreName);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_BreakSnapshotSetEx(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwBreakFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->BreakSnapshotSetEx(This,SnapshotSetID,dwBreakFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_PreFastRecovery(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwPreFastRecoveryFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->PreFastRecovery(This,SnapshotSetID,dwPreFastRecoveryFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_FastRecovery(IVssBackupComponentsEx4* This,VSS_ID SnapshotSetID,DWORD dwFastRecoveryFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->FastRecovery(This,SnapshotSetID,dwFastRecoveryFlags,ppAsync);
+}
+/*** IVssBackupComponentsEx3 methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetWriterStatusEx(IVssBackupComponentsEx4* This,UINT iWriter,VSS_ID *pidInstance,VSS_ID *pidWriter,BSTR *pbstrWriter,VSS_WRITER_STATE *pnStatus,HRESULT *phrFailureWriter,HRESULT *phrApplication,BSTR *pbstrApplicationMessage) {
+ return This->lpVtbl->GetWriterStatusEx(This,iWriter,pidInstance,pidWriter,pbstrWriter,pnStatus,phrFailureWriter,phrApplication,pbstrApplicationMessage);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_AddSnapshotToRecoverySet(IVssBackupComponentsEx4* This,VSS_ID snapshotId,DWORD dwFlags,VSS_PWSZ pwszDestinationVolume) {
+ return This->lpVtbl->AddSnapshotToRecoverySet(This,snapshotId,dwFlags,pwszDestinationVolume);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_RecoverSet(IVssBackupComponentsEx4* This,DWORD dwFlags,IVssAsync **ppAsync) {
+ return This->lpVtbl->RecoverSet(This,dwFlags,ppAsync);
+}
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetSessionId(IVssBackupComponentsEx4* This,VSS_ID *idSession) {
+ return This->lpVtbl->GetSessionId(This,idSession);
+}
+/*** IVssBackupComponentsEx4 methods ***/
+static FORCEINLINE HRESULT IVssBackupComponentsEx4_GetRootAndLogicalPrefixPaths(IVssBackupComponentsEx4* This,VSS_PWSZ pwszFilePath,VSS_PWSZ *ppwszRootPath,VSS_PWSZ *ppwszLogicalPrefix,WINBOOL bNormalizeFQDNforRootPath) {
+ return This->lpVtbl->GetRootAndLogicalPrefixPaths(This,pwszFilePath,ppwszRootPath,ppwszLogicalPrefix,bNormalizeFQDNforRootPath);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssBackupComponentsEx4_INTERFACE_DEFINED__ */
+
+#define VSS_SW_BOOTABLE_STATE (1 << 0)
+HRESULT STDAPICALLTYPE CreateVssBackupComponentsInternal(IVssBackupComponents **ppBackup);
+HRESULT STDAPICALLTYPE CreateVssExamineWriterMetadataInternal(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata);
+HRESULT APIENTRY IsVolumeSnapshottedInternal(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability);
+void APIENTRY VssFreeSnapshotPropertiesInternal(VSS_SNAPSHOT_PROP *pProp);
+HRESULT APIENTRY GetProviderMgmtInterfaceInternal(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf);
+HRESULT APIENTRY ShouldBlockRevertInternal(LPCWSTR wszVolumeName, boolean *pbBlock);
+static __inline HRESULT CreateVssBackupComponents(IVssBackupComponents **ppBackup) { return CreateVssBackupComponentsInternal(ppBackup); }
+static __inline HRESULT CreateVssExamineWriterMetadata(BSTR bstrXML, IVssExamineWriterMetadata **ppMetadata) { return CreateVssExamineWriterMetadataInternal(bstrXML, ppMetadata); }
+static __inline HRESULT IsVolumeSnapshotted(VSS_PWSZ pwszVolumeName, WINBOOL *pbSnapshotsPresent, LONG *plSnapshotCapability) { return IsVolumeSnapshottedInternal(pwszVolumeName, pbSnapshotsPresent, plSnapshotCapability); }
+static __inline void VssFreeSnapshotProperties(VSS_SNAPSHOT_PROP *pProp) { return VssFreeSnapshotPropertiesInternal(pProp); }
+static __inline HRESULT GetProviderMgmtInterface(VSS_ID ProviderId, IID InterfaceId, IUnknown **ppItf) { return GetProviderMgmtInterfaceInternal(ProviderId, InterfaceId, ppItf); }
+static __inline HRESULT ShouldBlockRevert(LPCWSTR wszVolumeName, boolean *pbBlock) { return ShouldBlockRevertInternal(wszVolumeName, pbBlock); }
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void __RPC_USER BSTR_UserFree (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __vsbackup_h__ */
diff --git a/lib/libc/include/any-windows-any/vsmgmt.h b/lib/libc/include/any-windows-any/vsmgmt.h
index 7a11d285a7..4a4900cceb 100644
--- a/lib/libc/include/any-windows-any/vsmgmt.h
+++ b/lib/libc/include/any-windows-any/vsmgmt.h
@@ -1,337 +1,1088 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_VSMGT
-#define _INC_VSMGT
+/*** Autogenerated by WIDL 7.0 from include/vsmgmt.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __vsmgmt_h__
+#define __vsmgmt_h__
+
+/* Forward declarations */
+
+#ifndef __IVssSnapshotMgmt_FWD_DEFINED__
+#define __IVssSnapshotMgmt_FWD_DEFINED__
+typedef interface IVssSnapshotMgmt IVssSnapshotMgmt;
+#ifdef __cplusplus
+interface IVssSnapshotMgmt;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssSnapshotMgmt2_FWD_DEFINED__
+#define __IVssSnapshotMgmt2_FWD_DEFINED__
+typedef interface IVssSnapshotMgmt2 IVssSnapshotMgmt2;
+#ifdef __cplusplus
+interface IVssSnapshotMgmt2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__
+typedef interface IVssDifferentialSoftwareSnapshotMgmt IVssDifferentialSoftwareSnapshotMgmt;
+#ifdef __cplusplus
+interface IVssDifferentialSoftwareSnapshotMgmt;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt2_FWD_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt2_FWD_DEFINED__
+typedef interface IVssDifferentialSoftwareSnapshotMgmt2 IVssDifferentialSoftwareSnapshotMgmt2;
+#ifdef __cplusplus
+interface IVssDifferentialSoftwareSnapshotMgmt2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt3_FWD_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt3_FWD_DEFINED__
+typedef interface IVssDifferentialSoftwareSnapshotMgmt3 IVssDifferentialSoftwareSnapshotMgmt3;
+#ifdef __cplusplus
+interface IVssDifferentialSoftwareSnapshotMgmt3;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssEnumMgmtObject_FWD_DEFINED__
+#define __IVssEnumMgmtObject_FWD_DEFINED__
+typedef interface IVssEnumMgmtObject IVssEnumMgmtObject;
+#ifdef __cplusplus
+interface IVssEnumMgmtObject;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __VssSnapshotMgmt_FWD_DEFINED__
+#define __VssSnapshotMgmt_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class VssSnapshotMgmt VssSnapshotMgmt;
+#else
+typedef struct VssSnapshotMgmt VssSnapshotMgmt;
+#endif /* defined __cplusplus */
+#endif /* defined __VssSnapshotMgmt_FWD_DEFINED__ */
+
+/* Headers for imported files */
+#include <oaidl.h>
+#include <ocidl.h>
#include <vss.h>
#ifdef __cplusplus
extern "C" {
#endif
-typedef enum _VSS_PROTECTION_FAULT {
- VSS_PROTECTION_FAULT_NONE = 0,
- VSS_PROTECTION_FAULT_DIFF_AREA_MISSING = ( VSS_PROTECTION_FAULT_NONE + 1 ),
- VSS_PROTECTION_FAULT_IO_FAILURE_DURING_ONLINE = ( VSS_PROTECTION_FAULT_DIFF_AREA_MISSING + 1 ),
- VSS_PROTECTION_FAULT_META_DATA_CORRUPTION = ( VSS_PROTECTION_FAULT_IO_FAILURE_DURING_ONLINE + 1 ),
- VSS_PROTECTION_FAULT_MEMORY_ALLOCATION_FAILURE = ( VSS_PROTECTION_FAULT_META_DATA_CORRUPTION + 1 ),
- VSS_PROTECTION_FAULT_MAPPED_MEMORY_FAILURE = ( VSS_PROTECTION_FAULT_MEMORY_ALLOCATION_FAILURE + 1 ),
- VSS_PROTECTION_FAULT_COW_READ_FAILURE = ( VSS_PROTECTION_FAULT_MAPPED_MEMORY_FAILURE + 1 ),
- VSS_PROTECTION_FAULT_COW_WRITE_FAILURE = ( VSS_PROTECTION_FAULT_COW_READ_FAILURE + 1 ),
- VSS_PROTECTION_FAULT_DIFF_AREA_FULL = ( VSS_PROTECTION_FAULT_COW_WRITE_FAILURE + 1 ),
- VSS_PROTECTION_FAULT_GROW_TOO_SLOW = ( VSS_PROTECTION_FAULT_DIFF_AREA_FULL + 1 ),
- VSS_PROTECTION_FAULT_GROW_FAILED = ( VSS_PROTECTION_FAULT_GROW_TOO_SLOW + 1 ),
- VSS_PROTECTION_FAULT_DESTROY_ALL_SNAPSHOTS = ( VSS_PROTECTION_FAULT_GROW_FAILED + 1 ),
- VSS_PROTECTION_FAULT_FILE_SYSTEM_FAILURE = ( VSS_PROTECTION_FAULT_DESTROY_ALL_SNAPSHOTS + 1 ),
- VSS_PROTECTION_FAULT_IO_FAILURE = ( VSS_PROTECTION_FAULT_FILE_SYSTEM_FAILURE + 1 ),
- VSS_PROTECTION_FAULT_DIFF_AREA_REMOVED = ( VSS_PROTECTION_FAULT_IO_FAILURE + 1 ),
- VSS_PROTECTION_FAULT_EXTERNAL_WRITER_TO_DIFF_AREA = ( VSS_PROTECTION_FAULT_DIFF_AREA_REMOVED + 1 )
-} VSS_PROTECTION_FAULT;
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+typedef enum _VSS_MGMT_OBJECT_TYPE {
+ VSS_MGMT_OBJECT_UNKNOWN = 0,
+ VSS_MGMT_OBJECT_VOLUME = 1,
+ VSS_MGMT_OBJECT_DIFF_VOLUME = 2,
+ VSS_MGMT_OBJECT_DIFF_AREA = 3
+} VSS_MGMT_OBJECT_TYPE;
+typedef enum _VSS_MGMT_OBJECT_TYPE *PVSS_MGMT_OBJECT_TYPE;
+#define VSS_ASSOC_NO_MAX_SPACE (-1)
+#define VSS_ASSOC_REMOVE (0)
+
+typedef struct _VSS_VOLUME_PROP {
+ VSS_PWSZ m_pwszVolumeName;
+ VSS_PWSZ m_pwszVolumeDisplayName;
+} VSS_VOLUME_PROP;
+typedef struct _VSS_VOLUME_PROP *PVSS_VOLUME_PROP;
+typedef struct _VSS_DIFF_VOLUME_PROP {
+ VSS_PWSZ m_pwszVolumeName;
+ VSS_PWSZ m_pwszVolumeDisplayName;
+ LONGLONG m_llVolumeFreeSpace;
+ LONGLONG m_llVolumeTotalSpace;
+} VSS_DIFF_VOLUME_PROP;
+typedef struct _VSS_DIFF_VOLUME_PROP *PVSS_DIFF_VOLUME_PROP;
+typedef struct _VSS_DIFF_AREA_PROP {
+ VSS_PWSZ m_pwszVolumeName;
+ VSS_PWSZ m_pwszDiffAreaVolumeName;
+ LONGLONG m_llMaximumDiffSpace;
+ LONGLONG m_llAllocatedDiffSpace;
+ LONGLONG m_llUsedDiffSpace;
+} VSS_DIFF_AREA_PROP;
+typedef struct _VSS_DIFF_AREA_PROP *PVSS_DIFF_AREA_PROP;
+typedef union __WIDL_vsmgmt_generated_name_00000021 {
+ VSS_VOLUME_PROP Vol;
+ VSS_DIFF_VOLUME_PROP DiffVol;
+ VSS_DIFF_AREA_PROP DiffArea;
+} VSS_MGMT_OBJECT_UNION;
+typedef union __WIDL_vsmgmt_generated_name_00000021 *PVSS_MGMT_OBJECT_UNION;
+typedef struct _VSS_MGMT_OBJECT_PROP {
+ VSS_MGMT_OBJECT_TYPE Type;
+ VSS_MGMT_OBJECT_UNION Obj;
+} VSS_MGMT_OBJECT_PROP;
+typedef struct _VSS_MGMT_OBJECT_PROP *PVSS_MGMT_OBJECT_PROP;
typedef enum _VSS_PROTECTION_LEVEL {
- VSS_PROTECTION_LEVEL_ORIGINAL_VOLUME = 0,
- VSS_PROTECTION_LEVEL_SNAPSHOT = ( VSS_PROTECTION_LEVEL_ORIGINAL_VOLUME + 1 )
+ VSS_PROTECTION_LEVEL_ORIGINAL_VOLUME = 0,
+ VSS_PROTECTION_LEVEL_SNAPSHOT = 1
} VSS_PROTECTION_LEVEL;
+typedef enum _VSS_PROTECTION_LEVEL *PVSS_PROTECTION_LEVEL;
+typedef enum _VSS_PROTECTION_FAULT {
+ VSS_PROTECTION_FAULT_NONE = 0,
+ VSS_PROTECTION_FAULT_DIFF_AREA_MISSING = 1,
+ VSS_PROTECTION_FAULT_IO_FAILURE_DURING_ONLINE = 2,
+ VSS_PROTECTION_FAULT_META_DATA_CORRUPTION = 3,
+ VSS_PROTECTION_FAULT_MEMORY_ALLOCATION_FAILURE = 4,
+ VSS_PROTECTION_FAULT_MAPPED_MEMORY_FAILURE = 5,
+ VSS_PROTECTION_FAULT_COW_READ_FAILURE = 6,
+ VSS_PROTECTION_FAULT_COW_WRITE_FAILURE = 7,
+ VSS_PROTECTION_FAULT_DIFF_AREA_FULL = 8,
+ VSS_PROTECTION_FAULT_GROW_TOO_SLOW = 9,
+ VSS_PROTECTION_FAULT_GROW_FAILED = 10,
+ VSS_PROTECTION_FAULT_DESTROY_ALL_SNAPSHOTS = 11,
+ VSS_PROTECTION_FAULT_FILE_SYSTEM_FAILURE = 12,
+ VSS_PROTECTION_FAULT_IO_FAILURE = 13,
+ VSS_PROTECTION_FAULT_DIFF_AREA_REMOVED = 14,
+ VSS_PROTECTION_FAULT_EXTERNAL_WRITER_TO_DIFF_AREA = 15,
+ VSS_PROTECTION_FAULT_MOUNT_DURING_CLUSTER_OFFLINE = 16
+} VSS_PROTECTION_FAULT;
+typedef enum _VSS_PROTECTION_FAULT *PVSS_PROTECTION_FAULT;
+typedef struct _VSS_VOLUME_PROTECTION_INFO {
+ VSS_PROTECTION_LEVEL m_protectionLevel;
+ WINBOOL m_volumeIsOfflineForProtection;
+ VSS_PROTECTION_FAULT m_protectionFault;
+ LONG m_failureStatus;
+ WINBOOL m_volumeHasUnusedDiffArea;
+ DWORD m_reserved;
+} VSS_VOLUME_PROTECTION_INFO;
+typedef struct _VSS_VOLUME_PROTECTION_INFO *PVSS_VOLUME_PROTECTION_INFO;
+#ifndef __IVssSnapshotMgmt_FWD_DEFINED__
+#define __IVssSnapshotMgmt_FWD_DEFINED__
+typedef interface IVssSnapshotMgmt IVssSnapshotMgmt;
+#ifdef __cplusplus
+interface IVssSnapshotMgmt;
+#endif /* __cplusplus */
+#endif
-typedef enum _VSS_MGMT_OBJECT_TYPE {
- VSS_MGMT_OBJECT_UNKNOWN = 0,
- VSS_MGMT_OBJECT_VOLUME = 1,
- VSS_MGMT_OBJECT_DIFF_VOLUME = 2,
- VSS_MGMT_OBJECT_DIFF_AREA = 3
-} VSS_MGMT_OBJECT_TYPE, *PVSS_MGMT_OBJECT_TYPE;
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt_FWD_DEFINED__
+typedef interface IVssDifferentialSoftwareSnapshotMgmt IVssDifferentialSoftwareSnapshotMgmt;
+#ifdef __cplusplus
+interface IVssDifferentialSoftwareSnapshotMgmt;
+#endif /* __cplusplus */
+#endif
-typedef struct _VSS_VOLUME_PROP {
- VSS_PWSZ m_pwszVolumeName;
- VSS_PWSZ m_pwszVolumeDisplayName;
-} VSS_VOLUME_PROP, *PVSS_VOLUME_PROP;
+#ifndef __IVssEnumMgmtObject_FWD_DEFINED__
+#define __IVssEnumMgmtObject_FWD_DEFINED__
+typedef interface IVssEnumMgmtObject IVssEnumMgmtObject;
+#ifdef __cplusplus
+interface IVssEnumMgmtObject;
+#endif /* __cplusplus */
+#endif
-typedef struct _VSS_VOLUME_PROTECTION_INFO {
- VSS_PROTECTION_LEVEL m_protectionLevel;
- WINBOOL m_volumeIsOfflineForProtection;
- VSS_PROTECTION_FAULT m_protectionFault;
- LONG m_failureStatus;
- WINBOOL m_volumeHasUnusedDiffArea;
- DWORD m_reserved;
-} VSS_VOLUME_PROTECTION_INFO;
+/*****************************************************************************
+ * IVssSnapshotMgmt interface
+ */
+#ifndef __IVssSnapshotMgmt_INTERFACE_DEFINED__
+#define __IVssSnapshotMgmt_INTERFACE_DEFINED__
-#if (_WIN32_WINNT >= 0x0600)
+DEFINE_GUID(IID_IVssSnapshotMgmt, 0xfa7df749, 0x66e7, 0x4986, 0xa2,0x7f, 0xe2,0xf0,0x4a,0xe5,0x37,0x72);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fa7df749-66e7-4986-a27f-e2f04ae53772")
+IVssSnapshotMgmt : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetProviderMgmtInterface(
+ VSS_ID ProviderId,
+ REFIID InterfaceId,
+ IUnknown **ppItf) = 0;
-typedef struct _VSS_DIFF_AREA_PROP {
- VSS_PWSZ m_pwszVolumeName;
- VSS_PWSZ m_pwszDiffAreaVolumeName;
- LONGLONG m_llMaximumDiffSpace;
- LONGLONG m_llAllocatedDiffSpace;
- LONGLONG m_llUsedDiffSpace;
-} VSS_DIFF_AREA_PROP, *PVSS_DIFF_AREA_PROP;
+ virtual HRESULT STDMETHODCALLTYPE QueryVolumesSupportedForSnapshots(
+ VSS_ID ProviderId,
+ LONG lContext,
+ IVssEnumMgmtObject **ppEnum) = 0;
-typedef struct _VSS_DIFF_VOLUME_PROP {
- VSS_PWSZ m_pwszVolumeName;
- VSS_PWSZ m_pwszVolumeDisplayName;
- LONGLONG m_llVolumeFreeSpace;
- LONGLONG m_llVolumeTotalSpace;
-} VSS_DIFF_VOLUME_PROP, *PVSS_DIFF_VOLUME_PROP;
-
-typedef union _VSS_MGMT_OBJECT_UNION {
- VSS_VOLUME_PROP Vol;
- VSS_DIFF_VOLUME_PROP DiffVol;
- VSS_DIFF_AREA_PROP DiffArea;
-} VSS_MGMT_OBJECT_UNION, *PVSS_MGMT_OBJECT_UNION;
+ virtual HRESULT STDMETHODCALLTYPE QuerySnapshotsByVolume(
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ IVssEnumObject **ppEnum) = 0;
-typedef struct _VSS_MGMT_OBJECT_PROP {
- VSS_MGMT_OBJECT_TYPE Type;
- VSS_MGMT_OBJECT_UNION Obj;
-} VSS_MGMT_OBJECT_PROP, *PVSS_MGMT_OBJECT_PROP;
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssSnapshotMgmt, 0xfa7df749, 0x66e7, 0x4986, 0xa2,0x7f, 0xe2,0xf0,0x4a,0xe5,0x37,0x72)
+#endif
+#else
+typedef struct IVssSnapshotMgmtVtbl {
+ BEGIN_INTERFACE
-#endif /* (_WIN32_WINNT >= 0x0600) */
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssSnapshotMgmt *This,
+ REFIID riid,
+ void **ppvObject);
-#ifdef __cplusplus
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssSnapshotMgmt *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssSnapshotMgmt *This);
+
+ /*** IVssSnapshotMgmt methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetProviderMgmtInterface)(
+ IVssSnapshotMgmt *This,
+ VSS_ID ProviderId,
+ REFIID InterfaceId,
+ IUnknown **ppItf);
+
+ HRESULT (STDMETHODCALLTYPE *QueryVolumesSupportedForSnapshots)(
+ IVssSnapshotMgmt *This,
+ VSS_ID ProviderId,
+ LONG lContext,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QuerySnapshotsByVolume)(
+ IVssSnapshotMgmt *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_ID ProviderId,
+ IVssEnumObject **ppEnum);
+
+ END_INTERFACE
+} IVssSnapshotMgmtVtbl;
+
+interface IVssSnapshotMgmt {
+ CONST_VTBL IVssSnapshotMgmtVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssSnapshotMgmt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssSnapshotMgmt_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssSnapshotMgmt_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssSnapshotMgmt methods ***/
+#define IVssSnapshotMgmt_GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf) (This)->lpVtbl->GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf)
+#define IVssSnapshotMgmt_QueryVolumesSupportedForSnapshots(This,ProviderId,lContext,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForSnapshots(This,ProviderId,lContext,ppEnum)
+#define IVssSnapshotMgmt_QuerySnapshotsByVolume(This,pwszVolumeName,ProviderId,ppEnum) (This)->lpVtbl->QuerySnapshotsByVolume(This,pwszVolumeName,ProviderId,ppEnum)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssSnapshotMgmt_QueryInterface(IVssSnapshotMgmt* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssSnapshotMgmt_AddRef(IVssSnapshotMgmt* This) {
+ return This->lpVtbl->AddRef(This);
}
+static FORCEINLINE ULONG IVssSnapshotMgmt_Release(IVssSnapshotMgmt* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssSnapshotMgmt methods ***/
+static FORCEINLINE HRESULT IVssSnapshotMgmt_GetProviderMgmtInterface(IVssSnapshotMgmt* This,VSS_ID ProviderId,REFIID InterfaceId,IUnknown **ppItf) {
+ return This->lpVtbl->GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf);
+}
+static FORCEINLINE HRESULT IVssSnapshotMgmt_QueryVolumesSupportedForSnapshots(IVssSnapshotMgmt* This,VSS_ID ProviderId,LONG lContext,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryVolumesSupportedForSnapshots(This,ProviderId,lContext,ppEnum);
+}
+static FORCEINLINE HRESULT IVssSnapshotMgmt_QuerySnapshotsByVolume(IVssSnapshotMgmt* This,VSS_PWSZ pwszVolumeName,VSS_ID ProviderId,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->QuerySnapshotsByVolume(This,pwszVolumeName,ProviderId,ppEnum);
+}
+#endif
#endif
-#undef INTERFACE
-#define INTERFACE IVssDifferentialSoftwareSnapshotMgmt
-/*IID_IVssDifferentialSoftwareSnapshotMgmt is defined as 214A0F28-B737-4026-B847-4F9E37D79529*/
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssDifferentialSoftwareSnapshotMgmt,IUnknown)
+
+
+#endif /* __IVssSnapshotMgmt_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssSnapshotMgmt2 interface
+ */
+#ifndef __IVssSnapshotMgmt2_INTERFACE_DEFINED__
+#define __IVssSnapshotMgmt2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssSnapshotMgmt2, 0x0f61ec39, 0xfe82, 0x45f2, 0xa3,0xf0, 0x76,0x8b,0x5d,0x42,0x71,0x02);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0f61ec39-fe82-45f2-a3f0-768b5d427102")
+IVssSnapshotMgmt2 : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE GetMinDiffAreaSize(
+ LONGLONG *pllMinDiffAreaSize) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssSnapshotMgmt2, 0x0f61ec39, 0xfe82, 0x45f2, 0xa3,0xf0, 0x76,0x8b,0x5d,0x42,0x71,0x02)
+#endif
+#else
+typedef struct IVssSnapshotMgmt2Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssSnapshotMgmt2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssSnapshotMgmt2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssSnapshotMgmt2 *This);
- /* IVssDifferentialSoftwareSnapshotMgmt methods */
- STDMETHOD_(HRESULT,AddDiffArea)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE;
- STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSize)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE;
- STDMETHOD_(HRESULT,QueryVolumesSupportedForDiffAreas)(THIS_ VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasForVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasOnVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasForSnapshot)(THIS_ VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,Opmun08NotUsedOnWire)(THIS) PURE; /* Reserved */
+ /*** IVssSnapshotMgmt2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetMinDiffAreaSize)(
+ IVssSnapshotMgmt2 *This,
+ LONGLONG *pllMinDiffAreaSize);
END_INTERFACE
+} IVssSnapshotMgmt2Vtbl;
+
+interface IVssSnapshotMgmt2 {
+ CONST_VTBL IVssSnapshotMgmt2Vtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssSnapshotMgmt2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssSnapshotMgmt2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssSnapshotMgmt2_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssSnapshotMgmt2 methods ***/
+#define IVssSnapshotMgmt2_GetMinDiffAreaSize(This,pllMinDiffAreaSize) (This)->lpVtbl->GetMinDiffAreaSize(This,pllMinDiffAreaSize)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssSnapshotMgmt2_QueryInterface(IVssSnapshotMgmt2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssSnapshotMgmt2_AddRef(IVssSnapshotMgmt2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssSnapshotMgmt2_Release(IVssSnapshotMgmt2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssSnapshotMgmt2 methods ***/
+static FORCEINLINE HRESULT IVssSnapshotMgmt2_GetMinDiffAreaSize(IVssSnapshotMgmt2* This,LONGLONG *pllMinDiffAreaSize) {
+ return This->lpVtbl->GetMinDiffAreaSize(This,pllMinDiffAreaSize);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssSnapshotMgmt2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssDifferentialSoftwareSnapshotMgmt interface
+ */
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt_INTERFACE_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssDifferentialSoftwareSnapshotMgmt, 0x214a0f28, 0xb737, 0x4026, 0xb8,0x47, 0x4f,0x9e,0x37,0xd7,0x95,0x29);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("214a0f28-b737-4026-b847-4f9e37d79529")
+IVssDifferentialSoftwareSnapshotMgmt : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE AddDiffArea(
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ChangeDiffAreaMaximumSize(
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryVolumesSupportedForDiffAreas(
+ VSS_PWSZ pwszOriginalVolumeName,
+ IVssEnumMgmtObject **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryDiffAreasForVolume(
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryDiffAreasOnVolume(
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryDiffAreasForSnapshot(
+ VSS_ID SnapshotId,
+ IVssEnumMgmtObject **ppEnum) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssDifferentialSoftwareSnapshotMgmt, 0x214a0f28, 0xb737, 0x4026, 0xb8,0x47, 0x4f,0x9e,0x37,0xd7,0x95,0x29)
+#endif
+#else
+typedef struct IVssDifferentialSoftwareSnapshotMgmtVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssDifferentialSoftwareSnapshotMgmt *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssDifferentialSoftwareSnapshotMgmt *This);
+
+ /*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddDiffArea)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace);
+
+ HRESULT (STDMETHODCALLTYPE *ChangeDiffAreaMaximumSize)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace);
+
+ HRESULT (STDMETHODCALLTYPE *QueryVolumesSupportedForDiffAreas)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ VSS_PWSZ pwszOriginalVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasForVolume)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasOnVolume)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasForSnapshot)(
+ IVssDifferentialSoftwareSnapshotMgmt *This,
+ VSS_ID SnapshotId,
+ IVssEnumMgmtObject **ppEnum);
+
+ END_INTERFACE
+} IVssDifferentialSoftwareSnapshotMgmtVtbl;
+
+interface IVssDifferentialSoftwareSnapshotMgmt {
+ CONST_VTBL IVssDifferentialSoftwareSnapshotMgmtVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssDifferentialSoftwareSnapshotMgmt_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssDifferentialSoftwareSnapshotMgmt_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt_AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace)
#define IVssDifferentialSoftwareSnapshotMgmt_ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace)
#define IVssDifferentialSoftwareSnapshotMgmt_QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) (This)->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum)
-#define IVssDifferentialSoftwareSnapshotMgmt_Opmun08NotUsedOnWire(This)
-#endif /*COBJMACROS*/
-
-#if (_WIN32_WINNT >= 0x0600)
-#undef INTERFACE
-#define INTERFACE IVssDifferentialSoftwareSnapshotMgmt2
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssDifferentialSoftwareSnapshotMgmt2,IVssDifferentialSoftwareSnapshotMgmt)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_QueryInterface(IVssDifferentialSoftwareSnapshotMgmt* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssDifferentialSoftwareSnapshotMgmt_AddRef(IVssDifferentialSoftwareSnapshotMgmt* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssDifferentialSoftwareSnapshotMgmt_Release(IVssDifferentialSoftwareSnapshotMgmt* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_AddDiffArea(IVssDifferentialSoftwareSnapshotMgmt* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) {
+ return This->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_ChangeDiffAreaMaximumSize(IVssDifferentialSoftwareSnapshotMgmt* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) {
+ return This->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_QueryVolumesSupportedForDiffAreas(IVssDifferentialSoftwareSnapshotMgmt* This,VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForVolume(IVssDifferentialSoftwareSnapshotMgmt* This,VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasOnVolume(IVssDifferentialSoftwareSnapshotMgmt* This,VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForSnapshot(IVssDifferentialSoftwareSnapshotMgmt* This,VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssDifferentialSoftwareSnapshotMgmt_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssDifferentialSoftwareSnapshotMgmt2 interface
+ */
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt2_INTERFACE_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssDifferentialSoftwareSnapshotMgmt2, 0x949d7353, 0x675f, 0x4275, 0x89,0x69, 0xf0,0x44,0xc6,0x27,0x78,0x15);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("949d7353-675f-4275-8969-f044c6277815")
+IVssDifferentialSoftwareSnapshotMgmt2 : public IVssDifferentialSoftwareSnapshotMgmt
{
+ virtual HRESULT STDMETHODCALLTYPE ChangeDiffAreaMaximumSizeEx(
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace,
+ WINBOOL bVolatile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MigrateDiffAreas(
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ VSS_PWSZ pwszNewDiffAreaVolumeName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryMigrationStatus(
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSnapshotPriority(
+ VSS_ID idSnapshot,
+ BYTE priority) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssDifferentialSoftwareSnapshotMgmt2, 0x949d7353, 0x675f, 0x4275, 0x89,0x69, 0xf0,0x44,0xc6,0x27,0x78,0x15)
+#endif
+#else
+typedef struct IVssDifferentialSoftwareSnapshotMgmt2Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssDifferentialSoftwareSnapshotMgmt methods */
- STDMETHOD_(HRESULT,AddDiffArea)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE;
- STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSize)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE;
- STDMETHOD_(HRESULT,QueryVolumesSupportedForDiffAreas)(THIS_ VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasForVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasOnVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasForSnapshot)(THIS_ VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) PURE;
-
- /* IVssDifferentialSoftwareSnapshotMgmt2 methods */
- STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSizeEx)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace,WINBOOL bVolatile) PURE;
- STDMETHOD_(HRESULT,MigrateDiffAreas)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,QueryMigrationStatus)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,SetSnapshotPriority)(THIS) PURE; /*Unsupported*/
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This);
+
+ /*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddDiffArea)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace);
+
+ HRESULT (STDMETHODCALLTYPE *ChangeDiffAreaMaximumSize)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace);
+
+ HRESULT (STDMETHODCALLTYPE *QueryVolumesSupportedForDiffAreas)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszOriginalVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasForVolume)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasOnVolume)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasForSnapshot)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_ID SnapshotId,
+ IVssEnumMgmtObject **ppEnum);
+
+ /*** IVssDifferentialSoftwareSnapshotMgmt2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *ChangeDiffAreaMaximumSizeEx)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace,
+ WINBOOL bVolatile);
+
+ HRESULT (STDMETHODCALLTYPE *MigrateDiffAreas)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ VSS_PWSZ pwszNewDiffAreaVolumeName);
+
+ HRESULT (STDMETHODCALLTYPE *QueryMigrationStatus)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetSnapshotPriority)(
+ IVssDifferentialSoftwareSnapshotMgmt2 *This,
+ VSS_ID idSnapshot,
+ BYTE priority);
END_INTERFACE
+} IVssDifferentialSoftwareSnapshotMgmt2Vtbl;
+
+interface IVssDifferentialSoftwareSnapshotMgmt2 {
+ CONST_VTBL IVssDifferentialSoftwareSnapshotMgmt2Vtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssDifferentialSoftwareSnapshotMgmt2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssDifferentialSoftwareSnapshotMgmt2_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt2_AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace)
#define IVssDifferentialSoftwareSnapshotMgmt2_ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace)
#define IVssDifferentialSoftwareSnapshotMgmt2_QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) (This)->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum)
+/*** IVssDifferentialSoftwareSnapshotMgmt2 methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt2_ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile) (This)->lpVtbl->ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile)
-#define IVssDifferentialSoftwareSnapshotMgmt2_MigrateDiffAreas() (This)->lpVtbl->MigrateDiffAreas(This)
-#define IVssDifferentialSoftwareSnapshotMgmt2_QueryMigrationStatus() (This)->lpVtbl->QueryMigrationStatus(This)
-#define IVssDifferentialSoftwareSnapshotMgmt2_SetSnapshotPriority() (This)->lpVtbl->SetSnapshotPriority(This)
-#endif /*COBJMACROS*/
-
-#undef INTERFACE
-#define INTERFACE IVssDifferentialSoftwareSnapshotMgmt3
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssDifferentialSoftwareSnapshotMgmt3,IVssDifferentialSoftwareSnapshotMgmt2)
+#define IVssDifferentialSoftwareSnapshotMgmt2_MigrateDiffAreas(This,pwszVolumeName,pwszDiffAreaVolumeName,pwszNewDiffAreaVolumeName) (This)->lpVtbl->MigrateDiffAreas(This,pwszVolumeName,pwszDiffAreaVolumeName,pwszNewDiffAreaVolumeName)
+#define IVssDifferentialSoftwareSnapshotMgmt2_QueryMigrationStatus(This,pwszVolumeName,pwszDiffAreaVolumeName,ppAsync) (This)->lpVtbl->QueryMigrationStatus(This,pwszVolumeName,pwszDiffAreaVolumeName,ppAsync)
+#define IVssDifferentialSoftwareSnapshotMgmt2_SetSnapshotPriority(This,idSnapshot,priority) (This)->lpVtbl->SetSnapshotPriority(This,idSnapshot,priority)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_QueryInterface(IVssDifferentialSoftwareSnapshotMgmt2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssDifferentialSoftwareSnapshotMgmt2_AddRef(IVssDifferentialSoftwareSnapshotMgmt2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssDifferentialSoftwareSnapshotMgmt2_Release(IVssDifferentialSoftwareSnapshotMgmt2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_AddDiffArea(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) {
+ return This->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_ChangeDiffAreaMaximumSize(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) {
+ return This->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_QueryVolumesSupportedForDiffAreas(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasForVolume(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasOnVolume(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_QueryDiffAreasForSnapshot(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum);
+}
+/*** IVssDifferentialSoftwareSnapshotMgmt2 methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_ChangeDiffAreaMaximumSizeEx(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace,WINBOOL bVolatile) {
+ return This->lpVtbl->ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_MigrateDiffAreas(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,VSS_PWSZ pwszNewDiffAreaVolumeName) {
+ return This->lpVtbl->MigrateDiffAreas(This,pwszVolumeName,pwszDiffAreaVolumeName,pwszNewDiffAreaVolumeName);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_QueryMigrationStatus(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryMigrationStatus(This,pwszVolumeName,pwszDiffAreaVolumeName,ppAsync);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt2_SetSnapshotPriority(IVssDifferentialSoftwareSnapshotMgmt2* This,VSS_ID idSnapshot,BYTE priority) {
+ return This->lpVtbl->SetSnapshotPriority(This,idSnapshot,priority);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssDifferentialSoftwareSnapshotMgmt2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssDifferentialSoftwareSnapshotMgmt3 interface
+ */
+#ifndef __IVssDifferentialSoftwareSnapshotMgmt3_INTERFACE_DEFINED__
+#define __IVssDifferentialSoftwareSnapshotMgmt3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssDifferentialSoftwareSnapshotMgmt3, 0x383f7e71, 0xa4c5, 0x401f, 0xb2,0x7f, 0xf8,0x26,0x28,0x9f,0x84,0x58);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("383f7e71-a4c5-401f-b27f-f826289f8458")
+IVssDifferentialSoftwareSnapshotMgmt3 : public IVssDifferentialSoftwareSnapshotMgmt2
{
+ virtual HRESULT STDMETHODCALLTYPE SetVolumeProtectLevel(
+ VSS_PWSZ pwszVolumeName,
+ VSS_PROTECTION_LEVEL protectionLevel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVolumeProtectLevel(
+ VSS_PWSZ pwszVolumeName,
+ VSS_VOLUME_PROTECTION_INFO *protectionLevel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearVolumeProtectFault(
+ VSS_PWSZ pwszVolumeName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteUnusedDiffAreas(
+ VSS_PWSZ pwszDiffAreaVolumeName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QuerySnapshotDeltaBitmap(
+ VSS_ID idSnapshotOlder,
+ VSS_ID idSnapshotYounger,
+ ULONG *pcBlockSizePerBit,
+ ULONG *pcBitmapLength,
+ BYTE **ppbBitmap) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssDifferentialSoftwareSnapshotMgmt3, 0x383f7e71, 0xa4c5, 0x401f, 0xb2,0x7f, 0xf8,0x26,0x28,0x9f,0x84,0x58)
+#endif
+#else
+typedef struct IVssDifferentialSoftwareSnapshotMgmt3Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssDifferentialSoftwareSnapshotMgmt methods */
- STDMETHOD_(HRESULT,AddDiffArea)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE;
- STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSize)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) PURE;
- STDMETHOD_(HRESULT,QueryVolumesSupportedForDiffAreas)(THIS_ VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasForVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasOnVolume)(THIS_ VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,QueryDiffAreasForSnapshot)(THIS_ VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) PURE;
-
- /* IVssDifferentialSoftwareSnapshotMgmt2 methods */
- STDMETHOD_(HRESULT,ChangeDiffAreaMaximumSizeEx)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace,WINBOOL bVolatile) PURE;
- STDMETHOD_(HRESULT,MigrateDiffAreas)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,QueryMigrationStatus)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,SetSnapshotPriority)(THIS) PURE; /*Unsupported*/
-
- /* IVssDifferentialSoftwareSnapshotMgmt3 methods */
- STDMETHOD_(HRESULT,SetVolumeProtectLevel)(THIS_ VSS_PWSZ pwszVolumeName,VSS_PROTECTION_LEVEL protectionLevel) PURE;
- STDMETHOD_(HRESULT,GetVolumeProtectLevel)(THIS_ VSS_PWSZ pwszVolumeName,VSS_VOLUME_PROTECTION_INFO *protectionLevel) PURE;
- STDMETHOD_(HRESULT,ClearVolumeProtectFault)(THIS_ VSS_PWSZ pwszVolumeName) PURE;
- STDMETHOD_(HRESULT,DeleteUnusedDiffAreas)(THIS_ VSS_PWSZ pwszDiffAreaVolumeName) PURE;
- STDMETHOD_(HRESULT,QuerySnapshotDeltaBitmap)(THIS) PURE; /*Unsupported*/
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This);
+
+ /*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddDiffArea)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace);
+
+ HRESULT (STDMETHODCALLTYPE *ChangeDiffAreaMaximumSize)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace);
+
+ HRESULT (STDMETHODCALLTYPE *QueryVolumesSupportedForDiffAreas)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszOriginalVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasForVolume)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasOnVolume)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ IVssEnumMgmtObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *QueryDiffAreasForSnapshot)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_ID SnapshotId,
+ IVssEnumMgmtObject **ppEnum);
+
+ /*** IVssDifferentialSoftwareSnapshotMgmt2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *ChangeDiffAreaMaximumSizeEx)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ LONGLONG llMaximumDiffSpace,
+ WINBOOL bVolatile);
+
+ HRESULT (STDMETHODCALLTYPE *MigrateDiffAreas)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ VSS_PWSZ pwszNewDiffAreaVolumeName);
+
+ HRESULT (STDMETHODCALLTYPE *QueryMigrationStatus)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PWSZ pwszDiffAreaVolumeName,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *SetSnapshotPriority)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_ID idSnapshot,
+ BYTE priority);
+
+ /*** IVssDifferentialSoftwareSnapshotMgmt3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetVolumeProtectLevel)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_PROTECTION_LEVEL protectionLevel);
+
+ HRESULT (STDMETHODCALLTYPE *GetVolumeProtectLevel)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName,
+ VSS_VOLUME_PROTECTION_INFO *protectionLevel);
+
+ HRESULT (STDMETHODCALLTYPE *ClearVolumeProtectFault)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszVolumeName);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteUnusedDiffAreas)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_PWSZ pwszDiffAreaVolumeName);
+
+ HRESULT (STDMETHODCALLTYPE *QuerySnapshotDeltaBitmap)(
+ IVssDifferentialSoftwareSnapshotMgmt3 *This,
+ VSS_ID idSnapshotOlder,
+ VSS_ID idSnapshotYounger,
+ ULONG *pcBlockSizePerBit,
+ ULONG *pcBitmapLength,
+ BYTE **ppbBitmap);
END_INTERFACE
+} IVssDifferentialSoftwareSnapshotMgmt3Vtbl;
+
+interface IVssDifferentialSoftwareSnapshotMgmt3 {
+ CONST_VTBL IVssDifferentialSoftwareSnapshotMgmt3Vtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssDifferentialSoftwareSnapshotMgmt3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssDifferentialSoftwareSnapshotMgmt3_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt3_AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace)
#define IVssDifferentialSoftwareSnapshotMgmt3_ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace) (This)->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace)
#define IVssDifferentialSoftwareSnapshotMgmt3_QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum) (This)->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum) (This)->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum)
#define IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum) (This)->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum)
+/*** IVssDifferentialSoftwareSnapshotMgmt2 methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt3_ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile) (This)->lpVtbl->ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile)
-#define IVssDifferentialSoftwareSnapshotMgmt3_MigrateDiffAreas() (This)->lpVtbl->MigrateDiffAreas(This)
-#define IVssDifferentialSoftwareSnapshotMgmt3_QueryMigrationStatus() (This)->lpVtbl->QueryMigrationStatus(This)
-#define IVssDifferentialSoftwareSnapshotMgmt3_SetSnapshotPriority() (This)->lpVtbl->SetSnapshotPriority(This)
+#define IVssDifferentialSoftwareSnapshotMgmt3_MigrateDiffAreas(This,pwszVolumeName,pwszDiffAreaVolumeName,pwszNewDiffAreaVolumeName) (This)->lpVtbl->MigrateDiffAreas(This,pwszVolumeName,pwszDiffAreaVolumeName,pwszNewDiffAreaVolumeName)
+#define IVssDifferentialSoftwareSnapshotMgmt3_QueryMigrationStatus(This,pwszVolumeName,pwszDiffAreaVolumeName,ppAsync) (This)->lpVtbl->QueryMigrationStatus(This,pwszVolumeName,pwszDiffAreaVolumeName,ppAsync)
+#define IVssDifferentialSoftwareSnapshotMgmt3_SetSnapshotPriority(This,idSnapshot,priority) (This)->lpVtbl->SetSnapshotPriority(This,idSnapshot,priority)
+/*** IVssDifferentialSoftwareSnapshotMgmt3 methods ***/
#define IVssDifferentialSoftwareSnapshotMgmt3_SetVolumeProtectLevel(This,pwszVolumeName,protectionLevel) (This)->lpVtbl->SetVolumeProtectLevel(This,pwszVolumeName,protectionLevel)
#define IVssDifferentialSoftwareSnapshotMgmt3_GetVolumeProtectLevel(This,pwszVolumeName,protectionLevel) (This)->lpVtbl->GetVolumeProtectLevel(This,pwszVolumeName,protectionLevel)
#define IVssDifferentialSoftwareSnapshotMgmt3_ClearVolumeProtectFault(This,pwszVolumeName) (This)->lpVtbl->ClearVolumeProtectFault(This,pwszVolumeName)
#define IVssDifferentialSoftwareSnapshotMgmt3_DeleteUnusedDiffAreas(This,pwszDiffAreaVolumeName) (This)->lpVtbl->DeleteUnusedDiffAreas(This,pwszDiffAreaVolumeName)
-#define IVssDifferentialSoftwareSnapshotMgmt3_QuerySnapshotDeltaBitmap() (This)->lpVtbl->QuerySnapshotDeltaBitmap(This)
-#endif /*COBJMACROS*/
-
-#undef INTERFACE
-#define INTERFACE IVssEnumMgmtObject
-/*IID_IVssEnumMgmtObject is defined as 01954E6B-9254-4e6e-808C-C9E05D007696*/
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssEnumMgmtObject,IUnknown)
+#define IVssDifferentialSoftwareSnapshotMgmt3_QuerySnapshotDeltaBitmap(This,idSnapshotOlder,idSnapshotYounger,pcBlockSizePerBit,pcBitmapLength,ppbBitmap) (This)->lpVtbl->QuerySnapshotDeltaBitmap(This,idSnapshotOlder,idSnapshotYounger,pcBlockSizePerBit,pcBitmapLength,ppbBitmap)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QueryInterface(IVssDifferentialSoftwareSnapshotMgmt3* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssDifferentialSoftwareSnapshotMgmt3_AddRef(IVssDifferentialSoftwareSnapshotMgmt3* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssDifferentialSoftwareSnapshotMgmt3_Release(IVssDifferentialSoftwareSnapshotMgmt3* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssDifferentialSoftwareSnapshotMgmt methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_AddDiffArea(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) {
+ return This->lpVtbl->AddDiffArea(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_ChangeDiffAreaMaximumSize(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace) {
+ return This->lpVtbl->ChangeDiffAreaMaximumSize(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QueryVolumesSupportedForDiffAreas(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszOriginalVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryVolumesSupportedForDiffAreas(This,pwszOriginalVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasForVolume(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasForVolume(This,pwszVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasOnVolume(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasOnVolume(This,pwszVolumeName,ppEnum);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QueryDiffAreasForSnapshot(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_ID SnapshotId,IVssEnumMgmtObject **ppEnum) {
+ return This->lpVtbl->QueryDiffAreasForSnapshot(This,SnapshotId,ppEnum);
+}
+/*** IVssDifferentialSoftwareSnapshotMgmt2 methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_ChangeDiffAreaMaximumSizeEx(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,LONGLONG llMaximumDiffSpace,WINBOOL bVolatile) {
+ return This->lpVtbl->ChangeDiffAreaMaximumSizeEx(This,pwszVolumeName,pwszDiffAreaVolumeName,llMaximumDiffSpace,bVolatile);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_MigrateDiffAreas(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,VSS_PWSZ pwszNewDiffAreaVolumeName) {
+ return This->lpVtbl->MigrateDiffAreas(This,pwszVolumeName,pwszDiffAreaVolumeName,pwszNewDiffAreaVolumeName);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QueryMigrationStatus(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_PWSZ pwszDiffAreaVolumeName,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryMigrationStatus(This,pwszVolumeName,pwszDiffAreaVolumeName,ppAsync);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_SetSnapshotPriority(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_ID idSnapshot,BYTE priority) {
+ return This->lpVtbl->SetSnapshotPriority(This,idSnapshot,priority);
+}
+/*** IVssDifferentialSoftwareSnapshotMgmt3 methods ***/
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_SetVolumeProtectLevel(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_PROTECTION_LEVEL protectionLevel) {
+ return This->lpVtbl->SetVolumeProtectLevel(This,pwszVolumeName,protectionLevel);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_GetVolumeProtectLevel(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName,VSS_VOLUME_PROTECTION_INFO *protectionLevel) {
+ return This->lpVtbl->GetVolumeProtectLevel(This,pwszVolumeName,protectionLevel);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_ClearVolumeProtectFault(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszVolumeName) {
+ return This->lpVtbl->ClearVolumeProtectFault(This,pwszVolumeName);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_DeleteUnusedDiffAreas(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_PWSZ pwszDiffAreaVolumeName) {
+ return This->lpVtbl->DeleteUnusedDiffAreas(This,pwszDiffAreaVolumeName);
+}
+static FORCEINLINE HRESULT IVssDifferentialSoftwareSnapshotMgmt3_QuerySnapshotDeltaBitmap(IVssDifferentialSoftwareSnapshotMgmt3* This,VSS_ID idSnapshotOlder,VSS_ID idSnapshotYounger,ULONG *pcBlockSizePerBit,ULONG *pcBitmapLength,BYTE **ppbBitmap) {
+ return This->lpVtbl->QuerySnapshotDeltaBitmap(This,idSnapshotOlder,idSnapshotYounger,pcBlockSizePerBit,pcBitmapLength,ppbBitmap);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssDifferentialSoftwareSnapshotMgmt3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssEnumMgmtObject interface
+ */
+#ifndef __IVssEnumMgmtObject_INTERFACE_DEFINED__
+#define __IVssEnumMgmtObject_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssEnumMgmtObject, 0x01954e6b, 0x9254, 0x4e6e, 0x80,0x8c, 0xc9,0xe0,0x5d,0x00,0x76,0x96);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("01954e6b-9254-4e6e-808c-c9e05d007696")
+IVssEnumMgmtObject : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE Next(
+ ULONG celt,
+ VSS_MGMT_OBJECT_PROP *rgelt,
+ ULONG *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ IVssEnumMgmtObject **ppenum) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssEnumMgmtObject, 0x01954e6b, 0x9254, 0x4e6e, 0x80,0x8c, 0xc9,0xe0,0x5d,0x00,0x76,0x96)
+#endif
+#else
+typedef struct IVssEnumMgmtObjectVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssEnumMgmtObject *This,
+ REFIID riid,
+ void **ppvObject);
- /* IVssEnumMgmtObject methods */
- STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt,VSS_MGMT_OBJECT_PROP *rgelt,ULONG *pceltFetched) PURE;
- STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE;
- STDMETHOD_(HRESULT,Reset)(THIS) PURE;
- STDMETHOD_(HRESULT,Clone)(THIS_ IVssEnumMgmtObject **ppenum) PURE;
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssEnumMgmtObject *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssEnumMgmtObject *This);
+
+ /*** IVssEnumMgmtObject methods ***/
+ HRESULT (STDMETHODCALLTYPE *Next)(
+ IVssEnumMgmtObject *This,
+ ULONG celt,
+ VSS_MGMT_OBJECT_PROP *rgelt,
+ ULONG *pceltFetched);
+
+ HRESULT (STDMETHODCALLTYPE *Skip)(
+ IVssEnumMgmtObject *This,
+ ULONG celt);
+
+ HRESULT (STDMETHODCALLTYPE *Reset)(
+ IVssEnumMgmtObject *This);
+
+ HRESULT (STDMETHODCALLTYPE *Clone)(
+ IVssEnumMgmtObject *This,
+ IVssEnumMgmtObject **ppenum);
END_INTERFACE
+} IVssEnumMgmtObjectVtbl;
+
+interface IVssEnumMgmtObject {
+ CONST_VTBL IVssEnumMgmtObjectVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssEnumMgmtObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssEnumMgmtObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssEnumMgmtObject_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssEnumMgmtObject methods ***/
#define IVssEnumMgmtObject_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IVssEnumMgmtObject_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
-#define IVssEnumMgmtObject_Reset() (This)->lpVtbl->Reset(This)
+#define IVssEnumMgmtObject_Reset(This) (This)->lpVtbl->Reset(This)
#define IVssEnumMgmtObject_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
-#endif /*COBJMACROS*/
-
-#endif /* (_WIN32_WINNT >= 0x0600) */
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssEnumMgmtObject_QueryInterface(IVssEnumMgmtObject* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssEnumMgmtObject_AddRef(IVssEnumMgmtObject* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssEnumMgmtObject_Release(IVssEnumMgmtObject* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssEnumMgmtObject methods ***/
+static FORCEINLINE HRESULT IVssEnumMgmtObject_Next(IVssEnumMgmtObject* This,ULONG celt,VSS_MGMT_OBJECT_PROP *rgelt,ULONG *pceltFetched) {
+ return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
+}
+static FORCEINLINE HRESULT IVssEnumMgmtObject_Skip(IVssEnumMgmtObject* This,ULONG celt) {
+ return This->lpVtbl->Skip(This,celt);
+}
+static FORCEINLINE HRESULT IVssEnumMgmtObject_Reset(IVssEnumMgmtObject* This) {
+ return This->lpVtbl->Reset(This);
+}
+static FORCEINLINE HRESULT IVssEnumMgmtObject_Clone(IVssEnumMgmtObject* This,IVssEnumMgmtObject **ppenum) {
+ return This->lpVtbl->Clone(This,ppenum);
+}
+#endif
+#endif
-#undef INTERFACE
-#define INTERFACE IVssSnapshotMgmt
-/*IID_IVssSnapshotMgmt is defined as FA7DF749-66E7-4986-A27F-E2F04AE53772*/
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssSnapshotMgmt,IUnknown)
-{
- BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
- /* IVssSnapshotMgmt methods */
- STDMETHOD_(HRESULT,GetProviderMgmtInterface)(THIS_ VSS_ID ProviderId,REFIID InterfaceId,IUnknown **ppItf) PURE;
- STDMETHOD_(HRESULT,QueryVolumesSupportedForSnapshots)(THIS) PURE; /*Unsupported*/
- STDMETHOD_(HRESULT,QuerySnapshotsByVolume)(THIS) PURE; /*Unsupported*/
+#endif /* __IVssEnumMgmtObject_INTERFACE_DEFINED__ */
- END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IVssSnapshotMgmt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssSnapshotMgmt_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssSnapshotMgmt_Release(This) (This)->lpVtbl->Release(This)
-#define IVssSnapshotMgmt_GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf) (This)->lpVtbl->GetProviderMgmtInterface(This,ProviderId,InterfaceId,ppItf)
-#define IVssSnapshotMgmt_QueryVolumesSupportedForSnapshots() (This)->lpVtbl->QueryVolumesSupportedForSnapshots(This)
-#define IVssSnapshotMgmt_QuerySnapshotsByVolume() (This)->lpVtbl->QuerySnapshotsByVolume(This)
-#endif /*COBJMACROS*/
+#ifndef __VSMGMT_LIBRARY_DEFINED__
+#define __VSMGMT_LIBRARY_DEFINED__
-#undef INTERFACE
-#define INTERFACE IVssSnapshotMgmt2
-DECLARE_INTERFACE_(IVssSnapshotMgmt2,IUnknown)
-{
- BEGIN_INTERFACE
+DEFINE_GUID(LIBID_VSMGMT, 0x84015c41, 0x291d, 0x49e6, 0xbf,0x7f, 0xdd,0x40,0xae,0x93,0x63,0x2b);
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+/*****************************************************************************
+ * VssSnapshotMgmt coclass
+ */
- /* IVssSnapshotMgmt2 methods */
- STDMETHOD_(HRESULT,GetMinDiffAreaSize)(THIS_ LONGLONG *pllMinDiffAreaSize) PURE;
+DEFINE_GUID(CLSID_VssSnapshotMgmt, 0x0b5a2c52, 0x3eb9, 0x470a, 0x96,0xe2, 0x6c,0x6d,0x45,0x70,0xe4,0x0f);
- END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IVssSnapshotMgmt2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssSnapshotMgmt2_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssSnapshotMgmt2_Release(This) (This)->lpVtbl->Release(This)
-#define IVssSnapshotMgmt2_GetMinDiffAreaSize(This,pllMinDiffAreaSize) (This)->lpVtbl->GetMinDiffAreaSize(This,pllMinDiffAreaSize)
-#endif /*COBJMACROS*/
+#ifdef __cplusplus
+class DECLSPEC_UUID("0b5a2c52-3eb9-470a-96e2-6c6d4570e40f") VssSnapshotMgmt;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(VssSnapshotMgmt, 0x0b5a2c52, 0x3eb9, 0x470a, 0x96,0xe2, 0x6c,0x6d,0x45,0x70,0xe4,0x0f)
+#endif
+#endif
+
+#endif /* __VSMGMT_LIBRARY_DEFINED__ */
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
-#endif /*_INC_VSMGT*/
+#endif /* __vsmgmt_h__ */
diff --git a/lib/libc/include/any-windows-any/vsprov.h b/lib/libc/include/any-windows-any/vsprov.h
index 9bee9ac662..aee5414e3e 100644
--- a/lib/libc/include/any-windows-any/vsprov.h
+++ b/lib/libc/include/any-windows-any/vsprov.h
@@ -1,130 +1,408 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_VSPROV
-#define _INC_VSPROV
+/*** Autogenerated by WIDL 7.0 from include/vsprov.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __vsprov_h__
+#define __vsprov_h__
+
+/* Forward declarations */
+
+#ifndef __IVssSoftwareSnapshotProvider_FWD_DEFINED__
+#define __IVssSoftwareSnapshotProvider_FWD_DEFINED__
+typedef interface IVssSoftwareSnapshotProvider IVssSoftwareSnapshotProvider;
+#ifdef __cplusplus
+interface IVssSoftwareSnapshotProvider;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssProviderCreateSnapshotSet_FWD_DEFINED__
+#define __IVssProviderCreateSnapshotSet_FWD_DEFINED__
+typedef interface IVssProviderCreateSnapshotSet IVssProviderCreateSnapshotSet;
+#ifdef __cplusplus
+interface IVssProviderCreateSnapshotSet;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssProviderNotifications_FWD_DEFINED__
+#define __IVssProviderNotifications_FWD_DEFINED__
+typedef interface IVssProviderNotifications IVssProviderNotifications;
+#ifdef __cplusplus
+interface IVssProviderNotifications;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssHardwareSnapshotProvider_FWD_DEFINED__
+#define __IVssHardwareSnapshotProvider_FWD_DEFINED__
+typedef interface IVssHardwareSnapshotProvider IVssHardwareSnapshotProvider;
+#ifdef __cplusplus
+interface IVssHardwareSnapshotProvider;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssHardwareSnapshotProviderEx_FWD_DEFINED__
+#define __IVssHardwareSnapshotProviderEx_FWD_DEFINED__
+typedef interface IVssHardwareSnapshotProviderEx IVssHardwareSnapshotProviderEx;
+#ifdef __cplusplus
+interface IVssHardwareSnapshotProviderEx;
+#endif /* __cplusplus */
+#endif
+#ifndef __IVssFileShareSnapshotProvider_FWD_DEFINED__
+#define __IVssFileShareSnapshotProvider_FWD_DEFINED__
+typedef interface IVssFileShareSnapshotProvider IVssFileShareSnapshotProvider;
+#ifdef __cplusplus
+interface IVssFileShareSnapshotProvider;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
#include <vss.h>
-#include <vds.h>
-#undef INTERFACE
-#define INTERFACE IVssHardwareSnapshotProvider
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssHardwareSnapshotProvider,IUnknown)
+#include <vdslun.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#ifndef __IVssSnapshotProvider_FWD_DEFINED__
+#define __IVssSnapshotProvider_FWD_DEFINED__
+typedef interface IVssSnapshotProvider IVssSnapshotProvider;
+#ifdef __cplusplus
+interface IVssSnapshotProvider;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssProviderNotifications_FWD_DEFINED__
+#define __IVssProviderNotifications_FWD_DEFINED__
+typedef interface IVssProviderNotifications IVssProviderNotifications;
+#ifdef __cplusplus
+interface IVssProviderNotifications;
+#endif /* __cplusplus */
+#endif
+
+typedef VSS_PWSZ *PVSS_PWSZ;
+/*****************************************************************************
+ * IVssSoftwareSnapshotProvider interface
+ */
+#ifndef __IVssSoftwareSnapshotProvider_INTERFACE_DEFINED__
+#define __IVssSoftwareSnapshotProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssSoftwareSnapshotProvider, 0x609e123e, 0x2c5a, 0x44d3, 0x8f,0x01, 0x0b,0x1d,0x9a,0x47,0xd1,0xff);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("609e123e-2c5a-44d3-8f01-0b1d9a47d1ff")
+IVssSoftwareSnapshotProvider : public IUnknown
{
- BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE SetContext(
+ LONG lContext) = 0;
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ virtual HRESULT STDMETHODCALLTYPE GetSnapshotProperties(
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp) = 0;
- /* IVssHardwareSnapshotProvider methods */
- STDMETHOD_(HRESULT,AreLunsSupported)(THIS_ LONG lLunCount,LONG lContext,VSS_PWSZ *rgwszDevices,VDS_LUN_INFORMATION *pLunInformation,WINBOOL *pbIsSupported) PURE;
- STDMETHOD_(HRESULT,FillInLunInfo)(THIS_ VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pLunInfo,WINBOOL *pbIsSupported) PURE;
- STDMETHOD_(HRESULT,BeginPrepareSnapshot)(THIS_ VSS_ID SnapshotSetId,VSS_ID SnapshotId,LONG lContext,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgLunInformation) PURE;
- STDMETHOD_(HRESULT,GetTargetLuns)(THIS_ LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgSourceLuns,VDS_LUN_INFORMATION *rgDestinationLuns) PURE;
- STDMETHOD_(HRESULT,LocateLuns)(THIS_ LONG lLunCount,VDS_LUN_INFORMATION *rgSourceLuns) PURE;
- STDMETHOD_(HRESULT,OnLunEmpty)(THIS_ VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pInformation) PURE;
+ virtual HRESULT STDMETHODCALLTYPE Query(
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum) = 0;
- END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IVssHardwareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssHardwareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssHardwareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
-#define IVssHardwareSnapshotProvider_AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported) (This)->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported)
-#define IVssHardwareSnapshotProvider_FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported) (This)->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported)
-#define IVssHardwareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation)
-#define IVssHardwareSnapshotProvider_GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns) (This)->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns)
-#define IVssHardwareSnapshotProvider_LocateLuns(This,lLunCount,rgSourceLuns) (This)->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns)
-#define IVssHardwareSnapshotProvider_OnLunEmpty(This,wszDeviceName,pInformation) (This)->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation)
-#endif /*COBJMACROS*/
+ virtual HRESULT STDMETHODCALLTYPE DeleteSnapshots(
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BeginPrepareSnapshot(
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ VSS_PWSZ pwszVolumeName,
+ LONG lNewContext) = 0;
-#undef INTERFACE
-#define INTERFACE IVssHardwareSnapshotProviderEx
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+ virtual HRESULT STDMETHODCALLTYPE IsVolumeSupported(
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsVolumeSnapshotted(
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSnapshotsPresent,
+ LONG *plSnapshotCompatibility) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSnapshotProperty(
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
+ VARIANT vProperty) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevertToSnapshot(
+ VSS_ID SnapshotId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryRevertStatus(
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssSoftwareSnapshotProvider, 0x609e123e, 0x2c5a, 0x44d3, 0x8f,0x01, 0x0b,0x1d,0x9a,0x47,0xd1,0xff)
#endif
-DECLARE_INTERFACE_(IVssHardwareSnapshotProviderEx,IVssHardwareSnapshotProvider)
-{
+#else
+typedef struct IVssSoftwareSnapshotProviderVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssHardwareSnapshotProvider methods */
- STDMETHOD_(HRESULT,AreLunsSupported)(THIS_ LONG lLunCount,LONG lContext,VSS_PWSZ *rgwszDevices,VDS_LUN_INFORMATION *pLunInformation,WINBOOL *pbIsSupported) PURE;
- STDMETHOD_(HRESULT,FillInLunInfo)(THIS_ VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pLunInfo,WINBOOL *pbIsSupported) PURE;
- STDMETHOD_(HRESULT,BeginPrepareSnapshot)(THIS_ VSS_ID SnapshotSetId,VSS_ID SnapshotId,LONG lContext,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgLunInformation) PURE;
- STDMETHOD_(HRESULT,GetTargetLuns)(THIS_ LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgSourceLuns,VDS_LUN_INFORMATION *rgDestinationLuns) PURE;
- STDMETHOD_(HRESULT,LocateLuns)(THIS_ LONG lLunCount,VDS_LUN_INFORMATION *rgSourceLuns) PURE;
- STDMETHOD_(HRESULT,OnLunEmpty)(THIS_ VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pInformation) PURE;
-
- /* IVssHardwareSnapshotProviderEx methods */
- STDMETHOD_(HRESULT,GetProviderCapabilities)(THIS) PURE;
- STDMETHOD_(HRESULT,OnLunStateChange)(THIS_ VDS_LUN_INFORMATION *pSnapshotLuns,VDS_LUN_INFORMATION *pOriginalLuns,DWORD dwCount,DWORD dwFlags) PURE;
- STDMETHOD_(HRESULT,OnReuseLuns)(THIS) PURE;
- STDMETHOD_(HRESULT,ResyncLuns)(THIS_ VDS_LUN_INFORMATION *pSourceLuns,VDS_LUN_INFORMATION *pTargetLuns,DWORD dwCount,IVssAsync **ppAsync) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssSoftwareSnapshotProvider *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssSoftwareSnapshotProvider *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssSoftwareSnapshotProvider *This);
+
+ /*** IVssSoftwareSnapshotProvider methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssSoftwareSnapshotProvider *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ VSS_PWSZ pwszVolumeName,
+ LONG lNewContext);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSupported)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *IsVolumeSnapshotted)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_PWSZ pwszVolumeName,
+ WINBOOL *pbSnapshotsPresent,
+ LONG *plSnapshotCompatibility);
+
+ HRESULT (STDMETHODCALLTYPE *SetSnapshotProperty)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
+ VARIANT vProperty);
+
+ HRESULT (STDMETHODCALLTYPE *RevertToSnapshot)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_ID SnapshotId);
+
+ HRESULT (STDMETHODCALLTYPE *QueryRevertStatus)(
+ IVssSoftwareSnapshotProvider *This,
+ VSS_PWSZ pwszVolume,
+ IVssAsync **ppAsync);
END_INTERFACE
+} IVssSoftwareSnapshotProviderVtbl;
+
+interface IVssSoftwareSnapshotProvider {
+ CONST_VTBL IVssSoftwareSnapshotProviderVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
-#define IVssHardwareSnapshotProviderEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssHardwareSnapshotProviderEx_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssHardwareSnapshotProviderEx_Release(This) (This)->lpVtbl->Release(This)
-#define IVssHardwareSnapshotProviderEx_AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported) (This)->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported)
-#define IVssHardwareSnapshotProviderEx_FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported) (This)->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported)
-#define IVssHardwareSnapshotProviderEx_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation)
-#define IVssHardwareSnapshotProviderEx_GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns) (This)->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns)
-#define IVssHardwareSnapshotProviderEx_LocateLuns(This,lLunCount,rgSourceLuns) (This)->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns)
-#define IVssHardwareSnapshotProviderEx_OnLunEmpty(This,wszDeviceName,pInformation) (This)->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation)
-#define IVssHardwareSnapshotProviderEx_GetProviderCapabilities() (This)->lpVtbl->GetProviderCapabilities(This)
-#define IVssHardwareSnapshotProviderEx_OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags) (This)->lpVtbl->OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags)
-#define IVssHardwareSnapshotProviderEx_OnReuseLuns() (This)->lpVtbl->OnReuseLuns(This)
-#define IVssHardwareSnapshotProviderEx_ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync) (This)->lpVtbl->ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync)
-#endif /*COBJMACROS*/
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssSoftwareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssSoftwareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssSoftwareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssSoftwareSnapshotProvider methods ***/
+#define IVssSoftwareSnapshotProvider_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
+#define IVssSoftwareSnapshotProvider_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
+#define IVssSoftwareSnapshotProvider_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
+#define IVssSoftwareSnapshotProvider_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
+#define IVssSoftwareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext)
+#define IVssSoftwareSnapshotProvider_IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider)
+#define IVssSoftwareSnapshotProvider_IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility) (This)->lpVtbl->IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility)
+#define IVssSoftwareSnapshotProvider_SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty) (This)->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty)
+#define IVssSoftwareSnapshotProvider_RevertToSnapshot(This,SnapshotId) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId)
+#define IVssSoftwareSnapshotProvider_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_QueryInterface(IVssSoftwareSnapshotProvider* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssSoftwareSnapshotProvider_AddRef(IVssSoftwareSnapshotProvider* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssSoftwareSnapshotProvider_Release(IVssSoftwareSnapshotProvider* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssSoftwareSnapshotProvider methods ***/
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_SetContext(IVssSoftwareSnapshotProvider* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_GetSnapshotProperties(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_Query(IVssSoftwareSnapshotProvider* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_DeleteSnapshots(IVssSoftwareSnapshotProvider* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_BeginPrepareSnapshot(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,VSS_PWSZ pwszVolumeName,LONG lNewContext) {
+ return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_IsVolumeSupported(IVssSoftwareSnapshotProvider* This,VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_IsVolumeSnapshotted(IVssSoftwareSnapshotProvider* This,VSS_PWSZ pwszVolumeName,WINBOOL *pbSnapshotsPresent,LONG *plSnapshotCompatibility) {
+ return This->lpVtbl->IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_SetSnapshotProperty(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,VARIANT vProperty) {
+ return This->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_RevertToSnapshot(IVssSoftwareSnapshotProvider* This,VSS_ID SnapshotId) {
+ return This->lpVtbl->RevertToSnapshot(This,SnapshotId);
+}
+static FORCEINLINE HRESULT IVssSoftwareSnapshotProvider_QueryRevertStatus(IVssSoftwareSnapshotProvider* This,VSS_PWSZ pwszVolume,IVssAsync **ppAsync) {
+ return This->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync);
+}
+#endif
+#endif
-#undef INTERFACE
-#define INTERFACE IVssProviderCreateSnapshotSet
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssProviderCreateSnapshotSet,IUnknown)
+
+
+#endif /* __IVssSoftwareSnapshotProvider_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssProviderCreateSnapshotSet interface
+ */
+#ifndef __IVssProviderCreateSnapshotSet_INTERFACE_DEFINED__
+#define __IVssProviderCreateSnapshotSet_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssProviderCreateSnapshotSet, 0x5f894e5b, 0x1e39, 0x4778, 0x8e,0x23, 0x9a,0xba,0xd9,0xf0,0xe0,0x8c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5f894e5b-1e39-4778-8e23-9abad9f0e08c")
+IVssProviderCreateSnapshotSet : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE EndPrepareSnapshots(
+ VSS_ID SnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PreCommitSnapshots(
+ VSS_ID SnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CommitSnapshots(
+ VSS_ID SnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostCommitSnapshots(
+ VSS_ID SnapshotSetId,
+ LONG lSnapshotsCount) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PreFinalCommitSnapshots(
+ VSS_ID SnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostFinalCommitSnapshots(
+ VSS_ID SnapshotSetId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AbortSnapshots(
+ VSS_ID SnapshotSetId) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssProviderCreateSnapshotSet, 0x5f894e5b, 0x1e39, 0x4778, 0x8e,0x23, 0x9a,0xba,0xd9,0xf0,0xe0,0x8c)
+#endif
+#else
+typedef struct IVssProviderCreateSnapshotSetVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssProviderCreateSnapshotSet *This,
+ REFIID riid,
+ void **ppvObject);
- /* IVssProviderCreateSnapshotSet methods */
- STDMETHOD_(HRESULT,EndPrepareSnapshots)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,PreCommitSnapshots)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,CommitSnapshots)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,PostCommitSnapshots)(THIS_ VSS_ID SnapshotSetId,LONG lSnapshotsCount) PURE;
- STDMETHOD_(HRESULT,PreFinalCommitSnapshots)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,PostFinalCommitSnapshots)(THIS_ VSS_ID SnapshotSetId) PURE;
- STDMETHOD_(HRESULT,AbortSnapshots)(THIS_ VSS_ID SnapshotSetId) PURE;
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssProviderCreateSnapshotSet *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssProviderCreateSnapshotSet *This);
+
+ /*** IVssProviderCreateSnapshotSet methods ***/
+ HRESULT (STDMETHODCALLTYPE *EndPrepareSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *PreCommitSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *CommitSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *PostCommitSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId,
+ LONG lSnapshotsCount);
+
+ HRESULT (STDMETHODCALLTYPE *PreFinalCommitSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *PostFinalCommitSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId);
+
+ HRESULT (STDMETHODCALLTYPE *AbortSnapshots)(
+ IVssProviderCreateSnapshotSet *This,
+ VSS_ID SnapshotSetId);
END_INTERFACE
+} IVssProviderCreateSnapshotSetVtbl;
+
+interface IVssProviderCreateSnapshotSet {
+ CONST_VTBL IVssProviderCreateSnapshotSetVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssProviderCreateSnapshotSet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssProviderCreateSnapshotSet_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssProviderCreateSnapshotSet_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssProviderCreateSnapshotSet methods ***/
#define IVssProviderCreateSnapshotSet_EndPrepareSnapshots(This,SnapshotSetId) (This)->lpVtbl->EndPrepareSnapshots(This,SnapshotSetId)
#define IVssProviderCreateSnapshotSet_PreCommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->PreCommitSnapshots(This,SnapshotSetId)
#define IVssProviderCreateSnapshotSet_CommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->CommitSnapshots(This,SnapshotSetId)
@@ -132,77 +410,698 @@ DECLARE_INTERFACE_(IVssProviderCreateSnapshotSet,IUnknown)
#define IVssProviderCreateSnapshotSet_PreFinalCommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->PreFinalCommitSnapshots(This,SnapshotSetId)
#define IVssProviderCreateSnapshotSet_PostFinalCommitSnapshots(This,SnapshotSetId) (This)->lpVtbl->PostFinalCommitSnapshots(This,SnapshotSetId)
#define IVssProviderCreateSnapshotSet_AbortSnapshots(This,SnapshotSetId) (This)->lpVtbl->AbortSnapshots(This,SnapshotSetId)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_QueryInterface(IVssProviderCreateSnapshotSet* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssProviderCreateSnapshotSet_AddRef(IVssProviderCreateSnapshotSet* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssProviderCreateSnapshotSet_Release(IVssProviderCreateSnapshotSet* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssProviderCreateSnapshotSet methods ***/
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_EndPrepareSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->EndPrepareSnapshots(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_PreCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->PreCommitSnapshots(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_CommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->CommitSnapshots(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_PostCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId,LONG lSnapshotsCount) {
+ return This->lpVtbl->PostCommitSnapshots(This,SnapshotSetId,lSnapshotsCount);
+}
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_PreFinalCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->PreFinalCommitSnapshots(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_PostFinalCommitSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->PostFinalCommitSnapshots(This,SnapshotSetId);
+}
+static FORCEINLINE HRESULT IVssProviderCreateSnapshotSet_AbortSnapshots(IVssProviderCreateSnapshotSet* This,VSS_ID SnapshotSetId) {
+ return This->lpVtbl->AbortSnapshots(This,SnapshotSetId);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssProviderCreateSnapshotSet_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssProviderNotifications interface
+ */
+#ifndef __IVssProviderNotifications_INTERFACE_DEFINED__
+#define __IVssProviderNotifications_INTERFACE_DEFINED__
-#undef INTERFACE
-#define INTERFACE IVssProviderNotifications
-DECLARE_INTERFACE_(IVssProviderNotifications,IUnknown)
+DEFINE_GUID(IID_IVssProviderNotifications, 0xe561901f, 0x03a5, 0x4afe, 0x86,0xd0, 0x72,0xba,0xee,0xce,0x70,0x04);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e561901f-03a5-4afe-86d0-72baeece7004")
+IVssProviderNotifications : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE OnLoad(
+ IUnknown *pCallback) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUnload(
+ WINBOOL bForceUnload) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssProviderNotifications, 0xe561901f, 0x03a5, 0x4afe, 0x86,0xd0, 0x72,0xba,0xee,0xce,0x70,0x04)
+#endif
+#else
+typedef struct IVssProviderNotificationsVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssProviderNotifications *This,
+ REFIID riid,
+ void **ppvObject);
- /* IVssProviderNotifications methods */
- STDMETHOD_(HRESULT,OnLoad)(THIS_ IUnknown *pCallback) PURE;
- STDMETHOD_(HRESULT,OnUnload)(THIS_ WINBOOL bForceUnload) PURE;
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssProviderNotifications *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssProviderNotifications *This);
+
+ /*** IVssProviderNotifications methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnLoad)(
+ IVssProviderNotifications *This,
+ IUnknown *pCallback);
+
+ HRESULT (STDMETHODCALLTYPE *OnUnload)(
+ IVssProviderNotifications *This,
+ WINBOOL bForceUnload);
END_INTERFACE
+} IVssProviderNotificationsVtbl;
+
+interface IVssProviderNotifications {
+ CONST_VTBL IVssProviderNotificationsVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssProviderNotifications_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssProviderNotifications_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssProviderNotifications_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssProviderNotifications methods ***/
#define IVssProviderNotifications_OnLoad(This,pCallback) (This)->lpVtbl->OnLoad(This,pCallback)
#define IVssProviderNotifications_OnUnload(This,bForceUnload) (This)->lpVtbl->OnUnload(This,bForceUnload)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssProviderNotifications_QueryInterface(IVssProviderNotifications* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssProviderNotifications_AddRef(IVssProviderNotifications* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssProviderNotifications_Release(IVssProviderNotifications* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssProviderNotifications methods ***/
+static FORCEINLINE HRESULT IVssProviderNotifications_OnLoad(IVssProviderNotifications* This,IUnknown *pCallback) {
+ return This->lpVtbl->OnLoad(This,pCallback);
+}
+static FORCEINLINE HRESULT IVssProviderNotifications_OnUnload(IVssProviderNotifications* This,WINBOOL bForceUnload) {
+ return This->lpVtbl->OnUnload(This,bForceUnload);
+}
+#endif
+#endif
-#undef INTERFACE
-#define INTERFACE IVssSoftwareSnapshotProvider
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssSoftwareSnapshotProvider,IUnknown)
+
+
+#endif /* __IVssProviderNotifications_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssHardwareSnapshotProvider interface
+ */
+#ifndef __IVssHardwareSnapshotProvider_INTERFACE_DEFINED__
+#define __IVssHardwareSnapshotProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssHardwareSnapshotProvider, 0x9593a157, 0x44e9, 0x4344, 0xbb,0xeb, 0x44,0xfb,0xf9,0xb0,0x6b,0x10);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9593a157-44e9-4344-bbeb-44fbf9b06b10")
+IVssHardwareSnapshotProvider : public IUnknown
{
+ virtual HRESULT STDMETHODCALLTYPE AreLunsSupported(
+ LONG lLunCount,
+ LONG lContext,
+ VSS_PWSZ *rgwszDevices,
+ VDS_LUN_INFORMATION *pLunInformation,
+ WINBOOL *pbIsSupported) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FillInLunInfo(
+ VSS_PWSZ wszDeviceName,
+ VDS_LUN_INFORMATION *pLunInfo,
+ WINBOOL *pbIsSupported) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BeginPrepareSnapshot(
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ LONG lContext,
+ LONG lLunCount,
+ VSS_PWSZ *rgDeviceNames,
+ VDS_LUN_INFORMATION *rgLunInformation) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTargetLuns(
+ LONG lLunCount,
+ VSS_PWSZ *rgDeviceNames,
+ VDS_LUN_INFORMATION *rgSourceLuns,
+ VDS_LUN_INFORMATION *rgDestinationLuns) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LocateLuns(
+ LONG lLunCount,
+ VDS_LUN_INFORMATION *rgSourceLuns) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnLunEmpty(
+ VSS_PWSZ wszDeviceName,
+ VDS_LUN_INFORMATION *pInformation) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssHardwareSnapshotProvider, 0x9593a157, 0x44e9, 0x4344, 0xbb,0xeb, 0x44,0xfb,0xf9,0xb0,0x6b,0x10)
+#endif
+#else
+typedef struct IVssHardwareSnapshotProviderVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssSoftwareSnapshotProvider methods */
- STDMETHOD_(HRESULT,SetContext)(THIS_ LONG lContext) PURE;
- STDMETHOD_(HRESULT,GetSnapshotProperties)(THIS_ VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) PURE;
- STDMETHOD_(HRESULT,Query)(THIS_ VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) PURE;
- STDMETHOD_(HRESULT,DeleteSnapshots)(THIS_ VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) PURE;
- STDMETHOD_(HRESULT,BeginPrepareSnapshot)(THIS_ VSS_ID SnapshotSetId,VSS_ID SnapshotId,VSS_PWSZ pwszVolumeName,LONG lNewContext) PURE;
- STDMETHOD_(HRESULT,IsVolumeSupported)(THIS_ VSS_PWSZ pwszVolumeName,WINBOOL *pbSupportedByThisProvider) PURE;
- STDMETHOD_(HRESULT,IsVolumeSnapshotted)(THIS_ VSS_PWSZ pwszVolumeName,WINBOOL *pbSnapshotsPresent,LONG *plSnapshotCompatibility) PURE;
- STDMETHOD_(HRESULT,SetSnapshotProperty)(THIS_ VSS_ID SnapshotId,VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,VARIANT vProperty) PURE;
- STDMETHOD_(HRESULT,RevertToSnapshot)(THIS_ VSS_ID SnapshotId) PURE;
- STDMETHOD_(HRESULT,QueryRevertStatus)(THIS_ VSS_PWSZ pwszVolume,IVssAsync **ppAsync) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssHardwareSnapshotProvider *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssHardwareSnapshotProvider *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssHardwareSnapshotProvider *This);
+
+ /*** IVssHardwareSnapshotProvider methods ***/
+ HRESULT (STDMETHODCALLTYPE *AreLunsSupported)(
+ IVssHardwareSnapshotProvider *This,
+ LONG lLunCount,
+ LONG lContext,
+ VSS_PWSZ *rgwszDevices,
+ VDS_LUN_INFORMATION *pLunInformation,
+ WINBOOL *pbIsSupported);
+
+ HRESULT (STDMETHODCALLTYPE *FillInLunInfo)(
+ IVssHardwareSnapshotProvider *This,
+ VSS_PWSZ wszDeviceName,
+ VDS_LUN_INFORMATION *pLunInfo,
+ WINBOOL *pbIsSupported);
+
+ HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
+ IVssHardwareSnapshotProvider *This,
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ LONG lContext,
+ LONG lLunCount,
+ VSS_PWSZ *rgDeviceNames,
+ VDS_LUN_INFORMATION *rgLunInformation);
+
+ HRESULT (STDMETHODCALLTYPE *GetTargetLuns)(
+ IVssHardwareSnapshotProvider *This,
+ LONG lLunCount,
+ VSS_PWSZ *rgDeviceNames,
+ VDS_LUN_INFORMATION *rgSourceLuns,
+ VDS_LUN_INFORMATION *rgDestinationLuns);
+
+ HRESULT (STDMETHODCALLTYPE *LocateLuns)(
+ IVssHardwareSnapshotProvider *This,
+ LONG lLunCount,
+ VDS_LUN_INFORMATION *rgSourceLuns);
+
+ HRESULT (STDMETHODCALLTYPE *OnLunEmpty)(
+ IVssHardwareSnapshotProvider *This,
+ VSS_PWSZ wszDeviceName,
+ VDS_LUN_INFORMATION *pInformation);
END_INTERFACE
+} IVssHardwareSnapshotProviderVtbl;
+
+interface IVssHardwareSnapshotProvider {
+ CONST_VTBL IVssHardwareSnapshotProviderVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
-#define IVssSoftwareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssSoftwareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssSoftwareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
-#define IVssSoftwareSnapshotProvider_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
-#define IVssSoftwareSnapshotProvider_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
-#define IVssSoftwareSnapshotProvider_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
-#define IVssSoftwareSnapshotProvider_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
-#define IVssSoftwareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszVolumeName,lNewContext)
-#define IVssSoftwareSnapshotProvider_IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider) (This)->lpVtbl->IsVolumeSupported(This,pwszVolumeName,pbSupportedByThisProvider)
-#define IVssSoftwareSnapshotProvider_IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility) (This)->lpVtbl->IsVolumeSnapshotted(This,pwszVolumeName,pbSnapshotsPresent,plSnapshotCompatibility)
-#define IVssSoftwareSnapshotProvider_SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty) (This)->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty)
-#define IVssSoftwareSnapshotProvider_RevertToSnapshot(This,SnapshotId) (This)->lpVtbl->RevertToSnapshot(This,SnapshotId)
-#define IVssSoftwareSnapshotProvider_QueryRevertStatus(This,pwszVolume,ppAsync) (This)->lpVtbl->QueryRevertStatus(This,pwszVolume,ppAsync)
-#endif /*COBJMACROS*/
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssHardwareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssHardwareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssHardwareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssHardwareSnapshotProvider methods ***/
+#define IVssHardwareSnapshotProvider_AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported) (This)->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported)
+#define IVssHardwareSnapshotProvider_FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported) (This)->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported)
+#define IVssHardwareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation)
+#define IVssHardwareSnapshotProvider_GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns) (This)->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns)
+#define IVssHardwareSnapshotProvider_LocateLuns(This,lLunCount,rgSourceLuns) (This)->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns)
+#define IVssHardwareSnapshotProvider_OnLunEmpty(This,wszDeviceName,pInformation) (This)->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_QueryInterface(IVssHardwareSnapshotProvider* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssHardwareSnapshotProvider_AddRef(IVssHardwareSnapshotProvider* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssHardwareSnapshotProvider_Release(IVssHardwareSnapshotProvider* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssHardwareSnapshotProvider methods ***/
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_AreLunsSupported(IVssHardwareSnapshotProvider* This,LONG lLunCount,LONG lContext,VSS_PWSZ *rgwszDevices,VDS_LUN_INFORMATION *pLunInformation,WINBOOL *pbIsSupported) {
+ return This->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_FillInLunInfo(IVssHardwareSnapshotProvider* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pLunInfo,WINBOOL *pbIsSupported) {
+ return This->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_BeginPrepareSnapshot(IVssHardwareSnapshotProvider* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,LONG lContext,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgLunInformation) {
+ return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_GetTargetLuns(IVssHardwareSnapshotProvider* This,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgSourceLuns,VDS_LUN_INFORMATION *rgDestinationLuns) {
+ return This->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_LocateLuns(IVssHardwareSnapshotProvider* This,LONG lLunCount,VDS_LUN_INFORMATION *rgSourceLuns) {
+ return This->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProvider_OnLunEmpty(IVssHardwareSnapshotProvider* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pInformation) {
+ return This->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssHardwareSnapshotProvider_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssHardwareSnapshotProviderEx interface
+ */
+#ifndef __IVssHardwareSnapshotProviderEx_INTERFACE_DEFINED__
+#define __IVssHardwareSnapshotProviderEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssHardwareSnapshotProviderEx, 0x7f5ba925, 0xcdb1, 0x4d11, 0xa7,0x1f, 0x33,0x9e,0xb7,0xe7,0x09,0xfd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("7f5ba925-cdb1-4d11-a71f-339eb7e709fd")
+IVssHardwareSnapshotProviderEx : public IVssHardwareSnapshotProvider
+{
+ virtual HRESULT STDMETHODCALLTYPE GetProviderCapabilities(
+ ULONGLONG *pllOriginalCapabilityMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnLunStateChange(
+ VDS_LUN_INFORMATION *pSnapshotLuns,
+ VDS_LUN_INFORMATION *pOriginalLuns,
+ DWORD dwCount,
+ DWORD dwFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ResyncLuns(
+ VDS_LUN_INFORMATION *pSourceLuns,
+ VDS_LUN_INFORMATION *pTargetLuns,
+ DWORD dwCount,
+ IVssAsync **ppAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnReuseLuns(
+ VDS_LUN_INFORMATION *pSnapshotLuns,
+ VDS_LUN_INFORMATION *pOriginalLuns,
+ DWORD dwCount) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssHardwareSnapshotProviderEx, 0x7f5ba925, 0xcdb1, 0x4d11, 0xa7,0x1f, 0x33,0x9e,0xb7,0xe7,0x09,0xfd)
+#endif
+#else
+typedef struct IVssHardwareSnapshotProviderExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssHardwareSnapshotProviderEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssHardwareSnapshotProviderEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssHardwareSnapshotProviderEx *This);
+
+ /*** IVssHardwareSnapshotProvider methods ***/
+ HRESULT (STDMETHODCALLTYPE *AreLunsSupported)(
+ IVssHardwareSnapshotProviderEx *This,
+ LONG lLunCount,
+ LONG lContext,
+ VSS_PWSZ *rgwszDevices,
+ VDS_LUN_INFORMATION *pLunInformation,
+ WINBOOL *pbIsSupported);
+
+ HRESULT (STDMETHODCALLTYPE *FillInLunInfo)(
+ IVssHardwareSnapshotProviderEx *This,
+ VSS_PWSZ wszDeviceName,
+ VDS_LUN_INFORMATION *pLunInfo,
+ WINBOOL *pbIsSupported);
+
+ HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
+ IVssHardwareSnapshotProviderEx *This,
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ LONG lContext,
+ LONG lLunCount,
+ VSS_PWSZ *rgDeviceNames,
+ VDS_LUN_INFORMATION *rgLunInformation);
+
+ HRESULT (STDMETHODCALLTYPE *GetTargetLuns)(
+ IVssHardwareSnapshotProviderEx *This,
+ LONG lLunCount,
+ VSS_PWSZ *rgDeviceNames,
+ VDS_LUN_INFORMATION *rgSourceLuns,
+ VDS_LUN_INFORMATION *rgDestinationLuns);
+
+ HRESULT (STDMETHODCALLTYPE *LocateLuns)(
+ IVssHardwareSnapshotProviderEx *This,
+ LONG lLunCount,
+ VDS_LUN_INFORMATION *rgSourceLuns);
+
+ HRESULT (STDMETHODCALLTYPE *OnLunEmpty)(
+ IVssHardwareSnapshotProviderEx *This,
+ VSS_PWSZ wszDeviceName,
+ VDS_LUN_INFORMATION *pInformation);
+
+ /*** IVssHardwareSnapshotProviderEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetProviderCapabilities)(
+ IVssHardwareSnapshotProviderEx *This,
+ ULONGLONG *pllOriginalCapabilityMask);
+
+ HRESULT (STDMETHODCALLTYPE *OnLunStateChange)(
+ IVssHardwareSnapshotProviderEx *This,
+ VDS_LUN_INFORMATION *pSnapshotLuns,
+ VDS_LUN_INFORMATION *pOriginalLuns,
+ DWORD dwCount,
+ DWORD dwFlags);
+
+ HRESULT (STDMETHODCALLTYPE *ResyncLuns)(
+ IVssHardwareSnapshotProviderEx *This,
+ VDS_LUN_INFORMATION *pSourceLuns,
+ VDS_LUN_INFORMATION *pTargetLuns,
+ DWORD dwCount,
+ IVssAsync **ppAsync);
+
+ HRESULT (STDMETHODCALLTYPE *OnReuseLuns)(
+ IVssHardwareSnapshotProviderEx *This,
+ VDS_LUN_INFORMATION *pSnapshotLuns,
+ VDS_LUN_INFORMATION *pOriginalLuns,
+ DWORD dwCount);
+
+ END_INTERFACE
+} IVssHardwareSnapshotProviderExVtbl;
+
+interface IVssHardwareSnapshotProviderEx {
+ CONST_VTBL IVssHardwareSnapshotProviderExVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssHardwareSnapshotProviderEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssHardwareSnapshotProviderEx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssHardwareSnapshotProviderEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssHardwareSnapshotProvider methods ***/
+#define IVssHardwareSnapshotProviderEx_AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported) (This)->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported)
+#define IVssHardwareSnapshotProviderEx_FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported) (This)->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported)
+#define IVssHardwareSnapshotProviderEx_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation)
+#define IVssHardwareSnapshotProviderEx_GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns) (This)->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns)
+#define IVssHardwareSnapshotProviderEx_LocateLuns(This,lLunCount,rgSourceLuns) (This)->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns)
+#define IVssHardwareSnapshotProviderEx_OnLunEmpty(This,wszDeviceName,pInformation) (This)->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation)
+/*** IVssHardwareSnapshotProviderEx methods ***/
+#define IVssHardwareSnapshotProviderEx_GetProviderCapabilities(This,pllOriginalCapabilityMask) (This)->lpVtbl->GetProviderCapabilities(This,pllOriginalCapabilityMask)
+#define IVssHardwareSnapshotProviderEx_OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags) (This)->lpVtbl->OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags)
+#define IVssHardwareSnapshotProviderEx_ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync) (This)->lpVtbl->ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync)
+#define IVssHardwareSnapshotProviderEx_OnReuseLuns(This,pSnapshotLuns,pOriginalLuns,dwCount) (This)->lpVtbl->OnReuseLuns(This,pSnapshotLuns,pOriginalLuns,dwCount)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_QueryInterface(IVssHardwareSnapshotProviderEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssHardwareSnapshotProviderEx_AddRef(IVssHardwareSnapshotProviderEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssHardwareSnapshotProviderEx_Release(IVssHardwareSnapshotProviderEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssHardwareSnapshotProvider methods ***/
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_AreLunsSupported(IVssHardwareSnapshotProviderEx* This,LONG lLunCount,LONG lContext,VSS_PWSZ *rgwszDevices,VDS_LUN_INFORMATION *pLunInformation,WINBOOL *pbIsSupported) {
+ return This->lpVtbl->AreLunsSupported(This,lLunCount,lContext,rgwszDevices,pLunInformation,pbIsSupported);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_FillInLunInfo(IVssHardwareSnapshotProviderEx* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pLunInfo,WINBOOL *pbIsSupported) {
+ return This->lpVtbl->FillInLunInfo(This,wszDeviceName,pLunInfo,pbIsSupported);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_BeginPrepareSnapshot(IVssHardwareSnapshotProviderEx* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,LONG lContext,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgLunInformation) {
+ return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,lContext,lLunCount,rgDeviceNames,rgLunInformation);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_GetTargetLuns(IVssHardwareSnapshotProviderEx* This,LONG lLunCount,VSS_PWSZ *rgDeviceNames,VDS_LUN_INFORMATION *rgSourceLuns,VDS_LUN_INFORMATION *rgDestinationLuns) {
+ return This->lpVtbl->GetTargetLuns(This,lLunCount,rgDeviceNames,rgSourceLuns,rgDestinationLuns);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_LocateLuns(IVssHardwareSnapshotProviderEx* This,LONG lLunCount,VDS_LUN_INFORMATION *rgSourceLuns) {
+ return This->lpVtbl->LocateLuns(This,lLunCount,rgSourceLuns);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_OnLunEmpty(IVssHardwareSnapshotProviderEx* This,VSS_PWSZ wszDeviceName,VDS_LUN_INFORMATION *pInformation) {
+ return This->lpVtbl->OnLunEmpty(This,wszDeviceName,pInformation);
+}
+/*** IVssHardwareSnapshotProviderEx methods ***/
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_GetProviderCapabilities(IVssHardwareSnapshotProviderEx* This,ULONGLONG *pllOriginalCapabilityMask) {
+ return This->lpVtbl->GetProviderCapabilities(This,pllOriginalCapabilityMask);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_OnLunStateChange(IVssHardwareSnapshotProviderEx* This,VDS_LUN_INFORMATION *pSnapshotLuns,VDS_LUN_INFORMATION *pOriginalLuns,DWORD dwCount,DWORD dwFlags) {
+ return This->lpVtbl->OnLunStateChange(This,pSnapshotLuns,pOriginalLuns,dwCount,dwFlags);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_ResyncLuns(IVssHardwareSnapshotProviderEx* This,VDS_LUN_INFORMATION *pSourceLuns,VDS_LUN_INFORMATION *pTargetLuns,DWORD dwCount,IVssAsync **ppAsync) {
+ return This->lpVtbl->ResyncLuns(This,pSourceLuns,pTargetLuns,dwCount,ppAsync);
+}
+static FORCEINLINE HRESULT IVssHardwareSnapshotProviderEx_OnReuseLuns(IVssHardwareSnapshotProviderEx* This,VDS_LUN_INFORMATION *pSnapshotLuns,VDS_LUN_INFORMATION *pOriginalLuns,DWORD dwCount) {
+ return This->lpVtbl->OnReuseLuns(This,pSnapshotLuns,pOriginalLuns,dwCount);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssHardwareSnapshotProviderEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssFileShareSnapshotProvider interface
+ */
+#ifndef __IVssFileShareSnapshotProvider_INTERFACE_DEFINED__
+#define __IVssFileShareSnapshotProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssFileShareSnapshotProvider, 0xc8636060, 0x7c2e, 0x11df, 0x8c,0x4a, 0x08,0x00,0x20,0x0c,0x9a,0x66);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c8636060-7c2e-11df-8c4a-0800200c9a66")
+IVssFileShareSnapshotProvider : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE SetContext(
+ LONG lContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSnapshotProperties(
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Query(
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteSnapshots(
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BeginPrepareSnapshot(
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ VSS_PWSZ pwszSharePath,
+ LONG lNewContext,
+ VSS_ID ProviderId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsPathSupported(
+ VSS_PWSZ pwszSharePath,
+ WINBOOL *pbSupportedByThisProvider) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsPathSnapshotted(
+ VSS_PWSZ pwszSharePath,
+ WINBOOL *pbSnapshotsPresent,
+ LONG *plSnapshotCompatibility) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSnapshotProperty(
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
+ VARIANT vProperty) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssFileShareSnapshotProvider, 0xc8636060, 0x7c2e, 0x11df, 0x8c,0x4a, 0x08,0x00,0x20,0x0c,0x9a,0x66)
+#endif
+#else
+typedef struct IVssFileShareSnapshotProviderVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssFileShareSnapshotProvider *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssFileShareSnapshotProvider *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssFileShareSnapshotProvider *This);
+
+ /*** IVssFileShareSnapshotProvider methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetContext)(
+ IVssFileShareSnapshotProvider *This,
+ LONG lContext);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotProperties)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROP *pProp);
+
+ HRESULT (STDMETHODCALLTYPE *Query)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_ID QueriedObjectId,
+ VSS_OBJECT_TYPE eQueriedObjectType,
+ VSS_OBJECT_TYPE eReturnedObjectsType,
+ IVssEnumObject **ppEnum);
+
+ HRESULT (STDMETHODCALLTYPE *DeleteSnapshots)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_ID SourceObjectId,
+ VSS_OBJECT_TYPE eSourceObjectType,
+ WINBOOL bForceDelete,
+ LONG *plDeletedSnapshots,
+ VSS_ID *pNondeletedSnapshotID);
+
+ HRESULT (STDMETHODCALLTYPE *BeginPrepareSnapshot)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_ID SnapshotSetId,
+ VSS_ID SnapshotId,
+ VSS_PWSZ pwszSharePath,
+ LONG lNewContext,
+ VSS_ID ProviderId);
+
+ HRESULT (STDMETHODCALLTYPE *IsPathSupported)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_PWSZ pwszSharePath,
+ WINBOOL *pbSupportedByThisProvider);
+
+ HRESULT (STDMETHODCALLTYPE *IsPathSnapshotted)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_PWSZ pwszSharePath,
+ WINBOOL *pbSnapshotsPresent,
+ LONG *plSnapshotCompatibility);
+
+ HRESULT (STDMETHODCALLTYPE *SetSnapshotProperty)(
+ IVssFileShareSnapshotProvider *This,
+ VSS_ID SnapshotId,
+ VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,
+ VARIANT vProperty);
+
+ END_INTERFACE
+} IVssFileShareSnapshotProviderVtbl;
+
+interface IVssFileShareSnapshotProvider {
+ CONST_VTBL IVssFileShareSnapshotProviderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssFileShareSnapshotProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssFileShareSnapshotProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssFileShareSnapshotProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssFileShareSnapshotProvider methods ***/
+#define IVssFileShareSnapshotProvider_SetContext(This,lContext) (This)->lpVtbl->SetContext(This,lContext)
+#define IVssFileShareSnapshotProvider_GetSnapshotProperties(This,SnapshotId,pProp) (This)->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp)
+#define IVssFileShareSnapshotProvider_Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum) (This)->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum)
+#define IVssFileShareSnapshotProvider_DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID) (This)->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID)
+#define IVssFileShareSnapshotProvider_BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszSharePath,lNewContext,ProviderId) (This)->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszSharePath,lNewContext,ProviderId)
+#define IVssFileShareSnapshotProvider_IsPathSupported(This,pwszSharePath,pbSupportedByThisProvider) (This)->lpVtbl->IsPathSupported(This,pwszSharePath,pbSupportedByThisProvider)
+#define IVssFileShareSnapshotProvider_IsPathSnapshotted(This,pwszSharePath,pbSnapshotsPresent,plSnapshotCompatibility) (This)->lpVtbl->IsPathSnapshotted(This,pwszSharePath,pbSnapshotsPresent,plSnapshotCompatibility)
+#define IVssFileShareSnapshotProvider_SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty) (This)->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_QueryInterface(IVssFileShareSnapshotProvider* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssFileShareSnapshotProvider_AddRef(IVssFileShareSnapshotProvider* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssFileShareSnapshotProvider_Release(IVssFileShareSnapshotProvider* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssFileShareSnapshotProvider methods ***/
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_SetContext(IVssFileShareSnapshotProvider* This,LONG lContext) {
+ return This->lpVtbl->SetContext(This,lContext);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_GetSnapshotProperties(IVssFileShareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROP *pProp) {
+ return This->lpVtbl->GetSnapshotProperties(This,SnapshotId,pProp);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_Query(IVssFileShareSnapshotProvider* This,VSS_ID QueriedObjectId,VSS_OBJECT_TYPE eQueriedObjectType,VSS_OBJECT_TYPE eReturnedObjectsType,IVssEnumObject **ppEnum) {
+ return This->lpVtbl->Query(This,QueriedObjectId,eQueriedObjectType,eReturnedObjectsType,ppEnum);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_DeleteSnapshots(IVssFileShareSnapshotProvider* This,VSS_ID SourceObjectId,VSS_OBJECT_TYPE eSourceObjectType,WINBOOL bForceDelete,LONG *plDeletedSnapshots,VSS_ID *pNondeletedSnapshotID) {
+ return This->lpVtbl->DeleteSnapshots(This,SourceObjectId,eSourceObjectType,bForceDelete,plDeletedSnapshots,pNondeletedSnapshotID);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_BeginPrepareSnapshot(IVssFileShareSnapshotProvider* This,VSS_ID SnapshotSetId,VSS_ID SnapshotId,VSS_PWSZ pwszSharePath,LONG lNewContext,VSS_ID ProviderId) {
+ return This->lpVtbl->BeginPrepareSnapshot(This,SnapshotSetId,SnapshotId,pwszSharePath,lNewContext,ProviderId);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_IsPathSupported(IVssFileShareSnapshotProvider* This,VSS_PWSZ pwszSharePath,WINBOOL *pbSupportedByThisProvider) {
+ return This->lpVtbl->IsPathSupported(This,pwszSharePath,pbSupportedByThisProvider);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_IsPathSnapshotted(IVssFileShareSnapshotProvider* This,VSS_PWSZ pwszSharePath,WINBOOL *pbSnapshotsPresent,LONG *plSnapshotCompatibility) {
+ return This->lpVtbl->IsPathSnapshotted(This,pwszSharePath,pbSnapshotsPresent,plSnapshotCompatibility);
+}
+static FORCEINLINE HRESULT IVssFileShareSnapshotProvider_SetSnapshotProperty(IVssFileShareSnapshotProvider* This,VSS_ID SnapshotId,VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId,VARIANT vProperty) {
+ return This->lpVtbl->SetSnapshotProperty(This,SnapshotId,eSnapshotPropertyId,vProperty);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssFileShareSnapshotProvider_INTERFACE_DEFINED__ */
+
+#ifndef __VSSProvider_LIBRARY_DEFINED__
+#define __VSSProvider_LIBRARY_DEFINED__
+
+DEFINE_GUID(LIBID_VSSProvider, 0x73c8b4c1, 0x6e9d, 0x4fc2, 0xb3,0x04, 0x03,0x0e,0xc7,0x63,0xfe,0x81);
+
+#endif /* __VSSProvider_LIBRARY_DEFINED__ */
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+ULONG __RPC_USER VARIANT_UserSize (ULONG *, ULONG, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *);
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
+void __RPC_USER VARIANT_UserFree (ULONG *, VARIANT *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
-#endif /*_INC_VSPROV*/
+#endif /* __vsprov_h__ */
diff --git a/lib/libc/include/any-windows-any/vss.h b/lib/libc/include/any-windows-any/vss.h
index f7abe342c3..eded9309c9 100644
--- a/lib/libc/include/any-windows-any/vss.h
+++ b/lib/libc/include/any-windows-any/vss.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/vss.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/vss.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/vswriter.h b/lib/libc/include/any-windows-any/vswriter.h
index f9e5c54daf..c496da7d4a 100644
--- a/lib/libc/include/any-windows-any/vswriter.h
+++ b/lib/libc/include/any-windows-any/vswriter.h
@@ -1,348 +1,813 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_VSWRITER
-#define _INC_VSWRITER
-
- typedef enum VSS_COMPONENT_FLAGS {
- VSS_CF_BACKUP_RECOVERY = 0x00000001,
- VSS_CF_APP_ROLLBACK_RECOVERY = 0x00000002,
- VSS_CF_NOT_SYSTEM_STATE = 0x00000004
- } VSS_COMPONENT_FLAGS;
-
- /* http://msdn.microsoft.com/en-us/library/aa384976%28v=VS.85%29.aspx */
- typedef enum VSS_USAGE_TYPE {
- VSS_UT_UNDEFINED = 0,
- VSS_UT_BOOTABLESYSTEMSTATE = 1,
- VSS_UT_SYSTEMSERVICE = 2,
- VSS_UT_USERDATA = 3,
- VSS_UT_OTHER = 4
- } VSS_USAGE_TYPE;
+/*** Autogenerated by WIDL 7.0 from include/vswriter.idl - Do not edit ***/
-typedef enum VSS_ALTERNATE_WRITER_STATE {
- VSS_AWS_UNDEFINED = 0,
- VSS_AWS_NO_ALTERNATE_WRITER = 1,
- VSS_AWS_ALTERNATE_WRITER_EXISTS = 2,
- VSS_AWS_THIS_IS_ALTERNATE_WRITER = 3
-} VSS_ALTERNATE_WRITER_STATE;
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
-typedef enum VSS_COMPONENT_TYPE {
- VSS_CT_UNDEFINED = 0,
- VSS_CT_DATABASE = 1,
- VSS_CT_FILEGROUP = 2
-} VSS_COMPONENT_TYPE;
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
-typedef enum VSS_FILE_RESTORE_STATUS {
- VSS_RS_UNDEFINED = 0,
- VSS_RS_NONE = 1,
- VSS_RS_ALL = 2,
- VSS_RS_FAILED = 3
-} VSS_FILE_RESTORE_STATUS;
+#ifndef __vswriter_h__
+#define __vswriter_h__
-typedef enum VSS_RESTORE_TARGET {
- VSS_RT_UNDEFINED = 0,
- VSS_RT_ORIGINAL = 1,
- VSS_RT_ALTERNATE = 2,
- VSS_RT_DIRECTED = 3,
- VSS_RT_ORIGINAL_LOCATION = 4
-} VSS_RESTORE_TARGET;
+/* Forward declarations */
-typedef enum VSS_RESTOREMETHOD_ENUM {
- VSS_RME_UNDEFINED = 0,
- VSS_RME_RESTORE_IF_NOT_THERE = 1,
- VSS_RME_RESTORE_IF_CAN_REPLACE = 2,
- VSS_RME_STOP_RESTORE_START = 3,
- VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4,
- VSS_RME_RESTORE_AT_REBOOT = 5,
- VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6,
- VSS_RME_CUSTOM = 7,
- VSS_RME_RESTORE_STOP_START = 8
-} VSS_RESTOREMETHOD_ENUM;
+#ifndef __IVssWMFiledesc_FWD_DEFINED__
+#define __IVssWMFiledesc_FWD_DEFINED__
+typedef interface IVssWMFiledesc IVssWMFiledesc;
+#ifdef __cplusplus
+interface IVssWMFiledesc;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssWMDependency_FWD_DEFINED__
+#define __IVssWMDependency_FWD_DEFINED__
+typedef interface IVssWMDependency IVssWMDependency;
+#ifdef __cplusplus
+interface IVssWMDependency;
+#endif /* __cplusplus */
+#endif
+#ifndef __IVssComponent_FWD_DEFINED__
+#define __IVssComponent_FWD_DEFINED__
+typedef interface IVssComponent IVssComponent;
+#ifdef __cplusplus
+interface IVssComponent;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssWriterComponents_FWD_DEFINED__
+#define __IVssWriterComponents_FWD_DEFINED__
+typedef interface IVssWriterComponents IVssWriterComponents;
+#ifdef __cplusplus
+interface IVssWriterComponents;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssComponentEx_FWD_DEFINED__
+#define __IVssComponentEx_FWD_DEFINED__
+typedef interface IVssComponentEx IVssComponentEx;
+#ifdef __cplusplus
+interface IVssComponentEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssComponentEx2_FWD_DEFINED__
+#define __IVssComponentEx2_FWD_DEFINED__
+typedef interface IVssComponentEx2 IVssComponentEx2;
+#ifdef __cplusplus
+interface IVssComponentEx2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssCreateWriterMetadata_FWD_DEFINED__
+#define __IVssCreateWriterMetadata_FWD_DEFINED__
+typedef interface IVssCreateWriterMetadata IVssCreateWriterMetadata;
+#ifdef __cplusplus
+interface IVssCreateWriterMetadata;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssCreateWriterMetadataEx_FWD_DEFINED__
+#define __IVssCreateWriterMetadataEx_FWD_DEFINED__
+typedef interface IVssCreateWriterMetadataEx IVssCreateWriterMetadataEx;
+#ifdef __cplusplus
+interface IVssCreateWriterMetadataEx;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssWriterImpl_FWD_DEFINED__
+#define __IVssWriterImpl_FWD_DEFINED__
+typedef interface IVssWriterImpl IVssWriterImpl;
+#ifdef __cplusplus
+interface IVssWriterImpl;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssCreateExpressWriterMetadata_FWD_DEFINED__
+#define __IVssCreateExpressWriterMetadata_FWD_DEFINED__
+typedef interface IVssCreateExpressWriterMetadata IVssCreateExpressWriterMetadata;
+#ifdef __cplusplus
+interface IVssCreateExpressWriterMetadata;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IVssExpressWriter_FWD_DEFINED__
+#define __IVssExpressWriter_FWD_DEFINED__
+typedef interface IVssExpressWriter IVssExpressWriter;
+#ifdef __cplusplus
+interface IVssExpressWriter;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+#include <vss.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+#include "vsserror.h"
+typedef enum VSS_USAGE_TYPE {
+ VSS_UT_UNDEFINED = 0,
+ VSS_UT_BOOTABLESYSTEMSTATE = 1,
+ VSS_UT_SYSTEMSERVICE = 2,
+ VSS_UT_USERDATA = 3,
+ VSS_UT_OTHER = 4
+} VSS_USAGE_TYPE;
typedef enum VSS_SOURCE_TYPE {
- VSS_ST_UNDEFINED = 0,
- VSS_ST_TRANSACTEDDB = 1,
- VSS_ST_NONTRANSACTEDDB = 2,
- VSS_ST_OTHER = 3
+ VSS_ST_UNDEFINED = 0,
+ VSS_ST_TRANSACTEDDB = 1,
+ VSS_ST_NONTRANSACTEDDB = 2,
+ VSS_ST_OTHER = 3
} VSS_SOURCE_TYPE;
-
+typedef enum VSS_RESTOREMETHOD_ENUM {
+ VSS_RME_UNDEFINED = 0,
+ VSS_RME_RESTORE_IF_NOT_THERE = 1,
+ VSS_RME_RESTORE_IF_CAN_REPLACE = 2,
+ VSS_RME_STOP_RESTORE_START = 3,
+ VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4,
+ VSS_RME_RESTORE_AT_REBOOT = 5,
+ VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6,
+ VSS_RME_CUSTOM = 7,
+ VSS_RME_RESTORE_STOP_START = 8
+} VSS_RESTOREMETHOD_ENUM;
+typedef enum VSS_WRITERRESTORE_ENUM {
+ VSS_WRE_UNDEFINED = 0,
+ VSS_WRE_NEVER = 1,
+ VSS_WRE_IF_REPLACE_FAILS = 2,
+ VSS_WRE_ALWAYS = 3
+} VSS_WRITERRESTORE_ENUM;
+typedef enum VSS_COMPONENT_TYPE {
+ VSS_CT_UNDEFINED = 0,
+ VSS_CT_DATABASE = 1,
+ VSS_CT_FILEGROUP = 2
+} VSS_COMPONENT_TYPE;
+typedef enum VSS_ALTERNATE_WRITER_STATE {
+ VSS_AWS_UNDEFINED = 0,
+ VSS_AWS_NO_ALTERNATE_WRITER = 1,
+ VSS_AWS_ALTERNATE_WRITER_EXISTS = 2,
+ VSS_AWS_THIS_IS_ALTERNATE_WRITER = 3
+} VSS_ALTERNATE_WRITER_STATE;
typedef enum VSS_SUBSCRIBE_MASK {
- VSS_SM_POST_SNAPSHOT_FLAG = 0x00000001,
- VSS_SM_BACKUP_EVENTS_FLAG = 0x00000002,
- VSS_SM_RESTORE_EVENTS_FLAG = 0x00000004,
- VSS_SM_IO_THROTTLING_FLAG = 0x00000008,
- VSS_SM_ALL_FLAGS = 0xffffffff
+ VSS_SM_POST_SNAPSHOT_FLAG = 0x1,
+ VSS_SM_BACKUP_EVENTS_FLAG = 0x2,
+ VSS_SM_RESTORE_EVENTS_FLAG = 0x4,
+ VSS_SM_IO_THROTTLING_FLAG = 0x8,
+ VSS_SM_ALL_FLAGS = 0xffffffff
} VSS_SUBSCRIBE_MASK;
+typedef enum VSS_RESTORE_TARGET {
+ VSS_RT_UNDEFINED = 0,
+ VSS_RT_ORIGINAL = 1,
+ VSS_RT_ALTERNATE = 2,
+ VSS_RT_DIRECTED = 3,
+ VSS_RT_ORIGINAL_LOCATION = 4
+} VSS_RESTORE_TARGET;
+typedef enum VSS_FILE_RESTORE_STATUS {
+ VSS_RS_UNDEFINED = 0,
+ VSS_RS_NONE = 1,
+ VSS_RS_ALL = 2,
+ VSS_RS_FAILED = 3
+} VSS_FILE_RESTORE_STATUS;
+typedef enum VSS_COMPONENT_FLAGS {
+ VSS_CF_BACKUP_RECOVERY = 0x1,
+ VSS_CF_APP_ROLLBACK_RECOVERY = 0x2,
+ VSS_CF_NOT_SYSTEM_STATE = 0x4
+} VSS_COMPONENT_FLAGS;
+#ifndef __IVssExamineWriterMetadata_FWD_DEFINED__
+#define __IVssExamineWriterMetadata_FWD_DEFINED__
+typedef interface IVssExamineWriterMetadata IVssExamineWriterMetadata;
+#ifdef __cplusplus
+interface IVssExamineWriterMetadata;
+#endif /* __cplusplus */
+#endif
-typedef enum VSS_WRITERRESTORE_ENUM {
- VSS_WRE_UNDEFINED = 0,
- VSS_WRE_NEVER = 1,
- VSS_WRE_IF_REPLACE_FAILS = 2,
- VSS_WRE_ALWAYS = 3
-} VSS_WRITERRESTORE_ENUM;
+/*****************************************************************************
+ * IVssWMFiledesc interface
+ */
+#ifndef __IVssWMFiledesc_INTERFACE_DEFINED__
+#define __IVssWMFiledesc_INTERFACE_DEFINED__
-#include <vss.h>
+DEFINE_GUID(IID_IVssWMFiledesc, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssWMFiledesc : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetPath(
+ BSTR *pbstrPath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFilespec(
+ BSTR *pbstrFilespec) = 0;
-#if (_WIN32_WINNT >= 0x601)
-HRESULT WINAPI CreateVssExpressWriterInternal(
- IVssExpressWriter **ppWriter
-);
+ virtual HRESULT STDMETHODCALLTYPE GetRecursive(
+ boolean *pbRecursive) = 0;
-FORCEINLINE
-HRESULT WINAPI CreateVssExpressWriter(
- IVssExpressWriter **ppWriter
-){return CreateVssExpressWriterInternal(ppWriter);}
+ virtual HRESULT STDMETHODCALLTYPE GetAlternateLocation(
+ BSTR *pbstrAlternateLocation) = 0;
-#undef INTERFACE
-#define INTERFACE IVssCreateExpressWriterMetadata
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+ virtual HRESULT STDMETHODCALLTYPE GetBackupTypeMask(
+ DWORD *pdwTypeMask) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssWMFiledesc, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
#endif
-DECLARE_INTERFACE_(IVssCreateExpressWriterMetadata,IUnknown)
-{
+#else
+typedef struct IVssWMFiledescVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssWMFiledesc *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssWMFiledesc *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssWMFiledesc *This);
+
+ /*** IVssWMFiledesc methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetPath)(
+ IVssWMFiledesc *This,
+ BSTR *pbstrPath);
+
+ HRESULT (STDMETHODCALLTYPE *GetFilespec)(
+ IVssWMFiledesc *This,
+ BSTR *pbstrFilespec);
- /* IVssCreateExpressWriterMetadata methods */
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,BOOLEAN bRestoreMetadata,BOOLEAN bNotifyOnBackupComplete,BOOLEAN bSelectable,BOOLEAN bSelectableForRestore,DWORD dwComponentFlags) PURE;
- STDMETHOD_(HRESULT,AddComponentDependency)(THIS_ LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) PURE;
- STDMETHOD_(HRESULT,AddExcludeFiles)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupSchema)(THIS_ DWORD dsSchemaMask) PURE;
- STDMETHOD_(HRESULT,SetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM wreWriterRestore,BOOLEAN bRebootRequired) PURE;
+ HRESULT (STDMETHODCALLTYPE *GetRecursive)(
+ IVssWMFiledesc *This,
+ boolean *pbRecursive);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocation)(
+ IVssWMFiledesc *This,
+ BSTR *pbstrAlternateLocation);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupTypeMask)(
+ IVssWMFiledesc *This,
+ DWORD *pdwTypeMask);
END_INTERFACE
+} IVssWMFiledescVtbl;
+
+interface IVssWMFiledesc {
+ CONST_VTBL IVssWMFiledescVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
-#define IVssCreateExpressWriterMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssCreateExpressWriterMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssCreateExpressWriterMetadata_Release(This) (This)->lpVtbl->Release(This)
-#define IVssCreateExpressWriterMetadata_AddComponent(This,componentType,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,componentType,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
-#define IVssCreateExpressWriterMetadata_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
-#define IVssCreateExpressWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
-#define IVssCreateExpressWriterMetadata_SetBackupSchema(This,dsSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dsSchemaMask)
-#define IVssCreateExpressWriterMetadata_SetRestoreMethod(This,method,wszService,wszUserProcedure,wreWriterRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,wreWriterRestore,bRebootRequired)
-#endif /*COBJMACROS*/
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssWMFiledesc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssWMFiledesc_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssWMFiledesc_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssWMFiledesc methods ***/
+#define IVssWMFiledesc_GetPath(This,pbstrPath) (This)->lpVtbl->GetPath(This,pbstrPath)
+#define IVssWMFiledesc_GetFilespec(This,pbstrFilespec) (This)->lpVtbl->GetFilespec(This,pbstrFilespec)
+#define IVssWMFiledesc_GetRecursive(This,pbRecursive) (This)->lpVtbl->GetRecursive(This,pbRecursive)
+#define IVssWMFiledesc_GetAlternateLocation(This,pbstrAlternateLocation) (This)->lpVtbl->GetAlternateLocation(This,pbstrAlternateLocation)
+#define IVssWMFiledesc_GetBackupTypeMask(This,pdwTypeMask) (This)->lpVtbl->GetBackupTypeMask(This,pdwTypeMask)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssWMFiledesc_QueryInterface(IVssWMFiledesc* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssWMFiledesc_AddRef(IVssWMFiledesc* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssWMFiledesc_Release(IVssWMFiledesc* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssWMFiledesc methods ***/
+static FORCEINLINE HRESULT IVssWMFiledesc_GetPath(IVssWMFiledesc* This,BSTR *pbstrPath) {
+ return This->lpVtbl->GetPath(This,pbstrPath);
+}
+static FORCEINLINE HRESULT IVssWMFiledesc_GetFilespec(IVssWMFiledesc* This,BSTR *pbstrFilespec) {
+ return This->lpVtbl->GetFilespec(This,pbstrFilespec);
+}
+static FORCEINLINE HRESULT IVssWMFiledesc_GetRecursive(IVssWMFiledesc* This,boolean *pbRecursive) {
+ return This->lpVtbl->GetRecursive(This,pbRecursive);
+}
+static FORCEINLINE HRESULT IVssWMFiledesc_GetAlternateLocation(IVssWMFiledesc* This,BSTR *pbstrAlternateLocation) {
+ return This->lpVtbl->GetAlternateLocation(This,pbstrAlternateLocation);
+}
+static FORCEINLINE HRESULT IVssWMFiledesc_GetBackupTypeMask(IVssWMFiledesc* This,DWORD *pdwTypeMask) {
+ return This->lpVtbl->GetBackupTypeMask(This,pdwTypeMask);
+}
+#endif
+#endif
-#endif /*(_WIN32_WINNT >= 0x601)*/
+#endif
-#ifdef __cplusplus
-/* Is a C++ interface instead of a COM */
-#undef INTERFACE
-#define INTERFACE IVssCreateWriterMetadata
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssCreateWriterMetadata,IUnknown)
-{
- BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssCreateWriterMetadata methods */
- STDMETHOD_(HRESULT,AddAlternateLocationMapping)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE;
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,BOOLEAN bRestoreMetadata,BOOLEAN bNotifyOnBackupComplete,BOOLEAN bSelectable,BOOLEAN bSelectableForRestore,DWORD dwComponentFlags) PURE;
- STDMETHOD_(HRESULT,AddComponentDependency)(THIS_ LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) PURE;
- STDMETHOD_(HRESULT,AddDatabaseFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE;
- STDMETHOD_(HRESULT,AddDatabaseLogFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE;
- STDMETHOD_(HRESULT,AddExcludeFiles)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE;
- STDMETHOD_(HRESULT,AddFilesToFileGroup)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszAlternatePath,DWORD dwBackupTypeMask) PURE;
- STDMETHOD_(HRESULT,AddIncludeFiles)(THIS) PURE;
- STDMETHOD_(HRESULT,GetDocument)(THIS) PURE;
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupSchema)(THIS_ DWORD dsSchemaMask) PURE;
- STDMETHOD_(HRESULT,SetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM wreWriterRestore,BOOLEAN bRebootRequired) PURE;
+#endif /* __IVssWMFiledesc_INTERFACE_DEFINED__ */
- END_INTERFACE
-};
+/*****************************************************************************
+ * IVssWMDependency interface
+ */
+#ifndef __IVssWMDependency_INTERFACE_DEFINED__
+#define __IVssWMDependency_INTERFACE_DEFINED__
-#if (_WIN32_WINNT >= 0x600)
-#undef INTERFACE
-#define INTERFACE IVssCreateWriterMetadataEx
-DECLARE_INTERFACE_(IVssCreateWriterMetadataEx,IVssCreateWriterMetadata)
+DEFINE_GUID(IID_IVssWMDependency, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssWMDependency : public IUnknown
{
- BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE GetWriterId(
+ VSS_ID *pWriterId) = 0;
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssCreateWriterMetadata methods */
- STDMETHOD_(HRESULT,AddAlternateLocationMapping)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszDestination) PURE;
- STDMETHOD_(HRESULT,AddComponent)(THIS_ VSS_COMPONENT_TYPE componentType,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,BOOLEAN bRestoreMetadata,BOOLEAN bNotifyOnBackupComplete,BOOLEAN bSelectable,BOOLEAN bSelectableForRestore,DWORD dwComponentFlags) PURE;
- STDMETHOD_(HRESULT,AddComponentDependency)(THIS_ LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) PURE;
- STDMETHOD_(HRESULT,AddDatabaseFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE;
- STDMETHOD_(HRESULT,AddDatabaseLogFiles)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) PURE;
- STDMETHOD_(HRESULT,AddExcludeFiles)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE;
- STDMETHOD_(HRESULT,AddFilesToFileGroup)(THIS_ LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive,LPCWSTR wszAlternatePath,DWORD dwBackupTypeMask) PURE;
- STDMETHOD_(HRESULT,AddIncludeFiles)(THIS) PURE; /*Not supported*/
- STDMETHOD_(HRESULT,GetDocument)(THIS) PURE; /*Not supported*/
- STDMETHOD_(HRESULT,SaveAsXML)(THIS_ BSTR *pbstrXML) PURE;
- STDMETHOD_(HRESULT,SetBackupSchema)(THIS_ DWORD dsSchemaMask) PURE;
- STDMETHOD_(HRESULT,SetRestoreMethod)(THIS_ VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM wreWriterRestore,BOOLEAN bRebootRequired) PURE;
-
- /* IVssCreateWriterMetadataEx methods */
- STDMETHOD_(HRESULT,AddExcludeFilesFromSnapshot)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,BOOLEAN bRecursive) PURE;
+ virtual HRESULT STDMETHODCALLTYPE GetLogicalPath(
+ BSTR *pbstrLogicalPath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetComponentName(
+ BSTR *pbstrComponentName) = 0;
- END_INTERFACE
};
-#endif /*(_WIN32_WINNT >= 0x600)*/
-#endif /*__cplusplus*/
-
-#if (_WIN32_WINNT >= 0x601)
-#undef INTERFACE
-#define INTERFACE IVssExpressWriter
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssExpressWriter,IUnknown)
-{
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssWMDependency, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
+#endif
+#else
+typedef struct IVssWMDependencyVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssWMDependency *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssWMDependency *This);
- /* IVssExpressWriter methods */
- STDMETHOD_(HRESULT,CreateMetadata)(THIS_ VSS_ID writerId,LPCWSTR writerName,VSS_USAGE_TYPE usageType,DWORD versionMajor,DWORD versionMinor,DWORD reserved,IVssCreateWriterMetadataEx **ppMetadata) PURE;
- STDMETHOD_(HRESULT,Load)(THIS_ LPCWSTR metadata,DWORD reserved) PURE;
- STDMETHOD_(HRESULT,Register)(THIS) PURE;
- STDMETHOD_(HRESULT,Unregister)(THIS_ VSS_ID writerId) PURE;
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssWMDependency *This);
+
+ /*** IVssWMDependency methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetWriterId)(
+ IVssWMDependency *This,
+ VSS_ID *pWriterId);
+
+ HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
+ IVssWMDependency *This,
+ BSTR *pbstrLogicalPath);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentName)(
+ IVssWMDependency *This,
+ BSTR *pbstrComponentName);
END_INTERFACE
+} IVssWMDependencyVtbl;
+
+interface IVssWMDependency {
+ CONST_VTBL IVssWMDependencyVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
-#define IVssExpressWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IVssExpressWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IVssExpressWriter_Release(This) (This)->lpVtbl->Release(This)
-#define IVssExpressWriter_CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata) (This)->lpVtbl->CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata)
-#define IVssExpressWriter_Load(This,metadata,reserved) (This)->lpVtbl->Load(This,metadata,reserved)
-#define IVssExpressWriter_Register() (This)->lpVtbl->Register(This)
-#define IVssExpressWriter_Unregister(This,writerId) (This)->lpVtbl->Unregister(This,writerId)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x601)*/
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssWMDependency_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssWMDependency_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssWMDependency_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssWMDependency methods ***/
+#define IVssWMDependency_GetWriterId(This,pWriterId) (This)->lpVtbl->GetWriterId(This,pWriterId)
+#define IVssWMDependency_GetLogicalPath(This,pbstrLogicalPath) (This)->lpVtbl->GetLogicalPath(This,pbstrLogicalPath)
+#define IVssWMDependency_GetComponentName(This,pbstrComponentName) (This)->lpVtbl->GetComponentName(This,pbstrComponentName)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssWMDependency_QueryInterface(IVssWMDependency* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssWMDependency_AddRef(IVssWMDependency* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssWMDependency_Release(IVssWMDependency* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssWMDependency methods ***/
+static FORCEINLINE HRESULT IVssWMDependency_GetWriterId(IVssWMDependency* This,VSS_ID *pWriterId) {
+ return This->lpVtbl->GetWriterId(This,pWriterId);
+}
+static FORCEINLINE HRESULT IVssWMDependency_GetLogicalPath(IVssWMDependency* This,BSTR *pbstrLogicalPath) {
+ return This->lpVtbl->GetLogicalPath(This,pbstrLogicalPath);
+}
+static FORCEINLINE HRESULT IVssWMDependency_GetComponentName(IVssWMDependency* This,BSTR *pbstrComponentName) {
+ return This->lpVtbl->GetComponentName(This,pbstrComponentName);
+}
+#endif
+#endif
-#ifdef __cplusplus
-/* Is a C++ interface instead of a COM */
-#undef INTERFACE
-#define INTERFACE IVssWriterComponents
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssWriterComponents,IUnknown)
+#endif
+
+
+#endif /* __IVssWMDependency_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssComponent interface
+ */
+#ifndef __IVssComponent_INTERFACE_DEFINED__
+#define __IVssComponent_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssComponent, 0xd2c72c96, 0xc121, 0x4518, 0xb6,0x27, 0xe5,0xa9,0x3d,0x01,0x0e,0xad);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d2c72c96-c121-4518-b627-e5a93d010ead")
+IVssComponent : public IUnknown
{
- BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE GetLogicalPath(
+ BSTR *pbstrPath) = 0;
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ virtual HRESULT STDMETHODCALLTYPE GetComponentType(
+ VSS_COMPONENT_TYPE *pct) = 0;
- /* IVssWriterComponents methods */
- STDMETHOD_(HRESULT,GetComponent)(THIS_ UINT iComponent,IVssComponent **ppComponent) PURE;
- STDMETHOD_(HRESULT,GetComponentCount)(THIS_ UINT *pcComponents) PURE;
- STDMETHOD_(HRESULT,GetWriterInfo)(THIS_ VSS_ID *pidInstance,VSS_ID *pidWriter) PURE;
+ virtual HRESULT STDMETHODCALLTYPE GetComponentName(
+ BSTR *pbstrName) = 0;
- END_INTERFACE
-};
-#endif /*__cplusplus*/
+ virtual HRESULT STDMETHODCALLTYPE GetBackupSucceeded(
+ boolean *pbSucceeded) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAlternateLocationMappingCount(
+ UINT *pcMappings) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAlternateLocationMapping(
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupMetadata(
+ LPCWSTR wszData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackupMetadata(
+ BSTR *pbstrData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddPartialFile(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilename,
+ LPCWSTR wszRanges,
+ LPCWSTR wszMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPartialFileCount(
+ UINT *pcPartialFiles) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPartialFile(
+ UINT iPartialFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilename,
+ BSTR *pbstrRange,
+ BSTR *pbstrMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsSelectedForRestore(
+ boolean *pbSelectedForRestore) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAdditionalRestores(
+ boolean *pbAdditionalRestores) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNewTargetCount(
+ UINT *pcNewTarget) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNewTarget(
+ UINT iNewTarget,
+ IVssWMFiledesc **ppFiledesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddDirectedTarget(
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilename,
+ LPCWSTR wszSourceRangeList,
+ LPCWSTR wszDestinationPath,
+ LPCWSTR wszDestinationFilename,
+ LPCWSTR wszDestinationRangeList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDirectedTargetCount(
+ UINT *pcDirectedTarget) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDirectedTarget(
+ UINT iDirectedTarget,
+ BSTR *pbstrSourcePath,
+ BSTR *pbstrSourceFileName,
+ BSTR *pbstrSourceRangeList,
+ BSTR *pbstrDestinationPath,
+ BSTR *pbstrDestinationFilename,
+ BSTR *pbstrDestinationRangeList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreMetadata(
+ LPCWSTR wszRestoreMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreMetadata(
+ BSTR *pbstrRestoreMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreTarget(
+ VSS_RESTORE_TARGET target) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreTarget(
+ VSS_RESTORE_TARGET *pTarget) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPreRestoreFailureMsg(
+ LPCWSTR wszPreRestoreFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPreRestoreFailureMsg(
+ BSTR *pbstrPreRestoreFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPostRestoreFailureMsg(
+ LPCWSTR wszPostRestoreFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPostRestoreFailureMsg(
+ BSTR *pbstrPostRestoreFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupStamp(
+ LPCWSTR wszBackupStamp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackupStamp(
+ BSTR *pbstrBackupStamp) = 0;
-#undef INTERFACE
-#define INTERFACE IVssComponent
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
+ virtual HRESULT STDMETHODCALLTYPE GetPreviousBackupStamp(
+ BSTR *pbstrBackupStamp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackupOptions(
+ BSTR *pbstrBackupOptions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreOptions(
+ BSTR *pbstrRestoreOptions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreSubcomponentCount(
+ UINT *pcRestoreSubcomponent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreSubcomponent(
+ UINT iComponent,
+ BSTR *pbstrLogicalPath,
+ BSTR *pbstrComponentName,
+ boolean *pbRepair) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFileRestoreStatus(
+ VSS_FILE_RESTORE_STATUS *pStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddDifferencedFilesByLastModifyTime(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ FILETIME ftLastModifyTime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddDifferencedFilesByLastModifyLSN(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ BSTR bstrLsnString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDifferencedFilesCount(
+ UINT *pcDifferencedFiles) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDifferencedFile(
+ UINT iDifferencedFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilespec,
+ WINBOOL *pbRecursive,
+ BSTR *pbstrLsnString,
+ FILETIME *pftLastModifyTime) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssComponent, 0xd2c72c96, 0xc121, 0x4518, 0xb6,0x27, 0xe5,0xa9,0x3d,0x01,0x0e,0xad)
#endif
-DECLARE_INTERFACE_(IVssComponent,IUnknown)
-{
+#else
+typedef struct IVssComponentVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssComponent methods */
- STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrPath) PURE;
- STDMETHOD_(HRESULT,GetComponentType)(THIS_ VSS_COMPONENT_TYPE *pType) PURE;
- STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pwszName) PURE;
- STDMETHOD_(HRESULT,GetBackupSucceeded)(THIS_ BOOLEAN *pbSucceeded) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMappingCount)(THIS_ UINT *pcMappings) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,const IVssWMFiledesc **ppMapping) PURE;
- STDMETHOD_(HRESULT,SetBackupMetadata)(THIS_ BSTR bstrMetadata) PURE;
- STDMETHOD_(HRESULT,GetBackupMetadata)(THIS_ BSTR *pbstrMetadata) PURE;
- STDMETHOD_(HRESULT,AddPartialFile)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) PURE;
- STDMETHOD_(HRESULT,GetPartialFileCount)(THIS_ UINT *pcPartialFiles) PURE;
- STDMETHOD_(HRESULT,GetPartialFile)(THIS_ UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) PURE;
- STDMETHOD_(HRESULT,IsSelectedForRestore)(THIS_ BOOLEAN *pbSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,GetAdditionalRestores)(THIS_ BOOLEAN *pbAdditionalRestores) PURE;
- STDMETHOD_(HRESULT,GetNewTargetCount)(THIS_ UINT *pcNewTarget) PURE;
- STDMETHOD_(HRESULT,GetNewTarget)(THIS_ UINT iMapping,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,AddDirectedTarget)(THIS_ LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) PURE;
- STDMETHOD_(HRESULT,GetDirectedTargetCount)(THIS_ UINT *pcDirectedTarget) PURE;
- STDMETHOD_(HRESULT,GetDirectedTarget)(THIS_ UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) PURE;
- STDMETHOD_(HRESULT,SetRestoreMetadata)(THIS_ LPCWSTR wszRestoreMetadata) PURE;
- STDMETHOD_(HRESULT,GetRestoreMetadata)(THIS_ BSTR *pbstrRestoreMetadata) PURE;
- STDMETHOD_(HRESULT,SetRestoreTarget)(THIS_ VSS_RESTORE_TARGET target) PURE;
- STDMETHOD_(HRESULT,GetRestoreTarget)(THIS_ VSS_RESTORE_TARGET *pTarget) PURE;
- STDMETHOD_(HRESULT,SetPreRestoreFailureMsg)(THIS_ LPCWSTR wszPreRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPreRestoreFailureMsg)(THIS_ BSTR *pbstrPreRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetPostRestoreFailureMsg)(THIS_ LPCWSTR wszPostRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPostRestoreFailureMsg)(THIS_ BSTR *pbstrPostRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetBackupStamp)(THIS_ LPCWSTR wszBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetPreviousBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetBackupOptions)(THIS_ BSTR *pbstrBackupOptions) PURE;
- STDMETHOD_(HRESULT,GetRestoreOptions)(THIS_ BSTR *pbstrRestoreOptions) PURE;
- STDMETHOD_(HRESULT,GetRestoreSubcomponentCount)(THIS_ UINT *pcRestoreSubcomponent) PURE;
- STDMETHOD_(HRESULT,GetRestoreSubcomponent)(THIS_ UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,BOOLEAN *pbRepair) PURE;
- STDMETHOD_(HRESULT,GetFileRestoreStatus)(THIS_ VSS_FILE_RESTORE_STATUS *pStatus) PURE;
- STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyTime)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) PURE;
- STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyLSN)(THIS) PURE;
- STDMETHOD_(HRESULT,GetDifferencedFilesCount)(THIS_ UINT *pcDifferencedFiles) PURE;
- STDMETHOD_(HRESULT,GetDifferencedFile)(THIS_ UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssComponent *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssComponent *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssComponent *This);
+
+ /*** IVssComponent methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
+ IVssComponent *This,
+ BSTR *pbstrPath);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentType)(
+ IVssComponent *This,
+ VSS_COMPONENT_TYPE *pct);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentName)(
+ IVssComponent *This,
+ BSTR *pbstrName);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupSucceeded)(
+ IVssComponent *This,
+ boolean *pbSucceeded);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMappingCount)(
+ IVssComponent *This,
+ UINT *pcMappings);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
+ IVssComponent *This,
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupMetadata)(
+ IVssComponent *This,
+ LPCWSTR wszData);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupMetadata)(
+ IVssComponent *This,
+ BSTR *pbstrData);
+
+ HRESULT (STDMETHODCALLTYPE *AddPartialFile)(
+ IVssComponent *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilename,
+ LPCWSTR wszRanges,
+ LPCWSTR wszMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *GetPartialFileCount)(
+ IVssComponent *This,
+ UINT *pcPartialFiles);
+
+ HRESULT (STDMETHODCALLTYPE *GetPartialFile)(
+ IVssComponent *This,
+ UINT iPartialFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilename,
+ BSTR *pbstrRange,
+ BSTR *pbstrMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *IsSelectedForRestore)(
+ IVssComponent *This,
+ boolean *pbSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *GetAdditionalRestores)(
+ IVssComponent *This,
+ boolean *pbAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *GetNewTargetCount)(
+ IVssComponent *This,
+ UINT *pcNewTarget);
+
+ HRESULT (STDMETHODCALLTYPE *GetNewTarget)(
+ IVssComponent *This,
+ UINT iNewTarget,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *AddDirectedTarget)(
+ IVssComponent *This,
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilename,
+ LPCWSTR wszSourceRangeList,
+ LPCWSTR wszDestinationPath,
+ LPCWSTR wszDestinationFilename,
+ LPCWSTR wszDestinationRangeList);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectedTargetCount)(
+ IVssComponent *This,
+ UINT *pcDirectedTarget);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectedTarget)(
+ IVssComponent *This,
+ UINT iDirectedTarget,
+ BSTR *pbstrSourcePath,
+ BSTR *pbstrSourceFileName,
+ BSTR *pbstrSourceRangeList,
+ BSTR *pbstrDestinationPath,
+ BSTR *pbstrDestinationFilename,
+ BSTR *pbstrDestinationRangeList);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreMetadata)(
+ IVssComponent *This,
+ LPCWSTR wszRestoreMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreMetadata)(
+ IVssComponent *This,
+ BSTR *pbstrRestoreMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreTarget)(
+ IVssComponent *This,
+ VSS_RESTORE_TARGET target);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreTarget)(
+ IVssComponent *This,
+ VSS_RESTORE_TARGET *pTarget);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreRestoreFailureMsg)(
+ IVssComponent *This,
+ LPCWSTR wszPreRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPreRestoreFailureMsg)(
+ IVssComponent *This,
+ BSTR *pbstrPreRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetPostRestoreFailureMsg)(
+ IVssComponent *This,
+ LPCWSTR wszPostRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPostRestoreFailureMsg)(
+ IVssComponent *This,
+ BSTR *pbstrPostRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupStamp)(
+ IVssComponent *This,
+ LPCWSTR wszBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupStamp)(
+ IVssComponent *This,
+ BSTR *pbstrBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetPreviousBackupStamp)(
+ IVssComponent *This,
+ BSTR *pbstrBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupOptions)(
+ IVssComponent *This,
+ BSTR *pbstrBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreOptions)(
+ IVssComponent *This,
+ BSTR *pbstrRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponentCount)(
+ IVssComponent *This,
+ UINT *pcRestoreSubcomponent);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponent)(
+ IVssComponent *This,
+ UINT iComponent,
+ BSTR *pbstrLogicalPath,
+ BSTR *pbstrComponentName,
+ boolean *pbRepair);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileRestoreStatus)(
+ IVssComponent *This,
+ VSS_FILE_RESTORE_STATUS *pStatus);
+
+ HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyTime)(
+ IVssComponent *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ FILETIME ftLastModifyTime);
+
+ HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyLSN)(
+ IVssComponent *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ BSTR bstrLsnString);
+
+ HRESULT (STDMETHODCALLTYPE *GetDifferencedFilesCount)(
+ IVssComponent *This,
+ UINT *pcDifferencedFiles);
+
+ HRESULT (STDMETHODCALLTYPE *GetDifferencedFile)(
+ IVssComponent *This,
+ UINT iDifferencedFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilespec,
+ WINBOOL *pbRecursive,
+ BSTR *pbstrLsnString,
+ FILETIME *pftLastModifyTime);
END_INTERFACE
+} IVssComponentVtbl;
+
+interface IVssComponent {
+ CONST_VTBL IVssComponentVtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssComponent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssComponent_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssComponent_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssComponent methods ***/
#define IVssComponent_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath)
-#define IVssComponent_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
-#define IVssComponent_GetComponentName(This,pwszName) (This)->lpVtbl->GetComponentName(This,pwszName)
+#define IVssComponent_GetComponentType(This,pct) (This)->lpVtbl->GetComponentType(This,pct)
+#define IVssComponent_GetComponentName(This,pbstrName) (This)->lpVtbl->GetComponentName(This,pbstrName)
#define IVssComponent_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded)
#define IVssComponent_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings)
-#define IVssComponent_GetAlternateLocationMapping(This,iMapping,ppMapping) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppMapping)
-#define IVssComponent_SetBackupMetadata(This,bstrMetadata) (This)->lpVtbl->SetBackupMetadata(This,bstrMetadata)
-#define IVssComponent_GetBackupMetadata(This,pbstrMetadata) (This)->lpVtbl->GetBackupMetadata(This,pbstrMetadata)
+#define IVssComponent_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
+#define IVssComponent_SetBackupMetadata(This,wszData) (This)->lpVtbl->SetBackupMetadata(This,wszData)
+#define IVssComponent_GetBackupMetadata(This,pbstrData) (This)->lpVtbl->GetBackupMetadata(This,pbstrData)
#define IVssComponent_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata)
#define IVssComponent_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles)
#define IVssComponent_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata)
#define IVssComponent_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore)
#define IVssComponent_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores)
#define IVssComponent_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget)
-#define IVssComponent_GetNewTarget(This,iMapping,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iMapping,ppFiledesc)
+#define IVssComponent_GetNewTarget(This,iNewTarget,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc)
#define IVssComponent_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList)
#define IVssComponent_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget)
#define IVssComponent_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList)
@@ -363,98 +828,524 @@ DECLARE_INTERFACE_(IVssComponent,IUnknown)
#define IVssComponent_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair)
#define IVssComponent_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus)
#define IVssComponent_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime)
-#define IVssComponent_AddDifferencedFilesByLastModifyLSN() (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This)
+#define IVssComponent_AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString) (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString)
#define IVssComponent_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles)
#define IVssComponent_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssComponent_QueryInterface(IVssComponent* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssComponent_AddRef(IVssComponent* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssComponent_Release(IVssComponent* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssComponent methods ***/
+static FORCEINLINE HRESULT IVssComponent_GetLogicalPath(IVssComponent* This,BSTR *pbstrPath) {
+ return This->lpVtbl->GetLogicalPath(This,pbstrPath);
+}
+static FORCEINLINE HRESULT IVssComponent_GetComponentType(IVssComponent* This,VSS_COMPONENT_TYPE *pct) {
+ return This->lpVtbl->GetComponentType(This,pct);
+}
+static FORCEINLINE HRESULT IVssComponent_GetComponentName(IVssComponent* This,BSTR *pbstrName) {
+ return This->lpVtbl->GetComponentName(This,pbstrName);
+}
+static FORCEINLINE HRESULT IVssComponent_GetBackupSucceeded(IVssComponent* This,boolean *pbSucceeded) {
+ return This->lpVtbl->GetBackupSucceeded(This,pbSucceeded);
+}
+static FORCEINLINE HRESULT IVssComponent_GetAlternateLocationMappingCount(IVssComponent* This,UINT *pcMappings) {
+ return This->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings);
+}
+static FORCEINLINE HRESULT IVssComponent_GetAlternateLocationMapping(IVssComponent* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssComponent_SetBackupMetadata(IVssComponent* This,LPCWSTR wszData) {
+ return This->lpVtbl->SetBackupMetadata(This,wszData);
+}
+static FORCEINLINE HRESULT IVssComponent_GetBackupMetadata(IVssComponent* This,BSTR *pbstrData) {
+ return This->lpVtbl->GetBackupMetadata(This,pbstrData);
+}
+static FORCEINLINE HRESULT IVssComponent_AddPartialFile(IVssComponent* This,LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) {
+ return This->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata);
+}
+static FORCEINLINE HRESULT IVssComponent_GetPartialFileCount(IVssComponent* This,UINT *pcPartialFiles) {
+ return This->lpVtbl->GetPartialFileCount(This,pcPartialFiles);
+}
+static FORCEINLINE HRESULT IVssComponent_GetPartialFile(IVssComponent* This,UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) {
+ return This->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata);
+}
+static FORCEINLINE HRESULT IVssComponent_IsSelectedForRestore(IVssComponent* This,boolean *pbSelectedForRestore) {
+ return This->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssComponent_GetAdditionalRestores(IVssComponent* This,boolean *pbAdditionalRestores) {
+ return This->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssComponent_GetNewTargetCount(IVssComponent* This,UINT *pcNewTarget) {
+ return This->lpVtbl->GetNewTargetCount(This,pcNewTarget);
+}
+static FORCEINLINE HRESULT IVssComponent_GetNewTarget(IVssComponent* This,UINT iNewTarget,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssComponent_AddDirectedTarget(IVssComponent* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) {
+ return This->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList);
+}
+static FORCEINLINE HRESULT IVssComponent_GetDirectedTargetCount(IVssComponent* This,UINT *pcDirectedTarget) {
+ return This->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget);
+}
+static FORCEINLINE HRESULT IVssComponent_GetDirectedTarget(IVssComponent* This,UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) {
+ return This->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList);
+}
+static FORCEINLINE HRESULT IVssComponent_SetRestoreMetadata(IVssComponent* This,LPCWSTR wszRestoreMetadata) {
+ return This->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata);
+}
+static FORCEINLINE HRESULT IVssComponent_GetRestoreMetadata(IVssComponent* This,BSTR *pbstrRestoreMetadata) {
+ return This->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata);
+}
+static FORCEINLINE HRESULT IVssComponent_SetRestoreTarget(IVssComponent* This,VSS_RESTORE_TARGET target) {
+ return This->lpVtbl->SetRestoreTarget(This,target);
+}
+static FORCEINLINE HRESULT IVssComponent_GetRestoreTarget(IVssComponent* This,VSS_RESTORE_TARGET *pTarget) {
+ return This->lpVtbl->GetRestoreTarget(This,pTarget);
+}
+static FORCEINLINE HRESULT IVssComponent_SetPreRestoreFailureMsg(IVssComponent* This,LPCWSTR wszPreRestoreFailureMsg) {
+ return This->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponent_GetPreRestoreFailureMsg(IVssComponent* This,BSTR *pbstrPreRestoreFailureMsg) {
+ return This->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponent_SetPostRestoreFailureMsg(IVssComponent* This,LPCWSTR wszPostRestoreFailureMsg) {
+ return This->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponent_GetPostRestoreFailureMsg(IVssComponent* This,BSTR *pbstrPostRestoreFailureMsg) {
+ return This->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponent_SetBackupStamp(IVssComponent* This,LPCWSTR wszBackupStamp) {
+ return This->lpVtbl->SetBackupStamp(This,wszBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponent_GetBackupStamp(IVssComponent* This,BSTR *pbstrBackupStamp) {
+ return This->lpVtbl->GetBackupStamp(This,pbstrBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponent_GetPreviousBackupStamp(IVssComponent* This,BSTR *pbstrBackupStamp) {
+ return This->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponent_GetBackupOptions(IVssComponent* This,BSTR *pbstrBackupOptions) {
+ return This->lpVtbl->GetBackupOptions(This,pbstrBackupOptions);
+}
+static FORCEINLINE HRESULT IVssComponent_GetRestoreOptions(IVssComponent* This,BSTR *pbstrRestoreOptions) {
+ return This->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssComponent_GetRestoreSubcomponentCount(IVssComponent* This,UINT *pcRestoreSubcomponent) {
+ return This->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent);
+}
+static FORCEINLINE HRESULT IVssComponent_GetRestoreSubcomponent(IVssComponent* This,UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,boolean *pbRepair) {
+ return This->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair);
+}
+static FORCEINLINE HRESULT IVssComponent_GetFileRestoreStatus(IVssComponent* This,VSS_FILE_RESTORE_STATUS *pStatus) {
+ return This->lpVtbl->GetFileRestoreStatus(This,pStatus);
+}
+static FORCEINLINE HRESULT IVssComponent_AddDifferencedFilesByLastModifyTime(IVssComponent* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) {
+ return This->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime);
+}
+static FORCEINLINE HRESULT IVssComponent_AddDifferencedFilesByLastModifyLSN(IVssComponent* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,BSTR bstrLsnString) {
+ return This->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString);
+}
+static FORCEINLINE HRESULT IVssComponent_GetDifferencedFilesCount(IVssComponent* This,UINT *pcDifferencedFiles) {
+ return This->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles);
+}
+static FORCEINLINE HRESULT IVssComponent_GetDifferencedFile(IVssComponent* This,UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) {
+ return This->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime);
+}
+#endif
+#endif
-#if (_WIN32_WINNT >= 0x600)
-#undef INTERFACE
-#define INTERFACE IVssComponentEx
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssComponentEx,IVssComponent)
+
+
+#endif /* __IVssComponent_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssWriterComponents interface
+ */
+#ifndef __IVssWriterComponents_INTERFACE_DEFINED__
+#define __IVssWriterComponents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssWriterComponents, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssWriterComponents
{
+
+ BEGIN_INTERFACE
+
+ virtual HRESULT STDMETHODCALLTYPE GetComponentCount(
+ UINT *pcComponents) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWriterInfo(
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetComponent(
+ UINT iComponent,
+ IVssComponent **ppComponent) = 0;
+
+ END_INTERFACE
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssWriterComponents, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
+#endif
+#else
+typedef struct IVssWriterComponentsVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssComponent methods */
- STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrPath) PURE;
- STDMETHOD_(HRESULT,GetComponentType)(THIS_ VSS_COMPONENT_TYPE *pType) PURE;
- STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pwszName) PURE;
- STDMETHOD_(HRESULT,GetBackupSucceeded)(THIS_ BOOLEAN *pbSucceeded) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMappingCount)(THIS_ UINT *pcMappings) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,const IVssWMFiledesc **ppMapping) PURE;
- STDMETHOD_(HRESULT,SetBackupMetadata)(THIS_ BSTR bstrMetadata) PURE;
- STDMETHOD_(HRESULT,GetBackupMetadata)(THIS_ BSTR *pbstrMetadata) PURE;
- STDMETHOD_(HRESULT,AddPartialFile)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) PURE;
- STDMETHOD_(HRESULT,GetPartialFileCount)(THIS_ UINT *pcPartialFiles) PURE;
- STDMETHOD_(HRESULT,GetPartialFile)(THIS_ UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) PURE;
- STDMETHOD_(HRESULT,IsSelectedForRestore)(THIS_ BOOLEAN *pbSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,GetAdditionalRestores)(THIS_ BOOLEAN *pbAdditionalRestores) PURE;
- STDMETHOD_(HRESULT,GetNewTargetCount)(THIS_ UINT *pcNewTarget) PURE;
- STDMETHOD_(HRESULT,GetNewTarget)(THIS_ UINT iMapping,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,AddDirectedTarget)(THIS_ LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) PURE;
- STDMETHOD_(HRESULT,GetDirectedTargetCount)(THIS_ UINT *pcDirectedTarget) PURE;
- STDMETHOD_(HRESULT,GetDirectedTarget)(THIS_ UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) PURE;
- STDMETHOD_(HRESULT,SetRestoreMetadata)(THIS_ LPCWSTR wszRestoreMetadata) PURE;
- STDMETHOD_(HRESULT,GetRestoreMetadata)(THIS_ BSTR *pbstrRestoreMetadata) PURE;
- STDMETHOD_(HRESULT,SetRestoreTarget)(THIS_ VSS_RESTORE_TARGET target) PURE;
- STDMETHOD_(HRESULT,GetRestoreTarget)(THIS_ VSS_RESTORE_TARGET *pTarget) PURE;
- STDMETHOD_(HRESULT,SetPreRestoreFailureMsg)(THIS_ LPCWSTR wszPreRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPreRestoreFailureMsg)(THIS_ BSTR *pbstrPreRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetPostRestoreFailureMsg)(THIS_ LPCWSTR wszPostRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPostRestoreFailureMsg)(THIS_ BSTR *pbstrPostRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetBackupStamp)(THIS_ LPCWSTR wszBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetPreviousBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetBackupOptions)(THIS_ BSTR *pbstrBackupOptions) PURE;
- STDMETHOD_(HRESULT,GetRestoreOptions)(THIS_ BSTR *pbstrRestoreOptions) PURE;
- STDMETHOD_(HRESULT,GetRestoreSubcomponentCount)(THIS_ UINT *pcRestoreSubcomponent) PURE;
- STDMETHOD_(HRESULT,GetRestoreSubcomponent)(THIS_ UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,BOOLEAN *pbRepair) PURE;
- STDMETHOD_(HRESULT,GetFileRestoreStatus)(THIS_ VSS_FILE_RESTORE_STATUS *pStatus) PURE;
- STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyTime)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) PURE;
- STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyLSN)(THIS) PURE;
- STDMETHOD_(HRESULT,GetDifferencedFilesCount)(THIS_ UINT *pcDifferencedFiles) PURE;
- STDMETHOD_(HRESULT,GetDifferencedFile)(THIS_ UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) PURE;
-
- /* IVssComponentEx methods */
- STDMETHOD_(HRESULT,SetPrepareForBackupFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetPostSnapshotFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPrepareForBackupFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPostSnapshotFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetAuthoritativeRestore)(THIS_ BOOLEAN *pbAuth) PURE;
- STDMETHOD_(HRESULT,GetRollForward)(THIS_ VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) PURE;
- STDMETHOD_(HRESULT,GetRestoreName)(THIS_ BSTR *pbstrName) PURE;
+ /*** IVssWriterComponents methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetComponentCount)(
+ IVssWriterComponents *This,
+ UINT *pcComponents);
+
+ HRESULT (STDMETHODCALLTYPE *GetWriterInfo)(
+ IVssWriterComponents *This,
+ VSS_ID *pidInstance,
+ VSS_ID *pidWriter);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponent)(
+ IVssWriterComponents *This,
+ UINT iComponent,
+ IVssComponent **ppComponent);
END_INTERFACE
+} IVssWriterComponentsVtbl;
+
+interface IVssWriterComponents {
+ CONST_VTBL IVssWriterComponentsVtbl* lpVtbl;
};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IVssWriterComponents methods ***/
+#define IVssWriterComponents_GetComponentCount(This,pcComponents) (This)->lpVtbl->GetComponentCount(This,pcComponents)
+#define IVssWriterComponents_GetWriterInfo(This,pidInstance,pidWriter) (This)->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter)
+#define IVssWriterComponents_GetComponent(This,iComponent,ppComponent) (This)->lpVtbl->GetComponent(This,iComponent,ppComponent)
+#else
+/*** IVssWriterComponents methods ***/
+static FORCEINLINE HRESULT IVssWriterComponents_GetComponentCount(IVssWriterComponents* This,UINT *pcComponents) {
+ return This->lpVtbl->GetComponentCount(This,pcComponents);
+}
+static FORCEINLINE HRESULT IVssWriterComponents_GetWriterInfo(IVssWriterComponents* This,VSS_ID *pidInstance,VSS_ID *pidWriter) {
+ return This->lpVtbl->GetWriterInfo(This,pidInstance,pidWriter);
+}
+static FORCEINLINE HRESULT IVssWriterComponents_GetComponent(IVssWriterComponents* This,UINT iComponent,IVssComponent **ppComponent) {
+ return This->lpVtbl->GetComponent(This,iComponent,ppComponent);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssWriterComponents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssComponentEx interface
+ */
+#ifndef __IVssComponentEx_INTERFACE_DEFINED__
+#define __IVssComponentEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssComponentEx, 0x156c8b5e, 0xf131, 0x4bd7, 0x9c,0x97, 0xd1,0x92,0x3b,0xe7,0xe1,0xfa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("156c8b5e-f131-4bd7-9c97-d1923be7e1fa")
+IVssComponentEx : public IVssComponent
+{
+ virtual HRESULT STDMETHODCALLTYPE SetPrepareForBackupFailureMsg(
+ LPCWSTR wszFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPostSnapshotFailureMsg(
+ LPCWSTR wszFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrepareForBackupFailureMsg(
+ BSTR *pbstrFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPostSnapshotFailureMsg(
+ BSTR *pbstrFailureMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAuthoritativeRestore(
+ boolean *pbAuth) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRollForward(
+ VSS_ROLLFORWARD_TYPE *pRollType,
+ BSTR *pbstrPoint) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRestoreName(
+ BSTR *pbstrName) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssComponentEx, 0x156c8b5e, 0xf131, 0x4bd7, 0x9c,0x97, 0xd1,0x92,0x3b,0xe7,0xe1,0xfa)
+#endif
+#else
+typedef struct IVssComponentExVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssComponentEx *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssComponentEx *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssComponentEx *This);
+
+ /*** IVssComponent methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
+ IVssComponentEx *This,
+ BSTR *pbstrPath);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentType)(
+ IVssComponentEx *This,
+ VSS_COMPONENT_TYPE *pct);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentName)(
+ IVssComponentEx *This,
+ BSTR *pbstrName);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupSucceeded)(
+ IVssComponentEx *This,
+ boolean *pbSucceeded);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMappingCount)(
+ IVssComponentEx *This,
+ UINT *pcMappings);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
+ IVssComponentEx *This,
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupMetadata)(
+ IVssComponentEx *This,
+ LPCWSTR wszData);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupMetadata)(
+ IVssComponentEx *This,
+ BSTR *pbstrData);
+
+ HRESULT (STDMETHODCALLTYPE *AddPartialFile)(
+ IVssComponentEx *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilename,
+ LPCWSTR wszRanges,
+ LPCWSTR wszMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *GetPartialFileCount)(
+ IVssComponentEx *This,
+ UINT *pcPartialFiles);
+
+ HRESULT (STDMETHODCALLTYPE *GetPartialFile)(
+ IVssComponentEx *This,
+ UINT iPartialFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilename,
+ BSTR *pbstrRange,
+ BSTR *pbstrMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *IsSelectedForRestore)(
+ IVssComponentEx *This,
+ boolean *pbSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *GetAdditionalRestores)(
+ IVssComponentEx *This,
+ boolean *pbAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *GetNewTargetCount)(
+ IVssComponentEx *This,
+ UINT *pcNewTarget);
+
+ HRESULT (STDMETHODCALLTYPE *GetNewTarget)(
+ IVssComponentEx *This,
+ UINT iNewTarget,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *AddDirectedTarget)(
+ IVssComponentEx *This,
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilename,
+ LPCWSTR wszSourceRangeList,
+ LPCWSTR wszDestinationPath,
+ LPCWSTR wszDestinationFilename,
+ LPCWSTR wszDestinationRangeList);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectedTargetCount)(
+ IVssComponentEx *This,
+ UINT *pcDirectedTarget);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectedTarget)(
+ IVssComponentEx *This,
+ UINT iDirectedTarget,
+ BSTR *pbstrSourcePath,
+ BSTR *pbstrSourceFileName,
+ BSTR *pbstrSourceRangeList,
+ BSTR *pbstrDestinationPath,
+ BSTR *pbstrDestinationFilename,
+ BSTR *pbstrDestinationRangeList);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreMetadata)(
+ IVssComponentEx *This,
+ LPCWSTR wszRestoreMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreMetadata)(
+ IVssComponentEx *This,
+ BSTR *pbstrRestoreMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreTarget)(
+ IVssComponentEx *This,
+ VSS_RESTORE_TARGET target);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreTarget)(
+ IVssComponentEx *This,
+ VSS_RESTORE_TARGET *pTarget);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreRestoreFailureMsg)(
+ IVssComponentEx *This,
+ LPCWSTR wszPreRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPreRestoreFailureMsg)(
+ IVssComponentEx *This,
+ BSTR *pbstrPreRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetPostRestoreFailureMsg)(
+ IVssComponentEx *This,
+ LPCWSTR wszPostRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPostRestoreFailureMsg)(
+ IVssComponentEx *This,
+ BSTR *pbstrPostRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupStamp)(
+ IVssComponentEx *This,
+ LPCWSTR wszBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupStamp)(
+ IVssComponentEx *This,
+ BSTR *pbstrBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetPreviousBackupStamp)(
+ IVssComponentEx *This,
+ BSTR *pbstrBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupOptions)(
+ IVssComponentEx *This,
+ BSTR *pbstrBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreOptions)(
+ IVssComponentEx *This,
+ BSTR *pbstrRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponentCount)(
+ IVssComponentEx *This,
+ UINT *pcRestoreSubcomponent);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponent)(
+ IVssComponentEx *This,
+ UINT iComponent,
+ BSTR *pbstrLogicalPath,
+ BSTR *pbstrComponentName,
+ boolean *pbRepair);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileRestoreStatus)(
+ IVssComponentEx *This,
+ VSS_FILE_RESTORE_STATUS *pStatus);
+
+ HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyTime)(
+ IVssComponentEx *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ FILETIME ftLastModifyTime);
+
+ HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyLSN)(
+ IVssComponentEx *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ BSTR bstrLsnString);
+
+ HRESULT (STDMETHODCALLTYPE *GetDifferencedFilesCount)(
+ IVssComponentEx *This,
+ UINT *pcDifferencedFiles);
+
+ HRESULT (STDMETHODCALLTYPE *GetDifferencedFile)(
+ IVssComponentEx *This,
+ UINT iDifferencedFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilespec,
+ WINBOOL *pbRecursive,
+ BSTR *pbstrLsnString,
+ FILETIME *pftLastModifyTime);
+
+ /*** IVssComponentEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetPrepareForBackupFailureMsg)(
+ IVssComponentEx *This,
+ LPCWSTR wszFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetPostSnapshotFailureMsg)(
+ IVssComponentEx *This,
+ LPCWSTR wszFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPrepareForBackupFailureMsg)(
+ IVssComponentEx *This,
+ BSTR *pbstrFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPostSnapshotFailureMsg)(
+ IVssComponentEx *This,
+ BSTR *pbstrFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetAuthoritativeRestore)(
+ IVssComponentEx *This,
+ boolean *pbAuth);
+
+ HRESULT (STDMETHODCALLTYPE *GetRollForward)(
+ IVssComponentEx *This,
+ VSS_ROLLFORWARD_TYPE *pRollType,
+ BSTR *pbstrPoint);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreName)(
+ IVssComponentEx *This,
+ BSTR *pbstrName);
+
+ END_INTERFACE
+} IVssComponentExVtbl;
+
+interface IVssComponentEx {
+ CONST_VTBL IVssComponentExVtbl* lpVtbl;
+};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssComponentEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssComponentEx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssComponentEx_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssComponent methods ***/
#define IVssComponentEx_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath)
-#define IVssComponentEx_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
-#define IVssComponentEx_GetComponentName(This,pwszName) (This)->lpVtbl->GetComponentName(This,pwszName)
+#define IVssComponentEx_GetComponentType(This,pct) (This)->lpVtbl->GetComponentType(This,pct)
+#define IVssComponentEx_GetComponentName(This,pbstrName) (This)->lpVtbl->GetComponentName(This,pbstrName)
#define IVssComponentEx_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded)
#define IVssComponentEx_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings)
-#define IVssComponentEx_GetAlternateLocationMapping(This,iMapping,ppMapping) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppMapping)
-#define IVssComponentEx_SetBackupMetadata(This,bstrMetadata) (This)->lpVtbl->SetBackupMetadata(This,bstrMetadata)
-#define IVssComponentEx_GetBackupMetadata(This,pbstrMetadata) (This)->lpVtbl->GetBackupMetadata(This,pbstrMetadata)
+#define IVssComponentEx_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
+#define IVssComponentEx_SetBackupMetadata(This,wszData) (This)->lpVtbl->SetBackupMetadata(This,wszData)
+#define IVssComponentEx_GetBackupMetadata(This,pbstrData) (This)->lpVtbl->GetBackupMetadata(This,pbstrData)
#define IVssComponentEx_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata)
#define IVssComponentEx_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles)
#define IVssComponentEx_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata)
#define IVssComponentEx_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore)
#define IVssComponentEx_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores)
#define IVssComponentEx_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget)
-#define IVssComponentEx_GetNewTarget(This,iMapping,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iMapping,ppFiledesc)
+#define IVssComponentEx_GetNewTarget(This,iNewTarget,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc)
#define IVssComponentEx_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList)
#define IVssComponentEx_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget)
#define IVssComponentEx_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList)
@@ -475,9 +1366,10 @@ DECLARE_INTERFACE_(IVssComponentEx,IVssComponent)
#define IVssComponentEx_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair)
#define IVssComponentEx_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus)
#define IVssComponentEx_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime)
-#define IVssComponentEx_AddDifferencedFilesByLastModifyLSN() (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This)
+#define IVssComponentEx_AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString) (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString)
#define IVssComponentEx_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles)
#define IVssComponentEx_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime)
+/*** IVssComponentEx methods ***/
#define IVssComponentEx_SetPrepareForBackupFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg)
#define IVssComponentEx_SetPostSnapshotFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg)
#define IVssComponentEx_GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg)
@@ -485,100 +1377,466 @@ DECLARE_INTERFACE_(IVssComponentEx,IVssComponent)
#define IVssComponentEx_GetAuthoritativeRestore(This,pbAuth) (This)->lpVtbl->GetAuthoritativeRestore(This,pbAuth)
#define IVssComponentEx_GetRollForward(This,pRollType,pbstrPoint) (This)->lpVtbl->GetRollForward(This,pRollType,pbstrPoint)
#define IVssComponentEx_GetRestoreName(This,pbstrName) (This)->lpVtbl->GetRestoreName(This,pbstrName)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x600)*/
-
-#if (_WIN32_WINNT >= 0x601)
-#undef INTERFACE
-#define INTERFACE IVssComponentEx2
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssComponentEx2,IVssComponentEx)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssComponentEx_QueryInterface(IVssComponentEx* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssComponentEx_AddRef(IVssComponentEx* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssComponentEx_Release(IVssComponentEx* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssComponent methods ***/
+static FORCEINLINE HRESULT IVssComponentEx_GetLogicalPath(IVssComponentEx* This,BSTR *pbstrPath) {
+ return This->lpVtbl->GetLogicalPath(This,pbstrPath);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetComponentType(IVssComponentEx* This,VSS_COMPONENT_TYPE *pct) {
+ return This->lpVtbl->GetComponentType(This,pct);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetComponentName(IVssComponentEx* This,BSTR *pbstrName) {
+ return This->lpVtbl->GetComponentName(This,pbstrName);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetBackupSucceeded(IVssComponentEx* This,boolean *pbSucceeded) {
+ return This->lpVtbl->GetBackupSucceeded(This,pbSucceeded);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetAlternateLocationMappingCount(IVssComponentEx* This,UINT *pcMappings) {
+ return This->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetAlternateLocationMapping(IVssComponentEx* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetBackupMetadata(IVssComponentEx* This,LPCWSTR wszData) {
+ return This->lpVtbl->SetBackupMetadata(This,wszData);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetBackupMetadata(IVssComponentEx* This,BSTR *pbstrData) {
+ return This->lpVtbl->GetBackupMetadata(This,pbstrData);
+}
+static FORCEINLINE HRESULT IVssComponentEx_AddPartialFile(IVssComponentEx* This,LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) {
+ return This->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPartialFileCount(IVssComponentEx* This,UINT *pcPartialFiles) {
+ return This->lpVtbl->GetPartialFileCount(This,pcPartialFiles);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPartialFile(IVssComponentEx* This,UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) {
+ return This->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx_IsSelectedForRestore(IVssComponentEx* This,boolean *pbSelectedForRestore) {
+ return This->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetAdditionalRestores(IVssComponentEx* This,boolean *pbAdditionalRestores) {
+ return This->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetNewTargetCount(IVssComponentEx* This,UINT *pcNewTarget) {
+ return This->lpVtbl->GetNewTargetCount(This,pcNewTarget);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetNewTarget(IVssComponentEx* This,UINT iNewTarget,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssComponentEx_AddDirectedTarget(IVssComponentEx* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) {
+ return This->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetDirectedTargetCount(IVssComponentEx* This,UINT *pcDirectedTarget) {
+ return This->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetDirectedTarget(IVssComponentEx* This,UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) {
+ return This->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetRestoreMetadata(IVssComponentEx* This,LPCWSTR wszRestoreMetadata) {
+ return This->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRestoreMetadata(IVssComponentEx* This,BSTR *pbstrRestoreMetadata) {
+ return This->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetRestoreTarget(IVssComponentEx* This,VSS_RESTORE_TARGET target) {
+ return This->lpVtbl->SetRestoreTarget(This,target);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRestoreTarget(IVssComponentEx* This,VSS_RESTORE_TARGET *pTarget) {
+ return This->lpVtbl->GetRestoreTarget(This,pTarget);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetPreRestoreFailureMsg(IVssComponentEx* This,LPCWSTR wszPreRestoreFailureMsg) {
+ return This->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPreRestoreFailureMsg(IVssComponentEx* This,BSTR *pbstrPreRestoreFailureMsg) {
+ return This->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetPostRestoreFailureMsg(IVssComponentEx* This,LPCWSTR wszPostRestoreFailureMsg) {
+ return This->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPostRestoreFailureMsg(IVssComponentEx* This,BSTR *pbstrPostRestoreFailureMsg) {
+ return This->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetBackupStamp(IVssComponentEx* This,LPCWSTR wszBackupStamp) {
+ return This->lpVtbl->SetBackupStamp(This,wszBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetBackupStamp(IVssComponentEx* This,BSTR *pbstrBackupStamp) {
+ return This->lpVtbl->GetBackupStamp(This,pbstrBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPreviousBackupStamp(IVssComponentEx* This,BSTR *pbstrBackupStamp) {
+ return This->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetBackupOptions(IVssComponentEx* This,BSTR *pbstrBackupOptions) {
+ return This->lpVtbl->GetBackupOptions(This,pbstrBackupOptions);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRestoreOptions(IVssComponentEx* This,BSTR *pbstrRestoreOptions) {
+ return This->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRestoreSubcomponentCount(IVssComponentEx* This,UINT *pcRestoreSubcomponent) {
+ return This->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRestoreSubcomponent(IVssComponentEx* This,UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,boolean *pbRepair) {
+ return This->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetFileRestoreStatus(IVssComponentEx* This,VSS_FILE_RESTORE_STATUS *pStatus) {
+ return This->lpVtbl->GetFileRestoreStatus(This,pStatus);
+}
+static FORCEINLINE HRESULT IVssComponentEx_AddDifferencedFilesByLastModifyTime(IVssComponentEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) {
+ return This->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime);
+}
+static FORCEINLINE HRESULT IVssComponentEx_AddDifferencedFilesByLastModifyLSN(IVssComponentEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,BSTR bstrLsnString) {
+ return This->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetDifferencedFilesCount(IVssComponentEx* This,UINT *pcDifferencedFiles) {
+ return This->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetDifferencedFile(IVssComponentEx* This,UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) {
+ return This->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime);
+}
+/*** IVssComponentEx methods ***/
+static FORCEINLINE HRESULT IVssComponentEx_SetPrepareForBackupFailureMsg(IVssComponentEx* This,LPCWSTR wszFailureMsg) {
+ return This->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_SetPostSnapshotFailureMsg(IVssComponentEx* This,LPCWSTR wszFailureMsg) {
+ return This->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPrepareForBackupFailureMsg(IVssComponentEx* This,BSTR *pbstrFailureMsg) {
+ return This->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetPostSnapshotFailureMsg(IVssComponentEx* This,BSTR *pbstrFailureMsg) {
+ return This->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetAuthoritativeRestore(IVssComponentEx* This,boolean *pbAuth) {
+ return This->lpVtbl->GetAuthoritativeRestore(This,pbAuth);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRollForward(IVssComponentEx* This,VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) {
+ return This->lpVtbl->GetRollForward(This,pRollType,pbstrPoint);
+}
+static FORCEINLINE HRESULT IVssComponentEx_GetRestoreName(IVssComponentEx* This,BSTR *pbstrName) {
+ return This->lpVtbl->GetRestoreName(This,pbstrName);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssComponentEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssComponentEx2 interface
+ */
+#ifndef __IVssComponentEx2_INTERFACE_DEFINED__
+#define __IVssComponentEx2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssComponentEx2, 0x3b5be0f2, 0x07a9, 0x4e4b, 0xbd,0xd3, 0xcf,0xdc,0x8e,0x2c,0x0d,0x2d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3b5be0f2-07a9-4e4b-bdd3-cfdc8e2c0d2d")
+IVssComponentEx2 : public IVssComponentEx
{
+ virtual HRESULT STDMETHODCALLTYPE SetFailure(
+ HRESULT hr,
+ HRESULT hrApplication,
+ LPCWSTR wszApplicationMessage,
+ DWORD dwReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFailure(
+ HRESULT *phr,
+ HRESULT *phrApplication,
+ BSTR *pbstrApplicationMessage,
+ DWORD *pdwReserved) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssComponentEx2, 0x3b5be0f2, 0x07a9, 0x4e4b, 0xbd,0xd3, 0xcf,0xdc,0x8e,0x2c,0x0d,0x2d)
+#endif
+#else
+typedef struct IVssComponentEx2Vtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- /* IVssComponent methods */
- STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrPath) PURE;
- STDMETHOD_(HRESULT,GetComponentType)(THIS_ VSS_COMPONENT_TYPE *pType) PURE;
- STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pwszName) PURE;
- STDMETHOD_(HRESULT,GetBackupSucceeded)(THIS_ BOOLEAN *pbSucceeded) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMappingCount)(THIS_ UINT *pcMappings) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocationMapping)(THIS_ UINT iMapping,const IVssWMFiledesc **ppMapping) PURE;
- STDMETHOD_(HRESULT,SetBackupMetadata)(THIS_ BSTR bstrMetadata) PURE;
- STDMETHOD_(HRESULT,GetBackupMetadata)(THIS_ BSTR *pbstrMetadata) PURE;
- STDMETHOD_(HRESULT,AddPartialFile)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) PURE;
- STDMETHOD_(HRESULT,GetPartialFileCount)(THIS_ UINT *pcPartialFiles) PURE;
- STDMETHOD_(HRESULT,GetPartialFile)(THIS_ UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) PURE;
- STDMETHOD_(HRESULT,IsSelectedForRestore)(THIS_ BOOLEAN *pbSelectedForRestore) PURE;
- STDMETHOD_(HRESULT,GetAdditionalRestores)(THIS_ BOOLEAN *pbAdditionalRestores) PURE;
- STDMETHOD_(HRESULT,GetNewTargetCount)(THIS_ UINT *pcNewTarget) PURE;
- STDMETHOD_(HRESULT,GetNewTarget)(THIS_ UINT iMapping,IVssWMFiledesc **ppFiledesc) PURE;
- STDMETHOD_(HRESULT,AddDirectedTarget)(THIS_ LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) PURE;
- STDMETHOD_(HRESULT,GetDirectedTargetCount)(THIS_ UINT *pcDirectedTarget) PURE;
- STDMETHOD_(HRESULT,GetDirectedTarget)(THIS_ UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) PURE;
- STDMETHOD_(HRESULT,SetRestoreMetadata)(THIS_ LPCWSTR wszRestoreMetadata) PURE;
- STDMETHOD_(HRESULT,GetRestoreMetadata)(THIS_ BSTR *pbstrRestoreMetadata) PURE;
- STDMETHOD_(HRESULT,SetRestoreTarget)(THIS_ VSS_RESTORE_TARGET target) PURE;
- STDMETHOD_(HRESULT,GetRestoreTarget)(THIS_ VSS_RESTORE_TARGET *pTarget) PURE;
- STDMETHOD_(HRESULT,SetPreRestoreFailureMsg)(THIS_ LPCWSTR wszPreRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPreRestoreFailureMsg)(THIS_ BSTR *pbstrPreRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetPostRestoreFailureMsg)(THIS_ LPCWSTR wszPostRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPostRestoreFailureMsg)(THIS_ BSTR *pbstrPostRestoreFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetBackupStamp)(THIS_ LPCWSTR wszBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetPreviousBackupStamp)(THIS_ BSTR *pbstrBackupStamp) PURE;
- STDMETHOD_(HRESULT,GetBackupOptions)(THIS_ BSTR *pbstrBackupOptions) PURE;
- STDMETHOD_(HRESULT,GetRestoreOptions)(THIS_ BSTR *pbstrRestoreOptions) PURE;
- STDMETHOD_(HRESULT,GetRestoreSubcomponentCount)(THIS_ UINT *pcRestoreSubcomponent) PURE;
- STDMETHOD_(HRESULT,GetRestoreSubcomponent)(THIS_ UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,BOOLEAN *pbRepair) PURE;
- STDMETHOD_(HRESULT,GetFileRestoreStatus)(THIS_ VSS_FILE_RESTORE_STATUS *pStatus) PURE;
- STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyTime)(THIS_ LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) PURE;
- STDMETHOD_(HRESULT,AddDifferencedFilesByLastModifyLSN)(THIS) PURE;
- STDMETHOD_(HRESULT,GetDifferencedFilesCount)(THIS_ UINT *pcDifferencedFiles) PURE;
- STDMETHOD_(HRESULT,GetDifferencedFile)(THIS_ UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) PURE;
-
- /* IVssComponentEx methods */
- STDMETHOD_(HRESULT,SetPrepareForBackupFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE;
- STDMETHOD_(HRESULT,SetPostSnapshotFailureMsg)(THIS_ LPCWSTR wszFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPrepareForBackupFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetPostSnapshotFailureMsg)(THIS_ BSTR *pbstrFailureMsg) PURE;
- STDMETHOD_(HRESULT,GetAuthoritativeRestore)(THIS_ BOOLEAN *pbAuth) PURE;
- STDMETHOD_(HRESULT,GetRollForward)(THIS_ VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) PURE;
- STDMETHOD_(HRESULT,GetRestoreName)(THIS_ BSTR *pbstrName) PURE;
-
- /* IVssComponentEx2 methods */
- STDMETHOD_(HRESULT,GetFailure)(THIS_ HRESULT *phr,HRESULT *phrApplication,BSTR *pbstrApplicationMessage,DWORD *pdwReserved) PURE;
- STDMETHOD_(HRESULT,SetFailure)(THIS_ HRESULT hr,HRESULT hrApplication,LPCWSTR wszApplicationMessage,DWORD dwReserved) PURE;
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssComponentEx2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssComponentEx2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssComponentEx2 *This);
+
+ /*** IVssComponent methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetLogicalPath)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrPath);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentType)(
+ IVssComponentEx2 *This,
+ VSS_COMPONENT_TYPE *pct);
+
+ HRESULT (STDMETHODCALLTYPE *GetComponentName)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrName);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupSucceeded)(
+ IVssComponentEx2 *This,
+ boolean *pbSucceeded);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMappingCount)(
+ IVssComponentEx2 *This,
+ UINT *pcMappings);
+
+ HRESULT (STDMETHODCALLTYPE *GetAlternateLocationMapping)(
+ IVssComponentEx2 *This,
+ UINT iMapping,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupMetadata)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszData);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupMetadata)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrData);
+
+ HRESULT (STDMETHODCALLTYPE *AddPartialFile)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilename,
+ LPCWSTR wszRanges,
+ LPCWSTR wszMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *GetPartialFileCount)(
+ IVssComponentEx2 *This,
+ UINT *pcPartialFiles);
+
+ HRESULT (STDMETHODCALLTYPE *GetPartialFile)(
+ IVssComponentEx2 *This,
+ UINT iPartialFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilename,
+ BSTR *pbstrRange,
+ BSTR *pbstrMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *IsSelectedForRestore)(
+ IVssComponentEx2 *This,
+ boolean *pbSelectedForRestore);
+
+ HRESULT (STDMETHODCALLTYPE *GetAdditionalRestores)(
+ IVssComponentEx2 *This,
+ boolean *pbAdditionalRestores);
+
+ HRESULT (STDMETHODCALLTYPE *GetNewTargetCount)(
+ IVssComponentEx2 *This,
+ UINT *pcNewTarget);
+
+ HRESULT (STDMETHODCALLTYPE *GetNewTarget)(
+ IVssComponentEx2 *This,
+ UINT iNewTarget,
+ IVssWMFiledesc **ppFiledesc);
+
+ HRESULT (STDMETHODCALLTYPE *AddDirectedTarget)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilename,
+ LPCWSTR wszSourceRangeList,
+ LPCWSTR wszDestinationPath,
+ LPCWSTR wszDestinationFilename,
+ LPCWSTR wszDestinationRangeList);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectedTargetCount)(
+ IVssComponentEx2 *This,
+ UINT *pcDirectedTarget);
+
+ HRESULT (STDMETHODCALLTYPE *GetDirectedTarget)(
+ IVssComponentEx2 *This,
+ UINT iDirectedTarget,
+ BSTR *pbstrSourcePath,
+ BSTR *pbstrSourceFileName,
+ BSTR *pbstrSourceRangeList,
+ BSTR *pbstrDestinationPath,
+ BSTR *pbstrDestinationFilename,
+ BSTR *pbstrDestinationRangeList);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreMetadata)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszRestoreMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreMetadata)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrRestoreMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreTarget)(
+ IVssComponentEx2 *This,
+ VSS_RESTORE_TARGET target);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreTarget)(
+ IVssComponentEx2 *This,
+ VSS_RESTORE_TARGET *pTarget);
+
+ HRESULT (STDMETHODCALLTYPE *SetPreRestoreFailureMsg)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszPreRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPreRestoreFailureMsg)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrPreRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetPostRestoreFailureMsg)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszPostRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPostRestoreFailureMsg)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrPostRestoreFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupStamp)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupStamp)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetPreviousBackupStamp)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrBackupStamp);
+
+ HRESULT (STDMETHODCALLTYPE *GetBackupOptions)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrBackupOptions);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreOptions)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrRestoreOptions);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponentCount)(
+ IVssComponentEx2 *This,
+ UINT *pcRestoreSubcomponent);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreSubcomponent)(
+ IVssComponentEx2 *This,
+ UINT iComponent,
+ BSTR *pbstrLogicalPath,
+ BSTR *pbstrComponentName,
+ boolean *pbRepair);
+
+ HRESULT (STDMETHODCALLTYPE *GetFileRestoreStatus)(
+ IVssComponentEx2 *This,
+ VSS_FILE_RESTORE_STATUS *pStatus);
+
+ HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyTime)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ FILETIME ftLastModifyTime);
+
+ HRESULT (STDMETHODCALLTYPE *AddDifferencedFilesByLastModifyLSN)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ WINBOOL bRecursive,
+ BSTR bstrLsnString);
+
+ HRESULT (STDMETHODCALLTYPE *GetDifferencedFilesCount)(
+ IVssComponentEx2 *This,
+ UINT *pcDifferencedFiles);
+
+ HRESULT (STDMETHODCALLTYPE *GetDifferencedFile)(
+ IVssComponentEx2 *This,
+ UINT iDifferencedFile,
+ BSTR *pbstrPath,
+ BSTR *pbstrFilespec,
+ WINBOOL *pbRecursive,
+ BSTR *pbstrLsnString,
+ FILETIME *pftLastModifyTime);
+
+ /*** IVssComponentEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetPrepareForBackupFailureMsg)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *SetPostSnapshotFailureMsg)(
+ IVssComponentEx2 *This,
+ LPCWSTR wszFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPrepareForBackupFailureMsg)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetPostSnapshotFailureMsg)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrFailureMsg);
+
+ HRESULT (STDMETHODCALLTYPE *GetAuthoritativeRestore)(
+ IVssComponentEx2 *This,
+ boolean *pbAuth);
+
+ HRESULT (STDMETHODCALLTYPE *GetRollForward)(
+ IVssComponentEx2 *This,
+ VSS_ROLLFORWARD_TYPE *pRollType,
+ BSTR *pbstrPoint);
+
+ HRESULT (STDMETHODCALLTYPE *GetRestoreName)(
+ IVssComponentEx2 *This,
+ BSTR *pbstrName);
+
+ /*** IVssComponentEx2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetFailure)(
+ IVssComponentEx2 *This,
+ HRESULT hr,
+ HRESULT hrApplication,
+ LPCWSTR wszApplicationMessage,
+ DWORD dwReserved);
+
+ HRESULT (STDMETHODCALLTYPE *GetFailure)(
+ IVssComponentEx2 *This,
+ HRESULT *phr,
+ HRESULT *phrApplication,
+ BSTR *pbstrApplicationMessage,
+ DWORD *pdwReserved);
END_INTERFACE
+} IVssComponentEx2Vtbl;
+
+interface IVssComponentEx2 {
+ CONST_VTBL IVssComponentEx2Vtbl* lpVtbl;
};
+
#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
#define IVssComponentEx2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVssComponentEx2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVssComponentEx2_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssComponent methods ***/
#define IVssComponentEx2_GetLogicalPath(This,pbstrPath) (This)->lpVtbl->GetLogicalPath(This,pbstrPath)
-#define IVssComponentEx2_GetComponentType(This,pType) (This)->lpVtbl->GetComponentType(This,pType)
-#define IVssComponentEx2_GetComponentName(This,pwszName) (This)->lpVtbl->GetComponentName(This,pwszName)
+#define IVssComponentEx2_GetComponentType(This,pct) (This)->lpVtbl->GetComponentType(This,pct)
+#define IVssComponentEx2_GetComponentName(This,pbstrName) (This)->lpVtbl->GetComponentName(This,pbstrName)
#define IVssComponentEx2_GetBackupSucceeded(This,pbSucceeded) (This)->lpVtbl->GetBackupSucceeded(This,pbSucceeded)
#define IVssComponentEx2_GetAlternateLocationMappingCount(This,pcMappings) (This)->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings)
-#define IVssComponentEx2_GetAlternateLocationMapping(This,iMapping,ppMapping) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppMapping)
-#define IVssComponentEx2_SetBackupMetadata(This,bstrMetadata) (This)->lpVtbl->SetBackupMetadata(This,bstrMetadata)
-#define IVssComponentEx2_GetBackupMetadata(This,pbstrMetadata) (This)->lpVtbl->GetBackupMetadata(This,pbstrMetadata)
+#define IVssComponentEx2_GetAlternateLocationMapping(This,iMapping,ppFiledesc) (This)->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc)
+#define IVssComponentEx2_SetBackupMetadata(This,wszData) (This)->lpVtbl->SetBackupMetadata(This,wszData)
+#define IVssComponentEx2_GetBackupMetadata(This,pbstrData) (This)->lpVtbl->GetBackupMetadata(This,pbstrData)
#define IVssComponentEx2_AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata) (This)->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata)
#define IVssComponentEx2_GetPartialFileCount(This,pcPartialFiles) (This)->lpVtbl->GetPartialFileCount(This,pcPartialFiles)
#define IVssComponentEx2_GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata) (This)->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata)
#define IVssComponentEx2_IsSelectedForRestore(This,pbSelectedForRestore) (This)->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore)
#define IVssComponentEx2_GetAdditionalRestores(This,pbAdditionalRestores) (This)->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores)
#define IVssComponentEx2_GetNewTargetCount(This,pcNewTarget) (This)->lpVtbl->GetNewTargetCount(This,pcNewTarget)
-#define IVssComponentEx2_GetNewTarget(This,iMapping,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iMapping,ppFiledesc)
+#define IVssComponentEx2_GetNewTarget(This,iNewTarget,ppFiledesc) (This)->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc)
#define IVssComponentEx2_AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList) (This)->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList)
#define IVssComponentEx2_GetDirectedTargetCount(This,pcDirectedTarget) (This)->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget)
#define IVssComponentEx2_GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList) (This)->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList)
@@ -599,9 +1857,10 @@ DECLARE_INTERFACE_(IVssComponentEx2,IVssComponentEx)
#define IVssComponentEx2_GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair) (This)->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair)
#define IVssComponentEx2_GetFileRestoreStatus(This,pStatus) (This)->lpVtbl->GetFileRestoreStatus(This,pStatus)
#define IVssComponentEx2_AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime) (This)->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime)
-#define IVssComponentEx2_AddDifferencedFilesByLastModifyLSN() (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This)
+#define IVssComponentEx2_AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString) (This)->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString)
#define IVssComponentEx2_GetDifferencedFilesCount(This,pcDifferencedFiles) (This)->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles)
#define IVssComponentEx2_GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime) (This)->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime)
+/*** IVssComponentEx methods ***/
#define IVssComponentEx2_SetPrepareForBackupFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg)
#define IVssComponentEx2_SetPostSnapshotFailureMsg(This,wszFailureMsg) (This)->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg)
#define IVssComponentEx2_GetPrepareForBackupFailureMsg(This,pbstrFailureMsg) (This)->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg)
@@ -609,182 +1868,1298 @@ DECLARE_INTERFACE_(IVssComponentEx2,IVssComponentEx)
#define IVssComponentEx2_GetAuthoritativeRestore(This,pbAuth) (This)->lpVtbl->GetAuthoritativeRestore(This,pbAuth)
#define IVssComponentEx2_GetRollForward(This,pRollType,pbstrPoint) (This)->lpVtbl->GetRollForward(This,pRollType,pbstrPoint)
#define IVssComponentEx2_GetRestoreName(This,pbstrName) (This)->lpVtbl->GetRestoreName(This,pbstrName)
-#define IVssComponentEx2_GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved) (This)->lpVtbl->GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved)
+/*** IVssComponentEx2 methods ***/
#define IVssComponentEx2_SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved) (This)->lpVtbl->SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved)
-#endif /*COBJMACROS*/
-#endif /*(_WIN32_WINNT >= 0x601)*/
+#define IVssComponentEx2_GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved) (This)->lpVtbl->GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssComponentEx2_QueryInterface(IVssComponentEx2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssComponentEx2_AddRef(IVssComponentEx2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssComponentEx2_Release(IVssComponentEx2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssComponent methods ***/
+static FORCEINLINE HRESULT IVssComponentEx2_GetLogicalPath(IVssComponentEx2* This,BSTR *pbstrPath) {
+ return This->lpVtbl->GetLogicalPath(This,pbstrPath);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetComponentType(IVssComponentEx2* This,VSS_COMPONENT_TYPE *pct) {
+ return This->lpVtbl->GetComponentType(This,pct);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetComponentName(IVssComponentEx2* This,BSTR *pbstrName) {
+ return This->lpVtbl->GetComponentName(This,pbstrName);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetBackupSucceeded(IVssComponentEx2* This,boolean *pbSucceeded) {
+ return This->lpVtbl->GetBackupSucceeded(This,pbSucceeded);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetAlternateLocationMappingCount(IVssComponentEx2* This,UINT *pcMappings) {
+ return This->lpVtbl->GetAlternateLocationMappingCount(This,pcMappings);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetAlternateLocationMapping(IVssComponentEx2* This,UINT iMapping,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetAlternateLocationMapping(This,iMapping,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetBackupMetadata(IVssComponentEx2* This,LPCWSTR wszData) {
+ return This->lpVtbl->SetBackupMetadata(This,wszData);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetBackupMetadata(IVssComponentEx2* This,BSTR *pbstrData) {
+ return This->lpVtbl->GetBackupMetadata(This,pbstrData);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_AddPartialFile(IVssComponentEx2* This,LPCWSTR wszPath,LPCWSTR wszFilename,LPCWSTR wszRanges,LPCWSTR wszMetadata) {
+ return This->lpVtbl->AddPartialFile(This,wszPath,wszFilename,wszRanges,wszMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPartialFileCount(IVssComponentEx2* This,UINT *pcPartialFiles) {
+ return This->lpVtbl->GetPartialFileCount(This,pcPartialFiles);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPartialFile(IVssComponentEx2* This,UINT iPartialFile,BSTR *pbstrPath,BSTR *pbstrFilename,BSTR *pbstrRange,BSTR *pbstrMetadata) {
+ return This->lpVtbl->GetPartialFile(This,iPartialFile,pbstrPath,pbstrFilename,pbstrRange,pbstrMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_IsSelectedForRestore(IVssComponentEx2* This,boolean *pbSelectedForRestore) {
+ return This->lpVtbl->IsSelectedForRestore(This,pbSelectedForRestore);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetAdditionalRestores(IVssComponentEx2* This,boolean *pbAdditionalRestores) {
+ return This->lpVtbl->GetAdditionalRestores(This,pbAdditionalRestores);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetNewTargetCount(IVssComponentEx2* This,UINT *pcNewTarget) {
+ return This->lpVtbl->GetNewTargetCount(This,pcNewTarget);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetNewTarget(IVssComponentEx2* This,UINT iNewTarget,IVssWMFiledesc **ppFiledesc) {
+ return This->lpVtbl->GetNewTarget(This,iNewTarget,ppFiledesc);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_AddDirectedTarget(IVssComponentEx2* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilename,LPCWSTR wszSourceRangeList,LPCWSTR wszDestinationPath,LPCWSTR wszDestinationFilename,LPCWSTR wszDestinationRangeList) {
+ return This->lpVtbl->AddDirectedTarget(This,wszSourcePath,wszSourceFilename,wszSourceRangeList,wszDestinationPath,wszDestinationFilename,wszDestinationRangeList);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetDirectedTargetCount(IVssComponentEx2* This,UINT *pcDirectedTarget) {
+ return This->lpVtbl->GetDirectedTargetCount(This,pcDirectedTarget);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetDirectedTarget(IVssComponentEx2* This,UINT iDirectedTarget,BSTR *pbstrSourcePath,BSTR *pbstrSourceFileName,BSTR *pbstrSourceRangeList,BSTR *pbstrDestinationPath,BSTR *pbstrDestinationFilename,BSTR *pbstrDestinationRangeList) {
+ return This->lpVtbl->GetDirectedTarget(This,iDirectedTarget,pbstrSourcePath,pbstrSourceFileName,pbstrSourceRangeList,pbstrDestinationPath,pbstrDestinationFilename,pbstrDestinationRangeList);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetRestoreMetadata(IVssComponentEx2* This,LPCWSTR wszRestoreMetadata) {
+ return This->lpVtbl->SetRestoreMetadata(This,wszRestoreMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRestoreMetadata(IVssComponentEx2* This,BSTR *pbstrRestoreMetadata) {
+ return This->lpVtbl->GetRestoreMetadata(This,pbstrRestoreMetadata);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetRestoreTarget(IVssComponentEx2* This,VSS_RESTORE_TARGET target) {
+ return This->lpVtbl->SetRestoreTarget(This,target);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRestoreTarget(IVssComponentEx2* This,VSS_RESTORE_TARGET *pTarget) {
+ return This->lpVtbl->GetRestoreTarget(This,pTarget);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetPreRestoreFailureMsg(IVssComponentEx2* This,LPCWSTR wszPreRestoreFailureMsg) {
+ return This->lpVtbl->SetPreRestoreFailureMsg(This,wszPreRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPreRestoreFailureMsg(IVssComponentEx2* This,BSTR *pbstrPreRestoreFailureMsg) {
+ return This->lpVtbl->GetPreRestoreFailureMsg(This,pbstrPreRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetPostRestoreFailureMsg(IVssComponentEx2* This,LPCWSTR wszPostRestoreFailureMsg) {
+ return This->lpVtbl->SetPostRestoreFailureMsg(This,wszPostRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPostRestoreFailureMsg(IVssComponentEx2* This,BSTR *pbstrPostRestoreFailureMsg) {
+ return This->lpVtbl->GetPostRestoreFailureMsg(This,pbstrPostRestoreFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetBackupStamp(IVssComponentEx2* This,LPCWSTR wszBackupStamp) {
+ return This->lpVtbl->SetBackupStamp(This,wszBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetBackupStamp(IVssComponentEx2* This,BSTR *pbstrBackupStamp) {
+ return This->lpVtbl->GetBackupStamp(This,pbstrBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPreviousBackupStamp(IVssComponentEx2* This,BSTR *pbstrBackupStamp) {
+ return This->lpVtbl->GetPreviousBackupStamp(This,pbstrBackupStamp);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetBackupOptions(IVssComponentEx2* This,BSTR *pbstrBackupOptions) {
+ return This->lpVtbl->GetBackupOptions(This,pbstrBackupOptions);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRestoreOptions(IVssComponentEx2* This,BSTR *pbstrRestoreOptions) {
+ return This->lpVtbl->GetRestoreOptions(This,pbstrRestoreOptions);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRestoreSubcomponentCount(IVssComponentEx2* This,UINT *pcRestoreSubcomponent) {
+ return This->lpVtbl->GetRestoreSubcomponentCount(This,pcRestoreSubcomponent);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRestoreSubcomponent(IVssComponentEx2* This,UINT iComponent,BSTR *pbstrLogicalPath,BSTR *pbstrComponentName,boolean *pbRepair) {
+ return This->lpVtbl->GetRestoreSubcomponent(This,iComponent,pbstrLogicalPath,pbstrComponentName,pbRepair);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetFileRestoreStatus(IVssComponentEx2* This,VSS_FILE_RESTORE_STATUS *pStatus) {
+ return This->lpVtbl->GetFileRestoreStatus(This,pStatus);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_AddDifferencedFilesByLastModifyTime(IVssComponentEx2* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,FILETIME ftLastModifyTime) {
+ return This->lpVtbl->AddDifferencedFilesByLastModifyTime(This,wszPath,wszFilespec,bRecursive,ftLastModifyTime);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_AddDifferencedFilesByLastModifyLSN(IVssComponentEx2* This,LPCWSTR wszPath,LPCWSTR wszFilespec,WINBOOL bRecursive,BSTR bstrLsnString) {
+ return This->lpVtbl->AddDifferencedFilesByLastModifyLSN(This,wszPath,wszFilespec,bRecursive,bstrLsnString);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetDifferencedFilesCount(IVssComponentEx2* This,UINT *pcDifferencedFiles) {
+ return This->lpVtbl->GetDifferencedFilesCount(This,pcDifferencedFiles);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetDifferencedFile(IVssComponentEx2* This,UINT iDifferencedFile,BSTR *pbstrPath,BSTR *pbstrFilespec,WINBOOL *pbRecursive,BSTR *pbstrLsnString,FILETIME *pftLastModifyTime) {
+ return This->lpVtbl->GetDifferencedFile(This,iDifferencedFile,pbstrPath,pbstrFilespec,pbRecursive,pbstrLsnString,pftLastModifyTime);
+}
+/*** IVssComponentEx methods ***/
+static FORCEINLINE HRESULT IVssComponentEx2_SetPrepareForBackupFailureMsg(IVssComponentEx2* This,LPCWSTR wszFailureMsg) {
+ return This->lpVtbl->SetPrepareForBackupFailureMsg(This,wszFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_SetPostSnapshotFailureMsg(IVssComponentEx2* This,LPCWSTR wszFailureMsg) {
+ return This->lpVtbl->SetPostSnapshotFailureMsg(This,wszFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPrepareForBackupFailureMsg(IVssComponentEx2* This,BSTR *pbstrFailureMsg) {
+ return This->lpVtbl->GetPrepareForBackupFailureMsg(This,pbstrFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetPostSnapshotFailureMsg(IVssComponentEx2* This,BSTR *pbstrFailureMsg) {
+ return This->lpVtbl->GetPostSnapshotFailureMsg(This,pbstrFailureMsg);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetAuthoritativeRestore(IVssComponentEx2* This,boolean *pbAuth) {
+ return This->lpVtbl->GetAuthoritativeRestore(This,pbAuth);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRollForward(IVssComponentEx2* This,VSS_ROLLFORWARD_TYPE *pRollType,BSTR *pbstrPoint) {
+ return This->lpVtbl->GetRollForward(This,pRollType,pbstrPoint);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetRestoreName(IVssComponentEx2* This,BSTR *pbstrName) {
+ return This->lpVtbl->GetRestoreName(This,pbstrName);
+}
+/*** IVssComponentEx2 methods ***/
+static FORCEINLINE HRESULT IVssComponentEx2_SetFailure(IVssComponentEx2* This,HRESULT hr,HRESULT hrApplication,LPCWSTR wszApplicationMessage,DWORD dwReserved) {
+ return This->lpVtbl->SetFailure(This,hr,hrApplication,wszApplicationMessage,dwReserved);
+}
+static FORCEINLINE HRESULT IVssComponentEx2_GetFailure(IVssComponentEx2* This,HRESULT *phr,HRESULT *phrApplication,BSTR *pbstrApplicationMessage,DWORD *pdwReserved) {
+ return This->lpVtbl->GetFailure(This,phr,phrApplication,pbstrApplicationMessage,pdwReserved);
+}
+#endif
+#endif
+#endif
+
+
+#endif /* __IVssComponentEx2_INTERFACE_DEFINED__ */
+
+#ifndef __IXMLDOMDocument_FWD_DEFINED__
+#define __IXMLDOMDocument_FWD_DEFINED__
+typedef interface IXMLDOMDocument IXMLDOMDocument;
#ifdef __cplusplus
-/* Is a C++ interface instead of a COM */
-#undef INTERFACE
-#define INTERFACE IVssWMDependency
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
-#endif
-DECLARE_INTERFACE_(IVssWMDependency,IUnknown)
+interface IXMLDOMDocument;
+#endif /* __cplusplus */
+#endif
+
+/*****************************************************************************
+ * IVssCreateWriterMetadata interface
+ */
+#ifndef __IVssCreateWriterMetadata_INTERFACE_DEFINED__
+#define __IVssCreateWriterMetadata_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssCreateWriterMetadata, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssCreateWriterMetadata
{
+
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ virtual HRESULT STDMETHODCALLTYPE AddIncludeFiles(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddExcludeFiles(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddComponent(
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszCaption,
+ const BYTE *pbIcon,
+ UINT cbIcon,
+ boolean bRestoreMetadata,
+ boolean bNotifyOnBackupComplete,
+ boolean bSelectable,
+ boolean bSelectableForRestore = 0,
+ DWORD dwComponentFlags = 0) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddDatabaseFiles(
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszDatabaseName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddDatabaseLogFiles(
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszDatabaseName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddFilesToFileGroup(
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszGroupName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation,
+ DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreMethod(
+ VSS_RESTOREMETHOD_ENUM method,
+ LPCWSTR wszService,
+ LPCWSTR wszUserProcedure,
+ VSS_WRITERRESTORE_ENUM writerRestore,
+ boolean bRebootRequired) = 0;
- /* IVssWMDependency methods */
- STDMETHOD_(HRESULT,GetWriterId)(THIS_ VSS_ID *pWriterId) PURE;
- STDMETHOD_(HRESULT,GetLogicalPath)(THIS_ BSTR *pbstrLogicalPath) PURE;
- STDMETHOD_(HRESULT,GetComponentName)(THIS_ BSTR *pbstrComponentName) PURE;
+ virtual HRESULT STDMETHODCALLTYPE AddAlternateLocationMapping(
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddComponentDependency(
+ LPCWSTR wszForLogicalPath,
+ LPCWSTR wszForComponentName,
+ VSS_ID onWriterId,
+ LPCWSTR wszOnLogicalPath,
+ LPCWSTR wszOnComponentName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupSchema(
+ DWORD dwSchemaMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDocument(
+ IXMLDOMDocument **pDoc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
+ BSTR *pbstrXML) = 0;
END_INTERFACE
+
};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssCreateWriterMetadata, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
+#endif
+#else
+typedef struct IVssCreateWriterMetadataVtbl {
+ BEGIN_INTERFACE
+
+ /*** IVssCreateWriterMetadata methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddIncludeFiles)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation);
+
+ HRESULT (STDMETHODCALLTYPE *AddExcludeFiles)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssCreateWriterMetadata *This,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszCaption,
+ const BYTE *pbIcon,
+ UINT cbIcon,
+ boolean bRestoreMetadata,
+ boolean bNotifyOnBackupComplete,
+ boolean bSelectable,
+ boolean bSelectableForRestore,
+ DWORD dwComponentFlags);
+
+ HRESULT (STDMETHODCALLTYPE *AddDatabaseFiles)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszDatabaseName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *AddDatabaseLogFiles)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszDatabaseName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *AddFilesToFileGroup)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszGroupName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreMethod)(
+ IVssCreateWriterMetadata *This,
+ VSS_RESTOREMETHOD_ENUM method,
+ LPCWSTR wszService,
+ LPCWSTR wszUserProcedure,
+ VSS_WRITERRESTORE_ENUM writerRestore,
+ boolean bRebootRequired);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternateLocationMapping)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponentDependency)(
+ IVssCreateWriterMetadata *This,
+ LPCWSTR wszForLogicalPath,
+ LPCWSTR wszForComponentName,
+ VSS_ID onWriterId,
+ LPCWSTR wszOnLogicalPath,
+ LPCWSTR wszOnComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSchema)(
+ IVssCreateWriterMetadata *This,
+ DWORD dwSchemaMask);
+
+ HRESULT (STDMETHODCALLTYPE *GetDocument)(
+ IVssCreateWriterMetadata *This,
+ IXMLDOMDocument **pDoc);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssCreateWriterMetadata *This,
+ BSTR *pbstrXML);
+
+ END_INTERFACE
+} IVssCreateWriterMetadataVtbl;
+
+interface IVssCreateWriterMetadata {
+ CONST_VTBL IVssCreateWriterMetadataVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IVssCreateWriterMetadata methods ***/
+#define IVssCreateWriterMetadata_AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation) (This)->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation)
+#define IVssCreateWriterMetadata_AddExcludeFiles(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive)
+#define IVssCreateWriterMetadata_AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
+#define IVssCreateWriterMetadata_AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
+#define IVssCreateWriterMetadata_AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
+#define IVssCreateWriterMetadata_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
+#define IVssCreateWriterMetadata_SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired)
+#define IVssCreateWriterMetadata_AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination)
+#define IVssCreateWriterMetadata_AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName) (This)->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName)
+#define IVssCreateWriterMetadata_SetBackupSchema(This,dwSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dwSchemaMask)
+#define IVssCreateWriterMetadata_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
+#define IVssCreateWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#else
+/*** IVssCreateWriterMetadata methods ***/
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddIncludeFiles(IVssCreateWriterMetadata* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation) {
+ return This->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddExcludeFiles(IVssCreateWriterMetadata* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
+ return This->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddComponent(IVssCreateWriterMetadata* This,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,boolean bRestoreMetadata,boolean bNotifyOnBackupComplete,boolean bSelectable,boolean bSelectableForRestore,DWORD dwComponentFlags) {
+ return This->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddDatabaseFiles(IVssCreateWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddDatabaseLogFiles(IVssCreateWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddFilesToFileGroup(IVssCreateWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_SetRestoreMethod(IVssCreateWriterMetadata* This,VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM writerRestore,boolean bRebootRequired) {
+ return This->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddAlternateLocationMapping(IVssCreateWriterMetadata* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_AddComponentDependency(IVssCreateWriterMetadata* This,LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) {
+ return This->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_SetBackupSchema(IVssCreateWriterMetadata* This,DWORD dwSchemaMask) {
+ return This->lpVtbl->SetBackupSchema(This,dwSchemaMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_GetDocument(IVssCreateWriterMetadata* This,IXMLDOMDocument **pDoc) {
+ return This->lpVtbl->GetDocument(This,pDoc);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadata_SaveAsXML(IVssCreateWriterMetadata* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+#endif
+#endif
-#undef INTERFACE
-#define INTERFACE IVssWMFiledesc
-#ifdef __GNUC__
-#warning COM interfaces layout in this header has not been verified.
-#warning COM interfaces with incorrect layout may not work at all.
-__MINGW_BROKEN_INTERFACE(INTERFACE)
#endif
-DECLARE_INTERFACE_(IVssWMFiledesc,IUnknown)
+
+
+#endif /* __IVssCreateWriterMetadata_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssCreateWriterMetadataEx interface
+ */
+#ifndef __IVssCreateWriterMetadataEx_INTERFACE_DEFINED__
+#define __IVssCreateWriterMetadataEx_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssCreateWriterMetadataEx, 0x9f21981d, 0xd469, 0x4349, 0xb8,0x07, 0x39,0xe6,0x4e,0x46,0x74,0xe1);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9f21981d-d469-4349-b807-39e64e4674e1")
+IVssCreateWriterMetadataEx : public IVssCreateWriterMetadata
{
+ virtual HRESULT STDMETHODCALLTYPE AddExcludeFilesFromSnapshot(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssCreateWriterMetadataEx, 0x9f21981d, 0xd469, 0x4349, 0xb8,0x07, 0x39,0xe6,0x4e,0x46,0x74,0xe1)
+#endif
+#else
+typedef struct IVssCreateWriterMetadataExVtbl {
BEGIN_INTERFACE
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
+ /*** IVssCreateWriterMetadata methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddIncludeFiles)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation);
+
+ HRESULT (STDMETHODCALLTYPE *AddExcludeFiles)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssCreateWriterMetadataEx *This,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszCaption,
+ const BYTE *pbIcon,
+ UINT cbIcon,
+ boolean bRestoreMetadata,
+ boolean bNotifyOnBackupComplete,
+ boolean bSelectable,
+ boolean bSelectableForRestore,
+ DWORD dwComponentFlags);
+
+ HRESULT (STDMETHODCALLTYPE *AddDatabaseFiles)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszDatabaseName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *AddDatabaseLogFiles)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszDatabaseName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *AddFilesToFileGroup)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszGroupName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreMethod)(
+ IVssCreateWriterMetadataEx *This,
+ VSS_RESTOREMETHOD_ENUM method,
+ LPCWSTR wszService,
+ LPCWSTR wszUserProcedure,
+ VSS_WRITERRESTORE_ENUM writerRestore,
+ boolean bRebootRequired);
+
+ HRESULT (STDMETHODCALLTYPE *AddAlternateLocationMapping)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszSourcePath,
+ LPCWSTR wszSourceFilespec,
+ boolean bRecursive,
+ LPCWSTR wszDestination);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponentDependency)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszForLogicalPath,
+ LPCWSTR wszForComponentName,
+ VSS_ID onWriterId,
+ LPCWSTR wszOnLogicalPath,
+ LPCWSTR wszOnComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSchema)(
+ IVssCreateWriterMetadataEx *This,
+ DWORD dwSchemaMask);
+
+ HRESULT (STDMETHODCALLTYPE *GetDocument)(
+ IVssCreateWriterMetadataEx *This,
+ IXMLDOMDocument **pDoc);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssCreateWriterMetadataEx *This,
+ BSTR *pbstrXML);
- /* IVssWMFiledesc methods */
- STDMETHOD_(HRESULT,GetPath)(THIS_ BSTR *pbstrPath) PURE;
- STDMETHOD_(HRESULT,GetFilespec)(THIS_ BSTR *pbstrFilespec) PURE;
- STDMETHOD_(HRESULT,GetRecursive)(THIS_ BOOLEAN *pbRecursive) PURE;
- STDMETHOD_(HRESULT,GetAlternateLocation)(THIS_ BSTR *pbstrAlternateLocation) PURE;
- STDMETHOD_(HRESULT,GetBackupTypeMask)(THIS_ DWORD *pdwTypeMask) PURE;
+ /*** IVssCreateWriterMetadataEx methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddExcludeFilesFromSnapshot)(
+ IVssCreateWriterMetadataEx *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive);
END_INTERFACE
+} IVssCreateWriterMetadataExVtbl;
+
+interface IVssCreateWriterMetadataEx {
+ CONST_VTBL IVssCreateWriterMetadataExVtbl* lpVtbl;
};
-#endif /*__cplusplus*/
-#ifdef __cplusplus
-#if __MINGW_GNUC_PREREQ(4,6)
-/* We need __thiscall support */
-class CVssWriter {
-protected:
- bool WINAPI AreComponentsSelected() const;
- VSS_BACKUP_TYPE WINAPI GetBackupType() const;
- LONG WINAPI GetContext() const;
- VSS_APPLICATION_LEVEL WINAPI GetCurrentLevel() const;
- VSS_ID WINAPI GetCurrentSnapshotSetId() const;
- LPCWSTR* WINAPI GetCurrentVolumeArray() const;
- UINT WINAPI GetCurrentVolumeCount() const;
- VSS_RESTORE_TYPE WINAPI GetRestoreType() const;
- HRESULT WINAPI GetSnapshotDeviceName(
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IVssCreateWriterMetadata methods ***/
+#define IVssCreateWriterMetadataEx_AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation) (This)->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation)
+#define IVssCreateWriterMetadataEx_AddExcludeFiles(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive)
+#define IVssCreateWriterMetadataEx_AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
+#define IVssCreateWriterMetadataEx_AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
+#define IVssCreateWriterMetadataEx_AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask) (This)->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask)
+#define IVssCreateWriterMetadataEx_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
+#define IVssCreateWriterMetadataEx_SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired)
+#define IVssCreateWriterMetadataEx_AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination) (This)->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination)
+#define IVssCreateWriterMetadataEx_AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName) (This)->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName)
+#define IVssCreateWriterMetadataEx_SetBackupSchema(This,dwSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dwSchemaMask)
+#define IVssCreateWriterMetadataEx_GetDocument(This,pDoc) (This)->lpVtbl->GetDocument(This,pDoc)
+#define IVssCreateWriterMetadataEx_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+/*** IVssCreateWriterMetadataEx methods ***/
+#define IVssCreateWriterMetadataEx_AddExcludeFilesFromSnapshot(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFilesFromSnapshot(This,wszPath,wszFilespec,bRecursive)
+#else
+/*** IVssCreateWriterMetadata methods ***/
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddIncludeFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation) {
+ return This->lpVtbl->AddIncludeFiles(This,wszPath,wszFilespec,bRecursive,wszAlternateLocation);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddExcludeFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
+ return This->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddComponent(IVssCreateWriterMetadataEx* This,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,boolean bRestoreMetadata,boolean bNotifyOnBackupComplete,boolean bSelectable,boolean bSelectableForRestore,DWORD dwComponentFlags) {
+ return This->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddDatabaseFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddDatabaseFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddDatabaseLogFiles(IVssCreateWriterMetadataEx* This,LPCWSTR wszLogicalPath,LPCWSTR wszDatabaseName,LPCWSTR wszPath,LPCWSTR wszFilespec,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddDatabaseLogFiles(This,wszLogicalPath,wszDatabaseName,wszPath,wszFilespec,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddFilesToFileGroup(IVssCreateWriterMetadataEx* This,LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_SetRestoreMethod(IVssCreateWriterMetadataEx* This,VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM writerRestore,boolean bRebootRequired) {
+ return This->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddAlternateLocationMapping(IVssCreateWriterMetadataEx* This,LPCWSTR wszSourcePath,LPCWSTR wszSourceFilespec,boolean bRecursive,LPCWSTR wszDestination) {
+ return This->lpVtbl->AddAlternateLocationMapping(This,wszSourcePath,wszSourceFilespec,bRecursive,wszDestination);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddComponentDependency(IVssCreateWriterMetadataEx* This,LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) {
+ return This->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_SetBackupSchema(IVssCreateWriterMetadataEx* This,DWORD dwSchemaMask) {
+ return This->lpVtbl->SetBackupSchema(This,dwSchemaMask);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_GetDocument(IVssCreateWriterMetadataEx* This,IXMLDOMDocument **pDoc) {
+ return This->lpVtbl->GetDocument(This,pDoc);
+}
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_SaveAsXML(IVssCreateWriterMetadataEx* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+/*** IVssCreateWriterMetadataEx methods ***/
+static FORCEINLINE HRESULT IVssCreateWriterMetadataEx_AddExcludeFilesFromSnapshot(IVssCreateWriterMetadataEx* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
+ return This->lpVtbl->AddExcludeFilesFromSnapshot(This,wszPath,wszFilespec,bRecursive);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssCreateWriterMetadataEx_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssWriterImpl interface
+ */
+#ifndef __IVssWriterImpl_INTERFACE_DEFINED__
+#define __IVssWriterImpl_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssWriterImpl, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("00000000-0000-0000-0000-000000000000")
+IVssWriterImpl : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE Initialize(
+ VSS_ID writerId,
+ LPCWSTR wszWriterName,
+ LPCWSTR wszWriterInstanceName,
+ DWORD dwMajorVersion,
+ DWORD dwMinorVersion,
+ VSS_USAGE_TYPE ut,
+ VSS_SOURCE_TYPE st,
+ VSS_APPLICATION_LEVEL nLevel,
+ DWORD dwTimeout,
+ VSS_ALTERNATE_WRITER_STATE aws,
+ boolean bIOThrottlingOnly) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Subscribe(
+ DWORD dwSubscribeTimeout,
+ DWORD dwEventFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unsubscribe(
+ ) = 0;
+
+ virtual void STDMETHODCALLTYPE Uninitialize(
+ ) = 0;
+
+ virtual LPCWSTR * STDMETHODCALLTYPE GetCurrentVolumeArray(
+ ) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetCurrentVolumeCount(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSnapshotDeviceName(
LPCWSTR wszOriginalVolume,
- LPCWSTR *ppwszSnapshotDevice) const;
- bool WINAPI IsBootableSystemStateBackedUp() const;
- bool WINAPI IsPartialFileSupportEnabled() const;
- bool WINAPI IsPathAffected(
- LPCWSTR wszPath) const;
- HRESULT WINAPI SetWriterFailure(
- HRESULT hr);
-public:
- //Pure virtuals
- virtual bool WINAPI OnAbort() = 0;
- virtual bool WINAPI OnFreeze() = 0;
- virtual bool WINAPI OnPrepareSnapshot() = 0;
- virtual bool WINAPI OnThaw() = 0;
- //Virtuals
- virtual __thiscall ~CVssWriter();
- virtual bool WINAPI OnBackupComplete(
- IVssWriterComponents *pComponent);
- virtual bool WINAPI OnBackupShutdown(
- VSS_ID SnapshotSetId);
- virtual bool WINAPI OnIdentify(
- IVssCreateWriterMetadata *pMetadata);
- virtual bool WINAPI OnPostRestore(
- IVssWriterComponents *pComponent);
- virtual bool WINAPI OnPostSnapshot(
- IVssWriterComponents *pComponent);
- virtual bool WINAPI OnPrepareBackup(
- IVssWriterComponents *pComponent);
- virtual bool WINAPI OnPreRestore(
- IVssWriterComponents *pComponent);
- //gendef says public: virtual bool __stdcall CVssWriter::OnBackOffIOOnVolume(unsigned short *,struct _GUID,struct _GUID)
- //Method unsupported
- virtual bool WINAPI OnBackOffIOOnVolume(
- VSS_PWSZ _vss_pwsz,
- VSS_ID _id1,
- VSS_ID _id2);
- //gendef says public: virtual bool __stdcall CVssWriter::OnContinueIOOnVolume(unsigned short *,struct _GUID,struct _GUID)
- //Method unsupported
- virtual bool WINAPI OnContinueIOOnVolume(
- VSS_PWSZ _vss_pwsz,
- VSS_ID _id1,
- VSS_ID _id2);
- //gendef says public: virtual bool __stdcall CVssWriter::OnVSSShutdown(void)
- //Method unsupported
- virtual bool WINAPI OnVssShutdown();
- //Non-virtuals
- __thiscall CVssWriter();
- HRESULT WINAPI Initialize(
- VSS_ID WriterId,
- LPCWSTR WriterName,
- VSS_USAGE_TYPE UsageType,
- VSS_SOURCE_TYPE SourceType,
- VSS_APPLICATION_LEVEL AppLevel,
- DWORD dwTimeoutFreeze = 60000,
- VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER,
- bool bIOThrottlingOnly = false,
- LPCWSTR wszWriterInstanceName = NULL);
- HRESULT WINAPI Subscribe(
- DWORD dwEventFlags);
- HRESULT WINAPI Unsubscribe();
- //gendef says public: long __stdcall CVssWriter::InstallAlternateWriter(struct _GUID,struct _GUID)
- //Method unsupported
- HRESULT WINAPI InstallAlternateWriter(
- VSS_ID _id1,
- VSS_ID _id2);
+ LPCWSTR *ppwszSnapshotDevice) = 0;
+
+#ifdef WIDL_EXPLICIT_AGGREGATE_RETURNS
+ virtual VSS_ID* STDMETHODCALLTYPE GetCurrentSnapshotSetId(
+ VSS_ID *__ret) = 0;
+ VSS_ID STDMETHODCALLTYPE GetCurrentSnapshotSetId(
+ )
+ {
+ VSS_ID __ret;
+ return *GetCurrentSnapshotSetId(&__ret);
+ }
+#else
+ virtual VSS_ID STDMETHODCALLTYPE GetCurrentSnapshotSetId(
+ ) = 0;
+#endif
+
+ virtual LONG STDMETHODCALLTYPE GetContext(
+ ) = 0;
+
+ virtual VSS_APPLICATION_LEVEL STDMETHODCALLTYPE GetCurrentLevel(
+ ) = 0;
+
+ virtual boolean STDMETHODCALLTYPE IsPathAffected(
+ LPCWSTR wszPath) = 0;
+
+ virtual boolean STDMETHODCALLTYPE IsBootableSystemStateBackedUp(
+ ) = 0;
+
+ virtual boolean STDMETHODCALLTYPE AreComponentsSelected(
+ ) = 0;
+
+ virtual VSS_BACKUP_TYPE STDMETHODCALLTYPE GetBackupType(
+ ) = 0;
+
+ virtual VSS_RESTORE_TYPE STDMETHODCALLTYPE GetRestoreType(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetWriterFailure(
+ HRESULT hr) = 0;
+
+ virtual boolean STDMETHODCALLTYPE IsPartialFileSupportEnabled(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InstallAlternateWriter(
+ VSS_ID idWriter,
+ CLSID clsid) = 0;
+
+ virtual IVssExamineWriterMetadata * STDMETHODCALLTYPE GetIdentityInformation(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetWriterFailureEx(
+ HRESULT hr,
+ HRESULT hrApplication,
+ LPCWSTR wszApplicationMessage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSessionId(
+ VSS_ID *idSession) = 0;
+
+ virtual boolean STDMETHODCALLTYPE IsWriterShuttingDown(
+ ) = 0;
+
};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssWriterImpl, 0x00000000, 0x0000, 0x0000, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00)
+#endif
+#else
+typedef struct IVssWriterImplVtbl {
+ BEGIN_INTERFACE
-class CVssWriterEx : public CVssWriter {
- protected:
- HRESULT WINAPI GetIdentifyInformation(
- IVssExamineWriterMetadata **ppMetadata) const;
- HRESULT WINAPI SubscribeEx(
- DWORD dwUnsubscribeTimeout,
- DWORD dwEventFlags);
- public:
- virtual bool WINAPI OnIdentifyEx(
- IVssCreateWriterMetadataEx *pMetadata) const;
- HRESULT WINAPI InitializeEx(
- VSS_ID WriterId,
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssWriterImpl *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssWriterImpl *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssWriterImpl *This);
+
+ /*** IVssWriterImpl methods ***/
+ HRESULT (STDMETHODCALLTYPE *Initialize)(
+ IVssWriterImpl *This,
+ VSS_ID writerId,
LPCWSTR wszWriterName,
+ LPCWSTR wszWriterInstanceName,
DWORD dwMajorVersion,
DWORD dwMinorVersion,
VSS_USAGE_TYPE ut,
VSS_SOURCE_TYPE st,
VSS_APPLICATION_LEVEL nLevel,
- DWORD dwTimeoutFreeze = 60000,
- VSS_ALTERNATE_WRITER_STATE aws = VSS_AWS_NO_ALTERNATE_WRITER,
- bool bIOThrottlingOnly = false,
- LPCWSTR wszWriterInstanceName = NULL);
-};
+ DWORD dwTimeout,
+ VSS_ALTERNATE_WRITER_STATE aws,
+ boolean bIOThrottlingOnly);
+
+ HRESULT (STDMETHODCALLTYPE *Subscribe)(
+ IVssWriterImpl *This,
+ DWORD dwSubscribeTimeout,
+ DWORD dwEventFlags);
+
+ HRESULT (STDMETHODCALLTYPE *Unsubscribe)(
+ IVssWriterImpl *This);
+
+ void (STDMETHODCALLTYPE *Uninitialize)(
+ IVssWriterImpl *This);
-class CVssWriterEx2: public CVssWriterEx {
- public:
- HRESULT WINAPI GetSessionId(
- VSS_ID *idSession) const;
- bool WINAPI IsWriterShuttingDown() const;
- HRESULT WINAPI SetWriterFailureEx(
- HRESULT hrWriter,
+ LPCWSTR * (STDMETHODCALLTYPE *GetCurrentVolumeArray)(
+ IVssWriterImpl *This);
+
+ UINT (STDMETHODCALLTYPE *GetCurrentVolumeCount)(
+ IVssWriterImpl *This);
+
+ HRESULT (STDMETHODCALLTYPE *GetSnapshotDeviceName)(
+ IVssWriterImpl *This,
+ LPCWSTR wszOriginalVolume,
+ LPCWSTR *ppwszSnapshotDevice);
+
+ VSS_ID * (STDMETHODCALLTYPE *GetCurrentSnapshotSetId)(
+ IVssWriterImpl *This,
+ VSS_ID *__ret);
+
+ LONG (STDMETHODCALLTYPE *GetContext)(
+ IVssWriterImpl *This);
+
+ VSS_APPLICATION_LEVEL (STDMETHODCALLTYPE *GetCurrentLevel)(
+ IVssWriterImpl *This);
+
+ boolean (STDMETHODCALLTYPE *IsPathAffected)(
+ IVssWriterImpl *This,
+ LPCWSTR wszPath);
+
+ boolean (STDMETHODCALLTYPE *IsBootableSystemStateBackedUp)(
+ IVssWriterImpl *This);
+
+ boolean (STDMETHODCALLTYPE *AreComponentsSelected)(
+ IVssWriterImpl *This);
+
+ VSS_BACKUP_TYPE (STDMETHODCALLTYPE *GetBackupType)(
+ IVssWriterImpl *This);
+
+ VSS_RESTORE_TYPE (STDMETHODCALLTYPE *GetRestoreType)(
+ IVssWriterImpl *This);
+
+ HRESULT (STDMETHODCALLTYPE *SetWriterFailure)(
+ IVssWriterImpl *This,
+ HRESULT hr);
+
+ boolean (STDMETHODCALLTYPE *IsPartialFileSupportEnabled)(
+ IVssWriterImpl *This);
+
+ HRESULT (STDMETHODCALLTYPE *InstallAlternateWriter)(
+ IVssWriterImpl *This,
+ VSS_ID idWriter,
+ CLSID clsid);
+
+ IVssExamineWriterMetadata * (STDMETHODCALLTYPE *GetIdentityInformation)(
+ IVssWriterImpl *This);
+
+ HRESULT (STDMETHODCALLTYPE *SetWriterFailureEx)(
+ IVssWriterImpl *This,
+ HRESULT hr,
HRESULT hrApplication,
LPCWSTR wszApplicationMessage);
+
+ HRESULT (STDMETHODCALLTYPE *GetSessionId)(
+ IVssWriterImpl *This,
+ VSS_ID *idSession);
+
+ boolean (STDMETHODCALLTYPE *IsWriterShuttingDown)(
+ IVssWriterImpl *This);
+
+ END_INTERFACE
+} IVssWriterImplVtbl;
+
+interface IVssWriterImpl {
+ CONST_VTBL IVssWriterImplVtbl* lpVtbl;
};
-#endif /*__MINGW_GNUC_PREREQ(4,6)*/
-#endif /*__cplusplus*/
-#include <vsbackup.h>
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssWriterImpl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssWriterImpl_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssWriterImpl_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssWriterImpl methods ***/
+#define IVssWriterImpl_Initialize(This,writerId,wszWriterName,wszWriterInstanceName,dwMajorVersion,dwMinorVersion,ut,st,nLevel,dwTimeout,aws,bIOThrottlingOnly) (This)->lpVtbl->Initialize(This,writerId,wszWriterName,wszWriterInstanceName,dwMajorVersion,dwMinorVersion,ut,st,nLevel,dwTimeout,aws,bIOThrottlingOnly)
+#define IVssWriterImpl_Subscribe(This,dwSubscribeTimeout,dwEventFlags) (This)->lpVtbl->Subscribe(This,dwSubscribeTimeout,dwEventFlags)
+#define IVssWriterImpl_Unsubscribe(This) (This)->lpVtbl->Unsubscribe(This)
+#define IVssWriterImpl_Uninitialize(This) (This)->lpVtbl->Uninitialize(This)
+#define IVssWriterImpl_GetCurrentVolumeArray(This) (This)->lpVtbl->GetCurrentVolumeArray(This)
+#define IVssWriterImpl_GetCurrentVolumeCount(This) (This)->lpVtbl->GetCurrentVolumeCount(This)
+#define IVssWriterImpl_GetSnapshotDeviceName(This,wszOriginalVolume,ppwszSnapshotDevice) (This)->lpVtbl->GetSnapshotDeviceName(This,wszOriginalVolume,ppwszSnapshotDevice)
+#define IVssWriterImpl_GetCurrentSnapshotSetId(This) IVssWriterImpl_GetCurrentSnapshotSetId_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
+#define IVssWriterImpl_GetContext(This) (This)->lpVtbl->GetContext(This)
+#define IVssWriterImpl_GetCurrentLevel(This) (This)->lpVtbl->GetCurrentLevel(This)
+#define IVssWriterImpl_IsPathAffected(This,wszPath) (This)->lpVtbl->IsPathAffected(This,wszPath)
+#define IVssWriterImpl_IsBootableSystemStateBackedUp(This) (This)->lpVtbl->IsBootableSystemStateBackedUp(This)
+#define IVssWriterImpl_AreComponentsSelected(This) (This)->lpVtbl->AreComponentsSelected(This)
+#define IVssWriterImpl_GetBackupType(This) (This)->lpVtbl->GetBackupType(This)
+#define IVssWriterImpl_GetRestoreType(This) (This)->lpVtbl->GetRestoreType(This)
+#define IVssWriterImpl_SetWriterFailure(This,hr) (This)->lpVtbl->SetWriterFailure(This,hr)
+#define IVssWriterImpl_IsPartialFileSupportEnabled(This) (This)->lpVtbl->IsPartialFileSupportEnabled(This)
+#define IVssWriterImpl_InstallAlternateWriter(This,idWriter,clsid) (This)->lpVtbl->InstallAlternateWriter(This,idWriter,clsid)
+#define IVssWriterImpl_GetIdentityInformation(This) (This)->lpVtbl->GetIdentityInformation(This)
+#define IVssWriterImpl_SetWriterFailureEx(This,hr,hrApplication,wszApplicationMessage) (This)->lpVtbl->SetWriterFailureEx(This,hr,hrApplication,wszApplicationMessage)
+#define IVssWriterImpl_GetSessionId(This,idSession) (This)->lpVtbl->GetSessionId(This,idSession)
+#define IVssWriterImpl_IsWriterShuttingDown(This) (This)->lpVtbl->IsWriterShuttingDown(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssWriterImpl_QueryInterface(IVssWriterImpl* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssWriterImpl_AddRef(IVssWriterImpl* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssWriterImpl_Release(IVssWriterImpl* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssWriterImpl methods ***/
+static FORCEINLINE HRESULT IVssWriterImpl_Initialize(IVssWriterImpl* This,VSS_ID writerId,LPCWSTR wszWriterName,LPCWSTR wszWriterInstanceName,DWORD dwMajorVersion,DWORD dwMinorVersion,VSS_USAGE_TYPE ut,VSS_SOURCE_TYPE st,VSS_APPLICATION_LEVEL nLevel,DWORD dwTimeout,VSS_ALTERNATE_WRITER_STATE aws,boolean bIOThrottlingOnly) {
+ return This->lpVtbl->Initialize(This,writerId,wszWriterName,wszWriterInstanceName,dwMajorVersion,dwMinorVersion,ut,st,nLevel,dwTimeout,aws,bIOThrottlingOnly);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_Subscribe(IVssWriterImpl* This,DWORD dwSubscribeTimeout,DWORD dwEventFlags) {
+ return This->lpVtbl->Subscribe(This,dwSubscribeTimeout,dwEventFlags);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_Unsubscribe(IVssWriterImpl* This) {
+ return This->lpVtbl->Unsubscribe(This);
+}
+static FORCEINLINE void IVssWriterImpl_Uninitialize(IVssWriterImpl* This) {
+ This->lpVtbl->Uninitialize(This);
+}
+static FORCEINLINE LPCWSTR * IVssWriterImpl_GetCurrentVolumeArray(IVssWriterImpl* This) {
+ return This->lpVtbl->GetCurrentVolumeArray(This);
+}
+static FORCEINLINE UINT IVssWriterImpl_GetCurrentVolumeCount(IVssWriterImpl* This) {
+ return This->lpVtbl->GetCurrentVolumeCount(This);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_GetSnapshotDeviceName(IVssWriterImpl* This,LPCWSTR wszOriginalVolume,LPCWSTR *ppwszSnapshotDevice) {
+ return This->lpVtbl->GetSnapshotDeviceName(This,wszOriginalVolume,ppwszSnapshotDevice);
+}
+static FORCEINLINE VSS_ID IVssWriterImpl_GetCurrentSnapshotSetId(IVssWriterImpl* This) {
+ VSS_ID __ret;
+ return *This->lpVtbl->GetCurrentSnapshotSetId(This,&__ret);
+}
+static FORCEINLINE LONG IVssWriterImpl_GetContext(IVssWriterImpl* This) {
+ return This->lpVtbl->GetContext(This);
+}
+static FORCEINLINE VSS_APPLICATION_LEVEL IVssWriterImpl_GetCurrentLevel(IVssWriterImpl* This) {
+ return This->lpVtbl->GetCurrentLevel(This);
+}
+static FORCEINLINE boolean IVssWriterImpl_IsPathAffected(IVssWriterImpl* This,LPCWSTR wszPath) {
+ return This->lpVtbl->IsPathAffected(This,wszPath);
+}
+static FORCEINLINE boolean IVssWriterImpl_IsBootableSystemStateBackedUp(IVssWriterImpl* This) {
+ return This->lpVtbl->IsBootableSystemStateBackedUp(This);
+}
+static FORCEINLINE boolean IVssWriterImpl_AreComponentsSelected(IVssWriterImpl* This) {
+ return This->lpVtbl->AreComponentsSelected(This);
+}
+static FORCEINLINE VSS_BACKUP_TYPE IVssWriterImpl_GetBackupType(IVssWriterImpl* This) {
+ return This->lpVtbl->GetBackupType(This);
+}
+static FORCEINLINE VSS_RESTORE_TYPE IVssWriterImpl_GetRestoreType(IVssWriterImpl* This) {
+ return This->lpVtbl->GetRestoreType(This);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_SetWriterFailure(IVssWriterImpl* This,HRESULT hr) {
+ return This->lpVtbl->SetWriterFailure(This,hr);
+}
+static FORCEINLINE boolean IVssWriterImpl_IsPartialFileSupportEnabled(IVssWriterImpl* This) {
+ return This->lpVtbl->IsPartialFileSupportEnabled(This);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_InstallAlternateWriter(IVssWriterImpl* This,VSS_ID idWriter,CLSID clsid) {
+ return This->lpVtbl->InstallAlternateWriter(This,idWriter,clsid);
+}
+static FORCEINLINE IVssExamineWriterMetadata * IVssWriterImpl_GetIdentityInformation(IVssWriterImpl* This) {
+ return This->lpVtbl->GetIdentityInformation(This);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_SetWriterFailureEx(IVssWriterImpl* This,HRESULT hr,HRESULT hrApplication,LPCWSTR wszApplicationMessage) {
+ return This->lpVtbl->SetWriterFailureEx(This,hr,hrApplication,wszApplicationMessage);
+}
+static FORCEINLINE HRESULT IVssWriterImpl_GetSessionId(IVssWriterImpl* This,VSS_ID *idSession) {
+ return This->lpVtbl->GetSessionId(This,idSession);
+}
+static FORCEINLINE boolean IVssWriterImpl_IsWriterShuttingDown(IVssWriterImpl* This) {
+ return This->lpVtbl->IsWriterShuttingDown(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssWriterImpl_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssCreateExpressWriterMetadata interface
+ */
+#ifndef __IVssCreateExpressWriterMetadata_INTERFACE_DEFINED__
+#define __IVssCreateExpressWriterMetadata_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssCreateExpressWriterMetadata, 0x9c772e77, 0xb26e, 0x427f, 0x92,0xdd, 0xc9,0x96,0xf4,0x1e,0xa5,0xe3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9c772e77-b26e-427f-92dd-c996f41ea5e3")
+IVssCreateExpressWriterMetadata : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE AddExcludeFiles(
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddComponent(
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszCaption,
+ const BYTE *pbIcon,
+ UINT cbIcon,
+ boolean bRestoreMetadata,
+ boolean bNotifyOnBackupComplete,
+ boolean bSelectable,
+ boolean bSelectableForRestore = 0,
+ DWORD dwComponentFlags = 0) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddFilesToFileGroup(
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszGroupName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation,
+ DWORD dwBackupTypeMask = VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRestoreMethod(
+ VSS_RESTOREMETHOD_ENUM method,
+ LPCWSTR wszService,
+ LPCWSTR wszUserProcedure,
+ VSS_WRITERRESTORE_ENUM writerRestore,
+ boolean bRebootRequired) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddComponentDependency(
+ LPCWSTR wszForLogicalPath,
+ LPCWSTR wszForComponentName,
+ VSS_ID onWriterId,
+ LPCWSTR wszOnLogicalPath,
+ LPCWSTR wszOnComponentName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackupSchema(
+ DWORD dwSchemaMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAsXML(
+ BSTR *pbstrXML) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssCreateExpressWriterMetadata, 0x9c772e77, 0xb26e, 0x427f, 0x92,0xdd, 0xc9,0x96,0xf4,0x1e,0xa5,0xe3)
+#endif
+#else
+typedef struct IVssCreateExpressWriterMetadataVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssCreateExpressWriterMetadata *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssCreateExpressWriterMetadata *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssCreateExpressWriterMetadata *This);
+
+ /*** IVssCreateExpressWriterMetadata methods ***/
+ HRESULT (STDMETHODCALLTYPE *AddExcludeFiles)(
+ IVssCreateExpressWriterMetadata *This,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponent)(
+ IVssCreateExpressWriterMetadata *This,
+ VSS_COMPONENT_TYPE ct,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszComponentName,
+ LPCWSTR wszCaption,
+ const BYTE *pbIcon,
+ UINT cbIcon,
+ boolean bRestoreMetadata,
+ boolean bNotifyOnBackupComplete,
+ boolean bSelectable,
+ boolean bSelectableForRestore,
+ DWORD dwComponentFlags);
+
+ HRESULT (STDMETHODCALLTYPE *AddFilesToFileGroup)(
+ IVssCreateExpressWriterMetadata *This,
+ LPCWSTR wszLogicalPath,
+ LPCWSTR wszGroupName,
+ LPCWSTR wszPath,
+ LPCWSTR wszFilespec,
+ boolean bRecursive,
+ LPCWSTR wszAlternateLocation,
+ DWORD dwBackupTypeMask);
+
+ HRESULT (STDMETHODCALLTYPE *SetRestoreMethod)(
+ IVssCreateExpressWriterMetadata *This,
+ VSS_RESTOREMETHOD_ENUM method,
+ LPCWSTR wszService,
+ LPCWSTR wszUserProcedure,
+ VSS_WRITERRESTORE_ENUM writerRestore,
+ boolean bRebootRequired);
+
+ HRESULT (STDMETHODCALLTYPE *AddComponentDependency)(
+ IVssCreateExpressWriterMetadata *This,
+ LPCWSTR wszForLogicalPath,
+ LPCWSTR wszForComponentName,
+ VSS_ID onWriterId,
+ LPCWSTR wszOnLogicalPath,
+ LPCWSTR wszOnComponentName);
+
+ HRESULT (STDMETHODCALLTYPE *SetBackupSchema)(
+ IVssCreateExpressWriterMetadata *This,
+ DWORD dwSchemaMask);
+
+ HRESULT (STDMETHODCALLTYPE *SaveAsXML)(
+ IVssCreateExpressWriterMetadata *This,
+ BSTR *pbstrXML);
+
+ END_INTERFACE
+} IVssCreateExpressWriterMetadataVtbl;
+
+interface IVssCreateExpressWriterMetadata {
+ CONST_VTBL IVssCreateExpressWriterMetadataVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssCreateExpressWriterMetadata_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssCreateExpressWriterMetadata_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssCreateExpressWriterMetadata_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssCreateExpressWriterMetadata methods ***/
+#define IVssCreateExpressWriterMetadata_AddExcludeFiles(This,wszPath,wszFilespec,bRecursive) (This)->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive)
+#define IVssCreateExpressWriterMetadata_AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags) (This)->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags)
+#define IVssCreateExpressWriterMetadata_AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask) (This)->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask)
+#define IVssCreateExpressWriterMetadata_SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired) (This)->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired)
+#define IVssCreateExpressWriterMetadata_AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName) (This)->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName)
+#define IVssCreateExpressWriterMetadata_SetBackupSchema(This,dwSchemaMask) (This)->lpVtbl->SetBackupSchema(This,dwSchemaMask)
+#define IVssCreateExpressWriterMetadata_SaveAsXML(This,pbstrXML) (This)->lpVtbl->SaveAsXML(This,pbstrXML)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_QueryInterface(IVssCreateExpressWriterMetadata* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssCreateExpressWriterMetadata_AddRef(IVssCreateExpressWriterMetadata* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssCreateExpressWriterMetadata_Release(IVssCreateExpressWriterMetadata* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssCreateExpressWriterMetadata methods ***/
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_AddExcludeFiles(IVssCreateExpressWriterMetadata* This,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive) {
+ return This->lpVtbl->AddExcludeFiles(This,wszPath,wszFilespec,bRecursive);
+}
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_AddComponent(IVssCreateExpressWriterMetadata* This,VSS_COMPONENT_TYPE ct,LPCWSTR wszLogicalPath,LPCWSTR wszComponentName,LPCWSTR wszCaption,const BYTE *pbIcon,UINT cbIcon,boolean bRestoreMetadata,boolean bNotifyOnBackupComplete,boolean bSelectable,boolean bSelectableForRestore,DWORD dwComponentFlags) {
+ return This->lpVtbl->AddComponent(This,ct,wszLogicalPath,wszComponentName,wszCaption,pbIcon,cbIcon,bRestoreMetadata,bNotifyOnBackupComplete,bSelectable,bSelectableForRestore,dwComponentFlags);
+}
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_AddFilesToFileGroup(IVssCreateExpressWriterMetadata* This,LPCWSTR wszLogicalPath,LPCWSTR wszGroupName,LPCWSTR wszPath,LPCWSTR wszFilespec,boolean bRecursive,LPCWSTR wszAlternateLocation,DWORD dwBackupTypeMask) {
+ return This->lpVtbl->AddFilesToFileGroup(This,wszLogicalPath,wszGroupName,wszPath,wszFilespec,bRecursive,wszAlternateLocation,dwBackupTypeMask);
+}
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_SetRestoreMethod(IVssCreateExpressWriterMetadata* This,VSS_RESTOREMETHOD_ENUM method,LPCWSTR wszService,LPCWSTR wszUserProcedure,VSS_WRITERRESTORE_ENUM writerRestore,boolean bRebootRequired) {
+ return This->lpVtbl->SetRestoreMethod(This,method,wszService,wszUserProcedure,writerRestore,bRebootRequired);
+}
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_AddComponentDependency(IVssCreateExpressWriterMetadata* This,LPCWSTR wszForLogicalPath,LPCWSTR wszForComponentName,VSS_ID onWriterId,LPCWSTR wszOnLogicalPath,LPCWSTR wszOnComponentName) {
+ return This->lpVtbl->AddComponentDependency(This,wszForLogicalPath,wszForComponentName,onWriterId,wszOnLogicalPath,wszOnComponentName);
+}
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_SetBackupSchema(IVssCreateExpressWriterMetadata* This,DWORD dwSchemaMask) {
+ return This->lpVtbl->SetBackupSchema(This,dwSchemaMask);
+}
+static FORCEINLINE HRESULT IVssCreateExpressWriterMetadata_SaveAsXML(IVssCreateExpressWriterMetadata* This,BSTR *pbstrXML) {
+ return This->lpVtbl->SaveAsXML(This,pbstrXML);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssCreateExpressWriterMetadata_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IVssExpressWriter interface
+ */
+#ifndef __IVssExpressWriter_INTERFACE_DEFINED__
+#define __IVssExpressWriter_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVssExpressWriter, 0xe33affdc, 0x59c7, 0x47b1, 0x97,0xd5, 0x42,0x66,0x59,0x8f,0x62,0x35);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e33affdc-59c7-47b1-97d5-4266598f6235")
+IVssExpressWriter : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE CreateMetadata(
+ VSS_ID writerId,
+ LPCWSTR writerName,
+ VSS_USAGE_TYPE usageType,
+ DWORD versionMajor,
+ DWORD versionMinor,
+ DWORD reserved,
+ IVssCreateExpressWriterMetadata **ppMetadata) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LoadMetadata(
+ LPCWSTR metadata,
+ DWORD reserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Register(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unregister(
+ VSS_ID writerId) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVssExpressWriter, 0xe33affdc, 0x59c7, 0x47b1, 0x97,0xd5, 0x42,0x66,0x59,0x8f,0x62,0x35)
+#endif
+#else
+typedef struct IVssExpressWriterVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVssExpressWriter *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVssExpressWriter *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVssExpressWriter *This);
+
+ /*** IVssExpressWriter methods ***/
+ HRESULT (STDMETHODCALLTYPE *CreateMetadata)(
+ IVssExpressWriter *This,
+ VSS_ID writerId,
+ LPCWSTR writerName,
+ VSS_USAGE_TYPE usageType,
+ DWORD versionMajor,
+ DWORD versionMinor,
+ DWORD reserved,
+ IVssCreateExpressWriterMetadata **ppMetadata);
+
+ HRESULT (STDMETHODCALLTYPE *LoadMetadata)(
+ IVssExpressWriter *This,
+ LPCWSTR metadata,
+ DWORD reserved);
+
+ HRESULT (STDMETHODCALLTYPE *Register)(
+ IVssExpressWriter *This);
+
+ HRESULT (STDMETHODCALLTYPE *Unregister)(
+ IVssExpressWriter *This,
+ VSS_ID writerId);
+
+ END_INTERFACE
+} IVssExpressWriterVtbl;
+
+interface IVssExpressWriter {
+ CONST_VTBL IVssExpressWriterVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVssExpressWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVssExpressWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVssExpressWriter_Release(This) (This)->lpVtbl->Release(This)
+/*** IVssExpressWriter methods ***/
+#define IVssExpressWriter_CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata) (This)->lpVtbl->CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata)
+#define IVssExpressWriter_LoadMetadata(This,metadata,reserved) (This)->lpVtbl->LoadMetadata(This,metadata,reserved)
+#define IVssExpressWriter_Register(This) (This)->lpVtbl->Register(This)
+#define IVssExpressWriter_Unregister(This,writerId) (This)->lpVtbl->Unregister(This,writerId)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVssExpressWriter_QueryInterface(IVssExpressWriter* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVssExpressWriter_AddRef(IVssExpressWriter* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVssExpressWriter_Release(IVssExpressWriter* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IVssExpressWriter methods ***/
+static FORCEINLINE HRESULT IVssExpressWriter_CreateMetadata(IVssExpressWriter* This,VSS_ID writerId,LPCWSTR writerName,VSS_USAGE_TYPE usageType,DWORD versionMajor,DWORD versionMinor,DWORD reserved,IVssCreateExpressWriterMetadata **ppMetadata) {
+ return This->lpVtbl->CreateMetadata(This,writerId,writerName,usageType,versionMajor,versionMinor,reserved,ppMetadata);
+}
+static FORCEINLINE HRESULT IVssExpressWriter_LoadMetadata(IVssExpressWriter* This,LPCWSTR metadata,DWORD reserved) {
+ return This->lpVtbl->LoadMetadata(This,metadata,reserved);
+}
+static FORCEINLINE HRESULT IVssExpressWriter_Register(IVssExpressWriter* This) {
+ return This->lpVtbl->Register(This);
+}
+static FORCEINLINE HRESULT IVssExpressWriter_Unregister(IVssExpressWriter* This,VSS_ID writerId) {
+ return This->lpVtbl->Unregister(This,writerId);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IVssExpressWriter_INTERFACE_DEFINED__ */
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+/* Begin additional prototypes for all interfaces */
+
+ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *);
+unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
+unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
+void __RPC_USER BSTR_UserFree (ULONG *, BSTR *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
-#endif /*_INC_VSWRITER*/
+#endif /* __vswriter_h__ */
diff --git a/lib/libc/include/any-windows-any/wbemads.h b/lib/libc/include/any-windows-any/wbemads.h
index 9e7f718177..52f3db01c4 100644
--- a/lib/libc/include/any-windows-any/wbemads.h
+++ b/lib/libc/include/any-windows-any/wbemads.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wbemads.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wbemads.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wbemcli.h b/lib/libc/include/any-windows-any/wbemcli.h
index 8ad8691449..1941cf7aa5 100644
--- a/lib/libc/include/any-windows-any/wbemcli.h
+++ b/lib/libc/include/any-windows-any/wbemcli.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wbemcli.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wbemcli.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wbemdisp.h b/lib/libc/include/any-windows-any/wbemdisp.h
index 4b8dfbd286..99f23edbe6 100644
--- a/lib/libc/include/any-windows-any/wbemdisp.h
+++ b/lib/libc/include/any-windows-any/wbemdisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wbemdisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wbemdisp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wbemprov.h b/lib/libc/include/any-windows-any/wbemprov.h
index 7bcac0a7a0..e8473f5a30 100644
--- a/lib/libc/include/any-windows-any/wbemprov.h
+++ b/lib/libc/include/any-windows-any/wbemprov.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wbemprov.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wbemprov.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wbemtran.h b/lib/libc/include/any-windows-any/wbemtran.h
index 2c8e587152..996d459eef 100644
--- a/lib/libc/include/any-windows-any/wbemtran.h
+++ b/lib/libc/include/any-windows-any/wbemtran.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wbemtran.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wbemtran.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wchar.h b/lib/libc/include/any-windows-any/wchar.h
index ddafe77360..ab7187721f 100644
--- a/lib/libc/include/any-windows-any/wchar.h
+++ b/lib/libc/include/any-windows-any/wchar.h
@@ -281,7 +281,7 @@ extern FILE (* __MINGW_IMP_SYMBOL(_iob))[]; /* A pointer to an array of FILE */
int __cdecl is_wctype(wint_t _C,wctype_t _Type);
#endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES) || defined (__cplusplus)
int __cdecl iswblank(wint_t _C);
#endif
diff --git a/lib/libc/include/any-windows-any/wdstptmgmt.h b/lib/libc/include/any-windows-any/wdstptmgmt.h
index bcf22acc1a..807ca049ad 100644
--- a/lib/libc/include/any-windows-any/wdstptmgmt.h
+++ b/lib/libc/include/any-windows-any/wdstptmgmt.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wdstptmgmt.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wdstptmgmt.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/webauthn.h b/lib/libc/include/any-windows-any/webauthn.h
new file mode 100644
index 0000000000..a6a361f488
--- /dev/null
+++ b/lib/libc/include/any-windows-any/webauthn.h
@@ -0,0 +1,369 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WEBAUTHN_H_
+#define _WEBAUTHN_H_
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINAPI
+#if defined(_ARM_)
+#define WINAPI
+#else
+#define WINAPI __stdcall
+#endif
+#endif
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define WEBAUTHN_API_VERSION_1 1
+#define WEBAUTHN_API_VERSION_2 2
+#define WEBAUTHN_API_VERSION_3 3
+#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_3
+
+#define WEBAUTHN_RP_ENTITY_INFORMATION_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_RP_ENTITY_INFORMATION {
+ DWORD dwVersion;
+ PCWSTR pwszId;
+ PCWSTR pwszName;
+ PCWSTR pwszIcon;
+} WEBAUTHN_RP_ENTITY_INFORMATION, *PWEBAUTHN_RP_ENTITY_INFORMATION;
+typedef const WEBAUTHN_RP_ENTITY_INFORMATION *PCWEBAUTHN_RP_ENTITY_INFORMATION;
+
+#define WEBAUTHN_MAX_USER_ID_LENGTH 64
+
+#define WEBAUTHN_USER_ENTITY_INFORMATION_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_USER_ENTITY_INFORMATION {
+ DWORD dwVersion;
+ DWORD cbId;
+ PBYTE pbId;
+ PCWSTR pwszName;
+ PCWSTR pwszIcon;
+ PCWSTR pwszDisplayName;
+} WEBAUTHN_USER_ENTITY_INFORMATION, *PWEBAUTHN_USER_ENTITY_INFORMATION;
+typedef const WEBAUTHN_USER_ENTITY_INFORMATION *PCWEBAUTHN_USER_ENTITY_INFORMATION;
+
+#define WEBAUTHN_HASH_ALGORITHM_SHA_256 L"SHA-256"
+#define WEBAUTHN_HASH_ALGORITHM_SHA_384 L"SHA-384"
+#define WEBAUTHN_HASH_ALGORITHM_SHA_512 L"SHA-512"
+
+#define WEBAUTHN_CLIENT_DATA_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_CLIENT_DATA {
+ DWORD dwVersion;
+ DWORD cbClientDataJSON;
+ PBYTE pbClientDataJSON;
+ LPCWSTR pwszHashAlgId;
+} WEBAUTHN_CLIENT_DATA, *PWEBAUTHN_CLIENT_DATA;
+typedef const WEBAUTHN_CLIENT_DATA *PCWEBAUTHN_CLIENT_DATA;
+
+#define WEBAUTHN_CREDENTIAL_TYPE_PUBLIC_KEY L"public-key"
+
+#define WEBAUTHN_COSE_ALGORITHM_ECDSA_P256_WITH_SHA256 -7
+#define WEBAUTHN_COSE_ALGORITHM_ECDSA_P384_WITH_SHA384 -35
+#define WEBAUTHN_COSE_ALGORITHM_ECDSA_P521_WITH_SHA512 -36
+
+#define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA256 -257
+#define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA384 -258
+#define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA512 -259
+
+#define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA256 -37
+#define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA384 -38
+#define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA512 -39
+
+#define WEBAUTHN_COSE_CREDENTIAL_PARAMETER_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_COSE_CREDENTIAL_PARAMETER {
+ DWORD dwVersion;
+ LPCWSTR pwszCredentialType;
+ LONG lAlg;
+} WEBAUTHN_COSE_CREDENTIAL_PARAMETER, *PWEBAUTHN_COSE_CREDENTIAL_PARAMETER;
+typedef const WEBAUTHN_COSE_CREDENTIAL_PARAMETER *PCWEBAUTHN_COSE_CREDENTIAL_PARAMETER;
+
+typedef struct _WEBAUTHN_COSE_CREDENTIAL_PARAMETERS {
+ DWORD cCredentialParameters;
+ PWEBAUTHN_COSE_CREDENTIAL_PARAMETER pCredentialParameters;
+} WEBAUTHN_COSE_CREDENTIAL_PARAMETERS, *PWEBAUTHN_COSE_CREDENTIAL_PARAMETERS;
+typedef const WEBAUTHN_COSE_CREDENTIAL_PARAMETERS *PCWEBAUTHN_COSE_CREDENTIAL_PARAMETERS;
+
+#define WEBAUTHN_CREDENTIAL_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_CREDENTIAL {
+ DWORD dwVersion;
+ DWORD cbId;
+ PBYTE pbId;
+ LPCWSTR pwszCredentialType;
+} WEBAUTHN_CREDENTIAL, *PWEBAUTHN_CREDENTIAL;
+typedef const WEBAUTHN_CREDENTIAL *PCWEBAUTHN_CREDENTIAL;
+
+typedef struct _WEBAUTHN_CREDENTIALS {
+ DWORD cCredentials;
+ PWEBAUTHN_CREDENTIAL pCredentials;
+} WEBAUTHN_CREDENTIALS, *PWEBAUTHN_CREDENTIALS;
+typedef const WEBAUTHN_CREDENTIALS *PCWEBAUTHN_CREDENTIALS;
+
+#define WEBAUTHN_CTAP_TRANSPORT_USB 0x00000001
+#define WEBAUTHN_CTAP_TRANSPORT_NFC 0x00000002
+#define WEBAUTHN_CTAP_TRANSPORT_BLE 0x00000004
+#define WEBAUTHN_CTAP_TRANSPORT_TEST 0x00000008
+#define WEBAUTHN_CTAP_TRANSPORT_INTERNAL 0x00000010
+#define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000001F
+
+#define WEBAUTHN_CREDENTIAL_EX_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_CREDENTIAL_EX {
+ DWORD dwVersion;
+ DWORD cbId;
+ PBYTE pbId;
+ LPCWSTR pwszCredentialType;
+ DWORD dwTransports;
+} WEBAUTHN_CREDENTIAL_EX, *PWEBAUTHN_CREDENTIAL_EX;
+typedef const WEBAUTHN_CREDENTIAL_EX *PCWEBAUTHN_CREDENTIAL_EX;
+
+typedef struct _WEBAUTHN_CREDENTIAL_LIST {
+ DWORD cCredentials;
+ PWEBAUTHN_CREDENTIAL_EX *ppCredentials;
+} WEBAUTHN_CREDENTIAL_LIST, *PWEBAUTHN_CREDENTIAL_LIST;
+typedef const WEBAUTHN_CREDENTIAL_LIST *PCWEBAUTHN_CREDENTIAL_LIST;
+
+#define WEBAUTHN_EXTENSIONS_IDENTIFIER_HMAC_SECRET L"hmac-secret"
+
+#define WEBAUTHN_USER_VERIFICATION_ANY 0
+#define WEBAUTHN_USER_VERIFICATION_OPTIONAL 1
+#define WEBAUTHN_USER_VERIFICATION_OPTIONAL_WITH_CREDENTIAL_ID_LIST 2
+#define WEBAUTHN_USER_VERIFICATION_REQUIRED 3
+
+typedef struct _WEBAUTHN_CRED_PROTECT_EXTENSION_IN {
+ DWORD dwCredProtect;
+ WINBOOL bRequireCredProtect;
+} WEBAUTHN_CRED_PROTECT_EXTENSION_IN, *PWEBAUTHN_CRED_PROTECT_EXTENSION_IN;
+typedef const WEBAUTHN_CRED_PROTECT_EXTENSION_IN *PCWEBAUTHN_CRED_PROTECT_EXTENSION_IN;
+
+#define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_PROTECT L"credProtect"
+
+typedef struct _WEBAUTHN_CRED_BLOB_EXTENSION {
+ DWORD cbCredBlob;
+ PBYTE pbCredBlob;
+} WEBAUTHN_CRED_BLOB_EXTENSION, *PWEBAUTHN_CRED_BLOB_EXTENSION;
+typedef const WEBAUTHN_CRED_BLOB_EXTENSION *PCWEBAUTHN_CRED_BLOB_EXTENSION;
+
+#define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_BLOB L"credBlob"
+
+#define WEBAUTHN_EXTENSIONS_IDENTIFIER_MIN_PIN_LENGTH L"minPinLength"
+
+typedef struct _WEBAUTHN_EXTENSION {
+ LPCWSTR pwszExtensionIdentifier;
+ DWORD cbExtension;
+ PVOID pvExtension;
+} WEBAUTHN_EXTENSION, *PWEBAUTHN_EXTENSION;
+typedef const WEBAUTHN_EXTENSION *PCWEBAUTHN_EXTENSION;
+
+typedef struct _WEBAUTHN_EXTENSIONS {
+ DWORD cExtensions;
+ PWEBAUTHN_EXTENSION pExtensions;
+} WEBAUTHN_EXTENSIONS, *PWEBAUTHN_EXTENSIONS;
+typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS;
+
+#define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_ANY 0
+#define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_PLATFORM 1
+#define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM 2
+#define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM_U2F_V2 3
+
+#define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_ANY 0
+#define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_REQUIRED 1
+#define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_PREFERRED 2
+#define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_DISCOURAGED 3
+
+#define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_ANY 0
+#define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_NONE 1
+#define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_INDIRECT 2
+#define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT 3
+
+#define WEBAUTHN_ENTERPRISE_ATTESTATION_NONE 0
+#define WEBAUTHN_ENTERPRISE_ATTESTATION_VENDOR_FACILITATED 1
+#define WEBAUTHN_ENTERPRISE_ATTESTATION_PLATFORM_MANAGED 2
+
+#define WEBAUTHN_LARGE_BLOB_SUPPORT_NONE 0
+#define WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED 1
+#define WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED 2
+
+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 1
+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 2
+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 3
+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4 4
+#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4
+
+typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS {
+ DWORD dwVersion;
+ DWORD dwTimeoutMilliseconds;
+ WEBAUTHN_CREDENTIALS CredentialList;
+ WEBAUTHN_EXTENSIONS Extensions;
+ DWORD dwAuthenticatorAttachment;
+ WINBOOL bRequireResidentKey;
+ DWORD dwUserVerificationRequirement;
+ DWORD dwAttestationConveyancePreference;
+ DWORD dwFlags;
+ GUID *pCancellationId;
+ PWEBAUTHN_CREDENTIAL_LIST pExcludeCredentialList;
+ DWORD dwEnterpriseAttestation;
+ DWORD dwLargeBlobSupport;
+ WINBOOL bPreferResidentKey;
+} WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;
+typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;
+
+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_NONE 0
+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_GET 1
+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_SET 2
+#define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_DELETE 3
+
+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_1 1
+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_2 2
+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_3 3
+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_4 4
+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 5
+#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5
+
+typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS {
+ DWORD dwVersion;
+ DWORD dwTimeoutMilliseconds;
+ WEBAUTHN_CREDENTIALS CredentialList;
+ WEBAUTHN_EXTENSIONS Extensions;
+ DWORD dwAuthenticatorAttachment;
+ DWORD dwUserVerificationRequirement;
+ DWORD dwFlags;
+ PCWSTR pwszU2fAppId;
+ WINBOOL *pbU2fAppId;
+ GUID *pCancellationId;
+ PWEBAUTHN_CREDENTIAL_LIST pAllowCredentialList;
+ DWORD dwCredLargeBlobOperation;
+ DWORD cbCredLargeBlob;
+ PBYTE pbCredLargeBlob;
+} WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;
+typedef const WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;
+
+#define WEBAUTHN_ATTESTATION_DECODE_NONE 0
+#define WEBAUTHN_ATTESTATION_DECODE_COMMON 1
+
+#define WEBAUTHN_ATTESTATION_VER_TPM_2_0 L"2.0"
+
+typedef struct _WEBAUTHN_X5C {
+ DWORD cbData;
+ PBYTE pbData;
+} WEBAUTHN_X5C, *PWEBAUTHN_X5C;
+
+#define WEBAUTHN_COMMON_ATTESTATION_CURRENT_VERSION 1
+
+typedef struct _WEBAUTHN_COMMON_ATTESTATION {
+ DWORD dwVersion;
+ PCWSTR pwszAlg;
+ LONG lAlg;
+ DWORD cbSignature;
+ PBYTE pbSignature;
+ DWORD cX5c;
+ PWEBAUTHN_X5C pX5c;
+ PCWSTR pwszVer;
+ DWORD cbCertInfo;
+ PBYTE pbCertInfo;
+ DWORD cbPubArea;
+ PBYTE pbPubArea;
+} WEBAUTHN_COMMON_ATTESTATION, *PWEBAUTHN_COMMON_ATTESTATION;
+typedef const WEBAUTHN_COMMON_ATTESTATION *PCWEBAUTHN_COMMON_ATTESTATION;
+
+#define WEBAUTHN_ATTESTATION_TYPE_PACKED L"packed"
+#define WEBAUTHN_ATTESTATION_TYPE_U2F L"fido-u2f"
+#define WEBAUTHN_ATTESTATION_TYPE_TPM L"tpm"
+#define WEBAUTHN_ATTESTATION_TYPE_NONE L"none"
+
+#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_1 1
+#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_2 2
+#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_3 3
+#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 4
+#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4
+
+typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION {
+ DWORD dwVersion;
+ PCWSTR pwszFormatType;
+ DWORD cbAuthenticatorData;
+ PBYTE pbAuthenticatorData;
+ DWORD cbAttestation;
+ PBYTE pbAttestation;
+ DWORD dwAttestationDecodeType;
+ PVOID pvAttestationDecode;
+ DWORD cbAttestationObject;
+ PBYTE pbAttestationObject;
+ DWORD cbCredentialId;
+ PBYTE pbCredentialId;
+ WEBAUTHN_EXTENSIONS Extensions;
+ DWORD dwUsedTransport;
+ WINBOOL bEpAtt;
+ WINBOOL bLargeBlobSupported;
+ WINBOOL bResidentKey;
+} WEBAUTHN_CREDENTIAL_ATTESTATION, *PWEBAUTHN_CREDENTIAL_ATTESTATION;
+typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION;
+
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NONE 0
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_SUCCESS 1
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_SUPPORTED 2
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_DATA 3
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_PARAMETER 4
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_FOUND 5
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_MULTIPLE_CREDENTIALS 6
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_LACK_OF_SPACE 7
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_PLATFORM_ERROR 8
+#define WEBAUTHN_CRED_LARGE_BLOB_STATUS_AUTHENTICATOR_ERROR 9
+
+#define WEBAUTHN_ASSERTION_VERSION_1 1
+#define WEBAUTHN_ASSERTION_VERSION_2 2
+#define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_2
+
+typedef struct _WEBAUTHN_ASSERTION {
+ DWORD dwVersion;
+ DWORD cbAuthenticatorData;
+ PBYTE pbAuthenticatorData;
+ DWORD cbSignature;
+ PBYTE pbSignature;
+ WEBAUTHN_CREDENTIAL Credential;
+ DWORD cbUserId;
+ PBYTE pbUserId;
+ WEBAUTHN_EXTENSIONS Extensions;
+ DWORD cbCredLargeBlob;
+ PBYTE pbCredLargeBlob;
+ DWORD dwCredLargeBlobStatus;
+} WEBAUTHN_ASSERTION, *PWEBAUTHN_ASSERTION;
+typedef const WEBAUTHN_ASSERTION *PCWEBAUTHN_ASSERTION;
+
+DWORD WINAPI WebAuthNGetApiVersionNumber(void);
+HRESULT WINAPI WebAuthNIsUserVerifyingPlatformAuthenticatorAvailable(WINBOOL *pbIsUserVerifyingPlatformAuthenticatorAvailable);
+HRESULT WINAPI WebAuthNAuthenticatorMakeCredential(HWND hWnd, PCWEBAUTHN_RP_ENTITY_INFORMATION pRpInformation, PCWEBAUTHN_USER_ENTITY_INFORMATION pUserInformation, PCWEBAUTHN_COSE_CREDENTIAL_PARAMETERS pPubKeyCredParams, PCWEBAUTHN_CLIENT_DATA pWebAuthNClientData, PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS pWebAuthNMakeCredentialOptions, PWEBAUTHN_CREDENTIAL_ATTESTATION *ppWebAuthNCredentialAttestation);
+HRESULT WINAPI WebAuthNAuthenticatorGetAssertion(HWND hWnd, LPCWSTR pwszRpId, PCWEBAUTHN_CLIENT_DATA pWebAuthNClientData, PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS pWebAuthNGetAssertionOptions, PWEBAUTHN_ASSERTION *ppWebAuthNAssertion);
+void WINAPI WebAuthNFreeCredentialAttestation(PWEBAUTHN_CREDENTIAL_ATTESTATION pWebAuthNCredentialAttestation);
+void WINAPI WebAuthNFreeAssertion(PWEBAUTHN_ASSERTION pWebAuthNAssertion);
+HRESULT WINAPI WebAuthNGetCancellationId(GUID* pCancellationId);
+HRESULT WINAPI WebAuthNCancelCurrentOperation(const GUID* pCancellationId);
+PCWSTR WINAPI WebAuthNGetErrorName(HRESULT hr);
+HRESULT WINAPI WebAuthNGetW3CExceptionDOMError(HRESULT hr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINAPI_FAMILY_PARTITION */
+
+#endif /* _WEBAUTHN_H_ */
diff --git a/lib/libc/include/any-windows-any/winbase.h b/lib/libc/include/any-windows-any/winbase.h
index 08f89776a2..cc2935156b 100644
--- a/lib/libc/include/any-windows-any/winbase.h
+++ b/lib/libc/include/any-windows-any/winbase.h
@@ -1594,25 +1594,8 @@ extern "C" {
#endif
#endif
-#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
- typedef enum _PROCESS_INFORMATION_CLASS {
- ProcessMemoryPriority,
- ProcessMemoryExhaustionInfo,
- ProcessAppMemoryInfo,
- ProcessInPrivateInfo,
- ProcessPowerThrottling,
- ProcessReservedValue1,
- ProcessTelemetryCoverageInfo,
- ProcessProtectionLevelInfo,
- ProcessLeapSecondInfo,
- ProcessInformationClassMax
- } PROCESS_INFORMATION_CLASS;
-#endif
-
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) && _WIN32_WINNT >= 0x0602
WINBASEAPI HMODULE WINAPI LoadPackagedLibrary (LPCWSTR lpwLibFileName, DWORD Reserved);
- WINBASEAPI WINBOOL WINAPI GetProcessInformation (HANDLE hProcess, PROCESS_INFORMATION_CLASS ProcessInformationClass, LPVOID ProcessInformation, DWORD ProcessInformationSize);
- WINBASEAPI WINBOOL WINAPI SetProcessInformation (HANDLE hProcess, PROCESS_INFORMATION_CLASS ProcessInformationClass, LPVOID ProcessInformation, DWORD ProcessInformationSize);
#endif
#if _WIN32_WINNT >= 0x0600
diff --git a/lib/libc/include/any-windows-any/wincodec.h b/lib/libc/include/any-windows-any/wincodec.h
index d3c6ed1393..1f3be05004 100644
--- a/lib/libc/include/any-windows-any/wincodec.h
+++ b/lib/libc/include/any-windows-any/wincodec.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wincodec.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wincodec.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wincodecsdk.h b/lib/libc/include/any-windows-any/wincodecsdk.h
index d5ce5d885d..4f35ac2260 100644
--- a/lib/libc/include/any-windows-any/wincodecsdk.h
+++ b/lib/libc/include/any-windows-any/wincodecsdk.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wincodecsdk.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wincodecsdk.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wincon.h b/lib/libc/include/any-windows-any/wincon.h
index 56ea29b5b2..d4dea612bf 100644
--- a/lib/libc/include/any-windows-any/wincon.h
+++ b/lib/libc/include/any-windows-any/wincon.h
@@ -314,9 +314,7 @@ WINBASEAPI DWORD WINAPI GetConsoleCommandHistoryA(LPSTR Commands, DWORD CommandB
WINBASEAPI DWORD WINAPI GetConsoleCommandHistoryW(LPWSTR Commands, DWORD CommandBufferLength, LPWSTR ExeName);
#define GetConsoleCommandHistory __MINGW_NAME_AW(GetConsoleCommandHistory)
-#ifndef LF_FACESIZE
-#define LF_FACESIZE 32
-#endif
+#ifndef NOGDI
typedef struct _CONSOLE_FONT_INFOEX {
ULONG cbSize;
@@ -327,6 +325,20 @@ typedef struct _CONSOLE_FONT_INFOEX {
WCHAR FaceName[LF_FACESIZE];
} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
+WINBASEAPI WINBOOL WINAPI GetCurrentConsoleFontEx(
+ HANDLE hConsoleOutput,
+ WINBOOL bMaximumWindow,
+ PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
+);
+
+WINBASEAPI WINBOOL WINAPI SetCurrentConsoleFontEx(
+ HANDLE hConsoleOutput,
+ WINBOOL bMaximumWindow,
+ PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
+);
+
+#endif /* NOGDI */
+
#define HISTORY_NO_DUP_FLAG 0x1
typedef struct _CONSOLE_HISTORY_INFO {
@@ -378,12 +390,6 @@ WINBASEAPI WINBOOL WINAPI GetConsoleScreenBufferInfoEx(
PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
);
-WINBASEAPI WINBOOL WINAPI GetCurrentConsoleFontEx(
- HANDLE hConsoleOutput,
- WINBOOL bMaximumWindow,
- PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
-);
-
WINBASEAPI WINBOOL WINAPI SetConsoleHistoryInfo(
PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo
);
@@ -393,12 +399,6 @@ WINBASEAPI WINBOOL WINAPI SetConsoleScreenBufferInfoEx(
PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
);
-WINBASEAPI WINBOOL WINAPI SetCurrentConsoleFontEx(
- HANDLE hConsoleOutput,
- WINBOOL bMaximumWindow,
- PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
-);
-
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
diff --git a/lib/libc/include/any-windows-any/windns.h b/lib/libc/include/any-windows-any/windns.h
index 0a3326584c..ce926e015d 100644
--- a/lib/libc/include/any-windows-any/windns.h
+++ b/lib/libc/include/any-windows-any/windns.h
@@ -40,6 +40,7 @@ extern "C" {
#undef IP6_ADDRESS_STRING_LENGTH
#define IP6_ADDRESS_STRING_LENGTH (47)
#define IP6_ADDRESS_STRING_BUFFER_LENGTH (48)
+#define DNS_ADDRESS_STRING_LENGTH (IP6_ADDRESS_STRING_LENGTH)
#define INLINE_WORD_FLIP(out,in) { WORD _in = (in); (out) = (_in << 8) | (_in >> 8); }
#define INLINE_HTONS(out,in) INLINE_WORD_FLIP(out,in)
@@ -83,13 +84,22 @@ extern "C" {
BYTE Opcode : 4;
BYTE IsResponse : 1;
BYTE ResponseCode : 4;
- BYTE Reserved : 3;
+ BYTE CheckingDisabled : 1;
+ BYTE AuthenticatedData : 1;
+ BYTE Reserved : 1;
BYTE RecursionAvailable : 1;
WORD QuestionCount;
WORD AnswerCount;
WORD NameServerCount;
WORD AdditionalCount;
- } DNS_HEADER,*PDNS_HEADER;
+ } DNS_HEADER, *PDNS_HEADER;
+
+ typedef struct _DNS_HEADER_EXT {
+ WORD Reserved : 15;
+ WORD DnssecOk : 1;
+ BYTE chRcode;
+ BYTE chVersion;
+ } DNS_HEADER_EXT, *PDNS_HEADER_EXT;
#define DNS_HEADER_FLAGS(pHead) (*((PWORD)(pHead)+1))
#define DNS_BYTE_FLIP_HEADER_COUNTS(pHeader) { PDNS_HEADER _head = (pHeader); INLINE_HTONS(_head->Xid,_head->Xid); INLINE_HTONS(_head->QuestionCount,_head->QuestionCount); INLINE_HTONS(_head->AnswerCount,_head->AnswerCount); INLINE_HTONS(_head->NameServerCount,_head->NameServerCount); INLINE_HTONS(_head->AdditionalCount,_head->AdditionalCount); }
@@ -148,6 +158,7 @@ extern "C" {
#define DNS_CLASS_NONE 0x00fe
#define DNS_CLASS_ALL 0x00ff
#define DNS_CLASS_ANY 0x00ff
+#define DNS_CLASS_UNICAST_RESPONSE 0x8000
#define DNS_RCLASS_INTERNET 0x0100
#define DNS_RCLASS_CSNET 0x0200
@@ -156,6 +167,7 @@ extern "C" {
#define DNS_RCLASS_NONE 0xfe00
#define DNS_RCLASS_ALL 0xff00
#define DNS_RCLASS_ANY 0xff00
+#define DNS_RCLASS_UNICAST_RESPONSE 0x0080
#define DNS_TYPE_ZERO 0x0000
#define DNS_TYPE_A 0x0001
@@ -199,6 +211,14 @@ extern "C" {
#define DNS_TYPE_DNAME 0x0027
#define DNS_TYPE_SINK 0x0028
#define DNS_TYPE_OPT 0x0029
+#define DNS_TYPE_DS 0x002b
+#define DNS_TYPE_RRSIG 0x002e
+#define DNS_TYPE_NSEC 0x002f
+#define DNS_TYPE_DNSKEY 0x0030
+#define DNS_TYPE_DHCID 0x0031
+#define DNS_TYPE_NSEC3 0x0032
+#define DNS_TYPE_NSEC3PARAM 0x0033
+#define DNS_TYPE_TLSA 0x0034
#define DNS_TYPE_UINFO 0x0064
#define DNS_TYPE_UID 0x0065
#define DNS_TYPE_GID 0x0066
@@ -257,6 +277,14 @@ extern "C" {
#define DNS_RTYPE_DNAME 0x2700
#define DNS_RTYPE_SINK 0x2800
#define DNS_RTYPE_OPT 0x2900
+#define DNS_RTYPE_DS 0x2b00
+#define DNS_RTYPE_RRSIG 0x2e00
+#define DNS_RTYPE_NSEC 0x2f00
+#define DNS_RTYPE_DNSKEY 0x3000
+#define DNS_RTYPE_DHCID 0x3100
+#define DNS_RTYPE_NSEC3 0x3200
+#define DNS_RTYPE_NSEC3PARAM 0x3300
+#define DNS_RTYPE_TLSA 0x3400
#define DNS_RTYPE_UINFO 0x6400
#define DNS_RTYPE_UID 0x6500
#define DNS_RTYPE_GID 0x6600
@@ -286,9 +314,19 @@ extern "C" {
#define DNS_ATMA_MAX_RECORD_LENGTH (DNS_ATMA_MAX_ADDR_LENGTH+1)
#define DNSSEC_ALGORITHM_RSAMD5 1
+#define DNSSEC_ALGORITHM_RSASHA1 5
+#define DNSSEC_ALGORITHM_RSASHA1_NSEC3 7
+#define DNSSEC_ALGORITHM_RSASHA256 8
+#define DNSSEC_ALGORITHM_RSASHA512 10
+#define DNSSEC_ALGORITHM_ECDSAP256_SHA256 13
+#define DNSSEC_ALGORITHM_ECDSAP384_SHA384 14
#define DNSSEC_ALGORITHM_NULL 253
#define DNSSEC_ALGORITHM_PRIVATE 254
+#define DNSSEC_DIGEST_ALGORITHM_SHA1 1
+#define DNSSEC_DIGEST_ALGORITHM_SHA256 2
+#define DNSSEC_DIGEST_ALGORITHM_SHA384 4
+
#define DNSSEC_PROTOCOL_NONE 0
#define DNSSEC_PROTOCOL_TLS 1
#define DNSSEC_PROTOCOL_EMAIL 2
@@ -343,10 +381,25 @@ extern "C" {
#define IS_QWORD_ALIGNED(p) (!((UINT_PTR)(p) & (UINT_PTR)7))
typedef enum {
- DnsConfigPrimaryDomainName_W,DnsConfigPrimaryDomainName_A,DnsConfigPrimaryDomainName_UTF8,DnsConfigAdapterDomainName_W,
- DnsConfigAdapterDomainName_A,DnsConfigAdapterDomainName_UTF8,DnsConfigDnsServerList,DnsConfigSearchList,
- DnsConfigAdapterInfo,DnsConfigPrimaryHostNameRegistrationEnabled,DnsConfigAdapterHostNameRegistrationEnabled,DnsConfigAddressRegistrationMaxCount,
- DnsConfigHostName_W,DnsConfigHostName_A,DnsConfigHostName_UTF8,DnsConfigFullHostName_W,DnsConfigFullHostName_A,DnsConfigFullHostName_UTF8
+ DnsConfigPrimaryDomainName_W,
+ DnsConfigPrimaryDomainName_A,
+ DnsConfigPrimaryDomainName_UTF8,
+ DnsConfigAdapterDomainName_W,
+ DnsConfigAdapterDomainName_A,
+ DnsConfigAdapterDomainName_UTF8,
+ DnsConfigDnsServerList,
+ DnsConfigSearchList,
+ DnsConfigAdapterInfo,
+ DnsConfigPrimaryHostNameRegistrationEnabled,
+ DnsConfigAdapterHostNameRegistrationEnabled,
+ DnsConfigAddressRegistrationMaxCount,
+ DnsConfigHostName_W,
+ DnsConfigHostName_A,
+ DnsConfigHostName_UTF8,
+ DnsConfigFullHostName_W,
+ DnsConfigFullHostName_A,
+ DnsConfigFullHostName_UTF8,
+ DnsConfigNameServer
} DNS_CONFIG_TYPE;
#define DNS_CONFIG_FLAG_ALLOC (0x00000001)
@@ -433,7 +486,6 @@ extern "C" {
} DNS_AAAA_DATA,*PDNS_AAAA_DATA;
typedef struct {
- PWSTR pNameSigner;
WORD wTypeCovered;
BYTE chAlgorithm;
BYTE chLabelCount;
@@ -441,12 +493,12 @@ extern "C" {
DWORD dwExpiration;
DWORD dwTimeSigned;
WORD wKeyTag;
- WORD Pad;
+ WORD wSignatureLength;
+ PWSTR pNameSigner;
BYTE Signature[1];
- } DNS_SIG_DATAW,*PDNS_SIG_DATAW;
+ } DNS_SIG_DATAW, *PDNS_SIG_DATAW, DNS_RRSIG_DATAW, *PDNS_RRSIG_DATAW;
typedef struct {
- PSTR pNameSigner;
WORD wTypeCovered;
BYTE chAlgorithm;
BYTE chLabelCount;
@@ -454,16 +506,81 @@ extern "C" {
DWORD dwExpiration;
DWORD dwTimeSigned;
WORD wKeyTag;
- WORD Pad;
+ WORD wSignatureLength;
+ PSTR pNameSigner;
BYTE Signature[1];
- } DNS_SIG_DATAA,*PDNS_SIG_DATAA;
+ } DNS_SIG_DATAA, *PDNS_SIG_DATAA, DNS_RRSIG_DATAA, *PDNS_RRSIG_DATAA;
typedef struct {
WORD wFlags;
BYTE chProtocol;
BYTE chAlgorithm;
+ WORD wKeyLength;
+ WORD wPad;
BYTE Key[1];
- } DNS_KEY_DATA,*PDNS_KEY_DATA;
+ } DNS_KEY_DATA, *PDNS_KEY_DATA, DNS_DNSKEY_DATA, *PDNS_DNSKEY_DATA;
+
+ typedef struct {
+ DWORD dwByteCount;
+ BYTE DHCID[1];
+ } DNS_DHCID_DATA, *PDNS_DHCID_DATA;
+
+ typedef struct {
+ PWSTR pNextDomainName;
+ WORD wTypeBitMapsLength;
+ WORD wPad;
+ BYTE TypeBitMaps[1];
+ } DNS_NSEC_DATAW, *PDNS_NSEC_DATAW;
+
+ typedef struct {
+ PSTR pNextDomainName;
+ WORD wTypeBitMapsLength;
+ WORD wPad;
+ BYTE TypeBitMaps[1];
+ } DNS_NSEC_DATAA, *PDNS_NSEC_DATAA;
+
+ typedef struct {
+ BYTE chAlgorithm;
+ BYTE bFlags;
+ WORD wIterations;
+ BYTE bSaltLength;
+ BYTE bHashLength;
+ WORD wTypeBitMapsLength;
+ BYTE chData[1];
+ } DNS_NSEC3_DATA, *PDNS_NSEC3_DATA;
+
+ typedef struct {
+ BYTE chAlgorithm;
+ BYTE bFlags;
+ WORD wIterations;
+ BYTE bSaltLength;
+ BYTE bPad[3];
+ BYTE pbSalt[1];
+ } DNS_NSEC3PARAM_DATA, *PDNS_NSEC3PARAM_DATA;
+
+ typedef struct {
+ BYTE bCertUsage;
+ BYTE bSelector;
+ BYTE bMatchingType;
+ WORD bCertificateAssociationDataLength;
+ BYTE bPad[3];
+ BYTE bCertificateAssociationData[1];
+ } DNS_TLSA_DATA, *PDNS_TLSA_DATA;
+
+ typedef struct {
+ WORD wKeyTag;
+ BYTE chAlgorithm;
+ BYTE chDigestType;
+ WORD wDigestLength;
+ WORD wPad;
+ BYTE Digest[1];
+ } DNS_DS_DATA, *PDNS_DS_DATA;
+
+ typedef struct {
+ WORD wDataLength;
+ WORD wPad;
+ BYTE Data[1];
+ } DNS_OPT_DATA, *PDNS_OPT_DATA;
typedef struct {
WORD wVersion;
@@ -504,6 +621,24 @@ extern "C" {
} DNS_SRV_DATAA,*PDNS_SRV_DATAA;
typedef struct {
+ WORD wOrder;
+ WORD wPreference;
+ PWSTR pFlags;
+ PWSTR pService;
+ PWSTR pRegularExpression;
+ PWSTR pReplacement;
+ } DNS_NAPTR_DATAW, *PDNS_NAPTR_DATAW;
+
+ typedef struct {
+ WORD wOrder;
+ WORD wPreference;
+ PSTR pFlags;
+ PSTR pService;
+ PSTR pRegularExpression;
+ PSTR pReplacement;
+ } DNS_NAPTR_DATAA, *PDNS_NAPTR_DATAA;
+
+ typedef struct {
BYTE AddressType;
BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH ];
} DNS_ATMA_DATA,*PDNS_ATMA_DATA;
@@ -569,6 +704,11 @@ extern "C" {
} DNS_TSIG_DATAA,*PDNS_TSIG_DATAA;
typedef struct {
+ DWORD dwByteCount;
+ BYTE bData[1];
+ } DNS_UNKNOWN_DATA, *PDNS_UNKNOWN_DATA;
+
+ typedef struct {
DWORD dwMappingFlag;
DWORD dwLookupTimeout;
DWORD dwCacheTimeout;
@@ -606,6 +746,12 @@ extern "C" {
__MINGW_TYPEDEF_AW(PDNS_NXT_DATA)
__MINGW_TYPEDEF_AW(DNS_SRV_DATA)
__MINGW_TYPEDEF_AW(PDNS_SRV_DATA)
+ __MINGW_TYPEDEF_AW(DNS_NAPTR_DATA)
+ __MINGW_TYPEDEF_AW(PDNS_NAPTR_DATA)
+ __MINGW_TYPEDEF_AW(DNS_RRSIG_DATA)
+ __MINGW_TYPEDEF_AW(PDNS_RRSIG_DATA)
+ __MINGW_TYPEDEF_AW(DNS_NSEC_DATA)
+ __MINGW_TYPEDEF_AW(PDNS_NSEC_DATA)
__MINGW_TYPEDEF_AW(DNS_TKEY_DATA)
__MINGW_TYPEDEF_AW(PDNS_TKEY_DATA)
__MINGW_TYPEDEF_AW(DNS_TSIG_DATA)
@@ -617,6 +763,16 @@ extern "C" {
#define DNS_NULL_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_NULL_DATA,Data) + (ByteCount))
#define DNS_WKS_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_WKS_DATA,BitMask) + (ByteCount))
#define DNS_WINS_RECORD_LENGTH(IpCount) (FIELD_OFFSET(DNS_WINS_DATA,WinsServers) + ((IpCount) *sizeof(IP4_ADDRESS)))
+#define DNS_KEY_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_KEY_DATA,Key) + (ByteCount))
+#define DNS_SIG_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_SIG_DATA,Signature) + (ByteCount))
+#define DNS_NSEC_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_NSEC_DATA,TypeBitMaps) + (ByteCount))
+#define DNS_DS_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_DS_DATA,Digest) + (ByteCount))
+#define DNS_OPT_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_OPT_DATA,Data) + (ByteCount))
+#define DNS_DHCID_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_DHCID_DATA,DHCID) + (ByteCount))
+#define DNS_NSEC3_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_NSEC3_DATA,chData) + (ByteCount))
+#define DNS_NSEC3PARAM_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_NSEC3PARAM_DATA,pbSalt) + (ByteCount))
+#define DNS_TLSA_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_TLSA_DATA,bCertificateAssociationData) + (ByteCount))
+#define DNS_UNKNOWN_RECORD_LENGTH(ByteCount) (FIELD_OFFSET(DNS_UNKNOWN_DATA,bData) + (ByteCount))
typedef struct _DnsRecordFlags {
DWORD Section : 2;
@@ -661,7 +817,7 @@ extern "C" {
union {
DNS_A_DATA A;
DNS_SOA_DATAW SOA,Soa;
- DNS_PTR_DATAW PTR,Ptr,NS,Ns,CNAME,Cname,MB,Mb,MD,Md,MF,Mf,MG,Mg,MR,Mr;
+ DNS_PTR_DATAW PTR,Ptr,NS,Ns,CNAME,Cname,DNAME,Dname,MB,Mb,MD,Md,MF,Mf,MG,Mg,MR,Mr;
DNS_MINFO_DATAW MINFO,Minfo,RP,Rp;
DNS_MX_DATAW MX,Mx,AFSDB,Afsdb,RT,Rt;
DNS_TXT_DATAW HINFO,Hinfo,ISDN,Isdn,TXT,Txt,X25;
@@ -673,13 +829,42 @@ extern "C" {
DNS_ATMA_DATA ATMA,Atma;
DNS_NXT_DATAW NXT,Nxt;
DNS_SRV_DATAW SRV,Srv;
+ DNS_NAPTR_DATAW NAPTR,Naptr;
+ DNS_OPT_DATA OPT,Opt;
+ DNS_DS_DATA DS,Ds;
+ DNS_RRSIG_DATAW RRSIG,Rrsig;
+ DNS_NSEC_DATAW NSEC,Nsec;
+ DNS_DNSKEY_DATA DNSKEY,Dnskey;
DNS_TKEY_DATAW TKEY,Tkey;
DNS_TSIG_DATAW TSIG,Tsig;
DNS_WINS_DATA WINS,Wins;
DNS_WINSR_DATAW WINSR,WinsR,NBSTAT,Nbstat;
+ DNS_DHCID_DATA DHCID;
+ DNS_NSEC3_DATA NSEC3,Nsec3;
+ DNS_NSEC3PARAM_DATA NSEC3PARAM,Nsec3Param;
+ DNS_TLSA_DATA TLSA,Tlsa;
+ DNS_UNKNOWN_DATA UNKNOWN,Unknown;
+ PBYTE pDataPtr;
} Data;
} DNS_RECORDW,*PDNS_RECORDW;
+ typedef struct _DnsRecordOptW {
+ struct _DnsRecordW *pNext;
+ PWSTR pName;
+ WORD wType;
+ WORD wDataLength;
+ union {
+ DWORD DW;
+ DNS_RECORD_FLAGS S;
+ } Flags;
+ DNS_HEADER_EXT ExtHeader;
+ WORD wPayloadSize;
+ WORD wReserved;
+ union {
+ DNS_OPT_DATA OPT,Opt;
+ } Data;
+ } DNS_RECORD_OPTW, *PDNS_RECORD_OPTW;
+
typedef struct _DnsRecordA {
struct _DnsRecordA *pNext;
PSTR pName;
@@ -694,7 +879,7 @@ extern "C" {
union {
DNS_A_DATA A;
DNS_SOA_DATAA SOA,Soa;
- DNS_PTR_DATAA PTR,Ptr,NS,Ns,CNAME,Cname,MB,Mb,MD,Md,MF,Mf,MG,Mg,MR,Mr;
+ DNS_PTR_DATAA PTR,Ptr,NS,Ns,CNAME,Cname,DNAME,Dname,MB,Mb,MD,Md,MF,Mf,MG,Mg,MR,Mr;
DNS_MINFO_DATAA MINFO,Minfo,RP,Rp;
DNS_MX_DATAA MX,Mx,AFSDB,Afsdb,RT,Rt;
DNS_TXT_DATAA HINFO,Hinfo,ISDN,Isdn,TXT,Txt,X25;
@@ -706,17 +891,48 @@ extern "C" {
DNS_ATMA_DATA ATMA,Atma;
DNS_NXT_DATAA NXT,Nxt;
DNS_SRV_DATAA SRV,Srv;
+ DNS_NAPTR_DATAA NAPTR,Naptr;
+ DNS_OPT_DATA OPT,Opt;
+ DNS_DS_DATA DS,Ds;
+ DNS_RRSIG_DATAA RRSIG,Rrsig;
+ DNS_NSEC_DATAA NSEC,Nsec;
+ DNS_DNSKEY_DATA DNSKEY,Dnskey;
DNS_TKEY_DATAA TKEY,Tkey;
DNS_TSIG_DATAA TSIG,Tsig;
DNS_WINS_DATA WINS,Wins;
DNS_WINSR_DATAA WINSR,WinsR,NBSTAT,Nbstat;
+ DNS_DHCID_DATA DHCID;
+ DNS_NSEC3_DATA NSEC3,Nsec3;
+ DNS_NSEC3PARAM_DATA NSEC3PARAM,Nsec3Param;
+ DNS_TLSA_DATA TLSA,Tlsa;
+ DNS_UNKNOWN_DATA UNKNOWN,Unknown;
+ PBYTE pDataPtr;
} Data;
} DNS_RECORDA,*PDNS_RECORDA;
+ typedef struct _DnsRecordOptA {
+ struct _DnsRecordA *pNext;
+ PSTR pName;
+ WORD wType;
+ WORD wDataLength;
+ union {
+ DWORD DW;
+ DNS_RECORD_FLAGS S;
+ } Flags;
+ DNS_HEADER_EXT ExtHeader;
+ WORD wPayloadSize;
+ WORD wReserved;
+ union {
+ DNS_OPT_DATA OPT, Opt;
+ } Data;
+ } DNS_RECORD_OPTA, *PDNS_RECORD_OPTA;
+
#ifdef UNICODE
typedef DNS_RECORDW DNS_RECORD, *PDNS_RECORD;
+ typedef DNS_RECORD_OPTW DNS_RECORD_OPT, *PDNS_RECORD_OPT;
#else
typedef DNS_RECORDA DNS_RECORD, *PDNS_RECORD;
+ typedef DNS_RECORD_OPTA DNS_RECORD_OPT, *PDNS_RECORD_OPT;
#endif
#define DNS_RECORD_FIXED_SIZE FIELD_OFFSET(DNS_RECORD,Data)
@@ -731,6 +947,21 @@ extern "C" {
#define DNS_RRSET_ADD(rrset,pnewRR) { PDNS_RRSET _prrset = &(rrset); PDNS_RECORD _prrnew = (pnewRR); _prrset->pLastRR->pNext = _prrnew; _prrset->pLastRR = _prrnew; }
#define DNS_RRSET_TERMINATE(rrset) { PDNS_RRSET _prrset = &(rrset); _prrset->pLastRR->pNext = NULL; }
+ typedef VOID (WINAPI *DNS_PROXY_COMPLETION_ROUTINE)(void *completionContext,DNS_STATUS status);
+
+ typedef enum DNS_PROXY_INFORMATION_TYPE {
+ DNS_PROXY_INFORMATION_DIRECT,
+ DNS_PROXY_INFORMATION_DEFAULT_SETTINGS,
+ DNS_PROXY_INFORMATION_PROXY_NAME,
+ DNS_PROXY_INFORMATION_DOES_NOT_EXIST
+ } DNS_PROXY_INFORMATION_TYPE;
+
+ typedef struct DNS_PROXY_INFORMATION {
+ ULONG version;
+ DNS_PROXY_INFORMATION_TYPE proxyInformationType;
+ PWSTR proxyName;
+ } DNS_PROXY_INFORMATION;
+
typedef enum _DNS_CHARSET {
DnsCharSetUnknown,DnsCharSetUnicode,DnsCharSetUtf8,DnsCharSetAnsi
} DNS_CHARSET;
@@ -779,8 +1010,14 @@ extern "C" {
#define DNS_QUERY_NO_MULTICAST 0x00000800
#define DNS_QUERY_TREAT_AS_FQDN 0x00001000
#define DNS_QUERY_APPEND_MULTILABEL 0x00800000
+#define DNS_QUERY_ADDRCONFIG 0x00002000
+#define DNS_QUERY_DUAL_ADDR 0x00004000
#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x00100000
-#define DNS_QUERY_RESERVED 0xff000000
+#define DNS_QUERY_DISABLE_IDN_ENCODING 0x00200000
+#define DNS_QUERY_APPEND_MULTILABEL 0x00800000
+#define DNS_QUERY_DNSSEC_OK 0x01000000
+#define DNS_QUERY_DNSSEC_CHECKING_DISABLED 0x02000000
+#define DNS_QUERY_RESERVED 0xf0000000
#define DNS_QUERY_CACHE_ONLY DNS_QUERY_NO_WIRE_QUERY
DNS_STATUS WINAPI DnsQuery_A(PCSTR pszName,WORD wType,DWORD Options,PIP4_ARRAY aipServers,PDNS_RECORD *ppQueryResults,PVOID *pReserved);
@@ -789,6 +1026,24 @@ extern "C" {
#define DnsQuery __MINGW_NAME_UAW(DnsQuery)
+#if !defined (USE_PRIVATE_DNS_ADDR) || defined (MIDL_PASS) || defined (__WIDL__)
+#define DNS_QUERY_REQUEST_VERSION1 0x1
+#define DNS_QUERY_REQUEST_VERSION2 0x2
+#endif
+
+#define DNS_QUERY_RESULTS_VERSION1 0x1
+
+ typedef struct _DNS_QUERY_RESULT {
+ ULONG Version;
+ DNS_STATUS QueryStatus;
+ ULONG64 QueryOptions;
+ PDNS_RECORD pQueryRecords;
+ PVOID Reserved;
+ } DNS_QUERY_RESULT, *PDNS_QUERY_RESULT;
+
+ typedef VOID WINAPI DNS_QUERY_COMPLETION_ROUTINE(PVOID pQueryContext,PDNS_QUERY_RESULT pQueryResults);
+ typedef DNS_QUERY_COMPLETION_ROUTINE *PDNS_QUERY_COMPLETION_ROUTINE;
+
#define DNS_UPDATE_SECURITY_USE_DEFAULT 0x00000000
#define DNS_UPDATE_SECURITY_OFF 0x00000010
#define DNS_UPDATE_SECURITY_ON 0x00000020
@@ -818,12 +1073,33 @@ extern "C" {
DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORDA pNewSet,DWORD Options,HANDLE hContext,PIP4_ARRAY pServerList,PVOID pReserved);
typedef enum _DNS_NAME_FORMAT {
- DnsNameDomain,DnsNameDomainLabel,DnsNameHostnameFull,DnsNameHostnameLabel,DnsNameWildcard,DnsNameSrvRecord
+ DnsNameDomain,
+ DnsNameDomainLabel,
+ DnsNameHostnameFull,
+ DnsNameHostnameLabel,
+ DnsNameWildcard,
+ DnsNameSrvRecord,
+ DnsNameValidateTld
} DNS_NAME_FORMAT;
DNS_STATUS DnsValidateName_UTF8(LPCSTR pszName,DNS_NAME_FORMAT Format);
DNS_STATUS DnsValidateName_W(LPCWSTR pwszName,DNS_NAME_FORMAT Format);
DNS_STATUS DnsValidateName_A(LPCSTR pszName,DNS_NAME_FORMAT Format);
+
+#define DNS_VALSVR_ERROR_INVALID_ADDR 0x01
+#define DNS_VALSVR_ERROR_INVALID_NAME 0x02
+#define DNS_VALSVR_ERROR_UNREACHABLE 0x03
+#define DNS_VALSVR_ERROR_NO_RESPONSE 0x04
+#define DNS_VALSVR_ERROR_NO_AUTH 0x05
+#define DNS_VALSVR_ERROR_REFUSED 0x06
+
+#define DNS_VALSVR_ERROR_NO_TCP 0x10
+#define DNS_VALSVR_ERROR_UNKNOWN 0xFF
+
+#ifdef _WS2DEF_
+ DNS_STATUS DnsValidateServerStatus(PSOCKADDR server,PCWSTR queryName,PDWORD serverStatus);
+#endif
+
WINBOOL WINAPI DnsNameCompare_A(LPSTR pName1,LPSTR pName2);
WINBOOL WINAPI DnsNameCompare_W(LPWSTR pName1,LPWSTR pName2);
@@ -837,6 +1113,234 @@ extern "C" {
DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER pDnsBuffer,WORD wMessageLength,PDNS_RECORD *ppRecord);
DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER pDnsBuffer,WORD wMessageLength,PDNS_RECORDA *ppRecord);
+ DWORD WINAPI DnsGetProxyInformation(PCWSTR hostName,DNS_PROXY_INFORMATION *proxyInformation,DNS_PROXY_INFORMATION *defaultProxyInformation,DNS_PROXY_COMPLETION_ROUTINE completionRoutine,void *completionContext);
+ VOID WINAPI DnsFreeProxyName(PWSTR proxyName);
+
+#define DNS_CONNECTION_NAME_MAX_LENGTH 64
+#define DNS_CONNECTION_PROXY_INFO_CURRENT_VERSION 1
+#define DNS_CONNECTION_PROXY_INFO_SERVER_MAX_LENGTH 256
+#define DNS_CONNECTION_PROXY_INFO_FRIENDLY_NAME_MAX_LENGTH 64
+#define DNS_CONNECTION_PROXY_INFO_USERNAME_MAX_LENGTH 128
+#define DNS_CONNECTION_PROXY_INFO_PASSWORD_MAX_LENGTH 128
+#define DNS_CONNECTION_PROXY_INFO_EXCEPTION_MAX_LENGTH 1024
+#define DNS_CONNECTION_PROXY_INFO_EXTRA_INFO_MAX_LENGTH 1024
+
+ typedef enum _DNS_CONNECTION_PROXY_TYPE {
+ DNS_CONNECTION_PROXY_TYPE_NULL = 0,
+ DNS_CONNECTION_PROXY_TYPE_HTTP = 1,
+ DNS_CONNECTION_PROXY_TYPE_WAP = 2,
+ DNS_CONNECTION_PROXY_TYPE_SOCKS4 = 4,
+ DNS_CONNECTION_PROXY_TYPE_SOCKS5 = 5
+ } DNS_CONNECTION_PROXY_TYPE;
+
+ typedef enum _DNS_CONNECTION_PROXY_INFO_SWITCH {
+ DNS_CONNECTION_PROXY_INFO_SWITCH_CONFIG = 0,
+ DNS_CONNECTION_PROXY_INFO_SWITCH_SCRIPT,
+ DNS_CONNECTION_PROXY_INFO_SWITCH_WPAD
+ } DNS_CONNECTION_PROXY_INFO_SWITCH;
+
+#define DNS_CONNECTION_PROXY_INFO_FLAG_DISABLED 0x1
+#define DNS_CONNECTION_PROXY_INFO_FLAG_BYPASSLOCAL 0x2
+
+ struct _DNS_CONNECTION_PROXY_INFO_CONFIG {
+ WCHAR *pwszServer;
+ WCHAR *pwszUsername;
+ WCHAR *pwszPassword;
+ WCHAR *pwszException;
+ WCHAR *pwszExtraInfo;
+ WORD Port;
+ };
+
+ struct _DNS_CONNECTION_PROXY_INFO_SCRIPT {
+ WCHAR *pwszScript;
+ WCHAR *pwszUsername;
+ WCHAR *pwszPassword;
+ };
+
+ typedef struct _DNS_CONNECTION_PROXY_INFO {
+ DWORD Version;
+ WCHAR *pwszFriendlyName;
+ DWORD Flags;
+ DNS_CONNECTION_PROXY_INFO_SWITCH Switch;
+ __C89_NAMELESS union {
+ struct _DNS_CONNECTION_PROXY_INFO_CONFIG Config;
+ struct _DNS_CONNECTION_PROXY_INFO_SCRIPT Script;
+ };
+ } DNS_CONNECTION_PROXY_INFO, *PDNS_CONNECTION_PROXY_INFO;
+
+ typedef struct _DNS_CONNECTION_PROXY_INFO_EX {
+ DNS_CONNECTION_PROXY_INFO ProxyInfo;
+ DWORD dwInterfaceIndex;
+ WCHAR *pwszConnectionName;
+ WINBOOL fDirectConfiguration;
+ HANDLE hConnection;
+ } DNS_CONNECTION_PROXY_INFO_EX, *PDNS_CONNECTION_PROXY_INFO_EX;
+
+ typedef struct _DNS_CONNECTION_PROXY_ELEMENT {
+ DNS_CONNECTION_PROXY_TYPE Type;
+ DNS_CONNECTION_PROXY_INFO Info;
+ } DNS_CONNECTION_PROXY_ELEMENT;
+
+ typedef struct _DNS_CONNECTION_PROXY_LIST {
+ DWORD cProxies;
+ DNS_CONNECTION_PROXY_ELEMENT *pProxies;
+ } DNS_CONNECTION_PROXY_LIST;
+
+ typedef struct _DNS_CONNECTION_NAME {
+ WCHAR wszName[DNS_CONNECTION_NAME_MAX_LENGTH + 1];
+ } DNS_CONNECTION_NAME;
+
+ typedef struct _DNS_CONNECTION_NAME_LIST {
+ DWORD cNames;
+ DNS_CONNECTION_NAME *pNames;
+ } DNS_CONNECTION_NAME_LIST;
+
+ DWORD DnsConnectionGetProxyInfoForHostUrl(PCWSTR pwszHostUrl,BYTE *pSelectionContext,DWORD dwSelectionContextLength,DWORD dwExplicitInterfaceIndex,DNS_CONNECTION_PROXY_INFO_EX *pProxyInfoEx);
+ VOID DnsConnectionFreeProxyInfoEx(DNS_CONNECTION_PROXY_INFO_EX *pProxyInfoEx);
+ DWORD DnsConnectionGetProxyInfo(PCWSTR pwszConnectionName,DNS_CONNECTION_PROXY_TYPE Type,DNS_CONNECTION_PROXY_INFO *pProxyInfo);
+ VOID DnsConnectionFreeProxyInfo(DNS_CONNECTION_PROXY_INFO *pProxyInfo);
+ DWORD DnsConnectionSetProxyInfo(PCWSTR pwszConnectionName,DNS_CONNECTION_PROXY_TYPE Type,const DNS_CONNECTION_PROXY_INFO *pProxyInfo);
+ DWORD DnsConnectionDeleteProxyInfo(PCWSTR pwszConnectionName,DNS_CONNECTION_PROXY_TYPE Type);
+ DWORD DnsConnectionGetProxyList(PCWSTR pwszConnectionName,DNS_CONNECTION_PROXY_LIST *pProxyList);
+ VOID DnsConnectionFreeProxyList(DNS_CONNECTION_PROXY_LIST *pProxyList);
+ DWORD DnsConnectionGetNameList(DNS_CONNECTION_NAME_LIST *pNameList);
+ VOID DnsConnectionFreeNameList(DNS_CONNECTION_NAME_LIST *pNameList);
+
+ typedef struct _DNS_CONNECTION_IFINDEX_ENTRY {
+ PCWSTR pwszConnectionName;
+ DWORD dwIfIndex;
+ } DNS_CONNECTION_IFINDEX_ENTRY;
+
+ typedef struct _DNS_CONNECTION_IFINDEX_LIST {
+ DNS_CONNECTION_IFINDEX_ENTRY *pConnectionIfIndexEntries;
+ DWORD nEntries;
+ } DNS_CONNECTION_IFINDEX_LIST;
+
+ DWORD DnsConnectionUpdateIfIndexTable(DNS_CONNECTION_IFINDEX_LIST *pConnectionIfIndexEntries);
+
+#define DNS_CONNECTION_POLICY_ENTRY_ONDEMAND 0x00000001
+
+ typedef struct _DNS_CONNECTION_POLICY_ENTRY {
+ PCWSTR pwszHost;
+ PCWSTR pwszAppId;
+ DWORD cbAppSid;
+ PBYTE pbAppSid;
+ DWORD nConnections;
+ PCWSTR *ppwszConnections;
+ DWORD dwPolicyEntryFlags;
+ } DNS_CONNECTION_POLICY_ENTRY, *PDNS_CONNECTION_POLICY_ENTRY;
+
+ typedef struct _DNS_CONNECTION_POLICY_ENTRY_LIST {
+ DNS_CONNECTION_POLICY_ENTRY *pPolicyEntries;
+ DWORD nEntries;
+ } DNS_CONNECTION_POLICY_ENTRY_LIST;
+
+ typedef enum {
+ TAG_DNS_CONNECTION_POLICY_TAG_DEFAULT = 0,
+ TAG_DNS_CONNECTION_POLICY_TAG_CONNECTION_MANAGER,
+ TAG_DNS_CONNECTION_POLICY_TAG_WWWPT
+ } DNS_CONNECTION_POLICY_TAG;
+
+ DWORD DnsConnectionSetPolicyEntries(DNS_CONNECTION_POLICY_TAG PolicyEntryTag,DNS_CONNECTION_POLICY_ENTRY_LIST *pPolicyEntryList);
+ DWORD DnsConnectionDeletePolicyEntries(DNS_CONNECTION_POLICY_TAG PolicyEntryTag);
+
+ typedef struct _DNS_SERVICE_INSTANCE {
+ LPWSTR pszInstanceName;
+ LPWSTR pszHostName;
+ IP4_ADDRESS *ip4Address;
+ IP6_ADDRESS *ip6Address;
+ WORD wPort;
+ WORD wPriority;
+ WORD wWeight;
+ DWORD dwPropertyCount;
+ PWSTR *keys;
+ PWSTR *values;
+ DWORD dwInterfaceIndex;
+ } DNS_SERVICE_INSTANCE, *PDNS_SERVICE_INSTANCE;
+
+ PDNS_SERVICE_INSTANCE WINAPI DnsServiceConstructInstance(PCWSTR pServiceName,PCWSTR pHostName,PIP4_ADDRESS pIp4,PIP6_ADDRESS pIp6,WORD wPort,WORD wPriority,WORD wWeight,DWORD dwPropertiesCount,PCWSTR *keys,PCWSTR *values);
+ PDNS_SERVICE_INSTANCE WINAPI DnsServiceCopyInstance(PDNS_SERVICE_INSTANCE pOrig);
+ VOID WINAPI DnsServiceFreeInstance(PDNS_SERVICE_INSTANCE pInstance);
+
+ typedef struct _DNS_SERVICE_CANCEL {
+ PVOID reserved;
+ } DNS_SERVICE_CANCEL, *PDNS_SERVICE_CANCEL;
+
+ typedef VOID WINAPI DNS_SERVICE_BROWSE_CALLBACK(DWORD Status,PVOID pQueryContext,PDNS_RECORD pDnsRecord);
+ typedef DNS_SERVICE_BROWSE_CALLBACK *PDNS_SERVICE_BROWSE_CALLBACK;
+
+ typedef struct _DNS_SERVICE_BROWSE_REQUEST {
+ ULONG Version;
+ ULONG InterfaceIndex;
+ PCWSTR QueryName;
+ __C89_NAMELESS union {
+ PDNS_SERVICE_BROWSE_CALLBACK pBrowseCallback;
+ DNS_QUERY_COMPLETION_ROUTINE *pBrowseCallbackV2;
+ };
+ PVOID pQueryContext;
+ } DNS_SERVICE_BROWSE_REQUEST, *PDNS_SERVICE_BROWSE_REQUEST;
+
+ DNS_STATUS WINAPI DnsServiceBrowse(PDNS_SERVICE_BROWSE_REQUEST pRequest,PDNS_SERVICE_CANCEL pCancel);
+ DNS_STATUS WINAPI DnsServiceBrowseCancel(PDNS_SERVICE_CANCEL pCancelHandle);
+
+ typedef VOID WINAPI DNS_SERVICE_RESOLVE_COMPLETE(DWORD Status,PVOID pQueryContext,PDNS_SERVICE_INSTANCE pInstance);
+ typedef DNS_SERVICE_RESOLVE_COMPLETE *PDNS_SERVICE_RESOLVE_COMPLETE;
+
+ typedef struct _DNS_SERVICE_RESOLVE_REQUEST{
+ ULONG Version;
+ ULONG InterfaceIndex;
+ PWSTR QueryName;
+ PDNS_SERVICE_RESOLVE_COMPLETE pResolveCompletionCallback;
+ PVOID pQueryContext;
+ } DNS_SERVICE_RESOLVE_REQUEST, *PDNS_SERVICE_RESOLVE_REQUEST;
+
+ DNS_STATUS WINAPI DnsServiceResolve(PDNS_SERVICE_RESOLVE_REQUEST pRequest,PDNS_SERVICE_CANCEL pCancel);
+ DNS_STATUS WINAPI DnsServiceResolveCancel(PDNS_SERVICE_CANCEL pCancelHandle);
+
+ typedef VOID WINAPI DNS_SERVICE_REGISTER_COMPLETE(DWORD Status,PVOID pQueryContext,PDNS_SERVICE_INSTANCE pInstance);
+ typedef DNS_SERVICE_REGISTER_COMPLETE *PDNS_SERVICE_REGISTER_COMPLETE;
+
+ typedef struct _DNS_SERVICE_REGISTER_REQUEST{
+ ULONG Version;
+ ULONG InterfaceIndex;
+ PDNS_SERVICE_INSTANCE pServiceInstance;
+ PDNS_SERVICE_REGISTER_COMPLETE pRegisterCompletionCallback;
+ PVOID pQueryContext;
+ HANDLE hCredentials;
+ WINBOOL unicastEnabled;
+ } DNS_SERVICE_REGISTER_REQUEST, *PDNS_SERVICE_REGISTER_REQUEST;
+
+ DWORD WINAPI DnsServiceRegister(PDNS_SERVICE_REGISTER_REQUEST pRequest,PDNS_SERVICE_CANCEL pCancel);
+ DWORD WINAPI DnsServiceDeRegister(PDNS_SERVICE_REGISTER_REQUEST pRequest,PDNS_SERVICE_CANCEL pCancel);
+ DWORD WINAPI DnsServiceRegisterCancel(PDNS_SERVICE_CANCEL pCancelHandle);
+
+ typedef struct _MDNS_QUERY_HANDLE {
+ WCHAR nameBuf[DNS_MAX_NAME_BUFFER_LENGTH];
+ WORD wType;
+ PVOID pSubscription;
+ PVOID pWnfCallbackParams;
+ ULONG stateNameData[2];
+ } MDNS_QUERY_HANDLE, *PMDNS_QUERY_HANDLE;
+
+ typedef VOID WINAPI MDNS_QUERY_CALLBACK(PVOID pQueryContext,PMDNS_QUERY_HANDLE pQueryHandle,PDNS_QUERY_RESULT pQueryResults);
+ typedef MDNS_QUERY_CALLBACK *PMDNS_QUERY_CALLBACK;
+
+ typedef struct _MDNS_QUERY_REQUEST {
+ ULONG Version;
+ ULONG ulRefCount;
+ PCWSTR Query;
+ WORD QueryType;
+ ULONG64 QueryOptions;
+ ULONG InterfaceIndex;
+ PMDNS_QUERY_CALLBACK pQueryCallback;
+ PVOID pQueryContext;
+ WINBOOL fAnswerReceived;
+ ULONG ulResendCount;
+ } MDNS_QUERY_REQUEST, *PMDNS_QUERY_REQUEST;
+
+ DNS_STATUS WINAPI DnsStartMulticastQuery(PMDNS_QUERY_REQUEST pQueryRequest,PMDNS_QUERY_HANDLE pHandle);
+ DNS_STATUS WINAPI DnsStopMulticastQuery(PMDNS_QUERY_HANDLE pHandle);
+
#ifdef __cplusplus
}
#endif
diff --git a/lib/libc/include/any-windows-any/windows.foundation.collections.h b/lib/libc/include/any-windows-any/windows.foundation.collections.h
index 591bf1fc37..ef4f586158 100644
--- a/lib/libc/include/any-windows-any/windows.foundation.collections.h
+++ b/lib/libc/include/any-windows-any/windows.foundation.collections.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.foundation.collections.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.foundation.collections.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -79,6 +79,22 @@ namespace ABI {
namespace Windows {
namespace Foundation {
namespace Collections {
+ template <class K, class V>
+ struct IMapView_impl;
+
+ template <class K, class V>
+ struct IMapView : IMapView_impl<K, V> {};
+ }
+ }
+ }
+}
+#endif
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ namespace Collections {
template <class T>
struct IIterator_impl;
@@ -238,6 +254,35 @@ namespace ABI {
namespace Windows {
namespace Foundation {
namespace Collections {
+ template <class K, class V>
+ struct IMapView_impl : IInspectable
+ {
+ private:
+ typedef typename Windows::Foundation::Internal::GetAbiType<K>::type K_abi;
+ typedef typename Windows::Foundation::Internal::GetLogicalType<K>::type K_logical;
+ typedef typename Windows::Foundation::Internal::GetAbiType<V>::type V_abi;
+ typedef typename Windows::Foundation::Internal::GetLogicalType<V>::type V_logical;
+ public:
+ typedef K K_complex;
+ typedef V V_complex;
+ virtual HRESULT STDMETHODCALLTYPE Lookup(K_abi key,V_abi *value) = 0;
+ virtual HRESULT STDMETHODCALLTYPE get_Size(unsigned int *size) = 0;
+ virtual HRESULT STDMETHODCALLTYPE HasKey(K_abi key,boolean *found) = 0;
+ virtual HRESULT STDMETHODCALLTYPE Split(IMapView<K_logical, V_logical> **first,IMapView<K_logical, V_logical> **second) = 0;
+ };
+ }
+ }
+ }
+}
+extern "C" {
+#endif
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ namespace Collections {
template <class T>
struct IIterator_impl : IInspectable
{
diff --git a/lib/libc/include/any-windows-any/windows.foundation.h b/lib/libc/include/any-windows-any/windows.foundation.h
index 95486f952f..97e028b896 100644
--- a/lib/libc/include/any-windows-any/windows.foundation.h
+++ b/lib/libc/include/any-windows-any/windows.foundation.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.foundation.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.foundation.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -33,6 +33,21 @@ namespace ABI {
#endif /* __cplusplus */
#endif
+#ifndef ____x_ABI_CWindows_CFoundation_CIClosable_FWD_DEFINED__
+#define ____x_ABI_CWindows_CFoundation_CIClosable_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CFoundation_CIClosable __x_ABI_CWindows_CFoundation_CIClosable;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CFoundation_CIClosable ABI::Windows::Foundation::IClosable
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ interface IClosable;
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
#ifndef ____FIAsyncOperationCompletedHandler_1_boolean_FWD_DEFINED__
#define ____FIAsyncOperationCompletedHandler_1_boolean_FWD_DEFINED__
typedef interface __FIAsyncOperationCompletedHandler_1_boolean __FIAsyncOperationCompletedHandler_1_boolean;
@@ -68,6 +83,78 @@ typedef interface __FIVectorView_1_HSTRING __FIVectorView_1_HSTRING;
extern "C" {
#endif
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ typedef enum PropertyType PropertyType;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CFoundation_CPropertyType __x_ABI_CWindows_CFoundation_CPropertyType;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ typedef struct Point Point;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef struct __x_ABI_CWindows_CFoundation_CPoint __x_ABI_CWindows_CFoundation_CPoint;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ typedef struct Size Size;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef struct __x_ABI_CWindows_CFoundation_CSize __x_ABI_CWindows_CFoundation_CSize;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ typedef struct Rect Rect;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef struct __x_ABI_CWindows_CFoundation_CRect __x_ABI_CWindows_CFoundation_CRect;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ typedef struct DateTime DateTime;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef struct __x_ABI_CWindows_CFoundation_CDateTime __x_ABI_CWindows_CFoundation_CDateTime;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ typedef struct TimeSpan TimeSpan;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef struct __x_ABI_CWindows_CFoundation_CTimeSpan __x_ABI_CWindows_CFoundation_CTimeSpan;
+#endif /* __cplusplus */
+
#if WINDOWS_FOUNDATION_FOUNDATIONCONTRACT_VERSION >= 0x10000
#ifdef __cplusplus
} /* extern "C" */
@@ -422,6 +509,131 @@ static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIStringable_ToString(__
#endif /* ____x_ABI_CWindows_CFoundation_CIStringable_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_FOUNDATIONCONTRACT_VERSION >= 0x10000 */
+/*****************************************************************************
+ * IClosable interface
+ */
+#if WINDOWS_FOUNDATION_FOUNDATIONCONTRACT_VERSION >= 0x10000
+#ifndef ____x_ABI_CWindows_CFoundation_CIClosable_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CFoundation_CIClosable_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___x_ABI_CWindows_CFoundation_CIClosable, 0x30d5a829, 0x7fa4, 0x4026, 0x83,0xbb, 0xd7,0x5b,0xae,0x4e,0xa9,0x9e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ MIDL_INTERFACE("30d5a829-7fa4-4026-83bb-d75bae4ea99e")
+ IClosable : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE Close(
+ ) = 0;
+
+ };
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__x_ABI_CWindows_CFoundation_CIClosable, 0x30d5a829, 0x7fa4, 0x4026, 0x83,0xbb, 0xd7,0x5b,0xae,0x4e,0xa9,0x9e)
+#endif
+#else
+typedef struct __x_ABI_CWindows_CFoundation_CIClosableVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This);
+
+ /*** IInspectable methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIids)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This,
+ ULONG *iidCount,
+ IID **iids);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This,
+ HSTRING *className);
+
+ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This,
+ TrustLevel *trustLevel);
+
+ /*** IClosable methods ***/
+ HRESULT (STDMETHODCALLTYPE *Close)(
+ __x_ABI_CWindows_CFoundation_CIClosable *This);
+
+ END_INTERFACE
+} __x_ABI_CWindows_CFoundation_CIClosableVtbl;
+
+interface __x_ABI_CWindows_CFoundation_CIClosable {
+ CONST_VTBL __x_ABI_CWindows_CFoundation_CIClosableVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __x_ABI_CWindows_CFoundation_CIClosable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CFoundation_CIClosable_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CFoundation_CIClosable_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __x_ABI_CWindows_CFoundation_CIClosable_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CFoundation_CIClosable_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CFoundation_CIClosable_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** IClosable methods ***/
+#define __x_ABI_CWindows_CFoundation_CIClosable_Close(This) (This)->lpVtbl->Close(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIClosable_QueryInterface(__x_ABI_CWindows_CFoundation_CIClosable* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CFoundation_CIClosable_AddRef(__x_ABI_CWindows_CFoundation_CIClosable* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CFoundation_CIClosable_Release(__x_ABI_CWindows_CFoundation_CIClosable* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIClosable_GetIids(__x_ABI_CWindows_CFoundation_CIClosable* This,ULONG *iidCount,IID **iids) {
+ return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIClosable_GetRuntimeClassName(__x_ABI_CWindows_CFoundation_CIClosable* This,HSTRING *className) {
+ return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIClosable_GetTrustLevel(__x_ABI_CWindows_CFoundation_CIClosable* This,TrustLevel *trustLevel) {
+ return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** IClosable methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIClosable_Close(__x_ABI_CWindows_CFoundation_CIClosable* This) {
+ return This->lpVtbl->Close(This);
+}
+#endif
+#ifdef WIDL_using_Windows_Foundation
+#define IID_IClosable IID___x_ABI_CWindows_CFoundation_CIClosable
+#define IClosableVtbl __x_ABI_CWindows_CFoundation_CIClosableVtbl
+#define IClosable __x_ABI_CWindows_CFoundation_CIClosable
+#define IClosable_QueryInterface __x_ABI_CWindows_CFoundation_CIClosable_QueryInterface
+#define IClosable_AddRef __x_ABI_CWindows_CFoundation_CIClosable_AddRef
+#define IClosable_Release __x_ABI_CWindows_CFoundation_CIClosable_Release
+#define IClosable_GetIids __x_ABI_CWindows_CFoundation_CIClosable_GetIids
+#define IClosable_GetRuntimeClassName __x_ABI_CWindows_CFoundation_CIClosable_GetRuntimeClassName
+#define IClosable_GetTrustLevel __x_ABI_CWindows_CFoundation_CIClosable_GetTrustLevel
+#define IClosable_Close __x_ABI_CWindows_CFoundation_CIClosable_Close
+#endif /* WIDL_using_Windows_Foundation */
+#endif
+
+#endif
+
+#endif /* ____x_ABI_CWindows_CFoundation_CIClosable_INTERFACE_DEFINED__ */
+#endif /* WINDOWS_FOUNDATION_FOUNDATIONCONTRACT_VERSION >= 0x10000 */
+
#ifndef ____FIAsyncOperation_1_boolean_FWD_DEFINED__
#define ____FIAsyncOperation_1_boolean_FWD_DEFINED__
typedef interface __FIAsyncOperation_1_boolean __FIAsyncOperation_1_boolean;
diff --git a/lib/libc/include/any-windows-any/windows.media.h b/lib/libc/include/any-windows-any/windows.media.h
new file mode 100644
index 0000000000..3319fe0d7f
--- /dev/null
+++ b/lib/libc/include/any-windows-any/windows.media.h
@@ -0,0 +1,223 @@
+/*** Autogenerated by WIDL 7.0 from include/windows.media.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __windows_media_h__
+#define __windows_media_h__
+
+/* Forward declarations */
+
+#ifndef ____x_ABI_CWindows_CMedia_CIMediaMarker_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CIMediaMarker_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CMedia_CIMediaMarker __x_ABI_CWindows_CMedia_CIMediaMarker;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CMedia_CIMediaMarker ABI::Windows::Media::IMediaMarker
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ interface IMediaMarker;
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <inspectable.h>
+#include <windows.foundation.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef ____x_ABI_CWindows_CMedia_CIMediaControl_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CIMediaControl_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CMedia_CIMediaControl __x_ABI_CWindows_CMedia_CIMediaControl;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CMedia_CIMediaControl ABI::Windows::Media::IMediaControl
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ interface IMediaControl;
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+/*****************************************************************************
+ * IMediaMarker interface
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
+#ifndef ____x_ABI_CWindows_CMedia_CIMediaMarker_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CIMediaMarker_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___x_ABI_CWindows_CMedia_CIMediaMarker, 0x1803def8, 0xdca5, 0x4b6f, 0x9c,0x20, 0xe3,0xd3,0xc0,0x64,0x36,0x25);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ MIDL_INTERFACE("1803def8-dca5-4b6f-9c20-e3d3c0643625")
+ IMediaMarker : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE get_Time(
+ struct TimeSpan *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_MediaMarkerType(
+ HSTRING *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Text(
+ HSTRING *value) = 0;
+
+ };
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__x_ABI_CWindows_CMedia_CIMediaMarker, 0x1803def8, 0xdca5, 0x4b6f, 0x9c,0x20, 0xe3,0xd3,0xc0,0x64,0x36,0x25)
+#endif
+#else
+typedef struct __x_ABI_CWindows_CMedia_CIMediaMarkerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This);
+
+ /*** IInspectable methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIids)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ ULONG *iidCount,
+ IID **iids);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ HSTRING *className);
+
+ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ TrustLevel *trustLevel);
+
+ /*** IMediaMarker methods ***/
+ HRESULT (STDMETHODCALLTYPE *get_Time)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan *value);
+
+ HRESULT (STDMETHODCALLTYPE *get_MediaMarkerType)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ HSTRING *value);
+
+ HRESULT (STDMETHODCALLTYPE *get_Text)(
+ __x_ABI_CWindows_CMedia_CIMediaMarker *This,
+ HSTRING *value);
+
+ END_INTERFACE
+} __x_ABI_CWindows_CMedia_CIMediaMarkerVtbl;
+
+interface __x_ABI_CWindows_CMedia_CIMediaMarker {
+ CONST_VTBL __x_ABI_CWindows_CMedia_CIMediaMarkerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** IMediaMarker methods ***/
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_get_Time(This,value) (This)->lpVtbl->get_Time(This,value)
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_get_MediaMarkerType(This,value) (This)->lpVtbl->get_MediaMarkerType(This,value)
+#define __x_ABI_CWindows_CMedia_CIMediaMarker_get_Text(This,value) (This)->lpVtbl->get_Text(This,value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_QueryInterface(__x_ABI_CWindows_CMedia_CIMediaMarker* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CMedia_CIMediaMarker_AddRef(__x_ABI_CWindows_CMedia_CIMediaMarker* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CMedia_CIMediaMarker_Release(__x_ABI_CWindows_CMedia_CIMediaMarker* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_GetIids(__x_ABI_CWindows_CMedia_CIMediaMarker* This,ULONG *iidCount,IID **iids) {
+ return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_GetRuntimeClassName(__x_ABI_CWindows_CMedia_CIMediaMarker* This,HSTRING *className) {
+ return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_GetTrustLevel(__x_ABI_CWindows_CMedia_CIMediaMarker* This,TrustLevel *trustLevel) {
+ return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** IMediaMarker methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_get_Time(__x_ABI_CWindows_CMedia_CIMediaMarker* This,struct __x_ABI_CWindows_CFoundation_CTimeSpan *value) {
+ return This->lpVtbl->get_Time(This,value);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_get_MediaMarkerType(__x_ABI_CWindows_CMedia_CIMediaMarker* This,HSTRING *value) {
+ return This->lpVtbl->get_MediaMarkerType(This,value);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CIMediaMarker_get_Text(__x_ABI_CWindows_CMedia_CIMediaMarker* This,HSTRING *value) {
+ return This->lpVtbl->get_Text(This,value);
+}
+#endif
+#ifdef WIDL_using_Windows_Media
+#define IID_IMediaMarker IID___x_ABI_CWindows_CMedia_CIMediaMarker
+#define IMediaMarkerVtbl __x_ABI_CWindows_CMedia_CIMediaMarkerVtbl
+#define IMediaMarker __x_ABI_CWindows_CMedia_CIMediaMarker
+#define IMediaMarker_QueryInterface __x_ABI_CWindows_CMedia_CIMediaMarker_QueryInterface
+#define IMediaMarker_AddRef __x_ABI_CWindows_CMedia_CIMediaMarker_AddRef
+#define IMediaMarker_Release __x_ABI_CWindows_CMedia_CIMediaMarker_Release
+#define IMediaMarker_GetIids __x_ABI_CWindows_CMedia_CIMediaMarker_GetIids
+#define IMediaMarker_GetRuntimeClassName __x_ABI_CWindows_CMedia_CIMediaMarker_GetRuntimeClassName
+#define IMediaMarker_GetTrustLevel __x_ABI_CWindows_CMedia_CIMediaMarker_GetTrustLevel
+#define IMediaMarker_get_Time __x_ABI_CWindows_CMedia_CIMediaMarker_get_Time
+#define IMediaMarker_get_MediaMarkerType __x_ABI_CWindows_CMedia_CIMediaMarker_get_MediaMarkerType
+#define IMediaMarker_get_Text __x_ABI_CWindows_CMedia_CIMediaMarker_get_Text
+#endif /* WIDL_using_Windows_Media */
+#endif
+
+#endif
+
+#endif /* ____x_ABI_CWindows_CMedia_CIMediaMarker_INTERFACE_DEFINED__ */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
+
+/* Begin additional prototypes for all interfaces */
+
+ULONG __RPC_USER HSTRING_UserSize (ULONG *, ULONG, HSTRING *);
+unsigned char * __RPC_USER HSTRING_UserMarshal (ULONG *, unsigned char *, HSTRING *);
+unsigned char * __RPC_USER HSTRING_UserUnmarshal(ULONG *, unsigned char *, HSTRING *);
+void __RPC_USER HSTRING_UserFree (ULONG *, HSTRING *);
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __windows_media_h__ */
diff --git a/lib/libc/include/any-windows-any/windows.media.speechsynthesis.h b/lib/libc/include/any-windows-any/windows.media.speechsynthesis.h
index 51b8b8fcf9..e94d74598a 100644
--- a/lib/libc/include/any-windows-any/windows.media.speechsynthesis.h
+++ b/lib/libc/include/any-windows-any/windows.media.speechsynthesis.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.media.speechsynthesis.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.media.speechsynthesis.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -18,6 +18,40 @@
/* Forward declarations */
+#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream ABI::Windows::Media::SpeechSynthesis::ISpeechSynthesisStream
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ interface ISpeechSynthesisStream;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer ABI::Windows::Media::SpeechSynthesis::ISpeechSynthesizer
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ interface ISpeechSynthesizer;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation_FWD_DEFINED__
#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation __x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation;
@@ -69,6 +103,23 @@ typedef struct __x_ABI_CWindows_CMedia_CSpeechSynthesis_CVoiceInformation __x_AB
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CVoiceInformation_FWD_DEFINED__ */
+#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesisStream_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesisStream_FWD_DEFINED__
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ class SpeechSynthesisStream;
+ }
+ }
+ }
+}
+#else
+typedef struct __x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesisStream __x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesisStream;
+#endif /* defined __cplusplus */
+#endif /* defined ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesisStream_FWD_DEFINED__ */
+
#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesizer_FWD_DEFINED__
#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CSpeechSynthesizer_FWD_DEFINED__
#ifdef __cplusplus
@@ -110,10 +161,35 @@ typedef interface __FIVectorView_1_Windows__CMedia__CSpeechSynthesis__CVoiceInfo
#endif /* __cplusplus */
#endif
+#ifndef ____FIVectorView_1_Windows__CMedia__CIMediaMarker_FWD_DEFINED__
+#define ____FIVectorView_1_Windows__CMedia__CIMediaMarker_FWD_DEFINED__
+typedef interface __FIVectorView_1_Windows__CMedia__CIMediaMarker __FIVectorView_1_Windows__CMedia__CIMediaMarker;
+#ifdef __cplusplus
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Media::IMediaMarker* >
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_FWD_DEFINED__
+#define ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_FWD_DEFINED__
+typedef interface __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream;
+#ifdef __cplusplus
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* >
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_FWD_DEFINED__
+#define ____FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_FWD_DEFINED__
+typedef interface __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream;
+#ifdef __cplusplus
+#define __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream ABI::Windows::Foundation::IAsyncOperationCompletedHandler<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* >
+#endif /* __cplusplus */
+#endif
+
/* Headers for imported files */
#include <inspectable.h>
#include <windows.foundation.h>
+#include <windows.media.h>
#ifdef __cplusplus
extern "C" {
@@ -134,6 +210,20 @@ namespace ABI {
#endif /* __cplusplus */
#endif
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ typedef enum VoiceGender VoiceGender;
+ }
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CMedia_CSpeechSynthesis_CVoiceGender __x_ABI_CWindows_CMedia_CSpeechSynthesis_CVoiceGender;
+#endif /* __cplusplus */
+
#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CIInstalledVoicesStatic_FWD_DEFINED__
#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CIInstalledVoicesStatic_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CIInstalledVoicesStatic __x_ABI_CWindows_CMedia_CSpeechSynthesis_CIInstalledVoicesStatic;
@@ -219,6 +309,123 @@ namespace ABI {
#endif /* __cplusplus */
#endif
+#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream ABI::Windows::Media::SpeechSynthesis::ISpeechSynthesisStream
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ interface ISpeechSynthesisStream;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStreamWithContentType_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStreamWithContentType_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStreamWithContentType __x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStreamWithContentType;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStreamWithContentType ABI::Windows::Storage::Streams::IRandomAccessStreamWithContentType
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ namespace Streams {
+ interface IRandomAccessStreamWithContentType;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStream_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStream_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStream __x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStream;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CStorage_CStreams_CIRandomAccessStream ABI::Windows::Storage::Streams::IRandomAccessStream
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ namespace Streams {
+ interface IRandomAccessStream;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIInputStream_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CStreams_CIInputStream_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CStreams_CIInputStream __x_ABI_CWindows_CStorage_CStreams_CIInputStream;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CStorage_CStreams_CIInputStream ABI::Windows::Storage::Streams::IInputStream
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ namespace Streams {
+ interface IInputStream;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIOutputStream_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CStreams_CIOutputStream_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CStreams_CIOutputStream __x_ABI_CWindows_CStorage_CStreams_CIOutputStream;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CStorage_CStreams_CIOutputStream ABI::Windows::Storage::Streams::IOutputStream
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ namespace Streams {
+ interface IOutputStream;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIContentTypeProvider_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CStreams_CIContentTypeProvider_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CStreams_CIContentTypeProvider __x_ABI_CWindows_CStorage_CStreams_CIContentTypeProvider;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CStorage_CStreams_CIContentTypeProvider ABI::Windows::Storage::Streams::IContentTypeProvider
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ namespace Streams {
+ interface IContentTypeProvider;
+ }
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____x_ABI_CWindows_CMedia_CIMediaMarker_FWD_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CIMediaMarker_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CMedia_CIMediaMarker __x_ABI_CWindows_CMedia_CIMediaMarker;
+#ifdef __cplusplus
+#define __x_ABI_CWindows_CMedia_CIMediaMarker ABI::Windows::Media::IMediaMarker
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ interface IMediaMarker;
+ }
+ }
+}
+#endif /* __cplusplus */
+#endif
+
#ifndef ____FIIterator_1_Windows__CMedia__CSpeechSynthesis__CVoiceInformation_FWD_DEFINED__
#define ____FIIterator_1_Windows__CMedia__CSpeechSynthesis__CVoiceInformation_FWD_DEFINED__
typedef interface __FIIterator_1_Windows__CMedia__CSpeechSynthesis__CVoiceInformation __FIIterator_1_Windows__CMedia__CSpeechSynthesis__CVoiceInformation;
@@ -243,6 +450,22 @@ typedef interface __FIVectorView_1_Windows__CMedia__CSpeechSynthesis__CVoiceInfo
#endif /* __cplusplus */
#endif
+#ifndef ____FIVectorView_1_Windows__CMedia__CIMediaMarker_FWD_DEFINED__
+#define ____FIVectorView_1_Windows__CMedia__CIMediaMarker_FWD_DEFINED__
+typedef interface __FIVectorView_1_Windows__CMedia__CIMediaMarker __FIVectorView_1_Windows__CMedia__CIMediaMarker;
+#ifdef __cplusplus
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Media::IMediaMarker* >
+#endif /* __cplusplus */
+#endif
+
+#ifndef ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_FWD_DEFINED__
+#define ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_FWD_DEFINED__
+typedef interface __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream;
+#ifdef __cplusplus
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* >
+#endif /* __cplusplus */
+#endif
+
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifdef __cplusplus
} /* extern "C" */
@@ -271,6 +494,302 @@ enum __x_ABI_CWindows_CMedia_CSpeechSynthesis_CVoiceGender {
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
/*****************************************************************************
+ * ISpeechSynthesisStream interface
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
+#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream, 0x83e46e93, 0x244c, 0x4622, 0xba,0x0b, 0x62,0x29,0xc4,0xd0,0xd6,0x5d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ MIDL_INTERFACE("83e46e93-244c-4622-ba0b-6229c4d0d65d")
+ ISpeechSynthesisStream : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE get_Markers(
+ ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Media::IMediaMarker* > **value) = 0;
+
+ };
+ }
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream, 0x83e46e93, 0x244c, 0x4622, 0xba,0x0b, 0x62,0x29,0xc4,0xd0,0xd6,0x5d)
+#endif
+#else
+typedef struct __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStreamVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This);
+
+ /*** IInspectable methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIids)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This,
+ ULONG *iidCount,
+ IID **iids);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This,
+ HSTRING *className);
+
+ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This,
+ TrustLevel *trustLevel);
+
+ /*** ISpeechSynthesisStream methods ***/
+ HRESULT (STDMETHODCALLTYPE *get_Markers)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream *This,
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker **value);
+
+ END_INTERFACE
+} __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStreamVtbl;
+
+interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream {
+ CONST_VTBL __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** ISpeechSynthesisStream methods ***/
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_get_Markers(This,value) (This)->lpVtbl->get_Markers(This,value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_QueryInterface(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_AddRef(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_Release(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetIids(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This,ULONG *iidCount,IID **iids) {
+ return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetRuntimeClassName(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This,HSTRING *className) {
+ return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetTrustLevel(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This,TrustLevel *trustLevel) {
+ return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** ISpeechSynthesisStream methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_get_Markers(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream* This,__FIVectorView_1_Windows__CMedia__CIMediaMarker **value) {
+ return This->lpVtbl->get_Markers(This,value);
+}
+#endif
+#ifdef WIDL_using_Windows_Media_SpeechSynthesis
+#define IID_ISpeechSynthesisStream IID___x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream
+#define ISpeechSynthesisStreamVtbl __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStreamVtbl
+#define ISpeechSynthesisStream __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream
+#define ISpeechSynthesisStream_QueryInterface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_QueryInterface
+#define ISpeechSynthesisStream_AddRef __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_AddRef
+#define ISpeechSynthesisStream_Release __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_Release
+#define ISpeechSynthesisStream_GetIids __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetIids
+#define ISpeechSynthesisStream_GetRuntimeClassName __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetRuntimeClassName
+#define ISpeechSynthesisStream_GetTrustLevel __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_GetTrustLevel
+#define ISpeechSynthesisStream_get_Markers __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_get_Markers
+#endif /* WIDL_using_Windows_Media_SpeechSynthesis */
+#endif
+
+#endif
+
+#endif /* ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream_INTERFACE_DEFINED__ */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
+
+/*****************************************************************************
+ * ISpeechSynthesizer interface
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
+#ifndef ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer, 0xce9f7c76, 0x97f4, 0x4ced, 0xad,0x68, 0xd5,0x1c,0x45,0x8e,0x45,0xc6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Media {
+ namespace SpeechSynthesis {
+ MIDL_INTERFACE("ce9f7c76-97f4-4ced-ad68-d51c458e45c6")
+ ISpeechSynthesizer : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE SynthesizeTextToStreamAsync(
+ HSTRING text,
+ ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > **operation) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SynthesizeSsmlToStreamAsync(
+ HSTRING Ssml,
+ ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > **operation) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Voice(
+ IVoiceInformation *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Voice(
+ IVoiceInformation **value) = 0;
+
+ };
+ }
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer, 0xce9f7c76, 0x97f4, 0x4ced, 0xad,0x68, 0xd5,0x1c,0x45,0x8e,0x45,0xc6)
+#endif
+#else
+typedef struct __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This);
+
+ /*** IInspectable methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIids)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ ULONG *iidCount,
+ IID **iids);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ HSTRING *className);
+
+ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ TrustLevel *trustLevel);
+
+ /*** ISpeechSynthesizer methods ***/
+ HRESULT (STDMETHODCALLTYPE *SynthesizeTextToStreamAsync)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ HSTRING text,
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream **operation);
+
+ HRESULT (STDMETHODCALLTYPE *SynthesizeSsmlToStreamAsync)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ HSTRING Ssml,
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream **operation);
+
+ HRESULT (STDMETHODCALLTYPE *put_Voice)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation *value);
+
+ HRESULT (STDMETHODCALLTYPE *get_Voice)(
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer *This,
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation **value);
+
+ END_INTERFACE
+} __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizerVtbl;
+
+interface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer {
+ CONST_VTBL __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** ISpeechSynthesizer methods ***/
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_SynthesizeTextToStreamAsync(This,text,operation) (This)->lpVtbl->SynthesizeTextToStreamAsync(This,text,operation)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_SynthesizeSsmlToStreamAsync(This,Ssml,operation) (This)->lpVtbl->SynthesizeSsmlToStreamAsync(This,Ssml,operation)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_put_Voice(This,value) (This)->lpVtbl->put_Voice(This,value)
+#define __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_get_Voice(This,value) (This)->lpVtbl->get_Voice(This,value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_QueryInterface(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_AddRef(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_Release(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetIids(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,ULONG *iidCount,IID **iids) {
+ return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetRuntimeClassName(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,HSTRING *className) {
+ return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetTrustLevel(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,TrustLevel *trustLevel) {
+ return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** ISpeechSynthesizer methods ***/
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_SynthesizeTextToStreamAsync(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,HSTRING text,__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream **operation) {
+ return This->lpVtbl->SynthesizeTextToStreamAsync(This,text,operation);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_SynthesizeSsmlToStreamAsync(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,HSTRING Ssml,__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream **operation) {
+ return This->lpVtbl->SynthesizeSsmlToStreamAsync(This,Ssml,operation);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_put_Voice(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,__x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation *value) {
+ return This->lpVtbl->put_Voice(This,value);
+}
+static FORCEINLINE HRESULT __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_get_Voice(__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer* This,__x_ABI_CWindows_CMedia_CSpeechSynthesis_CIVoiceInformation **value) {
+ return This->lpVtbl->get_Voice(This,value);
+}
+#endif
+#ifdef WIDL_using_Windows_Media_SpeechSynthesis
+#define IID_ISpeechSynthesizer IID___x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer
+#define ISpeechSynthesizerVtbl __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizerVtbl
+#define ISpeechSynthesizer __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer
+#define ISpeechSynthesizer_QueryInterface __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_QueryInterface
+#define ISpeechSynthesizer_AddRef __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_AddRef
+#define ISpeechSynthesizer_Release __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_Release
+#define ISpeechSynthesizer_GetIids __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetIids
+#define ISpeechSynthesizer_GetRuntimeClassName __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetRuntimeClassName
+#define ISpeechSynthesizer_GetTrustLevel __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_GetTrustLevel
+#define ISpeechSynthesizer_SynthesizeTextToStreamAsync __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_SynthesizeTextToStreamAsync
+#define ISpeechSynthesizer_SynthesizeSsmlToStreamAsync __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_SynthesizeSsmlToStreamAsync
+#define ISpeechSynthesizer_put_Voice __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_put_Voice
+#define ISpeechSynthesizer_get_Voice __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_get_Voice
+#endif /* WIDL_using_Windows_Media_SpeechSynthesis */
+#endif
+
+#endif
+
+#endif /* ____x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesizer_INTERFACE_DEFINED__ */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
+
+/*****************************************************************************
* IVoiceInformation interface
*/
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
@@ -603,6 +1122,22 @@ extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Media_SpeechSynthesis
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
/*
+ * Class Windows.Media.SpeechSynthesis.SpeechSynthesisStream
+ */
+#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
+#ifndef RUNTIMECLASS_Windows_Media_SpeechSynthesis_SpeechSynthesisStream_DEFINED
+#define RUNTIMECLASS_Windows_Media_SpeechSynthesis_SpeechSynthesisStream_DEFINED
+#if !defined(_MSC_VER) && !defined(__MINGW32__)
+static const WCHAR RuntimeClass_Windows_Media_SpeechSynthesis_SpeechSynthesisStream[] = {'W','i','n','d','o','w','s','.','M','e','d','i','a','.','S','p','e','e','c','h','S','y','n','t','h','e','s','i','s','.','S','p','e','e','c','h','S','y','n','t','h','e','s','i','s','S','t','r','e','a','m',0};
+#elif defined(__GNUC__) && !defined(__cplusplus)
+const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Media_SpeechSynthesis_SpeechSynthesisStream[] = L"Windows.Media.SpeechSynthesis.SpeechSynthesisStream";
+#else
+extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Media_SpeechSynthesis_SpeechSynthesisStream[] = {'W','i','n','d','o','w','s','.','M','e','d','i','a','.','S','p','e','e','c','h','S','y','n','t','h','e','s','i','s','.','S','p','e','e','c','h','S','y','n','t','h','e','s','i','s','S','t','r','e','a','m',0};
+#endif
+#endif /* RUNTIMECLASS_Windows_Media_SpeechSynthesis_SpeechSynthesisStream_DEFINED */
+#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
+
+/*
* Class Windows.Media.SpeechSynthesis.SpeechSynthesizer
*/
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
@@ -1053,6 +1588,395 @@ static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CSpeechSynthesis__C
#endif /* ____FIVectorView_1_Windows__CMedia__CSpeechSynthesis__CVoiceInformation_INTERFACE_DEFINED__ */
+/*****************************************************************************
+ * IVectorView<ABI::Windows::Media::IMediaMarker* > interface
+ */
+#ifndef ____FIVectorView_1_Windows__CMedia__CIMediaMarker_INTERFACE_DEFINED__
+#define ____FIVectorView_1_Windows__CMedia__CIMediaMarker_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___FIVectorView_1_Windows__CMedia__CIMediaMarker, 0xb543562c, 0x02b1, 0x5824, 0x80,0xa8, 0x98,0x54,0x13,0x0c,0xda,0xdd);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ namespace Collections {
+ template<>
+ MIDL_INTERFACE("b543562c-02b1-5824-80a8-9854130cdadd")
+ IVectorView<ABI::Windows::Media::IMediaMarker* > : IVectorView_impl<ABI::Windows::Media::IMediaMarker* >
+ {
+ };
+ }
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__FIVectorView_1_Windows__CMedia__CIMediaMarker, 0xb543562c, 0x02b1, 0x5824, 0x80,0xa8, 0x98,0x54,0x13,0x0c,0xda,0xdd)
+#endif
+#else
+typedef struct __FIVectorView_1_Windows__CMedia__CIMediaMarkerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This);
+
+ /*** IInspectable methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIids)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ ULONG *iidCount,
+ IID **iids);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ HSTRING *className);
+
+ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ TrustLevel *trustLevel);
+
+ /*** IVectorView<ABI::Windows::Media::IMediaMarker* > methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetAt)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ UINT32 index,
+ __x_ABI_CWindows_CMedia_CIMediaMarker **value);
+
+ HRESULT (STDMETHODCALLTYPE *get_Size)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ UINT32 *value);
+
+ HRESULT (STDMETHODCALLTYPE *IndexOf)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ __x_ABI_CWindows_CMedia_CIMediaMarker *element,
+ UINT32 *index,
+ BOOLEAN *value);
+
+ HRESULT (STDMETHODCALLTYPE *GetMany)(
+ __FIVectorView_1_Windows__CMedia__CIMediaMarker *This,
+ UINT32 start_index,
+ UINT32 items_size,
+ __x_ABI_CWindows_CMedia_CIMediaMarker **items,
+ UINT32 *value);
+
+ END_INTERFACE
+} __FIVectorView_1_Windows__CMedia__CIMediaMarkerVtbl;
+
+interface __FIVectorView_1_Windows__CMedia__CIMediaMarker {
+ CONST_VTBL __FIVectorView_1_Windows__CMedia__CIMediaMarkerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** IVectorView<ABI::Windows::Media::IMediaMarker* > methods ***/
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
+#define __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_QueryInterface(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __FIVectorView_1_Windows__CMedia__CIMediaMarker_AddRef(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __FIVectorView_1_Windows__CMedia__CIMediaMarker_Release(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetIids(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,ULONG *iidCount,IID **iids) {
+ return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetRuntimeClassName(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,HSTRING *className) {
+ return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetTrustLevel(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,TrustLevel *trustLevel) {
+ return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** IVectorView<ABI::Windows::Media::IMediaMarker* > methods ***/
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetAt(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,UINT32 index,__x_ABI_CWindows_CMedia_CIMediaMarker **value) {
+ return This->lpVtbl->GetAt(This,index,value);
+}
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_get_Size(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,UINT32 *value) {
+ return This->lpVtbl->get_Size(This,value);
+}
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_IndexOf(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,__x_ABI_CWindows_CMedia_CIMediaMarker *element,UINT32 *index,BOOLEAN *value) {
+ return This->lpVtbl->IndexOf(This,element,index,value);
+}
+static FORCEINLINE HRESULT __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetMany(__FIVectorView_1_Windows__CMedia__CIMediaMarker* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CMedia_CIMediaMarker **items,UINT32 *value) {
+ return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
+}
+#endif
+#ifdef WIDL_using_Windows_Foundation_Collections
+#define IID_IVectorView_IMediaMarker IID___FIVectorView_1_Windows__CMedia__CIMediaMarker
+#define IVectorView_IMediaMarkerVtbl __FIVectorView_1_Windows__CMedia__CIMediaMarkerVtbl
+#define IVectorView_IMediaMarker __FIVectorView_1_Windows__CMedia__CIMediaMarker
+#define IVectorView_IMediaMarker_QueryInterface __FIVectorView_1_Windows__CMedia__CIMediaMarker_QueryInterface
+#define IVectorView_IMediaMarker_AddRef __FIVectorView_1_Windows__CMedia__CIMediaMarker_AddRef
+#define IVectorView_IMediaMarker_Release __FIVectorView_1_Windows__CMedia__CIMediaMarker_Release
+#define IVectorView_IMediaMarker_GetIids __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetIids
+#define IVectorView_IMediaMarker_GetRuntimeClassName __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetRuntimeClassName
+#define IVectorView_IMediaMarker_GetTrustLevel __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetTrustLevel
+#define IVectorView_IMediaMarker_GetAt __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetAt
+#define IVectorView_IMediaMarker_get_Size __FIVectorView_1_Windows__CMedia__CIMediaMarker_get_Size
+#define IVectorView_IMediaMarker_IndexOf __FIVectorView_1_Windows__CMedia__CIMediaMarker_IndexOf
+#define IVectorView_IMediaMarker_GetMany __FIVectorView_1_Windows__CMedia__CIMediaMarker_GetMany
+#endif /* WIDL_using_Windows_Foundation_Collections */
+#endif
+
+#endif
+
+#endif /* ____FIVectorView_1_Windows__CMedia__CIMediaMarker_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > interface
+ */
+#ifndef ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_INTERFACE_DEFINED__
+#define ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream, 0xdf9d48ad, 0x9cea, 0x560c, 0x9e,0xdc, 0xcb,0x88,0x52,0xcb,0x55,0xe3);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ template<>
+ MIDL_INTERFACE("df9d48ad-9cea-560c-9edc-cb8852cb55e3")
+ IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > : IAsyncOperation_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream*, ABI::Windows::Media::SpeechSynthesis::ISpeechSynthesisStream* > >
+ {
+ };
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream, 0xdf9d48ad, 0x9cea, 0x560c, 0x9e,0xdc, 0xcb,0x88,0x52,0xcb,0x55,0xe3)
+#endif
+#else
+typedef struct __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This);
+
+ /*** IInspectable methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetIids)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ ULONG *iidCount,
+ IID **iids);
+
+ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ HSTRING *className);
+
+ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ TrustLevel *trustLevel);
+
+ /*** IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > methods ***/
+ HRESULT (STDMETHODCALLTYPE *put_Completed)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *handler);
+
+ HRESULT (STDMETHODCALLTYPE *get_Completed)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream **handler);
+
+ HRESULT (STDMETHODCALLTYPE *GetResults)(
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ __x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream ***results);
+
+ END_INTERFACE
+} __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl;
+
+interface __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream {
+ CONST_VTBL __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IInspectable methods ***/
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
+/*** IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > methods ***/
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_put_Completed(This,handler) (This)->lpVtbl->put_Completed(This,handler)
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_get_Completed(This,handler) (This)->lpVtbl->get_Completed(This,handler)
+#define __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetResults(This,results) (This)->lpVtbl->GetResults(This,results)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_QueryInterface(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_AddRef(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Release(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IInspectable methods ***/
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetIids(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,ULONG *iidCount,IID **iids) {
+ return This->lpVtbl->GetIids(This,iidCount,iids);
+}
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetRuntimeClassName(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,HSTRING *className) {
+ return This->lpVtbl->GetRuntimeClassName(This,className);
+}
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetTrustLevel(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,TrustLevel *trustLevel) {
+ return This->lpVtbl->GetTrustLevel(This,trustLevel);
+}
+/*** IAsyncOperation<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > methods ***/
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_put_Completed(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *handler) {
+ return This->lpVtbl->put_Completed(This,handler);
+}
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_get_Completed(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream **handler) {
+ return This->lpVtbl->get_Completed(This,handler);
+}
+static FORCEINLINE HRESULT __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetResults(__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,__x_ABI_CWindows_CMedia_CSpeechSynthesis_CISpeechSynthesisStream ***results) {
+ return This->lpVtbl->GetResults(This,results);
+}
+#endif
+#ifdef WIDL_using_Windows_Foundation
+#define IID_IAsyncOperation_SpeechSynthesisStream IID___FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream
+#define IAsyncOperation_SpeechSynthesisStreamVtbl __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl
+#define IAsyncOperation_SpeechSynthesisStream __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream
+#define IAsyncOperation_SpeechSynthesisStream_QueryInterface __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_QueryInterface
+#define IAsyncOperation_SpeechSynthesisStream_AddRef __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_AddRef
+#define IAsyncOperation_SpeechSynthesisStream_Release __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Release
+#define IAsyncOperation_SpeechSynthesisStream_GetIids __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetIids
+#define IAsyncOperation_SpeechSynthesisStream_GetRuntimeClassName __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetRuntimeClassName
+#define IAsyncOperation_SpeechSynthesisStream_GetTrustLevel __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetTrustLevel
+#define IAsyncOperation_SpeechSynthesisStream_put_Completed __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_put_Completed
+#define IAsyncOperation_SpeechSynthesisStream_get_Completed __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_get_Completed
+#define IAsyncOperation_SpeechSynthesisStream_GetResults __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_GetResults
+#endif /* WIDL_using_Windows_Foundation */
+#endif
+
+#endif
+
+#endif /* ____FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IAsyncOperationCompletedHandler<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > interface
+ */
+#ifndef ____FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_INTERFACE_DEFINED__
+#define ____FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID___FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream, 0xc972b996, 0x6165, 0x50d4, 0xaf,0x60, 0xa8,0xc3,0xdf,0x51,0xd0,0x92);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+} /* extern "C" */
+namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+ template<>
+ MIDL_INTERFACE("c972b996-6165-50d4-af60-a8c3df51d092")
+ IAsyncOperationCompletedHandler<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > : IAsyncOperationCompletedHandler_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream*, ABI::Windows::Media::SpeechSynthesis::ISpeechSynthesisStream* > >
+ {
+ };
+ }
+ }
+}
+extern "C" {
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream, 0xc972b996, 0x6165, 0x50d4, 0xaf,0x60, 0xa8,0xc3,0xdf,0x51,0xd0,0x92)
+#endif
+#else
+typedef struct __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This);
+
+ /*** IAsyncOperationCompletedHandler<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > methods ***/
+ HRESULT (STDMETHODCALLTYPE *Invoke)(
+ __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *This,
+ __FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *info,
+ AsyncStatus status);
+
+ END_INTERFACE
+} __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl;
+
+interface __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream {
+ CONST_VTBL __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Release(This) (This)->lpVtbl->Release(This)
+/*** IAsyncOperationCompletedHandler<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > methods ***/
+#define __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Invoke(This,info,status) (This)->lpVtbl->Invoke(This,info,status)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_QueryInterface(__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_AddRef(__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Release(__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IAsyncOperationCompletedHandler<ABI::Windows::Media::SpeechSynthesis::SpeechSynthesisStream* > methods ***/
+static FORCEINLINE HRESULT __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Invoke(__FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream* This,__FIAsyncOperation_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream *info,AsyncStatus status) {
+ return This->lpVtbl->Invoke(This,info,status);
+}
+#endif
+#ifdef WIDL_using_Windows_Foundation
+#define IID_IAsyncOperationCompletedHandler_SpeechSynthesisStream IID___FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream
+#define IAsyncOperationCompletedHandler_SpeechSynthesisStreamVtbl __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStreamVtbl
+#define IAsyncOperationCompletedHandler_SpeechSynthesisStream __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream
+#define IAsyncOperationCompletedHandler_SpeechSynthesisStream_QueryInterface __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_QueryInterface
+#define IAsyncOperationCompletedHandler_SpeechSynthesisStream_AddRef __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_AddRef
+#define IAsyncOperationCompletedHandler_SpeechSynthesisStream_Release __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Release
+#define IAsyncOperationCompletedHandler_SpeechSynthesisStream_Invoke __FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_Invoke
+#endif /* WIDL_using_Windows_Foundation */
+#endif
+
+#endif
+
+#endif /* ____FIAsyncOperationCompletedHandler_1_Windows__CMedia__CSpeechSynthesis__CSpeechSynthesisStream_INTERFACE_DEFINED__ */
+
/* Begin additional prototypes for all interfaces */
ULONG __RPC_USER HSTRING_UserSize (ULONG *, ULONG, HSTRING *);
diff --git a/lib/libc/include/any-windows-any/windows.security.cryptography.h b/lib/libc/include/any-windows-any/windows.security.cryptography.h
index 314bd9f29c..76ceac5103 100644
--- a/lib/libc/include/any-windows-any/windows.security.cryptography.h
+++ b/lib/libc/include/any-windows-any/windows.security.cryptography.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.security.cryptography.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.security.cryptography.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -79,6 +79,20 @@ namespace ABI {
#endif
#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Security {
+ namespace Cryptography {
+ typedef enum BinaryStringEncoding BinaryStringEncoding;
+ }
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding __x_ABI_CWindows_CSecurity_CCryptography_CBinaryStringEncoding;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
namespace Windows {
diff --git a/lib/libc/include/any-windows-any/windows.storage.h b/lib/libc/include/any-windows-any/windows.storage.h
index bc890f44a9..fab5b9788e 100644
--- a/lib/libc/include/any-windows-any/windows.storage.h
+++ b/lib/libc/include/any-windows-any/windows.storage.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.storage.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.storage.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -210,23 +210,6 @@ namespace ABI {
#endif /* __cplusplus */
#endif
-#ifndef ____x_ABI_CWindows_CFoundation_CCollections_CIMapView_FWD_DEFINED__
-#define ____x_ABI_CWindows_CFoundation_CCollections_CIMapView_FWD_DEFINED__
-typedef interface __x_ABI_CWindows_CFoundation_CCollections_CIMapView __x_ABI_CWindows_CFoundation_CCollections_CIMapView;
-#ifdef __cplusplus
-#define __x_ABI_CWindows_CFoundation_CCollections_CIMapView ABI::Windows::Foundation::Collections::IMapView
-namespace ABI {
- namespace Windows {
- namespace Foundation {
- namespace Collections {
- interface IMapView;
- }
- }
- }
-}
-#endif /* __cplusplus */
-#endif
-
#ifndef ____x_ABI_CWindows_CStorage_CIStorageItem_FWD_DEFINED__
#define ____x_ABI_CWindows_CStorage_CIStorageItem_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CStorage_CIStorageItem __x_ABI_CWindows_CStorage_CIStorageItem;
@@ -348,6 +331,90 @@ namespace ABI {
#endif
#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum StorageDeleteOption StorageDeleteOption;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CStorageDeleteOption __x_ABI_CWindows_CStorage_CStorageDeleteOption;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum NameCollisionOption NameCollisionOption;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CNameCollisionOption __x_ABI_CWindows_CStorage_CNameCollisionOption;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum StorageItemTypes StorageItemTypes;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CStorageItemTypes __x_ABI_CWindows_CStorage_CStorageItemTypes;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum ApplicationDataLocality ApplicationDataLocality;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CApplicationDataLocality __x_ABI_CWindows_CStorage_CApplicationDataLocality;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum ApplicationDataCreateDisposition ApplicationDataCreateDisposition;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CApplicationDataCreateDisposition __x_ABI_CWindows_CStorage_CApplicationDataCreateDisposition;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum FileAttributes FileAttributes;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CFileAttributes __x_ABI_CWindows_CStorage_CFileAttributes;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace Storage {
+ typedef enum CreationCollisionOption CreationCollisionOption;
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CStorage_CCreationCollisionOption __x_ABI_CWindows_CStorage_CCreationCollisionOption;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
namespace Windows {
diff --git a/lib/libc/include/any-windows-any/windows.storage.streams.h b/lib/libc/include/any-windows-any/windows.storage.streams.h
index 96041d2ae7..c1492a9c7f 100644
--- a/lib/libc/include/any-windows-any/windows.storage.streams.h
+++ b/lib/libc/include/any-windows-any/windows.storage.streams.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.storage.streams.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.storage.streams.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/windows.system.h b/lib/libc/include/any-windows-any/windows.system.h
index dadc5aeff3..aa8b99c0c1 100644
--- a/lib/libc/include/any-windows-any/windows.system.h
+++ b/lib/libc/include/any-windows-any/windows.system.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.system.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.system.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/windows.system.threading.h b/lib/libc/include/any-windows-any/windows.system.threading.h
index 3311ac6913..9760bd2693 100644
--- a/lib/libc/include/any-windows-any/windows.system.threading.h
+++ b/lib/libc/include/any-windows-any/windows.system.threading.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windows.system.threading.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windows.system.threading.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -144,6 +144,34 @@ namespace ABI {
#endif /* __cplusplus */
#endif
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace System {
+ namespace Threading {
+ typedef enum WorkItemPriority WorkItemPriority;
+ }
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CSystem_CThreading_CWorkItemPriority __x_ABI_CWindows_CSystem_CThreading_CWorkItemPriority;
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+namespace ABI {
+ namespace Windows {
+ namespace System {
+ namespace Threading {
+ typedef enum WorkItemOptions WorkItemOptions;
+ }
+ }
+ }
+}
+#else /* __cplusplus */
+typedef enum __x_ABI_CWindows_CSystem_CThreading_CWorkItemOptions __x_ABI_CWindows_CSystem_CThreading_CWorkItemOptions;
+#endif /* __cplusplus */
+
#ifndef ____x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler_FWD_DEFINED__
#define ____x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler __x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler;
@@ -812,11 +840,11 @@ typedef struct __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerVtbl {
/*** IThreadPoolTimer methods ***/
HRESULT (STDMETHODCALLTYPE *get_Period)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer *This,
- struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan *value);
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan *value);
HRESULT (STDMETHODCALLTYPE *get_Delay)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer *This,
- struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan *value);
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan *value);
HRESULT (STDMETHODCALLTYPE *Cancel)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer *This);
@@ -864,10 +892,10 @@ static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer
return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IThreadPoolTimer methods ***/
-static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer_get_Period(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer* This,struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan *value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer_get_Period(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer* This,struct __x_ABI_CWindows_CFoundation_CTimeSpan *value) {
return This->lpVtbl->get_Period(This,value);
}
-static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer_get_Delay(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer* This,struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan *value) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer_get_Delay(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer* This,struct __x_ABI_CWindows_CFoundation_CTimeSpan *value) {
return This->lpVtbl->get_Delay(This,value);
}
static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer_Cancel(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer* This) {
@@ -975,26 +1003,26 @@ typedef struct __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStaticsVtbl
HRESULT (STDMETHODCALLTYPE *CreatePeriodicTimer)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics *This,
__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,
- struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan period,
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan period,
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer);
HRESULT (STDMETHODCALLTYPE *CreateTimer)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics *This,
__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,
- struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan delay,
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan delay,
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer);
HRESULT (STDMETHODCALLTYPE *CreatePeriodicTimerWithCompletion)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics *This,
__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,
- struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan period,
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan period,
__x_ABI_CWindows_CSystem_CThreading_CTimerDestroyedHandler *destroyed,
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer);
HRESULT (STDMETHODCALLTYPE *CreateTimerWithCompletion)(
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics *This,
__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,
- struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan delay,
+ struct __x_ABI_CWindows_CFoundation_CTimeSpan delay,
__x_ABI_CWindows_CSystem_CThreading_CTimerDestroyedHandler *destroyed,
__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer);
@@ -1042,16 +1070,16 @@ static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer
return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IThreadPoolTimerStatics methods ***/
-static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreatePeriodicTimer(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan period,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreatePeriodicTimer(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CFoundation_CTimeSpan period,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
return This->lpVtbl->CreatePeriodicTimer(This,handler,period,timer);
}
-static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreateTimer(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan delay,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreateTimer(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CFoundation_CTimeSpan delay,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
return This->lpVtbl->CreateTimer(This,handler,delay,timer);
}
-static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreatePeriodicTimerWithCompletion(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan period,__x_ABI_CWindows_CSystem_CThreading_CTimerDestroyedHandler *destroyed,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreatePeriodicTimerWithCompletion(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CFoundation_CTimeSpan period,__x_ABI_CWindows_CSystem_CThreading_CTimerDestroyedHandler *destroyed,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
return This->lpVtbl->CreatePeriodicTimerWithCompletion(This,handler,period,destroyed,timer);
}
-static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreateTimerWithCompletion(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CSystem_CThreading_CTimeSpan delay,__x_ABI_CWindows_CSystem_CThreading_CTimerDestroyedHandler *destroyed,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics_CreateTimerWithCompletion(__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimerStatics* This,__x_ABI_CWindows_CSystem_CThreading_CTimerElapsedHandler *handler,struct __x_ABI_CWindows_CFoundation_CTimeSpan delay,__x_ABI_CWindows_CSystem_CThreading_CTimerDestroyedHandler *destroyed,__x_ABI_CWindows_CSystem_CThreading_CIThreadPoolTimer **timer) {
return This->lpVtbl->CreateTimerWithCompletion(This,handler,delay,destroyed,timer);
}
#endif
diff --git a/lib/libc/include/any-windows-any/windowscontracts.h b/lib/libc/include/any-windows-any/windowscontracts.h
index 9c1f9897a8..6f5f12fdfa 100644
--- a/lib/libc/include/any-windows-any/windowscontracts.h
+++ b/lib/libc/include/any-windows-any/windowscontracts.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/windowscontracts.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/windowscontracts.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/winerror.h b/lib/libc/include/any-windows-any/winerror.h
index 609172d1a6..5650274f80 100644
--- a/lib/libc/include/any-windows-any/winerror.h
+++ b/lib/libc/include/any-windows-any/winerror.h
@@ -247,10 +247,12 @@
#define ERROR_OBJECT_NOT_EXTERNALLY_BACKED __MSABI_LONG(342)
#define ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN __MSABI_LONG(343)
#define ERROR_COMPRESSION_NOT_BENEFICIAL __MSABI_LONG(344)
+#define ERROR_CASE_DIFFERING_NAMES_IN_DIR __MSABI_LONG(424)
#define ERROR_INVALID_ADDRESS __MSABI_LONG(487)
#define ERROR_ARITHMETIC_OVERFLOW __MSABI_LONG(534)
#define ERROR_PIPE_CONNECTED __MSABI_LONG(535)
#define ERROR_PIPE_LISTENING __MSABI_LONG(536)
+#define ERROR_COMMITMENT_MINIMUM __MSABI_LONG(635)
#define ERROR_WAKE_SYSTEM __MSABI_LONG(730)
#define ERROR_WAIT_1 __MSABI_LONG(731)
#define ERROR_WAIT_2 __MSABI_LONG(732)
@@ -2881,6 +2883,25 @@ __CRT_INLINE HRESULT HRESULT_FROM_WIN32(__LONG32 x) { return x <= 0 ? (HRESULT)x
#define NTE_TOKEN_KEYSET_STORAGE_FULL _HRESULT_TYPEDEF_(0x80090023)
#define NTE_TEMPORARY_PROFILE _HRESULT_TYPEDEF_(0x80090024)
#define NTE_FIXEDPARAMETER _HRESULT_TYPEDEF_(0x80090025)
+#define NTE_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80090026)
+#define NTE_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80090027)
+#define NTE_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x80090028)
+#define NTE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80090029)
+#define NTE_NO_MORE_ITEMS _HRESULT_TYPEDEF_(0x8009002A)
+#define NTE_BUFFERS_OVERLAP _HRESULT_TYPEDEF_(0x8009002B)
+#define NTE_DECRYPTION_FAILURE _HRESULT_TYPEDEF_(0x8009002C)
+#define NTE_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x8009002D)
+#define NTE_UI_REQUIRED _HRESULT_TYPEDEF_(0x8009002E)
+#define NTE_HMAC_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009002F)
+#define NTE_DEVICE_NOT_READY _HRESULT_TYPEDEF_(0x80090030)
+#define NTE_AUTHENTICATION_IGNORED _HRESULT_TYPEDEF_(0x80090031)
+#define NTE_VALIDATION_FAILED _HRESULT_TYPEDEF_(0x80090032)
+#define NTE_INCORRECT_PASSWORD _HRESULT_TYPEDEF_(0x80090033)
+#define NTE_ENCRYPTION_FAILURE _HRESULT_TYPEDEF_(0x80090034)
+#define NTE_DEVICE_NOT_FOUND _HRESULT_TYPEDEF_(0x80090035)
+#define NTE_USER_CANCELLED _HRESULT_TYPEDEF_(0x80090036)
+#define NTE_PASSWORD_CHANGE_REQUIRED _HRESULT_TYPEDEF_(0x80090037)
+#define NTE_NOT_ACTIVE_CONSOLE _HRESULT_TYPEDEF_(0x80090038)
#define SEC_E_INSUFFICIENT_MEMORY _HRESULT_TYPEDEF_(0x80090300)
#define SEC_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80090301)
#define SEC_E_UNSUPPORTED_FUNCTION _HRESULT_TYPEDEF_(0x80090302)
diff --git a/lib/libc/include/any-windows-any/winevt.h b/lib/libc/include/any-windows-any/winevt.h
index 90be0cd613..add920b279 100644
--- a/lib/libc/include/any-windows-any/winevt.h
+++ b/lib/libc/include/any-windows-any/winevt.h
@@ -3,14 +3,24 @@
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
-#ifndef _INC_WINEVT
-#define _INC_WINEVT
+#ifndef __WINEVT_H__
+#define __WINEVT_H__
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
+#define EVT_READ_ACCESS 0x1
+#define EVT_WRITE_ACCESS 0x2
+#define EVT_CLEAR_ACCESS 0x4
+#define EVT_ALL_ACCESS 0x7
+
typedef enum _EVT_CHANNEL_CLOCK_TYPE {
EvtChannelClockTypeSystemTime = 0,
EvtChannelClockTypeQPC = 1
@@ -266,6 +276,9 @@ typedef enum _EVT_VARIANT_TYPE {
EvtVarTypeEvtXml = 35
} EVT_VARIANT_TYPE;
+#define EVT_VARIANT_TYPE_MASK 0x7f
+#define EVT_VARIANT_TYPE_ARRAY 128
+
typedef HANDLE EVT_HANDLE;
typedef HANDLE EVT_OBJECT_ARRAY_PROPERTY_HANDLE;
@@ -572,5 +585,7 @@ WINBOOL WINAPI EvtUpdateBookmark(
#ifdef __cplusplus
}
#endif
+
#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_TDH*/
+#endif /* WINAPI_PARTITION_DESKTOP */
+#endif /*__WINEVT_H__ */
diff --git a/lib/libc/include/any-windows-any/winhvplatform.h b/lib/libc/include/any-windows-any/winhvplatform.h
index 61f20f6ea4..b148804fba 100644
--- a/lib/libc/include/any-windows-any/winhvplatform.h
+++ b/lib/libc/include/any-windows-any/winhvplatform.h
@@ -22,15 +22,18 @@ extern "C" {
HRESULT WINAPI WHvGetCapability(WHV_CAPABILITY_CODE CapabilityCode, VOID *CapabilityBuffer, UINT32 CapabilityBufferSizeInBytes, UINT32 *WrittenSizeInBytes);
HRESULT WINAPI WHvCreatePartition(WHV_PARTITION_HANDLE *Partition);
HRESULT WINAPI WHvSetupPartition(WHV_PARTITION_HANDLE Partition);
+HRESULT WINAPI WHvResetPartition(WHV_PARTITION_HANDLE Partition);
HRESULT WINAPI WHvDeletePartition(WHV_PARTITION_HANDLE Partition);
HRESULT WINAPI WHvGetPartitionProperty(WHV_PARTITION_HANDLE Partition, WHV_PARTITION_PROPERTY_CODE PropertyCode, VOID *PropertyBuffer, UINT32 PropertyBufferSizeInBytes, UINT32 *WrittenSizeInBytes);
HRESULT WINAPI WHvSetPartitionProperty(WHV_PARTITION_HANDLE Partition, WHV_PARTITION_PROPERTY_CODE PropertyCode, const VOID *PropertyBuffer, UINT32 PropertyBufferSizeInBytes);
HRESULT WINAPI WHvSuspendPartitionTime(WHV_PARTITION_HANDLE Partition);
HRESULT WINAPI WHvResumePartitionTime(WHV_PARTITION_HANDLE Partition);
HRESULT WINAPI WHvMapGpaRange(WHV_PARTITION_HANDLE Partition, VOID *SourceAddress, WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, UINT64 SizeInBytes, WHV_MAP_GPA_RANGE_FLAGS Flags);
+HRESULT WINAPI WHvMapGpaRange2(WHV_PARTITION_HANDLE Partition, HANDLE Process, VOID *SourceAddress, WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, UINT64 SizeInBytes, WHV_MAP_GPA_RANGE_FLAGS Flags);
HRESULT WINAPI WHvUnmapGpaRange(WHV_PARTITION_HANDLE Partition, WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, UINT64 SizeInBytes);
HRESULT WINAPI WHvTranslateGva(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, WHV_GUEST_VIRTUAL_ADDRESS Gva, WHV_TRANSLATE_GVA_FLAGS TranslateFlags, WHV_TRANSLATE_GVA_RESULT *TranslationResult, WHV_GUEST_PHYSICAL_ADDRESS *Gpa);
HRESULT WINAPI WHvCreateVirtualProcessor(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, UINT32 Flags);
+HRESULT WINAPI WHvCreateVirtualProcessor2(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, const WHV_VIRTUAL_PROCESSOR_PROPERTY *Properties, UINT32 PropertyCount);
HRESULT WINAPI WHvDeleteVirtualProcessor(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex);
HRESULT WINAPI WHvRunVirtualProcessor(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, VOID *ExitContext, UINT32 ExitContextSizeInBytes);
HRESULT WINAPI WHvCancelRunVirtualProcessor(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, UINT32 Flags);
@@ -48,6 +51,40 @@ HRESULT WINAPI WHvGetVirtualProcessorInterruptControllerState2(WHV_PARTITION_HAN
HRESULT WINAPI WHvSetVirtualProcessorInterruptControllerState2(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, const VOID *State, UINT32 StateSize);
HRESULT WINAPI WHvRegisterPartitionDoorbellEvent(WHV_PARTITION_HANDLE Partition, const WHV_DOORBELL_MATCH_DATA *MatchData, HANDLE EventHandle);
HRESULT WINAPI WHvUnregisterPartitionDoorbellEvent(WHV_PARTITION_HANDLE Partition, const WHV_DOORBELL_MATCH_DATA *MatchData);
+HRESULT WINAPI WHvAdviseGpaRange(WHV_PARTITION_HANDLE Partition, const WHV_MEMORY_RANGE_ENTRY *GpaRanges, UINT32 GpaRangesCount, WHV_ADVISE_GPA_RANGE_CODE Advice, const VOID *AdviceBuffer, UINT32 AdviceBufferSizeInBytes);
+HRESULT WINAPI WHvReadGpaRange(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, WHV_ACCESS_GPA_CONTROLS Controls, PVOID Data, UINT32 DataSizeInBytes);
+HRESULT WINAPI WHvWriteGpaRange(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, WHV_ACCESS_GPA_CONTROLS Controls, const VOID *Data, UINT32 DataSizeInBytes);
+HRESULT WINAPI WHvSignalVirtualProcessorSynicEvent(WHV_PARTITION_HANDLE Partition, WHV_SYNIC_EVENT_PARAMETERS SynicEvent, WINBOOL *NewlySignaled);
+HRESULT WINAPI WHvGetVirtualProcessorState(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, WHV_VIRTUAL_PROCESSOR_STATE_TYPE StateType, VOID *Buffer, UINT32 BufferSizeInBytes, UINT32 *BytesWritten);
+HRESULT WINAPI WHvSetVirtualProcessorState(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, WHV_VIRTUAL_PROCESSOR_STATE_TYPE StateType, const VOID *Buffer, UINT32 BufferSizeInBytes);
+HRESULT WINAPI WHvAllocateVpciResource(const GUID *ProviderId, WHV_ALLOCATE_VPCI_RESOURCE_FLAGS Flags, const VOID *ResourceDescriptor, UINT32 ResourceDescriptorSizeInBytes, HANDLE *VpciResource);
+HRESULT WINAPI WHvCreateVpciDevice(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, HANDLE VpciResource, WHV_CREATE_VPCI_DEVICE_FLAGS Flags, HANDLE NotificationEventHandle);
+HRESULT WINAPI WHvDeleteVpciDevice(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId);
+HRESULT WINAPI WHvGetVpciDeviceProperty(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, WHV_VPCI_DEVICE_PROPERTY_CODE PropertyCode, VOID *PropertyBuffer, UINT32 PropertyBufferSizeInBytes, UINT32 *WrittenSizeInBytes);
+HRESULT WINAPI WHvGetVpciDeviceNotification(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, WHV_VPCI_DEVICE_NOTIFICATION *Notification, UINT32 NotificationSizeInBytes);
+HRESULT WINAPI WHvMapVpciDeviceMmioRanges(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, UINT32 *MappingCount, WHV_VPCI_MMIO_MAPPING **Mappings);
+HRESULT WINAPI WHvUnmapVpciDeviceMmioRanges(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId);
+HRESULT WINAPI WHvSetVpciDevicePowerState(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, DEVICE_POWER_STATE PowerState);
+HRESULT WINAPI WHvReadVpciDeviceRegister(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, const WHV_VPCI_DEVICE_REGISTER *Register, VOID *Data);
+HRESULT WINAPI WHvWriteVpciDeviceRegister(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, const WHV_VPCI_DEVICE_REGISTER *Register, const VOID *Data);
+HRESULT WINAPI WHvMapVpciDeviceInterrupt(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, UINT32 Index, UINT32 MessageCount, const WHV_VPCI_INTERRUPT_TARGET *Target, UINT64 *MsiAddress, UINT32 *MsiData);
+HRESULT WINAPI WHvUnmapVpciDeviceInterrupt(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, UINT32 Index);
+HRESULT WINAPI WHvRetargetVpciDeviceInterrupt(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, UINT64 MsiAddress, UINT32 MsiData, const WHV_VPCI_INTERRUPT_TARGET *Target);
+HRESULT WINAPI WHvRequestVpciDeviceInterrupt(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, UINT64 MsiAddress, UINT32 MsiData);
+HRESULT WINAPI WHvGetVpciDeviceInterruptTarget(WHV_PARTITION_HANDLE Partition, UINT64 LogicalDeviceId, UINT32 Index, UINT32 MultiMessageNumber, WHV_VPCI_INTERRUPT_TARGET *Target, UINT32 TargetSizeInBytes, UINT32 *BytesWritten);
+HRESULT WINAPI WHvCreateTrigger(WHV_PARTITION_HANDLE Partition, const WHV_TRIGGER_PARAMETERS *Parameters, WHV_TRIGGER_HANDLE *TriggerHandle, HANDLE *EventHandle);
+HRESULT WINAPI WHvUpdateTriggerParameters(WHV_PARTITION_HANDLE Partition, const WHV_TRIGGER_PARAMETERS *Parameters, WHV_TRIGGER_HANDLE TriggerHandle);
+HRESULT WINAPI WHvDeleteTrigger(WHV_PARTITION_HANDLE Partition, WHV_TRIGGER_HANDLE TriggerHandle);
+HRESULT WINAPI WHvCreateNotificationPort(WHV_PARTITION_HANDLE Partition, const WHV_NOTIFICATION_PORT_PARAMETERS *Parameters, HANDLE EventHandle, WHV_NOTIFICATION_PORT_HANDLE *PortHandle);
+HRESULT WINAPI WHvSetNotificationPortProperty(WHV_PARTITION_HANDLE Partition, WHV_NOTIFICATION_PORT_HANDLE PortHandle, WHV_NOTIFICATION_PORT_PROPERTY_CODE PropertyCode, WHV_NOTIFICATION_PORT_PROPERTY PropertyValue);
+HRESULT WINAPI WHvDeleteNotificationPort(WHV_PARTITION_HANDLE Partition, WHV_NOTIFICATION_PORT_HANDLE PortHandle);
+HRESULT WINAPI WHvPostVirtualProcessorSynicMessage(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, UINT32 SintIndex, const VOID *Message, UINT32 MessageSizeInBytes);
+HRESULT WINAPI WHvGetVirtualProcessorCpuidOutput(WHV_PARTITION_HANDLE Partition, UINT32 VpIndex, UINT32 Eax, UINT32 Ecx, WHV_CPUID_OUTPUT *CpuidOutput);
+HRESULT WINAPI WHvGetInterruptTargetVpSet(WHV_PARTITION_HANDLE Partition, UINT64 Destination, WHV_INTERRUPT_DESTINATION_MODE DestinationMode, UINT32 *TargetVps, UINT32 VpCount, UINT32 *TargetVpCount);
+HRESULT WINAPI WHvStartPartitionMigration(WHV_PARTITION_HANDLE Partition, HANDLE *MigrationHandle);
+HRESULT WHvCancelPartitionMigration(WHV_PARTITION_HANDLE Partition);
+HRESULT WHvCompletePartitionMigration(WHV_PARTITION_HANDLE Partition);
+HRESULT WINAPI WHvAcceptPartitionMigration(HANDLE MigrationHandle, WHV_PARTITION_HANDLE *Partition);
#ifdef __cplusplus
}
diff --git a/lib/libc/include/any-windows-any/winhvplatformdefs.h b/lib/libc/include/any-windows-any/winhvplatformdefs.h
index 2b62e7ee36..ba18cfedc8 100644
--- a/lib/libc/include/any-windows-any/winhvplatformdefs.h
+++ b/lib/libc/include/any-windows-any/winhvplatformdefs.h
@@ -12,13 +12,18 @@ typedef enum WHV_CAPABILITY_CODE {
WHvCapabilityCodeExtendedVmExits = 0x00000002,
WHvCapabilityCodeExceptionExitBitmap = 0x00000003,
WHvCapabilityCodeX64MsrExitBitmap = 0x00000004,
+ WHvCapabilityCodeGpaRangePopulateFlags = 0x00000005,
+ WHvCapabilityCodeSchedulerFeatures = 0x00000006,
WHvCapabilityCodeProcessorVendor = 0x00001000,
WHvCapabilityCodeProcessorFeatures = 0x00001001,
WHvCapabilityCodeProcessorClFlushSize = 0x00001002,
WHvCapabilityCodeProcessorXsaveFeatures = 0x00001003,
WHvCapabilityCodeProcessorClockFrequency = 0x00001004,
WHvCapabilityCodeInterruptClockFrequency = 0x00001005,
- WHvCapabilityCodeProcessorFeaturesBanks = 0x00001006
+ WHvCapabilityCodeProcessorFeaturesBanks = 0x00001006,
+ WHvCapabilityCodeProcessorFrequencyCap = 0x00001007,
+ WHvCapabilityCodeSyntheticProcessorFeaturesBanks = 0x00001008,
+ WHvCapabilityCodeProcessorPerfmonFeatures = 0x00001009
} WHV_CAPABILITY_CODE;
typedef union WHV_CAPABILITY_FEATURES {
@@ -30,7 +35,10 @@ typedef union WHV_CAPABILITY_FEATURES {
UINT64 SpeculationControl : 1;
UINT64 ApicRemoteRead : 1;
UINT64 IdleSuspend : 1;
- UINT64 Reserved : 57;
+ UINT64 VirtualPciDeviceSupport : 1;
+ UINT64 IommuSupport : 1;
+ UINT64 VpHotAddRemove : 1;
+ UINT64 Reserved : 54;
};
UINT64 AsUINT64;
} WHV_CAPABILITY_FEATURES;
@@ -46,7 +54,15 @@ typedef union WHV_EXTENDED_VM_EXITS {
UINT64 X64ApicSmiExitTrap : 1;
UINT64 HypercallExit : 1;
UINT64 X64ApicInitSipiExitTrap : 1;
- UINT64 Reserved : 57;
+ UINT64 X64ApicWriteLint0ExitTrap : 1;
+ UINT64 X64ApicWriteLint1ExitTrap : 1;
+ UINT64 X64ApicWriteSvrExitTrap : 1;
+ UINT64 UnknownSynicConnection : 1;
+ UINT64 RetargetUnknownVpciDevice : 1;
+ UINT64 X64ApicWriteLdrExitTrap : 1;
+ UINT64 X64ApicWriteDfrExitTrap : 1;
+ UINT64 GpaAccessFaultExit : 1;
+ UINT64 Reserved : 49;
};
UINT64 AsUINT64;
} WHV_EXTENDED_VM_EXITS;
@@ -121,7 +137,9 @@ typedef union WHV_PROCESSOR_FEATURES {
UINT64 UmipSupport : 1;
UINT64 MdsNoSupport : 1;
UINT64 MdClearSupport : 1;
- UINT64 Reserved6 : 3;
+ UINT64 TaaNoSupport : 1;
+ UINT64 TsxCtrlSupport : 1;
+ UINT64 Reserved6 : 1;
};
UINT64 AsUINT64;
} WHV_PROCESSOR_FEATURES;
@@ -130,9 +148,28 @@ C_ASSERT(sizeof(WHV_PROCESSOR_FEATURES) == sizeof(UINT64));
typedef union WHV_PROCESSOR_FEATURES1 {
__C89_NAMELESS struct {
- UINT64 Reserved1 : 2;
+ UINT64 ACountMCountSupport : 1;
+ UINT64 TscInvariantSupport : 1;
UINT64 ClZeroSupport : 1;
- UINT64 Reserved2 : 61;
+ UINT64 RdpruSupport : 1;
+ UINT64 Reserved2 : 2;
+ UINT64 NestedVirtSupport : 1;
+ UINT64 PsfdSupport: 1;
+ UINT64 CetSsSupport : 1;
+ UINT64 CetIbtSupport : 1;
+ UINT64 VmxExceptionInjectSupport : 1;
+ UINT64 Reserved4 : 1;
+ UINT64 UmwaitTpauseSupport : 1;
+ UINT64 MovdiriSupport : 1;
+ UINT64 Movdir64bSupport : 1;
+ UINT64 CldemoteSupport : 1;
+ UINT64 SerializeSupport : 1;
+ UINT64 TscDeadlineTmrSupport : 1;
+ UINT64 TscAdjustSupport : 1;
+ UINT64 FZLRepMovsb : 1;
+ UINT64 FSRepStosb : 1;
+ UINT64 FSRepCmpsb : 1;
+ UINT64 Reserved5 : 42;
};
UINT64 AsUINT64;
} WHV_PROCESSOR_FEATURES1;
@@ -155,6 +192,78 @@ typedef struct WHV_PROCESSOR_FEATURES_BANKS {
C_ASSERT(sizeof(WHV_PROCESSOR_FEATURES_BANKS) == sizeof(UINT64) * (WHV_PROCESSOR_FEATURES_BANKS_COUNT + 1));
+typedef union WHV_SYNTHETIC_PROCESSOR_FEATURES {
+ __C89_NAMELESS struct {
+ UINT64 HypervisorPresent:1;
+ UINT64 Hv1:1;
+ UINT64 AccessVpRunTimeReg:1;
+ UINT64 AccessPartitionReferenceCounter:1;
+ UINT64 AccessSynicRegs:1;
+ UINT64 AccessSyntheticTimerRegs:1;
+#ifdef __x86_64__
+ UINT64 AccessIntrCtrlRegs:1;
+#else
+ UINT64 ReservedZ6:1;
+#endif
+ UINT64 AccessHypercallRegs:1;
+ UINT64 AccessVpIndex:1;
+ UINT64 AccessPartitionReferenceTsc:1;
+#ifdef __x86_64__
+ UINT64 AccessGuestIdleReg:1;
+ UINT64 AccessFrequencyRegs:1;
+#else
+ UINT64 ReservedZ10:1;
+ UINT64 ReservedZ11:1;
+#endif
+ UINT64 ReservedZ12:1;
+ UINT64 ReservedZ13:1;
+ UINT64 ReservedZ14:1;
+#ifdef __x86_64__
+ UINT64 EnableExtendedGvaRangesForFlushVirtualAddressList:1;
+#else
+ UINT64 ReservedZ15:1;
+#endif
+ UINT64 ReservedZ16:1;
+ UINT64 ReservedZ17:1;
+ UINT64 FastHypercallOutput:1;
+ UINT64 ReservedZ19:1;
+ UINT64 ReservedZ20:1;
+ UINT64 ReservedZ21:1;
+ UINT64 DirectSyntheticTimers:1;
+ UINT64 ReservedZ23:1;
+ UINT64 ExtendedProcessorMasks:1;
+#ifdef __x86_64__
+ UINT64 TbFlushHypercalls:1;
+#else
+ UINT64 ReservedZ25:1;
+#endif
+ UINT64 SyntheticClusterIpi:1;
+ UINT64 NotifyLongSpinWait:1;
+ UINT64 QueryNumaDistance:1;
+ UINT64 SignalEvents:1;
+ UINT64 RetargetDeviceInterrupt:1;
+ UINT64 Reserved:33;
+ };
+ UINT64 AsUINT64;
+} WHV_SYNTHETIC_PROCESSOR_FEATURES;
+
+C_ASSERT(sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES) == 8);
+
+#define WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT 1
+
+typedef struct WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS {
+ UINT32 BanksCount;
+ UINT32 Reserved0;
+ __C89_NAMELESS union {
+ __C89_NAMELESS struct {
+ WHV_SYNTHETIC_PROCESSOR_FEATURES Bank0;
+ };
+ UINT64 AsUINT64[WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS_COUNT];
+ };
+} WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS;
+
+C_ASSERT(sizeof(WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS) == 16);
+
typedef union _WHV_PROCESSOR_XSAVE_FEATURES {
__C89_NAMELESS struct {
UINT64 XsaveSupport : 1;
@@ -182,13 +291,30 @@ typedef union _WHV_PROCESSOR_XSAVE_FEATURES {
UINT64 VpclmulqdqSupport : 1;
UINT64 Avx512Bf16Support : 1;
UINT64 Avx512Vp2IntersectSupport : 1;
- UINT64 Reserved : 39;
+ UINT64 Avx512Fp16Support : 1;
+ UINT64 XfdSupport : 1;
+ UINT64 AmxTileSupport : 1;
+ UINT64 AmxBf16Support : 1;
+ UINT64 AmxInt8Support : 1;
+ UINT64 AvxVnniSupport : 1;
+ UINT64 Reserved : 33;
};
UINT64 AsUINT64;
} WHV_PROCESSOR_XSAVE_FEATURES, *PWHV_PROCESSOR_XSAVE_FEATURES;
C_ASSERT(sizeof(WHV_PROCESSOR_XSAVE_FEATURES) == sizeof(UINT64));
+typedef union WHV_PROCESSOR_PERFMON_FEATURES {
+ __C89_NAMELESS struct {
+ UINT64 PmuSupport : 1;
+ UINT64 LbrSupport : 1;
+ UINT64 Reserved : 62;
+ };
+ UINT64 AsUINT64;
+} WHV_PROCESSOR_PERFMON_FEATURES, *PWHV_PROCESSOR_PERFMON_FEATURES;
+
+C_ASSERT(sizeof(WHV_PROCESSOR_PERFMON_FEATURES) == 8);
+
typedef union WHV_X64_MSR_EXIT_BITMAP {
UINT64 AsUINT64;
__C89_NAMELESS struct {
@@ -196,18 +322,77 @@ typedef union WHV_X64_MSR_EXIT_BITMAP {
UINT64 TscMsrWrite : 1;
UINT64 TscMsrRead : 1;
UINT64 ApicBaseMsrWrite : 1;
- UINT64 Reserved : 60;
+ UINT64 MiscEnableMsrRead:1;
+ UINT64 McUpdatePatchLevelMsrRead:1;
+ UINT64 Reserved:58;
};
} WHV_X64_MSR_EXIT_BITMAP;
C_ASSERT(sizeof(WHV_X64_MSR_EXIT_BITMAP) == sizeof(UINT64));
+typedef struct WHV_MEMORY_RANGE_ENTRY {
+ UINT64 GuestAddress;
+ UINT64 SizeInBytes;
+} WHV_MEMORY_RANGE_ENTRY;
+
+C_ASSERT(sizeof(WHV_MEMORY_RANGE_ENTRY) == 16);
+
+typedef union WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS {
+ UINT32 AsUINT32;
+ __C89_NAMELESS struct {
+ UINT32 Prefetch:1;
+ UINT32 AvoidHardFaults:1;
+ UINT32 Reserved:30;
+ };
+} WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS;
+
+C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS) == 4);
+
+typedef enum WHV_MEMORY_ACCESS_TYPE {
+ WHvMemoryAccessRead = 0,
+ WHvMemoryAccessWrite = 1,
+ WHvMemoryAccessExecute = 2
+} WHV_MEMORY_ACCESS_TYPE;
+
+typedef struct WHV_ADVISE_GPA_RANGE_POPULATE {
+ WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS Flags;
+ WHV_MEMORY_ACCESS_TYPE AccessType;
+} WHV_ADVISE_GPA_RANGE_POPULATE;
+
+C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE_POPULATE) == 8);
+
+typedef struct WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP {
+ UINT32 IsSupported:1;
+ UINT32 Reserved:31;
+ UINT32 HighestFrequencyMhz;
+ UINT32 NominalFrequencyMhz;
+ UINT32 LowestFrequencyMhz;
+ UINT32 FrequencyStepMhz;
+} WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP;
+
+C_ASSERT(sizeof(WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP) == 20);
+
+typedef union WHV_SCHEDULER_FEATURES {
+ __C89_NAMELESS struct {
+ UINT64 CpuReserve: 1;
+ UINT64 CpuCap: 1;
+ UINT64 CpuWeight: 1;
+ UINT64 CpuGroupId: 1;
+ UINT64 DisableSmt: 1;
+ UINT64 Reserved: 59;
+ };
+ UINT64 AsUINT64;
+} WHV_SCHEDULER_FEATURES;
+
+C_ASSERT(sizeof(WHV_SCHEDULER_FEATURES) == 8);
+
typedef union WHV_CAPABILITY {
WINBOOL HypervisorPresent;
WHV_CAPABILITY_FEATURES Features;
WHV_EXTENDED_VM_EXITS ExtendedVmExits;
WHV_PROCESSOR_VENDOR ProcessorVendor;
WHV_PROCESSOR_FEATURES ProcessorFeatures;
+ WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS SyntheticProcessorFeaturesBanks;
WHV_PROCESSOR_XSAVE_FEATURES ProcessorXsaveFeatures;
UINT8 ProcessorClFlushSize;
UINT64 ExceptionExitBitmap;
@@ -215,6 +400,10 @@ typedef union WHV_CAPABILITY {
UINT64 ProcessorClockFrequency;
UINT64 InterruptClockFrequency;
WHV_PROCESSOR_FEATURES_BANKS ProcessorFeaturesBanks;
+ WHV_ADVISE_GPA_RANGE_POPULATE_FLAGS GpaRangePopulateFlags;
+ WHV_CAPABILITY_PROCESSOR_FREQUENCY_CAP ProcessorFrequencyCap;
+ WHV_PROCESSOR_PERFMON_FEATURES ProcessorPerfmonFeatures;
+ WHV_SCHEDULER_FEATURES SchedulerFeatures;
} WHV_CAPABILITY;
typedef VOID* WHV_PARTITION_HANDLE;
@@ -225,6 +414,14 @@ typedef enum WHV_PARTITION_PROPERTY_CODE {
WHvPartitionPropertyCodeSeparateSecurityDomain = 0x00000003,
WHvPartitionPropertyCodeNestedVirtualization = 0x00000004,
WHvPartitionPropertyCodeX64MsrExitBitmap = 0x00000005,
+ WHvPartitionPropertyCodePrimaryNumaNode = 0x00000006,
+ WHvPartitionPropertyCodeCpuReserve = 0x00000007,
+ WHvPartitionPropertyCodeCpuCap = 0x00000008,
+ WHvPartitionPropertyCodeCpuWeight = 0x00000009,
+ WHvPartitionPropertyCodeCpuGroupId = 0x0000000A,
+ WHvPartitionPropertyCodeProcessorFrequencyCap = 0x0000000B,
+ WHvPartitionPropertyCodeAllowDeviceAssignment = 0x0000000C,
+ WHvPartitionPropertyCodeDisableSmt = 0x0000000D,
WHvPartitionPropertyCodeProcessorFeatures = 0x00001001,
WHvPartitionPropertyCodeProcessorClFlushSize = 0x00001002,
WHvPartitionPropertyCodeCpuidExitList = 0x00001003,
@@ -236,6 +433,11 @@ typedef enum WHV_PARTITION_PROPERTY_CODE {
WHvPartitionPropertyCodeApicRemoteReadSupport = 0x00001009,
WHvPartitionPropertyCodeProcessorFeaturesBanks = 0x0000100A,
WHvPartitionPropertyCodeReferenceTime = 0x0000100B,
+ WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks = 0x0000100C,
+ WHvPartitionPropertyCodeCpuidResultList2 = 0x0000100D,
+ WHvPartitionPropertyCodeProcessorPerfmonFeatures = 0x0000100E,
+ WHvPartitionPropertyCodeMsrActionList = 0x0000100F,
+ WHvPartitionPropertyCodeUnimplementedMsrAction = 0x00001010,
WHvPartitionPropertyCodeProcessorCount = 0x00001fff
} WHV_PARTITION_PROPERTY_CODE;
@@ -248,6 +450,50 @@ typedef struct WHV_X64_CPUID_RESULT {
UINT32 Edx;
} WHV_X64_CPUID_RESULT;
+C_ASSERT(sizeof(WHV_X64_CPUID_RESULT) == 32);
+
+typedef enum WHV_X64_CPUID_RESULT2_FLAGS {
+ WHvX64CpuidResult2FlagSubleafSpecific = 0x00000001,
+ WHvX64CpuidResult2FlagVpSpecific = 0x00000002
+} WHV_X64_CPUID_RESULT2_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(WHV_X64_CPUID_RESULT2_FLAGS);
+
+typedef struct WHV_CPUID_OUTPUT {
+ UINT32 Eax;
+ UINT32 Ebx;
+ UINT32 Ecx;
+ UINT32 Edx;
+} WHV_CPUID_OUTPUT;
+
+C_ASSERT(sizeof(WHV_CPUID_OUTPUT) == 16);
+
+typedef struct WHV_X64_CPUID_RESULT2 {
+ UINT32 Function;
+ UINT32 Index;
+ UINT32 VpIndex;
+ WHV_X64_CPUID_RESULT2_FLAGS Flags;
+ WHV_CPUID_OUTPUT Output;
+ WHV_CPUID_OUTPUT Mask;
+} WHV_X64_CPUID_RESULT2;
+
+C_ASSERT(sizeof(WHV_X64_CPUID_RESULT2) == 48);
+
+typedef struct WHV_MSR_ACTION_ENTRY {
+ UINT32 Index;
+ UINT8 ReadAction;
+ UINT8 WriteAction;
+ UINT16 Reserved;
+} WHV_MSR_ACTION_ENTRY;
+
+C_ASSERT(sizeof(WHV_MSR_ACTION_ENTRY) == 8);
+
+typedef enum WHV_MSR_ACTION {
+ WHvMsrActionArchitectureDefault = 0,
+ WHvMsrActionIgnoreWriteReadZero = 1,
+ WHvMsrActionExit = 2
+} WHV_MSR_ACTION;
+
typedef enum WHV_EXCEPTION_TYPE {
WHvX64ExceptionTypeDivideErrorFault = 0x0,
WHvX64ExceptionTypeDebugTrapOrFault = 0x1,
@@ -277,11 +523,15 @@ typedef enum WHV_X64_LOCAL_APIC_EMULATION_MODE {
typedef union WHV_PARTITION_PROPERTY {
WHV_EXTENDED_VM_EXITS ExtendedVmExits;
WHV_PROCESSOR_FEATURES ProcessorFeatures;
+ WHV_SYNTHETIC_PROCESSOR_FEATURES_BANKS SyntheticProcessorFeaturesBanks;
WHV_PROCESSOR_XSAVE_FEATURES ProcessorXsaveFeatures;
UINT8 ProcessorClFlushSize;
UINT32 ProcessorCount;
UINT32 CpuidExitList[1];
WHV_X64_CPUID_RESULT CpuidResultList[1];
+ WHV_X64_CPUID_RESULT2 CpuidResultList2[1];
+ WHV_MSR_ACTION_ENTRY MsrActionList[1];
+ WHV_MSR_ACTION UnimplementedMsrAction;
UINT64 ExceptionExitBitmap;
WHV_X64_LOCAL_APIC_EMULATION_MODE LocalApicEmulationMode;
WINBOOL SeparateSecurityDomain;
@@ -292,6 +542,15 @@ typedef union WHV_PARTITION_PROPERTY {
WINBOOL ApicRemoteRead;
WHV_PROCESSOR_FEATURES_BANKS ProcessorFeaturesBanks;
UINT64 ReferenceTime;
+ USHORT PrimaryNumaNode;
+ UINT32 CpuReserve;
+ UINT32 CpuCap;
+ UINT32 CpuWeight;
+ UINT64 CpuGroupId;
+ UINT32 ProcessorFrequencyCap;
+ WINBOOL AllowDeviceAssignment;
+ WHV_PROCESSOR_PERFMON_FEATURES ProcessorPerfmonFeatures;
+ WINBOOL DisableSmt;
} WHV_PARTITION_PROPERTY;
typedef UINT64 WHV_GUEST_PHYSICAL_ADDRESS;
@@ -313,7 +572,9 @@ typedef enum WHV_TRANSLATE_GVA_FLAGS {
WHvTranslateGvaFlagValidateWrite = 0x00000002,
WHvTranslateGvaFlagValidateExecute = 0x00000004,
WHvTranslateGvaFlagPrivilegeExempt = 0x00000008,
- WHvTranslateGvaFlagSetPageTableBits = 0x00000010
+ WHvTranslateGvaFlagSetPageTableBits = 0x00000010,
+ WHvTranslateGvaFlagEnforceSmap = 0x00000100,
+ WHvTranslateGvaFlagOverrideSmap = 0x00000200
} WHV_TRANSLATE_GVA_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS(WHV_TRANSLATE_GVA_FLAGS);
@@ -335,6 +596,36 @@ typedef struct WHV_TRANSLATE_GVA_RESULT {
UINT32 Reserved;
} WHV_TRANSLATE_GVA_RESULT;
+C_ASSERT(sizeof(WHV_TRANSLATE_GVA_RESULT) == 8);
+
+typedef union WHV_ADVISE_GPA_RANGE {
+ WHV_ADVISE_GPA_RANGE_POPULATE Populate;
+} WHV_ADVISE_GPA_RANGE;
+
+C_ASSERT(sizeof(WHV_ADVISE_GPA_RANGE) == 8);
+
+typedef enum WHV_CACHE_TYPE {
+ WHvCacheTypeUncached = 0,
+ WHvCacheTypeWriteCombining = 1,
+ WHvCacheTypeWriteThrough = 4,
+#ifdef __x86_64__
+ WHvCacheTypeWriteProtected = 5,
+#endif
+ WHvCacheTypeWriteBack = 6
+} WHV_CACHE_TYPE;
+
+typedef union WHV_ACCESS_GPA_CONTROLS {
+ UINT64 AsUINT64;
+ __C89_NAMELESS struct {
+ WHV_CACHE_TYPE CacheType;
+ UINT32 Reserved;
+ };
+} WHV_ACCESS_GPA_CONTROLS;
+
+C_ASSERT(sizeof(WHV_ACCESS_GPA_CONTROLS) == 8);
+
+#define WHV_READ_WRITE_GPA_RANGE_MAX_SIZE 16
+
typedef enum WHV_REGISTER_NAME {
WHvX64RegisterRax = 0x00000000,
WHvX64RegisterRcx = 0x00000001,
@@ -376,6 +667,10 @@ typedef enum WHV_REGISTER_NAME {
WHvX64RegisterDr6 = 0x00000025,
WHvX64RegisterDr7 = 0x00000026,
WHvX64RegisterXCr0 = 0x00000027,
+ WHvX64RegisterVirtualCr0 = 0x00000028,
+ WHvX64RegisterVirtualCr3 = 0x00000029,
+ WHvX64RegisterVirtualCr4 = 0x0000002A,
+ WHvX64RegisterVirtualCr8 = 0x0000002B,
WHvX64RegisterXmm0 = 0x00001000,
WHvX64RegisterXmm1 = 0x00001001,
WHvX64RegisterXmm2 = 0x00001002,
@@ -461,11 +756,97 @@ typedef enum WHV_REGISTER_NAME {
WHvX64RegisterMsrMtrrFix4kF0000 = 0x00002079,
WHvX64RegisterMsrMtrrFix4kF8000 = 0x0000207A,
WHvX64RegisterTscAux = 0x0000207B,
+ WHvX64RegisterBndcfgs = 0x0000207C,
+ WHvX64RegisterMCount = 0x0000207E,
+ WHvX64RegisterACount = 0x0000207F,
WHvX64RegisterSpecCtrl = 0x00002084,
WHvX64RegisterPredCmd = 0x00002085,
WHvX64RegisterTscVirtualOffset = 0x00002087,
+ WHvX64RegisterTsxCtrl = 0x00002088,
+ WHvX64RegisterXss = 0x0000208B,
+ WHvX64RegisterUCet = 0x0000208C,
+ WHvX64RegisterSCet = 0x0000208D,
+ WHvX64RegisterSsp = 0x0000208E,
+ WHvX64RegisterPl0Ssp = 0x0000208F,
+ WHvX64RegisterPl1Ssp = 0x00002090,
+ WHvX64RegisterPl2Ssp = 0x00002091,
+ WHvX64RegisterPl3Ssp = 0x00002092,
+ WHvX64RegisterInterruptSspTableAddr = 0x00002093,
+ WHvX64RegisterTscDeadline = 0x00002095,
+ WHvX64RegisterTscAdjust = 0x00002096,
+ WHvX64RegisterUmwaitControl = 0x00002098,
+ WHvX64RegisterXfd = 0x00002099,
+ WHvX64RegisterXfdErr = 0x0000209A,
WHvX64RegisterApicId = 0x00003002,
WHvX64RegisterApicVersion = 0x00003003,
+ WHvX64RegisterApicTpr = 0x00003008,
+ WHvX64RegisterApicPpr = 0x0000300A,
+ WHvX64RegisterApicEoi = 0x0000300B,
+ WHvX64RegisterApicLdr = 0x0000300D,
+ WHvX64RegisterApicSpurious = 0x0000300F,
+ WHvX64RegisterApicIsr0 = 0x00003010,
+ WHvX64RegisterApicIsr1 = 0x00003011,
+ WHvX64RegisterApicIsr2 = 0x00003012,
+ WHvX64RegisterApicIsr3 = 0x00003013,
+ WHvX64RegisterApicIsr4 = 0x00003014,
+ WHvX64RegisterApicIsr5 = 0x00003015,
+ WHvX64RegisterApicIsr6 = 0x00003016,
+ WHvX64RegisterApicIsr7 = 0x00003017,
+ WHvX64RegisterApicTmr0 = 0x00003018,
+ WHvX64RegisterApicTmr1 = 0x00003019,
+ WHvX64RegisterApicTmr2 = 0x0000301A,
+ WHvX64RegisterApicTmr3 = 0x0000301B,
+ WHvX64RegisterApicTmr4 = 0x0000301C,
+ WHvX64RegisterApicTmr5 = 0x0000301D,
+ WHvX64RegisterApicTmr6 = 0x0000301E,
+ WHvX64RegisterApicTmr7 = 0x0000301F,
+ WHvX64RegisterApicIrr0 = 0x00003020,
+ WHvX64RegisterApicIrr1 = 0x00003021,
+ WHvX64RegisterApicIrr2 = 0x00003022,
+ WHvX64RegisterApicIrr3 = 0x00003023,
+ WHvX64RegisterApicIrr4 = 0x00003024,
+ WHvX64RegisterApicIrr5 = 0x00003025,
+ WHvX64RegisterApicIrr6 = 0x00003026,
+ WHvX64RegisterApicIrr7 = 0x00003027,
+ WHvX64RegisterApicEse = 0x00003028,
+ WHvX64RegisterApicIcr = 0x00003030,
+ WHvX64RegisterApicLvtTimer = 0x00003032,
+ WHvX64RegisterApicLvtThermal = 0x00003033,
+ WHvX64RegisterApicLvtPerfmon = 0x00003034,
+ WHvX64RegisterApicLvtLint0 = 0x00003035,
+ WHvX64RegisterApicLvtLint1 = 0x00003036,
+ WHvX64RegisterApicLvtError = 0x00003037,
+ WHvX64RegisterApicInitCount = 0x00003038,
+ WHvX64RegisterApicCurrentCount = 0x00003039,
+ WHvX64RegisterApicDivide = 0x0000303E,
+ WHvX64RegisterApicSelfIpi = 0x0000303F,
+ WHvRegisterSint0 = 0x00004000,
+ WHvRegisterSint1 = 0x00004001,
+ WHvRegisterSint2 = 0x00004002,
+ WHvRegisterSint3 = 0x00004003,
+ WHvRegisterSint4 = 0x00004004,
+ WHvRegisterSint5 = 0x00004005,
+ WHvRegisterSint6 = 0x00004006,
+ WHvRegisterSint7 = 0x00004007,
+ WHvRegisterSint8 = 0x00004008,
+ WHvRegisterSint9 = 0x00004009,
+ WHvRegisterSint10 = 0x0000400A,
+ WHvRegisterSint11 = 0x0000400B,
+ WHvRegisterSint12 = 0x0000400C,
+ WHvRegisterSint13 = 0x0000400D,
+ WHvRegisterSint14 = 0x0000400E,
+ WHvRegisterSint15 = 0x0000400F,
+ WHvRegisterScontrol = 0x00004010,
+ WHvRegisterSversion = 0x00004011,
+ WHvRegisterSiefp = 0x00004012,
+ WHvRegisterSimp = 0x00004013,
+ WHvRegisterEom = 0x00004014,
+ WHvRegisterVpRuntime = 0x00005000,
+ WHvX64RegisterHypercall = 0x00005001,
+ WHvRegisterGuestOsId = 0x00005002,
+ WHvRegisterVpAssistPage = 0x00005013,
+ WHvRegisterReferenceTsc = 0x00005017,
+ WHvRegisterReferenceTscSequence = 0x0000501A,
WHvRegisterPendingInterruption = 0x80000000,
WHvRegisterInterruptState = 0x80000001,
WHvRegisterPendingEvent = 0x80000002,
@@ -482,6 +863,8 @@ typedef union DECLSPEC_ALIGN(16) WHV_UINT128 {
UINT32 Dword[4];
} WHV_UINT128;
+C_ASSERT(sizeof(WHV_UINT128) == 16);
+
typedef union WHV_X64_FP_REGISTER {
__C89_NAMELESS struct {
UINT64 Mantissa;
@@ -492,6 +875,8 @@ typedef union WHV_X64_FP_REGISTER {
WHV_UINT128 AsUINT128;
} WHV_X64_FP_REGISTER;
+C_ASSERT(sizeof(WHV_X64_FP_REGISTER) == 16);
+
typedef union WHV_X64_FP_CONTROL_STATUS_REGISTER {
__C89_NAMELESS struct {
UINT16 FpControl;
@@ -511,6 +896,8 @@ typedef union WHV_X64_FP_CONTROL_STATUS_REGISTER {
WHV_UINT128 AsUINT128;
} WHV_X64_FP_CONTROL_STATUS_REGISTER;
+C_ASSERT(sizeof(WHV_X64_FP_CONTROL_STATUS_REGISTER) == 16);
+
typedef union WHV_X64_XMM_CONTROL_STATUS_REGISTER {
__C89_NAMELESS struct {
__C89_NAMELESS union {
@@ -527,6 +914,8 @@ typedef union WHV_X64_XMM_CONTROL_STATUS_REGISTER {
WHV_UINT128 AsUINT128;
} WHV_X64_XMM_CONTROL_STATUS_REGISTER;
+C_ASSERT(sizeof(WHV_X64_FP_CONTROL_STATUS_REGISTER) == 16);
+
typedef struct WHV_X64_SEGMENT_REGISTER {
UINT64 Base;
UINT32 Limit;
@@ -547,12 +936,16 @@ typedef struct WHV_X64_SEGMENT_REGISTER {
};
} WHV_X64_SEGMENT_REGISTER;
+C_ASSERT(sizeof(WHV_X64_SEGMENT_REGISTER) == 16);
+
typedef struct WHV_X64_TABLE_REGISTER {
UINT16 Pad[3];
UINT16 Limit;
UINT64 Base;
} WHV_X64_TABLE_REGISTER;
+C_ASSERT(sizeof(WHV_X64_TABLE_REGISTER) == 16);
+
typedef union WHV_X64_INTERRUPT_STATE_REGISTER {
__C89_NAMELESS struct {
UINT64 InterruptShadow:1;
@@ -562,6 +955,8 @@ typedef union WHV_X64_INTERRUPT_STATE_REGISTER {
UINT64 AsUINT64;
} WHV_X64_INTERRUPT_STATE_REGISTER;
+C_ASSERT(sizeof(WHV_X64_INTERRUPT_STATE_REGISTER) == 8);
+
typedef union WHV_X64_PENDING_INTERRUPTION_REGISTER {
__C89_NAMELESS struct {
UINT32 InterruptionPending:1;
@@ -590,7 +985,6 @@ typedef union WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER {
C_ASSERT(sizeof(WHV_X64_DELIVERABILITY_NOTIFICATIONS_REGISTER) == sizeof(UINT64));
-
typedef enum WHV_X64_PENDING_EVENT_TYPE {
WHvX64PendingEventException = 0,
WHvX64PendingEventExtInt = 5
@@ -652,6 +1046,14 @@ typedef union WHV_X64_PENDING_DEBUG_EXCEPTION {
C_ASSERT(sizeof(WHV_X64_PENDING_DEBUG_EXCEPTION) == sizeof(UINT64));
+typedef struct WHV_SYNIC_SINT_DELIVERABLE_CONTEXT {
+ UINT16 DeliverableSints;
+ UINT16 Reserved1;
+ UINT32 Reserved2;
+} WHV_SYNIC_SINT_DELIVERABLE_CONTEXT;
+
+C_ASSERT(sizeof(WHV_SYNIC_SINT_DELIVERABLE_CONTEXT) == 8);
+
typedef union WHV_REGISTER_VALUE {
WHV_UINT128 Reg128;
UINT64 Reg64;
@@ -672,6 +1074,8 @@ typedef union WHV_REGISTER_VALUE {
WHV_X64_PENDING_DEBUG_EXCEPTION PendingDebugException;
} WHV_REGISTER_VALUE;
+C_ASSERT(sizeof(WHV_REGISTER_VALUE) == 16);
+
typedef enum WHV_RUN_VP_EXIT_REASON {
WHvRunVpExitReasonNone = 0x00000000,
WHvRunVpExitReasonMemoryAccess = 0x00000001,
@@ -682,6 +1086,7 @@ typedef enum WHV_RUN_VP_EXIT_REASON {
WHvRunVpExitReasonX64InterruptWindow = 0x00000007,
WHvRunVpExitReasonX64Halt = 0x00000008,
WHvRunVpExitReasonX64ApicEoi = 0x00000009,
+ WHvRunVpExitReasonSynicSintDeliverable = 0x0000000A,
WHvRunVpExitReasonX64MsrAccess = 0x00001000,
WHvRunVpExitReasonX64Cpuid = 0x00001001,
WHvRunVpExitReasonException = 0x00001002,
@@ -689,6 +1094,7 @@ typedef enum WHV_RUN_VP_EXIT_REASON {
WHvRunVpExitReasonX64ApicSmiTrap = 0x00001004,
WHvRunVpExitReasonHypercall = 0x00001005,
WHvRunVpExitReasonX64ApicInitSipiTrap = 0x00001006,
+ WHvRunVpExitReasonX64ApicWriteTrap = 0x00001007,
WHvRunVpExitReasonCanceled = 0x00002001
} WHV_RUN_VP_EXIT_REASON;
@@ -720,11 +1126,7 @@ typedef struct WHV_VP_EXIT_CONTEXT {
UINT64 Rflags;
} WHV_VP_EXIT_CONTEXT;
-typedef enum WHV_MEMORY_ACCESS_TYPE {
- WHvMemoryAccessRead = 0,
- WHvMemoryAccessWrite = 1,
- WHvMemoryAccessExecute = 2
-} WHV_MEMORY_ACCESS_TYPE;
+C_ASSERT(sizeof(WHV_VP_EXIT_CONTEXT) == 40);
typedef union WHV_MEMORY_ACCESS_INFO {
__C89_NAMELESS struct {
@@ -736,6 +1138,8 @@ typedef union WHV_MEMORY_ACCESS_INFO {
UINT32 AsUINT32;
} WHV_MEMORY_ACCESS_INFO;
+C_ASSERT(sizeof(WHV_MEMORY_ACCESS_INFO) == 4);
+
typedef struct WHV_MEMORY_ACCESS_CONTEXT {
UINT8 InstructionByteCount;
UINT8 Reserved[3];
@@ -745,6 +1149,8 @@ typedef struct WHV_MEMORY_ACCESS_CONTEXT {
WHV_GUEST_VIRTUAL_ADDRESS Gva;
} WHV_MEMORY_ACCESS_CONTEXT;
+C_ASSERT(sizeof(WHV_MEMORY_ACCESS_CONTEXT) == 40);
+
typedef union WHV_X64_IO_PORT_ACCESS_INFO {
__C89_NAMELESS struct {
UINT32 IsWrite : 1;
@@ -773,6 +1179,8 @@ typedef struct WHV_X64_IO_PORT_ACCESS_CONTEXT {
WHV_X64_SEGMENT_REGISTER Es;
} WHV_X64_IO_PORT_ACCESS_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_IO_PORT_ACCESS_CONTEXT) == 96);
+
typedef union WHV_X64_MSR_ACCESS_INFO {
__C89_NAMELESS struct {
UINT32 IsWrite : 1;
@@ -790,6 +1198,8 @@ typedef struct WHV_X64_MSR_ACCESS_CONTEXT {
UINT64 Rdx;
} WHV_X64_MSR_ACCESS_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_MSR_ACCESS_CONTEXT) == 24);
+
typedef struct WHV_X64_CPUID_ACCESS_CONTEXT {
UINT64 Rax;
UINT64 Rcx;
@@ -801,6 +1211,8 @@ typedef struct WHV_X64_CPUID_ACCESS_CONTEXT {
UINT64 DefaultResultRbx;
} WHV_X64_CPUID_ACCESS_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_CPUID_ACCESS_CONTEXT) == 64);
+
typedef union WHV_VP_EXCEPTION_INFO {
__C89_NAMELESS struct {
UINT32 ErrorCodeValid : 1;
@@ -823,6 +1235,8 @@ typedef struct WHV_VP_EXCEPTION_CONTEXT {
UINT64 ExceptionParameter;
} WHV_VP_EXCEPTION_CONTEXT;
+C_ASSERT(sizeof(WHV_VP_EXCEPTION_CONTEXT) == 40);
+
typedef enum WHV_X64_UNSUPPORTED_FEATURE_CODE {
WHvUnsupportedFeatureIntercept = 1,
WHvUnsupportedFeatureTaskSwitchTss = 2
@@ -834,6 +1248,8 @@ typedef struct WHV_X64_UNSUPPORTED_FEATURE_CONTEXT {
UINT64 FeatureParameter;
} WHV_X64_UNSUPPORTED_FEATURE_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_UNSUPPORTED_FEATURE_CONTEXT) == 16);
+
typedef enum WHV_RUN_VP_CANCEL_REASON {
WhvRunVpCancelReasonUser = 0
} WHV_RUN_VP_CANCEL_REASON;
@@ -842,6 +1258,8 @@ typedef struct WHV_RUN_VP_CANCELED_CONTEXT {
WHV_RUN_VP_CANCEL_REASON CancelReason;
} WHV_RUN_VP_CANCELED_CONTEXT;
+C_ASSERT(sizeof(WHV_RUN_VP_CANCELED_CONTEXT) == 4);
+
typedef enum WHV_X64_PENDING_INTERRUPTION_TYPE {
WHvX64PendingInterrupt = 0,
WHvX64PendingNmi = 2,
@@ -852,10 +1270,14 @@ typedef struct WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT {
WHV_X64_PENDING_INTERRUPTION_TYPE DeliverableType;
} WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT, *PWHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_INTERRUPTION_DELIVERABLE_CONTEXT) == 4);
+
typedef struct WHV_X64_APIC_EOI_CONTEXT {
UINT32 InterruptVector;
} WHV_X64_APIC_EOI_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_APIC_EOI_CONTEXT) == 4);
+
typedef union WHV_X64_RDTSC_INFO {
__C89_NAMELESS struct {
UINT64 IsRdtscp : 1;
@@ -864,6 +1286,8 @@ typedef union WHV_X64_RDTSC_INFO {
UINT64 AsUINT64;
} WHV_X64_RDTSC_INFO;
+C_ASSERT(sizeof(WHV_X64_RDTSC_INFO) == 8);
+
typedef struct WHV_X64_RDTSC_CONTEXT {
UINT64 TscAux;
UINT64 VirtualOffset;
@@ -872,10 +1296,14 @@ typedef struct WHV_X64_RDTSC_CONTEXT {
WHV_X64_RDTSC_INFO RdtscInfo;
} WHV_X64_RDTSC_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_RDTSC_CONTEXT) == 40);
+
typedef struct WHV_X64_APIC_SMI_CONTEXT {
UINT64 ApicIcr;
} WHV_X64_APIC_SMI_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_APIC_SMI_CONTEXT) == 8);
+
#define WHV_HYPERCALL_CONTEXT_MAX_XMM_REGISTERS 6
typedef struct _WHV_HYPERCALL_CONTEXT {
@@ -891,10 +1319,30 @@ typedef struct _WHV_HYPERCALL_CONTEXT {
UINT64 Reserved1[2];
} WHV_HYPERCALL_CONTEXT, *PWHV_HYPERCALL_CONTEXT;
+C_ASSERT(sizeof(WHV_HYPERCALL_CONTEXT) == 176);
+
typedef struct WHV_X64_APIC_INIT_SIPI_CONTEXT {
UINT64 ApicIcr;
} WHV_X64_APIC_INIT_SIPI_CONTEXT;
+C_ASSERT(sizeof(WHV_X64_APIC_INIT_SIPI_CONTEXT) == 8);
+
+typedef enum WHV_X64_APIC_WRITE_TYPE {
+ WHvX64ApicWriteTypeLdr = 0xD0,
+ WHvX64ApicWriteTypeDfr = 0xE0,
+ WHvX64ApicWriteTypeSvr = 0xF0,
+ WHvX64ApicWriteTypeLint0 = 0x350,
+ WHvX64ApicWriteTypeLint1 = 0x360
+} WHV_X64_APIC_WRITE_TYPE;
+
+typedef struct WHV_X64_APIC_WRITE_CONTEXT {
+ WHV_X64_APIC_WRITE_TYPE Type;
+ UINT32 Reserved;
+ UINT64 WriteValue;
+} WHV_X64_APIC_WRITE_CONTEXT;
+
+C_ASSERT(sizeof(WHV_X64_APIC_WRITE_CONTEXT) == 16);
+
typedef struct WHV_RUN_VP_EXIT_CONTEXT {
WHV_RUN_VP_EXIT_REASON ExitReason;
UINT32 Reserved;
@@ -913,9 +1361,13 @@ typedef struct WHV_RUN_VP_EXIT_CONTEXT {
WHV_X64_APIC_SMI_CONTEXT ApicSmi;
WHV_HYPERCALL_CONTEXT Hypercall;
WHV_X64_APIC_INIT_SIPI_CONTEXT ApicInitSipi;
+ WHV_X64_APIC_WRITE_CONTEXT ApicWrite;
+ WHV_SYNIC_SINT_DELIVERABLE_CONTEXT SynicSintDeliverable;
};
} WHV_RUN_VP_EXIT_CONTEXT;
+C_ASSERT(sizeof(WHV_RUN_VP_EXIT_CONTEXT) == 224);
+
typedef enum WHV_INTERRUPT_TYPE {
WHvX64InterruptTypeFixed = 0,
WHvX64InterruptTypeLowestPriority = 1,
@@ -944,6 +1396,8 @@ typedef struct WHV_INTERRUPT_CONTROL {
UINT32 Vector;
} WHV_INTERRUPT_CONTROL;
+C_ASSERT(sizeof(WHV_INTERRUPT_CONTROL) == 16);
+
typedef struct WHV_DOORBELL_MATCH_DATA {
WHV_GUEST_PHYSICAL_ADDRESS GuestAddress;
UINT64 Value;
@@ -953,6 +1407,8 @@ typedef struct WHV_DOORBELL_MATCH_DATA {
UINT32 Reserved : 30;
} WHV_DOORBELL_MATCH_DATA;
+C_ASSERT(sizeof(WHV_DOORBELL_MATCH_DATA) == 24);
+
typedef enum WHV_PARTITION_COUNTER_SET {
WHvPartitionCounterSetMemory
} WHV_PARTITION_COUNTER_SET;
@@ -963,11 +1419,14 @@ typedef struct WHV_PARTITION_MEMORY_COUNTERS {
UINT64 Mapped1GPageCount;
} WHV_PARTITION_MEMORY_COUNTERS;
+C_ASSERT(sizeof(WHV_PARTITION_MEMORY_COUNTERS) == 24);
+
typedef enum WHV_PROCESSOR_COUNTER_SET {
WHvProcessorCounterSetRuntime,
WHvProcessorCounterSetIntercepts,
WHvProcessorCounterSetEvents,
- WHvProcessorCounterSetApic
+ WHvProcessorCounterSetApic,
+ WHvProcessorCounterSetSyntheticFeatures
} WHV_PROCESSOR_COUNTER_SET;
typedef struct WHV_PROCESSOR_RUNTIME_COUNTERS {
@@ -975,11 +1434,15 @@ typedef struct WHV_PROCESSOR_RUNTIME_COUNTERS {
UINT64 HypervisorRuntime100ns;
} WHV_PROCESSOR_RUNTIME_COUNTERS;
+C_ASSERT(sizeof(WHV_PROCESSOR_RUNTIME_COUNTERS) == 16);
+
typedef struct WHV_PROCESSOR_INTERCEPT_COUNTER {
UINT64 Count;
UINT64 Time100ns;
} WHV_PROCESSOR_INTERCEPT_COUNTER;
+C_ASSERT(sizeof(WHV_PROCESSOR_INTERCEPT_COUNTER) == 16);
+
typedef struct WHV_PROCESSOR_INTERCEPT_COUNTERS {
WHV_PROCESSOR_INTERCEPT_COUNTER PageInvalidations;
WHV_PROCESSOR_INTERCEPT_COUNTER ControlRegisterAccesses;
@@ -992,14 +1455,21 @@ typedef struct WHV_PROCESSOR_INTERCEPT_COUNTERS {
WHV_PROCESSOR_INTERCEPT_COUNTER EmulatedInstructions;
WHV_PROCESSOR_INTERCEPT_COUNTER DebugRegisterAccesses;
WHV_PROCESSOR_INTERCEPT_COUNTER PageFaultIntercepts;
+ WHV_PROCESSOR_INTERCEPT_COUNTER NestedPageFaultIntercepts;
+ WHV_PROCESSOR_INTERCEPT_COUNTER Hypercalls;
+ WHV_PROCESSOR_INTERCEPT_COUNTER RdpmcInstructions;
} WHV_PROCESSOR_ACTIVITY_COUNTERS;
+C_ASSERT(sizeof(WHV_PROCESSOR_ACTIVITY_COUNTERS) == 224);
+
typedef struct WHV_PROCESSOR_EVENT_COUNTERS {
UINT64 PageFaultCount;
UINT64 ExceptionCount;
UINT64 InterruptCount;
} WHV_PROCESSOR_GUEST_EVENT_COUNTERS;
+C_ASSERT(sizeof(WHV_PROCESSOR_GUEST_EVENT_COUNTERS) == 24);
+
typedef struct WHV_PROCESSOR_APIC_COUNTERS {
UINT64 MmioAccessCount;
UINT64 EoiAccessCount;
@@ -1008,4 +1478,233 @@ typedef struct WHV_PROCESSOR_APIC_COUNTERS {
UINT64 SelfIpiCount;
} WHV_PROCESSOR_APIC_COUNTERS;
+C_ASSERT(sizeof(WHV_PROCESSOR_APIC_COUNTERS) == 40);
+
+typedef struct WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS {
+ UINT64 SyntheticInterruptsCount;
+ UINT64 LongSpinWaitHypercallsCount;
+ UINT64 OtherHypercallsCount;
+ UINT64 SyntheticInterruptHypercallsCount;
+ UINT64 VirtualInterruptHypercallsCount;
+ UINT64 VirtualMmuHypercallsCount;
+} WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS;
+
+C_ASSERT(sizeof(WHV_PROCESSOR_SYNTHETIC_FEATURES_COUNTERS) == 48);
+
+typedef enum WHV_ADVISE_GPA_RANGE_CODE {
+ WHvAdviseGpaRangeCodePopulate = 0x00000000,
+ WHvAdviseGpaRangeCodePin = 0x00000001,
+ WHvAdviseGpaRangeCodeUnpin = 0x00000002
+} WHV_ADVISE_GPA_RANGE_CODE;
+
+typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE {
+ WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000000,
+ WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000001,
+ WHvVirtualProcessorStateTypeSynicTimerState = 0x00000002,
+ WHvVirtualProcessorStateTypeInterruptControllerState2 = 0x00001000,
+ WHvVirtualProcessorStateTypeXsaveState = 0x00001001
+} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;
+
+typedef struct WHV_SYNIC_EVENT_PARAMETERS {
+ UINT32 VpIndex;
+ UINT8 TargetSint;
+ UINT8 Reserved;
+ UINT16 FlagNumber;
+} WHV_SYNIC_EVENT_PARAMETERS;
+
+C_ASSERT(sizeof(WHV_SYNIC_EVENT_PARAMETERS) == 8);
+
+typedef enum WHV_ALLOCATE_VPCI_RESOURCE_FLAGS {
+ WHvAllocateVpciResourceFlagNone = 0x00000000,
+ WHvAllocateVpciResourceFlagAllowDirectP2P = 0x00000001
+} WHV_ALLOCATE_VPCI_RESOURCE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(WHV_ALLOCATE_VPCI_RESOURCE_FLAGS);
+
+#define WHV_MAX_DEVICE_ID_SIZE_IN_CHARS 200
+
+typedef struct WHV_SRIOV_RESOURCE_DESCRIPTOR {
+ WCHAR PnpInstanceId[WHV_MAX_DEVICE_ID_SIZE_IN_CHARS];
+ LUID VirtualFunctionId;
+ UINT16 VirtualFunctionIndex;
+ UINT16 Reserved;
+} WHV_SRIOV_RESOURCE_DESCRIPTOR;
+
+C_ASSERT(sizeof(WHV_SRIOV_RESOURCE_DESCRIPTOR) == 412);
+
+typedef enum WHV_VPCI_DEVICE_NOTIFICATION_TYPE {
+ WHvVpciDeviceNotificationUndefined = 0,
+ WHvVpciDeviceNotificationMmioRemapping = 1,
+ WHvVpciDeviceNotificationSurpriseRemoval = 2
+} WHV_VPCI_DEVICE_NOTIFICATION_TYPE;
+
+typedef struct WHV_VPCI_DEVICE_NOTIFICATION {
+ WHV_VPCI_DEVICE_NOTIFICATION_TYPE NotificationType;
+ UINT32 Reserved1;
+ __C89_NAMELESS union {
+ UINT64 Reserved2;
+ };
+} WHV_VPCI_DEVICE_NOTIFICATION;
+
+C_ASSERT(sizeof(WHV_VPCI_DEVICE_NOTIFICATION) == 16);
+
+typedef enum WHV_CREATE_VPCI_DEVICE_FLAGS {
+ WHvCreateVpciDeviceFlagNone = 0x00000000,
+ WHvCreateVpciDeviceFlagPhysicallyBacked = 0x00000001,
+ WHvCreateVpciDeviceFlagUseLogicalInterrupts = 0x00000002
+} WHV_CREATE_VPCI_DEVICE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(WHV_CREATE_VPCI_DEVICE_FLAGS);
+
+typedef enum WHV_VPCI_DEVICE_PROPERTY_CODE {
+ WHvVpciDevicePropertyCodeUndefined = 0,
+ WHvVpciDevicePropertyCodeHardwareIDs = 1,
+ WHvVpciDevicePropertyCodeProbedBARs = 2
+} WHV_VPCI_DEVICE_PROPERTY_CODE;
+
+typedef struct WHV_VPCI_HARDWARE_IDS {
+ UINT16 VendorID;
+ UINT16 DeviceID;
+ UINT8 RevisionID;
+ UINT8 ProgIf;
+ UINT8 SubClass;
+ UINT8 BaseClass;
+ UINT16 SubVendorID;
+ UINT16 SubSystemID;
+} WHV_VPCI_HARDWARE_IDS;
+
+C_ASSERT(sizeof(WHV_VPCI_HARDWARE_IDS) == 12);
+
+#define WHV_VPCI_TYPE0_BAR_COUNT 6
+
+typedef struct WHV_VPCI_PROBED_BARS {
+ UINT32 Value[WHV_VPCI_TYPE0_BAR_COUNT];
+} WHV_VPCI_PROBED_BARS;
+
+C_ASSERT(sizeof(WHV_VPCI_PROBED_BARS) == 24);
+
+typedef enum WHV_VPCI_MMIO_RANGE_FLAGS {
+ WHvVpciMmioRangeFlagReadAccess = 0x00000001,
+ WHvVpciMmioRangeFlagWriteAccess = 0x00000002
+} WHV_VPCI_MMIO_RANGE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_MMIO_RANGE_FLAGS);
+
+typedef enum WHV_VPCI_DEVICE_REGISTER_SPACE {
+ WHvVpciConfigSpace = -1,
+ WHvVpciBar0 = 0,
+ WHvVpciBar1 = 1,
+ WHvVpciBar2 = 2,
+ WHvVpciBar3 = 3,
+ WHvVpciBar4 = 4,
+ WHvVpciBar5 = 5
+} WHV_VPCI_DEVICE_REGISTER_SPACE;
+
+typedef struct WHV_VPCI_MMIO_MAPPING {
+ WHV_VPCI_DEVICE_REGISTER_SPACE Location;
+ WHV_VPCI_MMIO_RANGE_FLAGS Flags;
+ UINT64 SizeInBytes;
+ UINT64 OffsetInBytes;
+ PVOID VirtualAddress;
+} WHV_VPCI_MMIO_MAPPING;
+
+C_ASSERT(sizeof(WHV_VPCI_MMIO_MAPPING) == 32);
+
+typedef struct WHV_VPCI_DEVICE_REGISTER {
+ WHV_VPCI_DEVICE_REGISTER_SPACE Location;
+ UINT32 SizeInBytes;
+ UINT64 OffsetInBytes;
+} WHV_VPCI_DEVICE_REGISTER;
+
+C_ASSERT(sizeof(WHV_VPCI_DEVICE_REGISTER) == 16);
+
+typedef enum WHV_VPCI_INTERRUPT_TARGET_FLAGS {
+ WHvVpciInterruptTargetFlagNone = 0x00000000,
+ WHvVpciInterruptTargetFlagMulticast = 0x00000001
+} WHV_VPCI_INTERRUPT_TARGET_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_INTERRUPT_TARGET_FLAGS);
+
+typedef struct WHV_VPCI_INTERRUPT_TARGET {
+ UINT32 Vector;
+ WHV_VPCI_INTERRUPT_TARGET_FLAGS Flags;
+ UINT32 ProcessorCount;
+ UINT32 Processors[ANYSIZE_ARRAY];
+} WHV_VPCI_INTERRUPT_TARGET;
+
+C_ASSERT(sizeof(WHV_VPCI_INTERRUPT_TARGET) == 16);
+
+typedef enum WHV_TRIGGER_TYPE {
+ WHvTriggerTypeInterrupt = 0,
+ WHvTriggerTypeSynicEvent = 1,
+ WHvTriggerTypeDeviceInterrupt = 2
+} WHV_TRIGGER_TYPE;
+
+typedef struct WHV_TRIGGER_PARAMETERS {
+ WHV_TRIGGER_TYPE TriggerType;
+ UINT32 Reserved;
+ __C89_NAMELESS union {
+ WHV_INTERRUPT_CONTROL Interrupt;
+ WHV_SYNIC_EVENT_PARAMETERS SynicEvent;
+ __C89_NAMELESS struct {
+ UINT64 LogicalDeviceId;
+ UINT64 MsiAddress;
+ UINT32 MsiData;
+ UINT32 Reserved;
+ } DeviceInterrupt;
+ };
+} WHV_TRIGGER_PARAMETERS;
+
+C_ASSERT(sizeof(WHV_TRIGGER_PARAMETERS) == 32);
+
+typedef PVOID WHV_TRIGGER_HANDLE;
+
+typedef enum WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE {
+ WHvVirtualProcessorPropertyCodeNumaNode = 0x00000000
+} WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE;
+
+typedef struct WHV_VIRTUAL_PROCESSOR_PROPERTY {
+ WHV_VIRTUAL_PROCESSOR_PROPERTY_CODE PropertyCode;
+ UINT32 Reserved;
+ __C89_NAMELESS union {
+ USHORT NumaNode;
+ UINT64 Padding;
+ };
+} WHV_VIRTUAL_PROCESSOR_PROPERTY;
+
+C_ASSERT(sizeof(WHV_VIRTUAL_PROCESSOR_PROPERTY) == 16);
+
+typedef enum WHV_NOTIFICATION_PORT_TYPE {
+ WHvNotificationPortTypeEvent = 2,
+ WHvNotificationPortTypeDoorbell = 4
+} WHV_NOTIFICATION_PORT_TYPE;
+
+typedef struct WHV_NOTIFICATION_PORT_PARAMETERS {
+ WHV_NOTIFICATION_PORT_TYPE NotificationPortType;
+ UINT32 Reserved;
+ __C89_NAMELESS union {
+ WHV_DOORBELL_MATCH_DATA Doorbell;
+ __C89_NAMELESS struct {
+ UINT32 ConnectionId;
+ } Event;
+ };
+} WHV_NOTIFICATION_PORT_PARAMETERS;
+
+C_ASSERT(sizeof(WHV_NOTIFICATION_PORT_PARAMETERS) == 32);
+
+typedef enum WHV_NOTIFICATION_PORT_PROPERTY_CODE {
+ WHvNotificationPortPropertyPreferredTargetVp = 1,
+ WHvNotificationPortPropertyPreferredTargetDuration = 5
+} WHV_NOTIFICATION_PORT_PROPERTY_CODE;
+
+typedef UINT64 WHV_NOTIFICATION_PORT_PROPERTY;
+
+#define WHV_ANY_VP (0xFFFFFFFF)
+
+#define WHV_NOTIFICATION_PORT_PREFERRED_DURATION_MAX (0xFFFFFFFFFFFFFFFFULL)
+
+typedef PVOID WHV_NOTIFICATION_PORT_HANDLE;
+
+#define WHV_SYNIC_MESSAGE_SIZE 256
+
#endif /* _WINHVAPIDEFS_H_ */
diff --git a/lib/libc/include/any-windows-any/wininet.h b/lib/libc/include/any-windows-any/wininet.h
index bb19d65d25..61c3a11b70 100644
--- a/lib/libc/include/any-windows-any/wininet.h
+++ b/lib/libc/include/any-windows-any/wininet.h
@@ -61,6 +61,9 @@ extern "C" {
#define INTERNET_REQFLAG_CACHE_WRITE_DISABLED 0x00000040
#define INTERNET_REQFLAG_NET_TIMEOUT 0x00000080
+#define INTERNET_FLAG_IDN_DIRECT 0x00000001
+#define INTERNET_FLAG_IDN_PROXY 0x00000002
+
#define INTERNET_FLAG_RELOAD 0x80000000
#define INTERNET_FLAG_RAW_DATA 0x40000000
@@ -104,6 +107,7 @@ extern "C" {
#define INTERNET_FLAG_TRANSFER_BINARY FTP_TRANSFER_TYPE_BINARY
#define SECURITY_INTERNET_MASK (INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP)
+#define SECURITY_IGNORE_ERROR_MASK (INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_REVOCATION | SECURITY_FLAG_IGNORE_WEAK_SIGNATURE)
#define INTERNET_FLAGS_MASK (INTERNET_FLAG_RELOAD | INTERNET_FLAG_RAW_DATA | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_ASYNC | INTERNET_FLAG_PASSIVE | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_MAKE_PERSISTENT | INTERNET_FLAG_FROM_CACHE | INTERNET_FLAG_SECURE | INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_READ_PREFETCH | INTERNET_FLAG_NO_COOKIES | INTERNET_FLAG_NO_AUTH | INTERNET_FLAG_CACHE_IF_NET_FAIL | SECURITY_INTERNET_MASK | INTERNET_FLAG_RESYNCHRONIZE | INTERNET_FLAG_HYPERLINK | INTERNET_FLAG_NO_UI | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_CACHE_ASYNC | INTERNET_FLAG_FORMS_SUBMIT | INTERNET_FLAG_NEED_FILE | INTERNET_FLAG_RESTRICTED_ZONE | INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_FWD_BACK | INTERNET_FLAG_BGUPDATE)
#define INTERNET_ERROR_MASK_INSERT_CDROM 0x1
@@ -476,6 +480,7 @@ extern "C" {
#define INTERNET_OPTION_ERROR_MASK 62
#define INTERNET_OPTION_FROM_CACHE_TIMEOUT 63
#define INTERNET_OPTION_BYPASS_EDITED_ENTRY 64
+#define INTERNET_OPTION_HTTP_DECODING 65
#define INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO 67
#define INTERNET_OPTION_CODEPAGE 68
#define INTERNET_OPTION_CACHE_TIMESTAMPS 69
@@ -507,11 +512,47 @@ extern "C" {
#define INTERNET_OPTION_DATAFILE_EXT 96
+#define INTERNET_OPTION_CODEPAGE_PATH 100
+#define INTERNET_OPTION_CODEPAGE_EXTRA 101
+#define INTERNET_OPTION_IDN 102
+#define INTERNET_OPTION_MAX_CONNS_PER_PROXY 103
+#define INTERNET_OPTION_SUPPRESS_SERVER_AUTH 104
+#define INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT 105
+
+#define INTERNET_OPTION_ENABLE_REDIRECT_CACHE_READ 122
+
+#define INTERNET_OPTION_COMPRESSED_CONTENT_LENGTH 147
+#define INTERNET_OPTION_ENABLE_HTTP_PROTOCOL 148
+#define INTERNET_OPTION_HTTP_PROTOCOL_USED 149
+
+#define INTERNET_OPTION_ENCODE_EXTRA 155
+
+#define INTERNET_OPTION_HSTS 157
+
+#define INTERNET_OPTION_ENTERPRISE_CONTEXT 159
+
+#define INTERNET_OPTION_CONNECTION_FILTER 162
+#define INTERNET_OPTION_REFERER_TOKEN_BINDING_HOSTNAME 163
+
+#define INTERNET_OPTION_TOKEN_BINDING_PUBLIC_KEY 181
+
+#define INTERNET_OPTION_COOKIES_SAME_SITE_LEVEL 187
+
#define INTERNET_FIRST_OPTION INTERNET_OPTION_CALLBACK
#define INTERNET_LAST_OPTION INTERNET_OPTION_DATAFILE_EXT
#define INTERNET_PRIORITY_FOREGROUND 1000
+#define HTTP_COOKIES_SAME_SITE_LEVEL_UNKNOWN 0x0
+#define HTTP_COOKIES_SAME_SITE_LEVEL_SAME_SITE 0x1
+#define HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE_LAX 0x2
+#define HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE 0x3
+
+#define HTTP_COOKIES_SAME_SITE_LEVEL_MAX HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE
+
+#define HTTP_PROTOCOL_FLAG_HTTP2 0x2
+#define HTTP_PROTOCOL_MASK HTTP_PROTOCOL_FLAG_HTTP2
+
#define INTERNET_HANDLE_TYPE_INTERNET 1
#define INTERNET_HANDLE_TYPE_CONNECT_FTP 2
#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER 3
@@ -530,6 +571,7 @@ extern "C" {
#define AUTH_FLAG_DISABLE_NEGOTIATE 0x00000001
#define AUTH_FLAG_ENABLE_NEGOTIATE 0x00000002
#define AUTH_FLAG_DISABLE_BASIC_CLEARCHANNEL 0x00000004
+#define AUTH_FLAG_DISABLE_SERVER_AUTH 0x00000008
#define SECURITY_FLAG_SECURE 0x00000001
#define SECURITY_FLAG_STRENGTH_WEAK 0x10000000
@@ -552,6 +594,7 @@ extern "C" {
#define SECURITY_FLAG_IGNORE_REVOCATION 0x00000080
#define SECURITY_FLAG_IGNORE_UNKNOWN_CA 0x00000100
#define SECURITY_FLAG_IGNORE_WRONG_USAGE 0x00000200
+#define SECURITY_FLAG_IGNORE_WEAK_SIGNATURE 0x00010000
#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID INTERNET_FLAG_IGNORE_CERT_CN_INVALID
#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
@@ -561,6 +604,8 @@ extern "C" {
#define SECURITY_SET_MASK (SECURITY_FLAG_IGNORE_REVOCATION | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_WRONG_USAGE)
+#define SECURITY_FLAG_OPT_IN_WEAK_SIGNATURE 0x00020000
+
#define AUTODIAL_MODE_NEVER 1
#define AUTODIAL_MODE_ALWAYS 2
#define AUTODIAL_MODE_NO_NETWORK_PRESENT 4
@@ -1035,6 +1080,33 @@ extern "C" {
#define HTTP_QUERY_PASSPORT_URLS 77
#define HTTP_QUERY_PASSPORT_CONFIG 78
+#define HTTP_QUERY_X_CONTENT_TYPE_OPTIONS 79
+#define HTTP_QUERY_P3P 80
+#define HTTP_QUERY_X_P2P_PEERDIST 81
+#define HTTP_QUERY_TRANSLATE 82
+#define HTTP_QUERY_X_UA_COMPATIBLE 83
+#define HTTP_QUERY_DEFAULT_STYLE 84
+#define HTTP_QUERY_X_FRAME_OPTIONS 85
+#define HTTP_QUERY_X_XSS_PROTECTION 86
+
+#define HTTP_QUERY_SET_COOKIE2 87
+
+#define HTTP_QUERY_DO_NOT_TRACK 88
+
+#define HTTP_QUERY_KEEP_ALIVE 89
+
+#define HTTP_QUERY_HTTP2_SETTINGS 90
+
+#define HTTP_QUERY_STRICT_TRANSPORT_SECURITY 91
+
+#define HTTP_QUERY_TOKEN_BINDING 92
+
+#define HTTP_QUERY_INCLUDE_REFERRED_TOKEN_BINDING_ID 93
+#define HTTP_QUERY_INCLUDE_REFERER_TOKEN_BINDING_ID HTTP_QUERY_INCLUDE_REFERRED_TOKEN_BINDING_ID
+
+#define HTTP_QUERY_PUBLIC_KEY_PINS 94
+#define HTTP_QUERY_PUBLIC_KEY_PINS_REPORT_ONLY 95
+
#define HTTP_QUERY_MAX 78
#define HTTP_QUERY_CUSTOM 65535
@@ -1042,7 +1114,9 @@ extern "C" {
#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000
#define HTTP_QUERY_FLAG_NUMBER 0x20000000
#define HTTP_QUERY_FLAG_COALESCE 0x10000000
-#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS | HTTP_QUERY_FLAG_SYSTEMTIME | HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_FLAG_COALESCE)
+#define HTTP_QUERY_FLAG_NUMBER64 0x08000000
+#define HTTP_QUERY_FLAG_COALESCE_WITH_COMMA 0x04000000
+#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS | HTTP_QUERY_FLAG_SYSTEMTIME | HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_FLAG_COALESCE | HTTP_QUERY_FLAG_NUMBER64 | HTTP_QUERY_FLAG_COALESCE_WITH_COMMA)
#define HTTP_QUERY_HEADER_MASK (~HTTP_QUERY_MODIFIER_FLAGS_MASK)
#define HTTP_STATUS_CONTINUE 100
@@ -1063,6 +1137,7 @@ extern "C" {
#define HTTP_STATUS_NOT_MODIFIED 304
#define HTTP_STATUS_USE_PROXY 305
#define HTTP_STATUS_REDIRECT_KEEP_VERB 307
+#define HTTP_STATUS_PERMANENT_REDIRECT 308
#define HTTP_STATUS_BAD_REQUEST 400
#define HTTP_STATUS_DENIED 401
@@ -1080,6 +1155,7 @@ extern "C" {
#define HTTP_STATUS_REQUEST_TOO_LARGE 413
#define HTTP_STATUS_URI_TOO_LONG 414
#define HTTP_STATUS_UNSUPPORTED_MEDIA 415
+#define HTTP_STATUS_MISDIRECTED_REQUEST 421
#define HTTP_STATUS_RETRY_WITH 449
#define HTTP_STATUS_SERVER_ERROR 500
@@ -1133,6 +1209,16 @@ extern "C" {
BOOLAPI HttpQueryInfoA(HINTERNET hRequest,DWORD dwInfoLevel,LPVOID lpBuffer,LPDWORD lpdwBufferLength,LPDWORD lpdwIndex);
BOOLAPI HttpQueryInfoW(HINTERNET hRequest,DWORD dwInfoLevel,LPVOID lpBuffer,LPDWORD lpdwBufferLength,LPDWORD lpdwIndex);
+ typedef struct {
+ PWSTR pwszName;
+ PWSTR pwszValue;
+ PWSTR pwszDomain;
+ PWSTR pwszPath;
+ DWORD dwFlags;
+ FILETIME ftExpires;
+ WINBOOL fExpiresSet;
+ } INTERNET_COOKIE2;
+
#define INTERNET_COOKIE_IS_SECURE 0x01
#define INTERNET_COOKIE_IS_SESSION 0x02
@@ -1146,6 +1232,16 @@ extern "C" {
#define INTERNET_COOKIE_IE6 0x400
#define INTERNET_COOKIE_IS_LEGACY 0x800
+#define INTERNET_COOKIE_NON_SCRIPT 0x00001000
+#define INTERNET_COOKIE_HTTPONLY 0x00002000
+#define INTERNET_COOKIE_HOST_ONLY 0x00004000
+#define INTERNET_COOKIE_APPLY_HOST_ONLY 0x00008000
+
+#define INTERNET_COOKIE_HOST_ONLY_APPLIED 0x00080000
+#define INTERNET_COOKIE_SAME_SITE_STRICT 0x00100000
+#define INTERNET_COOKIE_SAME_SITE_LAX 0x00200000
+#define INTERNET_COOKIE_SAME_SITE_LEVEL_CROSS_SITE 0x00400000
+
#define InternetSetCookie __MINGW_NAME_AW(InternetSetCookie)
#define InternetGetCookie __MINGW_NAME_AW(InternetGetCookie)
#define InternetSetCookieEx __MINGW_NAME_AW(InternetSetCookieEx)
diff --git a/lib/libc/include/any-windows-any/winineti.h b/lib/libc/include/any-windows-any/winineti.h
index 691ffe07dd..3af7083013 100644
--- a/lib/libc/include/any-windows-any/winineti.h
+++ b/lib/libc/include/any-windows-any/winineti.h
@@ -129,6 +129,7 @@ WINBOOL WINAPI GetUrlCacheConfigInfoW(LPINTERNET_CACHE_CONFIG_INFOW,LPDWORD,
#define GetUrlCacheConfigInfo __MINGW_NAME_AW(GetUrlCacheConfigInfo)
WINBOOL WINAPI IncrementUrlCacheHeaderData(DWORD,LPDWORD);
WINBOOL WINAPI InternetQueryFortezzaStatus(DWORD*,DWORD_PTR);
+WINBOOL WINAPI IsHostInProxyBypassList(INTERNET_SCHEME,LPCSTR,DWORD);
WINBOOL WINAPI IsUrlCacheEntryExpiredA(LPCSTR,DWORD,FILETIME*);
WINBOOL WINAPI IsUrlCacheEntryExpiredW(LPCWSTR,DWORD,FILETIME*);
#define IsUrlCacheEntryExpired __MINGW_NAME_AW(IsUrlCacheEntryExpired)
diff --git a/lib/libc/include/any-windows-any/winioctl.h b/lib/libc/include/any-windows-any/winioctl.h
index 76664e577d..d282d255b5 100644
--- a/lib/libc/include/any-windows-any/winioctl.h
+++ b/lib/libc/include/any-windows-any/winioctl.h
@@ -19,7 +19,17 @@ DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER,0x53f56310,0xb6bf,0x11d0,0x94,0xf2,0
DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY,0x53f56311,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER,0x53f56312,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,0x2accfe60,0xc130,0x11d2,0xb0,0x82,0x00,0xa0,0xc9,0x1e,0xfb,0x8b);
+DEFINE_GUID(GUID_DEVINTERFACE_VMLUN,0x6f416619,0x9f29,0x42a5,0xb2,0x0b,0x37,0xe2,0x19,0xca,0x02,0xb0);
+DEFINE_GUID(GUID_DEVINTERFACE_SES,0x1790c9ec,0x47d5,0x4df3,0xb5,0xaf,0x9a,0xdf,0x3c,0xf2,0x3e,0x48);
+DEFINE_GUID(GUID_DEVINTERFACE_ZNSDISK,0xb87941c5,0xffdb,0x43c7,0xb6,0xb1,0x20,0xb6,0x32,0xf0,0xb1,0x09);
+#define WDI_STORAGE_PREDICT_FAILURE_DPS_GUID {0xe9f2d03a,0x747c,0x41c2,{0xbb,0x9a,0x02,0xc6,0x2b,0x6d,0x5f,0xcb}};
+
+DEFINE_GUID(GUID_DEVINTERFACE_SERVICE_VOLUME,0x6ead3d82,0x25ec,0x46bc,0xb7,0xfd,0xc1,0xf0,0xdf,0x8f,0x50,0x37);
DEFINE_GUID(GUID_DEVINTERFACE_HIDDEN_VOLUME,0x7f108a28,0x9833,0x4b3b,0xb7,0x80,0x2c,0x6b,0x5f,0xa5,0xc0,0x62);
+DEFINE_GUID(GUID_DEVINTERFACE_UNIFIED_ACCESS_RPMB,0x27447c21,0xbcc3,0x4d07,0xa0,0x5b,0xa3,0x39,0x5b,0xb4,0xee,0xe7);
+DEFINE_GUID(GUID_DEVINTERFACE_SCM_PHYSICAL_DEVICE,0x4283609d,0x4dc2,0x43be,0xbb,0xb4,0x4f,0x15,0xdf,0xce,0x2c,0x61);
+DEFINE_GUID(GUID_SCM_PD_HEALTH_NOTIFICATION,0x9da2d386,0x72f5,0x4ee3,0x81,0x55,0xec,0xa0,0x67,0x8e,0x3b,0x6);
+DEFINE_GUID(GUID_SCM_PD_PASSTHROUGH_INVDIMM,0x4309ac30,0x0d11,0x11e4,0x91,0x91,0x08,0x00,0x20,0x0c,0x9a,0x66);
DEFINE_GUID(GUID_DEVINTERFACE_COMPORT,0x86e0d1e0,0x8089,0x11d0,0x9c,0xe4,0x08,0x00,0x3e,0x30,0x1f,0x73);
DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18);
@@ -38,6 +48,23 @@ DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978,0xE325,0x11CE,0x
#define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR
#endif /* DEFINE_GUID */
+#ifdef DEFINE_DEVPROPKEY
+
+#ifndef __WRAPPED__
+#define __WRAPPED__
+#endif
+
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Portable,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,2);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Removable_Media,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,3);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_System_Critical,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,4);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Disk_Number,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,5);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Partition_Number,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,6);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Mbr_Type,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,7);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Gpt_Type,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,8);
+DEFINE_DEVPROPKEY(DEVPKEY_Storage_Gpt_Name,0x4d1ebee8,0x803,0x4774,0x98,0x42,0xb7,0x7d,0xb5,0x2,0x65,0xe9,9);
+
+#endif /* DEFINE_DEVPROPKEY */
+
#ifndef _WINIOCTL_
#define _WINIOCTL_
@@ -133,10 +160,15 @@ DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978,0xE325,0x11CE,0x
#define FILE_DEVICE_HOLOGRAPHIC 0x0000005b
#define FILE_DEVICE_SDFXHCI 0x0000005c
#define FILE_DEVICE_UCMUCSI 0x0000005d
+#define FILE_DEVICE_PRM 0x0000005e
+#define FILE_DEVICE_EVENT_COLLECTOR 0x0000005f
+#define FILE_DEVICE_USB4 0x00000060
+#define FILE_DEVICE_SOUNDWIRE 0x00000061
#define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
#define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode) (((DWORD)(ctrlCode & 0xffff0000)) >> 16)
+#define METHOD_FROM_CTL_CODE(ctrlCode) ((DWORD)(ctrlCode & 3))
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
@@ -189,17 +221,59 @@ extern "C" {
#define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT CTL_CODE(IOCTL_STORAGE_BASE, 0x0407, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0420,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_DEVICE_NUMBER_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0421,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE,0x0440,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_FAILURE_PREDICTION_CONFIG CTL_CODE(IOCTL_STORAGE_BASE,0x0441,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_COUNTERS CTL_CODE(IOCTL_STORAGE_BASE,0x442,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_READ_CAPACITY CTL_CODE(IOCTL_STORAGE_BASE,0x0450,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY CTL_CODE(IOCTL_STORAGE_BASE, 0x0470, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_DEVICE_TELEMETRY_NOTIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0471, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_DEVICE_TELEMETRY_QUERY_CAPS CTL_CODE(IOCTL_STORAGE_BASE, 0x0472, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY_RAW CTL_CODE(IOCTL_STORAGE_BASE, 0x0473, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD CTL_CODE(IOCTL_STORAGE_BASE, 0x0480, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_STORAGE_PROTOCOL_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x04F0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_STORAGE_SET_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x04FF, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES CTL_CODE(IOCTL_STORAGE_BASE, 0x0502, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_STORAGE_REINITIALIZE_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0590, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
#define IOCTL_STORAGE_GET_BC_PROPERTIES CTL_CODE(IOCTL_STORAGE_BASE, 0x0600, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_ALLOCATE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0601, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_FREE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0602, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
#define IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT CTL_CODE(IOCTL_STORAGE_BASE, 0x0620, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_START_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0621, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_STOP_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0622, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
#define OBSOLETE_IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_FIRMWARE_GET_INFO CTL_CODE(IOCTL_STORAGE_BASE, 0x0700, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_FIRMWARE_DOWNLOAD CTL_CODE(IOCTL_STORAGE_BASE, 0x0701, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_FIRMWARE_ACTIVATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0702, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+#define IOCTL_STORAGE_ENABLE_IDLE_POWER CTL_CODE(IOCTL_STORAGE_BASE, 0x0720, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_IDLE_POWERUP_REASON CTL_CODE(IOCTL_STORAGE_BASE, 0x0721, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_STORAGE_POWER_ACTIVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0722, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_POWER_IDLE CTL_CODE(IOCTL_STORAGE_BASE, 0x0723, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_STORAGE_EVENT_NOTIFICATION CTL_CODE(IOCTL_STORAGE_BASE, 0x0724, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_DEVICE_POWER_CAP CTL_CODE(IOCTL_STORAGE_BASE, 0x0725, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_RPMB_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x0726, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_ATTRIBUTE_MANAGEMENT CTL_CODE(IOCTL_STORAGE_BASE, 0x0727, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_DIAGNOSTIC CTL_CODE(IOCTL_STORAGE_BASE, 0x0728, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0729, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_REMOVE_ELEMENT_AND_TRUNCATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0730, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG CTL_CODE(IOCTL_STORAGE_BASE, 0x0731, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
typedef struct _STORAGE_READ_CAPACITY {
ULONG Version;
ULONG Size;
@@ -320,6 +394,27 @@ typedef struct _STORAGE_READ_CAPACITY {
DWORD PartitionNumber;
} STORAGE_DEVICE_NUMBER,*PSTORAGE_DEVICE_NUMBER;
+ typedef struct _STORAGE_DEVICE_NUMBERS {
+ DWORD Version;
+ DWORD Size;
+ DWORD NumberOfDevices;
+ STORAGE_DEVICE_NUMBER Devices[ANYSIZE_ARRAY];
+ } STORAGE_DEVICE_NUMBERS,*PSTORAGE_DEVICE_NUMBERS;
+
+#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT 0x1
+#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID 0x2
+#define STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID 0x4
+
+ typedef struct _STORAGE_DEVICE_NUMBER_EX {
+ DWORD Version;
+ DWORD Size;
+ DWORD Flags;
+ DEVICE_TYPE DeviceType;
+ DWORD DeviceNumber;
+ GUID DeviceGuid;
+ DWORD PartitionNumber;
+ } STORAGE_DEVICE_NUMBER_EX,*PSTORAGE_DEVICE_NUMBER_EX;
+
typedef struct _STORAGE_BUS_RESET_REQUEST {
BYTE PathId;
} STORAGE_BUS_RESET_REQUEST,*PSTORAGE_BUS_RESET_REQUEST;
@@ -368,7 +463,7 @@ typedef struct _STORAGE_READ_CAPACITY {
#define TAPE_RESET_STATISTICS __MSABI_LONG(2)
typedef enum _STORAGE_MEDIA_TYPE {
- DDS_4mm = 0x20,
+ DDS_4mm = 0x20,
MiniQic,
Travan,
QIC,
@@ -470,6 +565,8 @@ typedef struct _STORAGE_READ_CAPACITY {
BusTypeMaxReserved = 0x7F
} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
+#define SupportsDeviceSharing(BusType) ((BusType == BusTypeScsi) || (BusType == BusTypeFibre) || (BusType == BusTypeiScsi) || (BusType == BusTypeSas) || (BusType == BusTypeSpaces))
+
typedef struct _DEVICE_MEDIA_INFO {
union {
struct {
@@ -516,6 +613,16 @@ typedef struct _STORAGE_READ_CAPACITY {
BYTE VendorSpecific[512];
} STORAGE_PREDICT_FAILURE,*PSTORAGE_PREDICT_FAILURE;
+ typedef struct _STORAGE_FAILURE_PREDICTION_CONFIG {
+ DWORD Version;
+ DWORD Size;
+ BOOLEAN Set;
+ BOOLEAN Enabled;
+ WORD Reserved;
+ } STORAGE_FAILURE_PREDICTION_CONFIG,*PSTORAGE_FAILURE_PREDICTION_CONFIG;
+
+#define STORAGE_FAILURE_PREDICTION_CONFIG_V1 1
+
#ifdef __cplusplus
}
#endif
@@ -705,6 +812,9 @@ typedef struct _PARTITION_INFORMATION_MBR {
BOOLEAN BootIndicator;
BOOLEAN RecognizedPartition;
DWORD HiddenSectors;
+#if NTDDI_VERSION > NTDDI_WINBLUE
+ GUID PartitionId;
+#endif
} PARTITION_INFORMATION_MBR,*PPARTITION_INFORMATION_MBR;
typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR;
@@ -745,6 +855,9 @@ typedef struct _PARTITION_INFORMATION_EX {
LARGE_INTEGER PartitionLength;
DWORD PartitionNumber;
BOOLEAN RewritePartition;
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+ BOOLEAN IsServicePartition;
+#endif
__C89_NAMELESS union {
PARTITION_INFORMATION_MBR Mbr;
PARTITION_INFORMATION_GPT Gpt;
@@ -1865,16 +1978,42 @@ typedef struct _STORAGE_DESCRIPTOR_HEADER {
} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
typedef enum _STORAGE_PROPERTY_ID {
- StorageDeviceProperty = 0,
- StorageAdapterProperty = 1,
- StorageDeviceIdProperty = 2,
- StorageDeviceUniqueIdProperty = 3,
- StorageDeviceWriteCacheProperty = 4,
- StorageMiniportProperty = 5,
- StorageAccessAlignmentProperty = 6,
- StorageDeviceSeekPenaltyProperty = 7,
- StorageDeviceTrimProperty = 8,
- StorageDeviceWriteAggregationProperty = 9
+ StorageDeviceProperty = 0,
+ StorageAdapterProperty,
+ StorageDeviceIdProperty,
+ StorageDeviceUniqueIdProperty,
+ StorageDeviceWriteCacheProperty,
+ StorageMiniportProperty,
+ StorageAccessAlignmentProperty,
+ StorageDeviceSeekPenaltyProperty,
+ StorageDeviceTrimProperty,
+ StorageDeviceWriteAggregationProperty,
+ StorageDeviceDeviceTelemetryProperty,
+ StorageDeviceLBProvisioningProperty,
+ StorageDevicePowerProperty,
+ StorageDeviceCopyOffloadProperty,
+ StorageDeviceResiliencyProperty,
+ StorageDeviceMediumProductType,
+ StorageAdapterRpmbProperty,
+ StorageAdapterCryptoProperty,
+ StorageDeviceIoCapabilityProperty = 48,
+ StorageAdapterProtocolSpecificProperty,
+ StorageDeviceProtocolSpecificProperty,
+ StorageAdapterTemperatureProperty,
+ StorageDeviceTemperatureProperty,
+ StorageAdapterPhysicalTopologyProperty,
+ StorageDevicePhysicalTopologyProperty,
+ StorageDeviceAttributesProperty,
+ StorageDeviceManagementStatus,
+ StorageAdapterSerialNumberProperty,
+ StorageDeviceLocationProperty,
+ StorageDeviceNumaProperty,
+ StorageDeviceZonedDeviceProperty,
+ StorageDeviceUnsafeShutdownCount,
+ StorageDeviceEnduranceProperty,
+ StorageDeviceLedStateProperty,
+ StorageDeviceSelfEncryptionProperty = 64,
+ StorageFruIdProperty
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
typedef enum _STORAGE_QUERY_TYPE {
@@ -1884,12 +2023,24 @@ typedef enum _STORAGE_QUERY_TYPE {
PropertyQueryMaxDefined = 3
} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
+typedef enum _STORAGE_SET_TYPE {
+ PropertyStandardSet = 0,
+ PropertyExistsSet,
+ PropertySetMaxDefined
+} STORAGE_SET_TYPE, *PSTORAGE_SET_TYPE;
+
typedef struct _STORAGE_PROPERTY_QUERY {
STORAGE_PROPERTY_ID PropertyId;
STORAGE_QUERY_TYPE QueryType;
BYTE AdditionalParameters[1];
} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
+typedef struct _STORAGE_PROPERTY_SET {
+ STORAGE_PROPERTY_ID PropertyId;
+ STORAGE_SET_TYPE SetType;
+ BYTE AdditionalParameters[1];
+} STORAGE_PROPERTY_SET, *PSTORAGE_PROPERTY_SET;
+
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
DWORD Version;
DWORD Size;
@@ -1919,8 +2070,30 @@ typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
BYTE BusType;
WORD BusMajorVersion;
WORD BusMinorVersion;
+#if NTDDI_VERSION >= NTDDI_WIN8
+ BYTE SrbType;
+ BYTE AddressType;
+#endif
} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
+#if NTDDI_VERSION >= NTDDI_WIN8
+
+#define NO_SRBTYPE_ADAPTER_DESCRIPTOR_SIZE UFIELD_OFFSET(STORAGE_ADAPTER_DESCRIPTOR, SrbType)
+
+#ifndef SRB_TYPE_SCSI_REQUEST_BLOCK
+#define SRB_TYPE_SCSI_REQUEST_BLOCK 0
+#endif
+
+#ifndef SRB_TYPE_STORAGE_REQUEST_BLOCK
+#define SRB_TYPE_STORAGE_REQUEST_BLOCK 1
+#endif
+
+#ifndef STORAGE_ADDRESS_TYPE_BTL8
+#define STORAGE_ADDRESS_TYPE_BTL8 0
+#endif
+
+#endif
+
typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR {
DWORD Version;
DWORD Size;
@@ -2302,9 +2475,14 @@ typedef struct _STORAGE_WRITE_CACHE_PROPERTY {
} STORAGE_WRITE_CACHE_PROPERTY, *PSTORAGE_WRITE_CACHE_PROPERTY;
typedef enum _STORAGE_PORT_CODE_SET {
- StoragePortCodeSetReserved = 0,
- StoragePortCodeSetStorport = 1,
- StoragePortCodeSetSCSIport = 2
+ StoragePortCodeSetReserved = 0,
+ StoragePortCodeSetStorport = 1,
+ StoragePortCodeSetSCSIport = 2,
+ StoragePortCodeSetSpaceport = 3,
+ StoragePortCodeSetATAport = 4,
+ StoragePortCodeSetUSBport = 5,
+ StoragePortCodeSetSBP2port = 6,
+ StoragePortCodeSetSDport = 7
} STORAGE_PORT_CODE_SET, *PSTORAGE_PORT_CODE_SET;
typedef struct _STORAGE_MINIPORT_DESCRIPTOR {
@@ -2366,6 +2544,13 @@ typedef struct _STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR {
DWORD BytesPerPhysicalSector;
DWORD BytesOffsetForSectorAlignment;
} STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR, *PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR;
+
+typedef struct _STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD MediumProductType;
+} STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR, *PSTORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR;
+
#endif /*(_WIN32_WINNT >= 0x0600)*/
typedef struct _DEVICE_SEEK_PENALTY_DESCRIPTOR {
@@ -2386,6 +2571,268 @@ typedef struct _DEVICE_TRIM_DESCRIPTOR {
BOOLEAN TrimEnabled;
} DEVICE_TRIM_DESCRIPTOR, *PDEVICE_TRIM_DESCRIPTOR;
+typedef struct _DEVICE_LB_PROVISIONING_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ BYTE ThinProvisioningEnabled : 1;
+ BYTE ThinProvisioningReadZeros : 1;
+ BYTE AnchorSupported : 3;
+ BYTE UnmapGranularityAlignmentValid : 1;
+ BYTE GetFreeSpaceSupported : 1;
+ BYTE MapSupported : 1;
+ BYTE Reserved1[7];
+ DWORDLONG OptimalUnmapGranularity;
+ DWORDLONG UnmapGranularityAlignment;
+#if NTDDI_VERSION >= NTDDI_WINBLUE
+ DWORD MaxUnmapLbaCount;
+ DWORD MaxUnmapBlockDescriptorCount;
+#endif
+} DEVICE_LB_PROVISIONING_DESCRIPTOR, *PDEVICE_LB_PROVISIONING_DESCRIPTOR;
+
+#define DEVICE_LB_PROVISIONING_DESCRIPTOR_V1_SIZE RTL_SIZEOF_THROUGH_FIELD(DEVICE_LB_PROVISIONING_DESCRIPTOR, UnmapGranularityAlignment)
+
+typedef struct _STORAGE_LB_PROVISIONING_MAP_RESOURCES {
+ DWORD Size;
+ DWORD Version;
+ BYTE AvailableMappingResourcesValid : 1;
+ BYTE UsedMappingResourcesValid : 1;
+ BYTE Reserved0 : 6;
+ BYTE Reserved1[3];
+ BYTE AvailableMappingResourcesScope : 2;
+ BYTE UsedMappingResourcesScope : 2;
+ BYTE Reserved2 : 4;
+ BYTE Reserved3[3];
+ DWORDLONG AvailableMappingResources;
+ DWORDLONG UsedMappingResources;
+} STORAGE_LB_PROVISIONING_MAP_RESOURCES, *PSTORAGE_LB_PROVISIONING_MAP_RESOURCES;
+
+typedef struct _DEVICE_POWER_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ BOOLEAN DeviceAttentionSupported;
+ BOOLEAN AsynchronousNotificationSupported;
+ BOOLEAN IdlePowerManagementEnabled;
+ BOOLEAN D3ColdEnabled;
+ BOOLEAN D3ColdSupported;
+ BOOLEAN NoVerifyDuringIdlePower;
+ BYTE Reserved[2];
+ DWORD IdleTimeoutInMS;
+} DEVICE_POWER_DESCRIPTOR, *PDEVICE_POWER_DESCRIPTOR;
+
+typedef struct _DEVICE_COPY_OFFLOAD_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD MaximumTokenLifetime;
+ DWORD DefaultTokenLifetime;
+ DWORDLONG MaximumTransferSize;
+ DWORDLONG OptimalTransferCount;
+ DWORD MaximumDataDescriptors;
+ DWORD MaximumTransferLengthPerDescriptor;
+ DWORD OptimalTransferLengthPerDescriptor;
+ WORD OptimalTransferLengthGranularity;
+ BYTE Reserved[2];
+} DEVICE_COPY_OFFLOAD_DESCRIPTOR, *PDEVICE_COPY_OFFLOAD_DESCRIPTOR;
+
+typedef struct _STORAGE_DEVICE_RESILIENCY_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD NameOffset;
+ DWORD NumberOfLogicalCopies;
+ DWORD NumberOfPhysicalCopies;
+ DWORD PhysicalDiskRedundancy;
+ DWORD NumberOfColumns;
+ DWORD Interleave;
+} STORAGE_DEVICE_RESILIENCY_DESCRIPTOR, *PSTORAGE_DEVICE_RESILIENCY_DESCRIPTOR;
+
+typedef enum _STORAGE_RPMB_FRAME_TYPE {
+ StorageRpmbFrameTypeUnknown = 0,
+ StorageRpmbFrameTypeStandard,
+ StorageRpmbFrameTypeMax
+} STORAGE_RPMB_FRAME_TYPE, *PSTORAGE_RPMB_FRAME_TYPE;
+
+#define STORAGE_RPMB_DESCRIPTOR_VERSION_1 1
+
+#define STORAGE_RPMB_MINIMUM_RELIABLE_WRITE_SIZE 512
+
+typedef struct _STORAGE_RPMB_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD SizeInBytes;
+ DWORD MaxReliableWriteSizeInBytes;
+ STORAGE_RPMB_FRAME_TYPE FrameFormat;
+} STORAGE_RPMB_DESCRIPTOR, *PSTORAGE_RPMB_DESCRIPTOR;
+
+typedef enum _STORAGE_CRYPTO_ALGORITHM_ID {
+ StorageCryptoAlgorithmUnknown = 0,
+ StorageCryptoAlgorithmXTSAES = 1,
+ StorageCryptoAlgorithmBitlockerAESCBC,
+ StorageCryptoAlgorithmAESECB,
+ StorageCryptoAlgorithmESSIVAESCBC,
+ StorageCryptoAlgorithmMax
+} STORAGE_CRYPTO_ALGORITHM_ID, *PSTORAGE_CRYPTO_ALGORITHM_ID;
+
+typedef enum _STORAGE_CRYPTO_KEY_SIZE {
+ StorageCryptoKeySizeUnknown = 0,
+ StorageCryptoKeySize128Bits = 1,
+ StorageCryptoKeySize192Bits,
+ StorageCryptoKeySize256Bits,
+ StorageCryptoKeySize512Bits
+} STORAGE_CRYPTO_KEY_SIZE, *PSTORAGE_CRYPTO_KEY_SIZE;
+
+#define STORAGE_CRYPTO_CAPABILITY_VERSION_1 1
+
+typedef struct _STORAGE_CRYPTO_CAPABILITY {
+ DWORD Version;
+ DWORD Size;
+ DWORD CryptoCapabilityIndex;
+ STORAGE_CRYPTO_ALGORITHM_ID AlgorithmId;
+ STORAGE_CRYPTO_KEY_SIZE KeySize;
+ DWORD DataUnitSizeBitmask;
+} STORAGE_CRYPTO_CAPABILITY, *PSTORAGE_CRYPTO_CAPABILITY;
+
+#define STORAGE_CRYPTO_DESCRIPTOR_VERSION_1 1
+
+typedef struct _STORAGE_CRYPTO_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD NumKeysSupported;
+ DWORD NumCryptoCapabilities;
+ STORAGE_CRYPTO_CAPABILITY CryptoCapabilities[ANYSIZE_ARRAY];
+} STORAGE_CRYPTO_DESCRIPTOR, *PSTORAGE_CRYPTO_DESCRIPTOR;
+
+#define STORAGE_TIER_NAME_LENGTH (256)
+#define STORAGE_TIER_DESCRIPTION_LENGTH (512)
+
+#define STORAGE_TIER_FLAG_NO_SEEK_PENALTY (0x00020000)
+#define STORAGE_TIER_FLAG_WRITE_BACK_CACHE (0x00200000)
+#define STORAGE_TIER_FLAG_READ_CACHE (0x00400000)
+#define STORAGE_TIER_FLAG_PARITY (0x00800000)
+#define STORAGE_TIER_FLAG_SMR (0x01000000)
+
+typedef enum _STORAGE_TIER_MEDIA_TYPE {
+ StorageTierMediaTypeUnspecified = 0,
+ StorageTierMediaTypeDisk = 1,
+ StorageTierMediaTypeSsd = 2,
+ StorageTierMediaTypeScm = 4,
+ StorageTierMediaTypeMax
+} STORAGE_TIER_MEDIA_TYPE, *PSTORAGE_TIER_MEDIA_TYPE;
+
+typedef enum _STORAGE_TIER_CLASS {
+ StorageTierClassUnspecified = 0,
+ StorageTierClassCapacity,
+ StorageTierClassPerformance,
+ StorageTierClassMax
+} STORAGE_TIER_CLASS, *PSTORAGE_TIER_CLASS;
+
+typedef struct _STORAGE_TIER {
+ GUID Id;
+ WCHAR Name[STORAGE_TIER_NAME_LENGTH];
+ WCHAR Description[STORAGE_TIER_NAME_LENGTH];
+ DWORDLONG Flags;
+ DWORDLONG ProvisionedCapacity;
+ STORAGE_TIER_MEDIA_TYPE MediaType;
+ STORAGE_TIER_CLASS Class;
+} STORAGE_TIER, *PSTORAGE_TIER;
+
+typedef struct _STORAGE_DEVICE_TIERING_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD Flags;
+ DWORD TotalNumberOfTiers;
+ DWORD NumberOfTiersReturned;
+ STORAGE_TIER Tiers[ANYSIZE_ARRAY];
+} STORAGE_DEVICE_TIERING_DESCRIPTOR, *PSTORAGE_DEVICE_TIERING_DESCRIPTOR;
+
+typedef struct _STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ DWORD NumberOfFaultDomains;
+ GUID FaultDomainIds[ANYSIZE_ARRAY];
+} STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR, *PSTORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR;
+
+typedef enum _STORAGE_PROTOCOL_TYPE {
+ ProtocolTypeUnknown = 0x00,
+ ProtocolTypeScsi,
+ ProtocolTypeAta,
+ ProtocolTypeNvme,
+ ProtocolTypeSd,
+ ProtocolTypeUfs,
+ ProtocolTypeProprietary = 0x7E,
+ ProtocolTypeMaxReserved = 0x7F
+} STORAGE_PROTOCOL_TYPE, *PSTORAGE_PROTOCOL_TYPE;
+
+typedef enum _STORAGE_PROTOCOL_NVME_DATA_TYPE {
+ NVMeDataTypeUnknown = 0,
+ NVMeDataTypeIdentify,
+ NVMeDataTypeLogPage,
+ NVMeDataTypeFeature
+} STORAGE_PROTOCOL_NVME_DATA_TYPE, *PSTORAGE_PROTOCOL_NVME_DATA_TYPE;
+
+typedef enum _STORAGE_PROTOCOL_ATA_DATA_TYPE {
+ AtaDataTypeUnknown = 0,
+ AtaDataTypeIdentify,
+ AtaDataTypeLogPage
+} STORAGE_PROTOCOL_ATA_DATA_TYPE, *PSTORAGE_PROTOCOL_ATA_DATA_TYPE;
+
+typedef enum _STORAGE_PROTOCOL_UFS_DATA_TYPE {
+ UfsDataTypeUnknown = 0,
+ UfsDataTypeQueryDescriptor,
+ UfsDataTypeQueryAttribute,
+ UfsDataTypeQueryFlag,
+ UfsDataTypeQueryDmeAttribute,
+ UfsDataTypeQueryDmePeerAttribute,
+ UfsDataTypeMax
+} STORAGE_PROTOCOL_UFS_DATA_TYPE, *PSTORAGE_PROTOCOL_UFS_DATA_TYPE;
+
+typedef union _STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE {
+ __C89_NAMELESS struct {
+ DWORD RetainAsynEvent : 1;
+ DWORD LogSpecificField : 4;
+ DWORD Reserved : 27;
+ };
+ DWORD AsUlong;
+} STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE, *PSTORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE;
+
+typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA {
+ STORAGE_PROTOCOL_TYPE ProtocolType;
+ DWORD DataType;
+ DWORD ProtocolDataRequestValue;
+ DWORD ProtocolDataRequestSubValue;
+ DWORD ProtocolDataOffset;
+ DWORD ProtocolDataLength;
+ DWORD FixedProtocolReturnData;
+ DWORD ProtocolDataRequestSubValue2;
+ DWORD ProtocolDataRequestSubValue3;
+ DWORD ProtocolDataRequestSubValue4;
+} STORAGE_PROTOCOL_SPECIFIC_DATA, *PSTORAGE_PROTOCOL_SPECIFIC_DATA;
+
+typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA_EXT {
+ STORAGE_PROTOCOL_TYPE ProtocolType;
+ DWORD DataType;
+ DWORD ProtocolDataValue;
+ DWORD ProtocolDataSubValue;
+ DWORD ProtocolDataOffset;
+ DWORD ProtocolDataLength;
+ DWORD FixedProtocolReturnData;
+ DWORD ProtocolDataSubValue2;
+ DWORD ProtocolDataSubValue3;
+ DWORD ProtocolDataSubValue4;
+ DWORD ProtocolDataSubValue5;
+ DWORD Reserved[5];
+} STORAGE_PROTOCOL_SPECIFIC_DATA_EXT, *PSTORAGE_PROTOCOL_SPECIFIC_DATA_EXT;
+
+typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ STORAGE_PROTOCOL_SPECIFIC_DATA ProtocolSpecificData;
+} STORAGE_PROTOCOL_DATA_DESCRIPTOR, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR;
+
+typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT {
+ DWORD Version;
+ DWORD Size;
+ STORAGE_PROTOCOL_SPECIFIC_DATA_EXT ProtocolSpecificData;
+} STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT;
+
#if (_WIN32_WINNT >= 0x0601)
typedef struct _REQUEST_OPLOCK_INPUT_BUFFER {
WORD StructureVersion;
diff --git a/lib/libc/include/any-windows-any/winnt.h b/lib/libc/include/any-windows-any/winnt.h
index 5133c1fc9d..9e660bc86e 100644
--- a/lib/libc/include/any-windows-any/winnt.h
+++ b/lib/libc/include/any-windows-any/winnt.h
@@ -4180,6 +4180,44 @@ __buildmemorybarrier()
PVOID UmsCompletionList;
} UMS_CREATE_THREAD_ATTRIBUTES,*PUMS_CREATE_THREAD_ATTRIBUTES;
+#define COMPONENT_KTM 0x01
+#define COMPONENT_VALID_FLAGS COMPONENT_KTM
+
+ typedef struct _COMPONENT_FILTER {
+ DWORD ComponentFlags;
+ } COMPONENT_FILTER,*PCOMPONENT_FILTER;
+
+#define DYNAMIC_EH_CONTINUATION_TARGET_ADD 0x00000001
+#define DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED 0x00000002
+
+ typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGET {
+ ULONG_PTR TargetAddress;
+ ULONG_PTR Flags;
+ } PROCESS_DYNAMIC_EH_CONTINUATION_TARGET,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET;
+
+ typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION {
+ WORD NumberOfTargets;
+ WORD Reserved;
+ DWORD Reserved2;
+ PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets;
+ } PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION;
+
+#define DYNAMIC_ENFORCED_ADDRESS_RANGE_ADD 0x00000001
+#define DYNAMIC_ENFORCED_ADDRESS_RANGE_PROCESSED 0x00000002
+
+ typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE {
+ ULONG_PTR BaseAddress;
+ SIZE_T Size;
+ DWORD Flags;
+ } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE;
+
+ typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION {
+ WORD NumberOfRanges;
+ WORD Reserved;
+ DWORD Reserved2;
+ PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges;
+ } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION;
+
typedef struct _QUOTA_LIMITS {
SIZE_T PagedPoolLimit;
SIZE_T NonPagedPoolLimit;
@@ -4252,6 +4290,8 @@ __buildmemorybarrier()
ProcessPayloadRestrictionPolicy,
ProcessChildProcessPolicy,
ProcessSideChannelIsolationPolicy,
+ ProcessUserShadowStackPolicy,
+ ProcessRedirectionTrustPolicy,
MaxProcessMitigationPolicy
} PROCESS_MITIGATION_POLICY,*PPROCESS_MITIGATION_POLICY;
@@ -4426,6 +4466,36 @@ __buildmemorybarrier()
};
} PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY, *PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY;
+ typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
+ __C89_NAMELESS union {
+ DWORD Flags;
+ __C89_NAMELESS struct {
+ DWORD EnableUserShadowStack : 1;
+ DWORD AuditUserShadowStack : 1;
+ DWORD SetContextIpValidation : 1;
+ DWORD AuditSetContextIpValidation : 1;
+ DWORD EnableUserShadowStackStrictMode : 1;
+ DWORD BlockNonCetBinaries : 1;
+ DWORD BlockNonCetBinariesNonEhcont : 1;
+ DWORD AuditBlockNonCetBinaries : 1;
+ DWORD CetDynamicApisOutOfProcOnly : 1;
+ DWORD SetContextIpValidationRelaxedMode : 1;
+ DWORD ReservedFlags : 22;
+ };
+ };
+ } PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;
+
+ typedef struct _PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY {
+ __C89_NAMELESS union {
+ DWORD Flags;
+ __C89_NAMELESS struct {
+ DWORD EnforceRedirectionTrust : 1;
+ DWORD AuditRedirectionTrust : 1;
+ DWORD ReservedFlags : 30;
+ };
+ };
+ } PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY, *PPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY;
+
typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
LARGE_INTEGER TotalUserTime;
LARGE_INTEGER TotalKernelTime;
@@ -4758,6 +4828,16 @@ __buildmemorybarrier()
DWORD64 CycleTime;
} SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,*PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION;
+ typedef struct _SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION {
+ DWORD Machine : 16;
+ DWORD KernelMode : 1;
+ DWORD UserMode : 1;
+ DWORD Native : 1;
+ DWORD Process : 1;
+ DWORD WoW64Container : 1;
+ DWORD ReservedZero0 : 11;
+ } SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION,*PSYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION;
+
#define PROCESSOR_INTEL_386 386
#define PROCESSOR_INTEL_486 486
#define PROCESSOR_INTEL_PENTIUM 586
@@ -4834,19 +4914,58 @@ __buildmemorybarrier()
#define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 31
#define PF_RDTSCP_INSTRUCTION_AVAILABLE 32
#define PF_RDPID_INSTRUCTION_AVAILABLE 33
+#define PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE 34
+#define PF_MONITORX_INSTRUCTION_AVAILABLE 35
+#define PF_SSSE3_INSTRUCTIONS_AVAILABLE 36
+#define PF_SSE4_1_INSTRUCTIONS_AVAILABLE 37
+#define PF_SSE4_2_INSTRUCTIONS_AVAILABLE 38
+#define PF_AVX_INSTRUCTIONS_AVAILABLE 39
+#define PF_AVX2_INSTRUCTIONS_AVAILABLE 40
+#define PF_AVX512F_INSTRUCTIONS_AVAILABLE 41
+#define PF_ERMS_AVAILABLE 42
+#define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE 43
+#define PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 44
#define XSTATE_LEGACY_FLOATING_POINT (0)
#define XSTATE_LEGACY_SSE (1)
#define XSTATE_GSSE (2)
#define XSTATE_AVX (XSTATE_GSSE)
+#define XSTATE_MPX_BNDREGS (3)
+#define XSTATE_MPX_BNDCSR (4)
+#define XSTATE_AVX512_KMASK (5)
+#define XSTATE_AVX512_ZMM_H (6)
+#define XSTATE_AVX512_ZMM (7)
+#define XSTATE_IPT (8)
+#define XSTATE_PASID (10)
+#define XSTATE_CET_U (11)
+#define XSTATE_CET_S (12)
+#define XSTATE_AMX_TILE_CONFIG (17)
+#define XSTATE_AMX_TILE_DATA (18)
+#define XSTATE_LWP (62)
+#define MAXIMUM_XSTATE_FEATURES (64)
#define XSTATE_MASK_LEGACY_FLOATING_POINT (1ULL << (XSTATE_LEGACY_FLOATING_POINT))
#define XSTATE_MASK_LEGACY_SSE (1ULL << (XSTATE_LEGACY_SSE))
#define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE)
#define XSTATE_MASK_GSSE (1LLU << (XSTATE_GSSE))
#define XSTATE_MASK_AVX (XSTATE_MASK_GSSE)
-
-#define MAXIMUM_XSTATE_FEATURES (64)
+#define XSTATE_MASK_MPX ((1LLU << (XSTATE_MPX_BNDREGS)) | (1LLU << (XSTATE_MPX_BNDCSR)))
+#define XSTATE_MASK_AVX512 ((1LLU << (XSTATE_AVX512_KMASK)) | (1LLU << (XSTATE_AVX512_ZMM_H)) | (1LLU << (XSTATE_AVX512_ZMM)))
+#define XSTATE_MASK_IPT (1LLU << (XSTATE_IPT))
+#define XSTATE_MASK_PASID (1LLU << (XSTATE_PASID))
+#define XSTATE_MASK_CET_U (1LLU << (XSTATE_CET_U))
+#define XSTATE_MASK_CET_S (1LLU << (XSTATE_CET_S))
+#define XSTATE_MASK_AMX_TILE_CONFIG (1LLU << (XSTATE_AMX_TILE_CONFIG))
+#define XSTATE_MASK_AMX_TILE_DATA (1LLU << (XSTATE_AMX_TILE_DATA))
+#define XSTATE_MASK_LWP (1LLU << (XSTATE_LWP))
+#if defined(_AMD64_) || defined(__x86_64__)
+#define XSTATE_MASK_ALLOWED (XSTATE_MASK_LEGACY | XSTATE_MASK_AVX | XSTATE_MASK_MPX | XSTATE_MASK_AVX512 | XSTATE_MASK_IPT | XSTATE_MASK_PASID | XSTATE_MASK_CET_U | XSTATE_MASK_AMX_TILE_CONFIG | XSTATE_MASK_AMX_TILE_DATA | XSTATE_MASK_LWP)
+#elif defined(_X86_) || defined(__i386__)
+#define XSTATE_MASK_ALLOWED (XSTATE_MASK_LEGACY | XSTATE_MASK_AVX | XSTATE_MASK_MPX | XSTATE_MASK_AVX512 | XSTATE_MASK_IPT | XSTATE_MASK_CET_U | XSTATE_MASK_LWP)
+#endif
+#define XSTATE_MASK_PERSISTENT ((1LLU << (XSTATE_MPX_BNDCSR)) | XSTATE_MASK_LWP)
+#define XSTATE_MASK_USER_VISIBLE_SUPERVISOR (XSTATE_MASK_CET_U)
+#define XSTATE_MASK_LARGE_FEATURES (XSTATE_MASK_AMX_TILE_DATA)
typedef struct _XSTATE_FEATURE {
DWORD Offset;
diff --git a/lib/libc/include/any-windows-any/winsock2.h b/lib/libc/include/any-windows-any/winsock2.h
index 99f4c249d6..fce0729b51 100644
--- a/lib/libc/include/any-windows-any/winsock2.h
+++ b/lib/libc/include/any-windows-any/winsock2.h
@@ -1011,6 +1011,9 @@ typedef unsigned int GROUP;
#ifndef __INSIDE_CYGWIN__
WINSOCK_API_LINKAGE u_long WSAAPI htonl(u_long hostlong);
WINSOCK_API_LINKAGE u_short WSAAPI htons(u_short hostshort);
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
+ __forceinline unsigned __int64 htonll(unsigned __int64 Value) { return (((unsigned __int64)htonl(Value & 0xFFFFFFFFUL)) << 32) | htonl((u_long)(Value >> 32)); }
+#endif
#endif /* !__INSIDE_CYGWIN__ */
WINSOCK_API_LINKAGE unsigned __LONG32 WSAAPI inet_addr(const char *cp);
WINSOCK_API_LINKAGE char *WSAAPI inet_ntoa(struct in_addr in);
@@ -1018,6 +1021,9 @@ typedef unsigned int GROUP;
#ifndef __INSIDE_CYGWIN__
WINSOCK_API_LINKAGE u_long WSAAPI ntohl(u_long netlong);
WINSOCK_API_LINKAGE u_short WSAAPI ntohs(u_short netshort);
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
+ __forceinline unsigned __int64 ntohll(unsigned __int64 Value) { return (((unsigned __int64)ntohl(Value & 0xFFFFFFFFUL)) << 32) | ntohl((u_long)(Value >> 32)); }
+#endif
#endif /* !__INSIDE_CYGWIN__ */
WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
WINSOCK_API_LINKAGE int WSAAPI recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
@@ -1032,6 +1038,7 @@ typedef unsigned int GROUP;
WINSOCK_API_LINKAGE struct hostent *WSAAPI gethostbyaddr(const char *addr,int len,int type);
WINSOCK_API_LINKAGE struct hostent *WSAAPI gethostbyname(const char *name);
WINSOCK_API_LINKAGE int WSAAPI gethostname(char *name,int namelen);
+ WINSOCK_API_LINKAGE int WSAAPI GetHostNameW(PWSTR name, int namelen);
WINSOCK_API_LINKAGE struct servent *WSAAPI getservbyport(int port,const char *proto);
WINSOCK_API_LINKAGE struct servent *WSAAPI getservbyname(const char *name,const char *proto);
WINSOCK_API_LINKAGE struct protoent *WSAAPI getprotobynumber(int number);
diff --git a/lib/libc/include/any-windows-any/winsvc.h b/lib/libc/include/any-windows-any/winsvc.h
index 182db889da..aa7ba1ac91 100644
--- a/lib/libc/include/any-windows-any/winsvc.h
+++ b/lib/libc/include/any-windows-any/winsvc.h
@@ -48,6 +48,12 @@ extern "C" {
#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
#define SERVICE_CONTROL_POWEREVENT 0x0000000D
#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
+#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
+#define SERVICE_CONTROL_TIMECHANGE 0x00000010
+#define SERVICE_CONTROL_USER_LOGOFF 0x00000011
+#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
+#define SERVICE_CONTROL_LOWRESOURCES 0x00000060
+#define SERVICE_CONTROL_SYSTEMLOWRESOURCES 0x00000061
#define SERVICE_STOPPED 0x00000001
#define SERVICE_START_PENDING 0x00000002
@@ -65,6 +71,12 @@ extern "C" {
#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
#define SERVICE_ACCEPT_POWEREVENT 0x00000040
#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
+#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
+#define SERVICE_ACCEPT_TIMECHANGE 0x00000200
+#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
+#define SERVICE_ACCEPT_USER_LOGOFF 0x00000800
+#define SERVICE_ACCEPT_LOWRESOURCES 0x00002000
+#define SERVICE_ACCEPT_SYSTEMLOWRESOURCES 0x00004000
#define SC_MANAGER_CONNECT 0x0001
#define SC_MANAGER_CREATE_SERVICE 0x0002
@@ -91,6 +103,107 @@ extern "C" {
#define SERVICE_CONFIG_DESCRIPTION 1
#define SERVICE_CONFIG_FAILURE_ACTIONS 2
+#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
+#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
+#define SERVICE_CONFIG_SERVICE_SID_INFO 5
+#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
+#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
+#define SERVICE_CONFIG_TRIGGER_INFO 8
+#define SERVICE_CONFIG_PREFERRED_NODE 9
+#define SERVICE_CONFIG_LAUNCH_PROTECTED 12
+
+#define SERVICE_NOTIFY_STATUS_CHANGE_1 1
+#define SERVICE_NOTIFY_STATUS_CHANGE_2 2
+
+#define SERVICE_NOTIFY_STATUS_CHANGE SERVICE_NOTIFY_STATUS_CHANGE_2
+
+#define SERVICE_NOTIFY_STOPPED 0x00000001
+#define SERVICE_NOTIFY_START_PENDING 0x00000002
+#define SERVICE_NOTIFY_STOP_PENDING 0x00000004
+#define SERVICE_NOTIFY_RUNNING 0x00000008
+#define SERVICE_NOTIFY_CONTINUE_PENDING 0x00000010
+#define SERVICE_NOTIFY_PAUSE_PENDING 0x00000020
+#define SERVICE_NOTIFY_PAUSED 0x00000040
+#define SERVICE_NOTIFY_CREATED 0x00000080
+#define SERVICE_NOTIFY_DELETED 0x00000100
+#define SERVICE_NOTIFY_DELETE_PENDING 0x00000200
+
+#define SERVICE_STOP_REASON_FLAG_MIN 0x00000000
+#define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000
+#define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000
+#define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000
+#define SERVICE_STOP_REASON_FLAG_MAX 0x80000000
+
+#define SERVICE_STOP_REASON_MAJOR_MIN 0x00000000
+#define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000
+#define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000
+#define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000
+#define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000
+#define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000
+#define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000
+#define SERVICE_STOP_REASON_MAJOR_MAX 0x00070000
+#define SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM 0x00400000
+#define SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM 0x00ff0000
+
+#define SERVICE_STOP_REASON_MINOR_MIN 0x00000000
+#define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001
+#define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002
+#define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003
+#define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004
+#define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005
+#define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006
+#define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007
+#define SERVICE_STOP_REASON_MINOR_DISK 0x00000008
+#define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009
+#define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a
+#define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b
+#define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c
+#define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d
+#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e
+#define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f
+#define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010
+#define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011
+#define SERVICE_STOP_REASON_MINOR_WMI 0x00000012
+#define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013
+#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x00000014
+#define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015
+#define SERVICE_STOP_REASON_MINOR_MMC 0x00000016
+#define SERVICE_STOP_REASON_MINOR_NONE 0x00000017
+#define SERVICE_STOP_REASON_MINOR_MEMOTYLIMIT 0x00000018
+#define SERVICE_STOP_REASON_MINOR_MAX 0x00000019
+#define SERVICE_STOP_REASON_MINOR_MIN_CUSTOM 0x00000100
+#define SERVICE_STOP_REASON_MINOR_MAX_CUSTOM 0x0000FFFF
+
+#define SERVICE_CONTROL_STATUS_REASON_INFO 1
+
+#define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1
+#define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2
+#define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3
+#define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4
+#define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5
+#define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6
+#define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7
+#define SERVICE_TRIGGER_TYPE_CUSTOM 20
+#define SERVICE_TRIGGER_TYPE_AGGREGATE 30
+
+#define SERVICE_TRIGGER_DATA_TYPE_BINARY 1
+#define SERVICE_TRIGGER_DATA_TYPE_STRING 2
+#define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3
+#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
+#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
+
+#define SERVICE_START_REASON_DEMAND 0x00000001
+#define SERVICE_START_REASON_AUTO 0x00000002
+#define SERVICE_START_REASON_TRIGGER 0x00000004
+#define SERVICE_START_REASON_RESTART_ON_FAILURE 0x00000008
+#define SERVICE_START_REASON_DELAYEDAUTO 0x00000010
+
+#define SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON 1
+
+#define SERVICE_LAUNCH_PROTECTED_NONE 0
+#define SERVICE_LAUNCH_PROTECTED_WINDOWS 1
+#define SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT 2
+#define SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT 3
typedef struct _SERVICE_DESCRIPTIONA {
LPSTR lpDescription;
@@ -366,7 +479,6 @@ __MINGW_TYPEDEF_AW(PSERVICE_CONTROL_STATUS_REASON_PARAMS)
#define SERVICE_STOP_REASON_MINOR_MMC 0x00000016
#define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011
#define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009
-#define SERVICE_STOP_REASON_MINOR_NONE 0x00060000
#define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001
#define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c
#define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005
@@ -376,7 +488,6 @@ __MINGW_TYPEDEF_AW(PSERVICE_CONTROL_STATUS_REASON_PARAMS)
#define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d
#define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013
#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e
-#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x0000000e
#define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007
#define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004
#define SERVICE_STOP_REASON_MINOR_WMI 0x00000012
diff --git a/lib/libc/include/any-windows-any/winuser.h b/lib/libc/include/any-windows-any/winuser.h
index 01f2a5be42..7252a53ea5 100644
--- a/lib/libc/include/any-windows-any/winuser.h
+++ b/lib/libc/include/any-windows-any/winuser.h
@@ -2241,7 +2241,10 @@ extern "C" {
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
WINUSERAPI WINBOOL WINAPI GetLayeredWindowAttributes (HWND hwnd, COLORREF *pcrKey, BYTE *pbAlpha, DWORD *pdwFlags);
-#define PW_CLIENTONLY 0x00000001
+#define PW_CLIENTONLY 0x00000001
+#if _WIN32_WINNT >= 0x0603
+#define PW_RENDERFULLCONTENT 0x00000002
+#endif
WINUSERAPI WINBOOL WINAPI PrintWindow (HWND hwnd, HDC hdcBlt, UINT nFlags);
WINUSERAPI WINBOOL WINAPI SetLayeredWindowAttributes (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
diff --git a/lib/libc/include/any-windows-any/wmcodecdsp.h b/lib/libc/include/any-windows-any/wmcodecdsp.h
index 1c31b3280e..f0ab13622a 100644
--- a/lib/libc/include/any-windows-any/wmcodecdsp.h
+++ b/lib/libc/include/any-windows-any/wmcodecdsp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmcodecdsp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmcodecdsp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wmcontainer.h b/lib/libc/include/any-windows-any/wmcontainer.h
index 8d3eb16a99..6b9e5b857c 100644
--- a/lib/libc/include/any-windows-any/wmcontainer.h
+++ b/lib/libc/include/any-windows-any/wmcontainer.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmcontainer.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmcontainer.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wmdrmsdk.h b/lib/libc/include/any-windows-any/wmdrmsdk.h
index 0cd5db2c01..62286b5f8e 100644
--- a/lib/libc/include/any-windows-any/wmdrmsdk.h
+++ b/lib/libc/include/any-windows-any/wmdrmsdk.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmdrmsdk.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmdrmsdk.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wmp.h b/lib/libc/include/any-windows-any/wmp.h
index 2eb7a53fc7..46dd351b82 100644
--- a/lib/libc/include/any-windows-any/wmp.h
+++ b/lib/libc/include/any-windows-any/wmp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wmprealestate.h b/lib/libc/include/any-windows-any/wmprealestate.h
index 526ca1b7da..1c5f13b5a1 100644
--- a/lib/libc/include/any-windows-any/wmprealestate.h
+++ b/lib/libc/include/any-windows-any/wmprealestate.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmprealestate.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmprealestate.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wmpservices.h b/lib/libc/include/any-windows-any/wmpservices.h
index 4cea73b586..cb391299ec 100644
--- a/lib/libc/include/any-windows-any/wmpservices.h
+++ b/lib/libc/include/any-windows-any/wmpservices.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmpservices.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmpservices.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wmsbuffer.h b/lib/libc/include/any-windows-any/wmsbuffer.h
index 280908ccdc..c54846d468 100644
--- a/lib/libc/include/any-windows-any/wmsbuffer.h
+++ b/lib/libc/include/any-windows-any/wmsbuffer.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmsbuffer.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmsbuffer.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -26,6 +26,22 @@ interface INSSBuffer;
#endif /* __cplusplus */
#endif
+#ifndef __INSSBuffer2_FWD_DEFINED__
+#define __INSSBuffer2_FWD_DEFINED__
+typedef interface INSSBuffer2 INSSBuffer2;
+#ifdef __cplusplus
+interface INSSBuffer2;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __INSSBuffer3_FWD_DEFINED__
+#define __INSSBuffer3_FWD_DEFINED__
+typedef interface INSSBuffer3 INSSBuffer3;
+#ifdef __cplusplus
+interface INSSBuffer3;
+#endif /* __cplusplus */
+#endif
+
/* Headers for imported files */
#include <objidl.h>
@@ -157,6 +173,303 @@ static FORCEINLINE HRESULT INSSBuffer_GetBufferAndLength(INSSBuffer* This,BYTE *
#endif /* __INSSBuffer_INTERFACE_DEFINED__ */
+/*****************************************************************************
+ * INSSBuffer2 interface
+ */
+#ifndef __INSSBuffer2_INTERFACE_DEFINED__
+#define __INSSBuffer2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_INSSBuffer2, 0x4f528693, 0x1035, 0x43fe, 0xb4,0x28, 0x75,0x75,0x61,0xad,0x3a,0x68);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4f528693-1035-43fe-b428-757561ad3a68")
+INSSBuffer2 : public INSSBuffer
+{
+ virtual HRESULT STDMETHODCALLTYPE GetSampleProperties(
+ DWORD size,
+ BYTE *props) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSampleProperties(
+ DWORD size,
+ BYTE *props) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(INSSBuffer2, 0x4f528693, 0x1035, 0x43fe, 0xb4,0x28, 0x75,0x75,0x61,0xad,0x3a,0x68)
+#endif
+#else
+typedef struct INSSBuffer2Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ INSSBuffer2 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ INSSBuffer2 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ INSSBuffer2 *This);
+
+ /*** INSSBuffer methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetLength)(
+ INSSBuffer2 *This,
+ DWORD *pdwLength);
+
+ HRESULT (STDMETHODCALLTYPE *SetLength)(
+ INSSBuffer2 *This,
+ DWORD dwLength);
+
+ HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
+ INSSBuffer2 *This,
+ DWORD *pdwLength);
+
+ HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+ INSSBuffer2 *This,
+ BYTE **ppdwBuffer);
+
+ HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)(
+ INSSBuffer2 *This,
+ BYTE **ppdwBuffer,
+ DWORD *pdwLength);
+
+ /*** INSSBuffer2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetSampleProperties)(
+ INSSBuffer2 *This,
+ DWORD size,
+ BYTE *props);
+
+ HRESULT (STDMETHODCALLTYPE *SetSampleProperties)(
+ INSSBuffer2 *This,
+ DWORD size,
+ BYTE *props);
+
+ END_INTERFACE
+} INSSBuffer2Vtbl;
+
+interface INSSBuffer2 {
+ CONST_VTBL INSSBuffer2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define INSSBuffer2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define INSSBuffer2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define INSSBuffer2_Release(This) (This)->lpVtbl->Release(This)
+/*** INSSBuffer methods ***/
+#define INSSBuffer2_GetLength(This,pdwLength) (This)->lpVtbl->GetLength(This,pdwLength)
+#define INSSBuffer2_SetLength(This,dwLength) (This)->lpVtbl->SetLength(This,dwLength)
+#define INSSBuffer2_GetMaxLength(This,pdwLength) (This)->lpVtbl->GetMaxLength(This,pdwLength)
+#define INSSBuffer2_GetBuffer(This,ppdwBuffer) (This)->lpVtbl->GetBuffer(This,ppdwBuffer)
+#define INSSBuffer2_GetBufferAndLength(This,ppdwBuffer,pdwLength) (This)->lpVtbl->GetBufferAndLength(This,ppdwBuffer,pdwLength)
+/*** INSSBuffer2 methods ***/
+#define INSSBuffer2_GetSampleProperties(This,size,props) (This)->lpVtbl->GetSampleProperties(This,size,props)
+#define INSSBuffer2_SetSampleProperties(This,size,props) (This)->lpVtbl->SetSampleProperties(This,size,props)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT INSSBuffer2_QueryInterface(INSSBuffer2* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG INSSBuffer2_AddRef(INSSBuffer2* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG INSSBuffer2_Release(INSSBuffer2* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** INSSBuffer methods ***/
+static FORCEINLINE HRESULT INSSBuffer2_GetLength(INSSBuffer2* This,DWORD *pdwLength) {
+ return This->lpVtbl->GetLength(This,pdwLength);
+}
+static FORCEINLINE HRESULT INSSBuffer2_SetLength(INSSBuffer2* This,DWORD dwLength) {
+ return This->lpVtbl->SetLength(This,dwLength);
+}
+static FORCEINLINE HRESULT INSSBuffer2_GetMaxLength(INSSBuffer2* This,DWORD *pdwLength) {
+ return This->lpVtbl->GetMaxLength(This,pdwLength);
+}
+static FORCEINLINE HRESULT INSSBuffer2_GetBuffer(INSSBuffer2* This,BYTE **ppdwBuffer) {
+ return This->lpVtbl->GetBuffer(This,ppdwBuffer);
+}
+static FORCEINLINE HRESULT INSSBuffer2_GetBufferAndLength(INSSBuffer2* This,BYTE **ppdwBuffer,DWORD *pdwLength) {
+ return This->lpVtbl->GetBufferAndLength(This,ppdwBuffer,pdwLength);
+}
+/*** INSSBuffer2 methods ***/
+static FORCEINLINE HRESULT INSSBuffer2_GetSampleProperties(INSSBuffer2* This,DWORD size,BYTE *props) {
+ return This->lpVtbl->GetSampleProperties(This,size,props);
+}
+static FORCEINLINE HRESULT INSSBuffer2_SetSampleProperties(INSSBuffer2* This,DWORD size,BYTE *props) {
+ return This->lpVtbl->SetSampleProperties(This,size,props);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __INSSBuffer2_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * INSSBuffer3 interface
+ */
+#ifndef __INSSBuffer3_INTERFACE_DEFINED__
+#define __INSSBuffer3_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_INSSBuffer3, 0xc87ceaaf, 0x75be, 0x4bc4, 0x84,0xeb, 0xac,0x27,0x98,0x50,0x76,0x72);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("c87ceaaf-75be-4bc4-84eb-ac2798507672")
+INSSBuffer3 : public INSSBuffer2
+{
+ virtual HRESULT STDMETHODCALLTYPE SetProperty(
+ GUID id,
+ void *value,
+ DWORD size) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProperty(
+ GUID id,
+ void *value,
+ DWORD *size) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(INSSBuffer3, 0xc87ceaaf, 0x75be, 0x4bc4, 0x84,0xeb, 0xac,0x27,0x98,0x50,0x76,0x72)
+#endif
+#else
+typedef struct INSSBuffer3Vtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ INSSBuffer3 *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ INSSBuffer3 *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ INSSBuffer3 *This);
+
+ /*** INSSBuffer methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetLength)(
+ INSSBuffer3 *This,
+ DWORD *pdwLength);
+
+ HRESULT (STDMETHODCALLTYPE *SetLength)(
+ INSSBuffer3 *This,
+ DWORD dwLength);
+
+ HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
+ INSSBuffer3 *This,
+ DWORD *pdwLength);
+
+ HRESULT (STDMETHODCALLTYPE *GetBuffer)(
+ INSSBuffer3 *This,
+ BYTE **ppdwBuffer);
+
+ HRESULT (STDMETHODCALLTYPE *GetBufferAndLength)(
+ INSSBuffer3 *This,
+ BYTE **ppdwBuffer,
+ DWORD *pdwLength);
+
+ /*** INSSBuffer2 methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetSampleProperties)(
+ INSSBuffer3 *This,
+ DWORD size,
+ BYTE *props);
+
+ HRESULT (STDMETHODCALLTYPE *SetSampleProperties)(
+ INSSBuffer3 *This,
+ DWORD size,
+ BYTE *props);
+
+ /*** INSSBuffer3 methods ***/
+ HRESULT (STDMETHODCALLTYPE *SetProperty)(
+ INSSBuffer3 *This,
+ GUID id,
+ void *value,
+ DWORD size);
+
+ HRESULT (STDMETHODCALLTYPE *GetProperty)(
+ INSSBuffer3 *This,
+ GUID id,
+ void *value,
+ DWORD *size);
+
+ END_INTERFACE
+} INSSBuffer3Vtbl;
+
+interface INSSBuffer3 {
+ CONST_VTBL INSSBuffer3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define INSSBuffer3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define INSSBuffer3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define INSSBuffer3_Release(This) (This)->lpVtbl->Release(This)
+/*** INSSBuffer methods ***/
+#define INSSBuffer3_GetLength(This,pdwLength) (This)->lpVtbl->GetLength(This,pdwLength)
+#define INSSBuffer3_SetLength(This,dwLength) (This)->lpVtbl->SetLength(This,dwLength)
+#define INSSBuffer3_GetMaxLength(This,pdwLength) (This)->lpVtbl->GetMaxLength(This,pdwLength)
+#define INSSBuffer3_GetBuffer(This,ppdwBuffer) (This)->lpVtbl->GetBuffer(This,ppdwBuffer)
+#define INSSBuffer3_GetBufferAndLength(This,ppdwBuffer,pdwLength) (This)->lpVtbl->GetBufferAndLength(This,ppdwBuffer,pdwLength)
+/*** INSSBuffer2 methods ***/
+#define INSSBuffer3_GetSampleProperties(This,size,props) (This)->lpVtbl->GetSampleProperties(This,size,props)
+#define INSSBuffer3_SetSampleProperties(This,size,props) (This)->lpVtbl->SetSampleProperties(This,size,props)
+/*** INSSBuffer3 methods ***/
+#define INSSBuffer3_SetProperty(This,id,value,size) (This)->lpVtbl->SetProperty(This,id,value,size)
+#define INSSBuffer3_GetProperty(This,id,value,size) (This)->lpVtbl->GetProperty(This,id,value,size)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT INSSBuffer3_QueryInterface(INSSBuffer3* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG INSSBuffer3_AddRef(INSSBuffer3* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG INSSBuffer3_Release(INSSBuffer3* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** INSSBuffer methods ***/
+static FORCEINLINE HRESULT INSSBuffer3_GetLength(INSSBuffer3* This,DWORD *pdwLength) {
+ return This->lpVtbl->GetLength(This,pdwLength);
+}
+static FORCEINLINE HRESULT INSSBuffer3_SetLength(INSSBuffer3* This,DWORD dwLength) {
+ return This->lpVtbl->SetLength(This,dwLength);
+}
+static FORCEINLINE HRESULT INSSBuffer3_GetMaxLength(INSSBuffer3* This,DWORD *pdwLength) {
+ return This->lpVtbl->GetMaxLength(This,pdwLength);
+}
+static FORCEINLINE HRESULT INSSBuffer3_GetBuffer(INSSBuffer3* This,BYTE **ppdwBuffer) {
+ return This->lpVtbl->GetBuffer(This,ppdwBuffer);
+}
+static FORCEINLINE HRESULT INSSBuffer3_GetBufferAndLength(INSSBuffer3* This,BYTE **ppdwBuffer,DWORD *pdwLength) {
+ return This->lpVtbl->GetBufferAndLength(This,ppdwBuffer,pdwLength);
+}
+/*** INSSBuffer2 methods ***/
+static FORCEINLINE HRESULT INSSBuffer3_GetSampleProperties(INSSBuffer3* This,DWORD size,BYTE *props) {
+ return This->lpVtbl->GetSampleProperties(This,size,props);
+}
+static FORCEINLINE HRESULT INSSBuffer3_SetSampleProperties(INSSBuffer3* This,DWORD size,BYTE *props) {
+ return This->lpVtbl->SetSampleProperties(This,size,props);
+}
+/*** INSSBuffer3 methods ***/
+static FORCEINLINE HRESULT INSSBuffer3_SetProperty(INSSBuffer3* This,GUID id,void *value,DWORD size) {
+ return This->lpVtbl->SetProperty(This,id,value,size);
+}
+static FORCEINLINE HRESULT INSSBuffer3_GetProperty(INSSBuffer3* This,GUID id,void *value,DWORD *size) {
+ return This->lpVtbl->GetProperty(This,id,value,size);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __INSSBuffer3_INTERFACE_DEFINED__ */
+
/* Begin additional prototypes for all interfaces */
diff --git a/lib/libc/include/any-windows-any/wmsdkidl.h b/lib/libc/include/any-windows-any/wmsdkidl.h
index 497b10ebc0..3feae052aa 100644
--- a/lib/libc/include/any-windows-any/wmsdkidl.h
+++ b/lib/libc/include/any-windows-any/wmsdkidl.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wmsdkidl.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wmsdkidl.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -34,6 +34,14 @@ interface IWMReaderCallback;
#endif /* __cplusplus */
#endif
+#ifndef __IWMReaderCallbackAdvanced_FWD_DEFINED__
+#define __IWMReaderCallbackAdvanced_FWD_DEFINED__
+typedef interface IWMReaderCallbackAdvanced IWMReaderCallbackAdvanced;
+#ifdef __cplusplus
+interface IWMReaderCallbackAdvanced;
+#endif /* __cplusplus */
+#endif
+
#ifndef __IWMStreamList_FWD_DEFINED__
#define __IWMStreamList_FWD_DEFINED__
typedef interface IWMStreamList IWMStreamList;
@@ -458,6 +466,22 @@ interface IWMLicenseRestore;
#endif /* __cplusplus */
#endif
+#ifndef __IWMIStreamProps_FWD_DEFINED__
+#define __IWMIStreamProps_FWD_DEFINED__
+typedef interface IWMIStreamProps IWMIStreamProps;
+#ifdef __cplusplus
+interface IWMIStreamProps;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMCredentialCallback_FWD_DEFINED__
+#define __IWMCredentialCallback_FWD_DEFINED__
+typedef interface IWMCredentialCallback IWMCredentialCallback;
+#ifdef __cplusplus
+interface IWMCredentialCallback;
+#endif /* __cplusplus */
+#endif
+
/* Headers for imported files */
#include <oaidl.h>
@@ -519,6 +543,11 @@ typedef struct _WMReaderClientInfo {
QWORD qwHostVersion;
WCHAR *wszPlayerUserAgent;
} WM_READER_CLIENTINFO;
+enum {
+ WM_SF_CLEANPOINT = 0x1,
+ WM_SF_DISCONTINUITY = 0x2,
+ WM_SF_DATALOSS = 0x4
+};
typedef enum WMT_ATTR_DATATYPE {
WMT_TYPE_DWORD = 0,
WMT_TYPE_STRING = 1,
@@ -826,6 +855,172 @@ static FORCEINLINE HRESULT IWMReaderCallback_OnSample(IWMReaderCallback* This,DW
#endif /* __IWMReaderCallback_INTERFACE_DEFINED__ */
/*****************************************************************************
+ * IWMReaderCallbackAdvanced interface
+ */
+#ifndef __IWMReaderCallbackAdvanced_INTERFACE_DEFINED__
+#define __IWMReaderCallbackAdvanced_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMReaderCallbackAdvanced, 0x96406beb, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("96406beb-2b2b-11d3-b36b-00c04f6108ff")
+IWMReaderCallbackAdvanced : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE OnStreamSample(
+ WORD stream_number,
+ QWORD pts,
+ QWORD duration,
+ DWORD flags,
+ INSSBuffer *sample,
+ void *context) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnTime(
+ QWORD time,
+ void *context) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnStreamSelection(
+ WORD count,
+ WORD *stream_numbers,
+ WMT_STREAM_SELECTION *selections,
+ void *context) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnOutputPropsChanged(
+ DWORD output_number,
+ WM_MEDIA_TYPE *mt,
+ void *context) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AllocateForStream(
+ WORD stream_number,
+ DWORD size,
+ INSSBuffer **sample,
+ void *context) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AllocateForOutput(
+ DWORD output_number,
+ DWORD size,
+ INSSBuffer **sample,
+ void *context) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMReaderCallbackAdvanced, 0x96406beb, 0x2b2b, 0x11d3, 0xb3,0x6b, 0x00,0xc0,0x4f,0x61,0x08,0xff)
+#endif
+#else
+typedef struct IWMReaderCallbackAdvancedVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWMReaderCallbackAdvanced *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWMReaderCallbackAdvanced *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWMReaderCallbackAdvanced *This);
+
+ /*** IWMReaderCallbackAdvanced methods ***/
+ HRESULT (STDMETHODCALLTYPE *OnStreamSample)(
+ IWMReaderCallbackAdvanced *This,
+ WORD stream_number,
+ QWORD pts,
+ QWORD duration,
+ DWORD flags,
+ INSSBuffer *sample,
+ void *context);
+
+ HRESULT (STDMETHODCALLTYPE *OnTime)(
+ IWMReaderCallbackAdvanced *This,
+ QWORD time,
+ void *context);
+
+ HRESULT (STDMETHODCALLTYPE *OnStreamSelection)(
+ IWMReaderCallbackAdvanced *This,
+ WORD count,
+ WORD *stream_numbers,
+ WMT_STREAM_SELECTION *selections,
+ void *context);
+
+ HRESULT (STDMETHODCALLTYPE *OnOutputPropsChanged)(
+ IWMReaderCallbackAdvanced *This,
+ DWORD output_number,
+ WM_MEDIA_TYPE *mt,
+ void *context);
+
+ HRESULT (STDMETHODCALLTYPE *AllocateForStream)(
+ IWMReaderCallbackAdvanced *This,
+ WORD stream_number,
+ DWORD size,
+ INSSBuffer **sample,
+ void *context);
+
+ HRESULT (STDMETHODCALLTYPE *AllocateForOutput)(
+ IWMReaderCallbackAdvanced *This,
+ DWORD output_number,
+ DWORD size,
+ INSSBuffer **sample,
+ void *context);
+
+ END_INTERFACE
+} IWMReaderCallbackAdvancedVtbl;
+
+interface IWMReaderCallbackAdvanced {
+ CONST_VTBL IWMReaderCallbackAdvancedVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMReaderCallbackAdvanced_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMReaderCallbackAdvanced_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMReaderCallbackAdvanced_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMReaderCallbackAdvanced methods ***/
+#define IWMReaderCallbackAdvanced_OnStreamSample(This,stream_number,pts,duration,flags,sample,context) (This)->lpVtbl->OnStreamSample(This,stream_number,pts,duration,flags,sample,context)
+#define IWMReaderCallbackAdvanced_OnTime(This,time,context) (This)->lpVtbl->OnTime(This,time,context)
+#define IWMReaderCallbackAdvanced_OnStreamSelection(This,count,stream_numbers,selections,context) (This)->lpVtbl->OnStreamSelection(This,count,stream_numbers,selections,context)
+#define IWMReaderCallbackAdvanced_OnOutputPropsChanged(This,output_number,mt,context) (This)->lpVtbl->OnOutputPropsChanged(This,output_number,mt,context)
+#define IWMReaderCallbackAdvanced_AllocateForStream(This,stream_number,size,sample,context) (This)->lpVtbl->AllocateForStream(This,stream_number,size,sample,context)
+#define IWMReaderCallbackAdvanced_AllocateForOutput(This,output_number,size,sample,context) (This)->lpVtbl->AllocateForOutput(This,output_number,size,sample,context)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_QueryInterface(IWMReaderCallbackAdvanced* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMReaderCallbackAdvanced_AddRef(IWMReaderCallbackAdvanced* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMReaderCallbackAdvanced_Release(IWMReaderCallbackAdvanced* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWMReaderCallbackAdvanced methods ***/
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_OnStreamSample(IWMReaderCallbackAdvanced* This,WORD stream_number,QWORD pts,QWORD duration,DWORD flags,INSSBuffer *sample,void *context) {
+ return This->lpVtbl->OnStreamSample(This,stream_number,pts,duration,flags,sample,context);
+}
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_OnTime(IWMReaderCallbackAdvanced* This,QWORD time,void *context) {
+ return This->lpVtbl->OnTime(This,time,context);
+}
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_OnStreamSelection(IWMReaderCallbackAdvanced* This,WORD count,WORD *stream_numbers,WMT_STREAM_SELECTION *selections,void *context) {
+ return This->lpVtbl->OnStreamSelection(This,count,stream_numbers,selections,context);
+}
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_OnOutputPropsChanged(IWMReaderCallbackAdvanced* This,DWORD output_number,WM_MEDIA_TYPE *mt,void *context) {
+ return This->lpVtbl->OnOutputPropsChanged(This,output_number,mt,context);
+}
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_AllocateForStream(IWMReaderCallbackAdvanced* This,WORD stream_number,DWORD size,INSSBuffer **sample,void *context) {
+ return This->lpVtbl->AllocateForStream(This,stream_number,size,sample,context);
+}
+static FORCEINLINE HRESULT IWMReaderCallbackAdvanced_AllocateForOutput(IWMReaderCallbackAdvanced* This,DWORD output_number,DWORD size,INSSBuffer **sample,void *context) {
+ return This->lpVtbl->AllocateForOutput(This,output_number,size,sample,context);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWMReaderCallbackAdvanced_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
* IWMStreamList interface
*/
#ifndef __IWMStreamList_INTERFACE_DEFINED__
@@ -6757,7 +6952,7 @@ IWMReaderAllocatorEx : public IUnknown
void *pvContext) = 0;
virtual HRESULT STDMETHODCALLTYPE AllocateForOutputEx(
- WORD wOutputNum,
+ DWORD output,
DWORD cbBuffer,
INSSBuffer **ppBuffer,
DWORD dwFlags,
@@ -6798,7 +6993,7 @@ typedef struct IWMReaderAllocatorExVtbl {
HRESULT (STDMETHODCALLTYPE *AllocateForOutputEx)(
IWMReaderAllocatorEx *This,
- WORD wOutputNum,
+ DWORD output,
DWORD cbBuffer,
INSSBuffer **ppBuffer,
DWORD dwFlags,
@@ -6821,7 +7016,7 @@ interface IWMReaderAllocatorEx {
#define IWMReaderAllocatorEx_Release(This) (This)->lpVtbl->Release(This)
/*** IWMReaderAllocatorEx methods ***/
#define IWMReaderAllocatorEx_AllocateForStreamEx(This,wStreamNum,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext) (This)->lpVtbl->AllocateForStreamEx(This,wStreamNum,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext)
-#define IWMReaderAllocatorEx_AllocateForOutputEx(This,wOutputNum,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext) (This)->lpVtbl->AllocateForOutputEx(This,wOutputNum,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext)
+#define IWMReaderAllocatorEx_AllocateForOutputEx(This,output,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext) (This)->lpVtbl->AllocateForOutputEx(This,output,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IWMReaderAllocatorEx_QueryInterface(IWMReaderAllocatorEx* This,REFIID riid,void **ppvObject) {
@@ -6837,8 +7032,8 @@ static FORCEINLINE ULONG IWMReaderAllocatorEx_Release(IWMReaderAllocatorEx* This
static FORCEINLINE HRESULT IWMReaderAllocatorEx_AllocateForStreamEx(IWMReaderAllocatorEx* This,WORD wStreamNum,DWORD cbBuffer,INSSBuffer **ppBuffer,DWORD dwFlags,QWORD cnsSampleTime,QWORD cnsSampleDuration,void *pvContext) {
return This->lpVtbl->AllocateForStreamEx(This,wStreamNum,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext);
}
-static FORCEINLINE HRESULT IWMReaderAllocatorEx_AllocateForOutputEx(IWMReaderAllocatorEx* This,WORD wOutputNum,DWORD cbBuffer,INSSBuffer **ppBuffer,DWORD dwFlags,QWORD cnsSampleTime,QWORD cnsSampleDuration,void *pvContext) {
- return This->lpVtbl->AllocateForOutputEx(This,wOutputNum,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext);
+static FORCEINLINE HRESULT IWMReaderAllocatorEx_AllocateForOutputEx(IWMReaderAllocatorEx* This,DWORD output,DWORD cbBuffer,INSSBuffer **ppBuffer,DWORD dwFlags,QWORD cnsSampleTime,QWORD cnsSampleDuration,void *pvContext) {
+ return This->lpVtbl->AllocateForOutputEx(This,output,cbBuffer,ppBuffer,dwFlags,cnsSampleTime,cnsSampleDuration,pvContext);
}
#endif
#endif
@@ -11857,6 +12052,180 @@ static FORCEINLINE HRESULT IWMLicenseRestore_CancelLicenseRestore(IWMLicenseRest
#endif /* __IWMLicenseRestore_INTERFACE_DEFINED__ */
+/*****************************************************************************
+ * IWMIStreamProps interface
+ */
+#ifndef __IWMIStreamProps_INTERFACE_DEFINED__
+#define __IWMIStreamProps_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMIStreamProps, 0x6816dad3, 0x2b4b, 0x4c8e, 0x81,0x49, 0x87,0x4c,0x34,0x83,0xa7,0x53);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("6816dad3-2b4b-4c8e-8149-874c3483a753")
+IWMIStreamProps : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetProperty(
+ const WCHAR *name,
+ WMT_ATTR_DATATYPE *type,
+ BYTE *value,
+ DWORD *size) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMIStreamProps, 0x6816dad3, 0x2b4b, 0x4c8e, 0x81,0x49, 0x87,0x4c,0x34,0x83,0xa7,0x53)
+#endif
+#else
+typedef struct IWMIStreamPropsVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWMIStreamProps *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWMIStreamProps *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWMIStreamProps *This);
+
+ /*** IWMIStreamProps methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetProperty)(
+ IWMIStreamProps *This,
+ const WCHAR *name,
+ WMT_ATTR_DATATYPE *type,
+ BYTE *value,
+ DWORD *size);
+
+ END_INTERFACE
+} IWMIStreamPropsVtbl;
+
+interface IWMIStreamProps {
+ CONST_VTBL IWMIStreamPropsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMIStreamProps_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMIStreamProps_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMIStreamProps_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMIStreamProps methods ***/
+#define IWMIStreamProps_GetProperty(This,name,type,value,size) (This)->lpVtbl->GetProperty(This,name,type,value,size)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMIStreamProps_QueryInterface(IWMIStreamProps* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMIStreamProps_AddRef(IWMIStreamProps* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMIStreamProps_Release(IWMIStreamProps* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWMIStreamProps methods ***/
+static FORCEINLINE HRESULT IWMIStreamProps_GetProperty(IWMIStreamProps* This,const WCHAR *name,WMT_ATTR_DATATYPE *type,BYTE *value,DWORD *size) {
+ return This->lpVtbl->GetProperty(This,name,type,value,size);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWMIStreamProps_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMCredentialCallback interface
+ */
+#ifndef __IWMCredentialCallback_INTERFACE_DEFINED__
+#define __IWMCredentialCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMCredentialCallback, 0x342e0eb7, 0xe651, 0x450c, 0x97,0x5b, 0x2a,0xce,0x2c,0x90,0xc4,0x8e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("342e0eb7-e651-450c-975b-2ace2c90c48e")
+IWMCredentialCallback : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE AcquireCredentials(
+ WCHAR *realm,
+ WCHAR *site,
+ WCHAR *username,
+ DWORD username_size,
+ WCHAR *password,
+ DWORD password_size,
+ HRESULT hr,
+ DWORD *flags) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMCredentialCallback, 0x342e0eb7, 0xe651, 0x450c, 0x97,0x5b, 0x2a,0xce,0x2c,0x90,0xc4,0x8e)
+#endif
+#else
+typedef struct IWMCredentialCallbackVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWMCredentialCallback *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWMCredentialCallback *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWMCredentialCallback *This);
+
+ /*** IWMCredentialCallback methods ***/
+ HRESULT (STDMETHODCALLTYPE *AcquireCredentials)(
+ IWMCredentialCallback *This,
+ WCHAR *realm,
+ WCHAR *site,
+ WCHAR *username,
+ DWORD username_size,
+ WCHAR *password,
+ DWORD password_size,
+ HRESULT hr,
+ DWORD *flags);
+
+ END_INTERFACE
+} IWMCredentialCallbackVtbl;
+
+interface IWMCredentialCallback {
+ CONST_VTBL IWMCredentialCallbackVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMCredentialCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMCredentialCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMCredentialCallback_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMCredentialCallback methods ***/
+#define IWMCredentialCallback_AcquireCredentials(This,realm,site,username,username_size,password,password_size,hr,flags) (This)->lpVtbl->AcquireCredentials(This,realm,site,username,username_size,password,password_size,hr,flags)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMCredentialCallback_QueryInterface(IWMCredentialCallback* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMCredentialCallback_AddRef(IWMCredentialCallback* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMCredentialCallback_Release(IWMCredentialCallback* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWMCredentialCallback methods ***/
+static FORCEINLINE HRESULT IWMCredentialCallback_AcquireCredentials(IWMCredentialCallback* This,WCHAR *realm,WCHAR *site,WCHAR *username,DWORD username_size,WCHAR *password,DWORD password_size,HRESULT hr,DWORD *flags) {
+ return This->lpVtbl->AcquireCredentials(This,realm,site,username,username_size,password,password_size,hr,flags);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWMCredentialCallback_INTERFACE_DEFINED__ */
+
HRESULT WINAPI WMCheckURLExtension(LPCWSTR);
HRESULT WINAPI WMCheckURLScheme(LPCWSTR);
HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);
diff --git a/lib/libc/include/any-windows-any/wmsecure.h b/lib/libc/include/any-windows-any/wmsecure.h
new file mode 100644
index 0000000000..e6c796e3f0
--- /dev/null
+++ b/lib/libc/include/any-windows-any/wmsecure.h
@@ -0,0 +1,472 @@
+/*** Autogenerated by WIDL 7.0 from include/wmsecure.idl - Do not edit ***/
+
+#ifdef _WIN32
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __wmsecure_h__
+#define __wmsecure_h__
+
+/* Forward declarations */
+
+#ifndef __IWMAuthorizer_FWD_DEFINED__
+#define __IWMAuthorizer_FWD_DEFINED__
+typedef interface IWMAuthorizer IWMAuthorizer;
+#ifdef __cplusplus
+interface IWMAuthorizer;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMSecureChannel_FWD_DEFINED__
+#define __IWMSecureChannel_FWD_DEFINED__
+typedef interface IWMSecureChannel IWMSecureChannel;
+#ifdef __cplusplus
+interface IWMSecureChannel;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWMGetSecureChannel_FWD_DEFINED__
+#define __IWMGetSecureChannel_FWD_DEFINED__
+typedef interface IWMGetSecureChannel IWMGetSecureChannel;
+#ifdef __cplusplus
+interface IWMGetSecureChannel;
+#endif /* __cplusplus */
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*****************************************************************************
+ * IWMAuthorizer interface
+ */
+#ifndef __IWMAuthorizer_INTERFACE_DEFINED__
+#define __IWMAuthorizer_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMAuthorizer, 0xd9b67d36, 0xa9ad, 0x4eb4, 0xba,0xef, 0xdb,0x28,0x4e,0xf5,0x50,0x4c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d9b67d36-a9ad-4eb4-baef-db284ef5504c")
+IWMAuthorizer : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetCertCount(
+ DWORD *count) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCert(
+ DWORD index,
+ BYTE **data) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSharedData(
+ DWORD index,
+ const BYTE *data,
+ BYTE *cert,
+ BYTE **ret_data) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMAuthorizer, 0xd9b67d36, 0xa9ad, 0x4eb4, 0xba,0xef, 0xdb,0x28,0x4e,0xf5,0x50,0x4c)
+#endif
+#else
+typedef struct IWMAuthorizerVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWMAuthorizer *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWMAuthorizer *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWMAuthorizer *This);
+
+ /*** IWMAuthorizer methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetCertCount)(
+ IWMAuthorizer *This,
+ DWORD *count);
+
+ HRESULT (STDMETHODCALLTYPE *GetCert)(
+ IWMAuthorizer *This,
+ DWORD index,
+ BYTE **data);
+
+ HRESULT (STDMETHODCALLTYPE *GetSharedData)(
+ IWMAuthorizer *This,
+ DWORD index,
+ const BYTE *data,
+ BYTE *cert,
+ BYTE **ret_data);
+
+ END_INTERFACE
+} IWMAuthorizerVtbl;
+
+interface IWMAuthorizer {
+ CONST_VTBL IWMAuthorizerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMAuthorizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMAuthorizer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMAuthorizer_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMAuthorizer methods ***/
+#define IWMAuthorizer_GetCertCount(This,count) (This)->lpVtbl->GetCertCount(This,count)
+#define IWMAuthorizer_GetCert(This,index,data) (This)->lpVtbl->GetCert(This,index,data)
+#define IWMAuthorizer_GetSharedData(This,index,data,cert,ret_data) (This)->lpVtbl->GetSharedData(This,index,data,cert,ret_data)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMAuthorizer_QueryInterface(IWMAuthorizer* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMAuthorizer_AddRef(IWMAuthorizer* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMAuthorizer_Release(IWMAuthorizer* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWMAuthorizer methods ***/
+static FORCEINLINE HRESULT IWMAuthorizer_GetCertCount(IWMAuthorizer* This,DWORD *count) {
+ return This->lpVtbl->GetCertCount(This,count);
+}
+static FORCEINLINE HRESULT IWMAuthorizer_GetCert(IWMAuthorizer* This,DWORD index,BYTE **data) {
+ return This->lpVtbl->GetCert(This,index,data);
+}
+static FORCEINLINE HRESULT IWMAuthorizer_GetSharedData(IWMAuthorizer* This,DWORD index,const BYTE *data,BYTE *cert,BYTE **ret_data) {
+ return This->lpVtbl->GetSharedData(This,index,data,cert,ret_data);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWMAuthorizer_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMSecureChannel interface
+ */
+#ifndef __IWMSecureChannel_INTERFACE_DEFINED__
+#define __IWMSecureChannel_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMSecureChannel, 0x2720598a, 0xd0f2, 0x4189, 0xbd,0x10, 0x91,0xc4,0x6e,0xf0,0x93,0x6f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("2720598a-d0f2-4189-bd10-91c46ef0936f")
+IWMSecureChannel : public IWMAuthorizer
+{
+ virtual HRESULT STDMETHODCALLTYPE WMSC_AddCertificate(
+ IWMAuthorizer *cert) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_AddSignature(
+ BYTE *signature,
+ DWORD size) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_Connect(
+ IWMSecureChannel *peer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_IsConnected(
+ WINBOOL *connected) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_Disconnect(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_GetValidCertificate(
+ BYTE **cert,
+ DWORD *signature) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_Encrypt(
+ BYTE *data,
+ DWORD size) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_Decrypt(
+ BYTE *data,
+ DWORD size) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_Lock(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_Unlock(
+ ) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WMSC_SetSharedData(
+ DWORD index,
+ BYTE *data) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMSecureChannel, 0x2720598a, 0xd0f2, 0x4189, 0xbd,0x10, 0x91,0xc4,0x6e,0xf0,0x93,0x6f)
+#endif
+#else
+typedef struct IWMSecureChannelVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWMSecureChannel *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWMSecureChannel *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWMSecureChannel *This);
+
+ /*** IWMAuthorizer methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetCertCount)(
+ IWMSecureChannel *This,
+ DWORD *count);
+
+ HRESULT (STDMETHODCALLTYPE *GetCert)(
+ IWMSecureChannel *This,
+ DWORD index,
+ BYTE **data);
+
+ HRESULT (STDMETHODCALLTYPE *GetSharedData)(
+ IWMSecureChannel *This,
+ DWORD index,
+ const BYTE *data,
+ BYTE *cert,
+ BYTE **ret_data);
+
+ /*** IWMSecureChannel methods ***/
+ HRESULT (STDMETHODCALLTYPE *WMSC_AddCertificate)(
+ IWMSecureChannel *This,
+ IWMAuthorizer *cert);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_AddSignature)(
+ IWMSecureChannel *This,
+ BYTE *signature,
+ DWORD size);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_Connect)(
+ IWMSecureChannel *This,
+ IWMSecureChannel *peer);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_IsConnected)(
+ IWMSecureChannel *This,
+ WINBOOL *connected);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_Disconnect)(
+ IWMSecureChannel *This);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_GetValidCertificate)(
+ IWMSecureChannel *This,
+ BYTE **cert,
+ DWORD *signature);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_Encrypt)(
+ IWMSecureChannel *This,
+ BYTE *data,
+ DWORD size);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_Decrypt)(
+ IWMSecureChannel *This,
+ BYTE *data,
+ DWORD size);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_Lock)(
+ IWMSecureChannel *This);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_Unlock)(
+ IWMSecureChannel *This);
+
+ HRESULT (STDMETHODCALLTYPE *WMSC_SetSharedData)(
+ IWMSecureChannel *This,
+ DWORD index,
+ BYTE *data);
+
+ END_INTERFACE
+} IWMSecureChannelVtbl;
+
+interface IWMSecureChannel {
+ CONST_VTBL IWMSecureChannelVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMSecureChannel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMSecureChannel_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMSecureChannel_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMAuthorizer methods ***/
+#define IWMSecureChannel_GetCertCount(This,count) (This)->lpVtbl->GetCertCount(This,count)
+#define IWMSecureChannel_GetCert(This,index,data) (This)->lpVtbl->GetCert(This,index,data)
+#define IWMSecureChannel_GetSharedData(This,index,data,cert,ret_data) (This)->lpVtbl->GetSharedData(This,index,data,cert,ret_data)
+/*** IWMSecureChannel methods ***/
+#define IWMSecureChannel_WMSC_AddCertificate(This,cert) (This)->lpVtbl->WMSC_AddCertificate(This,cert)
+#define IWMSecureChannel_WMSC_AddSignature(This,signature,size) (This)->lpVtbl->WMSC_AddSignature(This,signature,size)
+#define IWMSecureChannel_WMSC_Connect(This,peer) (This)->lpVtbl->WMSC_Connect(This,peer)
+#define IWMSecureChannel_WMSC_IsConnected(This,connected) (This)->lpVtbl->WMSC_IsConnected(This,connected)
+#define IWMSecureChannel_WMSC_Disconnect(This) (This)->lpVtbl->WMSC_Disconnect(This)
+#define IWMSecureChannel_WMSC_GetValidCertificate(This,cert,signature) (This)->lpVtbl->WMSC_GetValidCertificate(This,cert,signature)
+#define IWMSecureChannel_WMSC_Encrypt(This,data,size) (This)->lpVtbl->WMSC_Encrypt(This,data,size)
+#define IWMSecureChannel_WMSC_Decrypt(This,data,size) (This)->lpVtbl->WMSC_Decrypt(This,data,size)
+#define IWMSecureChannel_WMSC_Lock(This) (This)->lpVtbl->WMSC_Lock(This)
+#define IWMSecureChannel_WMSC_Unlock(This) (This)->lpVtbl->WMSC_Unlock(This)
+#define IWMSecureChannel_WMSC_SetSharedData(This,index,data) (This)->lpVtbl->WMSC_SetSharedData(This,index,data)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMSecureChannel_QueryInterface(IWMSecureChannel* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMSecureChannel_AddRef(IWMSecureChannel* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMSecureChannel_Release(IWMSecureChannel* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWMAuthorizer methods ***/
+static FORCEINLINE HRESULT IWMSecureChannel_GetCertCount(IWMSecureChannel* This,DWORD *count) {
+ return This->lpVtbl->GetCertCount(This,count);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_GetCert(IWMSecureChannel* This,DWORD index,BYTE **data) {
+ return This->lpVtbl->GetCert(This,index,data);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_GetSharedData(IWMSecureChannel* This,DWORD index,const BYTE *data,BYTE *cert,BYTE **ret_data) {
+ return This->lpVtbl->GetSharedData(This,index,data,cert,ret_data);
+}
+/*** IWMSecureChannel methods ***/
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_AddCertificate(IWMSecureChannel* This,IWMAuthorizer *cert) {
+ return This->lpVtbl->WMSC_AddCertificate(This,cert);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_AddSignature(IWMSecureChannel* This,BYTE *signature,DWORD size) {
+ return This->lpVtbl->WMSC_AddSignature(This,signature,size);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Connect(IWMSecureChannel* This,IWMSecureChannel *peer) {
+ return This->lpVtbl->WMSC_Connect(This,peer);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_IsConnected(IWMSecureChannel* This,WINBOOL *connected) {
+ return This->lpVtbl->WMSC_IsConnected(This,connected);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Disconnect(IWMSecureChannel* This) {
+ return This->lpVtbl->WMSC_Disconnect(This);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_GetValidCertificate(IWMSecureChannel* This,BYTE **cert,DWORD *signature) {
+ return This->lpVtbl->WMSC_GetValidCertificate(This,cert,signature);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Encrypt(IWMSecureChannel* This,BYTE *data,DWORD size) {
+ return This->lpVtbl->WMSC_Encrypt(This,data,size);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Decrypt(IWMSecureChannel* This,BYTE *data,DWORD size) {
+ return This->lpVtbl->WMSC_Decrypt(This,data,size);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Lock(IWMSecureChannel* This) {
+ return This->lpVtbl->WMSC_Lock(This);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_Unlock(IWMSecureChannel* This) {
+ return This->lpVtbl->WMSC_Unlock(This);
+}
+static FORCEINLINE HRESULT IWMSecureChannel_WMSC_SetSharedData(IWMSecureChannel* This,DWORD index,BYTE *data) {
+ return This->lpVtbl->WMSC_SetSharedData(This,index,data);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWMSecureChannel_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWMGetSecureChannel interface
+ */
+#ifndef __IWMGetSecureChannel_INTERFACE_DEFINED__
+#define __IWMGetSecureChannel_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWMGetSecureChannel, 0x94bc0598, 0xc3d2, 0x11d3, 0xbe,0xdf, 0x00,0xc0,0x4f,0x61,0x29,0x86);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("94bc0598-c3d2-11d3-bedf-00c04f612986")
+IWMGetSecureChannel : public IUnknown
+{
+ virtual HRESULT STDMETHODCALLTYPE GetPeerSecureChannelInterface(
+ IWMSecureChannel **channel) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWMGetSecureChannel, 0x94bc0598, 0xc3d2, 0x11d3, 0xbe,0xdf, 0x00,0xc0,0x4f,0x61,0x29,0x86)
+#endif
+#else
+typedef struct IWMGetSecureChannelVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWMGetSecureChannel *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWMGetSecureChannel *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWMGetSecureChannel *This);
+
+ /*** IWMGetSecureChannel methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetPeerSecureChannelInterface)(
+ IWMGetSecureChannel *This,
+ IWMSecureChannel **channel);
+
+ END_INTERFACE
+} IWMGetSecureChannelVtbl;
+
+interface IWMGetSecureChannel {
+ CONST_VTBL IWMGetSecureChannelVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWMGetSecureChannel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWMGetSecureChannel_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWMGetSecureChannel_Release(This) (This)->lpVtbl->Release(This)
+/*** IWMGetSecureChannel methods ***/
+#define IWMGetSecureChannel_GetPeerSecureChannelInterface(This,channel) (This)->lpVtbl->GetPeerSecureChannelInterface(This,channel)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWMGetSecureChannel_QueryInterface(IWMGetSecureChannel* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWMGetSecureChannel_AddRef(IWMGetSecureChannel* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWMGetSecureChannel_Release(IWMGetSecureChannel* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IWMGetSecureChannel methods ***/
+static FORCEINLINE HRESULT IWMGetSecureChannel_GetPeerSecureChannelInterface(IWMGetSecureChannel* This,IWMSecureChannel **channel) {
+ return This->lpVtbl->GetPeerSecureChannelInterface(This,channel);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWMGetSecureChannel_INTERFACE_DEFINED__ */
+
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __wmsecure_h__ */
diff --git a/lib/libc/include/any-windows-any/wpcapi.h b/lib/libc/include/any-windows-any/wpcapi.h
index 66f69dcaaf..f1aa499b45 100644
--- a/lib/libc/include/any-windows-any/wpcapi.h
+++ b/lib/libc/include/any-windows-any/wpcapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wpcapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wpcapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/ws2ipdef.h b/lib/libc/include/any-windows-any/ws2ipdef.h
index 188b2f41ef..d440bbcb8b 100644
--- a/lib/libc/include/any-windows-any/ws2ipdef.h
+++ b/lib/libc/include/any-windows-any/ws2ipdef.h
@@ -192,11 +192,6 @@ typedef enum _MULTICAST_MODE_TYPE {
MCAST_EXCLUDE
} MULTICAST_MODE_TYPE;
-typedef struct ip_mreq {
- IN_ADDR imr_multiaddr;
- IN_ADDR imr_interface;
-} IP_MREQ, *PIP_MREQ;
-
typedef struct ip_mreq_source {
IN_ADDR imr_multiaddr;
IN_ADDR imr_sourceaddr;
diff --git a/lib/libc/include/any-windows-any/wsdattachment.h b/lib/libc/include/any-windows-any/wsdattachment.h
index 21c619dae1..45a56db50e 100644
--- a/lib/libc/include/any-windows-any/wsdattachment.h
+++ b/lib/libc/include/any-windows-any/wsdattachment.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsdattachment.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsdattachment.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wsdbase.h b/lib/libc/include/any-windows-any/wsdbase.h
index 2ce4ee16a7..7cc5d63b1d 100644
--- a/lib/libc/include/any-windows-any/wsdbase.h
+++ b/lib/libc/include/any-windows-any/wsdbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsdbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsdbase.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wsdclient.h b/lib/libc/include/any-windows-any/wsdclient.h
index b4de44aee5..4358883c0e 100644
--- a/lib/libc/include/any-windows-any/wsdclient.h
+++ b/lib/libc/include/any-windows-any/wsdclient.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsdclient.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsdclient.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wsddisco.h b/lib/libc/include/any-windows-any/wsddisco.h
index 1286f2a701..866abc07a2 100644
--- a/lib/libc/include/any-windows-any/wsddisco.h
+++ b/lib/libc/include/any-windows-any/wsddisco.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsddisco.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsddisco.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wsdhost.h b/lib/libc/include/any-windows-any/wsdhost.h
index 60750c0c31..f9282ed4b9 100644
--- a/lib/libc/include/any-windows-any/wsdhost.h
+++ b/lib/libc/include/any-windows-any/wsdhost.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsdhost.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsdhost.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wsdxml.h b/lib/libc/include/any-windows-any/wsdxml.h
index eb9ed9f00d..ef56c130aa 100644
--- a/lib/libc/include/any-windows-any/wsdxml.h
+++ b/lib/libc/include/any-windows-any/wsdxml.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsdxml.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsdxml.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wsmandisp.h b/lib/libc/include/any-windows-any/wsmandisp.h
index 47a5de4de1..7dcd52b4b8 100644
--- a/lib/libc/include/any-windows-any/wsmandisp.h
+++ b/lib/libc/include/any-windows-any/wsmandisp.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wsmandisp.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wsmandisp.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wtypes.h b/lib/libc/include/any-windows-any/wtypes.h
index 773716df81..64815709dd 100644
--- a/lib/libc/include/any-windows-any/wtypes.h
+++ b/lib/libc/include/any-windows-any/wtypes.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wtypes.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wtypes.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wtypesbase.h b/lib/libc/include/any-windows-any/wtypesbase.h
index 9304ac8345..54ba6d4ab4 100644
--- a/lib/libc/include/any-windows-any/wtypesbase.h
+++ b/lib/libc/include/any-windows-any/wtypesbase.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wtypesbase.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wtypesbase.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/wuapi.h b/lib/libc/include/any-windows-any/wuapi.h
index 99dd4144ee..ea28f20a78 100644
--- a/lib/libc/include/any-windows-any/wuapi.h
+++ b/lib/libc/include/any-windows-any/wuapi.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/wuapi.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/wuapi.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
@@ -274,6 +274,14 @@ interface ISystemInformation;
#endif /* __cplusplus */
#endif
+#ifndef __IWindowsUpdateAgentInfo_FWD_DEFINED__
+#define __IWindowsUpdateAgentInfo_FWD_DEFINED__
+typedef interface IWindowsUpdateAgentInfo IWindowsUpdateAgentInfo;
+#ifdef __cplusplus
+interface IWindowsUpdateAgentInfo;
+#endif /* __cplusplus */
+#endif
+
#ifndef __AutomaticUpdates_FWD_DEFINED__
#define __AutomaticUpdates_FWD_DEFINED__
#ifdef __cplusplus
@@ -310,6 +318,15 @@ typedef struct SystemInformation SystemInformation;
#endif /* defined __cplusplus */
#endif /* defined __SystemInformation_FWD_DEFINED__ */
+#ifndef __WindowsUpdateAgentInfo_FWD_DEFINED__
+#define __WindowsUpdateAgentInfo_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class WindowsUpdateAgentInfo WindowsUpdateAgentInfo;
+#else
+typedef struct WindowsUpdateAgentInfo WindowsUpdateAgentInfo;
+#endif /* defined __cplusplus */
+#endif /* defined __WindowsUpdateAgentInfo_FWD_DEFINED__ */
+
/* Headers for imported files */
#include <oaidl.h>
@@ -6904,6 +6921,133 @@ static FORCEINLINE HRESULT ISystemInformation_get_RebootRequired(ISystemInformat
#endif /* __ISystemInformation_INTERFACE_DEFINED__ */
/*****************************************************************************
+ * IWindowsUpdateAgentInfo interface
+ */
+#ifndef __IWindowsUpdateAgentInfo_INTERFACE_DEFINED__
+#define __IWindowsUpdateAgentInfo_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWindowsUpdateAgentInfo, 0x85713fa1, 0x7796, 0x4fa2, 0xbe,0x3b, 0xe2,0xd6,0x12,0x4d,0xd3,0x73);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("85713fa1-7796-4fa2-be3b-e2d6124dd373")
+IWindowsUpdateAgentInfo : public IDispatch
+{
+ virtual HRESULT STDMETHODCALLTYPE GetInfo(
+ VARIANT varInfoIdentifier,
+ VARIANT *retval) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWindowsUpdateAgentInfo, 0x85713fa1, 0x7796, 0x4fa2, 0xbe,0x3b, 0xe2,0xd6,0x12,0x4d,0xd3,0x73)
+#endif
+#else
+typedef struct IWindowsUpdateAgentInfoVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IWindowsUpdateAgentInfo *This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IWindowsUpdateAgentInfo *This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IWindowsUpdateAgentInfo *This);
+
+ /*** IDispatch methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+ IWindowsUpdateAgentInfo *This,
+ UINT *pctinfo);
+
+ HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+ IWindowsUpdateAgentInfo *This,
+ UINT iTInfo,
+ LCID lcid,
+ ITypeInfo **ppTInfo);
+
+ HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+ IWindowsUpdateAgentInfo *This,
+ REFIID riid,
+ LPOLESTR *rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID *rgDispId);
+
+ HRESULT (STDMETHODCALLTYPE *Invoke)(
+ IWindowsUpdateAgentInfo *This,
+ DISPID dispIdMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS *pDispParams,
+ VARIANT *pVarResult,
+ EXCEPINFO *pExcepInfo,
+ UINT *puArgErr);
+
+ /*** IWindowsUpdateAgentInfo methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetInfo)(
+ IWindowsUpdateAgentInfo *This,
+ VARIANT varInfoIdentifier,
+ VARIANT *retval);
+
+ END_INTERFACE
+} IWindowsUpdateAgentInfoVtbl;
+
+interface IWindowsUpdateAgentInfo {
+ CONST_VTBL IWindowsUpdateAgentInfoVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWindowsUpdateAgentInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWindowsUpdateAgentInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWindowsUpdateAgentInfo_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IWindowsUpdateAgentInfo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IWindowsUpdateAgentInfo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IWindowsUpdateAgentInfo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IWindowsUpdateAgentInfo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IWindowsUpdateAgentInfo methods ***/
+#define IWindowsUpdateAgentInfo_GetInfo(This,varInfoIdentifier,retval) (This)->lpVtbl->GetInfo(This,varInfoIdentifier,retval)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWindowsUpdateAgentInfo_QueryInterface(IWindowsUpdateAgentInfo* This,REFIID riid,void **ppvObject) {
+ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWindowsUpdateAgentInfo_AddRef(IWindowsUpdateAgentInfo* This) {
+ return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWindowsUpdateAgentInfo_Release(IWindowsUpdateAgentInfo* This) {
+ return This->lpVtbl->Release(This);
+}
+/*** IDispatch methods ***/
+static FORCEINLINE HRESULT IWindowsUpdateAgentInfo_GetTypeInfoCount(IWindowsUpdateAgentInfo* This,UINT *pctinfo) {
+ return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
+}
+static FORCEINLINE HRESULT IWindowsUpdateAgentInfo_GetTypeInfo(IWindowsUpdateAgentInfo* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
+ return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
+}
+static FORCEINLINE HRESULT IWindowsUpdateAgentInfo_GetIDsOfNames(IWindowsUpdateAgentInfo* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
+ return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
+}
+static FORCEINLINE HRESULT IWindowsUpdateAgentInfo_Invoke(IWindowsUpdateAgentInfo* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
+ return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
+}
+/*** IWindowsUpdateAgentInfo methods ***/
+static FORCEINLINE HRESULT IWindowsUpdateAgentInfo_GetInfo(IWindowsUpdateAgentInfo* This,VARIANT varInfoIdentifier,VARIANT *retval) {
+ return This->lpVtbl->GetInfo(This,varInfoIdentifier,retval);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif /* __IWindowsUpdateAgentInfo_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
* AutomaticUpdates coclass
*/
@@ -6955,6 +7099,19 @@ __CRT_UUID_DECL(SystemInformation, 0xc01b9ba0, 0xbea7, 0x41ba, 0xb6,0x04, 0xd0,0
#endif
#endif
+/*****************************************************************************
+ * WindowsUpdateAgentInfo coclass
+ */
+
+DEFINE_GUID(CLSID_WindowsUpdateAgentInfo, 0xc2e88c2f, 0x6f5b, 0x4aaa, 0x89,0x4b, 0x55,0xc8,0x47,0xad,0x3a,0x2d);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("c2e88c2f-6f5b-4aaa-894b-55c847ad3a2d") WindowsUpdateAgentInfo;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(WindowsUpdateAgentInfo, 0xc2e88c2f, 0x6f5b, 0x4aaa, 0x89,0x4b, 0x55,0xc8,0x47,0xad,0x3a,0x2d)
+#endif
+#endif
+
#endif /* __WUApiLib_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */
diff --git a/lib/libc/include/any-windows-any/wuerror.h b/lib/libc/include/any-windows-any/wuerror.h
new file mode 100644
index 0000000000..62048e1afb
--- /dev/null
+++ b/lib/libc/include/any-windows-any/wuerror.h
@@ -0,0 +1,482 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _WUERROR_
+#define _WUERROR_
+
+#ifdef RC_INVOKED
+#define _HRESULT_TYPEDEF_(_sc) _sc
+#else
+#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc)
+#endif
+
+#define WU_S_SERVICE_STOP _HRESULT_TYPEDEF_(0x00240001)
+#define WU_S_SELFUPDATE _HRESULT_TYPEDEF_(0x00240002)
+#define WU_S_UPDATE_ERROR _HRESULT_TYPEDEF_(0x00240003)
+#define WU_S_MARKED_FOR_DISCONNECT _HRESULT_TYPEDEF_(0x00240004)
+#define WU_S_REBOOT_REQUIRED _HRESULT_TYPEDEF_(0x00240005)
+#define WU_S_ALREADY_INSTALLED _HRESULT_TYPEDEF_(0x00240006)
+#define WU_S_ALREADY_UNINSTALLED _HRESULT_TYPEDEF_(0x00240007)
+#define WU_S_ALREADY_DOWNLOADED _HRESULT_TYPEDEF_(0x00240008)
+#define WU_S_SOME_UPDATES_SKIPPED_ON_BATTERY _HRESULT_TYPEDEF_(0x00240009)
+#define WU_S_ALREADY_REVERTED _HRESULT_TYPEDEF_(0x0024000A)
+#define WU_S_SEARCH_CRITERIA_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x00240010)
+#define WU_S_UH_INSTALLSTILLPENDING _HRESULT_TYPEDEF_(0x00242015)
+#define WU_S_UH_DOWNLOAD_SIZE_CALCULATED _HRESULT_TYPEDEF_(0x00242016)
+#define WU_S_SIH_NOOP _HRESULT_TYPEDEF_(0x00245001)
+#define WU_S_DM_ALREADYDOWNLOADING _HRESULT_TYPEDEF_(0x00246001)
+#define WU_S_METADATA_SKIPPED_BY_ENFORCEMENTMODE _HRESULT_TYPEDEF_(0x00247101)
+#define WU_S_METADATA_IGNORED_SIGNATURE_VERIFICATION _HRESULT_TYPEDEF_(0x00247102)
+#define WU_S_SEARCH_LOAD_SHEDDING _HRESULT_TYPEDEF_(0x00248001)
+#define WU_E_NO_SERVICE _HRESULT_TYPEDEF_(0x80240001)
+#define WU_E_MAX_CAPACITY_REACHED _HRESULT_TYPEDEF_(0x80240002)
+#define WU_E_UNKNOWN_ID _HRESULT_TYPEDEF_(0x80240003)
+#define WU_E_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x80240004)
+#define WU_E_RANGEOVERLAP _HRESULT_TYPEDEF_(0x80240005)
+#define WU_E_TOOMANYRANGES _HRESULT_TYPEDEF_(0x80240006)
+#define WU_E_INVALIDINDEX _HRESULT_TYPEDEF_(0x80240007)
+#define WU_E_ITEMNOTFOUND _HRESULT_TYPEDEF_(0x80240008)
+#define WU_E_OPERATIONINPROGRESS _HRESULT_TYPEDEF_(0x80240009)
+#define WU_E_COULDNOTCANCEL _HRESULT_TYPEDEF_(0x8024000A)
+#define WU_E_CALL_CANCELLED _HRESULT_TYPEDEF_(0x8024000B)
+#define WU_E_NOOP _HRESULT_TYPEDEF_(0x8024000C)
+#define WU_E_XML_MISSINGDATA _HRESULT_TYPEDEF_(0x8024000D)
+#define WU_E_XML_INVALID _HRESULT_TYPEDEF_(0x8024000E)
+#define WU_E_CYCLE_DETECTED _HRESULT_TYPEDEF_(0x8024000F)
+#define WU_E_TOO_DEEP_RELATION _HRESULT_TYPEDEF_(0x80240010)
+#define WU_E_INVALID_RELATIONSHIP _HRESULT_TYPEDEF_(0x80240011)
+#define WU_E_REG_VALUE_INVALID _HRESULT_TYPEDEF_(0x80240012)
+#define WU_E_DUPLICATE_ITEM _HRESULT_TYPEDEF_(0x80240013)
+#define WU_E_INVALID_INSTALL_REQUESTED _HRESULT_TYPEDEF_(0x80240014)
+#define WU_E_INSTALL_NOT_ALLOWED _HRESULT_TYPEDEF_(0x80240016)
+#define WU_E_NOT_APPLICABLE _HRESULT_TYPEDEF_(0x80240017)
+#define WU_E_NO_USERTOKEN _HRESULT_TYPEDEF_(0x80240018)
+#define WU_E_EXCLUSIVE_INSTALL_CONFLICT _HRESULT_TYPEDEF_(0x80240019)
+#define WU_E_POLICY_NOT_SET _HRESULT_TYPEDEF_(0x8024001A)
+#define WU_E_SELFUPDATE_IN_PROGRESS _HRESULT_TYPEDEF_(0x8024001B)
+#define WU_E_INVALID_UPDATE _HRESULT_TYPEDEF_(0x8024001D)
+#define WU_E_SERVICE_STOP _HRESULT_TYPEDEF_(0x8024001E)
+#define WU_E_NO_CONNECTION _HRESULT_TYPEDEF_(0x8024001F)
+#define WU_E_NO_INTERACTIVE_USER _HRESULT_TYPEDEF_(0x80240020)
+#define WU_E_TIME_OUT _HRESULT_TYPEDEF_(0x80240021)
+#define WU_E_ALL_UPDATES_FAILED _HRESULT_TYPEDEF_(0x80240022)
+#define WU_E_EULAS_DECLINED _HRESULT_TYPEDEF_(0x80240023)
+#define WU_E_NO_UPDATE _HRESULT_TYPEDEF_(0x80240024)
+#define WU_E_USER_ACCESS_DISABLED _HRESULT_TYPEDEF_(0x80240025)
+#define WU_E_INVALID_UPDATE_TYPE _HRESULT_TYPEDEF_(0x80240026)
+#define WU_E_URL_TOO_LONG _HRESULT_TYPEDEF_(0x80240027)
+#define WU_E_UNINSTALL_NOT_ALLOWED _HRESULT_TYPEDEF_(0x80240028)
+#define WU_E_INVALID_PRODUCT_LICENSE _HRESULT_TYPEDEF_(0x80240029)
+#define WU_E_MISSING_HANDLER _HRESULT_TYPEDEF_(0x8024002A)
+#define WU_E_LEGACYSERVER _HRESULT_TYPEDEF_(0x8024002B)
+#define WU_E_BIN_SOURCE_ABSENT _HRESULT_TYPEDEF_(0x8024002C)
+#define WU_E_SOURCE_ABSENT _HRESULT_TYPEDEF_(0x8024002D)
+#define WU_E_WU_DISABLED _HRESULT_TYPEDEF_(0x8024002E)
+#define WU_E_CALL_CANCELLED_BY_POLICY _HRESULT_TYPEDEF_(0x8024002F)
+#define WU_E_INVALID_PROXY_SERVER _HRESULT_TYPEDEF_(0x80240030)
+#define WU_E_INVALID_FILE _HRESULT_TYPEDEF_(0x80240031)
+#define WU_E_INVALID_CRITERIA _HRESULT_TYPEDEF_(0x80240032)
+#define WU_E_EULA_UNAVAILABLE _HRESULT_TYPEDEF_(0x80240033)
+#define WU_E_DOWNLOAD_FAILED _HRESULT_TYPEDEF_(0x80240034)
+#define WU_E_UPDATE_NOT_PROCESSED _HRESULT_TYPEDEF_(0x80240035)
+#define WU_E_INVALID_OPERATION _HRESULT_TYPEDEF_(0x80240036)
+#define WU_E_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80240037)
+#define WU_E_WINHTTP_INVALID_FILE _HRESULT_TYPEDEF_(0x80240038)
+#define WU_E_TOO_MANY_RESYNC _HRESULT_TYPEDEF_(0x80240039)
+#define WU_E_NO_SERVER_CORE_SUPPORT _HRESULT_TYPEDEF_(0x80240040)
+#define WU_E_SYSPREP_IN_PROGRESS _HRESULT_TYPEDEF_(0x80240041)
+#define WU_E_UNKNOWN_SERVICE _HRESULT_TYPEDEF_(0x80240042)
+#define WU_E_NO_UI_SUPPORT _HRESULT_TYPEDEF_(0x80240043)
+#define WU_E_PER_MACHINE_UPDATE_ACCESS_DENIED _HRESULT_TYPEDEF_(0x80240044)
+#define WU_E_UNSUPPORTED_SEARCHSCOPE _HRESULT_TYPEDEF_(0x80240045)
+#define WU_E_BAD_FILE_URL _HRESULT_TYPEDEF_(0x80240046)
+#define WU_E_REVERT_NOT_ALLOWED _HRESULT_TYPEDEF_(0x80240047)
+#define WU_E_INVALID_NOTIFICATION_INFO _HRESULT_TYPEDEF_(0x80240048)
+#define WU_E_OUTOFRANGE _HRESULT_TYPEDEF_(0x80240049)
+#define WU_E_SETUP_IN_PROGRESS _HRESULT_TYPEDEF_(0x8024004A)
+#define WU_E_ORPHANED_DOWNLOAD_JOB _HRESULT_TYPEDEF_(0x8024004B)
+#define WU_E_LOW_BATTERY _HRESULT_TYPEDEF_(0x8024004C)
+#define WU_E_INFRASTRUCTUREFILE_INVALID_FORMAT _HRESULT_TYPEDEF_(0x8024004D)
+#define WU_E_INFRASTRUCTUREFILE_REQUIRES_SSL _HRESULT_TYPEDEF_(0x8024004E)
+#define WU_E_IDLESHUTDOWN_OPCOUNT_DISCOVERY _HRESULT_TYPEDEF_(0x8024004F)
+#define WU_E_IDLESHUTDOWN_OPCOUNT_SEARCH _HRESULT_TYPEDEF_(0x80240050)
+#define WU_E_IDLESHUTDOWN_OPCOUNT_DOWNLOAD _HRESULT_TYPEDEF_(0x80240051)
+#define WU_E_IDLESHUTDOWN_OPCOUNT_INSTALL _HRESULT_TYPEDEF_(0x80240052)
+#define WU_E_IDLESHUTDOWN_OPCOUNT_OTHER _HRESULT_TYPEDEF_(0x80240053)
+#define WU_E_INTERACTIVE_CALL_CANCELLED _HRESULT_TYPEDEF_(0x80240054)
+#define WU_E_AU_CALL_CANCELLED _HRESULT_TYPEDEF_(0x80240055)
+#define WU_E_SYSTEM_UNSUPPORTED _HRESULT_TYPEDEF_(0x80240056)
+#define WU_E_NO_SUCH_HANDLER_PLUGIN _HRESULT_TYPEDEF_(0x80240057)
+#define WU_E_INVALID_SERIALIZATION_VERSION _HRESULT_TYPEDEF_(0x80240058)
+#define WU_E_NETWORK_COST_EXCEEDS_POLICY _HRESULT_TYPEDEF_(0x80240059)
+#define WU_E_CALL_CANCELLED_BY_HIDE _HRESULT_TYPEDEF_(0x8024005A)
+#define WU_E_CALL_CANCELLED_BY_INVALID _HRESULT_TYPEDEF_(0x8024005B)
+#define WU_E_INVALID_VOLUMEID _HRESULT_TYPEDEF_(0x8024005C)
+#define WU_E_UNRECOGNIZED_VOLUMEID _HRESULT_TYPEDEF_(0x8024005D)
+#define WU_E_EXTENDEDERROR_NOTSET _HRESULT_TYPEDEF_(0x8024005E)
+#define WU_E_EXTENDEDERROR_FAILED _HRESULT_TYPEDEF_(0x8024005F)
+#define WU_E_IDLESHUTDOWN_OPCOUNT_SERVICEREGISTRATION _HRESULT_TYPEDEF_(0x80240060)
+#define WU_E_FILETRUST_SHA2SIGNATURE_MISSING _HRESULT_TYPEDEF_(0x80240061)
+#define WU_E_UPDATE_NOT_APPROVED _HRESULT_TYPEDEF_(0x80240062)
+#define WU_E_CALL_CANCELLED_BY_INTERACTIVE_SEARCH _HRESULT_TYPEDEF_(0x80240063)
+#define WU_E_INSTALL_JOB_RESUME_NOT_ALLOWED _HRESULT_TYPEDEF_(0x80240064)
+#define WU_E_INSTALL_JOB_NOT_SUSPENDED _HRESULT_TYPEDEF_(0x80240065)
+#define WU_E_INSTALL_USERCONTEXT_ACCESSDENIED _HRESULT_TYPEDEF_(0x80240066)
+#define WU_E_UNEXPECTED _HRESULT_TYPEDEF_(0x80240FFF)
+#define WU_E_MSI_WRONG_VERSION _HRESULT_TYPEDEF_(0x80241001)
+#define WU_E_MSI_NOT_CONFIGURED _HRESULT_TYPEDEF_(0x80241002)
+#define WU_E_MSP_DISABLED _HRESULT_TYPEDEF_(0x80241003)
+#define WU_E_MSI_WRONG_APP_CONTEXT _HRESULT_TYPEDEF_(0x80241004)
+#define WU_E_MSI_NOT_PRESENT _HRESULT_TYPEDEF_(0x80241005)
+#define WU_E_MSP_UNEXPECTED _HRESULT_TYPEDEF_(0x80241FFF)
+#define WU_E_PT_SOAPCLIENT_BASE _HRESULT_TYPEDEF_(0x80244000)
+#define WU_E_PT_SOAPCLIENT_INITIALIZE _HRESULT_TYPEDEF_(0x80244001)
+#define WU_E_PT_SOAPCLIENT_OUTOFMEMORY _HRESULT_TYPEDEF_(0x80244002)
+#define WU_E_PT_SOAPCLIENT_GENERATE _HRESULT_TYPEDEF_(0x80244003)
+#define WU_E_PT_SOAPCLIENT_CONNECT _HRESULT_TYPEDEF_(0x80244004)
+#define WU_E_PT_SOAPCLIENT_SEND _HRESULT_TYPEDEF_(0x80244005)
+#define WU_E_PT_SOAPCLIENT_SERVER _HRESULT_TYPEDEF_(0x80244006)
+#define WU_E_PT_SOAPCLIENT_SOAPFAULT _HRESULT_TYPEDEF_(0x80244007)
+#define WU_E_PT_SOAPCLIENT_PARSEFAULT _HRESULT_TYPEDEF_(0x80244008)
+#define WU_E_PT_SOAPCLIENT_READ _HRESULT_TYPEDEF_(0x80244009)
+#define WU_E_PT_SOAPCLIENT_PARSE _HRESULT_TYPEDEF_(0x8024400A)
+#define WU_E_PT_SOAP_VERSION _HRESULT_TYPEDEF_(0x8024400B)
+#define WU_E_PT_SOAP_MUST_UNDERSTAND _HRESULT_TYPEDEF_(0x8024400C)
+#define WU_E_PT_SOAP_CLIENT _HRESULT_TYPEDEF_(0x8024400D)
+#define WU_E_PT_SOAP_SERVER _HRESULT_TYPEDEF_(0x8024400E)
+#define WU_E_PT_WMI_ERROR _HRESULT_TYPEDEF_(0x8024400F)
+#define WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS _HRESULT_TYPEDEF_(0x80244010)
+#define WU_E_PT_SUS_SERVER_NOT_SET _HRESULT_TYPEDEF_(0x80244011)
+#define WU_E_PT_DOUBLE_INITIALIZATION _HRESULT_TYPEDEF_(0x80244012)
+#define WU_E_PT_INVALID_COMPUTER_NAME _HRESULT_TYPEDEF_(0x80244013)
+#define WU_E_PT_REFRESH_CACHE_REQUIRED _HRESULT_TYPEDEF_(0x80244015)
+#define WU_E_PT_HTTP_STATUS_BAD_REQUEST _HRESULT_TYPEDEF_(0x80244016)
+#define WU_E_PT_HTTP_STATUS_DENIED _HRESULT_TYPEDEF_(0x80244017)
+#define WU_E_PT_HTTP_STATUS_FORBIDDEN _HRESULT_TYPEDEF_(0x80244018)
+#define WU_E_PT_HTTP_STATUS_NOT_FOUND _HRESULT_TYPEDEF_(0x80244019)
+#define WU_E_PT_HTTP_STATUS_BAD_METHOD _HRESULT_TYPEDEF_(0x8024401A)
+#define WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ _HRESULT_TYPEDEF_(0x8024401B)
+#define WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT _HRESULT_TYPEDEF_(0x8024401C)
+#define WU_E_PT_HTTP_STATUS_CONFLICT _HRESULT_TYPEDEF_(0x8024401D)
+#define WU_E_PT_HTTP_STATUS_GONE _HRESULT_TYPEDEF_(0x8024401E)
+#define WU_E_PT_HTTP_STATUS_SERVER_ERROR _HRESULT_TYPEDEF_(0x8024401F)
+#define WU_E_PT_HTTP_STATUS_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80244020)
+#define WU_E_PT_HTTP_STATUS_BAD_GATEWAY _HRESULT_TYPEDEF_(0x80244021)
+#define WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL _HRESULT_TYPEDEF_(0x80244022)
+#define WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT _HRESULT_TYPEDEF_(0x80244023)
+#define WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP _HRESULT_TYPEDEF_(0x80244024)
+#define WU_E_PT_FILE_LOCATIONS_CHANGED _HRESULT_TYPEDEF_(0x80244025)
+#define WU_E_PT_REGISTRATION_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80244026)
+#define WU_E_PT_NO_AUTH_PLUGINS_REQUESTED _HRESULT_TYPEDEF_(0x80244027)
+#define WU_E_PT_NO_AUTH_COOKIES_CREATED _HRESULT_TYPEDEF_(0x80244028)
+#define WU_E_PT_INVALID_CONFIG_PROP _HRESULT_TYPEDEF_(0x80244029)
+#define WU_E_PT_CONFIG_PROP_MISSING _HRESULT_TYPEDEF_(0x8024402A)
+#define WU_E_PT_HTTP_STATUS_NOT_MAPPED _HRESULT_TYPEDEF_(0x8024402B)
+#define WU_E_PT_WINHTTP_NAME_NOT_RESOLVED _HRESULT_TYPEDEF_(0x8024402C)
+#define WU_E_PT_LOAD_SHEDDING _HRESULT_TYPEDEF_(0x8024402D)
+#define WU_E_PT_SAME_REDIR_ID _HRESULT_TYPEDEF_(0x8024502D)
+#define WU_E_PT_NO_MANAGED_RECOVER _HRESULT_TYPEDEF_(0x8024502E)
+#define WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS _HRESULT_TYPEDEF_(0x8024402F)
+#define WU_E_PT_ECP_INIT_FAILED _HRESULT_TYPEDEF_(0x80244030)
+#define WU_E_PT_ECP_INVALID_FILE_FORMAT _HRESULT_TYPEDEF_(0x80244031)
+#define WU_E_PT_ECP_INVALID_METADATA _HRESULT_TYPEDEF_(0x80244032)
+#define WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST _HRESULT_TYPEDEF_(0x80244033)
+#define WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE _HRESULT_TYPEDEF_(0x80244034)
+#define WU_E_PT_ECP_FILE_LOCATION_ERROR _HRESULT_TYPEDEF_(0x80244035)
+#define WU_E_PT_CATALOG_SYNC_REQUIRED _HRESULT_TYPEDEF_(0x80240436)
+#define WU_E_PT_SECURITY_VERIFICATION_FAILURE _HRESULT_TYPEDEF_(0x80240437)
+#define WU_E_PT_ENDPOINT_UNREACHABLE _HRESULT_TYPEDEF_(0x80240438)
+#define WU_E_PT_INVALID_FORMAT _HRESULT_TYPEDEF_(0x80240439)
+#define WU_E_PT_INVALID_URL _HRESULT_TYPEDEF_(0x8024043A)
+#define WU_E_PT_NWS_NOT_LOADED _HRESULT_TYPEDEF_(0x8024043B)
+#define WU_E_PT_PROXY_AUTH_SCHEME_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8024043C)
+#define WU_E_SERVICEPROP_NOTAVAIL _HRESULT_TYPEDEF_(0x8024043D)
+#define WU_E_PT_ENDPOINT_REFRESH_REQUIRED _HRESULT_TYPEDEF_(0x8024043E)
+#define WU_E_PT_ENDPOINTURL_NOTAVAIL _HRESULT_TYPEDEF_(0x8024043F)
+#define WU_E_PT_ENDPOINT_DISCONNECTED _HRESULT_TYPEDEF_(0x80240440)
+#define WU_E_PT_INVALID_OPERATION _HRESULT_TYPEDEF_(0x80240441)
+#define WU_E_PT_OBJECT_FAULTED _HRESULT_TYPEDEF_(0x80240442)
+#define WU_E_PT_NUMERIC_OVERFLOW _HRESULT_TYPEDEF_(0x80240443)
+#define WU_E_PT_OPERATION_ABORTED _HRESULT_TYPEDEF_(0x80240444)
+#define WU_E_PT_OPERATION_ABANDONED _HRESULT_TYPEDEF_(0x80240445)
+#define WU_E_PT_QUOTA_EXCEEDED _HRESULT_TYPEDEF_(0x80240446)
+#define WU_E_PT_NO_TRANSLATION_AVAILABLE _HRESULT_TYPEDEF_(0x80240447)
+#define WU_E_PT_ADDRESS_IN_USE _HRESULT_TYPEDEF_(0x80240448)
+#define WU_E_PT_ADDRESS_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x80240449)
+#define WU_E_PT_OTHER _HRESULT_TYPEDEF_(0x8024044A)
+#define WU_E_PT_SECURITY_SYSTEM_FAILURE _HRESULT_TYPEDEF_(0x8024044B)
+#define WU_E_PT_UNEXPECTED _HRESULT_TYPEDEF_(0x80244FFF)
+#define WU_E_REDIRECTOR_LOAD_XML _HRESULT_TYPEDEF_(0x80245001)
+#define WU_E_REDIRECTOR_S_FALSE _HRESULT_TYPEDEF_(0x80245002)
+#define WU_E_REDIRECTOR_ID_SMALLER _HRESULT_TYPEDEF_(0x80245003)
+#define WU_E_REDIRECTOR_UNKNOWN_SERVICE _HRESULT_TYPEDEF_(0x80245004)
+#define WU_E_REDIRECTOR_UNSUPPORTED_CONTENTTYPE _HRESULT_TYPEDEF_(0x80245005)
+#define WU_E_REDIRECTOR_INVALID_RESPONSE _HRESULT_TYPEDEF_(0x80245006)
+#define WU_E_REDIRECTOR_ATTRPROVIDER_EXCEEDED_MAX_NAMEVALUE _HRESULT_TYPEDEF_(0x80245008)
+#define WU_E_REDIRECTOR_ATTRPROVIDER_INVALID_NAME _HRESULT_TYPEDEF_(0x80245009)
+#define WU_E_REDIRECTOR_ATTRPROVIDER_INVALID_VALUE _HRESULT_TYPEDEF_(0x8024500A)
+#define WU_E_REDIRECTOR_SLS_GENERIC_ERROR _HRESULT_TYPEDEF_(0x8024500B)
+#define WU_E_REDIRECTOR_CONNECT_POLICY _HRESULT_TYPEDEF_(0x8024500C)
+#define WU_E_REDIRECTOR_ONLINE_DISALLOWED _HRESULT_TYPEDEF_(0x8024500D)
+#define WU_E_REDIRECTOR_UNEXPECTED _HRESULT_TYPEDEF_(0x802450FF)
+#define WU_E_SIH_VERIFY_DOWNLOAD_ENGINE _HRESULT_TYPEDEF_(0x80245101)
+#define WU_E_SIH_VERIFY_DOWNLOAD_PAYLOAD _HRESULT_TYPEDEF_(0x80245102)
+#define WU_E_SIH_VERIFY_STAGE_ENGINE _HRESULT_TYPEDEF_(0x80245103)
+#define WU_E_SIH_VERIFY_STAGE_PAYLOAD _HRESULT_TYPEDEF_(0x80245104)
+#define WU_E_SIH_ACTION_NOT_FOUND _HRESULT_TYPEDEF_(0x80245105)
+#define WU_E_SIH_SLS_PARSE _HRESULT_TYPEDEF_(0x80245106)
+#define WU_E_SIH_INVALIDHASH _HRESULT_TYPEDEF_(0x80245107)
+#define WU_E_SIH_NO_ENGINE _HRESULT_TYPEDEF_(0x80245108)
+#define WU_E_SIH_POST_REBOOT_INSTALL_FAILED _HRESULT_TYPEDEF_(0x80245109)
+#define WU_E_SIH_POST_REBOOT_NO_CACHED_SLS_RESPONSE _HRESULT_TYPEDEF_(0x8024510A)
+#define WU_E_SIH_PARSE _HRESULT_TYPEDEF_(0x8024510B)
+#define WU_E_SIH_SECURITY _HRESULT_TYPEDEF_(0x8024510C)
+#define WU_E_SIH_PPL _HRESULT_TYPEDEF_(0x8024510D)
+#define WU_E_SIH_POLICY _HRESULT_TYPEDEF_(0x8024510E)
+#define WU_E_SIH_STDEXCEPTION _HRESULT_TYPEDEF_(0x8024510F)
+#define WU_E_SIH_NONSTDEXCEPTION _HRESULT_TYPEDEF_(0x80245110)
+#define WU_E_SIH_ENGINE_EXCEPTION _HRESULT_TYPEDEF_(0x80245111)
+#define WU_E_SIH_BLOCKED_FOR_PLATFORM _HRESULT_TYPEDEF_(0x80245112)
+#define WU_E_SIH_ANOTHER_INSTANCE_RUNNING _HRESULT_TYPEDEF_(0x80245113)
+#define WU_E_SIH_DNSRESILIENCY_OFF _HRESULT_TYPEDEF_(0x80245114)
+#define WU_E_SIH_UNEXPECTED _HRESULT_TYPEDEF_(0x802451FF)
+#define WU_E_DRV_PRUNED _HRESULT_TYPEDEF_(0x8024C001)
+#define WU_E_DRV_NOPROP_OR_LEGACY _HRESULT_TYPEDEF_(0x8024C002)
+#define WU_E_DRV_REG_MISMATCH _HRESULT_TYPEDEF_(0x8024C003)
+#define WU_E_DRV_NO_METADATA _HRESULT_TYPEDEF_(0x8024C004)
+#define WU_E_DRV_MISSING_ATTRIBUTE _HRESULT_TYPEDEF_(0x8024C005)
+#define WU_E_DRV_SYNC_FAILED _HRESULT_TYPEDEF_(0x8024C006)
+#define WU_E_DRV_NO_PRINTER_CONTENT _HRESULT_TYPEDEF_(0x8024C007)
+#define WU_E_DRV_DEVICE_PROBLEM _HRESULT_TYPEDEF_(0x8024C008)
+#define WU_E_DRV_UNEXPECTED _HRESULT_TYPEDEF_(0x8024CFFF)
+#define WU_E_DS_SHUTDOWN _HRESULT_TYPEDEF_(0x80248000)
+#define WU_E_DS_INUSE _HRESULT_TYPEDEF_(0x80248001)
+#define WU_E_DS_INVALID _HRESULT_TYPEDEF_(0x80248002)
+#define WU_E_DS_TABLEMISSING _HRESULT_TYPEDEF_(0x80248003)
+#define WU_E_DS_TABLEINCORRECT _HRESULT_TYPEDEF_(0x80248004)
+#define WU_E_DS_INVALIDTABLENAME _HRESULT_TYPEDEF_(0x80248005)
+#define WU_E_DS_BADVERSION _HRESULT_TYPEDEF_(0x80248006)
+#define WU_E_DS_NODATA _HRESULT_TYPEDEF_(0x80248007)
+#define WU_E_DS_MISSINGDATA _HRESULT_TYPEDEF_(0x80248008)
+#define WU_E_DS_MISSINGREF _HRESULT_TYPEDEF_(0x80248009)
+#define WU_E_DS_UNKNOWNHANDLER _HRESULT_TYPEDEF_(0x8024800A)
+#define WU_E_DS_CANTDELETE _HRESULT_TYPEDEF_(0x8024800B)
+#define WU_E_DS_LOCKTIMEOUTEXPIRED _HRESULT_TYPEDEF_(0x8024800C)
+#define WU_E_DS_NOCATEGORIES _HRESULT_TYPEDEF_(0x8024800D)
+#define WU_E_DS_ROWEXISTS _HRESULT_TYPEDEF_(0x8024800E)
+#define WU_E_DS_STOREFILELOCKED _HRESULT_TYPEDEF_(0x8024800F)
+#define WU_E_DS_CANNOTREGISTER _HRESULT_TYPEDEF_(0x80248010)
+#define WU_E_DS_UNABLETOSTART _HRESULT_TYPEDEF_(0x80248011)
+#define WU_E_DS_DUPLICATEUPDATEID _HRESULT_TYPEDEF_(0x80248013)
+#define WU_E_DS_UNKNOWNSERVICE _HRESULT_TYPEDEF_(0x80248014)
+#define WU_E_DS_SERVICEEXPIRED _HRESULT_TYPEDEF_(0x80248015)
+#define WU_E_DS_DECLINENOTALLOWED _HRESULT_TYPEDEF_(0x80248016)
+#define WU_E_DS_TABLESESSIONMISMATCH _HRESULT_TYPEDEF_(0x80248017)
+#define WU_E_DS_SESSIONLOCKMISMATCH _HRESULT_TYPEDEF_(0x80248018)
+#define WU_E_DS_NEEDWINDOWSSERVICE _HRESULT_TYPEDEF_(0x80248019)
+#define WU_E_DS_INVALIDOPERATION _HRESULT_TYPEDEF_(0x8024801A)
+#define WU_E_DS_SCHEMAMISMATCH _HRESULT_TYPEDEF_(0x8024801B)
+#define WU_E_DS_RESETREQUIRED _HRESULT_TYPEDEF_(0x8024801C)
+#define WU_E_DS_IMPERSONATED _HRESULT_TYPEDEF_(0x8024801D)
+#define WU_E_DS_DATANOTAVAILABLE _HRESULT_TYPEDEF_(0x8024801E)
+#define WU_E_DS_DATANOTLOADED _HRESULT_TYPEDEF_(0x8024801F)
+#define WU_E_DS_NODATA_NOSUCHREVISION _HRESULT_TYPEDEF_(0x80248020)
+#define WU_E_DS_NODATA_NOSUCHUPDATE _HRESULT_TYPEDEF_(0x80248021)
+#define WU_E_DS_NODATA_EULA _HRESULT_TYPEDEF_(0x80248022)
+#define WU_E_DS_NODATA_SERVICE _HRESULT_TYPEDEF_(0x80248023)
+#define WU_E_DS_NODATA_COOKIE _HRESULT_TYPEDEF_(0x80248024)
+#define WU_E_DS_NODATA_TIMER _HRESULT_TYPEDEF_(0x80248025)
+#define WU_E_DS_NODATA_CCR _HRESULT_TYPEDEF_(0x80248026)
+#define WU_E_DS_NODATA_FILE _HRESULT_TYPEDEF_(0x80248027)
+#define WU_E_DS_NODATA_DOWNLOADJOB _HRESULT_TYPEDEF_(0x80248028)
+#define WU_E_DS_NODATA_TMI _HRESULT_TYPEDEF_(0x80248029)
+#define WU_E_DS_UNEXPECTED _HRESULT_TYPEDEF_(0x80248FFF)
+#define WU_E_INVENTORY_PARSEFAILED _HRESULT_TYPEDEF_(0x80249001)
+#define WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED _HRESULT_TYPEDEF_(0x80249002)
+#define WU_E_INVENTORY_RESULT_UPLOAD_FAILED _HRESULT_TYPEDEF_(0x80249003)
+#define WU_E_INVENTORY_UNEXPECTED _HRESULT_TYPEDEF_(0x80249004)
+#define WU_E_INVENTORY_WMI_ERROR _HRESULT_TYPEDEF_(0x80249005)
+#define WU_E_AU_NOSERVICE _HRESULT_TYPEDEF_(0x8024A000)
+#define WU_E_AU_NONLEGACYSERVER _HRESULT_TYPEDEF_(0x8024A002)
+#define WU_E_AU_LEGACYCLIENTDISABLED _HRESULT_TYPEDEF_(0x8024A003)
+#define WU_E_AU_PAUSED _HRESULT_TYPEDEF_(0x8024A004)
+#define WU_E_AU_NO_REGISTERED_SERVICE _HRESULT_TYPEDEF_(0x8024A005)
+#define WU_E_AU_DETECT_SVCID_MISMATCH _HRESULT_TYPEDEF_(0x8024A006)
+#define WU_E_REBOOT_IN_PROGRESS _HRESULT_TYPEDEF_(0x8024A007)
+#define WU_E_AU_OOBE_IN_PROGRESS _HRESULT_TYPEDEF_(0x8024A008)
+#define WU_E_AU_UNEXPECTED _HRESULT_TYPEDEF_(0x8024AFFF)
+#define WU_E_UH_REMOTEUNAVAILABLE _HRESULT_TYPEDEF_(0x80242000)
+#define WU_E_UH_LOCALONLY _HRESULT_TYPEDEF_(0x80242001)
+#define WU_E_UH_UNKNOWNHANDLER _HRESULT_TYPEDEF_(0x80242002)
+#define WU_E_UH_REMOTEALREADYACTIVE _HRESULT_TYPEDEF_(0x80242003)
+#define WU_E_UH_DOESNOTSUPPORTACTION _HRESULT_TYPEDEF_(0x80242004)
+#define WU_E_UH_WRONGHANDLER _HRESULT_TYPEDEF_(0x80242005)
+#define WU_E_UH_INVALIDMETADATA _HRESULT_TYPEDEF_(0x80242006)
+#define WU_E_UH_INSTALLERHUNG _HRESULT_TYPEDEF_(0x80242007)
+#define WU_E_UH_OPERATIONCANCELLED _HRESULT_TYPEDEF_(0x80242008)
+#define WU_E_UH_BADHANDLERXML _HRESULT_TYPEDEF_(0x80242009)
+#define WU_E_UH_CANREQUIREINPUT _HRESULT_TYPEDEF_(0x8024200A)
+#define WU_E_UH_INSTALLERFAILURE _HRESULT_TYPEDEF_(0x8024200B)
+#define WU_E_UH_FALLBACKTOSELFCONTAINED _HRESULT_TYPEDEF_(0x8024200C)
+#define WU_E_UH_NEEDANOTHERDOWNLOAD _HRESULT_TYPEDEF_(0x8024200D)
+#define WU_E_UH_NOTIFYFAILURE _HRESULT_TYPEDEF_(0x8024200E)
+#define WU_E_UH_INCONSISTENT_FILE_NAMES _HRESULT_TYPEDEF_(0x8024200F)
+#define WU_E_UH_FALLBACKERROR _HRESULT_TYPEDEF_(0x80242010)
+#define WU_E_UH_TOOMANYDOWNLOADREQUESTS _HRESULT_TYPEDEF_(0x80242011)
+#define WU_E_UH_UNEXPECTEDCBSRESPONSE _HRESULT_TYPEDEF_(0x80242012)
+#define WU_E_UH_BADCBSPACKAGEID _HRESULT_TYPEDEF_(0x80242013)
+#define WU_E_UH_POSTREBOOTSTILLPENDING _HRESULT_TYPEDEF_(0x80242014)
+#define WU_E_UH_POSTREBOOTRESULTUNKNOWN _HRESULT_TYPEDEF_(0x80242015)
+#define WU_E_UH_POSTREBOOTUNEXPECTEDSTATE _HRESULT_TYPEDEF_(0x80242016)
+#define WU_E_UH_NEW_SERVICING_STACK_REQUIRED _HRESULT_TYPEDEF_(0x80242017)
+#define WU_E_UH_CALLED_BACK_FAILURE _HRESULT_TYPEDEF_(0x80242018)
+#define WU_E_UH_CUSTOMINSTALLER_INVALID_SIGNATURE _HRESULT_TYPEDEF_(0x80242019)
+#define WU_E_UH_UNSUPPORTED_INSTALLCONTEXT _HRESULT_TYPEDEF_(0x8024201A)
+#define WU_E_UH_INVALID_TARGETSESSION _HRESULT_TYPEDEF_(0x8024201B)
+#define WU_E_UH_DECRYPTFAILURE _HRESULT_TYPEDEF_(0x8024201C)
+#define WU_E_UH_HANDLER_DISABLEDUNTILREBOOT _HRESULT_TYPEDEF_(0x8024201D)
+#define WU_E_UH_APPX_NOT_PRESENT _HRESULT_TYPEDEF_(0x8024201E)
+#define WU_E_UH_NOTREADYTOCOMMIT _HRESULT_TYPEDEF_(0x8024201F)
+#define WU_E_UH_APPX_INVALID_PACKAGE_VOLUME _HRESULT_TYPEDEF_(0x80242020)
+#define WU_E_UH_APPX_DEFAULT_PACKAGE_VOLUME_UNAVAILABLE _HRESULT_TYPEDEF_(0x80242021)
+#define WU_E_UH_APPX_INSTALLED_PACKAGE_VOLUME_UNAVAILABLE _HRESULT_TYPEDEF_(0x80242022)
+#define WU_E_UH_APPX_PACKAGE_FAMILY_NOT_FOUND _HRESULT_TYPEDEF_(0x80242023)
+#define WU_E_UH_APPX_SYSTEM_VOLUME_NOT_FOUND _HRESULT_TYPEDEF_(0x80242024)
+#define WU_E_UH_UNEXPECTED _HRESULT_TYPEDEF_(0x80242FFF)
+#define WU_E_DM_URLNOTAVAILABLE _HRESULT_TYPEDEF_(0x80246001)
+#define WU_E_DM_INCORRECTFILEHASH _HRESULT_TYPEDEF_(0x80246002)
+#define WU_E_DM_UNKNOWNALGORITHM _HRESULT_TYPEDEF_(0x80246003)
+#define WU_E_DM_NEEDDOWNLOADREQUEST _HRESULT_TYPEDEF_(0x80246004)
+#define WU_E_DM_NONETWORK _HRESULT_TYPEDEF_(0x80246005)
+#define WU_E_DM_WRONGBITSVERSION _HRESULT_TYPEDEF_(0x80246006)
+#define WU_E_DM_NOTDOWNLOADED _HRESULT_TYPEDEF_(0x80246007)
+#define WU_E_DM_FAILTOCONNECTTOBITS _HRESULT_TYPEDEF_(0x80246008)
+#define WU_E_DM_BITSTRANSFERERROR _HRESULT_TYPEDEF_(0x80246009)
+#define WU_E_DM_DOWNLOADLOCATIONCHANGED _HRESULT_TYPEDEF_(0x8024600A)
+#define WU_E_DM_CONTENTCHANGED _HRESULT_TYPEDEF_(0x8024600B)
+#define WU_E_DM_DOWNLOADLIMITEDBYUPDATESIZE _HRESULT_TYPEDEF_(0x8024600C)
+#define WU_E_DM_UNAUTHORIZED _HRESULT_TYPEDEF_(0x8024600E)
+#define WU_E_DM_BG_ERROR_TOKEN_REQUIRED _HRESULT_TYPEDEF_(0x8024600F)
+#define WU_E_DM_DOWNLOADSANDBOXNOTFOUND _HRESULT_TYPEDEF_(0x80246010)
+#define WU_E_DM_DOWNLOADFILEPATHUNKNOWN _HRESULT_TYPEDEF_(0x80246011)
+#define WU_E_DM_DOWNLOADFILEMISSING _HRESULT_TYPEDEF_(0x80246012)
+#define WU_E_DM_UPDATEREMOVED _HRESULT_TYPEDEF_(0x80246013)
+#define WU_E_DM_READRANGEFAILED _HRESULT_TYPEDEF_(0x80246014)
+#define WU_E_DM_UNAUTHORIZED_NO_USER _HRESULT_TYPEDEF_(0x80246016)
+#define WU_E_DM_UNAUTHORIZED_LOCAL_USER _HRESULT_TYPEDEF_(0x80246017)
+#define WU_E_DM_UNAUTHORIZED_DOMAIN_USER _HRESULT_TYPEDEF_(0x80246018)
+#define WU_E_DM_UNAUTHORIZED_MSA_USER _HRESULT_TYPEDEF_(0x80246019)
+#define WU_E_DM_FALLINGBACKTOBITS _HRESULT_TYPEDEF_(0x8024601A)
+#define WU_E_DM_DOWNLOAD_VOLUME_CONFLICT _HRESULT_TYPEDEF_(0x8024601B)
+#define WU_E_DM_SANDBOX_HASH_MISMATCH _HRESULT_TYPEDEF_(0x8024601C)
+#define WU_E_DM_HARDRESERVEID_CONFLICT _HRESULT_TYPEDEF_(0x8024601D)
+#define WU_E_DM_DOSVC_REQUIRED _HRESULT_TYPEDEF_(0x8024601E)
+#define WU_E_DM_UNEXPECTED _HRESULT_TYPEDEF_(0x80246FFF)
+#define WU_E_SETUP_INVALID_INFDATA _HRESULT_TYPEDEF_(0x8024D001)
+#define WU_E_SETUP_INVALID_IDENTDATA _HRESULT_TYPEDEF_(0x8024D002)
+#define WU_E_SETUP_ALREADY_INITIALIZED _HRESULT_TYPEDEF_(0x8024D003)
+#define WU_E_SETUP_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x8024D004)
+#define WU_E_SETUP_SOURCE_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x8024D005)
+#define WU_E_SETUP_TARGET_VERSION_GREATER _HRESULT_TYPEDEF_(0x8024D006)
+#define WU_E_SETUP_REGISTRATION_FAILED _HRESULT_TYPEDEF_(0x8024D007)
+#define WU_E_SELFUPDATE_SKIP_ON_FAILURE _HRESULT_TYPEDEF_(0x8024D008)
+#define WU_E_SETUP_SKIP_UPDATE _HRESULT_TYPEDEF_(0x8024D009)
+#define WU_E_SETUP_UNSUPPORTED_CONFIGURATION _HRESULT_TYPEDEF_(0x8024D00A)
+#define WU_E_SETUP_BLOCKED_CONFIGURATION _HRESULT_TYPEDEF_(0x8024D00B)
+#define WU_E_SETUP_REBOOT_TO_FIX _HRESULT_TYPEDEF_(0x8024D00C)
+#define WU_E_SETUP_ALREADYRUNNING _HRESULT_TYPEDEF_(0x8024D00D)
+#define WU_E_SETUP_REBOOTREQUIRED _HRESULT_TYPEDEF_(0x8024D00E)
+#define WU_E_SETUP_HANDLER_EXEC_FAILURE _HRESULT_TYPEDEF_(0x8024D00F)
+#define WU_E_SETUP_INVALID_REGISTRY_DATA _HRESULT_TYPEDEF_(0x8024D010)
+#define WU_E_SELFUPDATE_REQUIRED _HRESULT_TYPEDEF_(0x8024D011)
+#define WU_E_SELFUPDATE_REQUIRED_ADMIN _HRESULT_TYPEDEF_(0x8024D012)
+#define WU_E_SETUP_WRONG_SERVER_VERSION _HRESULT_TYPEDEF_(0x8024D013)
+#define WU_E_SETUP_DEFERRABLE_REBOOT_PENDING _HRESULT_TYPEDEF_(0x8024D014)
+#define WU_E_SETUP_NON_DEFERRABLE_REBOOT_PENDING _HRESULT_TYPEDEF_(0x8024D015)
+#define WU_E_SETUP_FAIL _HRESULT_TYPEDEF_(0x8024D016)
+#define WU_E_SETUP_UNEXPECTED _HRESULT_TYPEDEF_(0x8024DFFF)
+#define WU_E_EE_UNKNOWN_EXPRESSION _HRESULT_TYPEDEF_(0x8024E001)
+#define WU_E_EE_INVALID_EXPRESSION _HRESULT_TYPEDEF_(0x8024E002)
+#define WU_E_EE_MISSING_METADATA _HRESULT_TYPEDEF_(0x8024E003)
+#define WU_E_EE_INVALID_VERSION _HRESULT_TYPEDEF_(0x8024E004)
+#define WU_E_EE_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x8024E005)
+#define WU_E_EE_INVALID_ATTRIBUTEDATA _HRESULT_TYPEDEF_(0x8024E006)
+#define WU_E_EE_CLUSTER_ERROR _HRESULT_TYPEDEF_(0x8024E007)
+#define WU_E_EE_UNEXPECTED _HRESULT_TYPEDEF_(0x8024EFFF)
+#define WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION _HRESULT_TYPEDEF_(0x80243001)
+#define WU_E_INSTALLATION_RESULTS_INVALID_DATA _HRESULT_TYPEDEF_(0x80243002)
+#define WU_E_INSTALLATION_RESULTS_NOT_FOUND _HRESULT_TYPEDEF_(0x80243003)
+#define WU_E_TRAYICON_FAILURE _HRESULT_TYPEDEF_(0x80243004)
+#define WU_E_NON_UI_MODE _HRESULT_TYPEDEF_(0x80243FFD)
+#define WU_E_WUCLTUI_UNSUPPORTED_VERSION _HRESULT_TYPEDEF_(0x80243FFE)
+#define WU_E_AUCLIENT_UNEXPECTED _HRESULT_TYPEDEF_(0x80243FFF)
+#define WU_E_REPORTER_EVENTCACHECORRUPT _HRESULT_TYPEDEF_(0x8024F001)
+#define WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED _HRESULT_TYPEDEF_(0x8024F002)
+#define WU_E_INVALID_EVENT _HRESULT_TYPEDEF_(0x8024F003)
+#define WU_E_SERVER_BUSY _HRESULT_TYPEDEF_(0x8024F004)
+#define WU_E_CALLBACK_COOKIE_NOT_FOUND _HRESULT_TYPEDEF_(0x8024F005)
+#define WU_E_REPORTER_UNEXPECTED _HRESULT_TYPEDEF_(0x8024FFFF)
+#define WU_E_OL_INVALID_SCANFILE _HRESULT_TYPEDEF_(0x80247001)
+#define WU_E_OL_NEWCLIENT_REQUIRED _HRESULT_TYPEDEF_(0x80247002)
+#define WU_E_INVALID_EVENT_PAYLOAD _HRESULT_TYPEDEF_(0x80247003)
+#define WU_E_INVALID_EVENT_PAYLOADSIZE _HRESULT_TYPEDEF_(0x80247004)
+#define WU_E_SERVICE_NOT_REGISTERED _HRESULT_TYPEDEF_(0x80247005)
+#define WU_E_OL_UNEXPECTED _HRESULT_TYPEDEF_(0x80247FFF)
+#define WU_E_METADATA_NOOP _HRESULT_TYPEDEF_(0x80247100)
+#define WU_E_METADATA_CONFIG_INVALID_BINARY_ENCODING _HRESULT_TYPEDEF_(0x80247101)
+#define WU_E_METADATA_FETCH_CONFIG _HRESULT_TYPEDEF_(0x80247102)
+#define WU_E_METADATA_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80247104)
+#define WU_E_METADATA_UNEXPECTED _HRESULT_TYPEDEF_(0x80247105)
+#define WU_E_METADATA_NO_VERIFICATION_DATA _HRESULT_TYPEDEF_(0x80247106)
+#define WU_E_METADATA_BAD_FRAGMENTSIGNING_CONFIG _HRESULT_TYPEDEF_(0x80247107)
+#define WU_E_METADATA_FAILURE_PROCESSING_FRAGMENTSIGNING_CONFIG _HRESULT_TYPEDEF_(0x80247108)
+#define WU_E_METADATA_XML_MISSING _HRESULT_TYPEDEF_(0x80247120)
+#define WU_E_METADATA_XML_FRAGMENTSIGNING_MISSING _HRESULT_TYPEDEF_(0x80247121)
+#define WU_E_METADATA_XML_MODE_MISSING _HRESULT_TYPEDEF_(0x80247122)
+#define WU_E_METADATA_XML_MODE_INVALID _HRESULT_TYPEDEF_(0x80247123)
+#define WU_E_METADATA_XML_VALIDITY_INVALID _HRESULT_TYPEDEF_(0x80247124)
+#define WU_E_METADATA_XML_LEAFCERT_MISSING _HRESULT_TYPEDEF_(0x80247125)
+#define WU_E_METADATA_XML_INTERMEDIATECERT_MISSING _HRESULT_TYPEDEF_(0x80247126)
+#define WU_E_METADATA_XML_LEAFCERT_ID_MISSING _HRESULT_TYPEDEF_(0x80247127)
+#define WU_E_METADATA_XML_BASE64CERDATA_MISSING _HRESULT_TYPEDEF_(0x80247128)
+#define WU_E_METADATA_BAD_SIGNATURE _HRESULT_TYPEDEF_(0x80247140)
+#define WU_E_METADATA_UNSUPPORTED_HASH_ALG _HRESULT_TYPEDEF_(0x80247141)
+#define WU_E_METADATA_SIGNATURE_VERIFY_FAILED _HRESULT_TYPEDEF_(0x80247142)
+#define WU_E_METADATATRUST_CERTIFICATECHAIN_VERIFICATION _HRESULT_TYPEDEF_(0x80247150)
+#define WU_E_METADATATRUST_UNTRUSTED_CERTIFICATECHAIN _HRESULT_TYPEDEF_(0x80247151)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_MISSING _HRESULT_TYPEDEF_(0x80247160)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_VERIFICATION_FAILED _HRESULT_TYPEDEF_(0x80247161)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_UNTRUSTED _HRESULT_TYPEDEF_(0x80247162)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_VALIDITY_WINDOW _HRESULT_TYPEDEF_(0x80247163)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_SIGNATURE _HRESULT_TYPEDEF_(0x80247164)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_CERTCHAIN _HRESULT_TYPEDEF_(0x80247165)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_REFRESHONLINE _HRESULT_TYPEDEF_(0x80247166)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_ALL_BAD _HRESULT_TYPEDEF_(0x80247167)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_NODATA _HRESULT_TYPEDEF_(0x80247168)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_CACHELOOKUP _HRESULT_TYPEDEF_(0x80247169)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_VALIDITYWINDOW_UNEXPECTED _HRESULT_TYPEDEF_(0x8024717E)
+#define WU_E_METADATA_TIMESTAMP_TOKEN_UNEXPECTED _HRESULT_TYPEDEF_(0x8024717F)
+#define WU_E_METADATA_CERT_MISSING _HRESULT_TYPEDEF_(0x80247180)
+#define WU_E_METADATA_LEAFCERT_BAD_TRANSPORT_ENCODING _HRESULT_TYPEDEF_(0x80247181)
+#define WU_E_METADATA_INTCERT_BAD_TRANSPORT_ENCODING _HRESULT_TYPEDEF_(0x80247182)
+#define WU_E_METADATA_CERT_UNTRUSTED _HRESULT_TYPEDEF_(0x80247183)
+#define WU_E_WUTASK_INPROGRESS _HRESULT_TYPEDEF_(0x8024B001)
+#define WU_E_WUTASK_STATUS_DISABLED _HRESULT_TYPEDEF_(0x8024B002)
+#define WU_E_WUTASK_NOT_STARTED _HRESULT_TYPEDEF_(0x8024B003)
+#define WU_E_WUTASK_RETRY _HRESULT_TYPEDEF_(0x8024B004)
+#define WU_E_WUTASK_CANCELINSTALL_DISALLOWED _HRESULT_TYPEDEF_(0x8024B005)
+#define WU_E_UNKNOWN_HARDWARECAPABILITY _HRESULT_TYPEDEF_(0x8024B101)
+#define WU_E_BAD_XML_HARDWARECAPABILITY _HRESULT_TYPEDEF_(0x8024B102)
+#define WU_E_WMI_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8024B103)
+#define WU_E_UPDATE_MERGE_NOT_ALLOWED _HRESULT_TYPEDEF_(0x8024B104)
+#define WU_E_SKIPPED_UPDATE_INSTALLATION _HRESULT_TYPEDEF_(0x8024B105)
+#define WU_E_SLS_INVALID_REVISION _HRESULT_TYPEDEF_(0x8024B201)
+#define WU_E_FILETRUST_DUALSIGNATURE_RSA _HRESULT_TYPEDEF_(0x8024B301)
+#define WU_E_FILETRUST_DUALSIGNATURE_ECC _HRESULT_TYPEDEF_(0x8024B302)
+#define WU_E_TRUST_SUBJECT_NOT_TRUSTED _HRESULT_TYPEDEF_(0x8024B303)
+#define WU_E_TRUST_PROVIDER_UNKNOWN _HRESULT_TYPEDEF_(0x8024B304)
+
+#endif /* _WUERROR_ */
diff --git a/lib/libc/include/any-windows-any/xapo.h b/lib/libc/include/any-windows-any/xapo.h
index eb53899633..5d1525be1a 100644
--- a/lib/libc/include/any-windows-any/xapo.h
+++ b/lib/libc/include/any-windows-any/xapo.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xapo.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xapo.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xaudio2.h b/lib/libc/include/any-windows-any/xaudio2.h
index 4c886257d3..b9b4a8e2bd 100644
--- a/lib/libc/include/any-windows-any/xaudio2.h
+++ b/lib/libc/include/any-windows-any/xaudio2.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xaudio2.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xaudio2.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xaudio2fx.h b/lib/libc/include/any-windows-any/xaudio2fx.h
index 281bf0430e..1aedecf452 100644
--- a/lib/libc/include/any-windows-any/xaudio2fx.h
+++ b/lib/libc/include/any-windows-any/xaudio2fx.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xaudio2fx.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xaudio2fx.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xmllite.h b/lib/libc/include/any-windows-any/xmllite.h
index bedfd969b9..0e71e21747 100644
--- a/lib/libc/include/any-windows-any/xmllite.h
+++ b/lib/libc/include/any-windows-any/xmllite.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xmllite.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xmllite.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xpsdigitalsignature.h b/lib/libc/include/any-windows-any/xpsdigitalsignature.h
index 05174a06c0..0dfce45698 100644
--- a/lib/libc/include/any-windows-any/xpsdigitalsignature.h
+++ b/lib/libc/include/any-windows-any/xpsdigitalsignature.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xpsdigitalsignature.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xpsdigitalsignature.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xpsobjectmodel.h b/lib/libc/include/any-windows-any/xpsobjectmodel.h
index ac9bd0cc50..537c45f361 100644
--- a/lib/libc/include/any-windows-any/xpsobjectmodel.h
+++ b/lib/libc/include/any-windows-any/xpsobjectmodel.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xpsobjectmodel.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xpsobjectmodel.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xpsobjectmodel_1.h b/lib/libc/include/any-windows-any/xpsobjectmodel_1.h
index fbad38055a..3eb842dca0 100644
--- a/lib/libc/include/any-windows-any/xpsobjectmodel_1.h
+++ b/lib/libc/include/any-windows-any/xpsobjectmodel_1.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xpsobjectmodel_1.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xpsobjectmodel_1.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xpsprint.h b/lib/libc/include/any-windows-any/xpsprint.h
index 79a7f3e866..84febdd3de 100644
--- a/lib/libc/include/any-windows-any/xpsprint.h
+++ b/lib/libc/include/any-windows-any/xpsprint.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xpsprint.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xpsprint.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/include/any-windows-any/xpsrassvc.h b/lib/libc/include/any-windows-any/xpsrassvc.h
index b4599b0968..ec6d1d6128 100644
--- a/lib/libc/include/any-windows-any/xpsrassvc.h
+++ b/lib/libc/include/any-windows-any/xpsrassvc.h
@@ -1,4 +1,4 @@
-/*** Autogenerated by WIDL 6.4 from include/xpsrassvc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 7.0 from include/xpsrassvc.idl - Do not edit ***/
#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
diff --git a/lib/libc/mingw/crt/charmax.c b/lib/libc/mingw/crt/charmax.c
index 08aa5a1d3e..5106d1e0d1 100644
--- a/lib/libc/mingw/crt/charmax.c
+++ b/lib/libc/mingw/crt/charmax.c
@@ -10,7 +10,7 @@
__declspec(dllimport) int __lconv_init (void);
-int mingw_initcharmax = 0;
+int __mingw_initcharmax = 0;
int _charmax = 255;
diff --git a/lib/libc/mingw/crt/crtdll.c b/lib/libc/mingw/crt/crtdll.c
index 51b8d35141..08cd5922a8 100644
--- a/lib/libc/mingw/crt/crtdll.c
+++ b/lib/libc/mingw/crt/crtdll.c
@@ -48,7 +48,7 @@ static int __proc_attached = 0;
static _onexit_table_t atexit_table;
-extern int mingw_app_type;
+extern int __mingw_app_type;
extern WINBOOL WINAPI DllMain (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved);
@@ -145,7 +145,7 @@ int __mingw_init_ehandler (void);
WINBOOL WINAPI
DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
- mingw_app_type = 0;
+ __mingw_app_type = 0;
if (dwReason == DLL_PROCESS_ATTACH)
{
#if defined(__x86_64__) && !defined(__SEH__)
diff --git a/lib/libc/mingw/crt/crtexe.c b/lib/libc/mingw/crt/crtexe.c
index 646054320c..c6d43168ba 100644
--- a/lib/libc/mingw/crt/crtexe.c
+++ b/lib/libc/mingw/crt/crtexe.c
@@ -66,7 +66,7 @@ extern _CRTALLOC(".CRT$XCZ") _PVFV __xc_z[];
/* TLS initialization hook. */
extern const PIMAGE_TLS_CALLBACK __dyn_tls_init_callback;
-extern int mingw_app_type;
+extern int __mingw_app_type;
HINSTANCE __mingw_winmain_hInstance;
_TCHAR *__mingw_winmain_lpCmdLine;
@@ -99,8 +99,8 @@ static void duplicate_ppstrings (int ac, char ***av);
static int __cdecl pre_c_init (void);
static void __cdecl pre_cpp_init (void);
-_CRTALLOC(".CRT$XIAA") _PIFV mingw_pcinit = pre_c_init;
-_CRTALLOC(".CRT$XCAA") _PVFV mingw_pcppinit = pre_cpp_init;
+_CRTALLOC(".CRT$XIAA") _PIFV __mingw_pcinit = pre_c_init;
+_CRTALLOC(".CRT$XCAA") _PVFV __mingw_pcppinit = pre_cpp_init;
extern int _MINGW_INSTALL_DEBUG_MATHERR;
@@ -126,7 +126,7 @@ static int __cdecl
pre_c_init (void)
{
managedapp = check_managed_app ();
- if (mingw_app_type)
+ if (__mingw_app_type)
__set_app_type(_GUI_APP);
else
__set_app_type (_CONSOLE_APP);
@@ -172,7 +172,7 @@ int WinMainCRTStartup (void)
#ifdef SEH_INLINE_ASM
asm ("\t.l_startw:\n");
#endif
- mingw_app_type = 1;
+ __mingw_app_type = 1;
ret = __tmainCRTStartup ();
#ifdef SEH_INLINE_ASM
asm ("\tnop\n"
@@ -198,7 +198,7 @@ int mainCRTStartup (void)
#ifdef SEH_INLINE_ASM
asm ("\t.l_start:\n");
#endif
- mingw_app_type = 0;
+ __mingw_app_type = 0;
ret = __tmainCRTStartup ();
#ifdef SEH_INLINE_ASM
asm ("\tnop\n"
@@ -226,7 +226,7 @@ __tmainCRTStartup (void)
WINBOOL inDoubleQuote = FALSE;
memset (&StartupInfo, 0, sizeof (STARTUPINFO));
- if (mingw_app_type)
+ if (__mingw_app_type)
GetStartupInfo (&StartupInfo);
{
void *lock_free = NULL;
@@ -304,7 +304,7 @@ __tmainCRTStartup (void)
__mingw_winmain_lpCmdLine = lpszCommandLine;
}
- if (mingw_app_type)
+ if (__mingw_app_type)
{
__mingw_winmain_nShowCmd = StartupInfo.dwFlags & STARTF_USESHOWWINDOW ?
StartupInfo.wShowWindow : SW_SHOWDEFAULT;
@@ -329,10 +329,9 @@ __tmainCRTStartup (void)
return mainret;
}
-extern int mingw_initltsdrot_force;
-extern int mingw_initltsdyn_force;
-extern int mingw_initltssuo_force;
-extern int mingw_initcharmax;
+extern int __mingw_initltsdrot_force;
+extern int __mingw_initltsdyn_force;
+extern int __mingw_initltssuo_force;
static int __cdecl
check_managed_app (void)
@@ -343,10 +342,9 @@ check_managed_app (void)
PIMAGE_OPTIONAL_HEADER64 pNTHeader64;
/* Force to be linked. */
- mingw_initltsdrot_force=1;
- mingw_initltsdyn_force=1;
- mingw_initltssuo_force=1;
- mingw_initcharmax=1;
+ __mingw_initltsdrot_force=1;
+ __mingw_initltsdyn_force=1;
+ __mingw_initltssuo_force=1;
pDOSHeader = (PIMAGE_DOS_HEADER) &__ImageBase;
if (pDOSHeader->e_magic != IMAGE_DOS_SIGNATURE)
diff --git a/lib/libc/mingw/crt/mingw_helpers.c b/lib/libc/mingw/crt/mingw_helpers.c
index f5ce286ef5..84413cdb7c 100644
--- a/lib/libc/mingw/crt/mingw_helpers.c
+++ b/lib/libc/mingw/crt/mingw_helpers.c
@@ -5,4 +5,4 @@
*/
/* 0:console, 1:windows. */
-int mingw_app_type = 0;
+int __mingw_app_type = 0;
diff --git a/lib/libc/mingw/crt/pseudo-reloc.c b/lib/libc/mingw/crt/pseudo-reloc.c
index c31da96810..d4589ca663 100644
--- a/lib/libc/mingw/crt/pseudo-reloc.c
+++ b/lib/libc/mingw/crt/pseudo-reloc.c
@@ -21,6 +21,7 @@
#include <stdarg.h>
#include <memory.h>
#include <internal.h>
+#include <stdint.h>
#if defined(__CYGWIN__)
#include <wchar.h>
@@ -47,7 +48,7 @@
extern char __RUNTIME_PSEUDO_RELOC_LIST__;
extern char __RUNTIME_PSEUDO_RELOC_LIST_END__;
-extern char __MINGW_LSYMBOL(_image_base__);
+extern IMAGE_DOS_HEADER __MINGW_LSYMBOL(_image_base__);
void _pei386_runtime_relocator (void);
@@ -311,6 +312,7 @@ do_pseudo_reloc (void * start, void * end, void * base)
ptrdiff_t reloc_target = (ptrdiff_t) ((char *)end - (char*)start);
runtime_pseudo_reloc_v2 *v2_hdr = (runtime_pseudo_reloc_v2 *) start;
runtime_pseudo_reloc_item_v2 *r;
+ unsigned int bits;
/* A valid relocation list will contain at least one entry, and
* one v1 data structure (the smallest one) requires two DWORDs.
@@ -440,6 +442,23 @@ do_pseudo_reloc (void * start, void * end, void * base)
reldata -= ((ptrdiff_t) base + r->sym);
reldata += addr_imp;
+ bits = r->flags & 0xff;
+ if (bits < sizeof(ptrdiff_t)*8)
+ {
+ /* Check for overflows. We don't know if the target address is
+ * interpreted as a relative offset or as a truncated absolute
+ * address - to avoid false positives, allow offsets within the
+ * whole range of signed and unsigned N bits numbers, but error
+ * out for anything outside of that. Thus for relative offsets,
+ * this won't catch offsets that are only barely too large. */
+ ptrdiff_t max_unsigned = (1LL << bits) - 1;
+ ptrdiff_t min_signed = UINTPTR_MAX << (bits - 1);
+ if (reldata > max_unsigned || reldata < min_signed)
+ __report_error ("%d bit pseudo relocation at %p out of range, "
+ "targeting %p, yielding the value %p.\n",
+ bits, reloc_target, addr_imp, reldata);
+ }
+
/* Write the new relocation value back to *reloc_target */
switch ((r->flags & 0xff))
{
diff --git a/lib/libc/mingw/crt/tlssup.c b/lib/libc/mingw/crt/tlssup.c
index 582fa8519e..47beb27fcc 100644
--- a/lib/libc/mingw/crt/tlssup.c
+++ b/lib/libc/mingw/crt/tlssup.c
@@ -170,6 +170,6 @@ __dyn_tls_dtor (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
_CRTALLOC(".CRT$XLD") PIMAGE_TLS_CALLBACK __xl_d = (PIMAGE_TLS_CALLBACK) __dyn_tls_dtor;
-int mingw_initltsdrot_force = 0;
-int mingw_initltsdyn_force = 0;
-int mingw_initltssuo_force = 0;
+int __mingw_initltsdrot_force = 0;
+int __mingw_initltsdyn_force = 0;
+int __mingw_initltssuo_force = 0;
diff --git a/lib/libc/mingw/gdtoa/strtopx.c b/lib/libc/mingw/gdtoa/strtopx.c
index 64db719e04..51f5ef42de 100644
--- a/lib/libc/mingw/gdtoa/strtopx.c
+++ b/lib/libc/mingw/gdtoa/strtopx.c
@@ -127,4 +127,18 @@ long double __cdecl
__mingw_strtold (const char * __restrict__ src, char ** __restrict__ endptr)
__attribute__((alias("__strtold")));
+long double __cdecl
+strtold (const char * __restrict__ src, char ** __restrict__ endptr)
+ __attribute__((alias("__strtold")));
+
+#elif defined(__arm__) || defined(__aarch64__) || defined(_ARM_) || defined(_ARM64_)
+/* For ARM, where long double == double, provide the long double function as
+ * an alias for __strtod. Do this in a separate object file from other
+ * functions, to avoid linker conflicts if object files import both 'strtold'
+ * from libucrt*.a and the object file providing '__strtod'. */
+long double __cdecl
+strtold (const char * __restrict__ src, char ** __restrict__ endptr)
+{
+ return __mingw_strtod(src, endptr);
+}
#endif
diff --git a/lib/libc/mingw/include/config.h b/lib/libc/mingw/include/config.h
index 2c96636426..2e74ae1d19 100644
--- a/lib/libc/mingw/include/config.h
+++ b/lib/libc/mingw/include/config.h
@@ -1,18 +1,15 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
-/* Whether the linker provides __CTOR_LIST__ */
-#define HAVE_CTOR_LIST 1
-
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
@@ -52,7 +49,9 @@
/* Define to the version of this package. */
#define PACKAGE_VERSION "4.0b"
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#define STDC_HEADERS 1
/* Version number of package */
diff --git a/lib/libc/mingw/include/msvcrt.h b/lib/libc/mingw/include/msvcrt.h
index d5346254f0..c6f1052247 100644
--- a/lib/libc/mingw/include/msvcrt.h
+++ b/lib/libc/mingw/include/msvcrt.h
@@ -1,7 +1,7 @@
#include <winbase.h>
-#ifndef __LIBMSVCRT__
-#error "This file should only be used in libmsvcrt.a"
+#ifndef __LIBMSVCRT_OS__
+#error "This file should only be used in libmsvcrt-os.a"
#endif
static inline HANDLE __mingw_get_msvcrt_handle(void)
diff --git a/lib/libc/mingw/lib64/bthprops.def b/lib/libc/mingw/lib-common/bthprops.def
index e72ff87fca..e72ff87fca 100644
--- a/lib/libc/mingw/lib64/bthprops.def
+++ b/lib/libc/mingw/lib-common/bthprops.def
diff --git a/lib/libc/mingw/libarm32/fwpuclnt.def b/lib/libc/mingw/lib-common/fwpuclnt.def
index 6f29ed7198..33497ddd55 100644
--- a/lib/libc/mingw/libarm32/fwpuclnt.def
+++ b/lib/libc/mingw/lib-common/fwpuclnt.def
@@ -1,7 +1,7 @@
;
; Definition file of fwpuclnt.dll
; Automatic generated by gendef
-; written by Kai Tietz 2008-2014
+; written by Kai Tietz 2008
;
LIBRARY "fwpuclnt.dll"
EXPORTS
@@ -9,12 +9,14 @@ FwpiExpandCriteria0
FwpiFreeCriteria0
FwpiVpnTriggerAddAppSids
FwpiVpnTriggerAddFilePaths
+FwpiVpnTriggerAddSecurityDescriptor
FwpiVpnTriggerConfigureParameters
FwpiVpnTriggerEventSubscribe0
FwpiVpnTriggerEventUnsubscribe0
FwpiVpnTriggerInitializeNrptTriggering
FwpiVpnTriggerRemoveAppSids
FwpiVpnTriggerRemoveFilePaths
+FwpiVpnTriggerRemoveSecurityDescriptor
FwpiVpnTriggerResetNrptTriggering
FwpiVpnTriggerSetStateDisconnected
FwpiVpnTriggerUninitializeNrptTriggering
@@ -40,6 +42,8 @@ FwpmConnectionSetSecurityInfo0
FwpmConnectionSubscribe0
FwpmConnectionUnsubscribe0
FwpmDiagnoseNetFailure0
+FwpmDynamicKeywordSubscribe0
+FwpmDynamicKeywordUnsubscribe0
FwpmEngineClose0
FwpmEngineGetOption0
FwpmEngineGetSecurityInfo0
@@ -49,6 +53,7 @@ FwpmEngineSetSecurityInfo0
FwpmEventProviderCreate0
FwpmEventProviderDestroy0
FwpmEventProviderFireNetEvent0
+FwpmEventProviderFireNetEventEx0
FwpmEventProviderIsNetEventTypeEnabled0
FwpmFilterAdd0
FwpmFilterCreateEnumHandle0
@@ -66,9 +71,15 @@ FwpmFilterUnsubscribeChanges0
FwpmFreeMemory0
FwpmGetAppIdFromFileName0
FwpmGetSidFromOnlineId0
+FwpmIPsecS2STunnelAddConditions0
+FwpmIPsecS2STunnelAddInterfaceToCompartment0
+FwpmIPsecS2STunnelGetInterfaceForCompartment0
+FwpmIPsecS2STunnelRemoveConditions0
+FwpmIPsecS2STunnelRemoveInterfaceFromCompartment0
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelAdd1
FwpmIPsecTunnelAdd2
+FwpmIPsecTunnelAdd3
FwpmIPsecTunnelAddConditions0
FwpmIPsecTunnelDeleteByKey0
FwpmLayerCreateEnumHandle0
@@ -79,12 +90,19 @@ FwpmLayerGetByKey0
FwpmLayerGetSecurityInfoByKey0
FwpmLayerSetSecurityInfoByKey0
FwpmNetEventCreateEnumHandle0
+FwpmNetEventCreateEnumHandleEx
FwpmNetEventDestroyEnumHandle0
FwpmNetEventEnum0
FwpmNetEventEnum1
FwpmNetEventEnum2
+FwpmNetEventEnum3
+FwpmNetEventEnum4
+FwpmNetEventEnum5
FwpmNetEventSubscribe0
FwpmNetEventSubscribe1
+FwpmNetEventSubscribe2
+FwpmNetEventSubscribe3
+FwpmNetEventSubscribe4
FwpmNetEventSubscriptionsGet0
FwpmNetEventUnsubscribe0
FwpmNetEventsGetSecurityInfo0
@@ -95,6 +113,7 @@ FwpmProviderAdd0
FwpmProviderContextAdd0
FwpmProviderContextAdd1
FwpmProviderContextAdd2
+FwpmProviderContextAdd3
FwpmProviderContextCreateEnumHandle0
FwpmProviderContextDeleteById0
FwpmProviderContextDeleteByKey0
@@ -102,12 +121,15 @@ FwpmProviderContextDestroyEnumHandle0
FwpmProviderContextEnum0
FwpmProviderContextEnum1
FwpmProviderContextEnum2
+FwpmProviderContextEnum3
FwpmProviderContextGetById0
FwpmProviderContextGetById1
FwpmProviderContextGetById2
+FwpmProviderContextGetById3
FwpmProviderContextGetByKey0
FwpmProviderContextGetByKey1
FwpmProviderContextGetByKey2
+FwpmProviderContextGetByKey3
FwpmProviderContextGetSecurityInfoByKey0
FwpmProviderContextSetSecurityInfoByKey0
FwpmProviderContextSubscribeChanges0
@@ -149,6 +171,10 @@ FwpmvSwitchEventUnsubscribe0
FwpmvSwitchEventsGetSecurityInfo0
FwpmvSwitchEventsSetSecurityInfo0
FwppConnectionGetByIPsecInfo
+FwppConnectionGetByS2STunnelId
+FwppConnectionGetS2STunnelId
+FwppGetMD5HashBytes
+FwppIPsecSaContextCreate
FwpsAleEndpointCreateEnumHandle0
FwpsAleEndpointDestroyEnumHandle0
FwpsAleEndpointEnum0
diff --git a/lib/libc/mingw/lib64/glu32.def b/lib/libc/mingw/lib-common/glu32.def
index 690469d141..690469d141 100644
--- a/lib/libc/mingw/lib64/glu32.def
+++ b/lib/libc/mingw/lib-common/glu32.def
diff --git a/lib/libc/mingw/lib-common/msvcrt.def.in b/lib/libc/mingw/lib-common/msvcrt.def.in
index 0ea9d388fb..942c4c4ebe 100644
--- a/lib/libc/mingw/lib-common/msvcrt.def.in
+++ b/lib/libc/mingw/lib-common/msvcrt.def.in
@@ -930,7 +930,7 @@ _scalb
F_X64(_scalbf)
_scanf_l
_scanf_s_l
-_scprintf
+F_NON_I386(_scprintf) ; i386 _scprintf replaced by emu
_scprintf_l
_scprintf_p_l
_scwprintf
@@ -1111,7 +1111,7 @@ _vprintf_l
_vprintf_p
_vprintf_p_l
_vprintf_s_l
-_vscprintf
+F_NON_I386(_vscprintf) ; i386 _vscprintf replaced by emu
_vscprintf_l
_vscprintf_p_l
_vscwprintf
diff --git a/lib/libc/mingw/lib-common/mswsock.def b/lib/libc/mingw/lib-common/mswsock.def
index 889f2f1f77..b557a10e71 100644
--- a/lib/libc/mingw/lib-common/mswsock.def
+++ b/lib/libc/mingw/lib-common/mswsock.def
@@ -22,6 +22,8 @@ MigrateWinsockConfiguration
MigrateWinsockConfigurationEx
NPLoadNameSpaces
NSPStartup
+; MSDN says ProcessSocketNotifications is from ws2_32.dll, not mswsock.dll
+; ProcessSocketNotifications
SetServiceA
SetServiceW
StartWsdpService
diff --git a/lib/libc/mingw/lib-common/ntdll.def.in b/lib/libc/mingw/lib-common/ntdll.def.in
index 0ad5922a08..8d91bb5470 100644
--- a/lib/libc/mingw/lib-common/ntdll.def.in
+++ b/lib/libc/mingw/lib-common/ntdll.def.in
@@ -256,6 +256,7 @@ NtAccessCheckByTypeAndAuditAlarm
NtAccessCheckByTypeResultList
NtAccessCheckByTypeResultListAndAuditAlarm
NtAccessCheckByTypeResultListAndAuditAlarmByHandle
+NtAcquireCrossVmMutant
NtAcquireProcessActivityReference
NtAddAtom
NtAddAtomEx
@@ -310,6 +311,8 @@ NtCancelSynchronousIoFile
NtCancelTimer
NtCancelTimer2
NtCancelWaitCompletionPacket
+NtChangeProcessState
+NtChangeThreadState
NtClearEvent
NtClose
NtCloseObjectAuditAlarm
@@ -325,8 +328,10 @@ NtCompleteConnectPort
NtCompressKey
NtConnectPort
NtContinue
+NtContinueEx
NtConvertBetweenAuxiliaryCounterAndPerformanceCounter
NtCreateCrossVmEvent
+NtCreateCrossVmMutant
NtCreateDebugObject
NtCreateDirectoryObject
NtCreateDirectoryObjectEx
@@ -337,6 +342,7 @@ NtCreateEventPair
NtCreateFile
NtCreateIRTimer
NtCreateIoCompletion
+NtCreateIoRing
NtCreateJobObject
NtCreateJobSet
NtCreateKey
@@ -352,6 +358,7 @@ NtCreatePort
NtCreatePrivateNamespace
NtCreateProcess
NtCreateProcessEx
+NtCreateProcessStateChange
NtCreateProfile
NtCreateProfileEx
NtCreateRegistryTransaction
@@ -362,6 +369,7 @@ NtCreateSemaphore
NtCreateSymbolicLinkObject
NtCreateThread
NtCreateThreadEx
+NtCreateThreadStateChange
NtCreateTimer
NtCreateTimer2
NtCreateToken
@@ -387,6 +395,7 @@ NtDeleteValueKey
NtDeleteWnfStateData
NtDeleteWnfStateName
NtDeviceIoControlFile
+NtDirectGraphicsCall
NtDisableLastKnownGood
NtDisplayString
NtDrawText
@@ -543,6 +552,7 @@ NtQueryInformationWorkerFactory
NtQueryInstallUILanguage
NtQueryIntervalProfile
NtQueryIoCompletion
+NtQueryIoRingCapabilities
NtQueryKey
NtQueryLicenseValue
NtQueryMultipleValueKey
@@ -573,6 +583,7 @@ NtQueryWnfStateData
NtQueryWnfStateNameInformation
NtQueueApcThread
NtQueueApcThreadEx
+NtQueueApcThreadEx2
NtRaiseException
NtRaiseHardError
NtReadFile
@@ -580,6 +591,7 @@ NtReadFileScatter
NtReadOnlyEnlistment
NtReadRequestData
NtReadVirtualMemory
+NtReadVirtualMemoryEx
NtRecoverEnlistment
NtRecoverResourceManager
NtRecoverTransactionManager
@@ -639,6 +651,7 @@ NtSetIRTimer
NtSetInformationDebugObject
NtSetInformationEnlistment
NtSetInformationFile
+NtSetInformationIoRing
NtSetInformationJobObject
NtSetInformationKey
NtSetInformationObject
@@ -679,6 +692,7 @@ NtSignalAndWaitForSingleObject
NtSinglePhaseReject
NtStartProfile
NtStopProfile
+NtSubmitIoRing
NtSubscribeWnfStateChange
NtSuspendProcess
NtSuspendThread
@@ -836,6 +850,7 @@ RtlCanonicalizeDomainName
RtlCapabilityCheck
RtlCapabilityCheckForSingleSessionSku
RtlCaptureContext
+RtlCaptureContext2
RtlCaptureStackBackTrace
RtlCharToInteger
RtlCheckBootStatusIntegrity
@@ -864,6 +879,8 @@ RtlCommitDebugInfo
RtlCommitMemoryStream
RtlCompactHeap
RtlCompareAltitudes
+RtlCompareExchangePointerMapping
+RtlCompareExchangePropertyStore
RtlCompareMemory
RtlCompareMemoryUlong
RtlCompareString
@@ -877,6 +894,7 @@ RtlComputePrivatizedDllName_U
RtlConnectToSm
RtlConsoleMultiByteToUnicodeN
RtlConstructCrossVmEventPath
+RtlConstructCrossVmMutexPath
RtlContractHashTable
RtlConvertDeviceFamilyInfoToString
RtlConvertExclusiveToShared
@@ -957,6 +975,7 @@ RtlDecompressBuffer
RtlDecompressBufferEx
RtlDecompressFragment
RtlDefaultNpAcl
+RtlDelayExecution
RtlDelete
RtlDeleteAce
RtlDeleteAtomFromAtomTable
@@ -1071,6 +1090,7 @@ RtlFindActivationContextSectionString
RtlFindCharInUnicodeString
RtlFindClearBits
RtlFindClearBitsAndSet
+RtlFindClearBitsAndSetEx
F_X64(RtlFindClearBitsEx)
RtlFindClearRuns
RtlFindClosestEncodableLength
@@ -1149,6 +1169,7 @@ RtlGetFullPathName_UEx
RtlGetFullPathName_UstrEx
RtlGetFunctionTableListHead
RtlGetGroupSecurityDescriptor
+RtlGetImageFileMachines
RtlGetIntegerAtom
RtlGetInterruptTimePrecise
RtlGetLastNtStatus
@@ -1172,6 +1193,7 @@ RtlGetPersistedStateLocation
RtlGetProcessHeaps
RtlGetProcessPreferredUILanguages
RtlGetProductInfo
+RtlGetReturnAddressHijackTarget
RtlGetSaclSecurityDescriptor
RtlGetSearchPath
RtlGetSecurityDescriptorRMControl
@@ -1180,7 +1202,9 @@ RtlGetSetBootStatusData
RtlGetSuiteMask
RtlGetSystemBootStatus
RtlGetSystemBootStatusEx
+RtlGetSystemGlobalData
RtlGetSystemPreferredUILanguages
+RtlGetSystemTimeAndBias
RtlGetSystemTimePrecise
RtlGetThreadErrorMode
RtlGetThreadLangIdByIndex
@@ -1282,6 +1306,7 @@ RtlIpv6StringToAddressExA
RtlIpv6StringToAddressExW
RtlIpv6StringToAddressW
RtlIsActivationContextActive
+RtlIsApiSetImplemented
RtlIsCapabilitySid
RtlIsCloudFilesPlaceholder
RtlIsCriticalSectionLocked
@@ -1290,7 +1315,9 @@ RtlIsCurrentProcess
RtlIsCurrentThread
RtlIsCurrentThreadAttachExempt
RtlIsDosDeviceName_U
+RtlIsEcCode
RtlIsElevatedRid
+RtlIsEnclaveFeaturePresent
RtlIsGenericTableEmpty
RtlIsGenericTableEmptyAvl
RtlIsMultiSessionSku
@@ -1364,6 +1391,7 @@ RtlNewSecurityObjectWithMultipleInheritance
RtlNormalizeProcessParams
F_X86_ANY(RtlNormalizeSecurityDescriptor)
RtlNormalizeString
+RtlNotifyFeatureUsage
RtlNtPathNameToDosPathName
RtlNtStatusToDosError
RtlNtStatusToDosErrorNoTeb
@@ -1380,6 +1408,7 @@ RtlNumberOfSetBitsUlongPtr
RtlOemStringToUnicodeSize
RtlOemStringToUnicodeString
RtlOemToUnicodeN
+RtlOpenCrossProcessEmulatorWorkConnection
RtlOpenCurrentUser
RtlOsDeploymentState
RtlOwnerAcesPresent
@@ -1394,6 +1423,7 @@ RtlProtectHeap
RtlPublishWnfStateData
RtlPushFrame
RtlQueryActivationContextApplicationSettings
+RtlQueryAllFeatureConfigurations
RtlQueryAtomInAtomTable
RtlQueryCriticalSectionOwner
RtlQueryDepthSList
@@ -1401,6 +1431,9 @@ RtlQueryDynamicTimeZoneInformation
RtlQueryElevationFlags
RtlQueryEnvironmentVariable
RtlQueryEnvironmentVariable_U
+RtlQueryFeatureConfiguration
+RtlQueryFeatureConfigurationChangeStamp
+RtlQueryFeatureUsageNotificationSubscriptions
RtlQueryHeapInformation
RtlQueryImageMitigationPolicy
RtlQueryInformationAcl
@@ -1413,11 +1446,13 @@ RtlQueryPackageIdentity
RtlQueryPackageIdentityEx
RtlQueryPerformanceCounter
RtlQueryPerformanceFrequency
+RtlQueryPointerMapping
RtlQueryProcessBackTraceInformation
RtlQueryProcessDebugInformation
RtlQueryProcessHeapInformation
RtlQueryProcessLockInformation
RtlQueryProcessPlaceholderCompatibilityMode
+RtlQueryPropertyStore
RtlQueryProtectedPolicy
RtlQueryRegistryValueWithFallback
RtlQueryRegistryValues
@@ -1439,6 +1474,7 @@ RtlQueueApcWow64Thread
RtlQueueWorkItem
RtlRaiseCustomSystemEventTrigger
RtlRaiseException
+RtlRaiseNoncontinuableException
RtlRaiseStatus
RtlRandom
RtlRandomEx
@@ -1450,6 +1486,7 @@ RtlReadOutOfProcessMemoryStream
RtlReadThreadProfilingData
RtlRealPredecessor
RtlRealSuccessor
+RtlRegisterFeatureConfigurationChangeNotification
RtlRegisterForWnfMetaNotification
RtlRegisterSecureMemoryCacheCallback
RtlRegisterThreadWithCsrss
@@ -1465,7 +1502,9 @@ RtlReleaseSRWLockExclusive
RtlReleaseSRWLockShared
RtlRemoteCall
RtlRemoveEntryHashTable
+RtlRemovePointerMapping
RtlRemovePrivileges
+RtlRemovePropertyStore
RtlRemoveVectoredContinueHandler
RtlRemoveVectoredExceptionHandler
RtlReplaceSidInSd
@@ -1515,6 +1554,7 @@ RtlSetEnvironmentStrings
RtlSetEnvironmentVar
RtlSetEnvironmentVariable
RtlSetExtendedFeaturesMask
+RtlSetFeatureConfigurations
RtlSetGroupSecurityDescriptor
RtlSetHeapInformation
RtlSetImageMitigationPolicy
@@ -1571,6 +1611,7 @@ RtlStringFromGUIDEx
RtlStronglyEnumerateEntryHashTable
RtlSubAuthorityCountSid
RtlSubAuthoritySid
+RtlSubscribeForFeatureUsageNotification
RtlSubscribeWnfStateChangeNotification
RtlSubtreePredecessor
RtlSubtreeSuccessor
@@ -1626,6 +1667,8 @@ RtlUnlockMemoryBlockLookaside
RtlUnlockMemoryStreamRegion
RtlUnlockMemoryZone
RtlUnlockModuleSection
+RtlUnregisterFeatureConfigurationChangeNotification
+RtlUnsubscribeFromFeatureUsageNotifications
RtlUnsubscribeWnfNotificationWaitForCompletion
RtlUnsubscribeWnfNotificationWithCompletionCallback
RtlUnsubscribeWnfStateChangeNotification
@@ -1659,6 +1702,7 @@ RtlValidateProcessHeaps
RtlValidateUnicodeString
RtlVerifyVersionInfo
RtlVirtualUnwind
+RtlVirtualUnwind2
RtlWaitForWnfMetaNotification
RtlWaitOnAddress
RtlWakeAddressAll
@@ -1674,6 +1718,8 @@ RtlWerpReportException
RtlWnfCompareChangeStamp
RtlWnfDllUnloadCallback
RtlWow64CallFunction64
+RtlWow64ChangeProcessState
+RtlWow64ChangeThreadState
RtlWow64EnableFsRedirection
RtlWow64EnableFsRedirectionEx
F64(RtlWow64GetCpuAreaInfo)
@@ -1870,6 +1916,7 @@ ZwAccessCheckByTypeAndAuditAlarm
ZwAccessCheckByTypeResultList
ZwAccessCheckByTypeResultListAndAuditAlarm
ZwAccessCheckByTypeResultListAndAuditAlarmByHandle
+ZwAcquireCrossVmMutant
ZwAcquireProcessActivityReference
ZwAddAtom
ZwAddAtomEx
@@ -1924,6 +1971,8 @@ ZwCancelSynchronousIoFile
ZwCancelTimer
ZwCancelTimer2
ZwCancelWaitCompletionPacket
+ZwChangeProcessState
+ZwChangeThreadState
ZwClearEvent
ZwClose
ZwCloseObjectAuditAlarm
@@ -1939,8 +1988,10 @@ ZwCompleteConnectPort
ZwCompressKey
ZwConnectPort
ZwContinue
+ZwContinueEx
ZwConvertBetweenAuxiliaryCounterAndPerformanceCounter
ZwCreateCrossVmEvent
+ZwCreateCrossVmMutant
ZwCreateDebugObject
ZwCreateDirectoryObject
ZwCreateDirectoryObjectEx
@@ -1951,6 +2002,7 @@ ZwCreateEventPair
ZwCreateFile
ZwCreateIRTimer
ZwCreateIoCompletion
+ZwCreateIoRing
ZwCreateJobObject
ZwCreateJobSet
ZwCreateKey
@@ -1966,6 +2018,7 @@ ZwCreatePort
ZwCreatePrivateNamespace
ZwCreateProcess
ZwCreateProcessEx
+ZwCreateProcessStateChange
ZwCreateProfile
ZwCreateProfileEx
ZwCreateRegistryTransaction
@@ -1976,6 +2029,7 @@ ZwCreateSemaphore
ZwCreateSymbolicLinkObject
ZwCreateThread
ZwCreateThreadEx
+ZwCreateThreadStateChange
ZwCreateTimer
ZwCreateTimer2
ZwCreateToken
@@ -2001,6 +2055,7 @@ ZwDeleteValueKey
ZwDeleteWnfStateData
ZwDeleteWnfStateName
ZwDeviceIoControlFile
+ZwDirectGraphicsCall
ZwDisableLastKnownGood
ZwDisplayString
ZwDrawText
@@ -2156,6 +2211,7 @@ ZwQueryInformationWorkerFactory
ZwQueryInstallUILanguage
ZwQueryIntervalProfile
ZwQueryIoCompletion
+ZwQueryIoRingCapabilities
ZwQueryKey
ZwQueryLicenseValue
ZwQueryMultipleValueKey
@@ -2186,6 +2242,7 @@ ZwQueryWnfStateData
ZwQueryWnfStateNameInformation
ZwQueueApcThread
ZwQueueApcThreadEx
+ZwQueueApcThreadEx2
ZwRaiseException
ZwRaiseHardError
ZwReadFile
@@ -2193,6 +2250,7 @@ ZwReadFileScatter
ZwReadOnlyEnlistment
ZwReadRequestData
ZwReadVirtualMemory
+ZwReadVirtualMemoryEx
ZwRecoverEnlistment
ZwRecoverResourceManager
ZwRecoverTransactionManager
@@ -2252,6 +2310,7 @@ ZwSetIRTimer
ZwSetInformationDebugObject
ZwSetInformationEnlistment
ZwSetInformationFile
+ZwSetInformationIoRing
ZwSetInformationJobObject
ZwSetInformationKey
ZwSetInformationObject
@@ -2292,6 +2351,7 @@ ZwSignalAndWaitForSingleObject
ZwSinglePhaseReject
ZwStartProfile
ZwStopProfile
+ZwSubmitIoRing
ZwSubscribeWnfStateChange
ZwSuspendProcess
ZwSuspendThread
diff --git a/lib/libc/mingw/lib64/opengl32.def b/lib/libc/mingw/lib-common/opengl32.def
index 2111eb047c..2111eb047c 100644
--- a/lib/libc/mingw/lib64/opengl32.def
+++ b/lib/libc/mingw/lib-common/opengl32.def
diff --git a/lib/libc/mingw/lib-common/query.def b/lib/libc/mingw/lib-common/query.def
new file mode 100644
index 0000000000..008ccc90fc
--- /dev/null
+++ b/lib/libc/mingw/lib-common/query.def
@@ -0,0 +1,17 @@
+;
+; Definition file of query.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "query.dll"
+EXPORTS
+LoadBinaryFilter
+LoadTextFilter
+BindIFilterFromStorage
+BindIFilterFromStream
+DllCanUnloadNow
+DllGetClassObject
+DllRegisterServer
+DllUnregisterServer
+LoadIFilter
+LoadIFilterEx
diff --git a/lib/libc/mingw/lib-common/tbs.def b/lib/libc/mingw/lib-common/tbs.def
index a4093d9890..59b9dfe043 100644
--- a/lib/libc/mingw/lib-common/tbs.def
+++ b/lib/libc/mingw/lib-common/tbs.def
@@ -11,10 +11,12 @@ GetDeviceID
GetDeviceIDString
GetDeviceIDWithTimeout
Tbsi_Context_Create
+Tbsi_Create_Windows_Key
Tbsi_FilterLog
Tbsi_GetDeviceInfo
Tbsi_Get_OwnerAuth
Tbsi_Get_TCG_Log
+Tbsi_Get_TCG_Log_Ex
Tbsi_Physical_Presence_Command
Tbsi_Revoke_Attestation
Tbsi_ShaHash
@@ -22,4 +24,5 @@ Tbsip_Cancel_Commands
Tbsip_Context_Close
Tbsip_Submit_Command
Tbsip_Submit_Command_NonBlocking
+Tbsip_TestInterruptInformation
Tbsip_TestMorBit
diff --git a/lib/libc/mingw/lib-common/ws2_32.def.in b/lib/libc/mingw/lib-common/ws2_32.def.in
index 4789b77d87..b49c4b87d3 100644
--- a/lib/libc/mingw/lib-common/ws2_32.def.in
+++ b/lib/libc/mingw/lib-common/ws2_32.def.in
@@ -38,6 +38,7 @@ GetHostNameW
GetNameInfoW
InetNtopW
InetPtonW
+ProcessSocketNotifications
SetAddrInfoExA
SetAddrInfoExW
WPUCompleteOverlappedRequest
diff --git a/lib/libc/mingw/lib32/authz.def b/lib/libc/mingw/lib32/authz.def
index 262a2da26d..764bd9dd80 100644
--- a/lib/libc/mingw/lib32/authz.def
+++ b/lib/libc/mingw/lib32/authz.def
@@ -8,26 +8,38 @@ EXPORTS
AuthzAccessCheck@36
AuthzAddSidsToContext@24
AuthzCachedAccessCheck@20
+AuthzComputeEffectivePermission@60
AuthzEnumerateSecurityEventSources@16
AuthzEvaluateSacl@24
AuthzFreeAuditEvent@4
+AuthzFreeCentralAccessPolicyCache@0
AuthzFreeContext@4
AuthzFreeHandle@4
AuthzFreeResourceManager@4
AuthzGetInformationFromContext@20
+AuthzInitializeCompoundContext@12
AuthzInitializeContextFromAuthzContext@28
AuthzInitializeContextFromSid@32
AuthzInitializeContextFromToken@32
-AuthzInitializeObjectAccessAuditEvent
-AuthzInitializeObjectAccessAuditEvent2
+AuthzInitializeObjectAccessAuditEvent@0
+AuthzInitializeObjectAccessAuditEvent2@0
+AuthzInitializeRemoteAccessCheck@4
+AuthzInitializeRemoteResourceManager@8
AuthzInitializeResourceManager@24
+AuthzInitializeResourceManagerEx@12
AuthzInstallSecurityEventSource@8
+AuthzModifyClaims@16
AuthzModifySecurityAttributes@12
+AuthzModifySids@16
AuthzOpenObjectAudit@32
+AuthzRegisterCapChangeNotification@12
AuthzRegisterSecurityEventSource@12
-AuthzReportSecurityEvent
+AuthzReportSecurityEvent@0
AuthzReportSecurityEventFromParams@20
+AuthzSetAppContainerInformation@16
+AuthzShutdownRemoteAccessCheck@0
AuthzUninstallSecurityEventSource@8
+AuthzUnregisterCapChangeNotification@4
AuthzUnregisterSecurityEventSource@8
AuthziAccessCheckEx@40
AuthziAllocateAuditParams@8
@@ -38,9 +50,9 @@ AuthziFreeAuditQueue@4
AuthziGenerateAdminAlertAuditW@16
AuthziInitializeAuditEvent@44
AuthziInitializeAuditEventType@20
-AuthziInitializeAuditParams
+AuthziInitializeAuditParams@0
AuthziInitializeAuditParamsFromArray@20
-AuthziInitializeAuditParamsWithRM
+AuthziInitializeAuditParamsWithRM@0
AuthziInitializeAuditQueue@20
AuthziInitializeContextFromSid@32
AuthziLogAuditEvent@12
@@ -48,6 +60,18 @@ AuthziModifyAuditEvent2@32
AuthziModifyAuditEvent@28
AuthziModifyAuditEventType@20
AuthziModifyAuditQueue@24
+AuthziQueryAuditPolicy@0
+AuthziSetAuditPolicy@0
AuthziModifySecurityAttributes@12
AuthziQuerySecurityAttributes@24
-AuthziSourceAudit
+AuthziSourceAudit@0
+FreeClaimDefinitions@8
+FreeClaimDictionary@4
+GenerateNewCAPID@4
+GetCentralAccessPoliciesByCapID@28
+GetCentralAccessPoliciesByDN@20
+GetClaimDefinitions@16
+GetClaimDomainInfo@12
+GetDefaultCAPESecurityDescriptor@4
+InitializeClaimDictionary@12
+RefreshClaimDictionary@4
diff --git a/lib/libc/mingw/lib32/fwpuclnt.def b/lib/libc/mingw/lib32/fwpuclnt.def
index 03c006c5b4..fd33788529 100644
--- a/lib/libc/mingw/lib32/fwpuclnt.def
+++ b/lib/libc/mingw/lib32/fwpuclnt.def
@@ -5,6 +5,21 @@
;
LIBRARY "fwpuclnt.dll"
EXPORTS
+FwpiExpandCriteria0@20
+FwpiFreeCriteria0@8
+FwpiVpnTriggerAddAppSids@12
+FwpiVpnTriggerAddFilePaths@12
+FwpiVpnTriggerAddSecurityDescriptor@8
+FwpiVpnTriggerConfigureParameters@8
+FwpiVpnTriggerEventSubscribe0@20
+FwpiVpnTriggerEventUnsubscribe0@8
+FwpiVpnTriggerInitializeNrptTriggering@8
+FwpiVpnTriggerRemoveAppSids@4
+FwpiVpnTriggerRemoveFilePaths@4
+FwpiVpnTriggerRemoveSecurityDescriptor@4
+FwpiVpnTriggerResetNrptTriggering@4
+FwpiVpnTriggerSetStateDisconnected@8
+FwpiVpnTriggerUninitializeNrptTriggering@4
FwpmCalloutAdd0@16
FwpmCalloutCreateEnumHandle0@12
FwpmCalloutDeleteById0@8
@@ -18,7 +33,17 @@ FwpmCalloutSetSecurityInfoByKey0@28
FwpmCalloutSubscribeChanges0@20
FwpmCalloutSubscriptionsGet0@12
FwpmCalloutUnsubscribeChanges0@8
+FwpmConnectionCreateEnumHandle0@12
+FwpmConnectionDestroyEnumHandle0@8
+FwpmConnectionEnum0@20
+FwpmConnectionGetById0@16
+FwpmConnectionGetSecurityInfo0@28
+FwpmConnectionSetSecurityInfo0@24
+FwpmConnectionSubscribe0@20
+FwpmConnectionUnsubscribe0@8
FwpmDiagnoseNetFailure0@12
+FwpmDynamicKeywordSubscribe0@16
+FwpmDynamicKeywordUnsubscribe0@4
FwpmEngineClose0@4
FwpmEngineGetOption0@12
FwpmEngineGetSecurityInfo0@28
@@ -27,7 +52,8 @@ FwpmEngineSetOption0@12
FwpmEngineSetSecurityInfo0@24
FwpmEventProviderCreate0@8
FwpmEventProviderDestroy0@4
-FwpmEventProviderFireNetEvent0@12
+FwpmEventProviderFireNetEvent0@16
+FwpmEventProviderFireNetEventEx0@20
FwpmEventProviderIsNetEventTypeEnabled0@12
FwpmFilterAdd0@16
FwpmFilterCreateEnumHandle0@12
@@ -44,7 +70,17 @@ FwpmFilterSubscriptionsGet0@12
FwpmFilterUnsubscribeChanges0@8
FwpmFreeMemory0@4
FwpmGetAppIdFromFileName0@8
+FwpmGetSidFromOnlineId0@8
+FwpmIPsecS2STunnelAddConditions0@28
+FwpmIPsecS2STunnelAddInterfaceToCompartment0@12
+FwpmIPsecS2STunnelGetInterfaceForCompartment0@12
+FwpmIPsecS2STunnelRemoveConditions0@28
+FwpmIPsecS2STunnelRemoveInterfaceFromCompartment0@8
FwpmIPsecTunnelAdd0@28
+FwpmIPsecTunnelAdd1@32
+FwpmIPsecTunnelAdd2@32
+FwpmIPsecTunnelAdd3@32
+FwpmIPsecTunnelAddConditions0@20
FwpmIPsecTunnelDeleteByKey0@8
FwpmLayerCreateEnumHandle0@12
FwpmLayerDestroyEnumHandle0@8
@@ -54,19 +90,46 @@ FwpmLayerGetByKey0@12
FwpmLayerGetSecurityInfoByKey0@32
FwpmLayerSetSecurityInfoByKey0@28
FwpmNetEventCreateEnumHandle0@12
+FwpmNetEventCreateEnumHandleEx@16
FwpmNetEventDestroyEnumHandle0@8
FwpmNetEventEnum0@20
+FwpmNetEventEnum1@20
+FwpmNetEventEnum2@20
+FwpmNetEventEnum3@20
+FwpmNetEventEnum4@20
+FwpmNetEventEnum5@20
+FwpmNetEventSubscribe0@20
+FwpmNetEventSubscribe1@20
+FwpmNetEventSubscribe2@20
+FwpmNetEventSubscribe3@20
+FwpmNetEventSubscribe4@20
+FwpmNetEventSubscriptionsGet0@12
+FwpmNetEventUnsubscribe0@8
FwpmNetEventsGetSecurityInfo0@28
+FwpmNetEventsLost0@8
FwpmNetEventsSetSecurityInfo0@24
+FwpmProcessNameResolutionEvent0@16
FwpmProviderAdd0@12
FwpmProviderContextAdd0@16
+FwpmProviderContextAdd1@16
+FwpmProviderContextAdd2@16
+FwpmProviderContextAdd3@16
FwpmProviderContextCreateEnumHandle0@12
FwpmProviderContextDeleteById0@12
FwpmProviderContextDeleteByKey0@8
FwpmProviderContextDestroyEnumHandle0@8
FwpmProviderContextEnum0@20
+FwpmProviderContextEnum1@20
+FwpmProviderContextEnum2@20
+FwpmProviderContextEnum3@20
FwpmProviderContextGetById0@16
+FwpmProviderContextGetById1@16
+FwpmProviderContextGetById2@16
+FwpmProviderContextGetById3@16
FwpmProviderContextGetByKey0@12
+FwpmProviderContextGetByKey1@12
+FwpmProviderContextGetByKey2@12
+FwpmProviderContextGetByKey3@12
FwpmProviderContextGetSecurityInfoByKey0@32
FwpmProviderContextSetSecurityInfoByKey0@28
FwpmProviderContextSubscribeChanges0@20
@@ -96,51 +159,127 @@ FwpmSubLayerSetSecurityInfoByKey0@28
FwpmSubLayerSubscribeChanges0@20
FwpmSubLayerSubscriptionsGet0@12
FwpmSubLayerUnsubscribeChanges0@8
+FwpmSystemPortsGet0@8
+FwpmSystemPortsSubscribe0@20
+FwpmSystemPortsUnsubscribe0@8
FwpmTraceRestoreDefaults0@0
FwpmTransactionAbort0@4
FwpmTransactionBegin0@8
FwpmTransactionCommit0@4
+FwpmvSwitchEventSubscribe0@20
+FwpmvSwitchEventUnsubscribe0@8
+FwpmvSwitchEventsGetSecurityInfo0@28
+FwpmvSwitchEventsSetSecurityInfo0@24
+FwppConnectionGetByIPsecInfo@20
+FwppConnectionGetByS2STunnelId@16
+FwppConnectionGetS2STunnelId@16
+FwppGetMD5HashBytes@16
+FwppIPsecSaContextCreate@36
+FwpsAleEndpointCreateEnumHandle0@12
+FwpsAleEndpointDestroyEnumHandle0@8
+FwpsAleEndpointEnum0@20
+FwpsAleEndpointGetById0@16
+FwpsAleEndpointGetSecurityInfo0@28
+FwpsAleEndpointSetSecurityInfo0@24
FwpsAleExplicitCredentialsQuery0@16
+FwpsAleGetPortStatus0@12
FwpsClassifyUser0@28
FwpsFreeMemory0@4
FwpsGetInProcReplicaOffset0@4
FwpsLayerCreateInProcReplica0@8
FwpsLayerReleaseInProcReplica0@8
FwpsOpenToken0@20
+FwpsQueryIPsecDosFWUsed0@8
+FwpsQueryIPsecOffloadDone0@8
+GetUnifiedTraceHandle@4
+IPsecDospGetSecurityInfo0@28
+IPsecDospGetStatistics0@8
+IPsecDospSetSecurityInfo0@24
+IPsecDospStateCreateEnumHandle0@12
+IPsecDospStateDestroyEnumHandle0@8
+IPsecDospStateEnum0@20
+IPsecGetKeyFromDictator0@16
IPsecGetStatistics0@8
+IPsecGetStatistics1@8
+IPsecKeyDictationCheck0@16
+IPsecKeyManagerAddAndRegister0@16
+IPsecKeyManagerGetSecurityInfoByKey0@32
+IPsecKeyManagerSetSecurityInfoByKey0@28
+IPsecKeyManagerUnregisterAndDelete0@8
+IPsecKeyManagersGet0@12
IPsecKeyModuleAdd0@12
-IPsecKeyModuleCompleteAcquire0@16
IPsecKeyModuleDelete0@8
+IPsecKeyModuleUpdateAcquire0@20
+IPsecKeyNotification0@12
IPsecSaContextAddInbound0@16
+IPsecSaContextAddInbound1@16
+IPsecSaContextAddInboundAndTrackConnection@28
IPsecSaContextAddOutbound0@16
+IPsecSaContextAddOutbound1@16
+IPsecSaContextAddOutboundAndTrackConnection@28
IPsecSaContextCreate0@16
+IPsecSaContextCreate1@20
IPsecSaContextCreateEnumHandle0@12
IPsecSaContextDeleteById0@12
IPsecSaContextDestroyEnumHandle0@8
IPsecSaContextEnum0@20
+IPsecSaContextEnum1@20
IPsecSaContextExpire0@12
IPsecSaContextGetById0@16
+IPsecSaContextGetById1@16
IPsecSaContextGetSpi0@20
+IPsecSaContextGetSpi1@20
+IPsecSaContextSetSpi0@20
+IPsecSaContextSubscribe0@20
+IPsecSaContextSubscriptionsGet0@12
+IPsecSaContextUnsubscribe0@8
+IPsecSaContextUpdate0@16
IPsecSaCreateEnumHandle0@12
IPsecSaDbGetSecurityInfo0@28
IPsecSaDbSetSecurityInfo0@24
IPsecSaDestroyEnumHandle0@8
IPsecSaEnum0@20
+IPsecSaEnum1@20
IPsecSaInitiateAsync0@16
IkeextGetConfigParameters0@4
IkeextGetStatistics0@8
+IkeextGetStatistics1@8
IkeextSaCreateEnumHandle0@12
IkeextSaDbGetSecurityInfo0@28
IkeextSaDbSetSecurityInfo0@24
IkeextSaDeleteById0@12
IkeextSaDestroyEnumHandle0@8
IkeextSaEnum0@20
+IkeextSaEnum1@20
+IkeextSaEnum2@20
IkeextSaGetById0@16
+IkeextSaGetById1@20
+IkeextSaGetById2@20
+IkeextSaUpdateAdditionalAddressesByTunnelId0@24
+IkeextSaUpdatePreferredAddressesByTunnelId0@24
IkeextSetConfigParameters0@4
+NamespaceCallout@12
+WFPRIODequeueCompletion@12
WSADeleteSocketPeerTargetName@20
WSAImpersonateSocketPeer@12
WSAQuerySocketSecurity@28
WSARevertImpersonation@0
WSASetSocketPeerTargetName@20
WSASetSocketSecurity@20
-wfpdiagW@16
+WfpCloseDPConfigureHandle@4 ; forwards to NtClose in ntdll.dll
+WfpConfigureDPSecurityDescriptor@12
+WfpCreateDPConfigureHandle@4
+WfpRIOChannelClose@4 ; forwards to NtClose in ntdll.dll
+WfpRIOCleanupRequestQueue@8
+WfpRIOCloseCompletionQueue@8
+WfpRIOCreateChannel@12
+WfpRIOCreateCompletionQueue@16
+WfpRIOCreateRequestQueue@36
+WfpRIODeregisterBuffer@12
+WfpRIOIndicateActivityThreshold@8
+WfpRIONotify@8
+WfpRIOReceive@28
+WfpRIORegisterBuffer@16
+WfpRIOResume@4
+WfpRIOSend@28
+WfpRIOSuspend@4
diff --git a/lib/libc/mingw/lib32/ksuser.def b/lib/libc/mingw/lib32/ksuser.def
index 63a6916186..fe97a06a22 100644
--- a/lib/libc/mingw/lib32/ksuser.def
+++ b/lib/libc/mingw/lib32/ksuser.def
@@ -1,6 +1,15 @@
-LIBRARY ksuser.dll
+;
+; Definition file of ksuser.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "ksuser.dll"
EXPORTS
+KsCreateAllocator2@12
KsCreateAllocator@12
+KsCreateClock2@12
KsCreateClock@12
+KsCreatePin2@16
KsCreatePin@16
+KsCreateTopologyNode2@16
KsCreateTopologyNode@16
diff --git a/lib/libc/mingw/lib32/mswsock.def b/lib/libc/mingw/lib32/mswsock.def
index 3e74f87a11..90c20dcd79 100644
--- a/lib/libc/mingw/lib32/mswsock.def
+++ b/lib/libc/mingw/lib32/mswsock.def
@@ -1,4 +1,9 @@
-LIBRARY MSWSOCK.DLL
+;
+; Definition file of MSWSOCK.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "MSWSOCK.dll"
EXPORTS
AcceptEx@32
EnumProtocolsA@12
@@ -10,14 +15,53 @@ GetNameByTypeA@12
GetNameByTypeW@12
GetServiceA@28
GetServiceW@28
+GetSocketErrorMessageW@4
GetTypeByNameA@8
GetTypeByNameW@8
MigrateWinsockConfiguration@12
+MigrateWinsockConfigurationEx@20
NPLoadNameSpaces@12
+NSPStartup@8
+; MSDN says ProcessSocketNotifications is from ws2_32.dll, not mswsock.dll
+; ProcessSocketNotifications@28
SetServiceA@24
SetServiceW@24
+StartWsdpService@0
+StopWsdpService@0
+Tcpip4_WSHAddressToString@20
+Tcpip4_WSHEnumProtocols@16
+Tcpip4_WSHGetBroadcastSockaddr@12
+Tcpip4_WSHGetProviderGuid@8
+Tcpip4_WSHGetSockaddrType@12
+Tcpip4_WSHGetSocketInformation@32
+Tcpip4_WSHGetWSAProtocolInfo@12
+Tcpip4_WSHGetWildcardSockaddr@12
+Tcpip4_WSHGetWinsockMapping@8
+Tcpip4_WSHIoctl@52
+Tcpip4_WSHJoinLeaf@52
+Tcpip4_WSHNotify@20
+Tcpip4_WSHOpenSocket2@32
+Tcpip4_WSHOpenSocket@24
+Tcpip4_WSHSetSocketInformation@32
+Tcpip4_WSHStringToAddress@20
+Tcpip6_WSHAddressToString@20
+Tcpip6_WSHEnumProtocols@16
+Tcpip6_WSHGetProviderGuid@8
+Tcpip6_WSHGetSockaddrType@12
+Tcpip6_WSHGetSocketInformation@32
+Tcpip6_WSHGetWSAProtocolInfo@12
+Tcpip6_WSHGetWildcardSockaddr@12
+Tcpip6_WSHGetWinsockMapping@8
+Tcpip6_WSHIoctl@52
+Tcpip6_WSHJoinLeaf@52
+Tcpip6_WSHNotify@20
+Tcpip6_WSHOpenSocket2@32
+Tcpip6_WSHOpenSocket@24
+Tcpip6_WSHSetSocketInformation@32
+Tcpip6_WSHStringToAddress@20
TransmitFile@28
WSARecvEx@16
+WSPStartup@76
dn_expand@20
getnetbyname@4
inet_network@4
diff --git a/lib/libc/mingw/lib32/ntdll.def b/lib/libc/mingw/lib32/ntdll.def
index 48b32ff699..5f6ff3a02d 100644
--- a/lib/libc/mingw/lib32/ntdll.def
+++ b/lib/libc/mingw/lib32/ntdll.def
@@ -229,6 +229,7 @@ NtAccessCheckByTypeAndAuditAlarm@64
NtAccessCheckByTypeResultList@44
NtAccessCheckByTypeResultListAndAuditAlarm@64
NtAccessCheckByTypeResultListAndAuditAlarmByHandle@68
+NtAcquireCrossVmMutant@8
NtAcquireProcessActivityReference@12
NtAcquireCMFViewOwnership@12
NtAddAtom@12
@@ -284,6 +285,8 @@ NtCancelSynchronousIoFile@12
NtCancelTimer2@8
NtCancelTimer@8
NtCancelWaitCompletionPacket@8
+NtChangeProcessState@24
+NtChangeThreadState@24
NtClearEvent@4
NtClose@4
NtCloseObjectAuditAlarm@12
@@ -299,8 +302,10 @@ NtCompleteConnectPort@4
NtCompressKey@4
NtConnectPort@32
NtContinue@8
+NtContinueEx@8
NtConvertBetweenAuxiliaryCounterAndPerformanceCounter@16
NtCreateCrossVmEvent@24
+NtCreateCrossVmMutant@24
NtCreateDebugObject@16
NtCreateDirectoryObject@12
NtCreateDirectoryObjectEx@20
@@ -311,6 +316,7 @@ NtCreateEventPair@12
NtCreateFile@44
NtCreateIRTimer@12
NtCreateIoCompletion@16
+NtCreateIoRing@20
NtCreateJobObject@12
NtCreateJobSet@12
NtCreateKey@28
@@ -326,6 +332,7 @@ NtCreatePort@20
NtCreatePrivateNamespace@16
NtCreateProcess@32
NtCreateProcessEx@36
+NtCreateProcessStateChange@20
NtCreateProfile@36
NtCreateProfileEx@40
NtCreateRegistryTransaction@16
@@ -336,6 +343,7 @@ NtCreateSemaphore@20
NtCreateSymbolicLinkObject@16
NtCreateThread@32
NtCreateThreadEx@44
+NtCreateThreadStateChange@20
NtCreateTimer2@20
NtCreateTimer@16
NtCreateToken@52
@@ -362,6 +370,7 @@ NtDeleteValueKey@8
NtDeleteWnfStateData@8
NtDeleteWnfStateName@4
NtDeviceIoControlFile@40
+NtDirectGraphicsCall@20
NtDisableLastKnownGood@0
NtDisplayString@4
NtDrawText@4
@@ -420,6 +429,7 @@ NtListenPort@8
NtLoadDriver@4
NtLoadEnclaveData@36
NtLoadKey2@12
+NtLoadKey3@32
NtLoadKey@8
NtLoadKeyEx@32
NtLockFile@40
@@ -517,6 +527,7 @@ NtQueryInformationWorkerFactory@20
NtQueryInstallUILanguage@4
NtQueryIntervalProfile@8
NtQueryIoCompletion@20
+NtQueryIoRingCapabilities@8
NtQueryKey@20
NtQueryLicenseValue@20
NtQueryMultipleValueKey@24
@@ -546,6 +557,7 @@ NtQueryVolumeInformationFile@20
NtQueryWnfStateData@24
NtQueryWnfStateNameInformation@20
NtQueueApcThread@20
+NtQueueApcThreadEx2@28
NtQueueApcThreadEx@24
NtRaiseException@12
NtRaiseHardError@24
@@ -554,6 +566,7 @@ NtReadFileScatter@36
NtReadOnlyEnlistment@8
NtReadRequestData@24
NtReadVirtualMemory@20
+NtReadVirtualMemoryEx@24
NtRecoverEnlistment@8
NtRecoverResourceManager@4
NtRecoverTransactionManager@4
@@ -614,6 +627,7 @@ NtSetIRTimer@8
NtSetInformationDebugObject@20
NtSetInformationEnlistment@16
NtSetInformationFile@20
+NtSetInformationIoRing@16
NtSetInformationJobObject@16
NtSetInformationKey@16
NtSetInformationObject@16
@@ -654,6 +668,7 @@ NtSignalAndWaitForSingleObject@16
NtSinglePhaseReject@8
NtStartProfile@4
NtStopProfile@4
+NtSubmitIoRing@16
NtSubscribeWnfStateChange@16
NtSuspendProcess@4
NtSuspendThread@8
@@ -832,6 +847,8 @@ RtlCommitDebugInfo@8
RtlCommitMemoryStream@8
RtlCompactHeap@8
RtlCompareAltitudes@8
+RtlCompareExchangePointerMapping@16
+RtlCompareExchangePropertyStore@16
RtlCompareMemory@12
RtlCompareMemoryUlong@12
RtlCompareString@12
@@ -844,6 +861,7 @@ RtlComputePrivatizedDllName_U@12
RtlConnectToSm@16
RtlConsoleMultiByteToUnicodeN@24
RtlConstructCrossVmEventPath@12
+RtlConstructCrossVmMutexPath@12
RtlContractHashTable@4
RtlConvertDeviceFamilyInfoToString@16
RtlConvertExclusiveToShared@4
@@ -919,6 +937,7 @@ RtlDecompressBuffer@24
RtlDecompressBufferEx@28
RtlDecompressFragment@32
RtlDefaultNpAcl@4
+RtlDelayExecution@8
RtlDelete@4
RtlDeleteAce@8
RtlDeleteAtomFromAtomTable@8
@@ -1099,6 +1118,7 @@ RtlGetFullPathName_U@16
RtlGetFullPathName_UEx@20
RtlGetFullPathName_UstrEx@32
RtlGetGroupSecurityDescriptor@12
+RtlGetImageFileMachines@8
RtlGetIntegerAtom@8
RtlGetInterruptTimePrecise@4
RtlGetLastNtStatus@0
@@ -1122,6 +1142,7 @@ RtlGetPersistedStateLocation@28
RtlGetProcessHeaps@8
RtlGetProcessPreferredUILanguages@16
RtlGetProductInfo@20
+RtlGetReturnAddressHijackTarget@0
RtlGetSaclSecurityDescriptor@16
RtlGetSearchPath@4
RtlGetSecurityDescriptorRMControl@8
@@ -1130,7 +1151,9 @@ RtlGetSetBootStatusData@24
RtlGetSuiteMask@0
RtlGetSystemBootStatus@16
RtlGetSystemBootStatusEx@12
+RtlGetSystemGlobalData@12
RtlGetSystemPreferredUILanguages@20
+RtlGetSystemTimeAndBias@12
RtlGetSystemTimePrecise@0
RtlGetThreadErrorMode@0
RtlGetThreadLangIdByIndex@16
@@ -1232,6 +1255,7 @@ RtlIpv6StringToAddressExA@16
RtlIpv6StringToAddressExW@16
RtlIpv6StringToAddressW@12
RtlIsActivationContextActive@4
+RtlIsApiSetImplemented@4
RtlIsCapabilitySid@4
RtlIsCloudFilesPlaceholder@8
RtlIsCriticalSectionLocked@4
@@ -1241,6 +1265,7 @@ RtlIsCurrentThread@4
RtlIsCurrentThreadAttachExempt@0
RtlIsDosDeviceName_U@4
RtlIsElevatedRid@4
+RtlIsEnclaveFeaturePresent@4
RtlIsGenericTableEmpty@4
RtlIsGenericTableEmptyAvl@4
RtlIsMultiSessionSku@0
@@ -1321,6 +1346,7 @@ RtlNewSecurityObjectWithMultipleInheritance@36
RtlNormalizeProcessParams@4
RtlNormalizeSecurityDescriptor@20
RtlNormalizeString@20
+RtlNotifyFeatureUsage@4
RtlNtPathNameToDosPathName@16
RtlNtStatusToDosError@4
RtlNtStatusToDosErrorNoTeb@4
@@ -1347,6 +1373,7 @@ RtlProtectHeap@8
RtlPublishWnfStateData@24
RtlPushFrame@4
RtlQueryActivationContextApplicationSettings@28
+RtlQueryAllFeatureConfigurations@16
RtlQueryAtomInAtomTable@24
RtlQueryCriticalSectionOwner@4
RtlQueryDepthSList@4
@@ -1354,6 +1381,9 @@ RtlQueryDynamicTimeZoneInformation@4
RtlQueryElevationFlags@4
RtlQueryEnvironmentVariable@24
RtlQueryEnvironmentVariable_U@12
+RtlQueryFeatureConfiguration@16
+RtlQueryFeatureConfigurationChangeStamp@0
+RtlQueryFeatureUsageNotificationSubscriptions@8
RtlQueryHeapInformation@20
RtlQueryImageMitigationPolicy@20
RtlQueryInformationAcl@16
@@ -1366,11 +1396,13 @@ RtlQueryPackageIdentity@24
RtlQueryPackageIdentityEx@28
RtlQueryPerformanceCounter@4
RtlQueryPerformanceFrequency@4
+RtlQueryPointerMapping@8
RtlQueryProcessBackTraceInformation@4
RtlQueryProcessDebugInformation@12
RtlQueryProcessHeapInformation@4
RtlQueryProcessLockInformation@4
RtlQueryProcessPlaceholderCompatibilityMode@0
+RtlQueryPropertyStore@8
RtlQueryProtectedPolicy@8
RtlQueryRegistryValueWithFallback@28
RtlQueryRegistryValues@20
@@ -1402,6 +1434,7 @@ RtlReadOutOfProcessMemoryStream@16
RtlReadThreadProfilingData@12
RtlRealPredecessor@4
RtlRealSuccessor@4
+RtlRegisterFeatureConfigurationChangeNotification@16
RtlRegisterForWnfMetaNotification@24
RtlRegisterSecureMemoryCacheCallback@4
RtlRegisterThreadWithCsrss@0
@@ -1417,7 +1450,9 @@ RtlReleaseSRWLockExclusive@4
RtlReleaseSRWLockShared@4
RtlRemoteCall@28
RtlRemoveEntryHashTable@12
+RtlRemovePointerMapping@8
RtlRemovePrivileges@12
+RtlRemovePropertyStore@8
RtlRemoveVectoredContinueHandler@4
RtlRemoveVectoredExceptionHandler@4
RtlReplaceSidInSd@16
@@ -1431,6 +1466,7 @@ RtlResetMemoryZone@4
RtlResetNtUserPfn@0
RtlResetRtlTranslations@4
RtlRestoreBootStatusDefaults@4
+RtlRestoreContext@8
RtlRestoreLastWin32Error@4
RtlRestoreSystemBootStatusDefaults@0
RtlRestoreThreadPreferredUILanguages@4
@@ -1463,6 +1499,7 @@ RtlSetEnvironmentStrings@8
RtlSetEnvironmentVar@20
RtlSetEnvironmentVariable@12
RtlSetExtendedFeaturesMask@12
+RtlSetFeatureConfigurations@16
RtlSetGroupSecurityDescriptor@12
RtlSetHeapInformation@16
RtlSetImageMitigationPolicy@20
@@ -1518,6 +1555,7 @@ RtlStringFromGUIDEx@12
RtlStronglyEnumerateEntryHashTable@8
RtlSubAuthorityCountSid@4
RtlSubAuthoritySid@8
+RtlSubscribeForFeatureUsageNotification@8
RtlSubscribeWnfStateChangeNotification@36
RtlSubtreePredecessor@4
RtlSubtreeSuccessor@4
@@ -1569,6 +1607,8 @@ RtlUnlockMemoryBlockLookaside@4
RtlUnlockMemoryStreamRegion@24
RtlUnlockMemoryZone@4
RtlUnlockModuleSection@4
+RtlUnregisterFeatureConfigurationChangeNotification@4
+RtlUnsubscribeFromFeatureUsageNotifications@8
RtlUnsubscribeWnfNotificationWaitForCompletion@4
RtlUnsubscribeWnfNotificationWithCompletionCallback@12
RtlUnsubscribeWnfStateChangeNotification@4
@@ -1789,6 +1829,7 @@ ZwAccessCheckByTypeAndAuditAlarm@64
ZwAccessCheckByTypeResultList@44
ZwAccessCheckByTypeResultListAndAuditAlarm@64
ZwAccessCheckByTypeResultListAndAuditAlarmByHandle@68
+ZwAcquireCrossVmMutant@8
ZwAcquireCMFViewOwnership@12
ZwAcquireProcessActivityReference@12
ZwAddAtom@12
@@ -1844,6 +1885,8 @@ ZwCancelSynchronousIoFile@12
ZwCancelTimer2@8
ZwCancelTimer@8
ZwCancelWaitCompletionPacket@8
+ZwChangeProcessState@24
+ZwChangeThreadState@24
ZwClearEvent@4
ZwClose@4
ZwCloseObjectAuditAlarm@12
@@ -1859,8 +1902,10 @@ ZwCompleteConnectPort@4
ZwCompressKey@4
ZwConnectPort@32
ZwContinue@8
+ZwContinueEx@8
ZwConvertBetweenAuxiliaryCounterAndPerformanceCounter@16
ZwCreateCrossVmEvent@24
+ZwCreateCrossVmMutant@24
ZwCreateDebugObject@16
ZwCreateDirectoryObject@12
ZwCreateDirectoryObjectEx@20
@@ -1871,6 +1916,7 @@ ZwCreateEventPair@12
ZwCreateFile@44
ZwCreateIRTimer@12
ZwCreateIoCompletion@16
+ZwCreateIoRing@20
ZwCreateJobObject@12
ZwCreateJobSet@12
ZwCreateKey@28
@@ -1886,6 +1932,7 @@ ZwCreatePort@20
ZwCreatePrivateNamespace@16
ZwCreateProcess@32
ZwCreateProcessEx@36
+ZwCreateProcessStateChange@20
ZwCreateProfile@36
ZwCreateProfileEx@40
ZwCreateRegistryTransaction@16
@@ -1896,6 +1943,7 @@ ZwCreateSemaphore@20
ZwCreateSymbolicLinkObject@16
ZwCreateThread@32
ZwCreateThreadEx@44
+ZwCreateThreadStateChange@20
ZwCreateTimer2@20
ZwCreateTimer@16
ZwCreateToken@52
@@ -1921,6 +1969,7 @@ ZwDeleteValueKey@8
ZwDeleteWnfStateData@8
ZwDeleteWnfStateName@4
ZwDeviceIoControlFile@40
+ZwDirectGraphicsCall@20
ZwDisableLastKnownGood@0
ZwDisplayString@4
ZwDrawText@4
@@ -1979,6 +2028,7 @@ ZwListenPort@8
ZwLoadDriver@4
ZwLoadEnclaveData@36
ZwLoadKey2@12
+ZwLoadKey3@32
ZwLoadKey@8
ZwLoadKeyEx@32
ZwLockFile@40
@@ -2076,6 +2126,7 @@ ZwQueryInformationWorkerFactory@20
ZwQueryInstallUILanguage@4
ZwQueryIntervalProfile@8
ZwQueryIoCompletion@20
+ZwQueryIoRingCapabilities@8
ZwQueryKey@20
ZwQueryLicenseValue@20
ZwQueryMultipleValueKey@24
@@ -2105,6 +2156,7 @@ ZwQueryVolumeInformationFile@20
ZwQueryWnfStateData@24
ZwQueryWnfStateNameInformation@20
ZwQueueApcThread@20
+ZwQueueApcThreadEx2@28
ZwQueueApcThreadEx@24
ZwRaiseException@12
ZwRaiseHardError@24
@@ -2113,6 +2165,7 @@ ZwReadFileScatter@36
ZwReadOnlyEnlistment@8
ZwReadRequestData@24
ZwReadVirtualMemory@20
+ZwReadVirtualMemoryEx@24
ZwRecoverEnlistment@8
ZwRecoverResourceManager@4
ZwRecoverTransactionManager@4
@@ -2173,6 +2226,7 @@ ZwSetIRTimer@8
ZwSetInformationDebugObject@20
ZwSetInformationEnlistment@16
ZwSetInformationFile@20
+ZwSetInformationIoRing@16
ZwSetInformationJobObject@16
ZwSetInformationKey@16
ZwSetInformationObject@16
@@ -2213,6 +2267,7 @@ ZwSignalAndWaitForSingleObject@16
ZwSinglePhaseReject@8
ZwStartProfile@4
ZwStopProfile@4
+ZwSubmitIoRing@16
ZwSubscribeWnfStateChange@16
ZwSuspendProcess@4
ZwSuspendThread@8
diff --git a/lib/libc/mingw/lib32/query.def b/lib/libc/mingw/lib32/query.def
new file mode 100644
index 0000000000..3c90963440
--- /dev/null
+++ b/lib/libc/mingw/lib32/query.def
@@ -0,0 +1,17 @@
+;
+; Definition file of query.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "query.dll"
+EXPORTS
+LoadBinaryFilter@8
+LoadTextFilter@8
+BindIFilterFromStorage@12
+BindIFilterFromStream@12
+DllCanUnloadNow
+DllGetClassObject@12
+DllRegisterServer
+DllUnregisterServer
+LoadIFilter@12
+LoadIFilterEx@16
diff --git a/lib/libc/mingw/lib32/tbs.def b/lib/libc/mingw/lib32/tbs.def
index 13bdf3831f..1ea9f8bb27 100644
--- a/lib/libc/mingw/lib32/tbs.def
+++ b/lib/libc/mingw/lib32/tbs.def
@@ -5,9 +5,24 @@
;
LIBRARY "tbs.dll"
EXPORTS
+Tbsi_Create_Attestation_From_Log@36
+Tbsi_Get_TCG_Logs@24
+GetDeviceID@16
+GetDeviceIDString@16
+GetDeviceIDWithTimeout@20
Tbsi_Context_Create@8
+Tbsi_Create_Windows_Key@4
+Tbsi_FilterLog@24
+Tbsi_GetDeviceInfo@8
+Tbsi_Get_OwnerAuth@16
Tbsi_Get_TCG_Log@12
+Tbsi_Get_TCG_Log_Ex@12
Tbsi_Physical_Presence_Command@20
+Tbsi_Revoke_Attestation@0
+Tbsi_ShaHash@32
Tbsip_Cancel_Commands@4
Tbsip_Context_Close@4
Tbsip_Submit_Command@28
+Tbsip_Submit_Command_NonBlocking@28
+Tbsip_TestInterruptInformation@4
+Tbsip_TestMorBit@4
diff --git a/lib/libc/mingw/lib32/user32.def b/lib/libc/mingw/lib32/user32.def
index c20d16835a..cd0cd1841f 100644
--- a/lib/libc/mingw/lib32/user32.def
+++ b/lib/libc/mingw/lib32/user32.def
@@ -1,12 +1,13 @@
LIBRARY USER32.dll
EXPORTS
-;ord_1500@16 @1500
-;ord_1501@4 @1501
-;ord_1502@12 @1502
+GetPointerFrameArrivalTimes@12
+Wow64Transition DATA
ActivateKeyboardLayout@8
AddClipboardFormatListener@4
+AddVisualIdentifier@8
AdjustWindowRect@12
AdjustWindowRectEx@16
+AdjustWindowRectExForDpi@20
AlignRects@16
AllowForegroundActivation@0
AllowSetForegroundWindow@4
@@ -14,6 +15,7 @@ AnimateWindow@12
AnyPopup@0
AppendMenuA@16
AppendMenuW@16
+AreDpiAwarenessContextsEqual@8
ArrangeIconicWindows@4
AttachThreadInput@12
BeginDeferWindowPos@4
@@ -46,19 +48,13 @@ ChangeDisplaySettingsW@8
ChangeMenuA@20
ChangeMenuW@20
ChangeWindowMessageFilter@8
+DwmGetDxRgn@12
ChangeWindowMessageFilterEx@16
CharLowerA@4
CharLowerBuffA@8
CharLowerBuffW@8
CharLowerW@4
CharNextA@4
-;ord_1550@12 @1550
-;ord_1551@8 @1551
-;ord_1552@8 @1552
-;ord_1553@12 @1553
-;ord_1554@8 @1554
-;ord_1555@16 @1555
-;ord_1556@4 @1556
CharNextExA@12
CharNextW@4
CharPrevA@8
@@ -73,6 +69,7 @@ CharUpperBuffA@8
CharUpperBuffW@8
CharUpperW@4
CheckDesktopByThreadId@4
+CheckBannedOneCoreTransformApi@4
CheckDBCSEnabledExt@0
CheckDlgButton@12
CheckMenuItem@12
@@ -123,10 +120,12 @@ CreateMDIWindowA@40
CreateMDIWindowW@40
CreateMenu@0
CreatePopupMenu@0
+CreateSyntheticPointerDevice@12
CreateSystemThreads@16 ; ReactOS has the @8 variant
CreateWindowExA@48
CreateWindowExW@48
CreateWindowInBand@52
+CreateWindowInBandEx@56
CreateWindowIndirect@4
CreateWindowStationA@16
CreateWindowStationW@16
@@ -185,6 +184,7 @@ DestroyDCompositionHwndTarget@8
DestroyIcon@4
DestroyMenu@4
DestroyReasons@4
+DestroySyntheticPointerDevice@4
DestroyWindow@4
DeviceEventWorker@24 ; No documentation whatsoever, ReactOS has a stub with @20 - https://www.reactos.org/archives/public/ros-diffs/2011-February/040308.html
DialogBoxIndirectParamA@20
@@ -231,14 +231,18 @@ DrawTextW@20
DwmGetDxSharedSurface@24
DwmGetRemoteSessionOcclusionEvent@0
DwmGetRemoteSessionOcclusionState@0
+DwmKernelShutdown@0
+DwmKernelStartup@0
DwmLockScreenUpdates@4
DwmStartRedirection@8 ; Mentioned on http://habrahabr.ru/post/145174/ , enables GDI virtualization (for security purposes)
DwmStopRedirection@0
DwmValidateWindow@8
-EditWndProc@16
+EditWndProc@20
EmptyClipboard@0
EnableMenuItem@12
EnableMouseInPointer@4
+EnableNonClientDpiScaling@4
+EnableOneCoreTransformMode@0
EnableScrollBar@12
EnableSessionForMMCSS@4
EnableWindow@8
@@ -293,6 +297,7 @@ GetAppCompatFlags2@4
GetAppCompatFlags@8 ; ReactOS has @4 version http://doxygen.reactos.org/d9/d71/undocuser_8h_a9b76cdc68c523a061c86a40367049ed2.html
GetAsyncKeyState@4
GetAutoRotationState@4
+GetAwarenessFromDpiAwarenessContext@4
GetCIMSSM@4
GetCapture@0
GetCaretBlinkTime@0
@@ -326,6 +331,8 @@ GetDCEx@12
GetDesktopID@8
GetDesktopWindow@0
GetDialogBaseUnits@0
+GetDialogControlDpiChangeBehavior@4
+GetDialogDpiChangeBehavior@4
GetDisplayAutoRotationPreferences@4
GetDisplayConfigBufferSizes@12
GetDlgCtrlID@4
@@ -334,7 +341,12 @@ GetDlgItemInt@16
GetDlgItemTextA@16
GetDlgItemTextW@16
GetDoubleClickTime@0
+GetDpiAwarenessContextForProcess@4
GetDpiForMonitorInternal@16
+GetDpiForSystem@0
+GetDpiForWindow@4
+GetDpiFromDpiAwarenessContext@4
+GetExtendedPointerDeviceProperty@8
GetFocus@0
GetForegroundWindow@0
GetGUIThreadInfo@8
@@ -365,6 +377,7 @@ GetLayeredWindowAttributes@16
GetListBoxInfo@4
GetMagnificationDesktopColorEffect@4
GetMagnificationDesktopMagnification@12
+GetMagnificationDesktopSamplingMode@4
GetMagnificationLensCtxInformation@16
GetMenu@4
GetMenuBarInfo@16
@@ -396,6 +409,8 @@ GetPhysicalCursorPos@4
GetPointerCursorId@8
GetPointerDevice@8
GetPointerDeviceCursors@12
+GetPointerDeviceInputSpace@8
+GetPointerDeviceOrientation@8
GetPointerDeviceProperties@12
GetPointerDeviceRects@12
GetPointerDevices@8
@@ -403,6 +418,7 @@ GetPointerFrameInfo@12
GetPointerFrameInfoHistory@16
GetPointerFramePenInfo@12
GetPointerFramePenInfoHistory@16
+GetPointerFrameTimes@12
GetPointerFrameTouchInfo@12
GetPointerFrameTouchInfoHistory@16
GetPointerInfo@8
@@ -429,22 +445,26 @@ GetRawInputDeviceList@12
GetRawPointerDeviceData@20
GetReasonTitleFromReasonCode@12
GetRegisteredRawInputDevices@12
-GetQueueStatus@4
GetScrollBarInfo@12
GetScrollInfo@12
GetScrollPos@8
GetScrollRange@16
GetSendMessageReceiver@4
+GetShellChangeNotifyWindow@0
GetShellWindow@0
GetSubMenu@8
GetSysColor@4
GetSysColorBrush@4
+GetSystemDpiForProcess@4
GetSystemMenu@8
GetSystemMetrics@4
+GetSystemMetricsForDpi@8
GetTabbedTextExtentA@20
GetTabbedTextExtentW@20
GetTaskmanWindow@0
GetThreadDesktop@4
+GetThreadDpiAwarenessContext@0
+GetThreadDpiHostingBehavior@0
GetTitleBarInfo@8
GetTopLevelWindow@4
GetTopWindow@4
@@ -464,6 +484,8 @@ GetWindowCompositionInfo@8
GetWindowContextHelpId@4
GetWindowDC@4
GetWindowDisplayAffinity@8
+GetWindowDpiAwarenessContext@4
+GetWindowDpiHostingBehavior@4
GetWindowFeedbackSetting@20
GetWindowInfo@8
GetWindowLongA@8
@@ -473,6 +495,7 @@ GetWindowModuleFileName@12
GetWindowModuleFileNameA@12
GetWindowModuleFileNameW@12
GetWindowPlacement@8
+GetWindowProcessHandle@8
GetWindowRect@8
GetWindowRgn@8
GetWindowRgnBox@8
@@ -499,25 +522,34 @@ ImpersonateDdeClientWindow@8
InSendMessage@0
InSendMessageEx@4
InflateRect@12
+InheritWindowMonitor@8
+InitDManipHook@0
+InitializeGenericHidInjection@8
+InitializeInputDeviceInjection@28
InitializeLpkHooks@4
InitializeWin32EntryTable@4
+InitializePointerDeviceInjection@20
+InitializePointerDeviceInjectionEx@24
InitializeTouchInjection@8
+InjectDeviceInput@12
+InjectGenericHidInput@12
+InjectKeyboardInput@8
+InjectMouseInput@8
+InjectPointerInput@12
+InjectSyntheticPointerInput@12
InjectTouchInput@8
+InputSpaceRegionFromPoint@20
InsertMenuA@20
InsertMenuItemA@16
InsertMenuItemW@16
InsertMenuW@20
InternalGetWindowIcon@8
-;ord_2001@4 @2001
-;ord_2002@4 @2002
InternalGetWindowText@12
IntersectRect@12
-;ord_2005@4 @2005
InvalidateRect@12
InvalidateRgn@12
InvertRect@8
IsCharAlphaA@4
-;ord_2010@16 @2010
IsCharAlphaNumericA@4
IsCharAlphaNumericW@4
IsCharAlphaW@4
@@ -539,16 +571,20 @@ IsInDesktopWindowBand@4
IsMenu@4
IsProcess16Bit@0
IsMouseInPointerEnabled@0
+IsOneCoreTransformMode@0
IsProcessDPIAware@0
IsQueueAttached@0
IsRectEmpty@4
IsSETEnabled@0
IsServerSideWindow@4
IsThreadDesktopComposited@0
+IsThreadTSFEventAware@4
IsTopLevelWindow@4
IsTouchWindow@8
+IsValidDpiAwarenessContext@4
IsWinEventHookInstalled@4
IsWindow@4
+IsWindowArranged@4
IsWindowEnabled@4
IsWindowInDestroy@4
IsWindowRedirectedForPrint@4
@@ -565,12 +601,8 @@ LoadBitmapW@8
LoadCursorA@8
LoadCursorFromFileA@4
LoadCursorFromFileW@4
-;ord_2000@0 @2000
-;ord_2001@4 @2001
-;ord_2002@4 @2002
LoadCursorW@8
LoadIconA@8
-;ord_2005@4 @2005
LoadIconW@8
LoadImageA@24
LoadImageW@24
@@ -596,11 +628,19 @@ LookupIconIdFromDirectoryEx@20
MBToWCSEx@24
MBToWCSExt@20
MB_GetString@4
+MITGetCursorUpdateHandle@0
+MITSetForegroundRoutingInfo@8
+MITSetInputDelegationMode@8
+MITSetLastInputRecipient@4
+MITSynthesizeTouchInput@4
+MakeThreadTSFEventAware@4
MapDialogRect@8
+MapPointsByVisualIdentifier@20
MapVirtualKeyA@8
MapVirtualKeyExA@12
MapVirtualKeyExW@12
MapVirtualKeyW@8
+MapVisualRelativePoints@28
MapWindowPoints@16
MenuItemFromPoint@16
MenuWindowProcA@20
@@ -665,6 +705,28 @@ QueryBSDRWindow@0
QueryDisplayConfig@24
QuerySendMessage@4
QueryUserCounters@20
+RIMAddInputObserver@32
+RIMAreSiblingDevices@12
+RIMDeviceIoControl@36
+RIMEnableMonitorMappingForDevice@12
+RIMFreeInputBuffer@8
+RIMGetDevicePreparsedData@16
+RIMGetDevicePreparsedDataLockfree@12
+RIMGetDeviceProperties@12
+RIMGetDevicePropertiesLockfree@8
+RIMGetPhysicalDeviceRect@12
+RIMGetSourceProcessId@12
+RIMObserveNextInput@4
+RIMOnPnpNotification@4
+RIMOnTimerNotification@8
+RIMQueryDevicePath@8
+RIMReadInput@28
+RIMRegisterForInput@40
+RIMRemoveInputObserver@4
+RIMSetExtendedDeviceProperty@12
+RIMSetTestModeStatus@4
+RIMUnregisterForInput@4
+RIMUpdateInputObserverRegistration@16
RealChildWindowFromPoint@12
RealGetWindowClass@12
RealGetWindowClassA@12
@@ -680,17 +742,18 @@ RegisterClassExW@4
RegisterClassW@4
RegisterClipboardFormatA@4
RegisterClipboardFormatW@4
+RegisterDManipHook@0
RegisterDeviceNotificationA@12
RegisterDeviceNotificationW@12
RegisterErrorReportingDialog@8
RegisterFrostWindow@8
RegisterGhostWindow@8
RegisterHotKey@16
-RegisterPowerSettingNotification@12
RegisterLogonProcess@8
RegisterMessagePumpHook@4
RegisterPointerDeviceNotifications@8
RegisterPointerInputTarget@8
+RegisterPointerInputTargetEx@12
RegisterPowerSettingNotification@12
RegisterRawInputDevices@12
RegisterServicesProcess@4
@@ -706,10 +769,14 @@ RegisterWindowMessageA@4
RegisterWindowMessageW@4
ReleaseCapture@0
ReleaseDC@8
+ReleaseDwmHitTestWaiters@0
RemoveClipboardFormatListener@4
+RemoveInjectionDevice@4
RemoveMenu@12
RemovePropA@8
RemovePropW@8
+RemoveThreadTSFEventAwareness@4
+RemoveVisualIdentifier@4
ReplyMessage@4
ResolveDesktopForWOW@4
ReuseDDElParam@20
@@ -747,14 +814,19 @@ SetCursorContents@8
SetCursorPos@8
SetDebugErrorLevel@4
SetDeskWallpaper@4
+SetDesktopColorTransform@4
+SetDialogControlDpiChangeBehavior@12
+SetDialogDpiChangeBehavior@12
SetDisplayAutoRotationPreferences@4
SetDisplayConfig@20
SetDlgItemInt@16
SetDlgItemTextA@12
SetDlgItemTextW@12
SetDoubleClickTime@4
+SetFeatureReportResponse@12
SetFocus@4
SetForegroundWindow@4
+SetFullscreenMagnifierOffsetsDWMUpdated@12
SetGestureConfig@20
SetImmersiveBackgroundWindow@4
SetInternalWindowPos@16
@@ -764,6 +836,8 @@ SetLayeredWindowAttributes@16
SetLogonNotifyWindow@4
SetMagnificationDesktopColorEffect@4
SetMagnificationDesktopMagnification@16
+SetMagnificationDesktopMagnifierOffsetsDWMUpdated@4
+SetMagnificationDesktopSamplingMode@4
SetMagnificationLensCtxInformation@16
SetMenu@8
SetMenuContextHelpId@8
@@ -777,8 +851,10 @@ SetMessageQueue@4
SetMirrorRendering@8
SetParent@8
SetPhysicalCursorPos@8
+SetPointerDeviceInputSpace@12
SetProcessDPIAware@0
SetProcessDefaultLayout@4
+SetProcessDpiAwarenessContext@4
SetProcessDpiAwarenessInternal@4
SetProcessRestrictionExemption@4
SetProcessWindowStation@4
@@ -790,6 +866,7 @@ SetRectEmpty@4
SetScrollInfo@16
SetScrollPos@16
SetScrollRange@20
+SetShellChangeNotifyWindow@4
SetShellWindow@4
SetShellWindowEx@8
SetSysColors@12
@@ -799,6 +876,8 @@ SetSystemMenu@8
SetSystemTimer@16
SetTaskmanWindow@4
SetThreadDesktop@4
+SetThreadDpiAwarenessContext@4
+SetThreadDpiHostingBehavior@4
SetThreadInputBlocked@8
SetTimer@16
SetUserObjectInformationA@16
@@ -823,6 +902,7 @@ SetWindowTextW@8
SetWindowWord@12
SetWindowsHookA@8
SetWindowsHookExA@16
+SetWindowsHookExAW@20
SetWindowsHookExW@16
SetWindowsHookW@8
SfmDxBindSwapChain@12
@@ -854,6 +934,7 @@ SwitchDesktop@4
SwitchDesktopWithFade@12 ; Same as SwithDesktop(), only with fade (done at log-in), only usable by winlogon - http://blog.airesoft.co.uk/2010/08/things-microsoft-can-do-that-you-cant/
SwitchToThisWindow@8
SystemParametersInfoA@16
+SystemParametersInfoForDpi@20
SystemParametersInfoW@16
TabbedTextOutA@32
TabbedTextOutW@32
@@ -885,6 +966,7 @@ UnregisterDeviceNotification@4
UnregisterHotKey@8
UnregisterMessagePumpHook@0
UnregisterPointerInputTarget@8
+UnregisterPointerInputTargetEx@8
UnregisterPowerSettingNotification@4
UnregisterSessionPort@0
UnregisterSuspendResumeNotification@4
@@ -934,65 +1016,10 @@ wsprintfA
wsprintfW
wvsprintfA@12
wvsprintfW@12
-;ord_2500@16 @2500
-;ord_2501@12 @2501
-;ord_2502@8 @2502
-;ord_2503@24 @2503
-;ord_2504@8 @2504
-;ord_2505@8 @2505
-;ord_2506@12 @2506
-;ord_2507@4 @2507
-;ord_2508@8 @2508
-;ord_2509@4 @2509
-;ord_2510@12 @2510
-;ord_2511@8 @2511
-;ord_2512@12 @2512
-;ord_2513@4 @2513
-;ord_2514@8 @2514
-;ord_2515@8 @2515
-;ord_2516@12 @2516
-;ord_2517@4 @2517
-;ord_2518@0 @2518
-;ord_2519@4 @2519
-;ord_2520@0 @2520
-;ord_2521@8 @2521
-;ord_2522@4 @2522
-;ord_2523@8 @2523
-;ord_2524@8 @2524
-;ord_2525@12 @2525
-;ord_2526@12 @2526
-;ord_2527@12 @2527
+DelegateInput@24
+UndelegateInput@8
+HandleDelegatedInput@8
+GetProcessUIContextInformation@8
IsThreadMessageQueueAttached@4
-;ord_2529@4 @2529
-;ord_2530@8 @2530
-;ord_2531@16 @2531
-;ord_2532@8 @2532
-;ord_2533@4 @2533
-;ord_2534@8 @2534
-;ord_2535@0 @2535
-;ord_2536@8 @2536
-;ord_2537@16 @2537
-;ord_2538@4 @2538
-;ord_2539@4 @2539
-;ord_2540@4 @2540
-;ord_2541@0 @2541
-;ord_2544@4 @2544
-;ord_2545@8 @2545
-;ord_2546@4 @2546
-;ord_2547@4 @2547
-;ord_2548@4 @2548
-;ord_2549@4 @2549
-;ord_2550@8 @2550
-;ord_2551@20 @2551
-;ord_2552@8 @2552
-;ord_2553@32 @2553
-;ord_2554@12 @2554
-;ord_2555@16 @2555
-;ord_2556@8 @2556
-;ord_2557@12 @2557
-;ord_2558@12 @2558
-;ord_2559@16 @2559
-;ord_2560@20 @2560
-;ord_2561@0 @2561
-;ord_2562@0 @2562
-;ord_2563@0 @2563
+ReportInertia@20
+SetCoreWindow@8
diff --git a/lib/libc/mingw/lib32/ws2_32.def b/lib/libc/mingw/lib32/ws2_32.def
index 19f3f69dbc..f78defcfb1 100644
--- a/lib/libc/mingw/lib32/ws2_32.def
+++ b/lib/libc/mingw/lib32/ws2_32.def
@@ -33,14 +33,19 @@ FreeAddrInfoEx@4
FreeAddrInfoExW@4
FreeAddrInfoW@4
GetAddrInfoExA@40
+GetAddrInfoExCancel@4
+GetAddrInfoExOverlappedResult@4
GetAddrInfoExW@40
GetAddrInfoW@16
+GetHostNameW@8
GetNameInfoW@28
InetNtopW@16
InetPtonW@12
+ProcessSocketNotifications@28
SetAddrInfoExA@48
SetAddrInfoExW@48
WPUCompleteOverlappedRequest@20
+WPUGetProviderPathEx@20
WSAAccept@20
WSAAddressToStringA@20
WSAAddressToStringW@20
@@ -126,21 +131,30 @@ WSAStringToAddressW@20
WSAUnadvertiseProvider@4
WSAWaitForMultipleEvents@20
WSCDeinstallProvider@8
+WSCDeinstallProviderEx@12
WSCEnableNSProvider@8
WSCEnumProtocols@16
+WSCEnumProtocolsEx@20
WSCGetApplicationCategory@24
+WSCGetApplicationCategoryEx@28
WSCGetProviderInfo@24
WSCGetProviderPath@16
WSCInstallNameSpace@20
+WSCInstallNameSpaceEx2@28
WSCInstallNameSpaceEx@24
WSCInstallProvider@20
WSCInstallProviderAndChains@32
+WSCInstallProviderEx@28
WSCSetApplicationCategory@28
+WSCSetApplicationCategoryEx@32
WSCSetProviderInfo@24
WSCUnInstallNameSpace@4
+WSCUnInstallNameSpaceEx2@8
WSCUpdateProvider@20
+WSCUpdateProviderEx@24
WSCWriteNameSpaceOrder@8
WSCWriteProviderOrder@8
+WSCWriteProviderOrderEx@12
WahCloseApcHelper@4
WahCloseHandleHelper@4
WahCloseNotificationHandleHelper@4
diff --git a/lib/libc/mingw/lib64/fwpuclnt.def b/lib/libc/mingw/lib64/fwpuclnt.def
deleted file mode 100644
index c23e0929fe..0000000000
--- a/lib/libc/mingw/lib64/fwpuclnt.def
+++ /dev/null
@@ -1,146 +0,0 @@
-;
-; Definition file of fwpuclnt.dll
-; Automatic generated by gendef
-; written by Kai Tietz 2008
-;
-LIBRARY "fwpuclnt.dll"
-EXPORTS
-FwpmCalloutAdd0
-FwpmCalloutCreateEnumHandle0
-FwpmCalloutDeleteById0
-FwpmCalloutDeleteByKey0
-FwpmCalloutDestroyEnumHandle0
-FwpmCalloutEnum0
-FwpmCalloutGetById0
-FwpmCalloutGetByKey0
-FwpmCalloutGetSecurityInfoByKey0
-FwpmCalloutSetSecurityInfoByKey0
-FwpmCalloutSubscribeChanges0
-FwpmCalloutSubscriptionsGet0
-FwpmCalloutUnsubscribeChanges0
-FwpmDiagnoseNetFailure0
-FwpmEngineClose0
-FwpmEngineGetOption0
-FwpmEngineGetSecurityInfo0
-FwpmEngineOpen0
-FwpmEngineSetOption0
-FwpmEngineSetSecurityInfo0
-FwpmEventProviderCreate0
-FwpmEventProviderDestroy0
-FwpmEventProviderFireNetEvent0
-FwpmEventProviderIsNetEventTypeEnabled0
-FwpmFilterAdd0
-FwpmFilterCreateEnumHandle0
-FwpmFilterDeleteById0
-FwpmFilterDeleteByKey0
-FwpmFilterDestroyEnumHandle0
-FwpmFilterEnum0
-FwpmFilterGetById0
-FwpmFilterGetByKey0
-FwpmFilterGetSecurityInfoByKey0
-FwpmFilterSetSecurityInfoByKey0
-FwpmFilterSubscribeChanges0
-FwpmFilterSubscriptionsGet0
-FwpmFilterUnsubscribeChanges0
-FwpmFreeMemory0
-FwpmGetAppIdFromFileName0
-FwpmIPsecTunnelAdd0
-FwpmIPsecTunnelDeleteByKey0
-FwpmLayerCreateEnumHandle0
-FwpmLayerDestroyEnumHandle0
-FwpmLayerEnum0
-FwpmLayerGetById0
-FwpmLayerGetByKey0
-FwpmLayerGetSecurityInfoByKey0
-FwpmLayerSetSecurityInfoByKey0
-FwpmNetEventCreateEnumHandle0
-FwpmNetEventDestroyEnumHandle0
-FwpmNetEventEnum0
-FwpmNetEventsGetSecurityInfo0
-FwpmNetEventsSetSecurityInfo0
-FwpmProviderAdd0
-FwpmProviderContextAdd0
-FwpmProviderContextCreateEnumHandle0
-FwpmProviderContextDeleteById0
-FwpmProviderContextDeleteByKey0
-FwpmProviderContextDestroyEnumHandle0
-FwpmProviderContextEnum0
-FwpmProviderContextGetById0
-FwpmProviderContextGetByKey0
-FwpmProviderContextGetSecurityInfoByKey0
-FwpmProviderContextSetSecurityInfoByKey0
-FwpmProviderContextSubscribeChanges0
-FwpmProviderContextSubscriptionsGet0
-FwpmProviderContextUnsubscribeChanges0
-FwpmProviderCreateEnumHandle0
-FwpmProviderDeleteByKey0
-FwpmProviderDestroyEnumHandle0
-FwpmProviderEnum0
-FwpmProviderGetByKey0
-FwpmProviderGetSecurityInfoByKey0
-FwpmProviderSetSecurityInfoByKey0
-FwpmProviderSubscribeChanges0
-FwpmProviderSubscriptionsGet0
-FwpmProviderUnsubscribeChanges0
-FwpmSessionCreateEnumHandle0
-FwpmSessionDestroyEnumHandle0
-FwpmSessionEnum0
-FwpmSubLayerAdd0
-FwpmSubLayerCreateEnumHandle0
-FwpmSubLayerDeleteByKey0
-FwpmSubLayerDestroyEnumHandle0
-FwpmSubLayerEnum0
-FwpmSubLayerGetByKey0
-FwpmSubLayerGetSecurityInfoByKey0
-FwpmSubLayerSetSecurityInfoByKey0
-FwpmSubLayerSubscribeChanges0
-FwpmSubLayerSubscriptionsGet0
-FwpmSubLayerUnsubscribeChanges0
-FwpmTraceRestoreDefaults0
-FwpmTransactionAbort0
-FwpmTransactionBegin0
-FwpmTransactionCommit0
-FwpsAleExplicitCredentialsQuery0
-FwpsClassifyUser0
-FwpsFreeMemory0
-FwpsGetInProcReplicaOffset0
-FwpsLayerCreateInProcReplica0
-FwpsLayerReleaseInProcReplica0
-FwpsOpenToken0
-IPsecGetStatistics0
-IPsecKeyModuleAdd0
-IPsecKeyModuleCompleteAcquire0
-IPsecKeyModuleDelete0
-IPsecSaContextAddInbound0
-IPsecSaContextAddOutbound0
-IPsecSaContextCreate0
-IPsecSaContextCreateEnumHandle0
-IPsecSaContextDeleteById0
-IPsecSaContextDestroyEnumHandle0
-IPsecSaContextEnum0
-IPsecSaContextExpire0
-IPsecSaContextGetById0
-IPsecSaContextGetSpi0
-IPsecSaCreateEnumHandle0
-IPsecSaDbGetSecurityInfo0
-IPsecSaDbSetSecurityInfo0
-IPsecSaDestroyEnumHandle0
-IPsecSaEnum0
-IPsecSaInitiateAsync0
-IkeextGetConfigParameters0
-IkeextGetStatistics0
-IkeextSaCreateEnumHandle0
-IkeextSaDbGetSecurityInfo0
-IkeextSaDbSetSecurityInfo0
-IkeextSaDeleteById0
-IkeextSaDestroyEnumHandle0
-IkeextSaEnum0
-IkeextSaGetById0
-IkeextSetConfigParameters0
-WSADeleteSocketPeerTargetName
-WSAImpersonateSocketPeer
-WSAQuerySocketSecurity
-WSARevertImpersonation
-WSASetSocketPeerTargetName
-WSASetSocketSecurity
-wfpdiagW
diff --git a/lib/libc/mingw/lib64/query.def b/lib/libc/mingw/lib64/query.def
deleted file mode 100644
index 86ac59ced7..0000000000
--- a/lib/libc/mingw/lib64/query.def
+++ /dev/null
@@ -1,1447 +0,0 @@
-;
-; Exports of file query.dll
-;
-; Autogenerated by gen_exportdef
-; Written by Kai Tietz, 2007
-;
-LIBRARY query.dll
-EXPORTS
-; class CCoTaskAllocator CoTaskAllocator
-?CoTaskAllocator@@3VCCoTaskAllocator@@A DATA
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct tagPROPVARIANT & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@AEAUtagPROPVARIANT@@AEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(class PDeSerStream & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@AEAVPDeSerStream@@AEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(char const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@PEBDAEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(unsigned short const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@PEBGAEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct _GUID const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@PEBU_GUID@@AEAVPMemoryAllocator@@@Z
-; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(enum VARENUM,unsigned long,class PMemoryAllocator & __ptr64) __ptr64
-??0CAllocStorageVariant@@QEAA@W4VARENUM@@KAEAVPMemoryAllocator@@@Z
-; public: __cdecl CCatState::CCatState(void) __ptr64
-??0CCatState@@QEAA@XZ
-; public: __cdecl CCategorizationSet::CCategorizationSet(class CCategorizationSet const & __ptr64) __ptr64
-??0CCategorizationSet@@QEAA@AEBV0@@Z
-; public: __cdecl CCategorizationSet::CCategorizationSet(unsigned int) __ptr64
-??0CCategorizationSet@@QEAA@I@Z
-; public: __cdecl CCiAdminParams::CCiAdminParams(class CLangList * __ptr64) __ptr64
-??0CCiAdminParams@@QEAA@PEAVCLangList@@@Z
-; public: __cdecl CCiRegParams::CCiRegParams(unsigned short const * __ptr64) __ptr64
-??0CCiRegParams@@QEAA@PEBG@Z
-; public: __cdecl CColumnSet::CColumnSet(unsigned int) __ptr64
-??0CColumnSet@@QEAA@I@Z
-; public: __cdecl CColumns::CColumns(class CColumns const & __ptr64) __ptr64
-??0CColumns@@QEAA@AEBV0@@Z
-; public: __cdecl CColumns::CColumns(unsigned int) __ptr64
-??0CColumns@@QEAA@I@Z
-; public: __cdecl CContentRestriction::CContentRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long,unsigned long) __ptr64
-??0CContentRestriction@@QEAA@PEBGAEBVCFullPropSpec@@KK@Z
-; public: __cdecl CDFA::CDFA(unsigned short const * __ptr64,class CTimeLimit & __ptr64,unsigned char) __ptr64
-??0CDFA@@QEAA@PEBGAEAVCTimeLimit@@E@Z
-; public: __cdecl CDbColId::CDbColId(struct _GUID const & __ptr64,unsigned short const * __ptr64) __ptr64
-??0CDbColId@@QEAA@AEBU_GUID@@PEBG@Z
-; public: __cdecl CDbColId::CDbColId(struct tagDBID const & __ptr64) __ptr64
-??0CDbColId@@QEAA@AEBUtagDBID@@@Z
-; public: __cdecl CDbColId::CDbColId(class CDbColId const & __ptr64) __ptr64
-??0CDbColId@@QEAA@AEBV0@@Z
-; public: __cdecl CDbColId::CDbColId(void) __ptr64
-??0CDbColId@@QEAA@XZ
-; public: __cdecl CDbColumns::CDbColumns(unsigned int) __ptr64
-??0CDbColumns@@QEAA@I@Z
-; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long,unsigned long) __ptr64
-??0CDbContentRestriction@@QEAA@PEBGAEBUtagDBID@@KK@Z
-; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long,unsigned long) __ptr64
-??0CDbContentRestriction@@QEAA@PEBGAEBVCDbColumnNode@@KK@Z
-; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long) __ptr64
-??0CDbNatLangRestriction@@QEAA@PEBGAEBUtagDBID@@K@Z
-; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long) __ptr64
-??0CDbNatLangRestriction@@QEAA@PEBGAEBVCDbColumnNode@@K@Z
-; public: __cdecl CDbQueryResults::CDbQueryResults(void) __ptr64
-??0CDbQueryResults@@QEAA@XZ
-; public: __cdecl CDbSelectNode::CDbSelectNode(void) __ptr64
-??0CDbSelectNode@@QEAA@XZ
-; public: __cdecl CDbSortSet::CDbSortSet(unsigned int) __ptr64
-??0CDbSortSet@@QEAA@I@Z
-; public: __cdecl CDefColumnRegEntry::CDefColumnRegEntry(void) __ptr64
-??0CDefColumnRegEntry@@QEAA@XZ
-; public: __cdecl CDriveInfo::CDriveInfo(unsigned short const * __ptr64,unsigned long) __ptr64
-??0CDriveInfo@@QEAA@PEBGK@Z
-; public: __cdecl CDynStream::CDynStream(class PMmStream * __ptr64) __ptr64
-??0CDynStream@@QEAA@PEAVPMmStream@@@Z
-; public: __cdecl CEventItem::CEventItem(unsigned short,unsigned short,unsigned long,unsigned short,unsigned long,void const * __ptr64) __ptr64
-??0CEventItem@@QEAA@GGKGKPEBX@Z
-; public: __cdecl CEventLog::CEventLog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-??0CEventLog@@QEAA@PEBG0@Z
-; public: __cdecl CException::CException(long) __ptr64
-??0CException@@QEAA@J@Z
-; public: __cdecl CException::CException(void) __ptr64
-??0CException@@QEAA@XZ
-; public: __cdecl CFileBuffer::CFileBuffer(class CFileMapView & __ptr64,unsigned int) __ptr64
-??0CFileBuffer@@QEAA@AEAVCFileMapView@@I@Z
-; public: __cdecl CFileMapView::CFileMapView(unsigned short const * __ptr64) __ptr64
-??0CFileMapView@@QEAA@PEBG@Z
-; public: __cdecl CFilterDaemon::CFilterDaemon(class CiProxy & __ptr64,class CCiFrameworkParams & __ptr64,class CLangList & __ptr64,unsigned char * __ptr64,unsigned long,struct ICiCFilterClient * __ptr64) __ptr64
-??0CFilterDaemon@@QEAA@AEAVCiProxy@@AEAVCCiFrameworkParams@@AEAVCLangList@@PEAEKPEAUICiCFilterClient@@@Z
-; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64) __ptr64
-??0CFullPath@@QEAA@PEBG@Z
-; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64,unsigned int) __ptr64
-??0CFullPath@@QEAA@PEBGI@Z
-; public: __cdecl CFullPropSpec::CFullPropSpec(class PDeSerStream & __ptr64) __ptr64
-??0CFullPropSpec@@QEAA@AEAVPDeSerStream@@@Z
-; public: __cdecl CFullPropSpec::CFullPropSpec(class CFullPropSpec const & __ptr64) __ptr64
-??0CFullPropSpec@@QEAA@AEBV0@@Z
-; public: __cdecl CFullPropSpec::CFullPropSpec(void) __ptr64
-??0CFullPropSpec@@QEAA@XZ
-; public: __cdecl CFwAsyncWorkItem::CFwAsyncWorkItem(class CWorkManager & __ptr64,class CWorkQueue & __ptr64) __ptr64
-??0CFwAsyncWorkItem@@QEAA@AEAVCWorkManager@@AEAVCWorkQueue@@@Z
-; public: __cdecl CFwEventItem::CFwEventItem(unsigned short,unsigned long,unsigned short,unsigned long,void * __ptr64) __ptr64
-??0CFwEventItem@@QEAA@GKGKPEAX@Z
-; public: __cdecl CGenericCiProxy::CGenericCiProxy(class CSharedNameGen & __ptr64,unsigned long,unsigned long) __ptr64
-??0CGenericCiProxy@@QEAA@AEAVCSharedNameGen@@KK@Z
-; public: __cdecl CGetDbProps::CGetDbProps(void) __ptr64
-??0CGetDbProps@@QEAA@XZ
-; public: __cdecl CImpersonateRemoteAccess::CImpersonateRemoteAccess(class CImpersonationTokenCache * __ptr64) __ptr64
-??0CImpersonateRemoteAccess@@QEAA@PEAVCImpersonationTokenCache@@@Z
-; public: __cdecl CImpersonationTokenCache::CImpersonationTokenCache(unsigned short const * __ptr64) __ptr64
-??0CImpersonationTokenCache@@QEAA@PEBG@Z
-; public: __cdecl CIndexTable::CIndexTable(class CiStorage & __ptr64,class CTransaction & __ptr64) __ptr64
-??0CIndexTable@@QEAA@AEAVCiStorage@@AEAVCTransaction@@@Z
-; public: __cdecl CInternalPropertyRestriction::CInternalPropertyRestriction(unsigned long,unsigned long,class CStorageVariant const & __ptr64,class CRestriction * __ptr64) __ptr64
-??0CInternalPropertyRestriction@@QEAA@KKAEBVCStorageVariant@@PEAVCRestriction@@@Z
-; public: __cdecl CKeyArray::CKeyArray(int,int) __ptr64
-??0CKeyArray@@QEAA@HH@Z
-; public: __cdecl CLangList::CLangList(struct ICiCLangRes * __ptr64,unsigned long) __ptr64
-??0CLangList@@QEAA@PEAUICiCLangRes@@K@Z
-; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(unsigned long) __ptr64
-??0CLocalGlobalPropertyList@@QEAA@K@Z
-; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
-??0CLocalGlobalPropertyList@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
-; public: __cdecl CMachineAdmin::CMachineAdmin(unsigned short const * __ptr64,int) __ptr64
-??0CMachineAdmin@@QEAA@PEBGH@Z
-; public: __cdecl CMemSerStream::CMemSerStream(unsigned int) __ptr64
-??0CMemSerStream@@QEAA@I@Z
-; public: __cdecl CMemSerStream::CMemSerStream(unsigned char * __ptr64,unsigned long) __ptr64
-??0CMemSerStream@@QEAA@PEAEK@Z
-; public: __cdecl CMetaDataMgr::CMetaDataMgr(int,enum CiVRootTypeEnum,unsigned long,unsigned short const * __ptr64) __ptr64
-??0CMetaDataMgr@@QEAA@HW4CiVRootTypeEnum@@KPEBG@Z
-; public: __cdecl CMmStream::CMmStream(unsigned long,int) __ptr64
-??0CMmStream@@QEAA@KH@Z
-; public: __cdecl CMmStreamConsecBuf::CMmStreamConsecBuf(void) __ptr64
-??0CMmStreamConsecBuf@@QEAA@XZ
-; public: __cdecl CNatLanguageRestriction::CNatLanguageRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long) __ptr64
-??0CNatLanguageRestriction@@QEAA@PEBGAEBVCFullPropSpec@@K@Z
-; public: __cdecl CNodeRestriction::CNodeRestriction(unsigned long,unsigned int) __ptr64
-??0CNodeRestriction@@QEAA@KI@Z
-; public: __cdecl CNormalizer::CNormalizer(class PNoiseList & __ptr64) __ptr64
-??0CNormalizer@@QEAA@AEAVPNoiseList@@@Z
-; public: __cdecl CPathParser::CPathParser(unsigned short const * __ptr64,unsigned long) __ptr64
-??0CPathParser@@QEAA@PEBGK@Z
-; public: __cdecl CPerfMon::CPerfMon(unsigned short const * __ptr64) __ptr64
-??0CPerfMon@@QEAA@PEBG@Z
-; public: __cdecl CPersDeComp::CPersDeComp(class PDirectory & __ptr64,unsigned long,class CPhysIndex & __ptr64,unsigned long,int,int) __ptr64
-??0CPersDeComp@@QEAA@AEAVPDirectory@@KAEAVCPhysIndex@@KHH@Z
-; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,unsigned int,class PMmStream * __ptr64,int,unsigned int,int) __ptr64
-??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KIPEAVPMmStream@@HIH@Z
-; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,class PMmStream * __ptr64,enum CPhysStorage::EOpenMode,int,unsigned int,int) __ptr64
-??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KPEAVPMmStream@@W4EOpenMode@1@HIH@Z
-; public: __cdecl CPidLookupTable::CPidLookupTable(void) __ptr64
-??0CPidLookupTable@@QEAA@XZ
-; public: __cdecl CPidRemapper::CPidRemapper(class XInterface<struct IPropertyMapper> & __ptr64) __ptr64
-??0CPidRemapper@@QEAA@AEAV?$XInterface@UIPropertyMapper@@@@@Z
-; public: __cdecl CPidRemapper::CPidRemapper(class CPidMapper const & __ptr64,class XInterface<struct IPropertyMapper> & __ptr64,class CRestriction * __ptr64,class CColumnSet * __ptr64,class CSortSet * __ptr64) __ptr64
-??0CPidRemapper@@QEAA@AEBVCPidMapper@@AEAV?$XInterface@UIPropertyMapper@@@@PEAVCRestriction@@PEAVCColumnSet@@PEAVCSortSet@@@Z
-; public: __cdecl CPropListFile::CPropListFile(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
-??0CPropListFile@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
-; public: __cdecl CPropNameArray::CPropNameArray(class PDeSerStream & __ptr64) __ptr64
-??0CPropNameArray@@QEAA@AEAVPDeSerStream@@@Z
-; public: __cdecl CPropNameArray::CPropNameArray(unsigned int) __ptr64
-??0CPropNameArray@@QEAA@I@Z
-; public: __cdecl CPropStoreManager::CPropStoreManager(unsigned long) __ptr64
-??0CPropStoreManager@@QEAA@K@Z
-; public: __cdecl CPropertyRestriction::CPropertyRestriction(unsigned long,class CFullPropSpec const & __ptr64,class CStorageVariant const & __ptr64) __ptr64
-??0CPropertyRestriction@@QEAA@KAEBVCFullPropSpec@@AEBVCStorageVariant@@@Z
-; public: __cdecl CPropertyRestriction::CPropertyRestriction(void) __ptr64
-??0CPropertyRestriction@@QEAA@XZ
-; public: __cdecl CPropertyStoreWids::CPropertyStoreWids(class CPropStoreManager & __ptr64) __ptr64
-??0CPropertyStoreWids@@QEAA@AEAVCPropStoreManager@@@Z
-; public: __cdecl CPropertyValueParser::CPropertyValueParser(class CQueryScanner & __ptr64,unsigned short,unsigned long) __ptr64
-??0CPropertyValueParser@@QEAA@AEAVCQueryScanner@@GK@Z
-; public: __cdecl CQueryScanner::CQueryScanner(unsigned short const * __ptr64,int,unsigned long,int) __ptr64
-??0CQueryScanner@@QEAA@PEBGHKH@Z
-; public: __cdecl CRangeKeyRepository::CRangeKeyRepository(void) __ptr64
-??0CRangeKeyRepository@@QEAA@XZ
-; public: __cdecl CRcovStrmAppendTrans::CRcovStrmAppendTrans(class PRcovStorageObj & __ptr64) __ptr64
-??0CRcovStrmAppendTrans@@QEAA@AEAVPRcovStorageObj@@@Z
-; public: __cdecl CRcovStrmMDTrans::CRcovStrmMDTrans(class PRcovStorageObj & __ptr64,enum CRcovStrmMDTrans::MDOp,unsigned long) __ptr64
-??0CRcovStrmMDTrans@@QEAA@AEAVPRcovStorageObj@@W4MDOp@0@K@Z
-; protected: __cdecl CRcovStrmTrans::CRcovStrmTrans(class PRcovStorageObj & __ptr64,enum RcovOpType) __ptr64
-??0CRcovStrmTrans@@IEAA@AEAVPRcovStorageObj@@W4RcovOpType@@@Z
-; public: __cdecl CRegAccess::CRegAccess(unsigned long,unsigned short const * __ptr64) __ptr64
-??0CRegAccess@@QEAA@KPEBG@Z
-; public: __cdecl CRegChangeEvent::CRegChangeEvent(unsigned short const * __ptr64,int) __ptr64
-??0CRegChangeEvent@@QEAA@PEBGH@Z
-; public: __cdecl CRegNotify::CRegNotify(unsigned short const * __ptr64) __ptr64
-??0CRegNotify@@QEAA@PEBG@Z
-; public: __cdecl CRequestClient::CRequestClient(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
-??0CRequestClient@@QEAA@PEBGPEAUIDBProperties@@@Z
-; public: __cdecl CRequestQueue::CRequestQueue(unsigned int,unsigned int,unsigned int,int,unsigned int,unsigned int,struct _GUID const & __ptr64) __ptr64
-??0CRequestQueue@@QEAA@IIIHIIAEBU_GUID@@@Z
-; public: __cdecl CScopeRestriction::CScopeRestriction(unsigned short const * __ptr64,int,int) __ptr64
-??0CScopeRestriction@@QEAA@PEBGHH@Z
-; public: __cdecl CSdidLookupTable::CSdidLookupTable(void) __ptr64
-??0CSdidLookupTable@@QEAA@XZ
-; public: __cdecl CSizeSerStream::CSizeSerStream(void) __ptr64
-??0CSizeSerStream@@QEAA@XZ
-; public: __cdecl CSort::CSort(unsigned int) __ptr64
-??0CSort@@QEAA@I@Z
-; public: __cdecl CSortSet::CSortSet(unsigned int) __ptr64
-??0CSortSet@@QEAA@I@Z
-; public: __cdecl CStandardPropMapper::CStandardPropMapper(void) __ptr64
-??0CStandardPropMapper@@QEAA@XZ
-; public: __cdecl CSvcQuery::CSvcQuery(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
-??0CSvcQuery@@QEAA@PEBGPEAUIDBProperties@@@Z
-; public: __cdecl CSynRestriction::CSynRestriction(class CKey const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
-??0CSynRestriction@@QEAA@AEBVCKey@@KKKH@Z
-; public: __cdecl CTimeLimit::CTimeLimit(unsigned long,unsigned long) __ptr64
-??0CTimeLimit@@QEAA@KK@Z
-; public: __cdecl CTransaction::CTransaction(void) __ptr64
-??0CTransaction@@QEAA@XZ
-; public: __cdecl CUnfilteredRestriction::CUnfilteredRestriction(void) __ptr64
-??0CUnfilteredRestriction@@QEAA@XZ
-; public: __cdecl CValueNormalizer::CValueNormalizer(class PKeyRepository & __ptr64) __ptr64
-??0CValueNormalizer@@QEAA@AEAVPKeyRepository@@@Z
-; public: __cdecl CVirtualString::CVirtualString(unsigned int) __ptr64
-??0CVirtualString@@QEAA@I@Z
-; public: __cdecl CWin32RegAccess::CWin32RegAccess(struct HKEY__ * __ptr64,unsigned short const * __ptr64) __ptr64
-??0CWin32RegAccess@@QEAA@PEAUHKEY__@@PEBG@Z
-; public: __cdecl CWordRestriction::CWordRestriction(class CKeyBuf const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
-??0CWordRestriction@@QEAA@AEBVCKeyBuf@@KKKH@Z
-; public: __cdecl CWorkQueue::CWorkQueue(unsigned int,enum CWorkQueue::WorkQueueType) __ptr64
-??0CWorkQueue@@QEAA@IW4WorkQueueType@0@@Z
-; public: __cdecl CiStorage::CiStorage(unsigned short const * __ptr64,struct ICiCAdviseStatus & __ptr64,unsigned long,unsigned long,int) __ptr64
-??0CiStorage@@QEAA@PEBGAEAUICiCAdviseStatus@@KKH@Z
-; public: __cdecl SStorageObject::SStorageObject(class PStorageObject * __ptr64) __ptr64
-??0SStorageObject@@QEAA@PEAVPStorageObject@@@Z
-; protected: __cdecl CAllocStorageVariant::~CAllocStorageVariant(void) __ptr64
-??1CAllocStorageVariant@@IEAA@XZ
-; public: __cdecl CCatState::~CCatState(void) __ptr64
-??1CCatState@@QEAA@XZ
-; public: __cdecl CCatalogAdmin::~CCatalogAdmin(void) __ptr64
-??1CCatalogAdmin@@QEAA@XZ
-; public: __cdecl CCatalogEnum::~CCatalogEnum(void) __ptr64
-??1CCatalogEnum@@QEAA@XZ
-; public: __cdecl CColumns::~CColumns(void) __ptr64
-??1CColumns@@QEAA@XZ
-; public: __cdecl CContentRestriction::~CContentRestriction(void) __ptr64
-??1CContentRestriction@@QEAA@XZ
-; public: __cdecl CDFA::~CDFA(void) __ptr64
-??1CDFA@@QEAA@XZ
-; public: __cdecl CDbCmdTreeNode::~CDbCmdTreeNode(void) __ptr64
-??1CDbCmdTreeNode@@QEAA@XZ
-; public: __cdecl CDbColumns::~CDbColumns(void) __ptr64
-??1CDbColumns@@QEAA@XZ
-; public: __cdecl CDbPropSet::~CDbPropSet(void) __ptr64
-??1CDbPropSet@@QEAA@XZ
-; public: __cdecl CDbQueryResults::~CDbQueryResults(void) __ptr64
-??1CDbQueryResults@@QEAA@XZ
-; public: __cdecl CDbSortSet::~CDbSortSet(void) __ptr64
-??1CDbSortSet@@QEAA@XZ
-; public: __cdecl CDynStream::~CDynStream(void) __ptr64
-??1CDynStream@@QEAA@XZ
-; public: __cdecl CEventItem::~CEventItem(void) __ptr64
-??1CEventItem@@QEAA@XZ
-; public: __cdecl CEventLog::~CEventLog(void) __ptr64
-??1CEventLog@@QEAA@XZ
-; public: __cdecl CFileMapView::~CFileMapView(void) __ptr64
-??1CFileMapView@@QEAA@XZ
-; public: __cdecl CFilterDaemon::~CFilterDaemon(void) __ptr64
-??1CFilterDaemon@@QEAA@XZ
-; public: virtual __cdecl CFwAsyncWorkItem::~CFwAsyncWorkItem(void) __ptr64
-??1CFwAsyncWorkItem@@UEAA@XZ
-; public: __cdecl CFwEventItem::~CFwEventItem(void) __ptr64
-??1CFwEventItem@@QEAA@XZ
-; public: virtual __cdecl CGenericCiProxy::~CGenericCiProxy(void) __ptr64
-??1CGenericCiProxy@@UEAA@XZ
-; public: __cdecl CImpersonateClient::~CImpersonateClient(void) __ptr64
-??1CImpersonateClient@@QEAA@XZ
-; public: __cdecl CImpersonateSystem::~CImpersonateSystem(void) __ptr64
-??1CImpersonateSystem@@QEAA@XZ
-; public: __cdecl CImpersonationTokenCache::~CImpersonationTokenCache(void) __ptr64
-??1CImpersonationTokenCache@@QEAA@XZ
-; public: __cdecl CInternalPropertyRestriction::~CInternalPropertyRestriction(void) __ptr64
-??1CInternalPropertyRestriction@@QEAA@XZ
-; public: __cdecl CKeyArray::~CKeyArray(void) __ptr64
-??1CKeyArray@@QEAA@XZ
-; public: __cdecl CLangList::~CLangList(void) __ptr64
-??1CLangList@@QEAA@XZ
-; public: __cdecl CMachineAdmin::~CMachineAdmin(void) __ptr64
-??1CMachineAdmin@@QEAA@XZ
-; public: virtual __cdecl CMemSerStream::~CMemSerStream(void) __ptr64
-??1CMemSerStream@@UEAA@XZ
-; public: __cdecl CMetaDataMgr::~CMetaDataMgr(void) __ptr64
-??1CMetaDataMgr@@QEAA@XZ
-; public: virtual __cdecl CMmStream::~CMmStream(void) __ptr64
-??1CMmStream@@UEAA@XZ
-; public: __cdecl CMmStreamConsecBuf::~CMmStreamConsecBuf(void) __ptr64
-??1CMmStreamConsecBuf@@QEAA@XZ
-; public: __cdecl CNatLanguageRestriction::~CNatLanguageRestriction(void) __ptr64
-??1CNatLanguageRestriction@@QEAA@XZ
-; public: __cdecl CNodeRestriction::~CNodeRestriction(void) __ptr64
-??1CNodeRestriction@@QEAA@XZ
-; public: __cdecl CNotRestriction::~CNotRestriction(void) __ptr64
-??1CNotRestriction@@QEAA@XZ
-; public: __cdecl COccRestriction::~COccRestriction(void) __ptr64
-??1COccRestriction@@QEAA@XZ
-; public: __cdecl CParseCommandTree::~CParseCommandTree(void) __ptr64
-??1CParseCommandTree@@QEAA@XZ
-; public: __cdecl CPerfMon::~CPerfMon(void) __ptr64
-??1CPerfMon@@QEAA@XZ
-; public: __cdecl CPhraseRestriction::~CPhraseRestriction(void) __ptr64
-??1CPhraseRestriction@@QEAA@XZ
-; public: virtual __cdecl CPhysStorage::~CPhysStorage(void) __ptr64
-??1CPhysStorage@@UEAA@XZ
-; public: __cdecl CPidLookupTable::~CPidLookupTable(void) __ptr64
-??1CPidLookupTable@@QEAA@XZ
-; public: __cdecl CPidRemapper::~CPidRemapper(void) __ptr64
-??1CPidRemapper@@QEAA@XZ
-; public: __cdecl CProcess::~CProcess(void) __ptr64
-??1CProcess@@QEAA@XZ
-; public: __cdecl CPropStoreManager::~CPropStoreManager(void) __ptr64
-??1CPropStoreManager@@QEAA@XZ
-; public: virtual __cdecl CPropertyList::~CPropertyList(void) __ptr64
-??1CPropertyList@@UEAA@XZ
-; public: __cdecl CPropertyRestriction::~CPropertyRestriction(void) __ptr64
-??1CPropertyRestriction@@QEAA@XZ
-; public: __cdecl CPropertyStore::~CPropertyStore(void) __ptr64
-??1CPropertyStore@@QEAA@XZ
-; public: __cdecl CPropertyStoreWids::~CPropertyStoreWids(void) __ptr64
-??1CPropertyStoreWids@@QEAA@XZ
-; public: __cdecl CQueryUnknown::~CQueryUnknown(void) __ptr64
-??1CQueryUnknown@@QEAA@XZ
-; public: virtual __cdecl CRangeKeyRepository::~CRangeKeyRepository(void) __ptr64
-??1CRangeKeyRepository@@UEAA@XZ
-; public: __cdecl CRegChangeEvent::~CRegChangeEvent(void) __ptr64
-??1CRegChangeEvent@@QEAA@XZ
-; protected: virtual __cdecl CRegNotify::~CRegNotify(void) __ptr64
-??1CRegNotify@@MEAA@XZ
-; public: __cdecl CRestriction::~CRestriction(void) __ptr64
-??1CRestriction@@QEAA@XZ
-; public: __cdecl CScopeAdmin::~CScopeAdmin(void) __ptr64
-??1CScopeAdmin@@QEAA@XZ
-; public: __cdecl CScopeEnum::~CScopeEnum(void) __ptr64
-??1CScopeEnum@@QEAA@XZ
-; public: __cdecl CScopeRestriction::~CScopeRestriction(void) __ptr64
-??1CScopeRestriction@@QEAA@XZ
-; public: __cdecl CSdidLookupTable::~CSdidLookupTable(void) __ptr64
-??1CSdidLookupTable@@QEAA@XZ
-; public: virtual __cdecl CSizeSerStream::~CSizeSerStream(void) __ptr64
-??1CSizeSerStream@@UEAA@XZ
-; public: __cdecl CSort::~CSort(void) __ptr64
-??1CSort@@QEAA@XZ
-; public: __cdecl CSynRestriction::~CSynRestriction(void) __ptr64
-??1CSynRestriction@@QEAA@XZ
-; public: __cdecl CVirtualString::~CVirtualString(void) __ptr64
-??1CVirtualString@@QEAA@XZ
-; public: __cdecl CWin32RegAccess::~CWin32RegAccess(void) __ptr64
-??1CWin32RegAccess@@QEAA@XZ
-; public: __cdecl CWordRestriction::~CWordRestriction(void) __ptr64
-??1CWordRestriction@@QEAA@XZ
-; public: __cdecl CWorkManager::~CWorkManager(void) __ptr64
-??1CWorkManager@@QEAA@XZ
-; public: __cdecl CWorkQueue::~CWorkQueue(void) __ptr64
-??1CWorkQueue@@QEAA@XZ
-; public: __cdecl SStorageObject::~SStorageObject(void) __ptr64
-??1SStorageObject@@QEAA@XZ
-; public: class CDbColId & __ptr64 __cdecl CDbColId::operator=(class CDbColId const & __ptr64) __ptr64
-??4CDbColId@@QEAAAEAV0@AEBV0@@Z
-; public: int __cdecl CDbColId::operator==(class CDbColId const & __ptr64)const __ptr64
-??8CDbColId@@QEBAHAEBV0@@Z
-; public: void __cdecl CWorkManager::AbortWorkItems(void) __ptr64
-?AbortWorkItems@CWorkManager@@QEAAXXZ
-; public: void __cdecl CQueryScanner::Accept(void) __ptr64
-?Accept@CQueryScanner@@QEAAXXZ
-; public: void __cdecl CQueryScanner::AcceptCommand(void) __ptr64
-?AcceptCommand@CQueryScanner@@QEAAXXZ
-; public: void __cdecl CQueryScanner::AcceptWord(void) __ptr64
-?AcceptWord@CQueryScanner@@QEAAXXZ
-; public: int __cdecl CSdidLookupTable::AccessCheck(unsigned long,void * __ptr64,unsigned long,int & __ptr64) __ptr64
-?AccessCheck@CSdidLookupTable@@QEAAHKPEAXKAEAH@Z
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqLine(int) __ptr64
-?AcqLine@CQueryScanner@@QEAAPEAGH@Z
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPath(void) __ptr64
-?AcqPath@CQueryScanner@@QEAAPEAGXZ
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPhrase(void) __ptr64
-?AcqPhrase@CQueryScanner@@QEAAPEAGXZ
-; public: class CRangeRestriction * __ptr64 __cdecl CRangeKeyRepository::AcqRst(void) __ptr64
-?AcqRst@CRangeKeyRepository@@QEAAPEAVCRangeRestriction@@XZ
-; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqWord(void) __ptr64
-?AcqWord@CQueryScanner@@QEAAPEAGXZ
-; private: void __cdecl CPropertyStore::AcquireRead(class CReadWriteLockRecord & __ptr64) __ptr64
-?AcquireRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
-; public: int __cdecl CDbColumns::Add(class CDbColId const & __ptr64,unsigned int) __ptr64
-?Add@CDbColumns@@QEAAHAEBVCDbColId@@I@Z
-; public: void __cdecl CDbQueryResults::Add(unsigned short * __ptr64,unsigned long) __ptr64
-?Add@CDbQueryResults@@QEAAXPEAGK@Z
-; public: int __cdecl CDbSortSet::Add(class CDbColId const & __ptr64,unsigned long,unsigned int) __ptr64
-?Add@CDbSortSet@@QEAAHAEBVCDbColId@@KI@Z
-; public: int __cdecl CDbSortSet::Add(class CDbSortKey const & __ptr64,unsigned int) __ptr64
-?Add@CDbSortSet@@QEAAHAEBVCDbSortKey@@I@Z
-; public: int __cdecl CKeyArray::Add(int,class CKey const & __ptr64) __ptr64
-?Add@CKeyArray@@QEAAHHAEBVCKey@@@Z
-; public: int __cdecl CKeyArray::Add(int,class CKeyBuf const & __ptr64) __ptr64
-?Add@CKeyArray@@QEAAHHAEBVCKeyBuf@@@Z
-; public: void __cdecl CWorkQueue::Add(class PWorkItem * __ptr64) __ptr64
-?Add@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
-; public: void __cdecl CEventItem::AddArg(unsigned long) __ptr64
-?AddArg@CEventItem@@QEAAXK@Z
-; public: void __cdecl CEventItem::AddArg(unsigned short const * __ptr64) __ptr64
-?AddArg@CEventItem@@QEAAXPEBG@Z
-; public: void __cdecl CFwEventItem::AddArg(unsigned long) __ptr64
-?AddArg@CFwEventItem@@QEAAXK@Z
-; public: void __cdecl CFwEventItem::AddArg(unsigned short const * __ptr64) __ptr64
-?AddArg@CFwEventItem@@QEAAXPEBG@Z
-; public: void __cdecl CCatalogAdmin::AddCachedProperty(class CFullPropSpec const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
-?AddCachedProperty@CCatalogAdmin@@QEAAXAEBVCFullPropSpec@@KKKH@Z
-; public: void __cdecl CCatState::AddCatalog(class XPtrST<unsigned short> & __ptr64) __ptr64
-?AddCatalog@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
-; public: void __cdecl CMachineAdmin::AddCatalog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-?AddCatalog@CMachineAdmin@@QEAAXPEBG0@Z
-; public: void __cdecl CNodeRestriction::AddChild(class CRestriction * __ptr64,unsigned int & __ptr64) __ptr64
-?AddChild@CNodeRestriction@@QEAAXPEAVCRestriction@@AEAI@Z
-; public: void __cdecl CCatState::AddDir(class XPtrST<unsigned short> & __ptr64) __ptr64
-?AddDir@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
-; public: virtual void __cdecl CPropertyList::AddEntry(class CPropEntry * __ptr64,int) __ptr64
-?AddEntry@CPropertyList@@UEAAXPEAVCPropEntry@@H@Z
-; public: void __cdecl CEventItem::AddError(unsigned long) __ptr64
-?AddError@CEventItem@@QEAAXK@Z
-; public: void __cdecl CSynRestriction::AddKey(class CKeyBuf const & __ptr64) __ptr64
-?AddKey@CSynRestriction@@QEAAXAEBVCKeyBuf@@@Z
-; public: void __cdecl CCatState::AddMachine(class XPtrST<unsigned short> & __ptr64) __ptr64
-?AddMachine@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
-; public: virtual unsigned long __cdecl CDbProperties::AddRef(void) __ptr64
-?AddRef@CDbProperties@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEmptyPropertyList::AddRef(void) __ptr64
-?AddRef@CEmptyPropertyList@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumString::AddRef(void) __ptr64
-?AddRef@CEnumString@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumWorkid::AddRef(void) __ptr64
-?AddRef@CEnumWorkid@@UEAAKXZ
-; public: virtual unsigned long __cdecl CFwPropertyMapper::AddRef(void) __ptr64
-?AddRef@CFwPropertyMapper@@UEAAKXZ
-; public: virtual unsigned long __cdecl CQueryUnknown::AddRef(void) __ptr64
-?AddRef@CQueryUnknown@@UEAAKXZ
-; public: void __cdecl CWorkQueue::AddRefWorkThreads(void) __ptr64
-?AddRefWorkThreads@CWorkQueue@@QEAAXXZ
-; public: void __cdecl CCatalogAdmin::AddScope(unsigned short const * __ptr64,unsigned short const * __ptr64,int,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-?AddScope@CCatalogAdmin@@QEAAXPEBG0H00@Z
-; public: int __cdecl CDbSortNode::AddSortColumn(struct tagDBID const & __ptr64,int,unsigned long) __ptr64
-?AddSortColumn@CDbSortNode@@QEAAHAEBUtagDBID@@HK@Z
-; public: int __cdecl CDbNestingNode::AddTable(class CDbCmdTreeNode * __ptr64) __ptr64
-?AddTable@CDbNestingNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
-; public: void __cdecl CWorkManager::AddToWorkList(class CFwAsyncWorkItem * __ptr64) __ptr64
-?AddToWorkList@CWorkManager@@QEAAXPEAVCFwAsyncWorkItem@@@Z
-; public: void __cdecl CFwAsyncWorkItem::AddToWorkQueue(void) __ptr64
-?AddToWorkQueue@CFwAsyncWorkItem@@QEAAXXZ
-; public: static unsigned short * __ptr64 __cdecl CDbCmdTreeNode::AllocAndCopyWString(unsigned short const * __ptr64)
-?AllocAndCopyWString@CDbCmdTreeNode@@SAPEAGPEBG@Z
-; unsigned short * __ptr64 __cdecl AllocHeapAndCopy(unsigned short const * __ptr64,unsigned long & __ptr64)
-?AllocHeapAndCopy@@YAPEAGPEBGAEAK@Z
-; unsigned short * __ptr64 __cdecl AllocHeapAndGetWString(class PDeSerStream & __ptr64)
-?AllocHeapAndGetWString@@YAPEAGAEAVPDeSerStream@@@Z
-; public: void __cdecl CEnumString::Append(unsigned short const * __ptr64) __ptr64
-?Append@CEnumString@@QEAAXPEBG@Z
-; public: void __cdecl CEnumWorkid::Append(unsigned long) __ptr64
-?Append@CEnumWorkid@@QEAAXK@Z
-; protected: void __cdecl CDbCmdTreeNode::AppendChild(class CDbCmdTreeNode * __ptr64) __ptr64
-?AppendChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
-; protected: int __cdecl CDbListAnchor::AppendListElement(unsigned short,struct tagDBID const & __ptr64) __ptr64
-?AppendListElement@CDbListAnchor@@IEAAHGAEBUtagDBID@@@Z
-; protected: int __cdecl CDbListAnchor::AppendListElement(class CDbCmdTreeNode * __ptr64) __ptr64
-?AppendListElement@CDbListAnchor@@IEAAHPEAVCDbCmdTreeNode@@@Z
-; public: int __cdecl CDbProjectListAnchor::AppendListElement(struct tagDBID const & __ptr64,unsigned short * __ptr64) __ptr64
-?AppendListElement@CDbProjectListAnchor@@QEAAHAEBUtagDBID@@PEAG@Z
-; public: unsigned __int64 __cdecl CPropStoreManager::BeginTransaction(void) __ptr64
-?BeginTransaction@CPropStoreManager@@QEAA_KXZ
-; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct _GUID const & __ptr64,struct IFilter * __ptr64 * __ptr64,int)
-?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@AEBU_GUID@@PEAPEAUIFilter@@H@Z
-; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct IFilter * __ptr64 * __ptr64,int)
-?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@PEAPEAUIFilter@@H@Z
-; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowBuffer(unsigned long,int,int) __ptr64
-?BorrowBuffer@CPhysStorage@@QEAAPEAKKHH@Z
-; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowNewBuffer(unsigned long) __ptr64
-?BorrowNewBuffer@CPhysStorage@@QEAAPEAKK@Z
-; void __cdecl BuildRegistryPropertiesKey(class XArray<unsigned short> & __ptr64,unsigned short const * __ptr64)
-?BuildRegistryPropertiesKey@@YAXAEAV?$XArray@G@@PEBG@Z
-; void __cdecl BuildRegistryScopesKey(class XArray<unsigned short> & __ptr64,unsigned short const * __ptr64)
-?BuildRegistryScopesKey@@YAXAEAV?$XArray@G@@PEBG@Z
-; void __cdecl CIShutdown(void)
-?CIShutdown@@YAXXZ
-; public: void __cdecl CCatState::ChangeCurrentCatalog(unsigned short const * __ptr64) __ptr64
-?ChangeCurrentCatalog@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CCatState::ChangeCurrentDepth(int) __ptr64
-?ChangeCurrentDepth@CCatState@@QEAAXH@Z
-; public: void __cdecl CCatState::ChangeCurrentMachine(unsigned short const * __ptr64) __ptr64
-?ChangeCurrentMachine@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CCatState::ChangeCurrentScope(unsigned short const * __ptr64) __ptr64
-?ChangeCurrentScope@CCatState@@QEAAXPEBG@Z
-; private: void __cdecl CPropStoreInfo::ChangeDirty(int) __ptr64
-?ChangeDirty@CPropStoreInfo@@AEAAXH@Z
-; public: long __cdecl CLocalGlobalPropertyList::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
-?CheckError@CLocalGlobalPropertyList@@QEAAJAEAKPEAPEAG@Z
-; public: long __cdecl CPropListFile::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
-?CheckError@CPropListFile@@QEAAJAEAKPEAPEAG@Z
-; public: static int __cdecl CiStorage::CheckHasIndexTable(unsigned short const * __ptr64)
-?CheckHasIndexTable@CiStorage@@SAHPEBG@Z
-CiCreateSecurityDescriptor
-; int __cdecl CiGetPassword(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64)
-?CiGetPassword@@YAHPEBG0PEAG@Z
-; void * __ptr64 __cdecl CiNtOpen(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
-?CiNtOpen@@YAPEAXPEBGKKK@Z
-; long __cdecl CiNtOpenNoThrow(void * __ptr64 & __ptr64,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
-?CiNtOpenNoThrow@@YAJAEAPEAXPEBGKKK@Z
-; public: void __cdecl CDbColId::Cleanup(void) __ptr64
-?Cleanup@CDbColId@@QEAAXXZ
-; protected: void __cdecl CDbCmdTreeNode::CleanupDataValue(void) __ptr64
-?CleanupDataValue@CDbCmdTreeNode@@IEAAXXZ
-; public: void __cdecl CCombinedPropertyList::ClearList(void) __ptr64
-?ClearList@CCombinedPropertyList@@QEAAXXZ
-; public: void __cdecl CPropertyList::ClearList(void) __ptr64
-?ClearList@CPropertyList@@QEAAXXZ
-; public: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::Clone(int)const __ptr64
-?Clone@CDbCmdTreeNode@@QEBAPEAV1@H@Z
-; public: virtual long __cdecl CEnumString::Clone(struct IEnumString * __ptr64 * __ptr64) __ptr64
-?Clone@CEnumString@@UEAAJPEAPEAUIEnumString@@@Z
-; public: class CNodeRestriction * __ptr64 __cdecl CNodeRestriction::Clone(void)const __ptr64
-?Clone@CNodeRestriction@@QEBAPEAV1@XZ
-; public: class COccRestriction * __ptr64 __cdecl COccRestriction::Clone(void)const __ptr64
-?Clone@COccRestriction@@QEBAPEAV1@XZ
-; public: class CRestriction * __ptr64 __cdecl CRestriction::Clone(void)const __ptr64
-?Clone@CRestriction@@QEBAPEAV1@XZ
-; public: void __cdecl CPhysStorage::Close(void) __ptr64
-?Close@CPhysStorage@@QEAAXXZ
-; protected: void __cdecl CPipeClient::Close(void) __ptr64
-?Close@CPipeClient@@IEAAXXZ
-; public: void __cdecl COLEPropManager::CPropSetMap::Close(void) __ptr64
-?Close@CPropSetMap@COLEPropManager@@QEAAXXZ
-; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecord * __ptr64) __ptr64
-?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecord@@@Z
-; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecordForWrites * __ptr64) __ptr64
-?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecordForWrites@@@Z
-; public: void __cdecl CRcovStrmAppendTrans::Commit(void) __ptr64
-?Commit@CRcovStrmAppendTrans@@QEAAXXZ
-; public: void __cdecl CRcovStrmMDTrans::Commit(void) __ptr64
-?Commit@CRcovStrmMDTrans@@QEAAXXZ
-; public: void __cdecl CRcovStrmWriteTrans::Commit(void) __ptr64
-?Commit@CRcovStrmWriteTrans@@QEAAXXZ
-; public: static int __cdecl CDriveInfo::ContainsDrive(unsigned short const * __ptr64)
-?ContainsDrive@CDriveInfo@@SAHPEBG@Z
-; public: void __cdecl CMachineAdmin::CreateSubdirs(unsigned short const * __ptr64) __ptr64
-?CreateSubdirs@CMachineAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CRequestClient::DataWriteRead(void * __ptr64,unsigned long,void * __ptr64,unsigned long,unsigned long & __ptr64) __ptr64
-?DataWriteRead@CRequestClient@@QEAAXPEAXK0KAEAK@Z
-; void __cdecl DecodeEscapes(unsigned short * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64)
-?DecodeEscapes@@YAXPEAGAEAK0@Z
-; void __cdecl DecodeHtmlNumeric(unsigned short * __ptr64)
-?DecodeHtmlNumeric@@YAXPEAG@Z
-; void __cdecl DecodeURLEscapes(unsigned char * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64,unsigned long)
-?DecodeURLEscapes@@YAXPEAEAEAKPEAGK@Z
-; public: void __cdecl CPropStoreManager::DeleteRecord(unsigned long) __ptr64
-?DeleteRecord@CPropStoreManager@@QEAAXK@Z
-; public: void __cdecl CCatalogAdmin::DeleteRegistryParamNoThrow(unsigned short const * __ptr64) __ptr64
-?DeleteRegistryParamNoThrow@CCatalogAdmin@@QEAAXPEBG@Z
-; public: static unsigned int __cdecl CiStorage::DetermineDriveType(unsigned short const * __ptr64)
-?DetermineDriveType@CiStorage@@SAIPEBG@Z
-; public: int __cdecl CMachineAdmin::DisableCI(void) __ptr64
-?DisableCI@CMachineAdmin@@QEAAHXZ
-; public: void __cdecl CRegNotify::DisableNotification(void) __ptr64
-?DisableNotification@CRegNotify@@QEAAXXZ
-; public: void __cdecl CMetaDataMgr::DisableVPathNotify(void) __ptr64
-?DisableVPathNotify@CMetaDataMgr@@QEAAXXZ
-; public: void __cdecl CRequestClient::Disconnect(void) __ptr64
-?Disconnect@CRequestClient@@QEAAXXZ
-; public: long __cdecl CCopyRcovObject::DoIt(void) __ptr64
-?DoIt@CCopyRcovObject@@QEAAJXZ
-; public: long __cdecl CFilterDaemon::DoUpdates(void) __ptr64
-?DoUpdates@CFilterDaemon@@QEAAJXZ
-; public: void __cdecl CFwAsyncWorkItem::Done(void) __ptr64
-?Done@CFwAsyncWorkItem@@QEAAXXZ
-; long __cdecl DumpWorkId(unsigned short const * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long & __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
-?DumpWorkId@@YAJPEBGKPEAEAEAK00K@Z
-; public: void __cdecl CPidLookupTable::Empty(void) __ptr64
-?Empty@CPidLookupTable@@QEAAXXZ
-; public: void __cdecl CPropStoreManager::Empty(void) __ptr64
-?Empty@CPropStoreManager@@QEAAXXZ
-; public: void __cdecl CRcovStrmWriteTrans::Empty(void) __ptr64
-?Empty@CRcovStrmWriteTrans@@QEAAXXZ
-; public: void __cdecl CSdidLookupTable::Empty(void) __ptr64
-?Empty@CSdidLookupTable@@QEAAXXZ
-; public: int __cdecl CMachineAdmin::EnableCI(void) __ptr64
-?EnableCI@CMachineAdmin@@QEAAHXZ
-; public: void __cdecl CMetaDataMgr::EnableVPathNotify(class CMetaDataVPathChangeCallBack * __ptr64) __ptr64
-?EnableVPathNotify@CMetaDataMgr@@QEAAXPEAVCMetaDataVPathChangeCallBack@@@Z
-; public: void __cdecl CPropStoreManager::EndTransaction(unsigned __int64,int,unsigned long,unsigned long) __ptr64
-?EndTransaction@CPropStoreManager@@QEAAX_KHKK@Z
-; public: int __cdecl CWin32RegAccess::Enum(unsigned short * __ptr64,unsigned long) __ptr64
-?Enum@CWin32RegAccess@@QEAAHPEAGK@Z
-; public: virtual long __cdecl CEmptyPropertyList::EnumPropInfo(unsigned long,unsigned short const * __ptr64 * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?EnumPropInfo@CEmptyPropertyList@@UEAAJKPEAPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
-; public: void __cdecl CMetaDataMgr::EnumVPaths(class CMetaDataCallBack & __ptr64) __ptr64
-?EnumVPaths@CMetaDataMgr@@QEAAXAEAVCMetaDataCallBack@@@Z
-; public: void __cdecl CMetaDataMgr::EnumVServers(class CMetaDataVirtualServerCallBack & __ptr64) __ptr64
-?EnumVServers@CMetaDataMgr@@QEAAXAEAVCMetaDataVirtualServerCallBack@@@Z
-; public: static void __cdecl CiStorage::EnumerateFilesInDir(unsigned short const * __ptr64,class CEnumString & __ptr64)
-?EnumerateFilesInDir@CiStorage@@SAXPEBGAEAVCEnumString@@@Z
-; public: int __cdecl CPidLookupTable::EnumerateProperty(class CFullPropSpec & __ptr64,unsigned int & __ptr64) __ptr64
-?EnumerateProperty@CPidLookupTable@@QEAAHAEAVCFullPropSpec@@AEAI@Z
-; public: void __cdecl CRegAccess::EnumerateValues(unsigned short * __ptr64,class CRegCallBack & __ptr64) __ptr64
-?EnumerateValues@CRegAccess@@QEAAXPEAGAEAVCRegCallBack@@@Z
-; public: int __cdecl CMmStreamConsecBuf::Eof(void) __ptr64
-?Eof@CMmStreamConsecBuf@@QEAAHXZ
-; public: int __cdecl CMetaDataMgr::ExtensionHasScriptMap(unsigned short const * __ptr64) __ptr64
-?ExtensionHasScriptMap@CMetaDataMgr@@QEAAHPEBG@Z
-; public: virtual long __cdecl CPidConverter::FPSToPROPID(class CFullPropSpec const & __ptr64,unsigned long & __ptr64) __ptr64
-?FPSToPROPID@CPidConverter@@UEAAJAEBVCFullPropSpec@@AEAK@Z
-; public: void __cdecl CPropStoreManager::FastInit(class CiStorage * __ptr64) __ptr64
-?FastInit@CPropStoreManager@@QEAAXPEAVCiStorage@@@Z
-; public: void __cdecl COLEPropManager::FetchProperty(struct _GUID const & __ptr64,struct tagPROPSPEC const & __ptr64,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?FetchProperty@COLEPropManager@@QEAAXAEBU_GUID@@AEBUtagPROPSPEC@@PEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CKeyArray::FillMax(int) __ptr64
-?FillMax@CKeyArray@@QEAAHH@Z
-; public: class CPropEntry const * __ptr64 __cdecl CEmptyPropertyList::Find(class CDbColId const & __ptr64) __ptr64
-?Find@CEmptyPropertyList@@QEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
-; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(class CDbColId const & __ptr64) __ptr64
-?Find@CPropertyList@@UEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
-; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(unsigned short const * __ptr64) __ptr64
-?Find@CPropertyList@@UEAAPEBVCPropEntry@@PEBG@Z
-; public: int __cdecl CPidLookupTable::FindPropid(class CFullPropSpec const & __ptr64,unsigned long & __ptr64,int) __ptr64
-?FindPropid@CPidLookupTable@@QEAAHAEBVCFullPropSpec@@AEAKH@Z
-; public: void __cdecl CDynStream::Flush(void) __ptr64
-?Flush@CDynStream@@QEAAXXZ
-; public: void __cdecl CPhysStorage::Flush(int) __ptr64
-?Flush@CPhysStorage@@QEAAXH@Z
-; public: void __cdecl CPropStoreManager::Flush(void) __ptr64
-?Flush@CPropStoreManager@@QEAAXXZ
-; public: static void __cdecl CCiOle::FlushIdle(void)
-?FlushIdle@CCiOle@@SAXXZ
-; public: struct tagDBCOMMANDTREE * __ptr64 __cdecl CTextToTree::FormFullTree(void) __ptr64
-?FormFullTree@CTextToTree@@QEAAPEAUtagDBCOMMANDTREE@@XZ
-; class CDbCmdTreeNode * __ptr64 __cdecl FormQueryTree(class CDbCmdTreeNode & __ptr64,class CCatState & __ptr64,struct IColumnMapper * __ptr64,int,int)
-?FormQueryTree@@YAPEAVCDbCmdTreeNode@@AEAV1@AEAVCCatState@@PEAUIColumnMapper@@HH@Z
-FsCiShutdown
-; public: unsigned long __cdecl CRegAccess::Get(unsigned short const * __ptr64) __ptr64
-?Get@CRegAccess@@QEAAKPEBG@Z
-; public: void __cdecl CRegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int) __ptr64
-?Get@CRegAccess@@QEAAXPEBGPEAGI@Z
-; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
-?Get@CWin32RegAccess@@QEAAHPEBGAEAK@Z
-; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int,int) __ptr64
-?Get@CWin32RegAccess@@QEAAHPEBGPEAGIH@Z
-; public: virtual long __cdecl CPropertyList::GetAllEntries(class CPropEntry * __ptr64 * __ptr64,unsigned long) __ptr64
-?GetAllEntries@CPropertyList@@UEAAJPEAPEAVCPropEntry@@K@Z
-; public: short __cdecl CAllocStorageVariant::GetBOOL(unsigned int)const __ptr64
-?GetBOOL@CAllocStorageVariant@@QEBAFI@Z
-; public: unsigned long __cdecl CPropStoreManager::GetBackupSize(unsigned long) __ptr64
-?GetBackupSize@CPropStoreManager@@QEAAKK@Z
-; public: virtual void __cdecl CMemDeSerStream::GetBlob(unsigned char * __ptr64,unsigned long) __ptr64
-?GetBlob@CMemDeSerStream@@UEAAXPEAEK@Z
-; unsigned long __cdecl GetBrowserCodepage(class CWebServer & __ptr64,unsigned long)
-?GetBrowserCodepage@@YAKAEAVCWebServer@@K@Z
-; public: virtual unsigned char __cdecl CMemDeSerStream::GetByte(void) __ptr64
-?GetByte@CMemDeSerStream@@UEAAEXZ
-; public: unsigned short const * __ptr64 __cdecl CCatState::GetCD(void) __ptr64
-?GetCD@CCatState@@QEAAPEBGXZ
-; public: int __cdecl CWebServer::GetCGIVariable(char const * __ptr64,class XArray<unsigned short> & __ptr64,unsigned long & __ptr64) __ptr64
-?GetCGIVariable@CWebServer@@QEAAHPEBDAEAV?$XArray@G@@AEAK@Z
-; public: int __cdecl CWebServer::GetCGIVariableW(unsigned short const * __ptr64,class XArray<unsigned short> & __ptr64,unsigned long & __ptr64) __ptr64
-?GetCGIVariableW@CWebServer@@QEAAHPEBGAEAV?$XArray@G@@AEAK@Z
-; public: struct _GUID __cdecl CAllocStorageVariant::GetCLSID(unsigned int)const __ptr64
-?GetCLSID@CAllocStorageVariant@@QEBA?AU_GUID@@I@Z
-; public: union tagCY __cdecl CAllocStorageVariant::GetCY(unsigned int)const __ptr64
-?GetCY@CAllocStorageVariant@@QEBA?ATtagCY@@I@Z
-; public: unsigned short const * __ptr64 __cdecl CCatState::GetCategory(unsigned int)const __ptr64
-?GetCategory@CCatState@@QEBAPEBGI@Z
-; public: virtual void __cdecl CMemDeSerStream::GetChar(char * __ptr64,unsigned long) __ptr64
-?GetChar@CMemDeSerStream@@UEAAXPEADK@Z
-; public: unsigned short const * __ptr64 __cdecl CCatState::GetColumn(unsigned int)const __ptr64
-?GetColumn@CCatState@@QEBAPEBGI@Z
-; public: unsigned short __cdecl CQueryScanner::GetCommandChar(void) __ptr64
-?GetCommandChar@CQueryScanner@@QEAAGXZ
-; public: double __cdecl CAllocStorageVariant::GetDATE(unsigned int)const __ptr64
-?GetDATE@CAllocStorageVariant@@QEBANI@Z
-; public: int __cdecl CCatalogAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
-?GetDWORDParam@CCatalogAdmin@@QEAAHPEBGAEAK@Z
-; public: int __cdecl CMachineAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
-?GetDWORDParam@CMachineAdmin@@QEAAHPEBGAEAK@Z
-; public: void __cdecl CDriveInfo::GetDiskSpace(__int64 & __ptr64,__int64 & __ptr64) __ptr64
-?GetDiskSpace@CDriveInfo@@QEAAXAEA_J0@Z
-; public: virtual double __cdecl CMemDeSerStream::GetDouble(void) __ptr64
-?GetDouble@CMemDeSerStream@@UEAANXZ
-; public: static void __cdecl CDriveInfo::GetDrive(unsigned short const * __ptr64,unsigned short * __ptr64)
-?GetDrive@CDriveInfo@@SAXPEBGPEAG@Z
-; public: unsigned char * __ptr64 __cdecl CGenericCiProxy::GetEntryBuffer(unsigned long & __ptr64) __ptr64
-?GetEntryBuffer@CGenericCiProxy@@QEAAPEAEAEAK@Z
-; public: struct _FILETIME __cdecl CAllocStorageVariant::GetFILETIME(unsigned int)const __ptr64
-?GetFILETIME@CAllocStorageVariant@@QEBA?AU_FILETIME@@I@Z
-; public: int __cdecl CPathParser::GetFileName(unsigned short * __ptr64,unsigned long & __ptr64)const __ptr64
-?GetFileName@CPathParser@@QEBAHPEAGAEAK@Z
-; public: enum CDriveInfo::eFileSystem __cdecl CDriveInfo::GetFileSystem(int) __ptr64
-?GetFileSystem@CDriveInfo@@QEAA?AW4eFileSystem@1@H@Z
-; public: virtual float __cdecl CMemDeSerStream::GetFloat(void) __ptr64
-?GetFloat@CMemDeSerStream@@UEAAMXZ
-; public: virtual void __cdecl CMemDeSerStream::GetGUID(struct _GUID & __ptr64) __ptr64
-?GetGUID@CMemDeSerStream@@UEAAXAEAU_GUID@@@Z
-; class CPropListFile * __ptr64 __cdecl GetGlobalPropListFile(void)
-?GetGlobalPropListFile@@YAPEAVCPropListFile@@XZ
-; class CStaticPropertyList * __ptr64 __cdecl GetGlobalStaticPropertyList(void)
-?GetGlobalStaticPropertyList@@YAPEAVCStaticPropertyList@@XZ
-; public: short __cdecl CAllocStorageVariant::GetI2(unsigned int)const __ptr64
-?GetI2@CAllocStorageVariant@@QEBAFI@Z
-; public: long __cdecl CAllocStorageVariant::GetI4(unsigned int)const __ptr64
-?GetI4@CAllocStorageVariant@@QEBAJI@Z
-; public: union _LARGE_INTEGER __cdecl CAllocStorageVariant::GetI8(unsigned int)const __ptr64
-?GetI8@CAllocStorageVariant@@QEBA?AT_LARGE_INTEGER@@I@Z
-; unsigned long __cdecl GetLCIDFromString(unsigned short * __ptr64)
-?GetLCIDFromString@@YAKPEAG@Z
-; public: char * __ptr64 __cdecl CAllocStorageVariant::GetLPSTR(unsigned int)const __ptr64
-?GetLPSTR@CAllocStorageVariant@@QEBAPEADI@Z
-; public: unsigned short * __ptr64 __cdecl CAllocStorageVariant::GetLPWSTR(unsigned int)const __ptr64
-?GetLPWSTR@CAllocStorageVariant@@QEBAPEAGI@Z
-; public: unsigned short const * __ptr64 __cdecl CCatalogAdmin::GetLocation(void) __ptr64
-?GetLocation@CCatalogAdmin@@QEAAPEBGXZ
-; public: virtual long __cdecl CMemDeSerStream::GetLong(void) __ptr64
-?GetLong@CMemDeSerStream@@UEAAJXZ
-; public: int __cdecl CQueryScanner::GetNumber(unsigned long & __ptr64,int & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEAKAEAH@Z
-; public: int __cdecl CQueryScanner::GetNumber(double & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEAN@Z
-; public: int __cdecl CQueryScanner::GetNumber(__int64 & __ptr64,int & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEA_JAEAH@Z
-; public: int __cdecl CQueryScanner::GetNumber(unsigned __int64 & __ptr64,int & __ptr64) __ptr64
-?GetNumber@CQueryScanner@@QEAAHAEA_KAEAH@Z
-; public: void __cdecl CKeyDeComp::GetOffset(struct BitOffset & __ptr64) __ptr64
-?GetOffset@CKeyDeComp@@QEAAXAEAUBitOffset@@@Z
-; long __cdecl GetOleDBErrorInfo(struct IUnknown * __ptr64,struct _GUID const & __ptr64,unsigned long,unsigned int,struct tagERRORINFO * __ptr64,struct IErrorInfo * __ptr64 * __ptr64)
-?GetOleDBErrorInfo@@YAJPEAUIUnknown@@AEBU_GUID@@KIPEAUtagERRORINFO@@PEAPEAUIErrorInfo@@@Z
-; long __cdecl GetOleError(class CException & __ptr64)
-?GetOleError@@YAJAEAVCException@@@Z
-; public: unsigned long __cdecl CWebServer::GetPhysicalPath(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long,unsigned long) __ptr64
-?GetPhysicalPath@CWebServer@@QEAAKPEBGPEAGKK@Z
-; public: int __cdecl CEmptyPropertyList::GetPropInfo(class CDbColId const & __ptr64,unsigned short const * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfo@CEmptyPropertyList@@QEAAHAEBVCDbColId@@PEAPEBGPEAGPEAI@Z
-; public: int __cdecl CEmptyPropertyList::GetPropInfo(unsigned short const * __ptr64,class CDbColId * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfo@CEmptyPropertyList@@QEAAHPEBGPEAPEAVCDbColId@@PEAGPEAI@Z
-; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromId(struct tagDBID const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfoFromId@CEmptyPropertyList@@UEAAJPEBUtagDBID@@PEAPEAGPEAGPEAI@Z
-; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromName(unsigned short const * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
-?GetPropInfoFromName@CEmptyPropertyList@@UEAAJPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
-; public: static unsigned short __cdecl CEmptyPropertyList::GetPropType(unsigned int)
-?GetPropType@CEmptyPropertyList@@SAGI@Z
-; public: static unsigned int __cdecl CEmptyPropertyList::GetPropTypeCount(void)
-?GetPropTypeCount@CEmptyPropertyList@@SAIXZ
-; public: static unsigned short const * __ptr64 __cdecl CEmptyPropertyList::GetPropTypeName(unsigned int)
-?GetPropTypeName@CEmptyPropertyList@@SAPEBGI@Z
-; public: virtual long __cdecl CDbProperties::GetProperties(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPSET * __ptr64 * __ptr64) __ptr64
-?GetProperties@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPSET@@@Z
-; public: void __cdecl CGetDbProps::GetProperties(struct IDBProperties * __ptr64,unsigned long) __ptr64
-?GetProperties@CGetDbProps@@QEAAXPEAUIDBProperties@@K@Z
-; public: virtual long __cdecl CDbProperties::GetPropertyInfo(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPINFOSET * __ptr64 * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
-?GetPropertyInfo@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPINFOSET@@PEAPEAG@Z
-; public: float __cdecl CAllocStorageVariant::GetR4(unsigned int)const __ptr64
-?GetR4@CAllocStorageVariant@@QEBAMI@Z
-; public: double __cdecl CAllocStorageVariant::GetR8(unsigned int)const __ptr64
-?GetR8@CAllocStorageVariant@@QEBANI@Z
-; public: int __cdecl CMachineAdmin::GetSZParam(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long) __ptr64
-?GetSZParam@CMachineAdmin@@QEAAHPEBGPEAGK@Z
-; long __cdecl GetScodeError(class CException & __ptr64)
-?GetScodeError@@YAJAEAVCException@@@Z
-; int __cdecl GetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64)
-?GetSecret@@YAHPEBG0PEAPEAGPEAK@Z
-; public: unsigned long __cdecl CDriveInfo::GetSectorSize(void) __ptr64
-?GetSectorSize@CDriveInfo@@QEAAKXZ
-; public: void __cdecl CCatState::GetSortProp(unsigned int,unsigned short const * __ptr64 * __ptr64,enum SORTDIR * __ptr64)const __ptr64
-?GetSortProp@CCatState@@QEBAXIPEAPEBGPEAW4SORTDIR@@@Z
-; void __cdecl GetStackTrace(char * __ptr64,unsigned long)
-?GetStackTrace@@YAXPEADK@Z
-; public: unsigned char const * __ptr64 __cdecl CGenericCiProxy::GetStartupData(struct _GUID & __ptr64,unsigned long & __ptr64) __ptr64
-?GetStartupData@CGenericCiProxy@@QEAAPEBEAEAU_GUID@@AEAK@Z
-; public: class PStorage & __ptr64 __cdecl CPropStoreManager::GetStorage(unsigned long) __ptr64
-?GetStorage@CPropStoreManager@@QEAAAEAVPStorage@@K@Z
-; public: unsigned short * __ptr64 __cdecl CKey::GetStr(void)const __ptr64
-?GetStr@CKey@@QEBAPEAGXZ
-; public: unsigned short * __ptr64 __cdecl CKeyBuf::GetStr(void)const __ptr64
-?GetStr@CKeyBuf@@QEBAPEAGXZ
-; public: virtual char * __ptr64 __cdecl CMemDeSerStream::GetString(void) __ptr64
-?GetString@CMemDeSerStream@@UEAAPEADXZ
-; class CDbRestriction * __ptr64 __cdecl GetStringDbRestriction(unsigned short const * __ptr64,unsigned long,struct IColumnMapper * __ptr64,unsigned long)
-?GetStringDbRestriction@@YAPEAVCDbRestriction@@PEBGKPEAUIColumnMapper@@K@Z
-; void __cdecl GetStringFromLCID(unsigned long,unsigned short * __ptr64)
-?GetStringFromLCID@@YAXKPEAG@Z
-; public: unsigned long __cdecl CPropStoreManager::GetTotalSizeInKB(void) __ptr64
-?GetTotalSizeInKB@CPropStoreManager@@QEAAKXZ
-; public: unsigned long __cdecl CPropertyStore::GetTotalSizeInKB(void) __ptr64
-?GetTotalSizeInKB@CPropertyStore@@QEAAKXZ
-; public: virtual unsigned long __cdecl CMemDeSerStream::GetULong(void) __ptr64
-?GetULong@CMemDeSerStream@@UEAAKXZ
-; public: virtual unsigned short __cdecl CMemDeSerStream::GetUShort(void) __ptr64
-?GetUShort@CMemDeSerStream@@UEAAGXZ
-; public: void __cdecl CIndexTable::GetUserHdrInfo(unsigned int & __ptr64,int & __ptr64) __ptr64
-?GetUserHdrInfo@CIndexTable@@QEAAXAEAIAEAH@Z
-; public: unsigned long __cdecl CMetaDataMgr::GetVPathAccess(unsigned short const * __ptr64) __ptr64
-?GetVPathAccess@CMetaDataMgr@@QEAAKPEBG@Z
-; public: unsigned long __cdecl CMetaDataMgr::GetVPathAuthorization(unsigned short const * __ptr64) __ptr64
-?GetVPathAuthorization@CMetaDataMgr@@QEAAKPEBG@Z
-; public: unsigned long __cdecl CMetaDataMgr::GetVPathSSLAccess(unsigned short const * __ptr64) __ptr64
-?GetVPathSSLAccess@CMetaDataMgr@@QEAAKPEBG@Z
-; public: unsigned short const * __ptr64 __cdecl CDriveInfo::GetVolumeName(int) __ptr64
-?GetVolumeName@CDriveInfo@@QEAAPEBGH@Z
-; public: virtual void __cdecl CMemDeSerStream::GetWChar(unsigned short * __ptr64,unsigned long) __ptr64
-?GetWChar@CMemDeSerStream@@UEAAXPEAGK@Z
-; public: virtual unsigned short * __ptr64 __cdecl CMemDeSerStream::GetWString(void) __ptr64
-?GetWString@CMemDeSerStream@@UEAAPEAGXZ
-; public: long __cdecl CDbCmdTreeNode::GetWeight(void)const __ptr64
-?GetWeight@CDbCmdTreeNode@@QEBAJXZ
-; public: void __cdecl CDynStream::Grow(class PStorage & __ptr64,unsigned long) __ptr64
-?Grow@CDynStream@@QEAAXAEAVPStorage@@K@Z
-; private: void __cdecl CVirtualString::GrowBuffer(unsigned long) __ptr64
-?GrowBuffer@CVirtualString@@AEAAXK@Z
-; void __cdecl HTMLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long)
-?HTMLEscapeW@@YAXPEBGAEAVCVirtualString@@K@Z
-; private: void __cdecl CImpersonateClient::Impersonate(void) __ptr64
-?Impersonate@CImpersonateClient@@AEAAXXZ
-; public: void __cdecl CFileMapView::Init(void) __ptr64
-?Init@CFileMapView@@QEAAXXZ
-; public: void __cdecl CMmStreamConsecBuf::Init(class PMmStream * __ptr64) __ptr64
-?Init@CMmStreamConsecBuf@@QEAAXPEAVPMmStream@@@Z
-; public: int __cdecl CPidLookupTable::Init(class PRcovStorageObj * __ptr64) __ptr64
-?Init@CPidLookupTable@@QEAAHPEAVPRcovStorageObj@@@Z
-; public: void __cdecl CRcovStorageHdr::Init(unsigned long) __ptr64
-?Init@CRcovStorageHdr@@QEAAXK@Z
-; public: void __cdecl CRegChangeEvent::Init(void) __ptr64
-?Init@CRegChangeEvent@@QEAAXXZ
-; public: int __cdecl CSdidLookupTable::Init(class CiStorage * __ptr64) __ptr64
-?Init@CSdidLookupTable@@QEAAHPEAVCiStorage@@@Z
-; public: virtual void __cdecl CPropertyList::InitIterator(void) __ptr64
-?InitIterator@CPropertyList@@UEAAXXZ
-; public: void __cdecl CImpersonationTokenCache::Initialize(unsigned short const * __ptr64,int,int,int,unsigned long,unsigned long,unsigned long) __ptr64
-?Initialize@CImpersonationTokenCache@@QEAAXPEBGHHHKKK@Z
-; public: void __cdecl CDynStream::InitializeForRead(void) __ptr64
-?InitializeForRead@CDynStream@@QEAAXXZ
-; public: void __cdecl CDynStream::InitializeForWrite(unsigned long) __ptr64
-?InitializeForWrite@CDynStream@@QEAAXK@Z
-; protected: void __cdecl CDbCmdTreeNode::InsertChild(class CDbCmdTreeNode * __ptr64) __ptr64
-?InsertChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
-; public: int __cdecl CMachineAdmin::IsCIEnabled(void) __ptr64
-?IsCIEnabled@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::IsCIPaused(void) __ptr64
-?IsCIPaused@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::IsCIStarted(void) __ptr64
-?IsCIStarted@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::IsCIStopped(void) __ptr64
-?IsCIStopped@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CCatalogAdmin::IsCatalogInactive(void) __ptr64
-?IsCatalogInactive@CCatalogAdmin@@QEAAHXZ
-; int __cdecl IsDirectoryWritable(unsigned short const * __ptr64)
-?IsDirectoryWritable@@YAHPEBG@Z
-; public: static int __cdecl CMetaDataMgr::IsIISAdminUp(int & __ptr64)
-?IsIISAdminUp@CMetaDataMgr@@SAHAEAH@Z
-; public: static int __cdecl CImpersonateSystem::IsImpersonated(void)
-?IsImpersonated@CImpersonateSystem@@SAHXZ
-; public: int __cdecl CRestriction::IsLeaf(void)const __ptr64
-?IsLeaf@CRestriction@@QEBAHXZ
-; int __cdecl IsNullPointerVariant(struct tagPROPVARIANT * __ptr64)
-?IsNullPointerVariant@@YAHPEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CCatalogAdmin::IsPaused(void) __ptr64
-?IsPaused@CCatalogAdmin@@QEAAHXZ
-; public: static int __cdecl CImpersonateSystem::IsRunningAsSystem(void)
-?IsRunningAsSystem@CImpersonateSystem@@SAHXZ
-; public: int __cdecl CDriveInfo::IsSameDrive(unsigned short const * __ptr64) __ptr64
-?IsSameDrive@CDriveInfo@@QEAAHPEBG@Z
-; long __cdecl IsScopeValid(unsigned short const * __ptr64,unsigned int,int)
-?IsScopeValid@@YAJPEBGIH@Z
-; public: int __cdecl CCatalogAdmin::IsStarted(void) __ptr64
-?IsStarted@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CCatalogAdmin::IsStopped(void) __ptr64
-?IsStopped@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CAllocStorageVariant::IsValid(void)const __ptr64
-?IsValid@CAllocStorageVariant@@QEBAHXZ
-; public: int __cdecl CNodeRestriction::IsValid(void)const __ptr64
-?IsValid@CNodeRestriction@@QEBAHXZ
-; public: int __cdecl COccRestriction::IsValid(void)const __ptr64
-?IsValid@COccRestriction@@QEBAHXZ
-; public: int __cdecl CRestriction::IsValid(void)const __ptr64
-?IsValid@CRestriction@@QEBAHXZ
-; public: int __cdecl CFilterDaemon::IsWaitingForDocument(void) __ptr64
-?IsWaitingForDocument@CFilterDaemon@@QEAAHXZ
-; public: int __cdecl CDriveInfo::IsWriteProtected(void) __ptr64
-?IsWriteProtected@CDriveInfo@@QEAAHXZ
-; public: void __cdecl CLocalGlobalPropertyList::Load(unsigned short const * __ptr64 const) __ptr64
-?Load@CLocalGlobalPropertyList@@QEAAXQEBG@Z
-; unsigned long __cdecl LocaleToCodepage(unsigned long)
-?LocaleToCodepage@@YAKK@Z
-; private: unsigned long __cdecl CPropertyStore::LokNewWorkId(unsigned long,int,int) __ptr64
-?LokNewWorkId@CPropertyStore@@AEAAKKHH@Z
-; public: int __cdecl CCatStateInfo::LokUpdate(void) __ptr64
-?LokUpdate@CCatStateInfo@@QEAAHXZ
-; public: void __cdecl CPropStoreManager::LongInit(int & __ptr64,unsigned long & __ptr64,void (__cdecl*)(unsigned long,int,void const * __ptr64),void const * __ptr64) __ptr64
-?LongInit@CPropStoreManager@@QEAAXAEAHAEAKP6AXKHPEBX@Z2@Z
-; private: unsigned int __cdecl CPropStoreInfo::Lookup(unsigned long) __ptr64
-?Lookup@CPropStoreInfo@@AEAAIK@Z
-; public: unsigned long __cdecl CSdidLookupTable::LookupSDID(void * __ptr64,unsigned long) __ptr64
-?LookupSDID@CSdidLookupTable@@QEAAKPEAXK@Z
-; public: void __cdecl CPhysStorage::MakeBackupCopy(class CPhysStorage & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
-?MakeBackupCopy@CPhysStorage@@QEAAXAEAV1@AEAVPSaveProgressTracker@@@Z
-; public: void __cdecl CPidLookupTable::MakeBackupCopy(class PRcovStorageObj & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
-?MakeBackupCopy@CPidLookupTable@@QEAAXAEAVPRcovStorageObj@@AEAVPSaveProgressTracker@@@Z
-; public: void __cdecl CPropStoreManager::MakeBackupCopy(struct IProgressNotify * __ptr64,int & __ptr64,class CiStorage & __ptr64,struct ICiEnumWorkids * __ptr64,struct IEnumString * __ptr64 * __ptr64) __ptr64
-?MakeBackupCopy@CPropStoreManager@@QEAAXPEAUIProgressNotify@@AEAHAEAVCiStorage@@PEAUICiEnumWorkids@@PEAPEAUIEnumString@@@Z
-; long __cdecl MakeICommand(struct IUnknown * __ptr64 * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
-?MakeICommand@@YAJPEAPEAUIUnknown@@PEBG1PEAU1@@Z
-; long __cdecl MakeISearch(struct ISearchQueryHits * __ptr64 * __ptr64,class CDbRestriction * __ptr64,unsigned short const * __ptr64)
-?MakeISearch@@YAJPEAPEAUISearchQueryHits@@PEAVCDbRestriction@@PEBG@Z
-; long __cdecl MakeLocalICommand(struct IUnknown * __ptr64 * __ptr64,struct ICiCDocStore * __ptr64,struct IUnknown * __ptr64)
-?MakeLocalICommand@@YAJPEAPEAUIUnknown@@PEAUICiCDocStore@@PEAU1@@Z
-; long __cdecl MakeMetadataICommand(struct IUnknown * __ptr64 * __ptr64,enum CiMetaData,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
-?MakeMetadataICommand@@YAJPEAPEAUIUnknown@@W4CiMetaData@@PEBG2PEAU1@@Z
-; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64) __ptr64
-?MakePath@CFullPath@@QEAAXPEBG@Z
-; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64,unsigned int) __ptr64
-?MakePath@CFullPath@@QEAAXPEBGI@Z
-; private: void __cdecl CImpersonateSystem::MakePrivileged(void) __ptr64
-?MakePrivileged@CImpersonateSystem@@AEAAXXZ
-; public: void __cdecl CMmStreamConsecBuf::Map(unsigned long) __ptr64
-?Map@CMmStreamConsecBuf@@QEAAXK@Z
-; public: int __cdecl CDynStream::MarkDirty(void) __ptr64
-?MarkDirty@CDynStream@@QEAAHXZ
-; public: void __cdecl CBaseStorageVariant::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CBaseStorageVariant@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CContentRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CContentRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CDbCmdTreeNode::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CDbCmdTreeNode@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CFullPropSpec::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CFullPropSpec@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CNatLanguageRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CNatLanguageRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CNodeRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CNodeRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CNotRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CNotRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CPropNameArray::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CPropNameArray@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CPropertyRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CPropertyRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CVectorRestriction::Marshall(class PSerStream & __ptr64)const __ptr64
-?Marshall@CVectorRestriction@@QEBAXAEAVPSerStream@@@Z
-; public: int __cdecl CBufferCache::MinPageInUse(unsigned long & __ptr64) __ptr64
-?MinPageInUse@CBufferCache@@QEAAHAEAK@Z
-; public: int __cdecl CPhysStorage::MinPageInUse(unsigned long & __ptr64) __ptr64
-?MinPageInUse@CPhysStorage@@QEAAHAEAK@Z
-; unsigned long __cdecl MultiByteToXArrayWideChar(unsigned char const * __ptr64,unsigned long,unsigned int,class XArray<unsigned short> & __ptr64)
-?MultiByteToXArrayWideChar@@YAKPEBEKIAEAV?$XArray@G@@@Z
-; unsigned __int64 __cdecl My_wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
-?My_wcstoui64@@YA_KPEBGPEAPEAGH@Z
-; public: unsigned long __cdecl CPidRemapper::NameToReal(class CFullPropSpec const * __ptr64) __ptr64
-?NameToReal@CPidRemapper@@QEAAKPEBVCFullPropSpec@@@Z
-; public: static struct IStemmer * __ptr64 __cdecl CCiOle::NewStemmer(struct _GUID const & __ptr64)
-?NewStemmer@CCiOle@@SAPEAUIStemmer@@AEBU_GUID@@@Z
-; public: static struct IWordBreaker * __ptr64 __cdecl CCiOle::NewWordBreaker(struct _GUID const & __ptr64)
-?NewWordBreaker@CCiOle@@SAPEAUIWordBreaker@@AEBU_GUID@@@Z
-; public: int __cdecl CCatalogEnum::Next(void) __ptr64
-?Next@CCatalogEnum@@QEAAHXZ
-; public: virtual long __cdecl CEnumString::Next(unsigned long,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
-?Next@CEnumString@@UEAAJKPEAPEAGPEAK@Z
-; public: virtual long __cdecl CEnumWorkid::Next(unsigned long,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
-?Next@CEnumWorkid@@UEAAJKPEAK0@Z
-; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Next(void) __ptr64
-?Next@CPropertyList@@UEAAPEBVCPropEntry@@XZ
-; public: int __cdecl CScopeEnum::Next(void) __ptr64
-?Next@CScopeEnum@@QEAAHXZ
-; public: unsigned long __cdecl CPropertyStoreWids::NextWorkId(void) __ptr64
-?NextWorkId@CPropertyStoreWids@@QEAAKXZ
-; public: unsigned int __cdecl CCatState::NumberOfColumns(void)const __ptr64
-?NumberOfColumns@CCatState@@QEBAIXZ
-; public: unsigned int __cdecl CCatState::NumberOfSortProps(void)const __ptr64
-?NumberOfSortProps@CCatState@@QEBAIXZ
-; public: void __cdecl CMmStream::Open(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long,int) __ptr64
-?Open@CMmStream@@QEAAXPEBGKKKKH@Z
-; public: int __cdecl COLEPropManager::Open(class CFunnyPath const & __ptr64) __ptr64
-?Open@COLEPropManager@@QEAAHAEBVCFunnyPath@@@Z
-; public: void __cdecl CMmStream::OpenExclusive(unsigned short * __ptr64,int) __ptr64
-?OpenExclusive@CMmStream@@QEAAXPEAGH@Z
-; struct _iobuf * __ptr64 __cdecl OpenFileFromPath(unsigned short const * __ptr64)
-?OpenFileFromPath@@YAPEAU_iobuf@@PEBG@Z
-; public: class CCompositePropRecord * __ptr64 __cdecl CPropStoreManager::OpenRecord(unsigned long,unsigned char * __ptr64) __ptr64
-?OpenRecord@CPropStoreManager@@QEAAPEAVCCompositePropRecord@@KPEAE@Z
-; public: class CCompositePropRecordForWrites * __ptr64 __cdecl CPropStoreManager::OpenRecordForWrites(unsigned long,unsigned char * __ptr64) __ptr64
-?OpenRecordForWrites@CPropStoreManager@@QEAAPEAVCCompositePropRecordForWrites@@KPEAE@Z
-; long __cdecl ParseCatalogURL(unsigned short const * __ptr64,class XPtrST<unsigned short> & __ptr64,class XPtrST<unsigned short> & __ptr64)
-?ParseCatalogURL@@YAJPEBGAEAV?$XPtrST@G@@1@Z
-; public: class CRestriction * __ptr64 __cdecl CParseCommandTree::ParseExpression(class CDbCmdTreeNode * __ptr64) __ptr64
-?ParseExpression@CParseCommandTree@@QEAAPEAVCRestriction@@PEAVCDbCmdTreeNode@@@Z
-; public: static void __cdecl CPropertyList::ParseOneLine(class CQueryScanner & __ptr64,int,class XPtr<class CPropEntry> & __ptr64)
-?ParseOneLine@CPropertyList@@SAXAEAVCQueryScanner@@HAEAV?$XPtr@VCPropEntry@@@@@Z
-; public: class CDbRestriction * __ptr64 __cdecl CQueryParser::ParseQueryPhrase(void) __ptr64
-?ParseQueryPhrase@CQueryParser@@QEAAPEAVCDbRestriction@@XZ
-; class CDbColumns * __ptr64 __cdecl ParseStringColumns(unsigned short const * __ptr64,struct IColumnMapper * __ptr64,unsigned long,class PVariableSet * __ptr64,class CDynArray<unsigned short> * __ptr64)
-?ParseStringColumns@@YAPEAVCDbColumns@@PEBGPEAUIColumnMapper@@KPEAVPVariableSet@@PEAV?$CDynArray@G@@@Z
-; public: int __cdecl CCatalogAdmin::Pause(void) __ptr64
-?Pause@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::PauseCI(void) __ptr64
-?PauseCI@CMachineAdmin@@QEAAHXZ
-; public: virtual unsigned long __cdecl CMemDeSerStream::PeekULong(void) __ptr64
-?PeekULong@CMemDeSerStream@@UEAAKXZ
-; public: unsigned long __cdecl CPidMapper::PidToRealPid(unsigned long) __ptr64
-?PidToRealPid@CPidMapper@@QEAAKK@Z
-; public: unsigned long __cdecl CStandardPropMapper::PropertyToPropId(class CFullPropSpec const & __ptr64,int) __ptr64
-?PropertyToPropId@CStandardPropMapper@@QEAAKAEBVCFullPropSpec@@H@Z
-; public: virtual long __cdecl CFwPropertyMapper::PropertyToPropid(struct tagFULLPROPSPEC const * __ptr64,int,unsigned long * __ptr64) __ptr64
-?PropertyToPropid@CFwPropertyMapper@@UEAAJPEBUtagFULLPROPSPEC@@HPEAK@Z
-; public: void __cdecl CValueNormalizer::PutMaxValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
-?PutMaxValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
-; public: void __cdecl CValueNormalizer::PutMinValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
-?PutMinValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
-; public: void __cdecl CValueNormalizer::PutValue(unsigned long,unsigned long & __ptr64,class CStorageVariant const & __ptr64) __ptr64
-?PutValue@CValueNormalizer@@QEAAXKAEAKAEBVCStorageVariant@@@Z
-; void __cdecl PutWString(class PSerStream & __ptr64,unsigned short const * __ptr64)
-?PutWString@@YAXAEAVPSerStream@@PEBG@Z
-; private: class CDbRestriction * __ptr64 __cdecl CQueryParser::Query(class CDbNodeRestriction * __ptr64) __ptr64
-?Query@CQueryParser@@AEAAPEAVCDbRestriction@@PEAVCDbNodeRestriction@@@Z
-; public: class CCatalogAdmin * __ptr64 __cdecl CCatalogEnum::QueryCatalogAdmin(void) __ptr64
-?QueryCatalogAdmin@CCatalogEnum@@QEAAPEAVCCatalogAdmin@@XZ
-; public: class CCatalogAdmin * __ptr64 __cdecl CMachineAdmin::QueryCatalogAdmin(unsigned short const * __ptr64) __ptr64
-?QueryCatalogAdmin@CMachineAdmin@@QEAAPEAVCCatalogAdmin@@PEBG@Z
-; public: class CCatalogEnum * __ptr64 __cdecl CMachineAdmin::QueryCatalogEnum(void) __ptr64
-?QueryCatalogEnum@CMachineAdmin@@QEAAPEAVCCatalogEnum@@XZ
-; public: virtual long __cdecl CDbProperties::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CDbProperties@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CEmptyPropertyList::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CEmptyPropertyList@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CEnumString::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CEnumString@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CEnumWorkid::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CEnumWorkid@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CFwPropertyMapper::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CFwPropertyMapper@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: virtual long __cdecl CQueryUnknown::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
-?QueryInterface@CQueryUnknown@@UEAAJAEBU_GUID@@PEAPEAX@Z
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryPidLookupTable(unsigned long) __ptr64
-?QueryPidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: class CScopeAdmin * __ptr64 __cdecl CCatalogAdmin::QueryScopeAdmin(unsigned short const * __ptr64) __ptr64
-?QueryScopeAdmin@CCatalogAdmin@@QEAAPEAVCScopeAdmin@@PEBG@Z
-; public: class CScopeAdmin * __ptr64 __cdecl CScopeEnum::QueryScopeAdmin(void) __ptr64
-?QueryScopeAdmin@CScopeEnum@@QEAAPEAVCScopeAdmin@@XZ
-; public: class CScopeEnum * __ptr64 __cdecl CCatalogAdmin::QueryScopeEnum(void) __ptr64
-?QueryScopeEnum@CCatalogAdmin@@QEAAPEAVCScopeEnum@@XZ
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryScopeList(unsigned long) __ptr64
-?QueryScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QuerySdidLookupTable(unsigned long) __ptr64
-?QuerySdidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryVirtualScopeList(unsigned long) __ptr64
-?QueryVirtualScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
-; public: void __cdecl CPidRemapper::ReBuild(class CPidMapper const & __ptr64) __ptr64
-?ReBuild@CPidRemapper@@QEAAXAEBVCPidMapper@@@Z
-; public: void __cdecl CQueryUnknown::ReInit(unsigned long,class CRowset * __ptr64 * __ptr64) __ptr64
-?ReInit@CQueryUnknown@@QEAAXKPEAPEAVCRowset@@@Z
-; public: void __cdecl CImpersonationTokenCache::ReInitializeIISScopes(void) __ptr64
-?ReInitializeIISScopes@CImpersonationTokenCache@@QEAAXXZ
-; private: virtual void __cdecl CPhysIndex::ReOpenStream(void) __ptr64
-?ReOpenStream@CPhysIndex@@EEAAXXZ
-; public: unsigned long __cdecl CDynStream::Read(void * __ptr64,unsigned long) __ptr64
-?Read@CDynStream@@QEAAKPEAXK@Z
-; public: unsigned long __cdecl CRcovStrmTrans::Read(void * __ptr64,unsigned long) __ptr64
-?Read@CRcovStrmTrans@@QEAAKPEAXK@Z
-; public: unsigned long __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned long) __ptr64
-?Read@CRegAccess@@QEAAKPEBGK@Z
-; public: unsigned short * __ptr64 __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
-?Read@CRegAccess@@QEAAPEAGPEBG0@Z
-; public: int __cdecl CPropStoreManager::ReadPrimaryProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadPrimaryProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
-; public: int __cdecl COLEPropManager::ReadProperty(class CFullPropSpec const & __ptr64,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@COLEPropManager@@QEAAHAEBVCFullPropSpec@@AEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@PEAEPEAI@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KPEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@PEAEPEAI@Z
-; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropStoreManager@@QEAAHKKPEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CPropertyStore::ReadProperty(class CPropRecordNoLock & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
-?ReadProperty@CPropertyStore@@QEAAHAEAVCPropRecordNoLock@@KPEAUtagPROPVARIANT@@PEAI@Z
-; public: int __cdecl CPropertyStore::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
-?ReadProperty@CPropertyStore@@QEAAHKKAEAUtagPROPVARIANT@@@Z
-; public: unsigned char __cdecl CDFA::Recognize(unsigned short const * __ptr64) __ptr64
-?Recognize@CDFA@@QEAAEPEBG@Z
-; public: void __cdecl CCiRegParams::Refresh(struct ICiAdminParams * __ptr64,int) __ptr64
-?Refresh@CCiRegParams@@QEAAXPEAUICiAdminParams@@H@Z
-; public: void __cdecl CDefColumnRegEntry::Refresh(int) __ptr64
-?Refresh@CDefColumnRegEntry@@QEAAXH@Z
-; public: void __cdecl CWorkQueue::RefreshParams(unsigned long,unsigned long) __ptr64
-?RefreshParams@CWorkQueue@@QEAAXKK@Z
-; public: virtual unsigned long __cdecl CDbProperties::Release(void) __ptr64
-?Release@CDbProperties@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEmptyPropertyList::Release(void) __ptr64
-?Release@CEmptyPropertyList@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumString::Release(void) __ptr64
-?Release@CEnumString@@UEAAKXZ
-; public: virtual unsigned long __cdecl CEnumWorkid::Release(void) __ptr64
-?Release@CEnumWorkid@@UEAAKXZ
-; public: virtual unsigned long __cdecl CFwPropertyMapper::Release(void) __ptr64
-?Release@CFwPropertyMapper@@UEAAKXZ
-; public: void __cdecl CImpersonateRemoteAccess::Release(void) __ptr64
-?Release@CImpersonateRemoteAccess@@QEAAXXZ
-; public: virtual unsigned long __cdecl CQueryUnknown::Release(void) __ptr64
-?Release@CQueryUnknown@@UEAAKXZ
-; public: void __cdecl CWorkQueue::Release(class CWorkThread * __ptr64) __ptr64
-?Release@CWorkQueue@@QEAAXPEAVCWorkThread@@@Z
-; private: void __cdecl CPropertyStore::ReleaseRead(class CReadWriteLockRecord & __ptr64) __ptr64
-?ReleaseRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
-; public: void __cdecl CWorkQueue::ReleaseWorkThreads(void) __ptr64
-?ReleaseWorkThreads@CWorkQueue@@QEAAXXZ
-; public: void __cdecl CColumns::Remove(unsigned int) __ptr64
-?Remove@CColumns@@QEAAXI@Z
-; public: void __cdecl CDbSortSet::Remove(unsigned int) __ptr64
-?Remove@CDbSortSet@@QEAAXI@Z
-; public: void __cdecl CSort::Remove(unsigned int) __ptr64
-?Remove@CSort@@QEAAXI@Z
-; private: void __cdecl CWorkQueue::Remove(class CWorkThread & __ptr64) __ptr64
-?Remove@CWorkQueue@@AEAAXAEAVCWorkThread@@@Z
-; public: void __cdecl CWorkQueue::Remove(class PWorkItem * __ptr64) __ptr64
-?Remove@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
-; public: void __cdecl CMachineAdmin::RemoveCatalog(unsigned short const * __ptr64,int) __ptr64
-?RemoveCatalog@CMachineAdmin@@QEAAXPEBGH@Z
-; public: void __cdecl CMachineAdmin::RemoveCatalogFiles(unsigned short const * __ptr64) __ptr64
-?RemoveCatalogFiles@CMachineAdmin@@QEAAXPEBG@Z
-; public: class CRestriction * __ptr64 __cdecl CNodeRestriction::RemoveChild(unsigned int) __ptr64
-?RemoveChild@CNodeRestriction@@QEAAPEAVCRestriction@@I@Z
-; protected: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::RemoveFirstChild(void) __ptr64
-?RemoveFirstChild@CDbCmdTreeNode@@IEAAPEAV1@XZ
-; public: void __cdecl CCatalogAdmin::RemoveScope(unsigned short const * __ptr64) __ptr64
-?RemoveScope@CCatalogAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CPhysStorage::Reopen(int) __ptr64
-?Reopen@CPhysStorage@@QEAAXH@Z
-; public: void __cdecl CEventLog::ReportEventW(class CEventItem & __ptr64) __ptr64
-?ReportEventW@CEventLog@@QEAAXAEAVCEventItem@@@Z
-; public: void __cdecl CFwEventItem::ReportEventW(struct ICiCAdviseStatus & __ptr64) __ptr64
-?ReportEventW@CFwEventItem@@QEAAXAEAUICiCAdviseStatus@@@Z
-; public: int __cdecl CPhysStorage::RequiresFlush(unsigned long) __ptr64
-?RequiresFlush@CPhysStorage@@QEAAHK@Z
-; public: void __cdecl CRegChangeEvent::Reset(void) __ptr64
-?Reset@CRegChangeEvent@@QEAAXXZ
-; public: void __cdecl CQueryScanner::ResetBuffer(unsigned short const * __ptr64) __ptr64
-?ResetBuffer@CQueryScanner@@QEAAXPEBG@Z
-; protected: void __cdecl CAllocStorageVariant::ResetType(class PMemoryAllocator & __ptr64) __ptr64
-?ResetType@CAllocStorageVariant@@IEAAXAEAVPMemoryAllocator@@@Z
-; public: void __cdecl CProcess::Resume(void) __ptr64
-?Resume@CProcess@@QEAAXXZ
-; public: void __cdecl CPhysStorage::ReturnBuffer(unsigned long,int,int) __ptr64
-?ReturnBuffer@CPhysStorage@@QEAAXKHH@Z
-; public: void __cdecl CMmStreamConsecBuf::Rewind(void) __ptr64
-?Rewind@CMmStreamConsecBuf@@QEAAXXZ
-; unsigned long __cdecl SaComputeSize(unsigned short,struct tagSAFEARRAY & __ptr64)
-?SaComputeSize@@YAKGAEAUtagSAFEARRAY@@@Z
-; int __cdecl SaCreateAndCopy(class PMemoryAllocator & __ptr64,struct tagSAFEARRAY * __ptr64,struct tagSAFEARRAY * __ptr64 * __ptr64)
-?SaCreateAndCopy@@YAHAEAVPMemoryAllocator@@PEAUtagSAFEARRAY@@PEAPEAU2@@Z
-; int __cdecl SaCreateData(class PVarAllocator & __ptr64,unsigned short,struct tagSAFEARRAY & __ptr64,struct tagSAFEARRAY & __ptr64,int)
-?SaCreateData@@YAHAEAVPVarAllocator@@GAEAUtagSAFEARRAY@@1H@Z
-; public: int __cdecl CRcovStrmTrans::Seek(unsigned long) __ptr64
-?Seek@CRcovStrmTrans@@QEAAHK@Z
-; public: void __cdecl CDbQueryResults::Serialize(class PSerStream & __ptr64)const __ptr64
-?Serialize@CDbQueryResults@@QEBAXAEAVPSerStream@@@Z
-; public: void __cdecl CPidRemapper::Set(class XArray<unsigned long> & __ptr64) __ptr64
-?Set@CPidRemapper@@QEAAXAEAV?$XArray@K@@@Z
-; public: void __cdecl CScopeAdmin::SetAlias(unsigned short const * __ptr64) __ptr64
-?SetAlias@CScopeAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CStorageVariant::SetBOOL(short,unsigned int) __ptr64
-?SetBOOL@CStorageVariant@@QEAAXFI@Z
-; public: void __cdecl CAllocStorageVariant::SetBSTR(unsigned short * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
-?SetBSTR@CAllocStorageVariant@@QEAAXPEAGAEAVPMemoryAllocator@@@Z
-; public: void __cdecl CStorageVariant::SetBSTR(unsigned short * __ptr64,unsigned int) __ptr64
-?SetBSTR@CStorageVariant@@QEAAXPEAGI@Z
-; public: void __cdecl CPropStoreManager::SetBackupSize(unsigned long,unsigned long) __ptr64
-?SetBackupSize@CPropStoreManager@@QEAAXKK@Z
-; public: void __cdecl CCatState::SetCD(unsigned short const * __ptr64) __ptr64
-?SetCD@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID const * __ptr64) __ptr64
-?SetCLSID@CStorageVariant@@QEAAXPEBU_GUID@@@Z
-; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID,unsigned int) __ptr64
-?SetCLSID@CStorageVariant@@QEAAXU_GUID@@I@Z
-; public: void __cdecl CStorageVariant::SetCY(union tagCY,unsigned int) __ptr64
-?SetCY@CStorageVariant@@QEAAXTtagCY@@I@Z
-; public: void __cdecl CCatState::SetCatalog(unsigned short const * __ptr64) __ptr64
-?SetCatalog@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CCatState::SetColumn(unsigned short const * __ptr64,unsigned int) __ptr64
-?SetColumn@CCatState@@QEAAXPEBGI@Z
-; private: void __cdecl CQueryParser::SetCurrentProperty(unsigned short const * __ptr64,enum PropertyType) __ptr64
-?SetCurrentProperty@CQueryParser@@AEAAXPEBGW4PropertyType@@@Z
-; public: void __cdecl CStorageVariant::SetDATE(double,unsigned int) __ptr64
-?SetDATE@CStorageVariant@@QEAAXNI@Z
-; public: void __cdecl CCatalogAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
-?SetDWORDParam@CCatalogAdmin@@QEAAXPEBGK@Z
-; public: void __cdecl CMachineAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
-?SetDWORDParam@CMachineAdmin@@QEAAXPEBGK@Z
-; public: void __cdecl CCatState::SetDefaultProperty(unsigned short const * __ptr64) __ptr64
-?SetDefaultProperty@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CScopeAdmin::SetExclude(int) __ptr64
-?SetExclude@CScopeAdmin@@QEAAXH@Z
-; public: void __cdecl CStorageVariant::SetFILETIME(struct _FILETIME,unsigned int) __ptr64
-?SetFILETIME@CStorageVariant@@QEAAXU_FILETIME@@I@Z
-; public: void __cdecl CStorageVariant::SetI2(short,unsigned int) __ptr64
-?SetI2@CStorageVariant@@QEAAXFI@Z
-; public: void __cdecl CStorageVariant::SetI4(long,unsigned int) __ptr64
-?SetI4@CStorageVariant@@QEAAXJI@Z
-; public: void __cdecl CStorageVariant::SetI8(union _LARGE_INTEGER,unsigned int) __ptr64
-?SetI8@CStorageVariant@@QEAAXT_LARGE_INTEGER@@I@Z
-; public: void __cdecl CStorageVariant::SetLPSTR(char const * __ptr64,unsigned int) __ptr64
-?SetLPSTR@CStorageVariant@@QEAAXPEBDI@Z
-; public: void __cdecl CStorageVariant::SetLPWSTR(unsigned short const * __ptr64,unsigned int) __ptr64
-?SetLPWSTR@CStorageVariant@@QEAAXPEBGI@Z
-; public: void __cdecl CCatState::SetLocale(unsigned short const * __ptr64) __ptr64
-?SetLocale@CCatState@@QEAAXPEBG@Z
-; public: void __cdecl CScopeAdmin::SetLogonInfo(unsigned short const * __ptr64,unsigned short const * __ptr64,class CCatalogAdmin & __ptr64) __ptr64
-?SetLogonInfo@CScopeAdmin@@QEAAXPEBG0AEAVCCatalogAdmin@@@Z
-; public: void __cdecl CPropStoreManager::SetMappedCacheSize(unsigned long,unsigned long) __ptr64
-?SetMappedCacheSize@CPropStoreManager@@QEAAXKK@Z
-; public: void __cdecl CCatState::SetNumberOfColumns(unsigned int) __ptr64
-?SetNumberOfColumns@CCatState@@QEAAXI@Z
-; public: void __cdecl CCatState::SetNumberOfSortProps(unsigned int) __ptr64
-?SetNumberOfSortProps@CCatState@@QEAAXI@Z
-; public: void __cdecl CScopeAdmin::SetPath(unsigned short const * __ptr64) __ptr64
-?SetPath@CScopeAdmin@@QEAAXPEBG@Z
-; public: void __cdecl CContentRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
-?SetPhrase@CContentRestriction@@QEAAXPEBG@Z
-; public: void __cdecl CNatLanguageRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
-?SetPhrase@CNatLanguageRestriction@@QEAAXPEBG@Z
-; public: void __cdecl CGenericCiProxy::SetPriority(unsigned long,unsigned long) __ptr64
-?SetPriority@CGenericCiProxy@@QEAAXKK@Z
-; public: virtual long __cdecl CDbProperties::SetProperties(unsigned long,struct tagDBPROPSET * __ptr64 const) __ptr64
-?SetProperties@CDbProperties@@UEAAJKQEAUtagDBPROPSET@@@Z
-; public: int __cdecl CDbColId::SetProperty(unsigned short const * __ptr64) __ptr64
-?SetProperty@CDbColId@@QEAAHPEBG@Z
-; public: int __cdecl CDbPropBaseRestriction::SetProperty(struct tagDBID const & __ptr64) __ptr64
-?SetProperty@CDbPropBaseRestriction@@QEAAHAEBUtagDBID@@@Z
-; public: int __cdecl CDbPropBaseRestriction::SetProperty(class CDbColumnNode const & __ptr64) __ptr64
-?SetProperty@CDbPropBaseRestriction@@QEAAHAEBVCDbColumnNode@@@Z
-; public: int __cdecl CFullPropSpec::SetProperty(unsigned short const * __ptr64) __ptr64
-?SetProperty@CFullPropSpec@@QEAAHPEBG@Z
-; public: void __cdecl CFullPropSpec::SetProperty(unsigned long) __ptr64
-?SetProperty@CFullPropSpec@@QEAAXK@Z
-; public: void __cdecl CStorageVariant::SetR4(float,unsigned int) __ptr64
-?SetR4@CStorageVariant@@QEAAXMI@Z
-; public: void __cdecl CStorageVariant::SetR8(double,unsigned int) __ptr64
-?SetR8@CStorageVariant@@QEAAXNI@Z
-; public: int __cdecl CDbSelectNode::SetRestriction(class CDbCmdTreeNode * __ptr64) __ptr64
-?SetRestriction@CDbSelectNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
-; public: static void __cdecl CImpersonateSystem::SetRunningAsSystem(void)
-?SetRunningAsSystem@CImpersonateSystem@@SAXXZ
-; public: void __cdecl CMachineAdmin::SetSZParam(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
-?SetSZParam@CMachineAdmin@@QEAAXPEBG0K@Z
-; void __cdecl SetScopeProperties(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
-?SetScopeProperties@@YAXPEAUICommand@@IPEBQEBGPEBK11@Z
-; long __cdecl SetScopePropertiesNoThrow(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
-?SetScopePropertiesNoThrow@@YAJPEAUICommand@@IPEBQEBGPEBK11@Z
-; void __cdecl SetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
-?SetSecret@@YAXPEBG00K@Z
-; public: void __cdecl CCatState::SetSortProp(unsigned short const * __ptr64,enum SORTDIR,unsigned int) __ptr64
-?SetSortProp@CCatState@@QEAAXPEBGW4SORTDIR@@I@Z
-; public: void __cdecl CStorageVariant::SetUI1(unsigned char,unsigned int) __ptr64
-?SetUI1@CStorageVariant@@QEAAXEI@Z
-; public: void __cdecl CStorageVariant::SetUI2(unsigned short,unsigned int) __ptr64
-?SetUI2@CStorageVariant@@QEAAXGI@Z
-; public: void __cdecl CStorageVariant::SetUI4(unsigned long,unsigned int) __ptr64
-?SetUI4@CStorageVariant@@QEAAXKI@Z
-; public: void __cdecl CStorageVariant::SetUI8(union _ULARGE_INTEGER,unsigned int) __ptr64
-?SetUI8@CStorageVariant@@QEAAXT_ULARGE_INTEGER@@I@Z
-; public: void __cdecl CPropertyRestriction::SetValue(struct tagBLOB & __ptr64) __ptr64
-?SetValue@CPropertyRestriction@@QEAAXAEAUtagBLOB@@@Z
-; public: void __cdecl CPropertyRestriction::SetValue(unsigned short * __ptr64) __ptr64
-?SetValue@CPropertyRestriction@@QEAAXPEAG@Z
-; public: void __cdecl CPropertyRestriction::SetValue(struct _GUID * __ptr64) __ptr64
-?SetValue@CPropertyRestriction@@QEAAXPEAU_GUID@@@Z
-; public: void __cdecl CDbCmdTreeNode::SetWeight(long) __ptr64
-?SetWeight@CDbCmdTreeNode@@QEAAXJ@Z
-; public: void __cdecl CPropStoreManager::Setup(unsigned long,unsigned long,unsigned long,unsigned __int64,int,unsigned long) __ptr64
-?Setup@CPropStoreManager@@QEAAXKKK_KHK@Z
-; public: void __cdecl CDynStream::Shrink(class PStorage & __ptr64,unsigned long) __ptr64
-?Shrink@CDynStream@@QEAAXAEAVPStorage@@K@Z
-; public: unsigned long __cdecl CPhysStorage::ShrinkFromFront(unsigned long,unsigned long) __ptr64
-?ShrinkFromFront@CPhysStorage@@QEAAKKK@Z
-; public: void __cdecl CPhysStorage::ShrinkToFit(void) __ptr64
-?ShrinkToFit@CPhysStorage@@QEAAXXZ
-; public: static void __cdecl CCiOle::Shutdown(void)
-?Shutdown@CCiOle@@SAXXZ
-; public: void __cdecl CPropStoreManager::Shutdown(void) __ptr64
-?Shutdown@CPropStoreManager@@QEAAXXZ
-; public: void __cdecl CWorkQueue::Shutdown(void) __ptr64
-?Shutdown@CWorkQueue@@QEAAXXZ
-; public: unsigned long __cdecl CDbQueryResults::Size(void) __ptr64
-?Size@CDbQueryResults@@QEAAKXZ
-; public: virtual long __cdecl CEnumString::Skip(unsigned long) __ptr64
-?Skip@CEnumString@@UEAAJK@Z
-; public: virtual long __cdecl CEnumWorkid::Skip(unsigned long) __ptr64
-?Skip@CEnumWorkid@@UEAAJK@Z
-; public: virtual void __cdecl CMemDeSerStream::SkipBlob(unsigned long) __ptr64
-?SkipBlob@CMemDeSerStream@@UEAAXK@Z
-; public: virtual void __cdecl CMemDeSerStream::SkipByte(void) __ptr64
-?SkipByte@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipChar(unsigned long) __ptr64
-?SkipChar@CMemDeSerStream@@UEAAXK@Z
-; public: virtual void __cdecl CMemDeSerStream::SkipDouble(void) __ptr64
-?SkipDouble@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipFloat(void) __ptr64
-?SkipFloat@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipGUID(void) __ptr64
-?SkipGUID@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipLong(void) __ptr64
-?SkipLong@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipULong(void) __ptr64
-?SkipULong@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipUShort(void) __ptr64
-?SkipUShort@CMemDeSerStream@@UEAAXXZ
-; public: virtual void __cdecl CMemDeSerStream::SkipWChar(unsigned long) __ptr64
-?SkipWChar@CMemDeSerStream@@UEAAXK@Z
-; public: int __cdecl CCatalogAdmin::Start(void) __ptr64
-?Start@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::StartCI(void) __ptr64
-?StartCI@CMachineAdmin@@QEAAHXZ
-; public: int __cdecl CCatalogAdmin::Stop(void) __ptr64
-?Stop@CCatalogAdmin@@QEAAHXZ
-; public: int __cdecl CMachineAdmin::StopCI(void) __ptr64
-?StopCI@CMachineAdmin@@QEAAHXZ
-; public: void __cdecl CFilterDaemon::StopFiltering(void) __ptr64
-?StopFiltering@CFilterDaemon@@QEAAXXZ
-; public: unsigned int __cdecl CKey::StrLen(void)const __ptr64
-?StrLen@CKey@@QEBAIXZ
-; public: unsigned int __cdecl CKeyBuf::StrLen(void)const __ptr64
-?StrLen@CKeyBuf@@QEBAIXZ
-; void __cdecl SystemExceptionTranslator(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
-?SystemExceptionTranslator@@YAXIPEAU_EXCEPTION_POINTERS@@@Z
-; public: unsigned long __cdecl CRestriction::TreeCount(void)const __ptr64
-?TreeCount@CRestriction@@QEBAKXZ
-; public: void __cdecl CMachineAdmin::TunePerformance(int,unsigned short,unsigned short) __ptr64
-?TunePerformance@CMachineAdmin@@QEAAXHGG@Z
-; void __cdecl URLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long,int)
-?URLEscapeW@@YAXPEBGAEAVCVirtualString@@KH@Z
-; public: int __cdecl CDbProperties::UnMarshall(class PDeSerStream & __ptr64) __ptr64
-?UnMarshall@CDbProperties@@QEAAHAEAVPDeSerStream@@@Z
-; public: static class CRestriction * __ptr64 __cdecl CRestriction::UnMarshall(class PDeSerStream & __ptr64)
-?UnMarshall@CRestriction@@SAPEAV1@AEAVPDeSerStream@@@Z
-; public: static class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::UnMarshallTree(class PDeSerStream & __ptr64)
-?UnMarshallTree@CDbCmdTreeNode@@SAPEAV1@AEAVPDeSerStream@@@Z
-; void __cdecl UnPickle(int,class XPtr<class CColumnSet> & __ptr64,class XPtr<class CRestriction> & __ptr64,class XPtr<class CSortSet> & __ptr64,class XPtr<class CCategorizationSet> & __ptr64,class CRowsetProperties & __ptr64,class XPtr<class CPidMapper> & __ptr64,unsigned char * __ptr64,unsigned long)
-?UnPickle@@YAXHAEAV?$XPtr@VCColumnSet@@@@AEAV?$XPtr@VCRestriction@@@@AEAV?$XPtr@VCSortSet@@@@AEAV?$XPtr@VCCategorizationSet@@@@AEAVCRowsetProperties@@AEAV?$XPtr@VCPidMapper@@@@PEAEK@Z
-; protected: void __cdecl CRcovStrmTrans::Unmap(enum CRcovStorageHdr::DataCopyNum) __ptr64
-?Unmap@CRcovStrmTrans@@IEAAXW4DataCopyNum@CRcovStorageHdr@@@Z
-; unsigned long __cdecl UpdateContentIndex(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,int)
-?UpdateContentIndex@@YAKPEBG00H@Z
-; public: void __cdecl CDiskFreeStatus::UpdateDiskLowInfo(void) __ptr64
-?UpdateDiskLowInfo@CDiskFreeStatus@@QEAAXXZ
-; int __cdecl VT_VARIANT_EQ(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_EQ@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_GE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_GE@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_GT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_GT@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_LE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_LE@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_LT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_LT@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl VT_VARIANT_NE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
-?VT_VARIANT_NE@@YAHAEBUtagPROPVARIANT@@0@Z
-; int __cdecl ValidateScopeRestriction(class CRestriction * __ptr64)
-?ValidateScopeRestriction@@YAHPEAVCRestriction@@@Z
-; public: void __cdecl PRcovStorageObj::VerifyConsistency(void) __ptr64
-?VerifyConsistency@PRcovStorageObj@@QEAAXXZ
-; void __cdecl VerifyThreadHasAdminPrivilege(void)
-?VerifyThreadHasAdminPrivilege@@YAXXZ
-; unsigned long __cdecl WideCharToXArrayMultiByte(unsigned short const * __ptr64,unsigned long,unsigned int,class XArray<unsigned char> & __ptr64)
-?WideCharToXArrayMultiByte@@YAKPEBGKIAEAV?$XArray@E@@@Z
-; public: void __cdecl CDynStream::Write(void * __ptr64,unsigned long) __ptr64
-?Write@CDynStream@@QEAAXPEAXK@Z
-; protected: void __cdecl CRcovStrmTrans::Write(void const * __ptr64,unsigned long) __ptr64
-?Write@CRcovStrmTrans@@IEAAXPEBXK@Z
-; public: long __cdecl CPropStoreManager::WritePrimaryProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WritePrimaryProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
-; public: long __cdecl CPropStoreManager::WritePrimaryProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WritePrimaryProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
-; public: long __cdecl CPropStoreManager::WriteProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WriteProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
-; public: long __cdecl CPropStoreManager::WriteProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WriteProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
-; public: unsigned long __cdecl CPropStoreManager::WritePropertyInNewRecord(unsigned long,class CStorageVariant const & __ptr64) __ptr64
-?WritePropertyInNewRecord@CPropStoreManager@@QEAAKKAEBVCStorageVariant@@@Z
-; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbNestingNode::_FindGroupListAnchor(void) __ptr64
-?_FindGroupListAnchor@CDbNestingNode@@AEAAPEAVCDbProjectListAnchor@@XZ
-; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbProjectNode::_FindOrAddAnchor(void) __ptr64
-?_FindOrAddAnchor@CDbProjectNode@@AEAAPEAVCDbProjectListAnchor@@XZ
-; private: class CDbSortListAnchor * __ptr64 __cdecl CDbSortNode::_FindOrAddAnchor(void) __ptr64
-?_FindOrAddAnchor@CDbSortNode@@AEAAPEAVCDbSortListAnchor@@XZ
-; private: class CDbScalarValue * __ptr64 __cdecl CDbPropertyRestriction::_FindOrAddValueNode(void) __ptr64
-?_FindOrAddValueNode@CDbPropertyRestriction@@AEAAPEAVCDbScalarValue@@XZ
-; private: int __cdecl CImpersonateRemoteAccess::_ImpersonateIf(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
-?_ImpersonateIf@CImpersonateRemoteAccess@@AEAAHPEBG0K@Z
-; unsigned __int64 __cdecl _wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
-?_wcstoui64@@YA_KPEBGPEAPEAGH@Z
-; void __cdecl ciDelete(void * __ptr64)
-?ciDelete@@YAXPEAX@Z
-; int __cdecl ciIsValidPointer(void const * __ptr64)
-?ciIsValidPointer@@YAHPEBX@Z
-; void * __ptr64 __cdecl ciNew(unsigned __int64)
-?ciNew@@YAPEAX_K@Z
-; public: unsigned long __cdecl CFileBuffer::fgetsw(class XGrowable<unsigned short,260> & __ptr64) __ptr64
-?fgetsw@CFileBuffer@@QEAAKAEAV?$XGrowable@G$0BAE@@@@Z
-; unsigned short * __ptr64 __cdecl wcsipattern(unsigned short * __ptr64,unsigned short const * __ptr64)
-?wcsipattern@@YAPEAGPEAGPEBG@Z
-AbortMerges
-BeginCacheTransaction
-BindIFilterFromStorage
-BindIFilterFromStream
-CIBuildQueryNode
-CIBuildQueryTree
-CICreateCommand
-CIGetGlobalPropertyList
-CIMakeICommand
-CIRestrictionToFullTree
-CIState
-CITextToFullTree
-CITextToFullTreeEx
-CITextToSelectTree
-CITextToSelectTreeEx
-CiSvcMain
-CollectCIISAPIPerformanceData
-CollectCIPerformanceData
-CollectFILTERPerformanceData
-DllCanUnloadNow
-DllGetClassObject
-DllRegisterServer
-DllUnregisterServer
-DoneCIISAPIPerformanceData
-DoneCIPerformanceData
-DoneFILTERPerformanceData
-EndCacheTransaction
-ForceMasterMerge
-InitializeCIISAPIPerformanceData
-InitializeCIPerformanceData
-InitializeFILTERPerformanceData
-LoadBHIFilter
-LoadBinaryFilter
-LoadIFilter
-LoadIFilterEx
-LoadTextFilter
-LocateCatalogs
-LocateCatalogsA
-LocateCatalogsW
-SetCatalogState
-SetupCache
-SetupCacheEx
-StartFWCiSvcWork
-StopFWCiSvcWork
-SvcEntry_CiSvc
diff --git a/lib/libc/mingw/libarm32/query.def b/lib/libc/mingw/libarm32/query.def
deleted file mode 100644
index 091bd136aa..0000000000
--- a/lib/libc/mingw/libarm32/query.def
+++ /dev/null
@@ -1,51 +0,0 @@
-;
-; Definition file of query.dll
-; Automatic generated by gendef
-; written by Kai Tietz 2008-2014
-;
-LIBRARY "query.dll"
-EXPORTS
-BeginCacheTransaction
-CIBuildQueryNode
-CIBuildQueryTree
-CICreateCommand
-CIGetGlobalPropertyList
-CIMakeICommand
-CIRestrictionToFullTree
-CIState
-CITextToFullTree
-CITextToFullTreeEx
-CITextToSelectTree
-CITextToSelectTreeEx
-CiCreateSecurityDescriptor
-CiSvcMain
-CollectCIISAPIPerformanceData
-CollectCIPerformanceData
-CollectFILTERPerformanceData
-DoneCIISAPIPerformanceData
-DoneCIPerformanceData
-DoneFILTERPerformanceData
-EndCacheTransaction
-FsCiShutdown
-InitializeCIISAPIPerformanceData
-InitializeCIPerformanceData
-InitializeFILTERPerformanceData
-LoadBinaryFilter
-LoadTextFilter
-SetCatalogState
-SetupCache
-SetupCacheEx
-SvcEntry_CiSvc
-BindIFilterFromStorage
-BindIFilterFromStream
-CIRevertToSelf
-CIShutdown
-InternalBindIFilterFromDocCLSID
-InternalBindIFilterFromFileName
-InternalBindIFilterFromStorage
-InternalBindIFilterFromStream
-LoadIFilter
-LoadIFilterEx
-LocateCatalogs
-LocateCatalogsA
-LocateCatalogsW
diff --git a/lib/libc/mingw/math/cephes_emath.c b/lib/libc/mingw/math/cephes_emath.c
deleted file mode 100644
index 41e297cfe8..0000000000
--- a/lib/libc/mingw/math/cephes_emath.c
+++ /dev/null
@@ -1,1283 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#include "cephes_emath.h"
-
-/*
- * The constants are for 64 bit precision.
- */
-
-
-/* Move in external format number,
- * converting it to internal format.
- */
-void __emovi(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b)
-{
- register const unsigned short *p;
- register unsigned short *q;
- int i;
-
- q = b;
- p = a + (NE-1); /* point to last word of external number */
- /* get the sign bit */
- if (*p & 0x8000)
- *q++ = 0xffff;
- else
- *q++ = 0;
- /* get the exponent */
- *q = *p--;
- *q++ &= 0x7fff; /* delete the sign bit */
-#ifdef INFINITY
- if ((*(q - 1) & 0x7fff) == 0x7fff)
- {
-#ifdef NANS
- if (__eisnan(a))
- {
- *q++ = 0;
- for (i = 3; i < NI; i++ )
- *q++ = *p--;
- return;
- }
-#endif
- for (i = 2; i < NI; i++)
- *q++ = 0;
- return;
- }
-#endif
- /* clear high guard word */
- *q++ = 0;
- /* move in the significand */
- for (i = 0; i < NE - 1; i++ )
- *q++ = *p--;
- /* clear low guard word */
- *q = 0;
-}
-
-
-/*
-; Add significands
-; x + y replaces y
-*/
-
-void __eaddm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y)
-{
- register unsigned long a;
- int i;
- unsigned int carry;
-
- x += NI - 1;
- y += NI - 1;
- carry = 0;
- for (i = M; i < NI; i++)
- {
- a = (unsigned long)(*x) + (unsigned long)(*y) + carry;
- if (a & 0x10000)
- carry = 1;
- else
- carry = 0;
- *y = (unsigned short)a;
- --x;
- --y;
- }
-}
-
-/*
-; Subtract significands
-; y - x replaces y
-*/
-
-void __esubm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y)
-{
- unsigned long a;
- int i;
- unsigned int carry;
-
- x += NI - 1;
- y += NI - 1;
- carry = 0;
- for (i = M; i < NI; i++)
- {
- a = (unsigned long)(*y) - (unsigned long)(*x) - carry;
- if (a & 0x10000)
- carry = 1;
- else
- carry = 0;
- *y = (unsigned short)a;
- --x;
- --y;
- }
-}
-
-
-/* Multiply significand of e-type number b
-by 16-bit quantity a, e-type result to c. */
-
-static void __m16m(short unsigned int a,
- short unsigned int * __restrict__ b,
- short unsigned int * __restrict__ c)
-{
- register unsigned short *pp;
- register unsigned long carry;
- unsigned short *ps;
- unsigned short p[NI];
- unsigned long aa, m;
- int i;
-
- aa = a;
- pp = &p[NI - 2];
- *pp++ = 0;
- *pp = 0;
- ps = &b[NI - 1];
-
- for(i = M + 1; i < NI; i++)
- {
- if (*ps == 0)
- {
- --ps;
- --pp;
- *(pp - 1) = 0;
- }
- else
- {
- m = (unsigned long) aa * *ps--;
- carry = (m & 0xffff) + *pp;
- *pp-- = (unsigned short)carry;
- carry = (carry >> 16) + (m >> 16) + *pp;
- *pp = (unsigned short)carry;
- *(pp - 1) = carry >> 16;
- }
- }
- for (i = M; i < NI; i++)
- c[i] = p[i];
-}
-
-
-/* Divide significands. Neither the numerator nor the denominator
-is permitted to have its high guard word nonzero. */
-
-int __edivm(short unsigned int * __restrict__ den,
- short unsigned int * __restrict__ num)
-{
- int i;
- register unsigned short *p;
- unsigned long tnum;
- unsigned short j, tdenm, tquot;
- unsigned short tprod[NI + 1];
- unsigned short equot[NI];
-
- p = &equot[0];
- *p++ = num[0];
- *p++ = num[1];
-
- for (i = M; i < NI; i++)
- {
- *p++ = 0;
- }
- __eshdn1(num);
- tdenm = den[M + 1];
- for (i = M; i < NI; i++)
- {
- /* Find trial quotient digit (the radix is 65536). */
- tnum = (((unsigned long) num[M]) << 16) + num[M + 1];
-
- /* Do not execute the divide instruction if it will overflow. */
- if ((tdenm * 0xffffUL) < tnum)
- tquot = 0xffff;
- else
- tquot = tnum / tdenm;
-
- /* Prove that the divide worked. */
- /*
- tcheck = (unsigned long)tquot * tdenm;
- if (tnum - tcheck > tdenm)
- tquot = 0xffff;
- */
- /* Multiply denominator by trial quotient digit. */
- __m16m(tquot, den, tprod);
- /* The quotient digit may have been overestimated. */
- if (__ecmpm(tprod, num) > 0)
- {
- tquot -= 1;
- __esubm(den, tprod);
- if(__ecmpm(tprod, num) > 0)
- {
- tquot -= 1;
- __esubm(den, tprod);
- }
- }
- __esubm(tprod, num);
- equot[i] = tquot;
- __eshup6(num);
- }
- /* test for nonzero remainder after roundoff bit */
- p = &num[M];
- j = 0;
- for (i = M; i < NI; i++)
- {
- j |= *p++;
- }
- if (j)
- j = 1;
-
- for (i = 0; i < NI; i++)
- num[i] = equot[i];
-
- return ( (int)j );
-}
-
-
-/* Multiply significands */
-int __emulm(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b)
-{
- const unsigned short *p;
- unsigned short *q;
- unsigned short pprod[NI];
- unsigned short equot[NI];
- unsigned short j;
- int i;
-
- equot[0] = b[0];
- equot[1] = b[1];
- for (i = M; i < NI; i++)
- equot[i] = 0;
-
- j = 0;
- p = &a[NI - 1];
- q = &equot[NI - 1];
- for (i = M + 1; i < NI; i++)
- {
- if (*p == 0)
- {
- --p;
- }
- else
- {
- __m16m(*p--, b, pprod);
- __eaddm(pprod, equot);
- }
- j |= *q;
- __eshdn6(equot);
- }
-
- for (i = 0; i < NI; i++)
- b[i] = equot[i];
-
- /* return flag for lost nonzero bits */
- return ( (int)j );
-}
-
-
-/*
- * Normalize and round off.
- *
- * The internal format number to be rounded is "s".
- * Input "lost" indicates whether the number is exact.
- * This is the so-called sticky bit.
- *
- * Input "subflg" indicates whether the number was obtained
- * by a subtraction operation. In that case if lost is nonzero
- * then the number is slightly smaller than indicated.
- *
- * Input "expo" is the biased exponent, which may be negative.
- * the exponent field of "s" is ignored but is replaced by
- * "expo" as adjusted by normalization and rounding.
- *
- * Input "rcntrl" is the rounding control.
- *
- * Input "rnprc" is precison control (64 or NBITS).
- */
-
-void __emdnorm(short unsigned int *s, int lost, int subflg, int expo, int rcntrl, int rndprc)
-{
- int i, j;
- unsigned short r;
- int rw = NI-1; /* low guard word */
- int re = NI-2;
- const unsigned short rmsk = 0xffff;
- const unsigned short rmbit = 0x8000;
-#if NE == 6
- unsigned short rbit[NI] = {0,0,0,0,0,0,0,1,0};
-#else
- unsigned short rbit[NI] = {0,0,0,0,0,0,0,0,0,0,0,1,0};
-#endif
-
- /* Normalize */
- j = __enormlz(s);
-
- /* a blank significand could mean either zero or infinity. */
-#ifndef INFINITY
- if (j > NBITS)
- {
- __ecleazs(s);
- return;
- }
-#endif
- expo -= j;
-#ifndef INFINITY
- if (expo >= 32767L)
- goto overf;
-#else
- if ((j > NBITS) && (expo < 32767L))
- {
- __ecleazs(s);
- return;
- }
-#endif
- if (expo < 0L)
- {
- if (expo > (long)(-NBITS - 1))
- {
- j = (int)expo;
- i = __eshift(s, j);
- if (i)
- lost = 1;
- }
- else
- {
- __ecleazs(s);
- return;
- }
- }
- /* Round off, unless told not to by rcntrl. */
- if (rcntrl == 0)
- goto mdfin;
- if (rndprc == 64)
- {
- rw = 7;
- re = 6;
- rbit[NI - 2] = 0;
- rbit[6] = 1;
- }
-
- /* Shift down 1 temporarily if the data structure has an implied
- * most significant bit and the number is denormal.
- * For rndprc = 64 or NBITS, there is no implied bit.
- * But Intel long double denormals lose one bit of significance even so.
- */
-#if IBMPC
- if ((expo <= 0) && (rndprc != NBITS))
-#else
- if ((expo <= 0) && (rndprc != 64) && (rndprc != NBITS))
-#endif
- {
- lost |= s[NI - 1] & 1;
- __eshdn1(s);
- }
- /* Clear out all bits below the rounding bit,
- * remembering in r if any were nonzero.
- */
- r = s[rw] & rmsk;
- if (rndprc < NBITS)
- {
- i = rw + 1;
- while (i < NI)
- {
- if( s[i] )
- r |= 1;
- s[i] = 0;
- ++i;
- }
- }
- s[rw] &= (rmsk ^ 0xffff);
- if ((r & rmbit) != 0)
- {
- if (r == rmbit)
- {
- if (lost == 0)
- { /* round to even */
- if ((s[re] & 1) == 0)
- goto mddone;
- }
- else
- {
- if (subflg != 0)
- goto mddone;
- }
- }
- __eaddm(rbit, s);
- }
-mddone:
-#if IBMPC
- if ((expo <= 0) && (rndprc != NBITS))
-#else
- if ((expo <= 0) && (rndprc != 64) && (rndprc != NBITS))
-#endif
- {
- __eshup1(s);
- }
- if (s[2] != 0)
- { /* overflow on roundoff */
- __eshdn1(s);
- expo += 1;
- }
-mdfin:
- s[NI - 1] = 0;
- if (expo >= 32767L)
- {
-#ifndef INFINITY
-overf:
-#endif
-#ifdef INFINITY
- s[1] = 32767;
- for (i = 2; i < NI - 1; i++ )
- s[i] = 0;
-#else
- s[1] = 32766;
- s[2] = 0;
- for (i = M + 1; i < NI - 1; i++)
- s[i] = 0xffff;
- s[NI - 1] = 0;
- if ((rndprc < 64) || (rndprc == 113))
- s[rw] &= (rmsk ^ 0xffff);
-#endif
- return;
- }
- if (expo < 0)
- s[1] = 0;
- else
- s[1] = (unsigned short)expo;
-}
-
-
-/*
-; Multiply.
-;
-; unsigned short a[NE], b[NE], c[NE];
-; emul( a, b, c ); c = b * a
-*/
-void __emul(const short unsigned int *a,
- const short unsigned int *b,
- short unsigned int *c)
-{
- unsigned short ai[NI], bi[NI];
- int i, j;
- long lt, lta, ltb;
-
-#ifdef NANS
- /* NaN times anything is the same NaN. */
- if (__eisnan(a))
- {
- __emov(a, c);
- return;
- }
- if (__eisnan(b))
- {
- __emov(b, c);
- return;
- }
- /* Zero times infinity is a NaN. */
- if ((__eisinf(a) && __eiiszero(b))
- || (__eisinf(b) && __eiiszero(a)))
- {
- mtherr( "emul", DOMAIN);
- __enan_NBITS(c);
- return;
- }
-#endif
-/* Infinity times anything else is infinity. */
-#ifdef INFINITY
- if (__eisinf(a) || __eisinf(b))
- {
- if (__eisneg(a) ^ __eisneg(b))
- *(c + (NE-1)) = 0x8000;
- else
- *(c + (NE-1)) = 0;
- __einfin(c);
- return;
- }
-#endif
- __emovi(a, ai);
- __emovi(b, bi);
- lta = ai[E];
- ltb = bi[E];
- if (ai[E] == 0)
- {
- for (i = 1; i < NI - 1; i++)
- {
- if (ai[i] != 0)
- {
- lta -= __enormlz( ai );
- goto mnzer1;
- }
- }
- __eclear(c);
- return;
- }
-mnzer1:
-
- if (bi[E] == 0)
- {
- for (i = 1; i < NI - 1; i++)
- {
- if (bi[i] != 0)
- {
- ltb -= __enormlz(bi);
- goto mnzer2;
- }
- }
- __eclear(c);
- return;
- }
-mnzer2:
-
- /* Multiply significands */
- j = __emulm(ai, bi);
- /* calculate exponent */
- lt = lta + ltb - (EXONE - 1);
- __emdnorm(bi, j, 0, lt, 64, NBITS);
- /* calculate sign of product */
- if (ai[0] == bi[0])
- bi[0] = 0;
- else
- bi[0] = 0xffff;
- __emovo(bi, c);
-}
-
-
-/* move out internal format to ieee long double */
-void __toe64(short unsigned int *a, short unsigned int *b)
-{
- register unsigned short *p, *q;
- unsigned short i;
-
-#ifdef NANS
- if (__eiisnan(a))
- {
- __enan_64(b);
- return;
- }
-#endif
-#ifdef IBMPC
- /* Shift Intel denormal significand down 1. */
- if (a[E] == 0)
- __eshdn1(a);
-#endif
- p = a;
-#ifdef MIEEE
- q = b;
-#else
- q = b + 4; /* point to output exponent */
-#if 1
- /* NOTE: if data type is 96 bits wide, clear the last word here. */
- *(q + 1)= 0;
-#endif
-#endif
-
- /* combine sign and exponent */
- i = *p++;
-#ifdef MIEEE
- if (i)
- *q++ = *p++ | 0x8000;
- else
- *q++ = *p++;
- *q++ = 0;
-#else
- if (i)
- *q-- = *p++ | 0x8000;
- else
- *q-- = *p++;
-#endif
- /* skip over guard word */
- ++p;
- /* move the significand */
-#ifdef MIEEE
- for (i = 0; i < 4; i++)
- *q++ = *p++;
-#else
-#ifdef INFINITY
- if (__eiisinf(a))
- {
- /* Intel long double infinity. */
- *q-- = 0x8000;
- *q-- = 0;
- *q-- = 0;
- *q = 0;
- return;
- }
-#endif
- for (i = 0; i < 4; i++)
- *q-- = *p++;
-#endif
-}
-
-
-/* Compare two e type numbers.
- *
- * unsigned short a[NE], b[NE];
- * ecmp( a, b );
- *
- * returns +1 if a > b
- * 0 if a == b
- * -1 if a < b
- * -2 if either a or b is a NaN.
- */
-int __ecmp(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b)
-{
- unsigned short ai[NI], bi[NI];
- register unsigned short *p, *q;
- register int i;
- int msign;
-
-#ifdef NANS
- if (__eisnan (a) || __eisnan (b))
- return (-2);
-#endif
- __emovi(a, ai);
- p = ai;
- __emovi(b, bi);
- q = bi;
-
- if (*p != *q)
- { /* the signs are different */
- /* -0 equals + 0 */
- for (i = 1; i < NI - 1; i++)
- {
- if (ai[i] != 0)
- goto nzro;
- if (bi[i] != 0)
- goto nzro;
- }
- return (0);
-nzro:
- if (*p == 0)
- return (1);
- else
- return (-1);
- }
- /* both are the same sign */
- if (*p == 0)
- msign = 1;
- else
- msign = -1;
- i = NI - 1;
- do
- {
- if (*p++ != *q++)
- {
- goto diff;
- }
- }
- while (--i > 0);
-
- return (0); /* equality */
-
-diff:
- if ( *(--p) > *(--q) )
- return (msign); /* p is bigger */
- else
- return (-msign); /* p is littler */
-}
-
-/*
-; Shift significand
-;
-; Shifts significand area up or down by the number of bits
-; given by the variable sc.
-*/
-int __eshift(short unsigned int *x, int sc)
-{
- unsigned short lost;
- unsigned short *p;
-
- if (sc == 0)
- return (0);
-
- lost = 0;
- p = x + NI - 1;
-
- if (sc < 0)
- {
- sc = -sc;
- while (sc >= 16)
- {
- lost |= *p; /* remember lost bits */
- __eshdn6(x);
- sc -= 16;
- }
-
- while (sc >= 8)
- {
- lost |= *p & 0xff;
- __eshdn8(x);
- sc -= 8;
- }
-
- while (sc > 0)
- {
- lost |= *p & 1;
- __eshdn1(x);
- sc -= 1;
- }
- }
- else
- {
- while (sc >= 16)
- {
- __eshup6(x);
- sc -= 16;
- }
-
- while (sc >= 8)
- {
- __eshup8(x);
- sc -= 8;
- }
-
- while (sc > 0)
- {
- __eshup1(x);
- sc -= 1;
- }
- }
- if (lost)
- lost = 1;
- return ( (int)lost );
-}
-
-
-/*
-; normalize
-;
-; Shift normalizes the significand area pointed to by argument
-; shift count (up = positive) is returned.
-*/
-int __enormlz(short unsigned int *x)
-{
- register unsigned short *p;
- int sc;
-
- sc = 0;
- p = &x[M];
- if (*p != 0)
- goto normdn;
- ++p;
- if (*p & 0x8000)
- return (0); /* already normalized */
- while (*p == 0)
- {
- __eshup6(x);
- sc += 16;
- /* With guard word, there are NBITS+16 bits available.
- * return true if all are zero.
- */
- if (sc > NBITS)
- return (sc);
- }
- /* see if high byte is zero */
- while ((*p & 0xff00) == 0)
- {
- __eshup8(x);
- sc += 8;
- }
- /* now shift 1 bit at a time */
- while ((*p & 0x8000) == 0)
- {
- __eshup1(x);
- sc += 1;
- if (sc > (NBITS + 16))
- {
- mtherr( "enormlz", UNDERFLOW);
- return (sc);
- }
- }
- return (sc);
-
- /* Normalize by shifting down out of the high guard word
- of the significand */
-normdn:
- if (*p & 0xff00)
- {
- __eshdn8(x);
- sc -= 8;
- }
- while (*p != 0)
- {
- __eshdn1(x);
- sc -= 1;
-
- if (sc < -NBITS)
- {
- mtherr("enormlz", OVERFLOW);
- return (sc);
- }
- }
- return (sc);
-}
-
-
-/* Move internal format number out,
- * converting it to external format.
- */
-void __emovo(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b)
-{
- register const unsigned short *p;
- register unsigned short *q;
- unsigned short i;
-
- p = a;
- q = b + (NE - 1); /* point to output exponent */
- /* combine sign and exponent */
- i = *p++;
- if (i)
- *q-- = *p++ | 0x8000;
- else
- *q-- = *p++;
-#ifdef INFINITY
- if (*(p - 1) == 0x7fff)
- {
-#ifdef NANS
- if (__eiisnan(a))
- {
- __enan_NBITS(b);
- return;
- }
-#endif
- __einfin(b);
- return;
- }
-#endif
- /* skip over guard word */
- ++p;
- /* move the significand */
- for (i = 0; i < NE - 1; i++)
- *q-- = *p++;
-}
-
-
-#if USE_LDTOA
-
-void __eiremain(short unsigned int *den, short unsigned int *num,
- short unsigned int *equot )
-{
- long ld, ln;
- unsigned short j;
-
- ld = den[E];
- ld -= __enormlz(den);
- ln = num[E];
- ln -= __enormlz(num);
- __ecleaz(equot);
- while (ln >= ld)
- {
- if(__ecmpm(den,num) <= 0)
- {
- __esubm(den, num);
- j = 1;
- }
- else
- {
- j = 0;
- }
- __eshup1(equot);
- equot[NI - 1] |= j;
- __eshup1(num);
- ln -= 1;
- }
- __emdnorm( num, 0, 0, ln, 0, NBITS );
-}
-
-
-void __eadd1(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b,
- short unsigned int * __restrict__ c,
- int subflg)
-{
- unsigned short ai[NI], bi[NI], ci[NI];
- int i, lost, j, k;
- long lt, lta, ltb;
-
-#ifdef INFINITY
- if (__eisinf(a))
- {
- __emov(a, c);
- if( subflg )
- __eneg(c);
- return;
- }
- if (__eisinf(b))
- {
- __emov(b, c);
- return;
- }
-#endif
- __emovi(a, ai);
- __emovi(b, bi);
- if (sub)
- ai[0] = ~ai[0];
-
- /* compare exponents */
- lta = ai[E];
- ltb = bi[E];
- lt = lta - ltb;
- if (lt > 0L)
- { /* put the larger number in bi */
- __emovz(bi, ci);
- __emovz(ai, bi);
- __emovz(ci, ai);
- ltb = bi[E];
- lt = -lt;
- }
- lost = 0;
- if (lt != 0L)
- {
- if (lt < (long)(-NBITS - 1))
- goto done; /* answer same as larger addend */
- k = (int)lt;
- lost = __eshift(ai, k); /* shift the smaller number down */
- }
- else
- {
- /* exponents were the same, so must compare significands */
- i = __ecmpm(ai, bi);
- if (i == 0)
- { /* the numbers are identical in magnitude */
- /* if different signs, result is zero */
- if (ai[0] != bi[0])
- {
- __eclear(c);
- return;
- }
- /* if same sign, result is double */
- /* double denomalized tiny number */
- if ((bi[E] == 0) && ((bi[3] & 0x8000) == 0))
- {
- __eshup1( bi );
- goto done;
- }
- /* add 1 to exponent unless both are zero! */
- for (j = 1; j < NI - 1; j++)
- {
- if (bi[j] != 0)
- {
- /* This could overflow, but let emovo take care of that. */
- ltb += 1;
- break;
- }
- }
- bi[E] = (unsigned short )ltb;
- goto done;
- }
- if (i > 0)
- { /* put the larger number in bi */
- __emovz(bi, ci);
- __emovz(ai, bi);
- __emovz(ci, ai);
- }
- }
- if (ai[0] == bi[0])
- {
- __eaddm(ai, bi);
- subflg = 0;
- }
- else
- {
- __esubm(ai, bi);
- subflg = 1;
- }
- __emdnorm(bi, lost, subflg, ltb, 64, NBITS);
-
-done:
- __emovo(bi, c);
-}
-
-
-/* y = largest integer not greater than x
- * (truncated toward minus infinity)
- *
- * unsigned short x[NE], y[NE]
- *
- * efloor( x, y );
- */
-
-
-void __efloor(short unsigned int *x, short unsigned int *y)
-{
- register unsigned short *p;
- int e, expon, i;
- unsigned short f[NE];
- const unsigned short bmask[] = {
- 0xffff,
- 0xfffe,
- 0xfffc,
- 0xfff8,
- 0xfff0,
- 0xffe0,
- 0xffc0,
- 0xff80,
- 0xff00,
- 0xfe00,
- 0xfc00,
- 0xf800,
- 0xf000,
- 0xe000,
- 0xc000,
- 0x8000,
- 0x0000,
- };
-
- __emov(x, f); /* leave in external format */
- expon = (int) f[NE - 1];
- e = (expon & 0x7fff) - (EXONE - 1);
- if (e <= 0)
- {
- __eclear(y);
- goto isitneg;
- }
- /* number of bits to clear out */
- e = NBITS - e;
- __emov(f, y);
- if (e <= 0)
- return;
-
- p = &y[0];
- while (e >= 16)
- {
- *p++ = 0;
- e -= 16;
- }
- /* clear the remaining bits */
- *p &= bmask[e];
- /* truncate negatives toward minus infinity */
-isitneg:
-
- if ((unsigned short)expon & (unsigned short)0x8000)
- {
- for (i = 0; i < NE - 1; i++)
- {
- if (f[i] != y[i])
- {
- __esub( __eone, y, y );
- break;
- }
- }
- }
-}
-
-/*
-; Subtract external format numbers.
-;
-; unsigned short a[NE], b[NE], c[NE];
-; esub( a, b, c ); c = b - a
-*/
-
-void __esub(const short unsigned int * a,
- const short unsigned int * b,
- short unsigned int * c)
-{
-#ifdef NANS
- if (__eisnan(a))
- {
- __emov (a, c);
- return;
- }
- if ( __eisnan(b))
- {
- __emov(b, c);
- return;
- }
- /* Infinity minus infinity is a NaN.
- * Test for subtracting infinities of the same sign.
- */
- if (__eisinf(a) && __eisinf(b) && ((__eisneg (a) ^ __eisneg (b)) == 0))
- {
- mtherr("esub", DOMAIN);
- __enan_NBITS( c );
- return;
- }
-#endif
- __eadd1(a, b, c, 1);
-}
-
-
-/*
-; Divide.
-;
-; unsigned short a[NI], b[NI], c[NI];
-; ediv( a, b, c ); c = b / a
-*/
-
-void __ediv(const short unsigned int *a,
- const short unsigned int *b,
- short unsigned int *c)
-{
- unsigned short ai[NI], bi[NI];
- int i;
- long lt, lta, ltb;
-
-#ifdef NANS
- /* Return any NaN input. */
- if (__eisnan(a))
- {
- __emov(a, c);
- return;
- }
- if (__eisnan(b))
- {
- __emov(b, c);
- return;
- }
- /* Zero over zero, or infinity over infinity, is a NaN. */
- if ((__eiszero(a) && __eiszero(b))
- || (__eisinf (a) && __eisinf (b)))
- {
- mtherr("ediv", DOMAIN);
- __enan_NBITS( c );
- return;
- }
-#endif
-/* Infinity over anything else is infinity. */
-#ifdef INFINITY
- if (__eisinf(b))
- {
- if (__eisneg(a) ^ __eisneg(b))
- *(c + (NE - 1)) = 0x8000;
- else
- *(c + (NE - 1)) = 0;
- __einfin(c);
- return;
- }
- if (__eisinf(a))
- {
- __eclear(c);
- return;
- }
-#endif
- __emovi(a, ai);
- __emovi(b, bi);
- lta = ai[E];
- ltb = bi[E];
- if (bi[E] == 0)
- { /* See if numerator is zero. */
- for (i = 1; i < NI - 1; i++)
- {
- if (bi[i] != 0)
- {
- ltb -= __enormlz(bi);
- goto dnzro1;
- }
- }
- __eclear(c);
- return;
- }
-dnzro1:
-
- if (ai[E] == 0)
- { /* possible divide by zero */
- for (i = 1; i < NI - 1; i++)
- {
- if (ai[i] != 0)
- {
- lta -= __enormlz(ai);
- goto dnzro2;
- }
- }
- if (ai[0] == bi[0])
- *(c + (NE - 1)) = 0;
- else
- *(c + (NE - 1)) = 0x8000;
- __einfin(c);
- mtherr("ediv", SING);
- return;
- }
-dnzro2:
-
- i = __edivm(ai, bi);
- /* calculate exponent */
- lt = ltb - lta + EXONE;
- __emdnorm(bi, i, 0, lt, 64, NBITS);
- /* set the sign */
- if (ai[0] == bi[0])
- bi[0] = 0;
- else
- bi[0] = 0Xffff;
- __emovo(bi, c);
-}
-
-void __e64toe(short unsigned int *pe, short unsigned int *y)
-{
- unsigned short yy[NI];
- unsigned short *p, *q, *e;
- int i;
-
- e = pe;
- p = yy;
- for (i = 0; i < NE - 5; i++)
- *p++ = 0;
-#ifdef IBMPC
- for (i = 0; i < 5; i++)
- *p++ = *e++;
-#endif
-#ifdef DEC
- for (i = 0; i < 5; i++)
- *p++ = *e++;
-#endif
-#ifdef MIEEE
- p = &yy[0] + (NE - 1);
- *p-- = *e++;
- ++e;
- for (i = 0; i < 4; i++)
- *p-- = *e++;
-#endif
-
-#ifdef IBMPC
- /* For Intel long double, shift denormal significand up 1
- -- but only if the top significand bit is zero. */
- if ((yy[NE - 1] & 0x7fff) == 0 && (yy[NE - 2] & 0x8000) == 0)
- {
- unsigned short temp[NI + 1];
- __emovi(yy, temp);
- __eshup1(temp);
- __emovo(temp,y);
- return;
- }
-#endif
-#ifdef INFINITY
- /* Point to the exponent field. */
- p = &yy[NE - 1];
- if (*p == 0x7fff)
- {
-#ifdef NANS
-#ifdef IBMPC
- for (i = 0; i < 4; i++)
- {
- if ((i != 3 && pe[i] != 0)
- /* Check for Intel long double infinity pattern. */
- || (i == 3 && pe[i] != 0x8000))
- {
- __enan_NBITS(y);
- return;
- }
- }
-#else
- for (i = 1; i <= 4; i++)
- {
- if (pe[i] != 0)
- {
- __enan_NBITS(y);
- return;
- }
- }
-#endif
-#endif /* NANS */
- __eclear(y);
- __einfin(y);
- if (*p & 0x8000)
- __eneg(y);
- return;
- }
-#endif
- p = yy;
- q = y;
- for (i = 0; i < NE; i++)
- *q++ = *p++;
-}
-
-#endif /* USE_LDTOA */
diff --git a/lib/libc/mingw/math/cephes_emath.h b/lib/libc/mingw/math/cephes_emath.h
deleted file mode 100644
index 58a8e13c9a..0000000000
--- a/lib/libc/mingw/math/cephes_emath.h
+++ /dev/null
@@ -1,719 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _CEPHES_EMATH_H
-#define _CEPHES_EMATH_H
-
-/**
- * This is a workaround for a gcc bug
- */
-#define __restrict__
-
-/* This file is extracted from S L Moshier's ioldoubl.c,
- * modified for use in MinGW
- *
- * Extended precision arithmetic functions for long double I/O.
- * This program has been placed in the public domain.
- */
-
-
-/*
- * Revision history:
- *
- * 5 Jan 84 PDP-11 assembly language version
- * 6 Dec 86 C language version
- * 30 Aug 88 100 digit version, improved rounding
- * 15 May 92 80-bit long double support
- *
- * Author: S. L. Moshier.
- *
- * 6 Oct 02 Modified for MinGW by inlining utility routines,
- * removing global variables, and splitting out strtold
- * from _IO_ldtoa and _IO_ldtostr.
- *
- * Danny Smith <dannysmith@users.sourceforge.net>
- *
- */
-
-
-/* ieee.c
- *
- * Extended precision IEEE binary floating point arithmetic routines
- *
- * Numbers are stored in C language as arrays of 16-bit unsigned
- * short integers. The arguments of the routines are pointers to
- * the arrays.
- *
- *
- * External e type data structure, simulates Intel 8087 chip
- * temporary real format but possibly with a larger significand:
- *
- * NE-1 significand words (least significant word first,
- * most significant bit is normally set)
- * exponent (value = EXONE for 1.0,
- * top bit is the sign)
- *
- *
- * Internal data structure of a number (a "word" is 16 bits):
- *
- * ei[0] sign word (0 for positive, 0xffff for negative)
- * ei[1] biased __exponent (value = EXONE for the number 1.0)
- * ei[2] high guard word (always zero after normalization)
- * ei[3]
- * to ei[NI-2] significand (NI-4 significand words,
- * most significant word first,
- * most significant bit is set)
- * ei[NI-1] low guard word (0x8000 bit is rounding place)
- *
- *
- *
- * Routines for external format numbers
- *
- * __asctoe64( string, &d ) ASCII string to long double
- * __asctoeg( string, e, prec ) ASCII string to specified precision
- * __e64toe( &d, e ) IEEE long double precision to e type
- * __eadd( a, b, c ) c = b + a
- * __eclear(e) e = 0
- * __ecmp (a, b) Returns 1 if a > b, 0 if a == b,
- * -1 if a < b, -2 if either a or b is a NaN.
- * __ediv( a, b, c ) c = b / a
- * __efloor( a, b ) truncate to integer, toward -infinity
- * __efrexp( a, exp, s ) extract exponent and significand
- * __eifrac( e, &l, frac ) e to long integer and e type fraction
- * __euifrac( e, &l, frac ) e to unsigned long integer and e type fraction
- * __einfin( e ) set e to infinity, leaving its sign alone
- * __eldexp( a, n, b ) multiply by 2**n
- * __emov( a, b ) b = a
- * __emul( a, b, c ) c = b * a
- * __eneg(e) e = -e
- * __eround( a, b ) b = nearest integer value to a
- * __esub( a, b, c ) c = b - a
- * __e24toasc( &f, str, n ) single to ASCII string, n digits after decimal
- * __e53toasc( &d, str, n ) double to ASCII string, n digits after decimal
- * __e64toasc( &d, str, n ) long double to ASCII string
- * __etoasc( e, str, n ) e to ASCII string, n digits after decimal
- * __etoe24( e, &f ) convert e type to IEEE single precision
- * __etoe53( e, &d ) convert e type to IEEE double precision
- * __etoe64( e, &d ) convert e type to IEEE long double precision
- * __eisneg( e ) 1 if sign bit of e != 0, else 0
- * __eisinf( e ) 1 if e has maximum exponent (non-IEEE)
- * or is infinite (IEEE)
- * __eisnan( e ) 1 if e is a NaN
- * __esqrt( a, b ) b = square root of a
- *
- *
- * Routines for internal format numbers
- *
- * __eaddm( ai, bi ) add significands, bi = bi + ai
- * __ecleaz(ei) ei = 0
- * __ecleazs(ei) set ei = 0 but leave its sign alone
- * __ecmpm( ai, bi ) compare significands, return 1, 0, or -1
- * __edivm( ai, bi ) divide significands, bi = bi / ai
- * __emdnorm(ai,l,s,exp) normalize and round off
- * __emovi( a, ai ) convert external a to internal ai
- * __emovo( ai, a ) convert internal ai to external a
- * __emovz( ai, bi ) bi = ai, low guard word of bi = 0
- * __emulm( ai, bi ) multiply significands, bi = bi * ai
- * __enormlz(ei) left-justify the significand
- * __eshdn1( ai ) shift significand and guards down 1 bit
- * __eshdn8( ai ) shift down 8 bits
- * __eshdn6( ai ) shift down 16 bits
- * __eshift( ai, n ) shift ai n bits up (or down if n < 0)
- * __eshup1( ai ) shift significand and guards up 1 bit
- * __eshup8( ai ) shift up 8 bits
- * __eshup6( ai ) shift up 16 bits
- * __esubm( ai, bi ) subtract significands, bi = bi - ai
- *
- *
- * The result is always normalized and rounded to NI-4 word precision
- * after each arithmetic operation.
- *
- * Exception flags are NOT fully supported.
- *
- * Define INFINITY in mconf.h for support of infinity; otherwise a
- * saturation arithmetic is implemented.
- *
- * Define NANS for support of Not-a-Number items; otherwise the
- * arithmetic will never produce a NaN output, and might be confused
- * by a NaN input.
- * If NaN's are supported, the output of ecmp(a,b) is -2 if
- * either a or b is a NaN. This means asking if(ecmp(a,b) < 0)
- * may not be legitimate. Use if(ecmp(a,b) == -1) for less-than
- * if in doubt.
- * Signaling NaN's are NOT supported; they are treated the same
- * as quiet NaN's.
- *
- * Denormals are always supported here where appropriate (e.g., not
- * for conversion to DEC numbers).
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <math.h>
-#include <locale.h>
-#include <ctype.h>
-
-#undef alloca
-#define alloca __builtin_alloca
-
-/* Don't build non-ANSI _IO_ldtoa. It is not thread safe. */
-#ifndef USE_LDTOA
-#define USE_LDTOA 0
-#endif
-
-
- /* Number of 16 bit words in external x type format */
-#define NE 6
-
- /* Number of 16 bit words in internal format */
-#define NI (NE+3)
-
- /* Array offset to exponent */
-#define E 1
-
- /* Array offset to high guard word */
-#define M 2
-
- /* Number of bits of precision */
-#define NBITS ((NI-4)*16)
-
- /* Maximum number of decimal digits in ASCII conversion
- * = NBITS*log10(2)
- */
-#define NDEC (NBITS*8/27)
-
- /* The exponent of 1.0 */
-#define EXONE (0x3fff)
-
-
-#define mtherr(fname, code)
-
-
-extern long double strtold (const char * __restrict__ s, char ** __restrict__ se);
-extern int __asctoe64(const char * __restrict__ ss,
- short unsigned int * __restrict__ y);
-extern void __emul(const short unsigned int * a,
- const short unsigned int * b,
- short unsigned int * c);
-extern int __ecmp(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b);
-extern int __enormlz(short unsigned int *x);
-extern int __eshift(short unsigned int *x, int sc);
-extern void __eaddm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y);
-extern void __esubm(const short unsigned int * __restrict__ x,
- short unsigned int * __restrict__ y);
-extern void __emdnorm(short unsigned int *s, int lost, int subflg,
- int exp, int rcntrl, const int rndprc);
-extern void __toe64(short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-extern int __edivm(short unsigned int * __restrict__ den,
- short unsigned int * __restrict__ num);
-extern int __emulm(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-extern void __emovi(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-extern void __emovo(const short unsigned int * __restrict__ a,
- short unsigned int * __restrict__ b);
-
-#if USE_LDTOA
-
-extern char * _IO_ldtoa(long double, int, int, int *, int *, char **);
-extern void _IO_ldtostr(long double *x, char *string, int ndigs,
- int flags, char fmt);
-
-extern void __eiremain(short unsigned int * __restrict__ den,
- short unsigned int *__restrict__ num,
- short unsigned int *__restrict__ equot);
-extern void __efloor(short unsigned int *x, short unsigned int *y);
-extern void __eadd1(const short unsigned int * __restrict__ a,
- const short unsigned int * __restrict__ b,
- short unsigned int * __restrict__ c,
- int subflg);
-extern void __esub(const short unsigned int *a, const short unsigned int *b,
- short unsigned int *c);
-extern void __ediv(const short unsigned int *a, const short unsigned int *b,
- short unsigned int *c);
-extern void __e64toe(short unsigned int *pe, short unsigned int *y);
-
-
-#endif
-
-static __inline__ int __eisneg(const short unsigned int *x);
-static __inline__ int __eisinf(const short unsigned int *x);
-static __inline__ int __eisnan(const short unsigned int *x);
-static __inline__ int __eiszero(const short unsigned int *a);
-static __inline__ void __emovz(register const short unsigned int * __restrict__ a,
- register short unsigned int * __restrict__ b);
-static __inline__ void __eclear(register short unsigned int *x);
-static __inline__ void __ecleaz(register short unsigned int *xi);
-static __inline__ void __ecleazs(register short unsigned int *xi);
-static __inline__ int __eiisinf(const short unsigned int *x);
-static __inline__ int __eiisnan(const short unsigned int *x);
-static __inline__ int __eiiszero(const short unsigned int *x);
-static __inline__ void __enan_64(short unsigned int *nanptr);
-static __inline__ void __enan_NBITS (short unsigned int *nanptr);
-static __inline__ void __enan_NI16 (short unsigned int *nanptr);
-static __inline__ void __einfin(register short unsigned int *x);
-static __inline__ void __eneg(short unsigned int *x);
-static __inline__ void __eshup1(register short unsigned int *x);
-static __inline__ void __eshup8(register short unsigned int *x);
-static __inline__ void __eshup6(register short unsigned int *x);
-static __inline__ void __eshdn1(register short unsigned int *x);
-static __inline__ void __eshdn8(register short unsigned int *x);
-static __inline__ void __eshdn6(register short unsigned int *x);
-
-
-
-/* Intel IEEE, low order words come first:
- */
-#define IBMPC 1
-
-/* Define 1 for ANSI C atan2() function
- * See atan.c and clog.c.
- */
-#define ANSIC 1
-
-/*define VOLATILE volatile*/
-#define VOLATILE
-
-/* For 12-byte long doubles on an i386, pad a 16-bit short 0
- * to the end of real constants initialized by integer arrays.
- *
- * #define XPD 0,
- *
- * Otherwise, the type is 10 bytes long and XPD should be
- * defined blank.
- *
- * #define XPD
- */
-#define XPD 0,
-/* #define XPD */
-#define NANS 1
-
-/* NaN's require infinity support. */
-#ifdef NANS
-#ifndef INFINITY
-#define INFINITY
-#endif
-#endif
-
-/* This handles 64-bit long ints. */
-#define LONGBITS (8 * sizeof(long))
-
-
-#define NTEN 12
-#define MAXP 4096
-
-/*
-; Clear out entire external format number.
-;
-; unsigned short x[];
-; eclear( x );
-*/
-
-static __inline__ void __eclear(register short unsigned int *x)
-{
- memset(x, 0, NE * sizeof(unsigned short));
-}
-
-
-/* Move external format number from a to b.
- *
- * emov( a, b );
- */
-
-static __inline__ void __emov(register const short unsigned int * __restrict__ a,
- register short unsigned int * __restrict__ b)
-{
- memcpy(b, a, NE * sizeof(unsigned short));
-}
-
-
-/*
-; Negate external format number
-;
-; unsigned short x[NE];
-; eneg( x );
-*/
-
-static __inline__ void __eneg(short unsigned int *x)
-{
-#ifdef NANS
- if (__eisnan(x))
- return;
-#endif
- x[NE-1] ^= 0x8000; /* Toggle the sign bit */
-}
-
-
-/* Return 1 if external format number is negative,
- * else return zero.
- */
-static __inline__ int __eisneg(const short unsigned int *x)
-{
-#ifdef NANS
- if (__eisnan(x))
- return (0);
-#endif
- if (x[NE-1] & 0x8000)
- return (1);
- else
- return (0);
-}
-
-
-/* Return 1 if external format number has maximum possible exponent,
- * else return zero.
- */
-static __inline__ int __eisinf(const short unsigned int *x)
-{
- if ((x[NE - 1] & 0x7fff) == 0x7fff)
- {
-#ifdef NANS
- if (__eisnan(x))
- return (0);
-#endif
- return (1);
- }
- else
- return (0);
-}
-
-/* Check if e-type number is not a number.
- */
-static __inline__ int __eisnan(const short unsigned int *x)
-{
-#ifdef NANS
- int i;
- /* NaN has maximum __exponent */
- if ((x[NE - 1] & 0x7fff) == 0x7fff)
- /* ... and non-zero significand field. */
- for (i = 0; i < NE - 1; i++)
- {
- if (*x++ != 0)
- return (1);
- }
-#endif
- return (0);
-}
-
-/*
-; Fill __entire number, including __exponent and significand, with
-; largest possible number. These programs implement a saturation
-; value that is an ordinary, legal number. A special value
-; "infinity" may also be implemented; this would require tests
-; for that value and implementation of special rules for arithmetic
-; operations involving inifinity.
-*/
-
-static __inline__ void __einfin(register short unsigned int *x)
-{
- register int i;
-#ifdef INFINITY
- for (i = 0; i < NE - 1; i++)
- *x++ = 0;
- *x |= 32767;
-#else
- for (i = 0; i < NE - 1; i++)
- *x++ = 0xffff;
- *x |= 32766;
- *(x - 5) = 0;
-#endif
-}
-
-/* Clear out internal format number.
- */
-
-static __inline__ void __ecleaz(register short unsigned int *xi)
-{
- memset(xi, 0, NI * sizeof(unsigned short));
-}
-
-/* same, but don't touch the sign. */
-
-static __inline__ void __ecleazs(register short unsigned int *xi)
-{
- ++xi;
- memset(xi, 0, (NI-1) * sizeof(unsigned short));
-}
-
-/* Move internal format number from a to b.
- */
-static __inline__ void __emovz(register const short unsigned int * __restrict__ a,
- register short unsigned int * __restrict__ b)
-{
- memcpy(b, a, (NI-1) * sizeof(unsigned short));
- b[NI - 1] = 0;
-}
-
-/* Return nonzero if internal format number is a NaN.
- */
-
-static __inline__ int __eiisnan (const short unsigned int *x)
-{
- int i;
-
- if ((x[E] & 0x7fff) == 0x7fff)
- {
- for (i = M + 1; i < NI; i++ )
- {
- if (x[i] != 0)
- return (1);
- }
- }
- return (0);
-}
-
-/* Return nonzero if external format number is zero. */
-
-static __inline__ int
-__eiszero(const short unsigned int * a)
-{
- union {
- long double ld;
- unsigned short sh[8];
- } av;
- av.ld = 0.0;
- memcpy (av.sh, a, 12);
- if (av.ld == 0.0)
- return (1);
- return (0);
-}
-
-/* Return nonzero if internal format number is zero. */
-
-static __inline__ int
-__eiiszero(const short unsigned int * ai)
-{
- int i;
- /* skip the sign word */
- for (i = 1; i < NI - 1; i++ )
- {
- if (ai[i] != 0)
- return (0);
- }
- return (1);
-}
-
-
-/* Return nonzero if internal format number is infinite. */
-
-static __inline__ int
-__eiisinf (const unsigned short *x)
-{
-#ifdef NANS
- if (__eiisnan (x))
- return (0);
-#endif
- if ((x[E] & 0x7fff) == 0x7fff)
- return (1);
- return (0);
-}
-
-/*
-; Compare significands of numbers in internal format.
-; Guard words are included in the comparison.
-;
-; unsigned short a[NI], b[NI];
-; cmpm( a, b );
-;
-; for the significands:
-; returns +1 if a > b
-; 0 if a == b
-; -1 if a < b
-*/
-static __inline__ int __ecmpm(register const short unsigned int * __restrict__ a,
- register const short unsigned int * __restrict__ b)
-{
- int i;
-
- a += M; /* skip up to significand area */
- b += M;
- for (i = M; i < NI; i++)
- {
- if( *a++ != *b++ )
- goto difrnt;
- }
- return(0);
-
- difrnt:
- if ( *(--a) > *(--b) )
- return (1);
- else
- return (-1);
-}
-
-
-/*
-; Shift significand down by 1 bit
-*/
-
-static __inline__ void __eshdn1(register short unsigned int *x)
-{
- register unsigned short bits;
- int i;
-
- x += M; /* point to significand area */
-
- bits = 0;
- for (i = M; i < NI; i++ )
- {
- if (*x & 1)
- bits |= 1;
- *x >>= 1;
- if (bits & 2)
- *x |= 0x8000;
- bits <<= 1;
- ++x;
- }
-}
-
-/*
-; Shift significand up by 1 bit
-*/
-
-static __inline__ void __eshup1(register short unsigned int *x)
-{
- register unsigned short bits;
- int i;
-
- x += NI-1;
- bits = 0;
-
- for (i = M; i < NI; i++)
- {
- if (*x & 0x8000)
- bits |= 1;
- *x <<= 1;
- if (bits & 2)
- *x |= 1;
- bits <<= 1;
- --x;
- }
-}
-
-
-/*
-; Shift significand down by 8 bits
-*/
-
-static __inline__ void __eshdn8(register short unsigned int *x)
-{
- register unsigned short newbyt, oldbyt;
- int i;
-
- x += M;
- oldbyt = 0;
- for (i = M; i < NI; i++)
- {
- newbyt = *x << 8;
- *x >>= 8;
- *x |= oldbyt;
- oldbyt = newbyt;
- ++x;
- }
-}
-
-/*
-; Shift significand up by 8 bits
-*/
-
-static __inline__ void __eshup8(register short unsigned int *x)
-{
- int i;
- register unsigned short newbyt, oldbyt;
-
- x += NI - 1;
- oldbyt = 0;
-
- for (i = M; i < NI; i++)
- {
- newbyt = *x >> 8;
- *x <<= 8;
- *x |= oldbyt;
- oldbyt = newbyt;
- --x;
- }
-}
-
-/*
-; Shift significand up by 16 bits
-*/
-
-static __inline__ void __eshup6(register short unsigned int *x)
-{
- int i;
- register unsigned short *p;
-
- p = x + M;
- x += M + 1;
-
- for (i = M; i < NI - 1; i++)
- *p++ = *x++;
-
- *p = 0;
-}
-
-/*
-; Shift significand down by 16 bits
-*/
-
-static __inline__ void __eshdn6(register short unsigned int *x)
-{
- int i;
- register unsigned short *p;
-
- x += NI - 1;
- p = x + 1;
-
- for (i = M; i < NI - 1; i++)
- *(--p) = *(--x);
-
- *(--p) = 0;
-}
-
-/*
-; Add significands
-; x + y replaces y
-*/
-
-static __inline__ void __enan_64(unsigned short* nanptr)
-{
- int i;
- for (i = 0; i < 3; i++)
- *nanptr++ = 0;
- *nanptr++ = 0xc000;
- *nanptr++ = 0x7fff;
- *nanptr = 0;
- return;
-}
-
-static __inline__ void __enan_NBITS(unsigned short* nanptr)
-{
- int i;
- for (i = 0; i < NE - 2; i++)
- *nanptr++ = 0;
- *nanptr++ = 0xc000;
- *nanptr = 0x7fff;
- return;
-}
-
-static __inline__ void __enan_NI16(unsigned short* nanptr)
-{
- int i;
- *nanptr++ = 0;
- *nanptr++ = 0x7fff;
- *nanptr++ = 0;
- *nanptr++ = 0xc000;
- for (i = 4; i < NI; i++)
- *nanptr++ = 0;
- return;
-}
-
-#endif /* _CEPHES_EMATH_H */
-
diff --git a/lib/libc/mingw/math/x86/asinh.c b/lib/libc/mingw/math/x86/asinh.c
index 826cc6dee2..002aedee8c 100644
--- a/lib/libc/mingw/math/x86/asinh.c
+++ b/lib/libc/mingw/math/x86/asinh.c
@@ -5,6 +5,7 @@
*/
#include <math.h>
#include <errno.h>
+#include <float.h>
#include "fastmath.h"
/* asinh(x) = copysign(log(fabs(x) + sqrt(x * x + 1.0)), x) */
@@ -21,13 +22,53 @@ double asinh(double x)
return x;
#endif
- /* Use log1p to avoid cancellation with small x. Put
- x * x in denom, so overflow is harmless.
- asinh(x) = log1p (x + sqrt (x * x + 1.0) - 1.0)
- = log1p (x + x * x / (sqrt (x * x + 1.0) + 1.0)) */
+ /* NB the previous formula
+ z = __fast_log1p (z + z * z / (__fast_sqrt (z * z + 1.0) + 1.0));
+ was defective in two ways:
+ 1: It ommitted required brackets:
+ z = __fast_log1p (z + z * (z / (__fast_sqrt (z * z + 1.0) + 1.0)));
+ ^ ^
+ so would still overflow for large z.
+ 2: Even with the brackets, it still degraded quickly for large z
+ (where z*z+1 == z*z).
+ e.g. asinh (sinh 356.0)) gave 355.30685281944005
+ */
- z = __fast_log1p (z + z * z / (__fast_sqrt (z * z + 1.0) + 1.0));
+ const double asinhCutover = pow(2,DBL_MAX_EXP/2); // 1.3407807929943e+154
- return ( x > 0.0 ? z : -z);
+ if (z < asinhCutover)
+ /* After excluding large values, the rearranged formula gives better results
+ the original formula log(z + sqrt(z * z + 1.0)) for very small z.
+ e.g. rearranged asinh(sinh 2e-301)) = 2e-301
+ original asinh(sinh 2e-301)) = 0.
+ asinh(z) = log (z + sqrt (z * z + 1.0))
+ = log1p (z + sqrt (z * z + 1.0) - 1.0)
+ = log1p (z + (sqrt (z * z + 1.0) - 1.0)
+ * (sqrt (z * z + 1.0) + 1.0)
+ / (sqrt (z * z + 1.0) + 1.0))
+ = log1p (z + ((z * z + 1.0) - 1.0)
+ / (sqrt (z * z + 1.0) + 1.0))
+ = log1p (z + z * z / (sqrt (z * z + 1.0) + 1.0))
+ */
+ z = __fast_log1p (z + z * (z / (__fast_sqrt (z * z + 1.0) + 1.0)));
+ else
+ /* above this, z*z+1 == z*z, so we can simplify
+ (and avoid z*z being infinity).
+ asinh(z) = log (z + sqrt (z * z + 1.0))
+ = log (z + sqrt (z * z ))
+ = log (2 * z)
+ = log 2 + log z
+ Choosing asinhCutover is a little tricky.
+ We'd like something that's based on the nature of
+ the numeric type (DBL_MAX_EXP, etc).
+ If c = asinhCutover, then we need:
+ (1) c*c == c*c + 1
+ (2) log (2*c) = log 2 + log c.
+ For float:
+ 9.490626562425156e7 is the smallest value that
+ achieves (1), but it fails (2). (It only just fails,
+ but enough to make the function erroneously non-monotonic).
+ */
+ z = __fast_log(2) + __fast_log(z);
+ return copysign(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
-
diff --git a/lib/libc/mingw/math/x86/asinhf.c b/lib/libc/mingw/math/x86/asinhf.c
index fae785abef..c3d8850547 100644
--- a/lib/libc/mingw/math/x86/asinhf.c
+++ b/lib/libc/mingw/math/x86/asinhf.c
@@ -5,6 +5,7 @@
*/
#include <math.h>
#include <errno.h>
+#include <float.h>
#include "fastmath.h"
/* asinh(x) = copysign(log(fabs(x) + sqrt(x * x + 1.0)), x) */
@@ -21,13 +22,13 @@ float asinhf(float x)
return x;
#endif
+ /* See commentary in asinh */
+ const float asinhCutover = pow(2,FLT_MAX_EXP/2);
- /* Use log1p to avoid cancellation with small x. Put
- x * x in denom, so overflow is harmless.
- asinh(x) = log1p (x + sqrt (x * x + 1.0) - 1.0)
- = log1p (x + x * x / (sqrt (x * x + 1.0) + 1.0)) */
-
- z = __fast_log1p (z + z * z / (__fast_sqrt (z * z + 1.0) + 1.0));
-
- return ( x > 0.0 ? z : -z);
+ if (z < asinhCutover)
+ z = __fast_log1p (z + z * (z / (__fast_sqrt (z * z + 1.0) + 1.0)));
+ //z = __fast_log(z + __fast_sqrt(z * z + 1.0));
+ else
+ z = __fast_log(2) + __fast_log(z);
+ return copysignf(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
diff --git a/lib/libc/mingw/math/x86/asinhl.c b/lib/libc/mingw/math/x86/asinhl.c
index bb2ca97b22..5090da814e 100644
--- a/lib/libc/mingw/math/x86/asinhl.c
+++ b/lib/libc/mingw/math/x86/asinhl.c
@@ -5,6 +5,7 @@
*/
#include <math.h>
#include <errno.h>
+#include <float.h>
#include "fastmath.h"
/* asinh(x) = copysign(log(fabs(x) + sqrt(x * x + 1.0)), x) */
@@ -22,12 +23,12 @@ long double asinhl(long double x)
return x;
#endif
- /* Use log1p to avoid cancellation with small x. Put
- x * x in denom, so overflow is harmless.
- asinh(x) = log1p (x + sqrt (x * x + 1.0) - 1.0)
- = log1p (x + x * x / (sqrt (x * x + 1.0) + 1.0)) */
+ /* See commentary in asinh */
+ const long double asinhCutover = powl(2,LDBL_MAX_EXP/2);
- z = __fast_log1pl (z + z * z / (__fast_sqrtl (z * z + 1.0L) + 1.0L));
-
- return ( x > 0.0 ? z : -z);
+ if (z < asinhCutover)
+ z = __fast_log1pl (z + z * (z / (__fast_sqrtl (z * z + 1.0) + 1.0)));
+ else
+ z = __fast_logl(2) + __fast_logl(z);
+ return copysignl(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
diff --git a/lib/libc/mingw/math/x86/atanh.c b/lib/libc/mingw/math/x86/atanh.c
index 429bfeae70..b3aa76fe91 100644
--- a/lib/libc/mingw/math/x86/atanh.c
+++ b/lib/libc/mingw/math/x86/atanh.c
@@ -32,5 +32,5 @@ double atanh(double x)
= 0.5 * log1p ((1.0 + x - 1.0 + x) /(1.0 - x))
= 0.5 * log1p ((2.0 * x ) / (1.0 - x)) */
z = 0.5 * __fast_log1p ((z + z) / (1.0 - z));
- return x >= 0 ? z : -z;
+ return copysign(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
diff --git a/lib/libc/mingw/math/x86/atanhf.c b/lib/libc/mingw/math/x86/atanhf.c
index 96d1e9b229..9adc6902de 100644
--- a/lib/libc/mingw/math/x86/atanhf.c
+++ b/lib/libc/mingw/math/x86/atanhf.c
@@ -31,5 +31,5 @@ float atanhf (float x)
= 0.5 * log1p ((1.0 + x - 1.0 + x) /(1.0 - x))
= 0.5 * log1p ((2.0 * x ) / (1.0 - x)) */
z = 0.5 * __fast_log1p ((z + z) / (1.0 - z));
- return x >= 0 ? z : -z;
+ return copysignf(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
diff --git a/lib/libc/mingw/math/x86/atanhl.c b/lib/libc/mingw/math/x86/atanhl.c
index 59eb1bd917..76897466eb 100644
--- a/lib/libc/mingw/math/x86/atanhl.c
+++ b/lib/libc/mingw/math/x86/atanhl.c
@@ -30,5 +30,5 @@ long double atanhl (long double x)
= 0.5 * log1p ((1.0 + x - 1.0 + x) /(1.0 - x))
= 0.5 * log1p ((2.0 * x ) / (1.0 - x)) */
z = 0.5L * __fast_log1pl ((z + z) / (1.0L - z));
- return x >= 0 ? z : -z;
+ return copysignl(z, x); //ensure 0.0 -> 0.0 and -0.0 -> -0.0.
}
diff --git a/lib/libc/mingw/misc/btowc.c b/lib/libc/mingw/misc/btowc.c
index 026b491d79..c8fbd8e74d 100644
--- a/lib/libc/mingw/misc/btowc.c
+++ b/lib/libc/mingw/misc/btowc.c
@@ -19,8 +19,10 @@ wint_t btowc (int c)
{
unsigned char ch = c;
wchar_t wc = WEOF;
- MultiByteToWideChar (___lc_codepage_func(), MB_ERR_INVALID_CHARS,
- (char*)&ch, 1, &wc, 1);
+ if (!MultiByteToWideChar (___lc_codepage_func(), MB_ERR_INVALID_CHARS,
+ (char*)&ch, 1, &wc, 1))
+ return WEOF;
+
return wc;
}
}
diff --git a/lib/libc/mingw/misc/lc_locale_func.c b/lib/libc/mingw/misc/lc_locale_func.c
index e6847ae8b6..8f9ccd4b14 100644
--- a/lib/libc/mingw/misc/lc_locale_func.c
+++ b/lib/libc/mingw/misc/lc_locale_func.c
@@ -2,18 +2,11 @@
#define ___lc_codepage_func __dummy____lc_codepage_func
#include <windows.h>
#include <locale.h>
-#include <msvcrt.h>
#undef __lc_codepage
#undef ___lc_codepage_func
#include "mb_wc_common.h"
-static unsigned int *msvcrt__lc_codepage;
-static unsigned int __cdecl msvcrt___lc_codepage_func(void)
-{
- return *msvcrt__lc_codepage;
-}
-
static unsigned int __cdecl setlocale_codepage_hack(void)
{
/* locale :: "lang[_country[.code_page]]" | ".code_page" */
@@ -21,14 +14,23 @@ static unsigned int __cdecl setlocale_codepage_hack(void)
return cp_str ? atoi(cp_str + 1) : 0;
}
-static unsigned int __cdecl init_codepage_func(void);
-unsigned int (__cdecl *__MINGW_IMP_SYMBOL(___lc_codepage_func))(void) = init_codepage_func;
+#ifndef __LIBMSVCRT_OS__
-unsigned int __cdecl ___lc_codepage_func (void)
+unsigned int (__cdecl *__MINGW_IMP_SYMBOL(___lc_codepage_func))(void) = setlocale_codepage_hack;
+
+#else
+
+#include <msvcrt.h>
+
+static unsigned int *msvcrt__lc_codepage;
+static unsigned int __cdecl msvcrt___lc_codepage_func(void)
{
- return __MINGW_IMP_SYMBOL(___lc_codepage_func) ();
+ return *msvcrt__lc_codepage;
}
+static unsigned int __cdecl init_codepage_func(void);
+unsigned int (__cdecl *__MINGW_IMP_SYMBOL(___lc_codepage_func))(void) = init_codepage_func;
+
static unsigned int __cdecl init_codepage_func(void)
{
HMODULE msvcrt = __mingw_get_msvcrt_handle();
@@ -48,3 +50,10 @@ static unsigned int __cdecl init_codepage_func(void)
return (__MINGW_IMP_SYMBOL(___lc_codepage_func) = func)();
}
+
+#endif
+
+unsigned int __cdecl ___lc_codepage_func(void)
+{
+ return __MINGW_IMP_SYMBOL(___lc_codepage_func)();
+}
diff --git a/lib/libc/mingw/misc/mingw_wcstod.c b/lib/libc/mingw/misc/mingw_wcstod.c
index 394c0f1c33..e35a952668 100644
--- a/lib/libc/mingw/misc/mingw_wcstod.c
+++ b/lib/libc/mingw/misc/mingw_wcstod.c
@@ -1,4 +1,7 @@
#include <stdio.h>
+#include <float.h>
+#include <errno.h>
+#include <math.h>
extern long double __cdecl
__mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr);
@@ -9,7 +12,20 @@ __mingw_wcstod (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndP
double __cdecl
__mingw_wcstod (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr)
{
- return (double) __mingw_wcstold (_Str, _EndPtr);
+ long double ret = __mingw_wcstold (_Str, _EndPtr);
+ if (isfinite(ret)) {
+ /* Check for cases that aren't out of range for long doubles, but that are
+ * for doubles. */
+ if (ret > DBL_MAX)
+ errno = ERANGE;
+ else if (ret < -DBL_MAX)
+ errno = ERANGE;
+ else if (ret > 0 && ret < DBL_MIN)
+ errno = ERANGE;
+ else if (ret < 0 && ret > -DBL_MIN)
+ errno = ERANGE;
+ }
+ return ret;
}
diff --git a/lib/libc/mingw/misc/mingw_wcstold.c b/lib/libc/mingw/misc/mingw_wcstold.c
index ce1ad5e005..2f66bee2b6 100644
--- a/lib/libc/mingw/misc/mingw_wcstold.c
+++ b/lib/libc/mingw/misc/mingw_wcstold.c
@@ -1,32 +1,74 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+/* Wide char wrapper for strtold
+ * Revision history:
+ * 6 Nov 2002 Initial version.
+ * 25 Aug 2006 Don't use strtold internal functions.
+ *
+ * Contributor: Danny Smith <dannysmith@users.sourceforege.net>
+ */
+
+ /* This routine has been placed in the public domain.*/
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
#include <windows.h>
-#include <stdio.h>
+#include <locale.h>
+#include <wchar.h>
+#include <stdlib.h>
+#include <string.h>
+#include <mbstring.h>
-long double __cdecl
-__mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr);
+#include "mb_wc_common.h"
-long double __cdecl
-__mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr)
+long double __mingw_wcstold (const wchar_t * __restrict__ wcs, wchar_t ** __restrict__ wcse)
{
- long double r;
- char *n, *ep = NULL;
- size_t l, l2;
-
- l = WideCharToMultiByte(CP_UTF8, 0, _Str, -1, NULL, 0, NULL, NULL);
- n = alloca (l + 1);
- if (l != 0) WideCharToMultiByte (CP_UTF8, 0, _Str, -1, n, l, NULL, NULL);
- n[l] = 0;
- r = __mingw_strtold (n, &ep);
- if (ep != NULL)
- {
- *ep = 0;
- l2 = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, n, -1, NULL, 0);
- if (l2 > 0)
- l2 -= 1; /* Remove zero terminator from length. */
- if (_EndPtr)
- *_EndPtr = (wchar_t *) &_Str[l2];
- }
- else if (_EndPtr)
- *_EndPtr = NULL;
- return r;
-}
+ char * cs;
+ char * cse;
+ unsigned int i;
+ long double ret;
+ const unsigned int cp = ___lc_codepage_func();
+
+ /* Allocate enough room for (possibly) mb chars */
+ cs = (char *) malloc ((wcslen(wcs)+1) * MB_CUR_MAX);
+ if (cp == 0) /* C locale */
+ {
+ for (i = 0; (wcs[i] != 0) && wcs[i] <= 255; i++)
+ cs[i] = (char) wcs[i];
+ cs[i] = '\0';
+ }
+ else
+ {
+ int nbytes = -1;
+ int mb_len = 0;
+ /* loop through till we hit null or invalid character */
+ for (i = 0; (wcs[i] != 0) && (nbytes != 0); i++)
+ {
+ nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
+ wcs + i, 1, cs + mb_len, MB_CUR_MAX,
+ NULL, NULL);
+ mb_len += nbytes;
+ }
+ cs[mb_len] = '\0';
+ }
+
+ ret = strtold (cs, &cse);
+
+ if (wcse)
+ {
+ /* Make sure temp mbstring has 0 at cse. */
+ *cse = '\0';
+ i = MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, cs, -1, NULL, 0);
+ if (i > 0)
+ i -= 1; /* Remove zero terminator from length. */
+ *wcse = (wchar_t *) wcs + i;
+ }
+ free (cs);
+
+ return ret;
+}
diff --git a/lib/libc/mingw/misc/seterrno.c b/lib/libc/mingw/misc/seterrno.c
index 952675da00..ab54c668f7 100644
--- a/lib/libc/mingw/misc/seterrno.c
+++ b/lib/libc/mingw/misc/seterrno.c
@@ -8,11 +8,17 @@
errno_t __cdecl _set_errno (int _Value)
{
errno = _Value;
- return errno;
+ return 0;
}
errno_t __cdecl _get_errno (int *_Value)
{
- if(_Value) *_Value=errno;
- return errno;
+ if(!_Value)
+ {
+ errno = EINVAL;
+ return EINVAL;
+ }
+
+ *_Value = errno;
+ return 0;
}
diff --git a/lib/libc/mingw/misc/setjmp.S b/lib/libc/mingw/misc/setjmp.S
index b2058e9e21..0c06b86320 100644
--- a/lib/libc/mingw/misc/setjmp.S
+++ b/lib/libc/mingw/misc/setjmp.S
@@ -50,6 +50,8 @@ __MINGW_USYMBOL(__intrinsic_setjmpex):
movq %r15,0x48(%rcx) /* jmp_buf->R15 */
movq (%rsp),%rax
movq %rax,0x50(%rcx) /* jmp_buf->Rip */
+ stmxcsr 0x58(%rcx) /* jmp_buf->MxCsr */
+ fnstcw 0x5c(%rcx) /* jmp_buf->FpCsr */
movdqa %xmm6,0x60(%rcx) /* jmp_buf->Xmm6 */
movdqa %xmm7,0x70(%rcx) /* jmp_buf->Xmm7 */
movdqa %xmm8,0x80(%rcx) /* jmp_buf->Xmm8 */
diff --git a/lib/libc/mingw/misc/strtold.c b/lib/libc/mingw/misc/strtold.c
deleted file mode 100644
index 2b99eba825..0000000000
--- a/lib/libc/mingw/misc/strtold.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-
-#include "math/cephes_emath.h"
-
-#if NE == 10
-/* 1.0E0 */
-static const unsigned short __eone[NE] = {
- 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff,
-};
-#else
-static const unsigned short __eone[NE] = {
- 0, 0000000,0000000,0000000,0100000,0x3fff,
-};
-#endif
-
-#if NE == 10
-static const unsigned short __etens[NTEN + 1][NE] =
-{
- {0x6576, 0x4a92, 0x804a, 0x153f,
- 0xc94c, 0x979a, 0x8a20, 0x5202, 0xc460, 0x7525,}, /* 10**4096 */
- {0x6a32, 0xce52, 0x329a, 0x28ce,
- 0xa74d, 0x5de4, 0xc53d, 0x3b5d, 0x9e8b, 0x5a92,}, /* 10**2048 */
- {0x526c, 0x50ce, 0xf18b, 0x3d28,
- 0x650d, 0x0c17, 0x8175, 0x7586, 0xc976, 0x4d48,},
- {0x9c66, 0x58f8, 0xbc50, 0x5c54,
- 0xcc65, 0x91c6, 0xa60e, 0xa0ae, 0xe319, 0x46a3,},
- {0x851e, 0xeab7, 0x98fe, 0x901b,
- 0xddbb, 0xde8d, 0x9df9, 0xebfb, 0xaa7e, 0x4351,},
- {0x0235, 0x0137, 0x36b1, 0x336c,
- 0xc66f, 0x8cdf, 0x80e9, 0x47c9, 0x93ba, 0x41a8,},
- {0x50f8, 0x25fb, 0xc76b, 0x6b71,
- 0x3cbf, 0xa6d5, 0xffcf, 0x1f49, 0xc278, 0x40d3,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0xf020, 0xb59d, 0x2b70, 0xada8, 0x9dc5, 0x4069,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0400, 0xc9bf, 0x8e1b, 0x4034,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2000, 0xbebc, 0x4019,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x9c40, 0x400c,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0xc800, 0x4005,},
- {0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0x4002,}, /* 10**1 */
-};
-#else
-static const unsigned short __etens[NTEN+1][NE] = {
- {0xc94c,0x979a,0x8a20,0x5202,0xc460,0x7525,},/* 10**4096 */
- {0xa74d,0x5de4,0xc53d,0x3b5d,0x9e8b,0x5a92,},/* 10**2048 */
- {0x650d,0x0c17,0x8175,0x7586,0xc976,0x4d48,},
- {0xcc65,0x91c6,0xa60e,0xa0ae,0xe319,0x46a3,},
- {0xddbc,0xde8d,0x9df9,0xebfb,0xaa7e,0x4351,},
- {0xc66f,0x8cdf,0x80e9,0x47c9,0x93ba,0x41a8,},
- {0x3cbf,0xa6d5,0xffcf,0x1f49,0xc278,0x40d3,},
- {0xf020,0xb59d,0x2b70,0xada8,0x9dc5,0x4069,},
- {0x0000,0x0000,0x0400,0xc9bf,0x8e1b,0x4034,},
- {0x0000,0x0000,0x0000,0x2000,0xbebc,0x4019,},
- {0x0000,0x0000,0x0000,0x0000,0x9c40,0x400c,},
- {0x0000,0x0000,0x0000,0x0000,0xc800,0x4005,},
- {0x0000,0x0000,0x0000,0x0000,0xa000,0x4002,}, /* 10**1 */
-};
-#endif
-
-int __asctoe64(const char * __restrict__ ss, short unsigned int * __restrict__ y)
-{
- unsigned short yy[NI], xt[NI], tt[NI];
- int esign, decflg, nexp, expo, lost;
- int k, c;
- int valid_lead_string = 0;
- int have_non_zero_mant = 0;
- int prec = 0;
- /* int trail = 0; */
- int lexp;
- unsigned short nsign = 0;
- const unsigned short *p;
- char *sp, *lstr;
- char *s;
-
- const char dec_sym = *(localeconv ()->decimal_point);
-
- int lenldstr = 0;
-
- /* Copy the input string. */
- c = strlen (ss) + 2;
- lstr = (char *) alloca (c);
- s = (char *) ss;
- while( isspace ((int)(unsigned char)*s)) /* skip leading spaces */
- {
- ++s;
- ++lenldstr;
- }
- sp = lstr;
- for (k = 0; k < c; k++)
- {
- if ((*sp++ = *s++) == '\0')
- break;
- }
- *sp = '\0';
- s = lstr;
-
- if (*s == '-')
- {
- nsign = 0xffff;
- ++s;
- }
- else if (*s == '+')
- {
- ++s;
- }
-
- if (_strnicmp("INF", s , 3) == 0)
- {
- valid_lead_string = 1;
- s += 3;
- if ( _strnicmp ("INITY", s, 5) == 0)
- s += 5;
- __ecleaz(yy);
- yy[E] = 0x7fff; /* infinity */
- goto aexit;
- }
- else if(_strnicmp ("NAN", s, 3) == 0)
- {
- valid_lead_string = 1;
- s += 3;
- __enan_NI16( yy );
- goto aexit;
- }
-
- /* FIXME: Handle case of strtold ("NAN(n_char_seq)",endptr) */
-
- /* Now get some digits. */
- lost = 0;
- decflg = 0;
- nexp = 0;
- expo = 0;
- __ecleaz( yy );
-
- /* Ignore leading zeros */
- while (*s == '0')
- {
- valid_lead_string = 1;
- s++;
- }
-
-nxtcom:
-
- k = *s - '0';
- if ((k >= 0) && (k <= 9))
- {
-#if 0
-/* The use of a special char as a flag for trailing zeroes causes problems when input
- actually contains the char */
-/* Identify and strip trailing zeros after the decimal point. */
- if ((trail == 0) && (decflg != 0))
- {
- sp = s;
- while ((*sp >= '0') && (*sp <= '9'))
- ++sp;
- --sp;
- while (*sp == '0')
- {
- *sp-- = (char)-1;
- trail++;
- }
- if( *s == (char)-1 )
- goto donchr;
- }
-#endif
-
-/* If enough digits were given to more than fill up the yy register,
- * continuing until overflow into the high guard word yy[2]
- * guarantees that there will be a roundoff bit at the top
- * of the low guard word after normalization.
- */
- if (yy[2] == 0)
- {
- if( decflg )
- nexp += 1; /* count digits after decimal point */
- __eshup1( yy ); /* multiply current number by 10 */
- __emovz( yy, xt );
- __eshup1( xt );
- __eshup1( xt );
- __eaddm( xt, yy );
- __ecleaz( xt );
- xt[NI-2] = (unsigned short )k;
- __eaddm( xt, yy );
- }
- else
- {
- /* Mark any lost non-zero digit. */
- lost |= k;
- /* Count lost digits before the decimal point. */
- if (decflg == 0)
- nexp -= 1;
- }
- have_non_zero_mant |= k;
- prec ++;
- /* goto donchr; */
- }
- else if (*s == dec_sym)
- {
- if( decflg )
- goto daldone;
- ++decflg;
- }
- else if ((*s == 'E') || (*s == 'e') )
- {
- if (prec || valid_lead_string)
- goto expnt;
- else
- goto daldone;
- }
-#if 0
- else if (*s == (char)-1)
- goto donchr;
-#endif
- else /* an invalid char */
- goto daldone;
-
- /* donchr: */
- ++s;
- goto nxtcom;
-
-/* Exponent interpretation */
-expnt:
-
- esign = 1;
- expo = 0;
- /* Save position in case we need to fall back. */
- sp = s;
- ++s;
- /* check for + or - */
- if (*s == '-')
- {
- esign = -1;
- ++s;
- }
- if (*s == '+')
- ++s;
-
- /* Check for valid exponent. */
- if (!(*s >= '0' && *s <= '9'))
- {
- s = sp;
- goto daldone;
- }
-
- while ((*s >= '0') && (*s <= '9'))
- {
- /* Stop modifying exp if we are going to overflow anyway,
- but keep parsing the string. */
- if (expo < 4978)
- {
- expo *= 10;
- expo += *s - '0';
- }
- s++;
- }
-
- if (esign < 0)
- expo = -expo;
-
- if (expo > 4977) /* maybe overflow */
- {
- __ecleaz(yy);
- if (have_non_zero_mant)
- yy[E] = 0x7fff;
- goto aexit;
- }
- else if (expo < -4977) /* underflow */
- {
- __ecleaz(yy);
- goto aexit;
- }
-
-daldone:
-
- nexp = expo - nexp;
-
- /* Pad trailing zeros to minimize power of 10, per IEEE spec. */
- while ((nexp > 0) && (yy[2] == 0))
- {
- __emovz( yy, xt );
- __eshup1( xt );
- __eshup1( xt );
- __eaddm( yy, xt );
- __eshup1( xt );
- if (xt[2] != 0)
- break;
- nexp -= 1;
- __emovz( xt, yy );
- }
- if ((k = __enormlz(yy)) > NBITS)
- {
- __ecleaz(yy);
- goto aexit;
- }
- lexp = (EXONE - 1 + NBITS) - k;
- __emdnorm( yy, lost, 0, lexp, 64, NBITS );
- /* convert to external format */
-
- /* Multiply by 10**nexp. If precision is 64 bits,
- * the maximum relative error incurred in forming 10**n
- * for 0 <= n <= 324 is 8.2e-20, at 10**180.
- * For 0 <= n <= 999, the peak relative error is 1.4e-19 at 10**947.
- * For 0 >= n >= -999, it is -1.55e-19 at 10**-435.
- */
- lexp = yy[E];
- if (nexp == 0)
- {
- k = 0;
- goto expdon;
- }
- esign = 1;
- if (nexp < 0)
- {
- nexp = -nexp;
- esign = -1;
- if (nexp > 4096)
- { /* Punt. Can't handle this without 2 divides. */
- __emovi( __etens[0], tt );
- lexp -= tt[E];
- k = __edivm( tt, yy );
- lexp += EXONE;
- nexp -= 4096;
- }
- }
- p = &__etens[NTEN][0];
- __emov( __eone, xt );
- expo = 1;
- do
- {
- if (expo & nexp)
- __emul( p, xt, xt );
- p -= NE;
- expo = expo + expo;
- }
- while (expo <= MAXP);
-
- __emovi( xt, tt );
- if (esign < 0)
- {
- lexp -= tt[E];
- k = __edivm( tt, yy );
- lexp += EXONE;
- }
- else
- {
- lexp += tt[E];
- k = __emulm( tt, yy );
- lexp -= EXONE - 1;
- }
-
-expdon:
-
- /* Round and convert directly to the destination type */
-
- __emdnorm( yy, k, 0, lexp, 64, 64 );
-
-aexit:
-
- yy[0] = nsign;
-
- __toe64( yy, y );
-
- /* Check for overflow, undeflow */
- if (have_non_zero_mant &&
- (*((long double*) y) == 0.0L || isinf (*((long double*) y))))
- errno = ERANGE;
-
- if (prec || valid_lead_string)
- return (lenldstr + (s - lstr));
-
- return 0;
-}
-
-
-long double strtold (const char * __restrict__ s, char ** __restrict__ se)
-{
- int lenldstr;
- union
- {
- unsigned short int us[6];
- long double ld;
- } xx = {{0}};
-
- lenldstr = __asctoe64( s, xx.us);
- if (se)
- *se = (char*)s + lenldstr;
-
- return xx.ld;
-}
-
diff --git a/lib/libc/mingw/misc/wcstold.c b/lib/libc/mingw/misc/wcstold.c
index 0137b20a34..12714ba19a 100644
--- a/lib/libc/mingw/misc/wcstold.c
+++ b/lib/libc/mingw/misc/wcstold.c
@@ -3,72 +3,10 @@
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
-/* Wide char wrapper for strtold
- * Revision history:
- * 6 Nov 2002 Initial version.
- * 25 Aug 2006 Don't use strtold internal functions.
- *
- * Contributor: Danny Smith <dannysmith@users.sourceforege.net>
- */
-
- /* This routine has been placed in the public domain.*/
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#include <locale.h>
-#include <wchar.h>
#include <stdlib.h>
-#include <string.h>
-#include <mbstring.h>
-
-#include "mb_wc_common.h"
long double wcstold (const wchar_t * __restrict__ wcs, wchar_t ** __restrict__ wcse)
{
- char * cs;
- char * cse;
- unsigned int i;
- long double ret;
- const unsigned int cp = ___lc_codepage_func();
-
- /* Allocate enough room for (possibly) mb chars */
- cs = (char *) malloc ((wcslen(wcs)+1) * MB_CUR_MAX);
-
- if (cp == 0) /* C locale */
- {
- for (i = 0; (wcs[i] != 0) && wcs[i] <= 255; i++)
- cs[i] = (char) wcs[i];
- cs[i] = '\0';
- }
- else
- {
- int nbytes = -1;
- int mb_len = 0;
- /* loop through till we hit null or invalid character */
- for (i = 0; (wcs[i] != 0) && (nbytes != 0); i++)
- {
- nbytes = WideCharToMultiByte(cp, WC_COMPOSITECHECK | WC_SEPCHARS,
- wcs + i, 1, cs + mb_len, MB_CUR_MAX,
- NULL, NULL);
- mb_len += nbytes;
- }
- cs[mb_len] = '\0';
- }
-
- ret = strtold (cs, &cse);
-
- if (wcse)
- {
- /* Make sure temp mbstring has 0 at cse. */
- *cse = '\0';
- i = MultiByteToWideChar (cp, MB_ERR_INVALID_CHARS, cs, -1, NULL, 0);
- if (i > 0)
- i -= 1; /* Remove zero terminator from length. */
- *wcse = (wchar_t *) wcs + i;
- }
- free (cs);
-
- return ret;
+ return __mingw_wcstold(wcs, wcse);
}
diff --git a/lib/libc/mingw/secapi/vsprintf_s.c b/lib/libc/mingw/secapi/vsprintf_s.c
index fd0c4ef13b..45dfb14b11 100644
--- a/lib/libc/mingw/secapi/vsprintf_s.c
+++ b/lib/libc/mingw/secapi/vsprintf_s.c
@@ -33,13 +33,8 @@ vsprintf_s (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
return _stub (_DstBuf, _Size, _Format, _ArgList);
}
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wimplicit-function-declaration"
-
static int __cdecl
_int_vsprintf_s (char *_DstBuf, size_t _Size, const char *_Format, va_list _ArgList)
{
return __ms_vsnprintf (_DstBuf, _Size, _Format, _ArgList);
}
-
-#pragma clang diagnostic pop
diff --git a/lib/libc/mingw/stdio/mingw_pformat.c b/lib/libc/mingw/stdio/mingw_pformat.c
index a68d0f67a5..d9f5de7cef 100644
--- a/lib/libc/mingw/stdio/mingw_pformat.c
+++ b/lib/libc/mingw/stdio/mingw_pformat.c
@@ -212,7 +212,7 @@ typedef enum
PFORMAT_SET_PRECISION,
PFORMAT_END
} __pformat_state_t;
-
+
typedef enum
{
/* Argument length classification indices...
@@ -289,8 +289,8 @@ typedef struct
int precision;
int rplen;
wchar_t rpchr;
- int thousands_chr_len;
- wchar_t thousands_chr;
+ int thousands_chr_len;
+ wchar_t thousands_chr;
int count;
int quota;
int expmin;
@@ -787,7 +787,7 @@ while( value.__pformat_ullong_t )
{
/* decomposing it into its constituent decimal digits,
* in order from least significant to most significant, using
- * the local buffer as a LIFO queue in which to store them.
+ * the local buffer as a LIFO queue in which to store them.
*/
if (p != buf && (stream->flags & PFORMAT_GROUPED) != 0 && stream->thousands_chr != 0
&& ((p - buf) % 4) == 3)
@@ -833,7 +833,7 @@ while( value.__pformat_ullong_t )
* to the left of the displayed value, with zeros.
*/
while( stream->width-- > 0 )
- *p++ = '0';
+ *p++ = '0';
else if( (stream->flags & PFORMAT_LJUSTIFY) == 0 )
/*
@@ -842,7 +842,7 @@ while( value.__pformat_ullong_t )
* the value appears right justified within the output field.
*/
while( stream->width-- > 0 )
- __pformat_putc( '\x20', stream );
+ __pformat_putc( '\x20', stream );
}
if( stream->flags & PFORMAT_NEGATIVE )
@@ -943,7 +943,7 @@ void __pformat_xint( int fmt, __pformat_intarg_t value, __pformat_t *stream )
*/
while( width-- > 0 )
*p++ = '0';
-
+
else if( (fmt == 'o') && (stream->flags & PFORMAT_HASHED) )
/*
* The field width specified for minimum `precision' has already
@@ -1048,38 +1048,57 @@ typedef union
*/
#include "../gdtoa/gdtoa.h"
-static
-char *__pformat_cvt( int mode, __pformat_fpreg_t x, int nd, int *dp, int *sign )
+static __pformat_fpreg_t init_fpreg_ldouble( long double val )
{
- /* Helper function, derived from David M. Gay's `g_xfmt()', calling
- * his `__gdtoa()' function in a manner to provide extended precision
- * replacements for `ecvt()' and `fcvt()'.
- */
- int k; unsigned int e = 0; char *ep;
- static FPI fpi = { 64, 1-16383-64+1, 32766-16383-64+1, FPI_Round_near, 0, 14 /* Int_max */ };
-
+ __pformat_fpreg_t x;
+ x.__pformat_fpreg_ldouble_t = val;
+
if( sizeof( double ) == sizeof( long double ) )
{
- /* The caller has written into x.__pformat_fpreg_ldouble_t, which
- * actually isn't laid out in the way the rest of the union expects it.
+ /* Here, __pformat_fpreg_t expects to be initialized with a 80 bit long
+ * double, but this platform doesn't have long doubles that differ from
+ * regular 64 bit doubles. Therefore manually convert the 64 bit float
+ * value to an 80 bit float value.
*/
int exp = (x.__pformat_fpreg_mantissa >> 52) & 0x7ff;
unsigned long long mant = x.__pformat_fpreg_mantissa & 0x000fffffffffffffULL;
- int integer = exp ? 1 : 0;
+ int topbit = exp ? 1 : 0;
int signbit = x.__pformat_fpreg_mantissa >> 63;
- k = __fpclassify( x.__pformat_fpreg_double_t );
-
if (exp == 0x7ff)
exp = 0x7fff;
else if (exp != 0)
exp = exp - 1023 + 16383;
- x.__pformat_fpreg_mantissa = (mant << 11) | ((unsigned long long)integer << 63);
+ else if (mant != 0) {
+ /* Denormal when stored as a 64 bit double, but becomes a normal when
+ * converted to 80 bit long double form. */
+ exp = 1 - 1023 + 16383;
+ while (!(mant & 0x0010000000000000ULL)) {
+ /* Normalize the mantissa. */
+ mant <<= 1;
+ exp--;
+ }
+ topbit = 1; /* The top bit, which is implicit in the 64 bit form. */
+ }
+ x.__pformat_fpreg_mantissa = (mant << 11) | ((unsigned long long)topbit << 63);
x.__pformat_fpreg_exponent = exp | (signbit << 15);
}
- else
- k = __fpclassifyl( x.__pformat_fpreg_ldouble_t );
+ return x;
+}
+
+static
+char *__pformat_cvt( int mode, long double val, int nd, int *dp, int *sign )
+{
+ /* Helper function, derived from David M. Gay's `g_xfmt()', calling
+ * his `__gdtoa()' function in a manner to provide extended precision
+ * replacements for `ecvt()' and `fcvt()'.
+ */
+ int k; unsigned int e = 0; char *ep;
+ static FPI fpi = { 64, 1-16383-64+1, 32766-16383-64+1, FPI_Round_near, 0, 14 /* Int_max */ };
+ __pformat_fpreg_t x = init_fpreg_ldouble( val );
+
+ k = __fpclassifyl( val );
/* Classify the argument into an appropriate `__gdtoa()' category...
*/
@@ -1130,8 +1149,7 @@ char *__pformat_ecvt( long double x, int precision, int *dp, int *sign )
/* A convenience wrapper for the above...
* it emulates `ecvt()', but takes a `long double' argument.
*/
- __pformat_fpreg_t z; z.__pformat_fpreg_ldouble_t = x;
- return __pformat_cvt( 2, z, precision, dp, sign );
+ return __pformat_cvt( 2, x, precision, dp, sign );
}
static
@@ -1140,8 +1158,7 @@ char *__pformat_fcvt( long double x, int precision, int *dp, int *sign )
/* A convenience wrapper for the above...
* it emulates `fcvt()', but takes a `long double' argument.
*/
- __pformat_fpreg_t z; z.__pformat_fpreg_ldouble_t = x;
- return __pformat_cvt( 3, z, precision, dp, sign );
+ return __pformat_cvt( 3, x, precision, dp, sign );
}
/* The following are required, to clean up the `__gdtoa()' memory pool,
@@ -1218,7 +1235,7 @@ void __pformat_emit_radix_point( __pformat_t *stream )
* establish a multibyte to `wchar_t' converter...
*/
int len; wchar_t rpchr; mbstate_t state;
-
+
/* Initialise the conversion state...
*/
memset( &state, 0, sizeof( state ) );
@@ -1259,7 +1276,7 @@ void __pformat_emit_radix_point( __pformat_t *stream )
*/
char *p = buf;
while( len-- > 0 )
- __pformat_putc( *p++, stream );
+ __pformat_putc( *p++, stream );
}
else
@@ -1290,7 +1307,7 @@ void __pformat_emit_numeric_value( int c, __pformat_t *stream )
{
wchar_t wcs;
if ((wcs = stream->thousands_chr) != 0)
- __pformat_wputchars (&wcs, 1, stream);
+ __pformat_wputchars (&wcs, 1, stream);
}
else
/* and passing all other characters through, unmodified.
@@ -1468,8 +1485,8 @@ void __pformat_emit_float( int sign, char *value, int len, __pformat_t *stream )
__pformat_putc( *value ? *value++ : '0', stream);
--len;
if (len != 0 && (stream->flags & PFORMAT_GROUPED) != 0 && stream->thousands_chr != 0
- && (len % 3) == 0)
- __pformat_wputchars (&stream->thousands_chr, 1, stream);
+ && (len % 3) == 0)
+ __pformat_wputchars (&stream->thousands_chr, 1, stream);
}
while (len > 0);
}
@@ -1539,7 +1556,7 @@ void __pformat_emit_efloat( int sign, char *value, int e, __pformat_t *stream )
*/
if( stream->width > (exp_width += 2) )
stream->width -= exp_width;
-
+
else
/* ignoring the field width specification, if insufficient.
*/
@@ -1587,7 +1604,7 @@ void __pformat_float( long double x, __pformat_t *stream )
* output in fixed point format.
*/
int sign, intlen; char *value;
-
+
/* Establish the precision for the displayed value, defaulting to six
* digits following the decimal point, if not explicitly specified.
*/
@@ -1847,7 +1864,7 @@ void __pformat_efloat( long double x, __pformat_t *stream )
* output in floating point format.
*/
int sign, intlen; char *value;
-
+
/* Establish the precision for the displayed value, defaulting to six
* digits following the decimal point, if not explicitly specified.
*/
@@ -1885,7 +1902,7 @@ void __pformat_gfloat( long double x, __pformat_t *stream )
* fixed or floating point format.
*/
int sign, intlen; char *value;
-
+
/* Establish the precision for the displayed value, defaulting to
* six significant digits, if not explicitly specified...
*/
@@ -1923,7 +1940,7 @@ void __pformat_gfloat( long double x, __pformat_t *stream )
* the balance following it...
*/
stream->precision -= intlen;
-
+
else
/* The `#' flag is not in effect...
* Here we adjust the precision to accommodate all digits which
@@ -1932,12 +1949,12 @@ void __pformat_gfloat( long double x, __pformat_t *stream )
*/
if( ((stream->precision = strlen( value ) - intlen) < 0)
/*
- * This may require a compensating adjustment to the field
- * width, to accommodate significant trailing zeros, which
- * precede the radix point...
- */
+ * This may require a compensating adjustment to the field
+ * width, to accommodate significant trailing zeros, which
+ * precede the radix point...
+ */
&& (stream->width > 0) )
- stream->width += stream->precision;
+ stream->width += stream->precision;
/* Now, we format the result as any other fixed point value.
*/
@@ -1996,6 +2013,17 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
char buf[18 + 6], *p = buf;
__pformat_intarg_t exponent; short exp_width = 2;
+ if (value.__pformat_fpreg_mantissa != 0 ||
+ value.__pformat_fpreg_exponent != 0)
+ {
+ /* Reduce the exponent since the leading digit emited will start at
+ * the 4th bit from the highest order bit instead, the later being
+ * the leading digit of the floating point. Don't do this adjustment
+ * if the value is an actual zero.
+ */
+ value.__pformat_fpreg_exponent -= 3;
+ }
+
/* The mantissa field of the argument value representation can
* accommodate at most 16 hexadecimal digits, of which one will
* be placed before the radix point, leaving at most 15 digits
@@ -2010,15 +2038,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
* for exactly one digit discarded, shifting 4 bits per
* digit, with up to 14 additional digits, to consume the
* full availability of 15 precision digits).
- *
- * However, before we perform the rounding operation, we
- * normalise the mantissa, shifting it to the left by as many
- * bit positions may be necessary, until its highest order bit
- * is set, thus preserving the maximum number of bits in the
- * rounded result as possible.
- */
- while( value.__pformat_fpreg_mantissa < (LLONG_MAX + 1ULL) )
- value.__pformat_fpreg_mantissa <<= 1;
+ */
/* We then shift the mantissa one bit position back to the
* right, to guard against possible overflow when the rounding
@@ -2041,11 +2061,15 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
value.__pformat_fpreg_mantissa <<= 1;
else
+ {
/* Otherwise the rounding adjustment would have overflowed,
* so the carry has already filled the vacated bit; the effect
- * of this is equivalent to an increment of the exponent.
+ * of this is equivalent to an increment of the exponent. We will
+ * discard a whole digit to match glibc's behavior.
*/
- value.__pformat_fpreg_exponent++;
+ value.__pformat_fpreg_exponent += 4;
+ value.__pformat_fpreg_mantissa >>= 3;
+ }
/* We now complete the rounding to the required precision, by
* shifting the unwanted digits out, from the right hand end of
@@ -2054,71 +2078,63 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
value.__pformat_fpreg_mantissa >>= 4 * (15 - stream->precision);
}
- /* Encode the significant digits of the mantissa in hexadecimal
- * ASCII notation, ready for transfer to the output stream...
+ /* Don't print anything if mantissa is zero unless we have to satisfy
+ * desired precision.
*/
- while( value.__pformat_fpreg_mantissa )
+ if( value.__pformat_fpreg_mantissa || stream->precision > 0 )
{
- /* taking the rightmost digit in each pass...
+ /* Encode the significant digits of the mantissa in hexadecimal
+ * ASCII notation, ready for transfer to the output stream...
*/
- unsigned c = value.__pformat_fpreg_mantissa & 0xF;
- if( c == value.__pformat_fpreg_mantissa)
+ for( int i=stream->precision >= 15 || stream->precision < 0 ? 16 : stream->precision + 1; i>0; --i )
{
- /* inserting the radix point, when we reach the last,
- * (i.e. the most significant digit), unless we found no
- * less significant digits, with no mandatory radix point
- * inclusion, and no additional required precision...
+ /* taking the rightmost digit in each pass...
*/
- if( (p > buf)
- || (stream->flags & PFORMAT_HASHED) || (stream->precision > 0) )
+ unsigned c = value.__pformat_fpreg_mantissa & 0xF;
+ if( i == 1 )
{
- /*
- * Internally, we represent the radix point as an ASCII '.';
- * we will replace it with any locale specific alternative,
- * at the time of transfer to the ultimate destination.
- */
- *p++ = '.';
+ /* inserting the radix point, when we reach the last,
+ * (i.e. the most significant digit), unless we found no
+ * less significant digits, with no mandatory radix point
+ * inclusion, and no additional required precision...
+ */
+ if( (p > buf)
+ || (stream->flags & PFORMAT_HASHED) || (stream->precision > 0) )
+ {
+ /*
+ * Internally, we represent the radix point as an ASCII '.';
+ * we will replace it with any locale specific alternative,
+ * at the time of transfer to the ultimate destination.
+ */
+ *p++ = '.';
+ }
}
- /* If the most significant hexadecimal digit of the encoded
- * output value is greater than one, then the indicated value
- * will appear too large, by an additional binary exponent
- * corresponding to the number of higher order bit positions
- * which it occupies...
- */
- while( value.__pformat_fpreg_mantissa > 1 )
+ else if( stream->precision > 0 )
+ /*
+ * we have not yet fulfilled the desired precision,
+ * and we have not yet found the most significant digit,
+ * so account for the current digit, within the field
+ * width required to meet the specified precision.
+ */
+ stream->precision--;
+
+ if( (c > 0) || (p > buf) || (stream->precision >= 0) )
{
- /* so reduce the exponent value to compensate...
- */
- value.__pformat_fpreg_exponent--;
- value.__pformat_fpreg_mantissa >>= 1;
+ /*
+ * Ignoring insignificant trailing zeros, (unless required to
+ * satisfy specified precision), store the current encoded digit
+ * into the pending output buffer, in LIFO order, and using the
+ * appropriate case for digits in the `A'..`F' range.
+ */
+ *p++ = c > 9 ? (c - 10 + 'A') | (stream->flags & PFORMAT_XCASE) : c + '0';
}
- }
-
- else if( stream->precision > 0 )
- /*
- * we have not yet fulfilled the desired precision,
- * and we have not yet found the most significant digit,
- * so account for the current digit, within the field
- * width required to meet the specified precision.
- */
- stream->precision--;
-
- if( (c > 0) || (p > buf) || (stream->precision >= 0) )
- {
- /*
- * Ignoring insignificant trailing zeros, (unless required to
- * satisfy specified precision), store the current encoded digit
- * into the pending output buffer, in LIFO order, and using the
- * appropriate case for digits in the `A'..`F' range.
+ /* Shift out the current digit, (4-bit logical shift right),
+ * to align the next more significant digit to be extracted,
+ * and encoded in the next pass.
*/
- *p++ = c > 9 ? (c - 10 + 'A') | (stream->flags & PFORMAT_XCASE) : c + '0';
+ value.__pformat_fpreg_mantissa >>= 4;
}
- /* Shift out the current digit, (4-bit logical shift right),
- * to align the next more significant digit to be extracted,
- * and encoded in the next pass.
- */
- value.__pformat_fpreg_mantissa >>= 4;
}
if( p == buf )
@@ -2169,7 +2185,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
min_width++;
exp_width++;
}
-
+
if( stream->width > min_width )
{
/* When specified field width exceeds the minimum required,
@@ -2180,8 +2196,8 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
/* and then emit any required left side padding spaces.
*/
if( (stream->flags & PFORMAT_JUSTIFY) == 0 )
- while( stream->width-- > 0 )
- __pformat_putc( '\x20', stream );
+ while( stream->width-- > 0 )
+ __pformat_putc( '\x20', stream );
}
else
@@ -2215,7 +2231,7 @@ void __pformat_emit_xfloat( __pformat_fpreg_t value, __pformat_t *stream )
*/
__pformat_putc( '0', stream );
__pformat_putc( 'X' | (stream->flags & PFORMAT_XCASE), stream );
-
+
/* If the `0' flag is in effect...
* Zero padding, to fill out the field, goes here...
*/
@@ -2259,7 +2275,69 @@ void __pformat_xldouble( long double x, __pformat_t *stream )
* value specified as `long double' type).
*/
unsigned sign_bit = 0;
- __pformat_fpreg_t z; z.__pformat_fpreg_ldouble_t = x;
+ __pformat_fpreg_t z = init_fpreg_ldouble( x );
+
+ /* First check for NaN; it is emitted unsigned...
+ */
+ if( isnan( x ) )
+ __pformat_emit_inf_or_nan( sign_bit, "NaN", stream );
+
+ else
+ { /* Capture the sign bit up-front, so we can show it correctly
+ * even when the argument value is zero or infinite.
+ */
+ if( (sign_bit = (z.__pformat_fpreg_exponent & 0x8000)) != 0 )
+ stream->flags |= PFORMAT_NEGATIVE;
+
+ /* Check for infinity, (positive or negative)...
+ */
+ if( isinf( x ) )
+ /*
+ * displaying the appropriately signed indicator,
+ * when appropriate.
+ */
+ __pformat_emit_inf_or_nan( sign_bit, "Inf", stream );
+
+ else
+ { /* The argument value is a representable number...
+ * extract the effective value of the biased exponent...
+ */
+ z.__pformat_fpreg_exponent &= 0x7FFF;
+ if( z.__pformat_fpreg_exponent == 0 )
+ {
+ /* A biased exponent value of zero means either a
+ * true zero value, if the mantissa field also has
+ * a zero value, otherwise...
+ */
+ if( z.__pformat_fpreg_mantissa != 0 )
+ {
+ /* ...this mantissa represents a subnormal value.
+ */
+ z.__pformat_fpreg_exponent = 1 - 0x3FFF;
+ }
+ }
+ else
+ /* This argument represents a non-zero normal number;
+ * eliminate the bias from the exponent...
+ */
+ z.__pformat_fpreg_exponent -= 0x3FFF;
+
+ /* Finally, hand the adjusted representation off to the
+ * generalised hexadecimal floating point format handler...
+ */
+ __pformat_emit_xfloat( z, stream );
+ }
+ }
+}
+
+static
+void __pformat_xdouble( double x, __pformat_t *stream )
+{
+ /* Handler for `%la' and `%lA' format specifiers, (with argument
+ * value specified as `double' type).
+ */
+ unsigned sign_bit = 0;
+ __pformat_fpreg_t z = init_fpreg_ldouble( (long double)x );
/* First check for NaN; it is emitted unsigned...
*/
@@ -2287,31 +2365,40 @@ void __pformat_xldouble( long double x, __pformat_t *stream )
* extract the effective value of the biased exponent...
*/
z.__pformat_fpreg_exponent &= 0x7FFF;
+
+ /* If the double value was a denormalized number, it might have been renormalized by
+ * the conversion to long double. We will redenormalize it.
+ */
+ if( z.__pformat_fpreg_exponent != 0 && z.__pformat_fpreg_exponent <= (0x3FFF - 0x3FF) )
+ {
+ int shifted = (0x3FFF - 0x3FF) - z.__pformat_fpreg_exponent + 1;
+ z.__pformat_fpreg_mantissa >>= shifted;
+ z.__pformat_fpreg_exponent += shifted;
+ }
+
if( z.__pformat_fpreg_exponent == 0 )
{
- /* A biased exponent value of zero means either a
- * true zero value, if the mantissa field also has
- * a zero value, otherwise...
- */
- if( z.__pformat_fpreg_mantissa != 0 )
- {
- /* ...this mantissa represents a subnormal value;
- * adjust the exponent, while shifting the mantissa
- * to the left, until its leading bit is 1.
- */
- z.__pformat_fpreg_exponent = 1-0x3FFF;
- while( (z.__pformat_fpreg_mantissa & (LLONG_MAX + 1ULL)) == 0 )
- {
- z.__pformat_fpreg_mantissa <<= 1;
- --z.__pformat_fpreg_exponent;
- }
- }
+ /* A biased exponent value of zero means either a
+ * true zero value, if the mantissa field also has
+ * a zero value, otherwise...
+ */
+ if( z.__pformat_fpreg_mantissa != 0 )
+ {
+ /* ...this mantissa represents a subnormal value.
+ */
+ z.__pformat_fpreg_exponent = 1 - 0x3FF + 3;
+ }
}
else
- /* This argument represents a non-zero normal number;
- * eliminate the bias from the exponent...
- */
- z.__pformat_fpreg_exponent -= 0x3FFF;
+ /* This argument represents a non-zero normal number;
+ * eliminate the bias from the exponent...
+ */
+ z.__pformat_fpreg_exponent -= 0x3FFF - 3;
+
+ /* Shift the mantissa so the leading 4 bits digit is 0 or 1.
+ * The exponent was also adjusted by 3 previously.
+ */
+ z.__pformat_fpreg_mantissa >>= 3;
/* Finally, hand the adjusted representation off to the
* generalised hexadecimal floating point format handler...
@@ -2332,17 +2419,17 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv)
/* Create and initialise a format control block
* for this output request.
*/
- dest, /* output goes to here */
- flags &= PFORMAT_TO_FILE | PFORMAT_NOLIMIT, /* only these valid initially */
- PFORMAT_IGNORE, /* no field width yet */
- PFORMAT_IGNORE, /* nor any precision spec */
- PFORMAT_RPINIT, /* radix point uninitialised */
- (wchar_t)(0), /* leave it unspecified */
+ dest, /* output goes to here */
+ flags &= PFORMAT_TO_FILE | PFORMAT_NOLIMIT, /* only these valid initially */
+ PFORMAT_IGNORE, /* no field width yet */
+ PFORMAT_IGNORE, /* nor any precision spec */
+ PFORMAT_RPINIT, /* radix point uninitialised */
+ (wchar_t)(0), /* leave it unspecified */
0,
- (wchar_t)(0), /* leave it unspecified */
- 0, /* zero output char count */
- max, /* establish output limit */
- -1 /* exponent chars preferred;
+ (wchar_t)(0), /* leave it unspecified */
+ 0, /* zero output char count */
+ max, /* establish output limit */
+ -1 /* exponent chars preferred;
-1 means to be determined. */
};
@@ -2390,793 +2477,794 @@ __pformat (int flags, void *dest, int max, const APICHAR *fmt, va_list argv)
while( *fmt )
{
- switch( c = *fmt++ )
- {
- /* Data type specifiers...
- * All are terminal, so exit the conversion spec parsing loop
- * with a `goto format_scan', thus resuming at the outer level
- * in the regular format string parser.
- */
- case '%':
- /*
- * Not strictly a data type specifier...
- * it simply converts as a literal `%' character.
- *
- * FIXME: should we require this to IMMEDIATELY follow the
- * initial `%' of the "conversion spec"? (glibc `printf()'
- * on GNU/Linux does NOT appear to require this, but POSIX
- * and SUSv3 do seem to demand it).
- */
+ switch( c = *fmt++ )
+ {
+ /* Data type specifiers...
+ * All are terminal, so exit the conversion spec parsing loop
+ * with a `goto format_scan', thus resuming at the outer level
+ * in the regular format string parser.
+ */
+ case '%':
+ /*
+ * Not strictly a data type specifier...
+ * it simply converts as a literal `%' character.
+ *
+ * FIXME: should we require this to IMMEDIATELY follow the
+ * initial `%' of the "conversion spec"? (glibc `printf()'
+ * on GNU/Linux does NOT appear to require this, but POSIX
+ * and SUSv3 do seem to demand it).
+ */
#ifndef __BUILD_WIDEAPI
- __pformat_putc( c, &stream );
+ __pformat_putc( c, &stream );
#else
stream.width = stream.precision = PFORMAT_IGNORE;
__pformat_wputchars( L"%", 1, &stream );
#endif
- goto format_scan;
-
- case 'C':
- /*
- * Equivalent to `%lc'; set `length' accordingly,
- * and simply fall through.
- */
- length = PFORMAT_LENGTH_LONG;
-
- case 'c':
- /*
- * Single, (or single multibyte), character output...
- *
- * We handle these by copying the argument into our local
- * `argval' buffer, and then we pass the address of that to
- * either `__pformat_putchars()' or `__pformat_wputchars()',
- * as appropriate, effectively formatting it as a string of
- * the appropriate type, with a length of one.
- *
- * A side effect of this method of handling character data
- * is that, if the user sets a precision of zero, then no
- * character is actually emitted; we don't want that, so we
- * forcibly override any user specified precision.
- */
- stream.precision = PFORMAT_IGNORE;
-
- /* Now we invoke the appropriate format handler...
- */
- if( (length == PFORMAT_LENGTH_LONG)
- || (length == PFORMAT_LENGTH_LLONG) )
- {
- /* considering any `long' type modifier as a reference to
- * `wchar_t' data, (which is promoted to an `int' argument)...
- */
- wchar_t iargval = (wchar_t)(va_arg( argv, int ));
- __pformat_wputchars( &iargval, 1, &stream );
- }
- else
- { /* while anything else is simply taken as `char', (which
- * is also promoted to an `int' argument)...
- */
- argval.__pformat_uchar_t = (unsigned char)(va_arg( argv, int ));
- __pformat_putchars( (char *)(&argval), 1, &stream );
- }
- goto format_scan;
-
- case 'S':
- /*
- * Equivalent to `%ls'; set `length' accordingly,
- * and simply fall through.
- */
- length = PFORMAT_LENGTH_LONG;
-
- case 's':
- if( (length == PFORMAT_LENGTH_LONG)
- || (length == PFORMAT_LENGTH_LLONG))
- {
- /* considering any `long' type modifier as a reference to
- * a `wchar_t' string...
- */
- __pformat_wcputs( va_arg( argv, wchar_t * ), &stream );
- }
- else
- /* This is normal string output;
- * we simply invoke the appropriate handler...
- */
- __pformat_puts( va_arg( argv, char * ), &stream );
- goto format_scan;
- case 'm': /* strerror (errno) */
- __pformat_puts (strerror (saved_errno), &stream);
- goto format_scan;
-
- case 'o':
- case 'u':
- case 'x':
- case 'X':
- /*
- * Unsigned integer values; octal, decimal or hexadecimal format...
- */
+ goto format_scan;
+
+ case 'C':
+ /*
+ * Equivalent to `%lc'; set `length' accordingly,
+ * and simply fall through.
+ */
+ length = PFORMAT_LENGTH_LONG;
+
+ case 'c':
+ /*
+ * Single, (or single multibyte), character output...
+ *
+ * We handle these by copying the argument into our local
+ * `argval' buffer, and then we pass the address of that to
+ * either `__pformat_putchars()' or `__pformat_wputchars()',
+ * as appropriate, effectively formatting it as a string of
+ * the appropriate type, with a length of one.
+ *
+ * A side effect of this method of handling character data
+ * is that, if the user sets a precision of zero, then no
+ * character is actually emitted; we don't want that, so we
+ * forcibly override any user specified precision.
+ */
+ stream.precision = PFORMAT_IGNORE;
+
+ /* Now we invoke the appropriate format handler...
+ */
+ if( (length == PFORMAT_LENGTH_LONG)
+ || (length == PFORMAT_LENGTH_LLONG) )
+ {
+ /* considering any `long' type modifier as a reference to
+ * `wchar_t' data, (which is promoted to an `int' argument)...
+ */
+ wchar_t iargval = (wchar_t)(va_arg( argv, int ));
+ __pformat_wputchars( &iargval, 1, &stream );
+ }
+ else
+ { /* while anything else is simply taken as `char', (which
+ * is also promoted to an `int' argument)...
+ */
+ argval.__pformat_uchar_t = (unsigned char)(va_arg( argv, int ));
+ __pformat_putchars( (char *)(&argval), 1, &stream );
+ }
+ goto format_scan;
+
+ case 'S':
+ /*
+ * Equivalent to `%ls'; set `length' accordingly,
+ * and simply fall through.
+ */
+ length = PFORMAT_LENGTH_LONG;
+
+ case 's':
+ if( (length == PFORMAT_LENGTH_LONG)
+ || (length == PFORMAT_LENGTH_LLONG))
+ {
+ /* considering any `long' type modifier as a reference to
+ * a `wchar_t' string...
+ */
+ __pformat_wcputs( va_arg( argv, wchar_t * ), &stream );
+ }
+ else
+ /* This is normal string output;
+ * we simply invoke the appropriate handler...
+ */
+ __pformat_puts( va_arg( argv, char * ), &stream );
+ goto format_scan;
+ case 'm': /* strerror (errno) */
+ __pformat_puts (strerror (saved_errno), &stream);
+ goto format_scan;
+
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ /*
+ * Unsigned integer values; octal, decimal or hexadecimal format...
+ */
+ stream.flags &= ~PFORMAT_POSITIVE;
#if __ENABLE_PRINTF128
argval.__pformat_u128_t.t128.digits[1] = 0LL; /* no sign extend needed */
- if( length == PFORMAT_LENGTH_LLONG128 )
- argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
- else
+ if( length == PFORMAT_LENGTH_LLONG128 )
+ argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
+ else
#endif
if( length == PFORMAT_LENGTH_LLONG ) {
- /*
- * with an `unsigned long long' argument, which we
- * process `as is'...
- */
- argval.__pformat_ullong_t = va_arg( argv, unsigned long long );
-
- } else if( length == PFORMAT_LENGTH_LONG ) {
- /*
- * or with an `unsigned long', which we promote to
- * `unsigned long long'...
- */
- argval.__pformat_ullong_t = va_arg( argv, unsigned long );
-
- } else
- { /* or for any other size, which will have been promoted
- * to `unsigned int', we select only the appropriately sized
- * least significant segment, and again promote to the same
- * size as `unsigned long long'...
- */
- argval.__pformat_ullong_t = va_arg( argv, unsigned int );
- if( length == PFORMAT_LENGTH_SHORT )
- /*
- * from `unsigned short'...
- */
- argval.__pformat_ullong_t = argval.__pformat_ushort_t;
-
- else if( length == PFORMAT_LENGTH_CHAR )
- /*
- * or even from `unsigned char'...
- */
- argval.__pformat_ullong_t = argval.__pformat_uchar_t;
- }
-
- /* so we can pass any size of argument to either of two
- * common format handlers...
- */
- if( c == 'u' )
- /*
- * depending on whether output is to be encoded in
- * decimal format...
- */
- __pformat_int( argval, &stream );
-
- else
- /* or in octal or hexadecimal format...
- */
- __pformat_xint( c, argval, &stream );
-
- goto format_scan;
-
- case 'd':
- case 'i':
- /*
- * Signed integer values; decimal format...
- * This is similar to `u', but must process `argval' as signed,
- * and be prepared to handle negative numbers.
- */
- stream.flags |= PFORMAT_NEGATIVE;
+ /*
+ * with an `unsigned long long' argument, which we
+ * process `as is'...
+ */
+ argval.__pformat_ullong_t = va_arg( argv, unsigned long long );
+
+ } else if( length == PFORMAT_LENGTH_LONG ) {
+ /*
+ * or with an `unsigned long', which we promote to
+ * `unsigned long long'...
+ */
+ argval.__pformat_ullong_t = va_arg( argv, unsigned long );
+
+ } else
+ { /* or for any other size, which will have been promoted
+ * to `unsigned int', we select only the appropriately sized
+ * least significant segment, and again promote to the same
+ * size as `unsigned long long'...
+ */
+ argval.__pformat_ullong_t = va_arg( argv, unsigned int );
+ if( length == PFORMAT_LENGTH_SHORT )
+ /*
+ * from `unsigned short'...
+ */
+ argval.__pformat_ullong_t = argval.__pformat_ushort_t;
+
+ else if( length == PFORMAT_LENGTH_CHAR )
+ /*
+ * or even from `unsigned char'...
+ */
+ argval.__pformat_ullong_t = argval.__pformat_uchar_t;
+ }
+
+ /* so we can pass any size of argument to either of two
+ * common format handlers...
+ */
+ if( c == 'u' )
+ /*
+ * depending on whether output is to be encoded in
+ * decimal format...
+ */
+ __pformat_int( argval, &stream );
+
+ else
+ /* or in octal or hexadecimal format...
+ */
+ __pformat_xint( c, argval, &stream );
+
+ goto format_scan;
+
+ case 'd':
+ case 'i':
+ /*
+ * Signed integer values; decimal format...
+ * This is similar to `u', but must process `argval' as signed,
+ * and be prepared to handle negative numbers.
+ */
+ stream.flags |= PFORMAT_NEGATIVE;
#if __ENABLE_PRINTF128
- if( length == PFORMAT_LENGTH_LLONG128 ) {
- argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
+ if( length == PFORMAT_LENGTH_LLONG128 ) {
+ argval.__pformat_u128_t.t128 = va_arg( argv, __tI128 );
goto skip_sign; /* skip sign extend */
- } else
+ } else
#endif
- if( length == PFORMAT_LENGTH_LLONG ){
- /*
- * The argument is a `long long' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long long );
- } else if( length == PFORMAT_LENGTH_LONG ) {
- /*
- * or here, a `long' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long );
- } else
- { /* otherwise, it's an `int' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, int );
- if( length == PFORMAT_LENGTH_SHORT )
- /*
- * but it was promoted from a `short' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_short_t;
- else if( length == PFORMAT_LENGTH_CHAR )
- /*
- * or even from a `char' type...
- */
- argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_char_t;
- }
-
- /* In any case, all share a common handler...
- */
+ if( length == PFORMAT_LENGTH_LLONG ){
+ /*
+ * The argument is a `long long' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long long );
+ } else if( length == PFORMAT_LENGTH_LONG ) {
+ /*
+ * or here, a `long' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, long );
+ } else
+ { /* otherwise, it's an `int' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, int );
+ if( length == PFORMAT_LENGTH_SHORT )
+ /*
+ * but it was promoted from a `short' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_short_t;
+ else if( length == PFORMAT_LENGTH_CHAR )
+ /*
+ * or even from a `char' type...
+ */
+ argval.__pformat_u128_t.t128.digits[0] = argval.__pformat_char_t;
+ }
+
+ /* In any case, all share a common handler...
+ */
argval.__pformat_u128_t.t128.digits[1] = (argval.__pformat_llong_t < 0) ? -1LL : 0LL;
#if __ENABLE_PRINTF128
skip_sign:
#endif
- __pformat_int( argval, &stream );
- goto format_scan;
-
- case 'p':
- /*
- * Pointer argument; format as hexadecimal, subject to...
- */
- if( (state == PFORMAT_INIT) && (stream.flags == flags) )
- {
- /* Here, the user didn't specify any particular
- * formatting attributes. We must choose a default
- * which will be compatible with Microsoft's (broken)
- * scanf() implementation, (i.e. matching the default
- * used by MSVCRT's printf(), which appears to resemble
- * "%0.8X" for 32-bit pointers); in particular, we MUST
- * NOT adopt a GNU-like format resembling "%#x", because
- * Microsoft's scanf() will choke on the "0x" prefix.
- */
- stream.flags |= PFORMAT_ZEROFILL;
- stream.precision = 2 * sizeof( uintptr_t );
- }
- argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, uintptr_t );
- argval.__pformat_u128_t.t128.digits[1] = 0;
- __pformat_xint( 'x', argval, &stream );
- goto format_scan;
-
- case 'e':
- /*
- * Floating point format, with lower case exponent indicator
- * and lower case `inf' or `nan' representation when required;
- * select lower case mode, and simply fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'E':
- /*
- * Floating point format, with upper case exponent indicator
- * and upper case `INF' or `NAN' representation when required,
- * (or lower case for all of these, on fall through from above);
- * select lower case mode, and simply fall through...
- */
+ __pformat_int( argval, &stream );
+ goto format_scan;
+
+ case 'p':
+ /*
+ * Pointer argument; format as hexadecimal, subject to...
+ */
+ if( (state == PFORMAT_INIT) && (stream.flags == flags) )
+ {
+ /* Here, the user didn't specify any particular
+ * formatting attributes. We must choose a default
+ * which will be compatible with Microsoft's (broken)
+ * scanf() implementation, (i.e. matching the default
+ * used by MSVCRT's printf(), which appears to resemble
+ * "%0.8X" for 32-bit pointers); in particular, we MUST
+ * NOT adopt a GNU-like format resembling "%#x", because
+ * Microsoft's scanf() will choke on the "0x" prefix.
+ */
+ stream.flags |= PFORMAT_ZEROFILL;
+ stream.precision = 2 * sizeof( uintptr_t );
+ }
+ argval.__pformat_u128_t.t128.digits[0] = va_arg( argv, uintptr_t );
+ argval.__pformat_u128_t.t128.digits[1] = 0;
+ __pformat_xint( 'x', argval, &stream );
+ goto format_scan;
+
+ case 'e':
+ /*
+ * Floating point format, with lower case exponent indicator
+ * and lower case `inf' or `nan' representation when required;
+ * select lower case mode, and simply fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'E':
+ /*
+ * Floating point format, with upper case exponent indicator
+ * and upper case `INF' or `NAN' representation when required,
+ * (or lower case for all of these, on fall through from above);
+ * select lower case mode, and simply fall through...
+ */
#ifdef __ENABLE_DFP
- if( stream.flags & PFORMAT_DECIM32 )
- /* Is a 32bit decimal float */
- __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
- else if( stream.flags & PFORMAT_DECIM64 )
- /*
- * Is a 64bit decimal float
- */
- __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
- else if( stream.flags & PFORMAT_DECIM128 )
- /*
- * Is a 128bit decimal float
- */
- __pformat_efloat_decimal(va_arg( argv, _Decimal128 ), &stream );
- else
+ if( stream.flags & PFORMAT_DECIM32 )
+ /* Is a 32bit decimal float */
+ __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM64 )
+ /*
+ * Is a 64bit decimal float
+ */
+ __pformat_efloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM128 )
+ /*
+ * Is a 128bit decimal float
+ */
+ __pformat_efloat_decimal(va_arg( argv, _Decimal128 ), &stream );
+ else
#endif /* __ENABLE_DFP */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * for a `long double' argument...
- */
- __pformat_efloat( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double', which we promote to `long double',
- * so the two may share a common format handler.
- */
- __pformat_efloat( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'f':
- /*
- * Fixed point format, using lower case for `inf' and
- * `nan', when appropriate; select lower case mode, and
- * simply fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'F':
- /*
- * Fixed case format using upper case, or lower case on
- * fall through from above, for `INF' and `NAN'...
- */
+ if( stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * for a `long double' argument...
+ */
+ __pformat_efloat( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double', which we promote to `long double',
+ * so the two may share a common format handler.
+ */
+ __pformat_efloat( (long double)(va_arg( argv, double )), &stream );
+
+ goto format_scan;
+
+ case 'f':
+ /*
+ * Fixed point format, using lower case for `inf' and
+ * `nan', when appropriate; select lower case mode, and
+ * simply fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'F':
+ /*
+ * Fixed case format using upper case, or lower case on
+ * fall through from above, for `INF' and `NAN'...
+ */
#ifdef __ENABLE_DFP
- if( stream.flags & PFORMAT_DECIM32 )
- /* Is a 32bit decimal float */
- __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
- else if( stream.flags & PFORMAT_DECIM64 )
- /*
- * Is a 64bit decimal float
- */
- __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
- else if( stream.flags & PFORMAT_DECIM128 )
- /*
- * Is a 128bit decimal float
- */
- __pformat_float_decimal(va_arg( argv, _Decimal128 ), &stream );
- else
+ if( stream.flags & PFORMAT_DECIM32 )
+ /* Is a 32bit decimal float */
+ __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM64 )
+ /*
+ * Is a 64bit decimal float
+ */
+ __pformat_float_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM128 )
+ /*
+ * Is a 128bit decimal float
+ */
+ __pformat_float_decimal(va_arg( argv, _Decimal128 ), &stream );
+ else
#endif /* __ENABLE_DFP */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * for a `long double' argument...
- */
- __pformat_float( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double', which we promote to `long double',
- * so the two may share a common format handler.
- */
- __pformat_float( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'g':
- /*
- * Generalised floating point format, with lower case
- * exponent indicator when required; select lower case
- * mode, and simply fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'G':
- /*
- * Generalised floating point format, with upper case,
- * or on fall through from above, with lower case exponent
- * indicator when required...
- */
+ if( stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * for a `long double' argument...
+ */
+ __pformat_float( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double', which we promote to `long double',
+ * so the two may share a common format handler.
+ */
+ __pformat_float( (long double)(va_arg( argv, double )), &stream );
+
+ goto format_scan;
+
+ case 'g':
+ /*
+ * Generalised floating point format, with lower case
+ * exponent indicator when required; select lower case
+ * mode, and simply fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'G':
+ /*
+ * Generalised floating point format, with upper case,
+ * or on fall through from above, with lower case exponent
+ * indicator when required...
+ */
#ifdef __ENABLE_DFP
- if( stream.flags & PFORMAT_DECIM32 )
- /* Is a 32bit decimal float */
- __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
- else if( stream.flags & PFORMAT_DECIM64 )
- /*
- * Is a 64bit decimal float
- */
- __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
- else if( stream.flags & PFORMAT_DECIM128 )
- /*
- * Is a 128bit decimal float
- */
- __pformat_gfloat_decimal(va_arg( argv, _Decimal128 ), &stream );
- else
+ if( stream.flags & PFORMAT_DECIM32 )
+ /* Is a 32bit decimal float */
+ __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal32 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM64 )
+ /*
+ * Is a 64bit decimal float
+ */
+ __pformat_gfloat_decimal((_Decimal128)va_arg( argv, _Decimal64 ), &stream );
+ else if( stream.flags & PFORMAT_DECIM128 )
+ /*
+ * Is a 128bit decimal float
+ */
+ __pformat_gfloat_decimal(va_arg( argv, _Decimal128 ), &stream );
+ else
#endif /* __ENABLE_DFP */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * for a `long double' argument...
- */
- __pformat_gfloat( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double', which we promote to `long double',
- * so the two may share a common format handler.
- */
- __pformat_gfloat( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'a':
- /*
- * Hexadecimal floating point format, with lower case radix
- * and exponent indicators; select the lower case mode, and
- * fall through...
- */
- stream.flags |= PFORMAT_XCASE;
-
- case 'A':
- /*
- * Hexadecimal floating point format; handles radix and
- * exponent indicators in either upper or lower case...
- */
- if( stream.flags & PFORMAT_LDOUBLE )
- /*
- * with a `long double' argument...
- */
- __pformat_xldouble( va_arg( argv, long double ), &stream );
-
- else
- /* or just a `double'.
- */
- __pformat_xldouble( (long double)(va_arg( argv, double )), &stream );
-
- goto format_scan;
-
- case 'n':
- /*
- * Save current output character count...
- */
- if( length == PFORMAT_LENGTH_CHAR )
- /*
- * to a signed `char' destination...
- */
- *va_arg( argv, char * ) = stream.count;
-
- else if( length == PFORMAT_LENGTH_SHORT )
- /*
- * or to a signed `short'...
- */
- *va_arg( argv, short * ) = stream.count;
-
- else if( length == PFORMAT_LENGTH_LONG )
- /*
- * or to a signed `long'...
- */
- *va_arg( argv, long * ) = stream.count;
-
- else if( length == PFORMAT_LENGTH_LLONG )
- /*
- * or to a signed `long long'...
- */
- *va_arg( argv, long long * ) = stream.count;
-
- else
- /*
- * or, by default, to a signed `int'.
- */
- *va_arg( argv, int * ) = stream.count;
-
- goto format_scan;
-
- /* Argument length modifiers...
- * These are non-terminal; each sets the format parser
- * into the PFORMAT_END state, and ends with a `break'.
- */
- case 'h':
- /*
- * Interpret the argument as explicitly of a `short'
- * or `char' data type, truncated from the standard
- * length defined for integer promotion.
- */
- if( *fmt == 'h' )
- {
- /* Modifier is `hh'; data type is `char' sized...
- * Skip the second `h', and set length accordingly.
- */
- ++fmt;
- length = PFORMAT_LENGTH_CHAR;
- }
-
- else
- /* Modifier is `h'; data type is `short' sized...
- */
- length = PFORMAT_LENGTH_SHORT;
-
- state = PFORMAT_END;
- break;
-
- case 'j':
- /*
- * Interpret the argument as being of the same size as
- * a `intmax_t' entity...
- */
- length = __pformat_arg_length( intmax_t );
- state = PFORMAT_END;
- break;
-
-# ifdef _WIN32
-
- case 'I':
- /*
- * The MSVCRT implementation of the printf() family of
- * functions explicitly uses...
- */
+ if( stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * for a `long double' argument...
+ */
+ __pformat_gfloat( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double', which we promote to `long double',
+ * so the two may share a common format handler.
+ */
+ __pformat_gfloat( (long double)(va_arg( argv, double )), &stream );
+
+ goto format_scan;
+
+ case 'a':
+ /*
+ * Hexadecimal floating point format, with lower case radix
+ * and exponent indicators; select the lower case mode, and
+ * fall through...
+ */
+ stream.flags |= PFORMAT_XCASE;
+
+ case 'A':
+ /*
+ * Hexadecimal floating point format; handles radix and
+ * exponent indicators in either upper or lower case...
+ */
+ if( sizeof( double ) != sizeof( long double ) && stream.flags & PFORMAT_LDOUBLE )
+ /*
+ * with a `long double' argument...
+ */
+ __pformat_xldouble( va_arg( argv, long double ), &stream );
+
+ else
+ /* or just a `double'.
+ */
+ __pformat_xdouble( va_arg( argv, double ), &stream );
+
+ goto format_scan;
+
+ case 'n':
+ /*
+ * Save current output character count...
+ */
+ if( length == PFORMAT_LENGTH_CHAR )
+ /*
+ * to a signed `char' destination...
+ */
+ *va_arg( argv, char * ) = stream.count;
+
+ else if( length == PFORMAT_LENGTH_SHORT )
+ /*
+ * or to a signed `short'...
+ */
+ *va_arg( argv, short * ) = stream.count;
+
+ else if( length == PFORMAT_LENGTH_LONG )
+ /*
+ * or to a signed `long'...
+ */
+ *va_arg( argv, long * ) = stream.count;
+
+ else if( length == PFORMAT_LENGTH_LLONG )
+ /*
+ * or to a signed `long long'...
+ */
+ *va_arg( argv, long long * ) = stream.count;
+
+ else
+ /*
+ * or, by default, to a signed `int'.
+ */
+ *va_arg( argv, int * ) = stream.count;
+
+ goto format_scan;
+
+ /* Argument length modifiers...
+ * These are non-terminal; each sets the format parser
+ * into the PFORMAT_END state, and ends with a `break'.
+ */
+ case 'h':
+ /*
+ * Interpret the argument as explicitly of a `short'
+ * or `char' data type, truncated from the standard
+ * length defined for integer promotion.
+ */
+ if( *fmt == 'h' )
+ {
+ /* Modifier is `hh'; data type is `char' sized...
+ * Skip the second `h', and set length accordingly.
+ */
+ ++fmt;
+ length = PFORMAT_LENGTH_CHAR;
+ }
+
+ else
+ /* Modifier is `h'; data type is `short' sized...
+ */
+ length = PFORMAT_LENGTH_SHORT;
+
+ state = PFORMAT_END;
+ break;
+
+ case 'j':
+ /*
+ * Interpret the argument as being of the same size as
+ * a `intmax_t' entity...
+ */
+ length = __pformat_arg_length( intmax_t );
+ state = PFORMAT_END;
+ break;
+
+# ifdef _WIN32
+
+ case 'I':
+ /*
+ * The MSVCRT implementation of the printf() family of
+ * functions explicitly uses...
+ */
#ifdef __ENABLE_PRINTF128
- if( (fmt[0] == '1') && (fmt[1] == '2') && (fmt[2] == '8')){
- length = PFORMAT_LENGTH_LLONG128;
- fmt += 3;
- } else
+ if( (fmt[0] == '1') && (fmt[1] == '2') && (fmt[2] == '8')){
+ length = PFORMAT_LENGTH_LLONG128;
+ fmt += 3;
+ } else
#endif
- if( (fmt[0] == '6') && (fmt[1] == '4') )
- {
- /* I64' instead of `ll',
- * when referring to `long long' integer types...
- */
- length = PFORMAT_LENGTH_LLONG;
- fmt += 2;
- } else
- if( (fmt[0] == '3') && (fmt[1] == '2') )
- {
- /* and `I32' instead of `l',
- * when referring to `long' integer types...
- */
- length = PFORMAT_LENGTH_LONG;
- fmt += 2;
- }
-
- else
- /* or unqualified `I' instead of `t' or `z',
- * when referring to `ptrdiff_t' or `size_t' entities;
- * (we will choose to map it to `ptrdiff_t').
- */
- length = __pformat_arg_length( ptrdiff_t );
-
- state = PFORMAT_END;
- break;
-
-# endif
-
+ if( (fmt[0] == '6') && (fmt[1] == '4') )
+ {
+ /* I64' instead of `ll',
+ * when referring to `long long' integer types...
+ */
+ length = PFORMAT_LENGTH_LLONG;
+ fmt += 2;
+ } else
+ if( (fmt[0] == '3') && (fmt[1] == '2') )
+ {
+ /* and `I32' instead of `l',
+ * when referring to `long' integer types...
+ */
+ length = PFORMAT_LENGTH_LONG;
+ fmt += 2;
+ }
+
+ else
+ /* or unqualified `I' instead of `t' or `z',
+ * when referring to `ptrdiff_t' or `size_t' entities;
+ * (we will choose to map it to `ptrdiff_t').
+ */
+ length = __pformat_arg_length( ptrdiff_t );
+
+ state = PFORMAT_END;
+ break;
+
+# endif
+
#ifdef __ENABLE_DFP
- case 'H':
- stream.flags |= PFORMAT_DECIM32;
- state = PFORMAT_END;
- break;
-
- case 'D':
- /*
- * Interpret the argument as explicitly of a
- * `_Decimal64' or `_Decimal128' data type.
- */
- if( *fmt == 'D' )
- {
- /* Modifier is `DD'; data type is `_Decimal128' sized...
- * Skip the second `D', and set length accordingly.
- */
- ++fmt;
- stream.flags |= PFORMAT_DECIM128;
- }
-
- else
- /* Modifier is `D'; data type is `_Decimal64' sized...
- */
- stream.flags |= PFORMAT_DECIM64;
-
- state = PFORMAT_END;
- break;
+ case 'H':
+ stream.flags |= PFORMAT_DECIM32;
+ state = PFORMAT_END;
+ break;
+
+ case 'D':
+ /*
+ * Interpret the argument as explicitly of a
+ * `_Decimal64' or `_Decimal128' data type.
+ */
+ if( *fmt == 'D' )
+ {
+ /* Modifier is `DD'; data type is `_Decimal128' sized...
+ * Skip the second `D', and set length accordingly.
+ */
+ ++fmt;
+ stream.flags |= PFORMAT_DECIM128;
+ }
+
+ else
+ /* Modifier is `D'; data type is `_Decimal64' sized...
+ */
+ stream.flags |= PFORMAT_DECIM64;
+
+ state = PFORMAT_END;
+ break;
#endif /* __ENABLE_DFP */
- case 'l':
- /*
- * Interpret the argument as explicitly of a
- * `long' or `long long' data type.
- */
- if( *fmt == 'l' )
- {
- /* Modifier is `ll'; data type is `long long' sized...
- * Skip the second `l', and set length accordingly.
- */
- ++fmt;
- length = PFORMAT_LENGTH_LLONG;
- }
-
- else
- /* Modifier is `l'; data type is `long' sized...
- */
- length = PFORMAT_LENGTH_LONG;
-
- state = PFORMAT_END;
- break;
-
- case 'L':
- /*
- * Identify the appropriate argument as a `long double',
- * when associated with `%a', `%A', `%e', `%E', `%f', `%F',
- * `%g' or `%G' format specifications.
- */
- stream.flags |= PFORMAT_LDOUBLE;
- state = PFORMAT_END;
- break;
-
- case 't':
- /*
- * Interpret the argument as being of the same size as
- * a `ptrdiff_t' entity...
- */
- length = __pformat_arg_length( ptrdiff_t );
- state = PFORMAT_END;
- break;
-
- case 'z':
- /*
- * Interpret the argument as being of the same size as
- * a `size_t' entity...
- */
- length = __pformat_arg_length( size_t );
- state = PFORMAT_END;
- break;
-
- /* Precision indicator...
- * May appear once only; it must precede any modifier
- * for argument length, or any data type specifier.
- */
- case '.':
- if( state < PFORMAT_GET_PRECISION )
- {
- /* We haven't seen a precision specification yet,
- * so initialise it to zero, (in case no digits follow),
- * and accept any following digits as the precision.
- */
- stream.precision = 0;
- width_spec = &stream.precision;
- state = PFORMAT_GET_PRECISION;
- }
-
- else
- /* We've already seen a precision specification,
- * so this is just junk; proceed to end game.
- */
- state = PFORMAT_END;
-
- /* Either way, we must not fall through here.
- */
- break;
-
- /* Variable field width, or precision specification,
- * derived from the argument list...
- */
- case '*':
- /*
- * When this appears...
- */
- if( width_spec
- && ((state == PFORMAT_INIT) || (state == PFORMAT_GET_PRECISION)) )
- {
- /* in proper context; assign to field width
- * or precision, as appropriate.
- */
- if( (*width_spec = va_arg( argv, int )) < 0 )
- {
- /* Assigned value was negative...
- */
- if( state == PFORMAT_INIT )
- {
- /* For field width, this is equivalent to
- * a positive value with the `-' flag...
- */
- stream.flags |= PFORMAT_LJUSTIFY;
- stream.width = -stream.width;
- }
-
- else
- /* while as a precision specification,
- * it should simply be ignored.
- */
- stream.precision = PFORMAT_IGNORE;
- }
- }
-
- else
- /* out of context; give up on width and precision
- * specifications for this conversion.
- */
- state = PFORMAT_END;
-
- /* Mark as processed...
- * we must not see `*' again, in this context.
- */
- width_spec = NULL;
- break;
-
- /* Formatting flags...
- * Must appear while in the PFORMAT_INIT state,
- * and are non-terminal, so again, end with `break'.
- */
- case '#':
- /*
- * Select alternate PFORMAT_HASHED output style.
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_HASHED;
- break;
-
- case '+':
- /*
- * Print a leading sign with numeric output,
- * for both positive and negative values.
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_POSITIVE;
- break;
-
- case '-':
- /*
- * Select left justification of displayed output
- * data, within the output field width, instead of
- * the default flush right justification.
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_LJUSTIFY;
- break;
-
- case '\'':
- /*
- * This is an XSI extension to the POSIX standard,
- * which we do not support, at present.
- */
- if (state == PFORMAT_INIT)
- {
- stream.flags |= PFORMAT_GROUPED; /* $$$$ */
- int len; wchar_t rpchr; mbstate_t cstate;
- memset (&cstate, 0, sizeof(state));
- if ((len = mbrtowc( &rpchr, localeconv()->thousands_sep, 16, &cstate)) > 0)
- stream.thousands_chr = rpchr;
- stream.thousands_chr_len = len;
- }
- break;
-
- case '\x20':
- /*
- * Reserve a single space, within the output field,
- * for display of the sign of signed data; this will
- * be occupied by the minus sign, if the data value
- * is negative, or by a plus sign if the data value
- * is positive AND the `+' flag is also present, or
- * by a space otherwise. (Technically, this flag
- * is redundant, if the `+' flag is present).
- */
- if( state == PFORMAT_INIT )
- stream.flags |= PFORMAT_ADDSPACE;
- break;
-
- case '0':
- /*
- * May represent a flag, to activate the `pad with zeros'
- * option, or it may simply be a digit in a width or in a
- * precision specification...
- */
- if( state == PFORMAT_INIT )
- {
- /* This is the flag usage...
- */
- stream.flags |= PFORMAT_ZEROFILL;
- break;
- }
-
- default:
- /*
- * If we didn't match anything above, then we will check
- * for digits, which we may accumulate to generate field
- * width or precision specifications...
- */
- if( (state < PFORMAT_END) && ('9' >= c) && (c >= '0') )
- {
- if( state == PFORMAT_INIT )
- /*
- * Initial digits explicitly relate to field width...
- */
- state = PFORMAT_SET_WIDTH;
-
- else if( state == PFORMAT_GET_PRECISION )
- /*
- * while those following a precision indicator
- * explicitly relate to precision.
- */
- state = PFORMAT_SET_PRECISION;
-
- if( width_spec )
- {
- /* We are accepting a width or precision specification...
- */
- if( *width_spec < 0 )
- /*
- * and accumulation hasn't started yet; we simply
- * initialise the accumulator with the current digit
- * value, converting from ASCII to decimal.
- */
- *width_spec = c - '0';
-
- else
- /* Accumulation has already started; we perform a
- * `leftwise decimal digit shift' on the accumulator,
- * (i.e. multiply it by ten), then add the decimal
- * equivalent value of the current digit.
- */
- *width_spec = *width_spec * 10 + c - '0';
- }
- }
-
- else
- {
- /* We found a digit out of context, or some other character
- * with no designated meaning; reject this format specification,
- * backtrack, and emit it as literal text...
- */
- fmt = backtrack;
+ case 'l':
+ /*
+ * Interpret the argument as explicitly of a
+ * `long' or `long long' data type.
+ */
+ if( *fmt == 'l' )
+ {
+ /* Modifier is `ll'; data type is `long long' sized...
+ * Skip the second `l', and set length accordingly.
+ */
+ ++fmt;
+ length = PFORMAT_LENGTH_LLONG;
+ }
+
+ else
+ /* Modifier is `l'; data type is `long' sized...
+ */
+ length = PFORMAT_LENGTH_LONG;
+
+ state = PFORMAT_END;
+ break;
+
+ case 'L':
+ /*
+ * Identify the appropriate argument as a `long double',
+ * when associated with `%a', `%A', `%e', `%E', `%f', `%F',
+ * `%g' or `%G' format specifications.
+ */
+ stream.flags |= PFORMAT_LDOUBLE;
+ state = PFORMAT_END;
+ break;
+
+ case 't':
+ /*
+ * Interpret the argument as being of the same size as
+ * a `ptrdiff_t' entity...
+ */
+ length = __pformat_arg_length( ptrdiff_t );
+ state = PFORMAT_END;
+ break;
+
+ case 'z':
+ /*
+ * Interpret the argument as being of the same size as
+ * a `size_t' entity...
+ */
+ length = __pformat_arg_length( size_t );
+ state = PFORMAT_END;
+ break;
+
+ /* Precision indicator...
+ * May appear once only; it must precede any modifier
+ * for argument length, or any data type specifier.
+ */
+ case '.':
+ if( state < PFORMAT_GET_PRECISION )
+ {
+ /* We haven't seen a precision specification yet,
+ * so initialise it to zero, (in case no digits follow),
+ * and accept any following digits as the precision.
+ */
+ stream.precision = 0;
+ width_spec = &stream.precision;
+ state = PFORMAT_GET_PRECISION;
+ }
+
+ else
+ /* We've already seen a precision specification,
+ * so this is just junk; proceed to end game.
+ */
+ state = PFORMAT_END;
+
+ /* Either way, we must not fall through here.
+ */
+ break;
+
+ /* Variable field width, or precision specification,
+ * derived from the argument list...
+ */
+ case '*':
+ /*
+ * When this appears...
+ */
+ if( width_spec
+ && ((state == PFORMAT_INIT) || (state == PFORMAT_GET_PRECISION)) )
+ {
+ /* in proper context; assign to field width
+ * or precision, as appropriate.
+ */
+ if( (*width_spec = va_arg( argv, int )) < 0 )
+ {
+ /* Assigned value was negative...
+ */
+ if( state == PFORMAT_INIT )
+ {
+ /* For field width, this is equivalent to
+ * a positive value with the `-' flag...
+ */
+ stream.flags |= PFORMAT_LJUSTIFY;
+ stream.width = -stream.width;
+ }
+
+ else
+ /* while as a precision specification,
+ * it should simply be ignored.
+ */
+ stream.precision = PFORMAT_IGNORE;
+ }
+ }
+
+ else
+ /* out of context; give up on width and precision
+ * specifications for this conversion.
+ */
+ state = PFORMAT_END;
+
+ /* Mark as processed...
+ * we must not see `*' again, in this context.
+ */
+ width_spec = NULL;
+ break;
+
+ /* Formatting flags...
+ * Must appear while in the PFORMAT_INIT state,
+ * and are non-terminal, so again, end with `break'.
+ */
+ case '#':
+ /*
+ * Select alternate PFORMAT_HASHED output style.
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_HASHED;
+ break;
+
+ case '+':
+ /*
+ * Print a leading sign with numeric output,
+ * for both positive and negative values.
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_POSITIVE;
+ break;
+
+ case '-':
+ /*
+ * Select left justification of displayed output
+ * data, within the output field width, instead of
+ * the default flush right justification.
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_LJUSTIFY;
+ break;
+
+ case '\'':
+ /*
+ * This is an XSI extension to the POSIX standard,
+ * which we do not support, at present.
+ */
+ if (state == PFORMAT_INIT)
+ {
+ stream.flags |= PFORMAT_GROUPED; /* $$$$ */
+ int len; wchar_t rpchr; mbstate_t cstate;
+ memset (&cstate, 0, sizeof(state));
+ if ((len = mbrtowc( &rpchr, localeconv()->thousands_sep, 16, &cstate)) > 0)
+ stream.thousands_chr = rpchr;
+ stream.thousands_chr_len = len;
+ }
+ break;
+
+ case '\x20':
+ /*
+ * Reserve a single space, within the output field,
+ * for display of the sign of signed data; this will
+ * be occupied by the minus sign, if the data value
+ * is negative, or by a plus sign if the data value
+ * is positive AND the `+' flag is also present, or
+ * by a space otherwise. (Technically, this flag
+ * is redundant, if the `+' flag is present).
+ */
+ if( state == PFORMAT_INIT )
+ stream.flags |= PFORMAT_ADDSPACE;
+ break;
+
+ case '0':
+ /*
+ * May represent a flag, to activate the `pad with zeros'
+ * option, or it may simply be a digit in a width or in a
+ * precision specification...
+ */
+ if( state == PFORMAT_INIT )
+ {
+ /* This is the flag usage...
+ */
+ stream.flags |= PFORMAT_ZEROFILL;
+ break;
+ }
+
+ default:
+ /*
+ * If we didn't match anything above, then we will check
+ * for digits, which we may accumulate to generate field
+ * width or precision specifications...
+ */
+ if( (state < PFORMAT_END) && ('9' >= c) && (c >= '0') )
+ {
+ if( state == PFORMAT_INIT )
+ /*
+ * Initial digits explicitly relate to field width...
+ */
+ state = PFORMAT_SET_WIDTH;
+
+ else if( state == PFORMAT_GET_PRECISION )
+ /*
+ * while those following a precision indicator
+ * explicitly relate to precision.
+ */
+ state = PFORMAT_SET_PRECISION;
+
+ if( width_spec )
+ {
+ /* We are accepting a width or precision specification...
+ */
+ if( *width_spec < 0 )
+ /*
+ * and accumulation hasn't started yet; we simply
+ * initialise the accumulator with the current digit
+ * value, converting from ASCII to decimal.
+ */
+ *width_spec = c - '0';
+
+ else
+ /* Accumulation has already started; we perform a
+ * `leftwise decimal digit shift' on the accumulator,
+ * (i.e. multiply it by ten), then add the decimal
+ * equivalent value of the current digit.
+ */
+ *width_spec = *width_spec * 10 + c - '0';
+ }
+ }
+
+ else
+ {
+ /* We found a digit out of context, or some other character
+ * with no designated meaning; reject this format specification,
+ * backtrack, and emit it as literal text...
+ */
+ fmt = backtrack;
#ifndef __BUILD_WIDEAPI
- __pformat_putc( '%', &stream );
+ __pformat_putc( '%', &stream );
#else
stream.width = stream.precision = PFORMAT_IGNORE;
__pformat_wputchars( L"%", 1, &stream );
#endif
- goto format_scan;
- }
- }
+ goto format_scan;
+ }
+ }
}
}
diff --git a/lib/libc/mingw/stdio/scanf.S b/lib/libc/mingw/stdio/scanf.S
index 1e0bed9452..41ff64598c 100644
--- a/lib/libc/mingw/stdio/scanf.S
+++ b/lib/libc/mingw/stdio/scanf.S
@@ -9,17 +9,14 @@
The goal of this routine is to turn a call to v*scanf into a call to
s*scanf. This is needed because mingw-w64 uses msvcr100.dll, which doesn't
support the v*scanf functions instead of msvcr120.dll which does.
- Unfortunately, there is no defined way to know exactly how big a va_list
- is, so we use a hard-coded buffer.
-
- I suppose a sufficiently-motivated person could try to parse the format
- to figure out how many tokens there are... */
+*/
/* The function prototype here is (essentially):
- int __ms_vsscanf_internal (void *s,
+ int __ms_v*scanf_internal (void *s,
void *format,
void *arg,
+ size_t count,
void *func);
I say 'essentially' because passing a function pointer as void in ISO
@@ -37,19 +34,6 @@
*/
.def __argtos; .scl 2; .type 32; .endef
- /* The max number of pointers we support. Must be an even number
- to keep the 64bit stack 16byte aligned. Must not be less than 4. */
- .equ entries, 30
-
- /* 64bit pointers are 8 bytes. */
- .equ sizeof, 8
-
- /* Size of our buffer. */
- .equ iBytes, entries * sizeof
-
- /* Stack space for first 2 args to s*scanf. */
- .equ iOffset, (2 * sizeof)
-
.seh_proc __argtos
__argtos:
@@ -58,48 +42,58 @@ __argtos:
- format must be in rdx. That's where it is on entry.
- The first pointer in arg must be in r8. arg is in r8 on entry.
- The second pointer in arg must be in r9. arg is in r8 on entry.
- - The ($entries - 2) other pointers in arg must be on the stack,
+ - The (count - 2) other pointers in arg must be on the stack,
starting 32bytes into rsp. */
- /* We need enough room to shadow (s + format)
- + (enough room for all the other args). */
- subq $(iOffset + iBytes), %rsp
- .seh_stackalloc iOffset + iBytes
+ pushq %rbp
+ .seh_pushreg %rbp
+ movq %rsp, %rbp
+ .seh_setframe %rbp, 0
+ /* We need to always reserve space to shadow 4 parameters. */
+ subq $32, %rsp
+ .seh_stackalloc 32
.seh_endprologue
- /* We are going to copy $entries pointers from arg to our
- local stack. Except the first 2, since they will be
- loaded in registers. */
- movq $entries - 2, %r10 /* # of ptrs to copy. */
-
- /* The first 32 bytes are in registers, but by spec, space
- must still be reserved for them on the stack. Put the
+ movq 48(%rbp), %r10 /* func. */
+
+ /* We need enough room to shadow all the other args.
+ Except the first 2, since they will be loaded in registers. */
+ cmpq $2, %r9 /* count. */
+ jbe .SKIP
+ subq $2, %r9 /* # of ptrs to copy. */
+ /* Calculate stack size (arg is 8byte) and keep the stack 16byte aligned. */
+ leaq 8(, %r9, 8), %rax /* %rax = (%r9 + 1) * 8 */
+ andq $-16, %rax
+ subq %rax, %rsp
+
+ /* We are going to copy parameters from arg to our local stack.
+ The first 32 bytes are in registers, but by spec, space
+ must still be reserved for them on the stack. Put the
rest of the pointers in the stack after that. */
lea 32(%rsp), %r11 /* dst. */
.LOOP:
- subq $1, %r10
+ subq $1, %r9
/* Use 16 to skip over the first 2 pointers. */
- movq 16(%r8, %r10, 8), %rax
- movq %rax, (%r11, %r10, 8)
+ movq 16(%r8, %r9, 8), %rax
+ movq %rax, (%r11, %r9, 8)
jnz .LOOP
- /* r9 contains the routine we are going to call. Since we are about to
- overwrite it, move it somewhere safe. */
- movq %r9, %r10
-
+.SKIP:
/* The stack is now correctly populated, and so are rcx and rdx.
But we need to load the last 2 regs before making the call. */
movq 0x8(%r8), %r9 /* 2nd dest location (may be garbage if only 1 arg). */
- movq (%r8), %r8 /* 1st dest location. */
+ movq (%r8), %r8 /* 1st dest location (may be garbage if no arg). */
/* Make the call. */
callq *%r10
- addq $(iOffset + iBytes), %rsp
+ /* Restore stack. */
+ movq %rbp, %rsp
+ popq %rbp
retq
.seh_endproc
@@ -113,31 +107,23 @@ __argtos:
*/
.def __argtos; .scl 2; .type 32; .endef
- /* The max number of pointers we support. Must not be less than 1. */
- .equ entries, 30
-
- /* 64bit pointers are 8 bytes. */
- .equ sizeof, 4
-
- /* Size of our buffer. */
- .set iBytes, entries * sizeof
-
- /* Stack space for first 2 args to s*scanf. */
- .equ iOffset, (2 * sizeof)
-
__argtos:
pushl %ebp
movl %esp, %ebp
pushl %edi
+ pushl %ebx
/* Reserve enough stack space for everything.
Stack usage will look like:
4 bytes - s
4 bytes - format
- (iBytes) bytes - variable # of parameters for sscanf (all ptrs). */
+ 4*count bytes - variable # of parameters for sscanf (all ptrs). */
- subl $(iOffset + iBytes), %esp
+ movl 20(%ebp), %ebx /* count. */
+ addl $2, %ebx /* s + format. */
+ sall $2, %ebx /* (count + 2) * 4. */
+ subl %ebx, %esp
/* Write out s and format where they need to be for the sscanf call. */
movl 8(%ebp), %eax
@@ -145,10 +131,12 @@ __argtos:
movl 12(%ebp), %edx
movl %edx, 0x4(%esp) /* format. */
- /* We are going to copy $entries pointers from arg to our
+ /* We are going to copy _count_ pointers from arg to our
local stack. */
- movl $entries, %ecx /* # of ptrs to copy. */
- lea iOffset(%esp), %edi /* dst. */
+ movl 20(%ebp), %ecx /* # of ptrs to copy. */
+ testl %ecx, %ecx
+ jz .SKIP
+ lea 8(%esp), %edi /* dst. */
movl 16(%ebp), %edx /* src. */
.LOOP:
@@ -158,13 +146,16 @@ __argtos:
movl %eax, (%edi, %ecx, 4)
jnz .LOOP
+.SKIP:
/* The stack is now correctly populated. */
/* Make the call. */
- call *20(%ebp)
+ call *24(%ebp)
/* Restore stack. */
- addl $(iOffset + iBytes), %esp
+ addl %ebx, %esp
+
+ popl %ebx
popl %edi
leave
@@ -178,25 +169,35 @@ __argtos:
.globl __argtos
__argtos:
- push {r4-r7, lr}
- sub sp, sp, #128
- mov r12, r3
- mov r4, sp
+ push {r4-r8, lr}
+ ldr r12, [sp, #24]
ldr r5, [r2], #4
ldr r6, [r2], #4
- mov r3, #116
+ subs r3, r3, #2
+ mov r8, #0
+ ble 2f
+
+ /* Round the number of entries to an even number, to maintain
+ * 8 byte stack alignment. */
+ mov r8, r3
+ add r8, r8, #1
+ bic r8, r8, #1
+ sub sp, sp, r8, lsl #2
+ mov r4, sp
1: ldr r7, [r2], #4
+ subs r3, r3, #1
str r7, [r4], #4
- subs r3, r3, #4
bne 1b
+2:
mov r2, r5
mov r3, r6
blx r12
- add sp, sp, #128
- pop {r4-r7, pc}
+
+ add sp, sp, r8, lsl #2
+ pop {r4-r8, pc}
#elif defined (__aarch64__)
@@ -207,10 +208,9 @@ __argtos:
__argtos:
stp x29, x30, [sp, #-16]!
mov x29, sp
- sub sp, sp, #256
- mov x9, sp
mov x10, x2
mov x11, x3
+ mov x12, x4
ldr x2, [x10], #8
ldr x3, [x10], #8
@@ -219,13 +219,23 @@ __argtos:
ldr x6, [x10], #8
ldr x7, [x10], #8
- mov x12, #240
+ subs x11, x11, #6
+ b.le 2f
+
+ /* Round the number of entries to an even number, to maintain
+ * 16 byte stack alignment. */
+ mov x13, x11
+ add x13, x13, #1
+ bic x13, x13, #1
+ sub sp, sp, x13, lsl #3
+ mov x9, sp
1: ldr x13, [x10], #8
+ subs x11, x11, #1
str x13, [x9], #8
- subs x12, x12, #8
b.ne 1b
- blr x11
+2:
+ blr x12
mov sp, x29
ldp x29, x30, [sp], #16
ret
diff --git a/lib/libc/mingw/stdio/snprintf.c b/lib/libc/mingw/stdio/snprintf.c
index 0bb5556fe3..2e43a67aee 100644
--- a/lib/libc/mingw/stdio/snprintf.c
+++ b/lib/libc/mingw/stdio/snprintf.c
@@ -12,27 +12,7 @@ int __cdecl __ms_snprintf(char* buffer, size_t n, const char *format, ...)
va_list argptr;
va_start(argptr, format);
-
- /* _vsnprintf() does not work with zero length buffer
- * so count number of character by _vscprintf() call */
- if (n == 0 || !buffer)
- {
- retval = _vscprintf(format, argptr);
- va_end(argptr);
- return retval;
- }
-
- retval = _vsnprintf (buffer, n, format, argptr);
-
- /* _vsnprintf() returns negative number if buffer is too small
- * so count number of character by _vscprintf() call */
- if (retval < 0)
- retval = _vscprintf(format, argptr);
-
- /* _vsnprintf() does not fill trailing null byte if there is not place for it */
- if ((size_t)retval >= n)
- buffer[n-1] = '\0';
-
+ retval = __ms_vsnprintf(buffer, n, format, argptr);
va_end(argptr);
return retval;
}
diff --git a/lib/libc/mingw/stdio/strtof.c b/lib/libc/mingw/stdio/strtof.c
index 5697eb4b54..c4e4eb918a 100644
--- a/lib/libc/mingw/stdio/strtof.c
+++ b/lib/libc/mingw/stdio/strtof.c
@@ -4,8 +4,24 @@
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#include <stdlib.h>
+#include <float.h>
+#include <errno.h>
+#include <math.h>
float strtof( const char *nptr, char **endptr)
{
- return (strtod(nptr, endptr));
+ double ret = strtod(nptr, endptr);
+ if (isfinite(ret)) {
+ /* Check for cases that aren't out of range for doubles, but that are
+ * for floats. */
+ if (ret > FLT_MAX)
+ errno = ERANGE;
+ else if (ret < -FLT_MAX)
+ errno = ERANGE;
+ else if (ret > 0 && ret < FLT_MIN)
+ errno = ERANGE;
+ else if (ret < 0 && ret > -FLT_MIN)
+ errno = ERANGE;
+ }
+ return ret;
}
diff --git a/lib/libc/mingw/stdio/vfscanf.c b/lib/libc/mingw/stdio/vfscanf.c
index dab72fe4a6..c3282a3edb 100644
--- a/lib/libc/mingw/stdio/vfscanf.c
+++ b/lib/libc/mingw/stdio/vfscanf.c
@@ -11,18 +11,22 @@ extern int __ms_vfscanf_internal (
FILE * s,
const char * format,
va_list arg,
+ size_t count,
int (*func)(FILE * __restrict__, const char * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_scanf_max_arg_count_internal (const char * format);
+
int __ms_vfscanf (FILE * __restrict__ stream, const char * __restrict__ format, va_list arg)
{
+ size_t count = __ms_scanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined(_ARM64_) || defined(__aarch64__)
- ret = __ms_vfscanf_internal (stream, format, arg, fscanf);
+ ret = __ms_vfscanf_internal (stream, format, arg, count, fscanf);
#else
#error "unknown platform"
#endif
diff --git a/lib/libc/mingw/stdio/vfwscanf.c b/lib/libc/mingw/stdio/vfwscanf.c
index 52cf928354..f8e465d361 100644
--- a/lib/libc/mingw/stdio/vfwscanf.c
+++ b/lib/libc/mingw/stdio/vfwscanf.c
@@ -11,19 +11,23 @@ extern int __ms_vfwscanf_internal (
FILE * s,
const wchar_t * format,
va_list arg,
+ size_t count,
int (*func)(FILE * __restrict__, const wchar_t * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_wscanf_max_arg_count_internal (const wchar_t * format);
+
int __ms_vfwscanf (FILE * __restrict__ stream,
const wchar_t * __restrict__ format, va_list arg)
{
+ size_t count = __ms_wscanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined (_ARM64_) || defined (__aarch64__)
- ret = __ms_vfwscanf_internal (stream, format, arg, fwscanf);
+ ret = __ms_vfwscanf_internal (stream, format, arg, count, fwscanf);
#else
#error "unknown platform"
#endif
diff --git a/lib/libc/mingw/stdio/vsnprintf.c b/lib/libc/mingw/stdio/vsnprintf.c
index 364186702b..772a23f660 100644
--- a/lib/libc/mingw/stdio/vsnprintf.c
+++ b/lib/libc/mingw/stdio/vsnprintf.c
@@ -13,19 +13,19 @@ int __cdecl __ms_vsnprintf (char *s,size_t n,const char *format,va_list arg)
/* _vsnprintf() does not work with zero length buffer
* so count number of character by _vscprintf() call */
- if (n == 0 || !s)
+ if (n == 0)
return _vscprintf(format, arg);
retval = _vsnprintf(s, n, format, arg);
+ /* _vsnprintf() does not fill trailing null byte if there is not place for it */
+ if (retval < 0 || (size_t)retval == n)
+ s[n-1] = '\0';
+
/* _vsnprintf() returns negative number if buffer is too small
* so count number of character by _vscprintf() call */
if (retval < 0)
retval = _vscprintf(format, arg);
- /* _vsnprintf() does not fill trailing null byte if there is not place for it */
- if ((size_t)retval >= n)
- s[n-1] = '\0';
-
return retval;
}
diff --git a/lib/libc/mingw/stdio/vsscanf.c b/lib/libc/mingw/stdio/vsscanf.c
index 6c8fe5a56f..9b3b650ded 100644
--- a/lib/libc/mingw/stdio/vsscanf.c
+++ b/lib/libc/mingw/stdio/vsscanf.c
@@ -11,19 +11,23 @@ extern int __ms_vsscanf_internal (
const char * s,
const char * format,
va_list arg,
+ size_t count,
int (*func)(const char * __restrict__, const char * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_scanf_max_arg_count_internal (const char * format);
+
int __ms_vsscanf (const char * __restrict__ s,
const char * __restrict__ format, va_list arg)
{
+ size_t count = __ms_scanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined(_ARM64_) || defined(__aarch64__)
- ret = __ms_vsscanf_internal (s, format, arg, sscanf);
+ ret = __ms_vsscanf_internal (s, format, arg, count, sscanf);
#else
#error "unknown platform"
#endif
diff --git a/lib/libc/mingw/stdio/vswscanf.c b/lib/libc/mingw/stdio/vswscanf.c
index 941ed12057..01c811b32e 100644
--- a/lib/libc/mingw/stdio/vswscanf.c
+++ b/lib/libc/mingw/stdio/vswscanf.c
@@ -11,19 +11,23 @@ extern int __ms_vswscanf_internal (
const wchar_t * s,
const wchar_t * format,
va_list arg,
+ size_t count,
int (*func)(const wchar_t * __restrict__, const wchar_t * __restrict__, ...))
asm("__argtos");
+extern size_t __ms_wscanf_max_arg_count_internal (const wchar_t * format);
+
int __ms_vswscanf(const wchar_t * __restrict__ s, const wchar_t * __restrict__ format,
va_list arg)
{
+ size_t count = __ms_wscanf_max_arg_count_internal (format);
int ret;
#if defined(_AMD64_) || defined(__x86_64__) || \
defined(_X86_) || defined(__i386__) || \
defined(_ARM_) || defined(__arm__) || \
defined(_ARM64_) || defined(__aarch64__)
- ret = __ms_vswscanf_internal (s, format, arg, swscanf);
+ ret = __ms_vswscanf_internal (s, format, arg, count, swscanf);
#else
#error "unknown platform"
#endif
diff --git a/lib/libc/mingw/stdio/vwscanf.c b/lib/libc/mingw/stdio/vwscanf.c
index 8310498ffd..3360eefad1 100644
--- a/lib/libc/mingw/stdio/vwscanf.c
+++ b/lib/libc/mingw/stdio/vwscanf.c
@@ -10,12 +10,7 @@
#include <wchar.h>
#include <stdio.h>
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wimplicit-function-declaration"
-
int __ms_vwscanf (const wchar_t * __restrict__ format, va_list arg)
{
return __ms_vfwscanf(stdin, format, arg);
}
-
-#pragma clang diagnostic pop
diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig
index fe2f7bc795..61c1ee2a32 100644
--- a/lib/std/Progress.zig
+++ b/lib/std/Progress.zig
@@ -172,10 +172,10 @@ pub fn start(self: *Progress, name: []const u8, estimated_total_items: usize) *N
/// Updates the terminal if enough time has passed since last update. Thread-safe.
pub fn maybeRefresh(self: *Progress) void {
if (self.timer) |*timer| {
- const now = timer.read();
- if (now < self.initial_delay_ns) return;
if (!self.update_mutex.tryLock()) return;
defer self.update_mutex.unlock();
+ const now = timer.read();
+ if (now < self.initial_delay_ns) return;
// TODO I have observed this to happen sometimes. I think we need to follow Rust's
// lead and guarantee monotonically increasing times in the std lib itself.
if (now < self.prev_refresh_timestamp) return;
diff --git a/lib/std/bit_set.zig b/lib/std/bit_set.zig
index 992f19151b..2c4e50dee3 100644
--- a/lib/std/bit_set.zig
+++ b/lib/std/bit_set.zig
@@ -23,7 +23,7 @@
//! size. The interfaces of these two types match exactly, except for fields.
//!
//! DynamicBitSet:
-//! A bit set with runtime known size, backed by an allocated slice
+//! A bit set with runtime-known size, backed by an allocated slice
//! of usize.
//!
//! DynamicBitSetUnmanaged:
@@ -515,7 +515,7 @@ pub fn ArrayBitSet(comptime MaskIntType: type, comptime size: usize) type {
};
}
-/// A bit set with runtime known size, backed by an allocated slice
+/// A bit set with runtime-known size, backed by an allocated slice
/// of usize. The allocator must be tracked externally by the user.
pub const DynamicBitSetUnmanaged = struct {
const Self = @This();
@@ -843,7 +843,7 @@ pub const DynamicBitSetUnmanaged = struct {
}
};
-/// A bit set with runtime known size, backed by an allocated slice
+/// A bit set with runtime-known size, backed by an allocated slice
/// of usize. Thin wrapper around DynamicBitSetUnmanaged which keeps
/// track of the allocator instance.
pub const DynamicBitSet = struct {
diff --git a/lib/std/build.zig b/lib/std/build.zig
index ee9bc019d2..881fc13cd0 100644
--- a/lib/std/build.zig
+++ b/lib/std/build.zig
@@ -1468,7 +1468,7 @@ pub const LibExeObjStep = struct {
kind: Kind,
major_only_filename: ?[]const u8,
name_only_filename: ?[]const u8,
- strip: bool,
+ strip: ?bool,
// keep in sync with src/link.zig:CompressDebugSections
compress_debug_sections: enum { none, zlib } = .none,
lib_paths: ArrayList([]const u8),
@@ -1738,7 +1738,7 @@ pub const LibExeObjStep = struct {
const self = builder.allocator.create(LibExeObjStep) catch unreachable;
self.* = LibExeObjStep{
- .strip = false,
+ .strip = null,
.builder = builder,
.verbose_link = false,
.verbose_cc = false,
@@ -1953,7 +1953,7 @@ pub const LibExeObjStep = struct {
pub fn producesPdbFile(self: *LibExeObjStep) bool {
if (!self.target.isWindows() and !self.target.isUefi()) return false;
- if (self.strip) return false;
+ if (self.strip != null and self.strip.?) return false;
return self.isDynamicLibrary() or self.kind == .exe or self.kind == .test_exe;
}
@@ -2690,8 +2690,12 @@ pub const LibExeObjStep = struct {
if (self.emit_h) try zig_args.append("-femit-h");
- if (self.strip) {
- try zig_args.append("--strip");
+ if (self.strip) |strip| {
+ if (strip) {
+ try zig_args.append("-fstrip");
+ } else {
+ try zig_args.append("-fno-strip");
+ }
}
switch (self.compress_debug_sections) {
diff --git a/lib/std/build/CheckObjectStep.zig b/lib/std/build/CheckObjectStep.zig
index 0acc659d20..09a8d3c148 100644
--- a/lib/std/build/CheckObjectStep.zig
+++ b/lib/std/build/CheckObjectStep.zig
@@ -644,6 +644,8 @@ const WasmDumper = struct {
if (mem.eql(u8, name, "name")) {
try parseDumpNames(reader, writer, data);
+ } else if (mem.eql(u8, name, "producers")) {
+ try parseDumpProducers(reader, writer, data);
}
// TODO: Implement parsing and dumping other custom sections (such as relocations)
},
@@ -863,4 +865,38 @@ const WasmDumper = struct {
}
}
}
+
+ fn parseDumpProducers(reader: anytype, writer: anytype, data: []const u8) !void {
+ const field_count = try std.leb.readULEB128(u32, reader);
+ try writer.print("fields {d}\n", .{field_count});
+ var current_field: u32 = 0;
+ while (current_field < field_count) : (current_field += 1) {
+ const field_name_length = try std.leb.readULEB128(u32, reader);
+ const field_name = data[reader.context.pos..][0..field_name_length];
+ reader.context.pos += field_name_length;
+
+ const value_count = try std.leb.readULEB128(u32, reader);
+ try writer.print(
+ \\field_name {s}
+ \\values {d}
+ , .{ field_name, value_count });
+ try writer.writeByte('\n');
+ var current_value: u32 = 0;
+ while (current_value < value_count) : (current_value += 1) {
+ const value_length = try std.leb.readULEB128(u32, reader);
+ const value = data[reader.context.pos..][0..value_length];
+ reader.context.pos += value_length;
+
+ const version_length = try std.leb.readULEB128(u32, reader);
+ const version = data[reader.context.pos..][0..version_length];
+ reader.context.pos += version_length;
+
+ try writer.print(
+ \\value_name {s}
+ \\version {s}
+ , .{ value, version });
+ try writer.writeByte('\n');
+ }
+ }
+ }
};
diff --git a/lib/std/compress/deflate.zig b/lib/std/compress/deflate.zig
index af3b263304..7b079a6039 100644
--- a/lib/std/compress/deflate.zig
+++ b/lib/std/compress/deflate.zig
@@ -5,6 +5,7 @@ const deflate = @import("deflate/compressor.zig");
const inflate = @import("deflate/decompressor.zig");
pub const Compression = deflate.Compression;
+pub const CompressorOptions = deflate.CompressorOptions;
pub const Compressor = deflate.Compressor;
pub const Decompressor = inflate.Decompressor;
diff --git a/lib/std/compress/deflate/compressor.zig b/lib/std/compress/deflate/compressor.zig
index 3f3af3da32..32ecbdb3d8 100644
--- a/lib/std/compress/deflate/compressor.zig
+++ b/lib/std/compress/deflate/compressor.zig
@@ -202,7 +202,7 @@ fn bulkHash4(b: []u8, dst: []u32) u32 {
return hb;
}
-const CompressorOptions = struct {
+pub const CompressorOptions = struct {
level: Compression = .default_compression,
dictionary: ?[]const u8 = null,
};
diff --git a/lib/std/enums.zig b/lib/std/enums.zig
index ca7278b1d9..51e3d6def5 100644
--- a/lib/std/enums.zig
+++ b/lib/std/enums.zig
@@ -696,7 +696,7 @@ pub fn IndexedArray(comptime I: type, comptime V: type, comptime Ext: fn (type)
}
/// Verifies that a type is a valid Indexer, providing a helpful
-/// compile error if not. An Indexer maps a comptime known set
+/// compile error if not. An Indexer maps a comptime-known set
/// of keys to a dense set of zero-based indices.
/// The indexer interface must look like this:
/// ```
diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig
index e57a5da6be..0c9ecbc08c 100644
--- a/lib/std/fmt.zig
+++ b/lib/std/fmt.zig
@@ -29,7 +29,7 @@ pub const FormatOptions = struct {
/// If `writer` returns an error, the error is returned from `format` and
/// `writer` is not called again.
///
-/// The format string must be comptime known and may contain placeholders following
+/// The format string must be comptime-known and may contain placeholders following
/// this format:
/// `{[argument][specifier]:[fill][alignment][width].[precision]}`
///
diff --git a/lib/std/http/status.zig b/lib/std/http/status.zig
index bf96b71c0a..91738e0533 100644
--- a/lib/std/http/status.zig
+++ b/lib/std/http/status.zig
@@ -5,7 +5,7 @@ const std = @import("../std.zig");
pub const Status = enum(u10) {
@"continue" = 100, // RFC7231, Section 6.2.1
- switching_protcols = 101, // RFC7231, Section 6.2.2
+ switching_protocols = 101, // RFC7231, Section 6.2.2
processing = 102, // RFC2518
early_hints = 103, // RFC8297
@@ -77,7 +77,7 @@ pub const Status = enum(u10) {
return switch (self) {
// 1xx statuses
.@"continue" => "Continue",
- .switching_protcols => "Switching Protocols",
+ .switching_protocols => "Switching Protocols",
.processing => "Processing",
.early_hints => "Early Hints",
diff --git a/lib/std/math.zig b/lib/std/math.zig
index 18c8f555d4..4845808055 100644
--- a/lib/std/math.zig
+++ b/lib/std/math.zig
@@ -598,6 +598,8 @@ test "shr" {
pub fn rotr(comptime T: type, x: T, r: anytype) T {
if (@typeInfo(T) == .Vector) {
const C = @typeInfo(T).Vector.child;
+ if (C == u0) return 0;
+
if (@typeInfo(C).Int.signedness == .signed) {
@compileError("cannot rotate signed integers");
}
@@ -606,8 +608,15 @@ pub fn rotr(comptime T: type, x: T, r: anytype) T {
} else if (@typeInfo(T).Int.signedness == .signed) {
@compileError("cannot rotate signed integer");
} else {
- const ar = @intCast(Log2Int(T), @mod(r, @typeInfo(T).Int.bits));
- return x >> ar | x << (1 +% ~ar);
+ if (T == u0) return 0;
+
+ if (isPowerOfTwo(@typeInfo(T).Int.bits)) {
+ const ar = @intCast(Log2Int(T), @mod(r, @typeInfo(T).Int.bits));
+ return x >> ar | x << (1 +% ~ar);
+ } else {
+ const ar = @mod(r, @typeInfo(T).Int.bits);
+ return shr(T, x, ar) | shl(T, x, @typeInfo(T).Int.bits - ar);
+ }
}
}
@@ -618,6 +627,9 @@ test "rotr" {
// https://github.com/ziglang/zig/issues/12012
return error.SkipZigTest;
}
+ try testing.expect(rotr(u0, 0b0, @as(usize, 3)) == 0b0);
+ try testing.expect(rotr(u5, 0b00001, @as(usize, 0)) == 0b00001);
+ try testing.expect(rotr(u6, 0b000001, @as(usize, 7)) == 0b100000);
try testing.expect(rotr(u8, 0b00000001, @as(usize, 0)) == 0b00000001);
try testing.expect(rotr(u8, 0b00000001, @as(usize, 9)) == 0b10000000);
try testing.expect(rotr(u8, 0b00000001, @as(usize, 8)) == 0b00000001);
@@ -632,6 +644,8 @@ test "rotr" {
pub fn rotl(comptime T: type, x: T, r: anytype) T {
if (@typeInfo(T) == .Vector) {
const C = @typeInfo(T).Vector.child;
+ if (C == u0) return 0;
+
if (@typeInfo(C).Int.signedness == .signed) {
@compileError("cannot rotate signed integers");
}
@@ -640,8 +654,15 @@ pub fn rotl(comptime T: type, x: T, r: anytype) T {
} else if (@typeInfo(T).Int.signedness == .signed) {
@compileError("cannot rotate signed integer");
} else {
- const ar = @intCast(Log2Int(T), @mod(r, @typeInfo(T).Int.bits));
- return x << ar | x >> 1 +% ~ar;
+ if (T == u0) return 0;
+
+ if (isPowerOfTwo(@typeInfo(T).Int.bits)) {
+ const ar = @intCast(Log2Int(T), @mod(r, @typeInfo(T).Int.bits));
+ return x << ar | x >> 1 +% ~ar;
+ } else {
+ const ar = @mod(r, @typeInfo(T).Int.bits);
+ return shl(T, x, ar) | shr(T, x, @typeInfo(T).Int.bits - ar);
+ }
}
}
@@ -652,6 +673,9 @@ test "rotl" {
// https://github.com/ziglang/zig/issues/12012
return error.SkipZigTest;
}
+ try testing.expect(rotl(u0, 0b0, @as(usize, 3)) == 0b0);
+ try testing.expect(rotl(u5, 0b00001, @as(usize, 0)) == 0b00001);
+ try testing.expect(rotl(u6, 0b000001, @as(usize, 7)) == 0b000010);
try testing.expect(rotl(u8, 0b00000001, @as(usize, 0)) == 0b00000001);
try testing.expect(rotl(u8, 0b00000001, @as(usize, 9)) == 0b00000010);
try testing.expect(rotl(u8, 0b00000001, @as(usize, 8)) == 0b00000001);
@@ -762,14 +786,14 @@ fn testOverflow() !void {
try testing.expect((shlExact(i32, 0b11, 4) catch unreachable) == 0b110000);
}
-/// Returns the absolute value of x, where x is a value of an integer
-/// type.
+/// Returns the absolute value of x, where x is a value of a signed integer type.
+/// See also: `absCast`
pub fn absInt(x: anytype) !@TypeOf(x) {
const T = @TypeOf(x);
comptime assert(@typeInfo(T) == .Int); // must pass an integer to absInt
comptime assert(@typeInfo(T).Int.signedness == .signed); // must pass a signed integer to absInt
- if (x == minInt(@TypeOf(x))) {
+ if (x == minInt(T)) {
return error.Overflow;
} else {
@setRuntimeSafety(false);
@@ -977,6 +1001,7 @@ pub inline fn fabs(value: anytype) @TypeOf(value) {
/// Returns the absolute value of the integer parameter.
/// Result is an unsigned integer.
+/// See also: `absInt`
pub fn absCast(x: anytype) switch (@typeInfo(@TypeOf(x))) {
.ComptimeInt => comptime_int,
.Int => |int_info| std.meta.Int(.unsigned, int_info.bits),
diff --git a/lib/std/math/big/int.zig b/lib/std/math/big/int.zig
index ee6ccaacac..e7c8ed72a2 100644
--- a/lib/std/math/big/int.zig
+++ b/lib/std/math/big/int.zig
@@ -2378,6 +2378,7 @@ pub const Managed = struct {
/// This is identical to an `init`, followed by a `set`.
pub fn initSet(allocator: Allocator, value: anytype) !Managed {
var s = try Managed.init(allocator);
+ errdefer s.deinit();
try s.set(value);
return s;
}
diff --git a/lib/std/math/big/rational.zig b/lib/std/math/big/rational.zig
index 61e2194eea..98433b26ff 100644
--- a/lib/std/math/big/rational.zig
+++ b/lib/std/math/big/rational.zig
@@ -30,8 +30,10 @@ pub const Rational = struct {
/// Create a new Rational. A small amount of memory will be allocated on initialization.
/// This will be 2 * Int.default_capacity.
pub fn init(a: Allocator) !Rational {
+ var p = try Int.init(a);
+ errdefer p.deinit();
return Rational{
- .p = try Int.init(a),
+ .p = p,
.q = try Int.initSet(a, 1),
};
}
diff --git a/lib/std/math/ilogb.zig b/lib/std/math/ilogb.zig
index 5056ba30c2..88ae168406 100644
--- a/lib/std/math/ilogb.zig
+++ b/lib/std/math/ilogb.zig
@@ -15,175 +15,157 @@ const minInt = std.math.minInt;
///
/// Special Cases:
/// - ilogb(+-inf) = maxInt(i32)
-/// - ilogb(0) = maxInt(i32)
-/// - ilogb(nan) = maxInt(i32)
+/// - ilogb(+-0) = minInt(i32)
+/// - ilogb(nan) = minInt(i32)
pub fn ilogb(x: anytype) i32 {
const T = @TypeOf(x);
- return switch (T) {
- f32 => ilogb32(x),
- f64 => ilogb64(x),
- f128 => ilogb128(x),
- else => @compileError("ilogb not implemented for " ++ @typeName(T)),
- };
+ return ilogbX(T, x);
}
-// TODO: unify these implementations with generics
+pub const fp_ilogbnan = minInt(i32);
+pub const fp_ilogb0 = minInt(i32);
-// NOTE: Should these be exposed publicly?
-const fp_ilogbnan = -1 - @as(i32, maxInt(u32) >> 1);
-const fp_ilogb0 = fp_ilogbnan;
+fn ilogbX(comptime T: type, x: T) i32 {
+ const typeWidth = @typeInfo(T).Float.bits;
+ const significandBits = math.floatMantissaBits(T);
+ const exponentBits = math.floatExponentBits(T);
-fn ilogb32(x: f32) i32 {
- var u = @bitCast(u32, x);
- var e = @intCast(i32, (u >> 23) & 0xFF);
+ const Z = std.meta.Int(.unsigned, typeWidth);
- // TODO: We should be able to merge this with the lower check.
- if (math.isNan(x)) {
- return maxInt(i32);
- }
+ const signBit = (@as(Z, 1) << (significandBits + exponentBits));
+ const maxExponent = ((1 << exponentBits) - 1);
+ const exponentBias = (maxExponent >> 1);
- if (e == 0) {
- u <<= 9;
- if (u == 0) {
- math.raiseInvalid();
- return fp_ilogb0;
- }
+ const absMask = signBit - 1;
- // subnormal
- e = -0x7F;
- while (u >> 31 == 0) : (u <<= 1) {
- e -= 1;
- }
- return e;
- }
-
- if (e == 0xFF) {
- math.raiseInvalid();
- if (u << 9 != 0) {
- return fp_ilogbnan;
- } else {
- return maxInt(i32);
- }
- }
-
- return e - 0x7F;
-}
-
-fn ilogb64(x: f64) i32 {
- var u = @bitCast(u64, x);
- var e = @intCast(i32, (u >> 52) & 0x7FF);
-
- if (math.isNan(x)) {
- return maxInt(i32);
- }
+ var u = @bitCast(Z, x) & absMask;
+ var e = @intCast(i32, u >> significandBits);
if (e == 0) {
- u <<= 12;
if (u == 0) {
math.raiseInvalid();
return fp_ilogb0;
}
- // subnormal
- e = -0x3FF;
- while (u >> 63 == 0) : (u <<= 1) {
- e -= 1;
- }
- return e;
+ // offset sign bit, exponent bits, and integer bit (if present) + bias
+ const offset = 1 + exponentBits + @boolToInt(T == f80) - exponentBias;
+ return offset - @intCast(i32, @clz(u));
}
- if (e == 0x7FF) {
+ if (e == maxExponent) {
math.raiseInvalid();
- if (u << 12 != 0) {
- return fp_ilogbnan;
- } else {
- return maxInt(i32);
- }
+ if (u > @bitCast(Z, math.inf(T))) {
+ return fp_ilogbnan; // u is a NaN
+ } else return maxInt(i32);
}
- return e - 0x3FF;
+ return e - exponentBias;
}
-fn ilogb128(x: f128) i32 {
- var u = @bitCast(u128, x);
- var e = @intCast(i32, (u >> 112) & 0x7FFF);
-
- if (math.isNan(x)) {
- return maxInt(i32);
- }
-
- if (e == 0) {
- u <<= 16;
- if (u == 0) {
- math.raiseInvalid();
- return fp_ilogb0;
- }
-
- // subnormal x
- return ilogb128(x * 0x1p120) - 120;
- }
-
- if (e == 0x7FFF) {
- math.raiseInvalid();
- if (u << 16 != 0) {
- return fp_ilogbnan;
- } else {
- return maxInt(i32);
- }
- }
-
- return e - 0x3FFF;
+test "type dispatch" {
+ try expect(ilogb(@as(f32, 0.2)) == ilogbX(f32, 0.2));
+ try expect(ilogb(@as(f64, 0.2)) == ilogbX(f64, 0.2));
}
-test "type dispatch" {
- try expect(ilogb(@as(f32, 0.2)) == ilogb32(0.2));
- try expect(ilogb(@as(f64, 0.2)) == ilogb64(0.2));
+test "16" {
+ try expect(ilogbX(f16, 0.0) == fp_ilogb0);
+ try expect(ilogbX(f16, 0.5) == -1);
+ try expect(ilogbX(f16, 0.8923) == -1);
+ try expect(ilogbX(f16, 10.0) == 3);
+ try expect(ilogbX(f16, -65504) == 15);
+ try expect(ilogbX(f16, 2398.23) == 11);
+
+ try expect(ilogbX(f16, 0x1p-1) == -1);
+ try expect(ilogbX(f16, 0x1p-17) == -17);
+ try expect(ilogbX(f16, 0x1p-24) == -24);
}
test "32" {
- try expect(ilogb32(0.0) == fp_ilogb0);
- try expect(ilogb32(0.5) == -1);
- try expect(ilogb32(0.8923) == -1);
- try expect(ilogb32(10.0) == 3);
- try expect(ilogb32(-123984) == 16);
- try expect(ilogb32(2398.23) == 11);
+ try expect(ilogbX(f32, 0.0) == fp_ilogb0);
+ try expect(ilogbX(f32, 0.5) == -1);
+ try expect(ilogbX(f32, 0.8923) == -1);
+ try expect(ilogbX(f32, 10.0) == 3);
+ try expect(ilogbX(f32, -123984) == 16);
+ try expect(ilogbX(f32, 2398.23) == 11);
+
+ try expect(ilogbX(f32, 0x1p-1) == -1);
+ try expect(ilogbX(f32, 0x1p-122) == -122);
+ try expect(ilogbX(f32, 0x1p-127) == -127);
}
test "64" {
- try expect(ilogb64(0.0) == fp_ilogb0);
- try expect(ilogb64(0.5) == -1);
- try expect(ilogb64(0.8923) == -1);
- try expect(ilogb64(10.0) == 3);
- try expect(ilogb64(-123984) == 16);
- try expect(ilogb64(2398.23) == 11);
+ try expect(ilogbX(f64, 0.0) == fp_ilogb0);
+ try expect(ilogbX(f64, 0.5) == -1);
+ try expect(ilogbX(f64, 0.8923) == -1);
+ try expect(ilogbX(f64, 10.0) == 3);
+ try expect(ilogbX(f64, -123984) == 16);
+ try expect(ilogbX(f64, 2398.23) == 11);
+
+ try expect(ilogbX(f64, 0x1p-1) == -1);
+ try expect(ilogbX(f64, 0x1p-127) == -127);
+ try expect(ilogbX(f64, 0x1p-1012) == -1012);
+ try expect(ilogbX(f64, 0x1p-1023) == -1023);
+}
+
+test "80" {
+ try expect(ilogbX(f80, 0.0) == fp_ilogb0);
+ try expect(ilogbX(f80, 0.5) == -1);
+ try expect(ilogbX(f80, 0.8923) == -1);
+ try expect(ilogbX(f80, 10.0) == 3);
+ try expect(ilogbX(f80, -123984) == 16);
+ try expect(ilogbX(f80, 2398.23) == 11);
+
+ try expect(ilogbX(f80, 0x1p-1) == -1);
+ try expect(ilogbX(f80, 0x1p-127) == -127);
+ try expect(ilogbX(f80, 0x1p-1023) == -1023);
+ try expect(ilogbX(f80, 0x1p-16383) == -16383);
}
test "128" {
- try expect(ilogb128(0.0) == fp_ilogb0);
- try expect(ilogb128(0.5) == -1);
- try expect(ilogb128(0.8923) == -1);
- try expect(ilogb128(10.0) == 3);
- try expect(ilogb128(-123984) == 16);
- try expect(ilogb128(2398.23) == 11);
+ try expect(ilogbX(f128, 0.0) == fp_ilogb0);
+ try expect(ilogbX(f128, 0.5) == -1);
+ try expect(ilogbX(f128, 0.8923) == -1);
+ try expect(ilogbX(f128, 10.0) == 3);
+ try expect(ilogbX(f128, -123984) == 16);
+ try expect(ilogbX(f128, 2398.23) == 11);
+
+ try expect(ilogbX(f128, 0x1p-1) == -1);
+ try expect(ilogbX(f128, 0x1p-127) == -127);
+ try expect(ilogbX(f128, 0x1p-1023) == -1023);
+ try expect(ilogbX(f128, 0x1p-16383) == -16383);
+}
+
+test "16 special" {
+ try expect(ilogbX(f16, math.inf(f16)) == maxInt(i32));
+ try expect(ilogbX(f16, -math.inf(f16)) == maxInt(i32));
+ try expect(ilogbX(f16, 0.0) == minInt(i32));
+ try expect(ilogbX(f16, math.nan(f16)) == fp_ilogbnan);
}
test "32 special" {
- try expect(ilogb32(math.inf(f32)) == maxInt(i32));
- try expect(ilogb32(-math.inf(f32)) == maxInt(i32));
- try expect(ilogb32(0.0) == minInt(i32));
- try expect(ilogb32(math.nan(f32)) == maxInt(i32));
+ try expect(ilogbX(f32, math.inf(f32)) == maxInt(i32));
+ try expect(ilogbX(f32, -math.inf(f32)) == maxInt(i32));
+ try expect(ilogbX(f32, 0.0) == minInt(i32));
+ try expect(ilogbX(f32, math.nan(f32)) == fp_ilogbnan);
}
test "64 special" {
- try expect(ilogb64(math.inf(f64)) == maxInt(i32));
- try expect(ilogb64(-math.inf(f64)) == maxInt(i32));
- try expect(ilogb64(0.0) == minInt(i32));
- try expect(ilogb64(math.nan(f64)) == maxInt(i32));
+ try expect(ilogbX(f64, math.inf(f64)) == maxInt(i32));
+ try expect(ilogbX(f64, -math.inf(f64)) == maxInt(i32));
+ try expect(ilogbX(f64, 0.0) == minInt(i32));
+ try expect(ilogbX(f64, math.nan(f64)) == fp_ilogbnan);
+}
+
+test "80 special" {
+ try expect(ilogbX(f80, math.inf(f80)) == maxInt(i32));
+ try expect(ilogbX(f80, -math.inf(f80)) == maxInt(i32));
+ try expect(ilogbX(f80, 0.0) == minInt(i32));
+ try expect(ilogbX(f80, math.nan(f80)) == fp_ilogbnan);
}
test "128 special" {
- try expect(ilogb128(math.inf(f128)) == maxInt(i32));
- try expect(ilogb128(-math.inf(f128)) == maxInt(i32));
- try expect(ilogb128(0.0) == minInt(i32));
- try expect(ilogb128(math.nan(f128)) == maxInt(i32));
+ try expect(ilogbX(f128, math.inf(f128)) == maxInt(i32));
+ try expect(ilogbX(f128, -math.inf(f128)) == maxInt(i32));
+ try expect(ilogbX(f128, 0.0) == minInt(i32));
+ try expect(ilogbX(f128, math.nan(f128)) == fp_ilogbnan);
}
diff --git a/lib/std/math/ldexp.zig b/lib/std/math/ldexp.zig
index 57d8896c9c..d2fd8db9b7 100644
--- a/lib/std/math/ldexp.zig
+++ b/lib/std/math/ldexp.zig
@@ -1,91 +1,148 @@
-// Ported from musl, which is licensed under the MIT license:
-// https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT
-//
-// https://git.musl-libc.org/cgit/musl/tree/src/math/ldexpf.c
-// https://git.musl-libc.org/cgit/musl/tree/src/math/ldexp.c
-
const std = @import("std");
const math = std.math;
+const Log2Int = std.math.Log2Int;
const assert = std.debug.assert;
const expect = std.testing.expect;
/// Returns x * 2^n.
pub fn ldexp(x: anytype, n: i32) @TypeOf(x) {
- var base = x;
- var shift = n;
-
- const T = @TypeOf(base);
+ const T = @TypeOf(x);
const TBits = std.meta.Int(.unsigned, @typeInfo(T).Float.bits);
+ const exponent_bits = math.floatExponentBits(T);
const mantissa_bits = math.floatMantissaBits(T);
- const exponent_min = math.floatExponentMin(T);
- const exponent_max = math.floatExponentMax(T);
-
- const exponent_bias = exponent_max;
-
- // fix double rounding errors in subnormal ranges
- // https://git.musl-libc.org/cgit/musl/commit/src/math/ldexp.c?id=8c44a060243f04283ca68dad199aab90336141db
- const scale_min_expo = exponent_min + mantissa_bits + 1;
- const scale_min = @bitCast(T, @as(TBits, scale_min_expo + exponent_bias) << mantissa_bits);
- const scale_max = @bitCast(T, @intCast(TBits, exponent_max + exponent_bias) << mantissa_bits);
-
- // scale `shift` within floating point limits, if possible
- // second pass is possible due to subnormal range
- // third pass always results in +/-0.0 or +/-inf
- if (shift > exponent_max) {
- base *= scale_max;
- shift -= exponent_max;
- if (shift > exponent_max) {
- base *= scale_max;
- shift -= exponent_max;
- if (shift > exponent_max) shift = exponent_max;
+ const fractional_bits = math.floatFractionalBits(T);
+
+ const max_biased_exponent = 2 * math.floatExponentMax(T);
+ const mantissa_mask = @as(TBits, (1 << mantissa_bits) - 1);
+
+ const repr = @bitCast(TBits, x);
+ const sign_bit = repr & (1 << (exponent_bits + mantissa_bits));
+
+ if (math.isNan(x) or !math.isFinite(x))
+ return x;
+
+ var exponent: i32 = @intCast(i32, (repr << 1) >> (mantissa_bits + 1));
+ if (exponent == 0)
+ exponent += (@as(i32, exponent_bits) + @boolToInt(T == f80)) - @clz(repr << 1);
+
+ if (n >= 0) {
+ if (n > max_biased_exponent - exponent) {
+ // Overflow. Return +/- inf
+ return @bitCast(T, @bitCast(TBits, math.inf(T)) | sign_bit);
+ } else if (exponent + n <= 0) {
+ // Result is subnormal
+ return @bitCast(T, (repr << @intCast(Log2Int(TBits), n)) | sign_bit);
+ } else if (exponent <= 0) {
+ // Result is normal, but needs shifting
+ var result = @intCast(TBits, n + exponent) << mantissa_bits;
+ result |= (repr << @intCast(Log2Int(TBits), 1 - exponent)) & mantissa_mask;
+ return @bitCast(T, result | sign_bit);
}
- } else if (shift < exponent_min) {
- base *= scale_min;
- shift -= scale_min_expo;
- if (shift < exponent_min) {
- base *= scale_min;
- shift -= scale_min_expo;
- if (shift < exponent_min) shift = exponent_min;
+
+ // Result needs no shifting
+ return @bitCast(T, repr + (@intCast(TBits, n) << mantissa_bits));
+ } else {
+ if (n <= -exponent) {
+ if (n < -(mantissa_bits + exponent))
+ return @bitCast(T, sign_bit); // Severe underflow. Return +/- 0
+
+ // Result underflowed, we need to shift and round
+ const shift = @intCast(Log2Int(TBits), math.min(-n, -(exponent + n) + 1));
+ const exact_tie: bool = @ctz(repr) == shift - 1;
+ var result = repr & mantissa_mask;
+
+ if (T != f80) // Include integer bit
+ result |= @as(TBits, @boolToInt(exponent > 0)) << fractional_bits;
+ result = @intCast(TBits, (result >> (shift - 1)));
+
+ // Round result, including round-to-even for exact ties
+ result = ((result + 1) >> 1) & ~@as(TBits, @boolToInt(exact_tie));
+ return @bitCast(T, result | sign_bit);
}
- }
- return base * @bitCast(T, @intCast(TBits, shift + exponent_bias) << mantissa_bits);
+ // Result is exact, and needs no shifting
+ return @bitCast(T, repr - (@intCast(TBits, -n) << mantissa_bits));
+ }
}
test "math.ldexp" {
- // TODO derive the various constants here with new maths API
-
- // basic usage
- try expect(ldexp(@as(f16, 1.5), 4) == 24.0);
- try expect(ldexp(@as(f32, 1.5), 4) == 24.0);
- try expect(ldexp(@as(f64, 1.5), 4) == 24.0);
- try expect(ldexp(@as(f128, 1.5), 4) == 24.0);
// subnormals
- try expect(math.isNormal(ldexp(@as(f16, 1.0), -14)));
- try expect(!math.isNormal(ldexp(@as(f16, 1.0), -15)));
- try expect(math.isNormal(ldexp(@as(f32, 1.0), -126)));
- try expect(!math.isNormal(ldexp(@as(f32, 1.0), -127)));
- try expect(math.isNormal(ldexp(@as(f64, 1.0), -1022)));
- try expect(!math.isNormal(ldexp(@as(f64, 1.0), -1023)));
- try expect(math.isNormal(ldexp(@as(f128, 1.0), -16382)));
- try expect(!math.isNormal(ldexp(@as(f128, 1.0), -16383)));
- // unreliable due to lack of native f16 support, see talk on PR #8733
- // try expect(ldexp(@as(f16, 0x1.1FFp-1), -14 - 9) == math.floatTrueMin(f16));
+ try expect(ldexp(@as(f16, 0x1.1FFp14), -14 - 9 - 15) == math.floatTrueMin(f16));
try expect(ldexp(@as(f32, 0x1.3FFFFFp-1), -126 - 22) == math.floatTrueMin(f32));
try expect(ldexp(@as(f64, 0x1.7FFFFFFFFFFFFp-1), -1022 - 51) == math.floatTrueMin(f64));
+ try expect(ldexp(@as(f80, 0x1.7FFFFFFFFFFFFFFEp-1), -16382 - 62) == math.floatTrueMin(f80));
try expect(ldexp(@as(f128, 0x1.7FFFFFFFFFFFFFFFFFFFFFFFFFFFp-1), -16382 - 111) == math.floatTrueMin(f128));
- // float limits
try expect(ldexp(math.floatMax(f32), -128 - 149) > 0.0);
try expect(ldexp(math.floatMax(f32), -128 - 149 - 1) == 0.0);
- try expect(!math.isPositiveInf(ldexp(math.floatTrueMin(f16), 15 + 24)));
- try expect(math.isPositiveInf(ldexp(math.floatTrueMin(f16), 15 + 24 + 1)));
- try expect(!math.isPositiveInf(ldexp(math.floatTrueMin(f32), 127 + 149)));
- try expect(math.isPositiveInf(ldexp(math.floatTrueMin(f32), 127 + 149 + 1)));
- try expect(!math.isPositiveInf(ldexp(math.floatTrueMin(f64), 1023 + 1074)));
- try expect(math.isPositiveInf(ldexp(math.floatTrueMin(f64), 1023 + 1074 + 1)));
- try expect(!math.isPositiveInf(ldexp(math.floatTrueMin(f128), 16383 + 16494)));
- try expect(math.isPositiveInf(ldexp(math.floatTrueMin(f128), 16383 + 16494 + 1)));
+
+ @setEvalBranchQuota(10_000);
+
+ inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {
+ const fractional_bits = math.floatFractionalBits(T);
+
+ const min_exponent = math.floatExponentMin(T);
+ const max_exponent = math.floatExponentMax(T);
+ const exponent_bias = max_exponent;
+
+ // basic usage
+ try expect(ldexp(@as(T, 1.5), 4) == 24.0);
+
+ // normals -> subnormals
+ try expect(math.isNormal(ldexp(@as(T, 1.0), min_exponent)));
+ try expect(!math.isNormal(ldexp(@as(T, 1.0), min_exponent - 1)));
+
+ // normals -> zero
+ try expect(ldexp(@as(T, 1.0), min_exponent - fractional_bits) > 0.0);
+ try expect(ldexp(@as(T, 1.0), min_exponent - fractional_bits - 1) == 0.0);
+
+ // subnormals -> zero
+ try expect(ldexp(math.floatTrueMin(T), 0) > 0.0);
+ try expect(ldexp(math.floatTrueMin(T), -1) == 0.0);
+
+ // Multiplications might flush the denormals to zero, esp. at
+ // runtime, so we manually construct the constants here instead.
+ const Z = std.meta.Int(.unsigned, @bitSizeOf(T));
+ const EightTimesTrueMin = @bitCast(T, @as(Z, 8));
+ const TwoTimesTrueMin = @bitCast(T, @as(Z, 2));
+
+ // subnormals -> subnormals
+ try expect(ldexp(math.floatTrueMin(T), 3) == EightTimesTrueMin);
+ try expect(ldexp(EightTimesTrueMin, -2) == TwoTimesTrueMin);
+ try expect(ldexp(EightTimesTrueMin, -3) == math.floatTrueMin(T));
+
+ // subnormals -> normals (+)
+ try expect(ldexp(math.floatTrueMin(T), fractional_bits) == math.floatMin(T));
+ try expect(ldexp(math.floatTrueMin(T), fractional_bits - 1) == math.floatMin(T) * 0.5);
+
+ // subnormals -> normals (-)
+ try expect(ldexp(-math.floatTrueMin(T), fractional_bits) == -math.floatMin(T));
+ try expect(ldexp(-math.floatTrueMin(T), fractional_bits - 1) == -math.floatMin(T) * 0.5);
+
+ // subnormals -> float limits (+inf)
+ try expect(math.isFinite(ldexp(math.floatTrueMin(T), max_exponent + exponent_bias + fractional_bits - 1)));
+ try expect(ldexp(math.floatTrueMin(T), max_exponent + exponent_bias + fractional_bits) == math.inf(T));
+
+ // subnormals -> float limits (-inf)
+ try expect(math.isFinite(ldexp(-math.floatTrueMin(T), max_exponent + exponent_bias + fractional_bits - 1)));
+ try expect(ldexp(-math.floatTrueMin(T), max_exponent + exponent_bias + fractional_bits) == -math.inf(T));
+
+ // infinity -> infinity
+ try expect(ldexp(math.inf(T), math.maxInt(i32)) == math.inf(T));
+ try expect(ldexp(math.inf(T), math.minInt(i32)) == math.inf(T));
+ try expect(ldexp(math.inf(T), max_exponent) == math.inf(T));
+ try expect(ldexp(math.inf(T), min_exponent) == math.inf(T));
+ try expect(ldexp(-math.inf(T), math.maxInt(i32)) == -math.inf(T));
+ try expect(ldexp(-math.inf(T), math.minInt(i32)) == -math.inf(T));
+
+ // extremely large n
+ try expect(ldexp(math.floatMax(T), math.maxInt(i32)) == math.inf(T));
+ try expect(ldexp(math.floatMax(T), -math.maxInt(i32)) == 0.0);
+ try expect(ldexp(math.floatMax(T), math.minInt(i32)) == 0.0);
+ try expect(ldexp(math.floatTrueMin(T), math.maxInt(i32)) == math.inf(T));
+ try expect(ldexp(math.floatTrueMin(T), -math.maxInt(i32)) == 0.0);
+ try expect(ldexp(math.floatTrueMin(T), math.minInt(i32)) == 0.0);
+ }
}
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
index 619428e3d3..1ed177c86b 100644
--- a/lib/std/os/linux.zig
+++ b/lib/std/os/linux.zig
@@ -3174,6 +3174,17 @@ pub const sockaddr = extern struct {
path: [108]u8,
};
+ /// Packet socket address
+ pub const ll = extern struct {
+ family: sa_family_t = AF.PACKET,
+ protocol: u16,
+ ifindex: i32,
+ hatype: u16,
+ pkttype: u8,
+ halen: u8,
+ addr: [8]u8,
+ };
+
/// Netlink socket address
pub const nl = extern struct {
family: sa_family_t = AF.NETLINK,
diff --git a/lib/std/os/linux/io_uring.zig b/lib/std/os/linux/io_uring.zig
index 317064149b..01fd7fa84b 100644
--- a/lib/std/os/linux/io_uring.zig
+++ b/lib/std/os/linux/io_uring.zig
@@ -474,8 +474,8 @@ pub const IO_Uring = struct {
self: *IO_Uring,
user_data: u64,
fd: os.fd_t,
- addr: *os.sockaddr,
- addrlen: *os.socklen_t,
+ addr: ?*os.sockaddr,
+ addrlen: ?*os.socklen_t,
flags: u32,
) !*linux.io_uring_sqe {
const sqe = try self.get_sqe();
@@ -1292,8 +1292,8 @@ pub inline fn __io_uring_prep_poll_mask(poll_mask: u32) u32 {
pub fn io_uring_prep_accept(
sqe: *linux.io_uring_sqe,
fd: os.fd_t,
- addr: *os.sockaddr,
- addrlen: *os.socklen_t,
+ addr: ?*os.sockaddr,
+ addrlen: ?*os.socklen_t,
flags: u32,
) void {
// `addr` holds a pointer to `sockaddr`, and `addr2` holds a pointer to socklen_t`.
diff --git a/lib/std/os/uefi/protocols/managed_network_protocol.zig b/lib/std/os/uefi/protocols/managed_network_protocol.zig
index 1c9aa6cb8a..3f35f03b50 100644
--- a/lib/std/os/uefi/protocols/managed_network_protocol.zig
+++ b/lib/std/os/uefi/protocols/managed_network_protocol.zig
@@ -15,7 +15,7 @@ pub const ManagedNetworkProtocol = extern struct {
_transmit: std.meta.FnPtr(fn (*const ManagedNetworkProtocol, *const ManagedNetworkCompletionToken) callconv(.C) Status),
_receive: std.meta.FnPtr(fn (*const ManagedNetworkProtocol, *const ManagedNetworkCompletionToken) callconv(.C) Status),
_cancel: std.meta.FnPtr(fn (*const ManagedNetworkProtocol, ?*const ManagedNetworkCompletionToken) callconv(.C) Status),
- _poll: std.meta.FnPtr(fn (*const ManagedNetworkProtocol) callconv(.C) usize),
+ _poll: std.meta.FnPtr(fn (*const ManagedNetworkProtocol) callconv(.C) Status),
/// Returns the operational parameters for the current MNP child driver.
/// May also support returning the underlying SNP driver mode data.
@@ -31,8 +31,7 @@ pub const ManagedNetworkProtocol = extern struct {
/// Translates an IP multicast address to a hardware (MAC) multicast address.
/// This function may be unsupported in some MNP implementations.
pub fn mcastIpToMac(self: *const ManagedNetworkProtocol, ipv6flag: bool, ipaddress: *const anyopaque, mac_address: *MacAddress) Status {
- _ = mac_address;
- return self._mcast_ip_to_mac(self, ipv6flag, ipaddress);
+ return self._mcast_ip_to_mac(self, ipv6flag, ipaddress, mac_address);
}
/// Enables and disables receive filters for multicast address.
diff --git a/lib/std/os/uefi/protocols/simple_text_input_ex_protocol.zig b/lib/std/os/uefi/protocols/simple_text_input_ex_protocol.zig
index 59d6e1a8d2..d6a6941657 100644
--- a/lib/std/os/uefi/protocols/simple_text_input_ex_protocol.zig
+++ b/lib/std/os/uefi/protocols/simple_text_input_ex_protocol.zig
@@ -10,7 +10,7 @@ pub const SimpleTextInputExProtocol = extern struct {
_read_key_stroke_ex: std.meta.FnPtr(fn (*const SimpleTextInputExProtocol, *KeyData) callconv(.C) Status),
wait_for_key_ex: Event,
_set_state: std.meta.FnPtr(fn (*const SimpleTextInputExProtocol, *const u8) callconv(.C) Status),
- _register_key_notify: std.meta.FnPtr(fn (*const SimpleTextInputExProtocol, *const KeyData, fn (*const KeyData) callconv(.C) usize, **anyopaque) callconv(.C) Status),
+ _register_key_notify: std.meta.FnPtr(fn (*const SimpleTextInputExProtocol, *const KeyData, std.meta.FnPtr(fn (*const KeyData) callconv(.C) usize), **anyopaque) callconv(.C) Status),
_unregister_key_notify: std.meta.FnPtr(fn (*const SimpleTextInputExProtocol, *const anyopaque) callconv(.C) Status),
/// Resets the input device hardware.
@@ -29,7 +29,7 @@ pub const SimpleTextInputExProtocol = extern struct {
}
/// Register a notification function for a particular keystroke for the input device.
- pub fn registerKeyNotify(self: *const SimpleTextInputExProtocol, key_data: *const KeyData, notify: fn (*const KeyData) callconv(.C) usize, handle: **anyopaque) Status {
+ pub fn registerKeyNotify(self: *const SimpleTextInputExProtocol, key_data: *const KeyData, notify: std.meta.FnPtr(fn (*const KeyData) callconv(.C) usize), handle: **anyopaque) Status {
return self._register_key_notify(self, key_data, notify, handle);
}
diff --git a/lib/std/os/uefi/tables/boot_services.zig b/lib/std/os/uefi/tables/boot_services.zig
index 068cd1272c..810477453d 100644
--- a/lib/std/os/uefi/tables/boot_services.zig
+++ b/lib/std/os/uefi/tables/boot_services.zig
@@ -191,7 +191,7 @@ pub const BootServices = extern struct {
pub const tpl_high_level: usize = 31;
};
-pub const EfiEventNotify = fn (event: Event, ctx: *anyopaque) callconv(.C) void;
+pub const EfiEventNotify = std.meta.FnPtr(fn (event: Event, ctx: *anyopaque) callconv(.C) void);
pub const TimerDelay = enum(u32) {
TimerCancel,
diff --git a/lib/std/testing.zig b/lib/std/testing.zig
index 2279e6ef09..60a778ad7a 100644
--- a/lib/std/testing.zig
+++ b/lib/std/testing.zig
@@ -213,8 +213,8 @@ pub fn expectFmt(expected: []const u8, comptime template: []const u8, args: anyt
/// This function is intended to be used only in tests. When the actual value is
/// not approximately equal to the expected value, prints diagnostics to stderr
/// to show exactly how they are not equal, then returns a test failure error.
-/// See `math.approxEqAbs` for more informations on the tolerance parameter.
-/// The types must be floating point.
+/// See `math.approxEqAbs` for more information on the tolerance parameter.
+/// The types must be floating-point.
pub fn expectApproxEqAbs(expected: anytype, actual: @TypeOf(expected), tolerance: @TypeOf(expected)) !void {
const T = @TypeOf(expected);
@@ -245,8 +245,8 @@ test "expectApproxEqAbs" {
/// This function is intended to be used only in tests. When the actual value is
/// not approximately equal to the expected value, prints diagnostics to stderr
/// to show exactly how they are not equal, then returns a test failure error.
-/// See `math.approxEqRel` for more informations on the tolerance parameter.
-/// The types must be floating point.
+/// See `math.approxEqRel` for more information on the tolerance parameter.
+/// The types must be floating-point.
pub fn expectApproxEqRel(expected: anytype, actual: @TypeOf(expected), tolerance: @TypeOf(expected)) !void {
const T = @TypeOf(expected);
diff --git a/src/AstGen.zig b/src/AstGen.zig
index c12778929c..7534a0d2cc 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -2004,7 +2004,8 @@ fn blockExpr(
return labeledBlockExpr(gz, scope, rl, block_node, statements);
}
- try blockExprStmts(gz, scope, statements);
+ var sub_gz = gz.makeSubBlock(scope);
+ try blockExprStmts(&sub_gz, &sub_gz.base, statements);
return rvalue(gz, rl, .void_value, block_node);
}
@@ -2505,10 +2506,10 @@ fn addEnsureResult(gz: *GenZir, maybe_unused_result: Zir.Inst.Ref, statement: As
.dbg_block_end,
.ensure_result_used,
.ensure_result_non_error,
+ .ensure_err_union_payload_void,
.@"export",
.export_value,
.set_eval_branch_quota,
- .ensure_err_payload_void,
.atomic_store,
.store,
.store_node,
@@ -2772,7 +2773,13 @@ fn varDecl(
}
const ident_name = try astgen.identAsString(name_token);
- try astgen.detectLocalShadowing(scope, ident_name, name_token, ident_name_raw);
+ try astgen.detectLocalShadowing(
+ scope,
+ ident_name,
+ name_token,
+ ident_name_raw,
+ if (token_tags[var_decl.ast.mut_token] == .keyword_const) .@"local constant" else .@"local variable",
+ );
if (var_decl.ast.init_node == 0) {
return astgen.failNode(node, "variables must be initialized", .{});
@@ -3502,7 +3509,7 @@ fn fnDecl(
const param_name = try astgen.identAsString(name_token);
if (!is_extern) {
- try astgen.detectLocalShadowing(params_scope, param_name, name_token, name_bytes);
+ try astgen.detectLocalShadowing(params_scope, param_name, name_token, name_bytes, .@"function parameter");
}
break :blk param_name;
} else if (!is_extern) {
@@ -5181,7 +5188,7 @@ fn orelseCatchExpr(
}
const err_name = try astgen.identAsString(payload);
- try astgen.detectLocalShadowing(scope, err_name, payload, err_str);
+ try astgen.detectLocalShadowing(scope, err_name, payload, err_str, .@"capture");
err_val_scope = .{
.parent = &else_scope.base,
@@ -5480,7 +5487,7 @@ fn ifExpr(
const token_name_str = tree.tokenSlice(token_name_index);
if (mem.eql(u8, "_", token_name_str))
break :s &then_scope.base;
- try astgen.detectLocalShadowing(&then_scope.base, ident_name, token_name_index, token_name_str);
+ try astgen.detectLocalShadowing(&then_scope.base, ident_name, token_name_index, token_name_str, .@"capture");
payload_val_scope = .{
.parent = &then_scope.base,
.gen_zir = &then_scope,
@@ -5492,6 +5499,7 @@ fn ifExpr(
try then_scope.addDbgVar(.dbg_var_val, ident_name, payload_inst);
break :s &payload_val_scope.base;
} else {
+ _ = try then_scope.addUnNode(.ensure_err_union_payload_void, cond.inst, node);
break :s &then_scope.base;
}
} else if (if_full.payload_token) |payload_token| {
@@ -5505,7 +5513,7 @@ fn ifExpr(
break :s &then_scope.base;
const payload_inst = try then_scope.addUnNode(tag, cond.inst, if_full.ast.then_expr);
const ident_name = try astgen.identAsString(ident_token);
- try astgen.detectLocalShadowing(&then_scope.base, ident_name, ident_token, ident_bytes);
+ try astgen.detectLocalShadowing(&then_scope.base, ident_name, ident_token, ident_bytes, .@"capture");
payload_val_scope = .{
.parent = &then_scope.base,
.gen_zir = &then_scope,
@@ -5551,7 +5559,7 @@ fn ifExpr(
const error_token_str = tree.tokenSlice(error_token);
if (mem.eql(u8, "_", error_token_str))
break :s &else_scope.base;
- try astgen.detectLocalShadowing(&else_scope.base, ident_name, error_token, error_token_str);
+ try astgen.detectLocalShadowing(&else_scope.base, ident_name, error_token, error_token_str, .@"capture");
payload_val_scope = .{
.parent = &else_scope.base,
.gen_zir = &else_scope,
@@ -5816,7 +5824,7 @@ fn whileExpr(
break :s &then_scope.base;
const payload_name_loc = payload_token + @boolToInt(payload_is_ref);
const ident_name = try astgen.identAsString(payload_name_loc);
- try astgen.detectLocalShadowing(&then_scope.base, ident_name, payload_name_loc, ident_bytes);
+ try astgen.detectLocalShadowing(&then_scope.base, ident_name, payload_name_loc, ident_bytes, .@"capture");
payload_val_scope = .{
.parent = &then_scope.base,
.gen_zir = &then_scope,
@@ -5829,6 +5837,7 @@ fn whileExpr(
dbg_var_inst = indexToRef(payload_inst);
break :s &payload_val_scope.base;
} else {
+ _ = try then_scope.addUnNode(.ensure_err_union_payload_void, cond.inst, node);
break :s &then_scope.base;
}
} else if (while_full.payload_token) |payload_token| {
@@ -5843,7 +5852,7 @@ fn whileExpr(
const ident_bytes = tree.tokenSlice(ident_token);
if (mem.eql(u8, "_", ident_bytes))
break :s &then_scope.base;
- try astgen.detectLocalShadowing(&then_scope.base, ident_name, ident_token, ident_bytes);
+ try astgen.detectLocalShadowing(&then_scope.base, ident_name, ident_token, ident_bytes, .@"capture");
payload_val_scope = .{
.parent = &then_scope.base,
.gen_zir = &then_scope,
@@ -5919,7 +5928,7 @@ fn whileExpr(
const ident_bytes = tree.tokenSlice(error_token);
if (mem.eql(u8, ident_bytes, "_"))
break :s &else_scope.base;
- try astgen.detectLocalShadowing(&else_scope.base, ident_name, error_token, ident_bytes);
+ try astgen.detectLocalShadowing(&else_scope.base, ident_name, error_token, ident_bytes, .@"capture");
payload_val_scope = .{
.parent = &else_scope.base,
.gen_zir = &else_scope,
@@ -6092,7 +6101,7 @@ fn forExpr(
.lhs = array_ptr,
.rhs = index,
});
- try astgen.detectLocalShadowing(&then_scope.base, name_str_index, ident, value_name);
+ try astgen.detectLocalShadowing(&then_scope.base, name_str_index, ident, value_name, .@"capture");
payload_val_scope = .{
.parent = &then_scope.base,
.gen_zir = &then_scope,
@@ -6118,7 +6127,7 @@ fn forExpr(
return astgen.failTok(index_token, "discard of index capture; omit it instead", .{});
}
const index_name = try astgen.identAsString(index_token);
- try astgen.detectLocalShadowing(payload_sub_scope, index_name, index_token, token_bytes);
+ try astgen.detectLocalShadowing(payload_sub_scope, index_name, index_token, token_bytes, .@"loop index capture");
index_scope = .{
.parent = payload_sub_scope,
.gen_zir = &then_scope,
@@ -6433,7 +6442,7 @@ fn switchExpr(
});
}
const capture_name = try astgen.identAsString(ident);
- try astgen.detectLocalShadowing(&case_scope.base, capture_name, ident, ident_slice);
+ try astgen.detectLocalShadowing(&case_scope.base, capture_name, ident, ident_slice, .@"capture");
capture_val_scope = .{
.parent = &case_scope.base,
.gen_zir = &case_scope,
@@ -6458,7 +6467,7 @@ fn switchExpr(
return astgen.failTok(tag_token, "tag capture on non-inline prong", .{});
}
const tag_name = try astgen.identAsString(tag_token);
- try astgen.detectLocalShadowing(payload_sub_scope, tag_name, tag_token, tag_slice);
+ try astgen.detectLocalShadowing(payload_sub_scope, tag_name, tag_token, tag_slice, .@"switch tag capture");
tag_inst = @intCast(Zir.Inst.Index, astgen.instructions.len);
try astgen.instructions.append(gpa, .{
.tag = .switch_capture_tag,
@@ -11669,6 +11678,7 @@ fn detectLocalShadowing(
ident_name: u32,
name_token: Ast.TokenIndex,
token_bytes: []const u8,
+ id_cat: Scope.IdCat,
) !void {
const gpa = astgen.gpa;
if (token_bytes[0] != '@' and isPrimitive(token_bytes)) {
@@ -11682,6 +11692,7 @@ fn detectLocalShadowing(
}
var s = scope;
+ var outer_scope = false;
while (true) switch (s.tag) {
.local_val => {
const local_val = s.cast(Scope.LocalVal).?;
@@ -11689,6 +11700,17 @@ fn detectLocalShadowing(
const name_slice = mem.span(astgen.nullTerminatedString(ident_name));
const name = try gpa.dupe(u8, name_slice);
defer gpa.free(name);
+ if (outer_scope) {
+ return astgen.failTokNotes(name_token, "{s} '{s}' shadows {s} from outer scope", .{
+ @tagName(id_cat), name, @tagName(local_val.id_cat),
+ }, &[_]u32{
+ try astgen.errNoteTok(
+ local_val.token_src,
+ "previous declaration here",
+ .{},
+ ),
+ });
+ }
return astgen.failTokNotes(name_token, "redeclaration of {s} '{s}'", .{
@tagName(local_val.id_cat), name,
}, &[_]u32{
@@ -11707,6 +11729,17 @@ fn detectLocalShadowing(
const name_slice = mem.span(astgen.nullTerminatedString(ident_name));
const name = try gpa.dupe(u8, name_slice);
defer gpa.free(name);
+ if (outer_scope) {
+ return astgen.failTokNotes(name_token, "{s} '{s}' shadows {s} from outer scope", .{
+ @tagName(id_cat), name, @tagName(local_ptr.id_cat),
+ }, &[_]u32{
+ try astgen.errNoteTok(
+ local_ptr.token_src,
+ "previous declaration here",
+ .{},
+ ),
+ });
+ }
return astgen.failTokNotes(name_token, "redeclaration of {s} '{s}'", .{
@tagName(local_ptr.id_cat), name,
}, &[_]u32{
@@ -11720,6 +11753,7 @@ fn detectLocalShadowing(
s = local_ptr.parent;
},
.namespace => {
+ outer_scope = true;
const ns = s.cast(Scope.Namespace).?;
const decl_node = ns.decls.get(ident_name) orelse {
s = ns.parent;
@@ -11728,13 +11762,16 @@ fn detectLocalShadowing(
const name_slice = mem.span(astgen.nullTerminatedString(ident_name));
const name = try gpa.dupe(u8, name_slice);
defer gpa.free(name);
- return astgen.failTokNotes(name_token, "local shadows declaration of '{s}'", .{
- name,
+ return astgen.failTokNotes(name_token, "{s} shadows declaration of '{s}'", .{
+ @tagName(id_cat), name,
}, &[_]u32{
try astgen.errNoteNode(decl_node, "declared here", .{}),
});
},
- .gen_zir => s = s.cast(GenZir).?.parent,
+ .gen_zir => {
+ s = s.cast(GenZir).?.parent;
+ outer_scope = true;
+ },
.defer_normal, .defer_error => s = s.cast(Scope.Defer).?.parent,
.top => break,
};
@@ -11844,8 +11881,8 @@ fn scanDecls(astgen: *AstGen, namespace: *Scope.Namespace, members: []const Ast.
.local_val => {
const local_val = s.cast(Scope.LocalVal).?;
if (local_val.name == name_str_index) {
- return astgen.failTokNotes(name_token, "redeclaration of {s} '{s}'", .{
- @tagName(local_val.id_cat), token_bytes,
+ return astgen.failTokNotes(name_token, "declaration '{s}' shadows {s} from outer scope", .{
+ token_bytes, @tagName(local_val.id_cat),
}, &[_]u32{
try astgen.errNoteTok(
local_val.token_src,
@@ -11859,8 +11896,8 @@ fn scanDecls(astgen: *AstGen, namespace: *Scope.Namespace, members: []const Ast.
.local_ptr => {
const local_ptr = s.cast(Scope.LocalPtr).?;
if (local_ptr.name == name_str_index) {
- return astgen.failTokNotes(name_token, "redeclaration of {s} '{s}'", .{
- @tagName(local_ptr.id_cat), token_bytes,
+ return astgen.failTokNotes(name_token, "declaration '{s}' shadows {s} from outer scope", .{
+ token_bytes, @tagName(local_ptr.id_cat),
}, &[_]u32{
try astgen.errNoteTok(
local_ptr.token_src,
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 7c4c369a6b..0ff9481875 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -916,8 +916,8 @@ pub const InitOptions = struct {
use_clang: ?bool = null,
use_stage1: ?bool = null,
single_threaded: ?bool = null,
+ strip: ?bool = null,
rdynamic: bool = false,
- strip: bool = false,
function_sections: bool = false,
no_builtin: bool = false,
is_native_os: bool,
@@ -1422,7 +1422,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
break :blk buf.items[0 .. buf.items.len - 1 :0].ptr;
} else null;
- const strip = options.strip or !target_util.hasDebugInfo(options.target);
+ const strip = options.strip orelse !target_util.hasDebugInfo(options.target);
const red_zone = options.want_red_zone orelse target_util.hasRedZone(options.target);
const omit_frame_pointer = options.omit_frame_pointer orelse (options.optimize_mode != .Debug);
const linker_optimization: u8 = options.linker_optimization orelse switch (options.optimize_mode) {
diff --git a/src/Module.zig b/src/Module.zig
index 81a9ec220b..44502ab564 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -3494,7 +3494,7 @@ fn freeExportList(gpa: Allocator, export_list: []*Export) void {
const data_has_safety_tag = @sizeOf(Zir.Inst.Data) != 8;
// TODO This is taking advantage of matching stage1 debug union layout.
// We need a better language feature for initializing a union with
-// a runtime known tag.
+// a runtime-known tag.
const Stage1DataLayout = extern struct {
data: [8]u8 align(@alignOf(Zir.Inst.Data)),
safety_tag: u8,
@@ -4478,9 +4478,17 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void {
try reportRetryableFileError(mod, file, "unable to load source: {s}", .{@errorName(err)});
return error.AnalysisFail;
};
- const resolved_path = try file.pkg.root_src_directory.join(gpa, &.{
- file.sub_file_path,
- });
+
+ const resolved_path = std.fs.path.resolve(
+ gpa,
+ if (file.pkg.root_src_directory.path) |pkg_path|
+ &[_][]const u8{ pkg_path, file.sub_file_path }
+ else
+ &[_][]const u8{file.sub_file_path},
+ ) catch |err| {
+ try reportRetryableFileError(mod, file, "unable to resolve path: {s}", .{@errorName(err)});
+ return error.AnalysisFail;
+ };
errdefer gpa.free(resolved_path);
try man.addFilePostContents(resolved_path, source.bytes, source.stat);
@@ -4586,7 +4594,7 @@ fn semaDecl(mod: *Module, decl_index: Decl.Index) !bool {
const decl_linksection: ?[*:0]const u8 = blk: {
const linksection_ref = decl.zirLinksectionRef();
if (linksection_ref == .none) break :blk null;
- const bytes = try sema.resolveConstString(&block_scope, section_src, linksection_ref, "linksection must be comptime known");
+ const bytes = try sema.resolveConstString(&block_scope, section_src, linksection_ref, "linksection must be comptime-known");
if (mem.indexOfScalar(u8, bytes, 0) != null) {
return sema.fail(&block_scope, section_src, "linksection cannot contain null bytes", .{});
} else if (bytes.len == 0) {
diff --git a/src/Sema.zig b/src/Sema.zig
index c185752dc0..e8a64c6e4f 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -50,7 +50,7 @@ comptime_break_inst: Zir.Inst.Index = undefined,
src: LazySrcLoc = .{ .token_offset = 0 },
decl_val_table: std.AutoHashMapUnmanaged(Decl.Index, Air.Inst.Ref) = .{},
/// When doing a generic function instantiation, this array collects a
-/// `Value` object for each parameter that is comptime known and thus elided
+/// `Value` object for each parameter that is comptime-known and thus elided
/// from the generated function. This memory is allocated by a parent `Sema` and
/// owned by the values arena of the Sema owner_decl.
comptime_args: []TypedValue = &.{},
@@ -1034,8 +1034,8 @@ fn analyzeBodyInner(
i += 1;
continue;
},
- .ensure_err_payload_void => {
- try sema.zirEnsureErrPayloadVoid(block, inst);
+ .ensure_err_union_payload_void => {
+ try sema.zirEnsureErrUnionPayloadVoid(block, inst);
i += 1;
continue;
},
@@ -1302,17 +1302,28 @@ fn analyzeBodyInner(
// current list of parameters and restore it later.
// Note: this probably needs to be resolved in a more general manner.
const prev_params = block.params;
- const prev_inline_block = block.inline_block;
- if (tags[inline_body[inline_body.len - 1]] == .repeat_inline) {
- block.inline_block = inline_body[0];
+ const need_sub_block = tags[inline_body[inline_body.len - 1]] == .repeat_inline;
+ var sub_block = block;
+ var block_space: Block = undefined;
+ // NOTE: this has to be done like this because branching in
+ // defers here breaks stage1.
+ block_space.instructions = .{};
+ if (need_sub_block) {
+ block_space = block.makeSubBlock();
+ block_space.inline_block = inline_body[0];
+ sub_block = &block_space;
}
block.params = .{};
defer {
block.params.deinit(gpa);
block.params = prev_params;
- block.inline_block = prev_inline_block;
+ block_space.instructions.deinit(gpa);
}
- const opt_break_data = try sema.analyzeBodyBreak(block, inline_body);
+ const opt_break_data = try sema.analyzeBodyBreak(sub_block, inline_body);
+ if (need_sub_block) {
+ try block.instructions.appendSlice(gpa, block_space.instructions.items);
+ }
+
// A runtime conditional branch that needs a post-hoc block to be
// emitted communicates this by mapping the block index into the inst map.
if (map.get(inst)) |new_block_ref| ph: {
@@ -1370,7 +1381,7 @@ fn analyzeBodyInner(
const extra = sema.code.extraData(Zir.Inst.CondBr, inst_data.payload_index);
const then_body = sema.code.extra[extra.end..][0..extra.data.then_body_len];
const else_body = sema.code.extra[extra.end + then_body.len ..][0..extra.data.else_body_len];
- const cond = try sema.resolveInstConst(block, cond_src, extra.data.condition, "condition in comptime branch must be comptime known");
+ const cond = try sema.resolveInstConst(block, cond_src, extra.data.condition, "condition in comptime branch must be comptime-known");
const inline_body = if (cond.val.toBool()) then_body else else_body;
try sema.maybeErrorUnwrapCondbr(block, inline_body, extra.data.condition, cond_src);
@@ -1388,7 +1399,7 @@ fn analyzeBodyInner(
const extra = sema.code.extraData(Zir.Inst.CondBr, inst_data.payload_index);
const then_body = sema.code.extra[extra.end..][0..extra.data.then_body_len];
const else_body = sema.code.extra[extra.end + then_body.len ..][0..extra.data.else_body_len];
- const cond = try sema.resolveInstConst(block, cond_src, extra.data.condition, "condition in comptime branch must be comptime known");
+ const cond = try sema.resolveInstConst(block, cond_src, extra.data.condition, "condition in comptime branch must be comptime-known");
const inline_body = if (cond.val.toBool()) then_body else else_body;
const old_runtime_index = block.runtime_index;
defer block.runtime_index = old_runtime_index;
@@ -1410,7 +1421,7 @@ fn analyzeBodyInner(
const err_union = try sema.resolveInst(extra.data.operand);
const is_non_err = try sema.analyzeIsNonErrComptimeOnly(block, operand_src, err_union);
assert(is_non_err != .none);
- const is_non_err_tv = try sema.resolveInstConst(block, operand_src, is_non_err, "try operand inside comptime block must be comptime known");
+ const is_non_err_tv = try sema.resolveInstConst(block, operand_src, is_non_err, "try operand inside comptime block must be comptime-known");
if (is_non_err_tv.val.toBool()) {
const err_union_ty = sema.typeOf(err_union);
break :blk try sema.analyzeErrUnionPayload(block, src, err_union_ty, err_union, operand_src, false);
@@ -1466,7 +1477,7 @@ fn analyzeBodyInner(
const err_union = try sema.analyzeLoad(block, src, operand, operand_src);
const is_non_err = try sema.analyzeIsNonErrComptimeOnly(block, operand_src, err_union);
assert(is_non_err != .none);
- const is_non_err_tv = try sema.resolveInstConst(block, operand_src, is_non_err, "try operand inside comptime block must be comptime known");
+ const is_non_err_tv = try sema.resolveInstConst(block, operand_src, is_non_err, "try operand inside comptime block must be comptime-known");
if (is_non_err_tv.val.toBool()) {
break :blk try sema.analyzeErrUnionPayloadPtr(block, src, operand, false, false);
}
@@ -1611,7 +1622,7 @@ fn analyzeAsType(
) !Type {
const wanted_type = Type.initTag(.@"type");
const coerced_inst = try sema.coerce(block, wanted_type, air_inst, src);
- const val = try sema.resolveConstValue(block, src, coerced_inst, "types must be comptime known");
+ const val = try sema.resolveConstValue(block, src, coerced_inst, "types must be comptime-known");
var buffer: Value.ToTypeBuffer = undefined;
const ty = val.toType(&buffer);
return ty.copy(sema.arena);
@@ -2056,7 +2067,7 @@ fn analyzeAsAlign(
src: LazySrcLoc,
air_ref: Air.Inst.Ref,
) !u32 {
- const alignment_big = try sema.analyzeAsInt(block, src, air_ref, align_ty, "alignment must be comptime known");
+ const alignment_big = try sema.analyzeAsInt(block, src, air_ref, align_ty, "alignment must be comptime-known");
const alignment = @intCast(u32, alignment_big); // We coerce to u16 in the prev line.
try sema.validateAlign(block, src, alignment);
return alignment;
@@ -2469,7 +2480,7 @@ fn createAnonymousDeclTypeNamed(
const arg = sema.inst_map.get(zir_inst).?;
// The comptime call code in analyzeCall already did this, so we're
// just repeating it here and it's guaranteed to work.
- const arg_val = sema.resolveConstMaybeUndefVal(block, .unneeded, arg, undefined) catch unreachable;
+ const arg_val = sema.resolveConstMaybeUndefVal(block, .unneeded, arg, "") catch unreachable;
if (arg_i != 0) try buf.appendSlice(",");
try buf.writer().print("{}", .{arg_val.fmtValue(sema.typeOf(arg), sema.mod)});
@@ -2730,7 +2741,7 @@ fn zirEnumDecl(
// TODO: if we need to report an error here, use a source location
// that points to this default value expression rather than the struct.
// But only resolve the source location if we need to emit a compile error.
- const tag_val = (try sema.resolveInstConst(block, src, tag_val_ref, "enum tag value must be comptime known")).val;
+ const tag_val = (try sema.resolveInstConst(block, src, tag_val_ref, "enum tag value must be comptime-known")).val;
last_tag_val = tag_val;
const copied_tag_val = try tag_val.copy(decl_arena_allocator);
const gop_val = enum_obj.values.getOrPutAssumeCapacityContext(copied_tag_val, .{
@@ -3089,6 +3100,33 @@ fn zirEnsureResultNonError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com
}
}
+fn zirEnsureErrUnionPayloadVoid(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
+ const tracy = trace(@src());
+ defer tracy.end();
+
+ const inst_data = sema.code.instructions.items(.data)[inst].un_node;
+ const src = inst_data.src();
+ const operand = try sema.resolveInst(inst_data.operand);
+ const operand_ty = sema.typeOf(operand);
+ const err_union_ty = if (operand_ty.zigTypeTag() == .Pointer)
+ operand_ty.childType()
+ else
+ operand_ty;
+ // TODO this should be validated in a more generic instruction that is
+ // emitted for all ifs and whiles with an error union condition.
+ if (err_union_ty.zigTypeTag() != .ErrorUnion) return;
+ const payload_ty = err_union_ty.errorUnionPayload().zigTypeTag();
+ if (payload_ty != .Void and payload_ty != .NoReturn) {
+ const msg = msg: {
+ const msg = try sema.errMsg(block, src, "error union payload is ignored", .{});
+ errdefer msg.destroy(sema.gpa);
+ try sema.errNote(block, src, msg, "payload value can be explicitly ignored with '|_|'", .{});
+ break :msg msg;
+ };
+ return sema.failWithOwnedErrorMsg(msg);
+ }
+}
+
fn zirIndexablePtrLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
const tracy = trace(@src());
defer tracy.end();
@@ -3221,7 +3259,7 @@ fn zirMakePtrConst(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
var ptr_info = alloc_ty.ptrInfo().data;
const elem_ty = ptr_info.pointee_type;
- // Detect if all stores to an `.alloc` were comptime known.
+ // Detect if all stores to an `.alloc` were comptime-known.
ct: {
var search_index: usize = block.instructions.items.len;
const air_tags = sema.air_instructions.items(.tag);
@@ -3438,7 +3476,7 @@ fn zirResolveInferredAlloc(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com
if (var_is_mut) {
try sema.validateVarType(block, ty_src, final_elem_ty, false);
} else ct: {
- // Detect if the value is comptime known. In such case, the
+ // Detect if the value is comptime-known. In such case, the
// last 3 AIR instructions of the block will look like this:
//
// %a = constant
@@ -4345,7 +4383,7 @@ fn zirValidateDeref(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr
const msg = try sema.errMsg(
block,
src,
- "values of type '{}' must be comptime known, but operand value is runtime known",
+ "values of type '{}' must be comptime-known, but operand value is runtime-known",
.{elem_ty.fmt(sema.mod)},
);
errdefer msg.destroy(sema.gpa);
@@ -4559,13 +4597,13 @@ fn storeToInferredAllocComptime(
return;
}
- return sema.failWithNeededComptime(block, src, "value being stored to a comptime variable must be comptime known");
+ return sema.failWithNeededComptime(block, src, "value being stored to a comptime variable must be comptime-known");
}
fn zirSetEvalBranchQuota(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const src = inst_data.src();
- const quota = @intCast(u32, try sema.resolveInt(block, src, inst_data.operand, Type.u32, "eval branch quota must be comptime known"));
+ const quota = @intCast(u32, try sema.resolveInt(block, src, inst_data.operand, Type.u32, "eval branch quota must be comptime-known"));
sema.branch_quota = @maximum(sema.branch_quota, quota);
}
@@ -4718,7 +4756,7 @@ fn zirCompileError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const src = inst_data.src();
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- const msg = try sema.resolveConstString(block, operand_src, inst_data.operand, "compile error string must be comptime known");
+ const msg = try sema.resolveConstString(block, operand_src, inst_data.operand, "compile error string must be comptime-known");
return sema.fail(block, src, "{s}", .{msg});
}
@@ -5058,7 +5096,7 @@ fn analyzeBlockBody(
const valid_rt = try sema.validateRunTimeType(child_block, type_src, resolved_ty, false);
if (!valid_rt) {
const msg = msg: {
- const msg = try sema.errMsg(child_block, type_src, "value with comptime only type '{}' depends on runtime control flow", .{resolved_ty.fmt(mod)});
+ const msg = try sema.errMsg(child_block, type_src, "value with comptime-only type '{}' depends on runtime control flow", .{resolved_ty.fmt(mod)});
errdefer msg.destroy(sema.gpa);
const runtime_src = child_block.runtime_cond orelse child_block.runtime_loop.?;
@@ -5142,10 +5180,13 @@ fn zirExport(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const options_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const decl_name = sema.code.nullTerminatedString(extra.decl_name);
- if (extra.namespace != .none) {
- return sema.fail(block, src, "TODO: implement exporting with field access", .{});
- }
- const decl_index = try sema.lookupIdentifier(block, operand_src, decl_name);
+ const decl_index = if (extra.namespace != .none) index_blk: {
+ const container_ty = try sema.resolveType(block, operand_src, extra.namespace);
+ const container_namespace = container_ty.getNamespace().?;
+
+ const maybe_index = try sema.lookupInNamespace(block, operand_src, container_namespace, decl_name, false);
+ break :index_blk maybe_index.?; // AstGen would produce error in case of unidentified name
+ } else try sema.lookupIdentifier(block, operand_src, decl_name);
const options = sema.resolveExportOptions(block, .unneeded, extra.options) catch |err| switch (err) {
error.NeededSourceLocation => {
_ = try sema.resolveExportOptions(block, options_src, extra.options);
@@ -5165,7 +5206,7 @@ fn zirExportValue(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
const src = inst_data.src();
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const options_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
- const operand = try sema.resolveInstConst(block, operand_src, extra.operand, "export target must be comptime known");
+ const operand = try sema.resolveInstConst(block, operand_src, extra.operand, "export target must be comptime-known");
const options = sema.resolveExportOptions(block, .unneeded, extra.options) catch |err| switch (err) {
error.NeededSourceLocation => {
_ = try sema.resolveExportOptions(block, options_src, extra.options);
@@ -5306,7 +5347,7 @@ fn zirSetAlignStack(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst
fn zirSetCold(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- const is_cold = try sema.resolveConstBool(block, operand_src, inst_data.operand, "operand to @setCold must be comptime known");
+ const is_cold = try sema.resolveConstBool(block, operand_src, inst_data.operand, "operand to @setCold must be comptime-known");
const func = sema.func orelse return; // does nothing outside a function
func.is_cold = is_cold;
}
@@ -5314,13 +5355,13 @@ fn zirSetCold(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!voi
fn zirSetFloatMode(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void {
const extra = sema.code.extraData(Zir.Inst.UnNode, extended.operand).data;
const src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
- block.float_mode = try sema.resolveBuiltinEnum(block, src, extra.operand, "FloatMode", "operand to @setFloatMode must be comptime known");
+ block.float_mode = try sema.resolveBuiltinEnum(block, src, extra.operand, "FloatMode", "operand to @setFloatMode must be comptime-known");
}
fn zirSetRuntimeSafety(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- block.want_safety = try sema.resolveConstBool(block, operand_src, inst_data.operand, "operand to @setRuntimeSafety must be comptime known");
+ block.want_safety = try sema.resolveConstBool(block, operand_src, inst_data.operand, "operand to @setRuntimeSafety must be comptime-known");
}
fn zirFence(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void {
@@ -5328,7 +5369,7 @@ fn zirFence(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) Co
const extra = sema.code.extraData(Zir.Inst.UnNode, extended.operand).data;
const order_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
- const order = try sema.resolveAtomicOrder(block, order_src, extra.operand, "atomic order of @fence must be comptime known");
+ const order = try sema.resolveAtomicOrder(block, order_src, extra.operand, "atomic order of @fence must be comptime-known");
if (@enumToInt(order) < @enumToInt(std.builtin.AtomicOrder.Acquire)) {
return sema.fail(block, order_src, "atomic ordering must be Acquire or stricter", .{});
@@ -5631,7 +5672,7 @@ fn zirCall(
var bound_arg_src: ?LazySrcLoc = null;
if (func_type.tag() == .bound_fn) {
bound_arg_src = func_src;
- const bound_func = try sema.resolveValue(block, .unneeded, func, undefined);
+ const bound_func = try sema.resolveValue(block, .unneeded, func, "");
const bound_data = &bound_func.cast(Value.Payload.BoundFn).?.data;
func = bound_data.func_inst;
resolved_args = try sema.arena.alloc(Air.Inst.Ref, args_len + 1);
@@ -5820,12 +5861,12 @@ fn addComptimeReturnTypeNote(
break :blk func_src.toSrcLoc(src_decl);
};
if (return_ty.tag() == .generic_poison) {
- return sema.mod.errNoteNonLazy(src_loc, parent, "generic function is instantiated with a comptime only return type", .{});
+ return sema.mod.errNoteNonLazy(src_loc, parent, "generic function is instantiated with a comptime-only return type", .{});
}
try sema.mod.errNoteNonLazy(
src_loc,
parent,
- "function is being called at comptime because it returns a comptime only type '{}'",
+ "function is being called at comptime because it returns a comptime-only type '{}'",
.{return_ty.fmt(sema.mod)},
);
try sema.explainWhyTypeIsComptime(block, func_src, parent, src_loc, return_ty);
@@ -5965,7 +6006,7 @@ fn analyzeCall(
}
const result: Air.Inst.Ref = if (is_inline_call) res: {
- const func_val = sema.resolveConstValue(block, func_src, func, "function being called at comptime must be comptime known") catch |err| {
+ const func_val = sema.resolveConstValue(block, func_src, func, "function being called at comptime must be comptime-known") catch |err| {
if (err == error.AnalysisFail and sema.err != null) {
try sema.addComptimeReturnTypeNote(block, func, func_src, func_ty_info.return_type, sema.err.?, comptime_only_ret_ty);
}
@@ -6010,6 +6051,7 @@ fn analyzeCall(
const parent_inst_map = sema.inst_map;
sema.inst_map = .{};
defer {
+ sema.src = call_src;
sema.inst_map.deinit(gpa);
sema.inst_map = parent_inst_map;
}
@@ -6213,7 +6255,7 @@ fn analyzeCall(
}
if (should_memoize and is_comptime_call) {
- const result_val = try sema.resolveConstMaybeUndefVal(block, .unneeded, result, undefined);
+ const result_val = try sema.resolveConstMaybeUndefVal(block, .unneeded, result, "");
// TODO: check whether any external comptime memory was mutated by the
// comptime function call. If so, then do not memoize the call here.
@@ -6362,7 +6404,7 @@ fn analyzeInlineCallArg(
new_fn_info.param_types[arg_i.*] = param_ty;
const uncasted_arg = uncasted_args[arg_i.*];
if (try sema.typeRequiresComptime(param_ty)) {
- _ = sema.resolveConstMaybeUndefVal(arg_block, arg_src, uncasted_arg, "argument to parameter with comptime only type must be comptime known") catch |err| {
+ _ = sema.resolveConstMaybeUndefVal(arg_block, arg_src, uncasted_arg, "argument to parameter with comptime-only type must be comptime-known") catch |err| {
if (err == error.AnalysisFail and sema.err != null) {
try sema.addComptimeReturnTypeNote(arg_block, func, func_src, ret_ty, sema.err.?, comptime_only_ret_ty);
}
@@ -6373,7 +6415,7 @@ fn analyzeInlineCallArg(
try sema.inst_map.putNoClobber(sema.gpa, inst, casted_arg);
if (is_comptime_call) {
- const arg_val = sema.resolveConstMaybeUndefVal(arg_block, arg_src, casted_arg, "argument to function being called at comptime must be comptime known") catch |err| {
+ const arg_val = sema.resolveConstMaybeUndefVal(arg_block, arg_src, casted_arg, "argument to function being called at comptime must be comptime-known") catch |err| {
if (err == error.AnalysisFail and sema.err != null) {
try sema.addComptimeReturnTypeNote(arg_block, func, func_src, ret_ty, sema.err.?, comptime_only_ret_ty);
}
@@ -6408,7 +6450,7 @@ fn analyzeInlineCallArg(
try sema.inst_map.putNoClobber(sema.gpa, inst, uncasted_arg);
if (is_comptime_call) {
- const arg_val = sema.resolveConstMaybeUndefVal(arg_block, arg_src, uncasted_arg, "argument to function being called at comptime must be comptime known") catch |err| {
+ const arg_val = sema.resolveConstMaybeUndefVal(arg_block, arg_src, uncasted_arg, "argument to function being called at comptime must be comptime-known") catch |err| {
if (err == error.AnalysisFail and sema.err != null) {
try sema.addComptimeReturnTypeNote(arg_block, func, func_src, ret_ty, sema.err.?, comptime_only_ret_ty);
}
@@ -6494,7 +6536,7 @@ fn instantiateGenericCall(
const mod = sema.mod;
const gpa = sema.gpa;
- const func_val = try sema.resolveConstValue(block, func_src, func, "generic function being called must be comptime known");
+ const func_val = try sema.resolveConstValue(block, func_src, func, "generic function being called must be comptime-known");
const module_fn = switch (func_val.tag()) {
.function => func_val.castTag(.function).?.data,
.decl_ref => mod.declPtr(func_val.castTag(.decl_ref).?.data).val.castTag(.function).?.data,
@@ -6675,6 +6717,8 @@ fn instantiateGenericCall(
.comptime_args_fn_inst = module_fn.zir_body_inst,
.preallocated_new_func = new_module_func,
.is_generic_instantiation = true,
+ .branch_quota = sema.branch_quota,
+ .branch_count = sema.branch_count,
};
defer child_sema.deinit();
@@ -6724,12 +6768,12 @@ fn instantiateGenericCall(
const child_arg = try child_sema.addConstant(sema.typeOf(arg), arg_val);
child_sema.inst_map.putAssumeCapacityNoClobber(inst, child_arg);
} else {
- return sema.failWithNeededComptime(block, .unneeded, undefined);
+ return sema.failWithNeededComptime(block, .unneeded, "");
}
} else if (is_anytype) {
const arg_ty = sema.typeOf(arg);
if (try sema.typeRequiresComptime(arg_ty)) {
- const arg_val = try sema.resolveConstValue(block, .unneeded, arg, undefined);
+ const arg_val = try sema.resolveConstValue(block, .unneeded, arg, "");
const child_arg = try child_sema.addConstant(arg_ty, arg_val);
child_sema.inst_map.putAssumeCapacityNoClobber(inst, child_arg);
} else {
@@ -6751,7 +6795,7 @@ fn instantiateGenericCall(
}
return err;
};
- const new_func_val = child_sema.resolveConstValue(&child_block, .unneeded, new_func_inst, undefined) catch unreachable;
+ const new_func_val = child_sema.resolveConstValue(&child_block, .unneeded, new_func_inst, "") catch unreachable;
const new_func = new_func_val.castTag(.function).?.data;
errdefer new_func.deinit(gpa);
assert(new_func == new_module_func);
@@ -6986,7 +7030,7 @@ fn zirVectorType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
const elem_type_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const len_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
- const len = try sema.resolveInt(block, len_src, extra.lhs, Type.u32, "vector length must be comptime known");
+ const len = try sema.resolveInt(block, len_src, extra.lhs, Type.u32, "vector length must be comptime-known");
const elem_type = try sema.resolveType(block, elem_type_src, extra.rhs);
try sema.checkVectorElemType(block, elem_type_src, elem_type);
const vector_type = try Type.Tag.vector.create(sema.arena, .{
@@ -7004,7 +7048,7 @@ fn zirArrayType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
const len_src: LazySrcLoc = .{ .node_offset_array_type_len = inst_data.src_node };
const elem_src: LazySrcLoc = .{ .node_offset_array_type_elem = inst_data.src_node };
- const len = try sema.resolveInt(block, len_src, extra.lhs, Type.usize, "array length must be comptime known");
+ const len = try sema.resolveInt(block, len_src, extra.lhs, Type.usize, "array length must be comptime-known");
const elem_type = try sema.resolveType(block, elem_src, extra.rhs);
const array_ty = try Type.array(sema.arena, len, null, elem_type, sema.mod);
@@ -7020,11 +7064,11 @@ fn zirArrayTypeSentinel(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Compil
const len_src: LazySrcLoc = .{ .node_offset_array_type_len = inst_data.src_node };
const sentinel_src: LazySrcLoc = .{ .node_offset_array_type_sentinel = inst_data.src_node };
const elem_src: LazySrcLoc = .{ .node_offset_array_type_elem = inst_data.src_node };
- const len = try sema.resolveInt(block, len_src, extra.len, Type.usize, "array length must be comptime known");
+ const len = try sema.resolveInt(block, len_src, extra.len, Type.usize, "array length must be comptime-known");
const elem_type = try sema.resolveType(block, elem_src, extra.elem_type);
const uncasted_sentinel = try sema.resolveInst(extra.sentinel);
const sentinel = try sema.coerce(block, elem_type, uncasted_sentinel, sentinel_src);
- const sentinel_val = try sema.resolveConstValue(block, sentinel_src, sentinel, "array sentinel value must be comptime known");
+ const sentinel_val = try sema.resolveConstValue(block, sentinel_src, sentinel, "array sentinel value must be comptime-known");
const array_ty = try Type.array(sema.arena, len, sentinel_val, elem_type, sema.mod);
return sema.addType(array_ty);
@@ -7622,6 +7666,10 @@ fn zirErrUnionCode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const src = inst_data.src();
const operand = try sema.resolveInst(inst_data.operand);
+ return sema.analyzeErrUnionCode(block, src, operand);
+}
+
+fn analyzeErrUnionCode(sema: *Sema, block: *Block, src: LazySrcLoc, operand: Air.Inst.Ref) CompileError!Air.Inst.Ref {
const operand_ty = sema.typeOf(operand);
if (operand_ty.zigTypeTag() != .ErrorUnion) {
return sema.fail(block, src, "expected error union type, found '{}'", .{
@@ -7670,24 +7718,6 @@ fn zirErrUnionCodePtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE
return block.addTyOp(.unwrap_errunion_err_ptr, result_ty, operand);
}
-fn zirEnsureErrPayloadVoid(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void {
- const tracy = trace(@src());
- defer tracy.end();
-
- const inst_data = sema.code.instructions.items(.data)[inst].un_tok;
- const src = inst_data.src();
- const operand = try sema.resolveInst(inst_data.operand);
- const operand_ty = sema.typeOf(operand);
- if (operand_ty.zigTypeTag() != .ErrorUnion) {
- return sema.fail(block, src, "expected error union type, found '{}'", .{
- operand_ty.fmt(sema.mod),
- });
- }
- if (operand_ty.errorUnionPayload().zigTypeTag() != .Void) {
- return sema.fail(block, src, "expression value is ignored", .{});
- }
-}
-
fn zirFunc(
sema: *Sema,
block: *Block,
@@ -7722,7 +7752,7 @@ fn zirFunc(
const ret_ty_body = sema.code.extra[extra_index..][0..extra.data.ret_body_len];
extra_index += ret_ty_body.len;
- const ret_ty_val = try sema.resolveGenericBody(block, ret_ty_src, ret_ty_body, inst, Type.type, "return type must be comptime known");
+ const ret_ty_val = try sema.resolveGenericBody(block, ret_ty_src, ret_ty_body, inst, Type.type, "return type must be comptime-known");
var buffer: Value.ToTypeBuffer = undefined;
break :blk try ret_ty_val.toType(&buffer).copy(sema.arena);
},
@@ -8045,7 +8075,7 @@ fn funcCommon(
return sema.failWithOwnedErrorMsg(msg);
}
- // If the return type is comptime only but not dependent on parameters then all parameter types also need to be comptime
+ // If the return type is comptime-only but not dependent on parameters then all parameter types also need to be comptime
if (!sema.is_generic_instantiation and has_body and ret_ty_requires_comptime) comptime_check: {
for (block.params.items) |param| {
if (!param.is_comptime) break;
@@ -8054,7 +8084,7 @@ fn funcCommon(
const msg = try sema.errMsg(
block,
ret_ty_src,
- "function with comptime only return type '{}' requires all parameters to be comptime",
+ "function with comptime-only return type '{}' requires all parameters to be comptime",
.{return_type.fmt(sema.mod)},
);
try sema.explainWhyTypeIsComptime(block, ret_ty_src, msg, ret_ty_src.toSrcLoc(sema.owner_decl), return_type);
@@ -8556,7 +8586,7 @@ fn zirFieldValNamed(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr
const field_name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const extra = sema.code.extraData(Zir.Inst.FieldNamed, inst_data.payload_index).data;
const object = try sema.resolveInst(extra.lhs);
- const field_name = try sema.resolveConstString(block, field_name_src, extra.field_name, "field name must be comptime known");
+ const field_name = try sema.resolveConstString(block, field_name_src, extra.field_name, "field name must be comptime-known");
return sema.fieldVal(block, src, object, field_name, field_name_src);
}
@@ -8569,7 +8599,7 @@ fn zirFieldPtrNamed(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr
const field_name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const extra = sema.code.extraData(Zir.Inst.FieldNamed, inst_data.payload_index).data;
const object_ptr = try sema.resolveInst(extra.lhs);
- const field_name = try sema.resolveConstString(block, field_name_src, extra.field_name, "field name must be comptime known");
+ const field_name = try sema.resolveConstString(block, field_name_src, extra.field_name, "field name must be comptime-known");
return sema.fieldPtr(block, src, object_ptr, field_name, field_name_src, false);
}
@@ -8581,7 +8611,7 @@ fn zirFieldCallBindNamed(sema: *Sema, block: *Block, extended: Zir.Inst.Extended
const src = LazySrcLoc.nodeOffset(extra.node);
const field_name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = extra.node };
const object_ptr = try sema.resolveInst(extra.lhs);
- const field_name = try sema.resolveConstString(block, field_name_src, extra.field_name, "field name must be comptime known");
+ const field_name = try sema.resolveConstString(block, field_name_src, extra.field_name, "field name must be comptime-known");
return sema.fieldCallBind(block, src, object_ptr, field_name, field_name_src);
}
@@ -9115,7 +9145,7 @@ fn zirSwitchCapture(
const union_obj = operand_ty.cast(Type.Payload.Union).?.data;
const first_item = try sema.resolveInst(items[0]);
// Previous switch validation ensured this will succeed
- const first_item_val = sema.resolveConstValue(block, .unneeded, first_item, undefined) catch unreachable;
+ const first_item_val = sema.resolveConstValue(block, .unneeded, first_item, "") catch unreachable;
const first_field_index = @intCast(u32, operand_ty.unionTagFieldIndex(first_item_val, sema.mod).?);
const first_field = union_obj.fields.values()[first_field_index];
@@ -9123,7 +9153,7 @@ fn zirSwitchCapture(
for (items[1..]) |item, i| {
const item_ref = try sema.resolveInst(item);
// Previous switch validation ensured this will succeed
- const item_val = sema.resolveConstValue(block, .unneeded, item_ref, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(block, .unneeded, item_ref, "") catch unreachable;
const field_index = operand_ty.unionTagFieldIndex(item_val, sema.mod).?;
const field = union_obj.fields.values()[field_index];
@@ -9184,7 +9214,7 @@ fn zirSwitchCapture(
for (items) |item| {
const item_ref = try sema.resolveInst(item);
// Previous switch validation ensured this will succeed
- const item_val = sema.resolveConstValue(block, .unneeded, item_ref, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(block, .unneeded, item_ref, "") catch unreachable;
names.putAssumeCapacityNoClobber(
item_val.getError().?,
{},
@@ -9198,7 +9228,7 @@ fn zirSwitchCapture(
} else {
const item_ref = try sema.resolveInst(items[0]);
// Previous switch validation ensured this will succeed
- const item_val = sema.resolveConstValue(block, .unneeded, item_ref, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(block, .unneeded, item_ref, "") catch unreachable;
const item_ty = try Type.Tag.error_set_single.create(sema.arena, item_val.getError().?);
return sema.bitCast(block, item_ty, operand, operand_src);
@@ -9937,14 +9967,17 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
const item_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
extra_index += 1;
const body_len = @truncate(u31, sema.code.extra[extra_index]);
+ const is_inline = sema.code.extra[extra_index] >> 31 != 0;
extra_index += 1;
const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body_len;
const item = try sema.resolveInst(item_ref);
// Validation above ensured these will succeed.
- const item_val = sema.resolveConstValue(&child_block, .unneeded, item, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(&child_block, .unneeded, item, "") catch unreachable;
if (operand_val.eql(item_val, operand_ty, sema.mod)) {
+ if (is_inline) child_block.inline_case_capture = operand;
+
if (err_set) try sema.maybeErrorUnwrapComptime(&child_block, body, operand);
return sema.resolveBlockBody(block, src, &child_block, body, inst, merges);
}
@@ -9958,6 +9991,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
const ranges_len = sema.code.extra[extra_index];
extra_index += 1;
const body_len = @truncate(u31, sema.code.extra[extra_index]);
+ const is_inline = sema.code.extra[extra_index] >> 31 != 0;
extra_index += 1;
const items = sema.code.refSlice(extra_index, items_len);
extra_index += items_len;
@@ -9966,8 +10000,10 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
for (items) |item_ref| {
const item = try sema.resolveInst(item_ref);
// Validation above ensured these will succeed.
- const item_val = sema.resolveConstValue(&child_block, .unneeded, item, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(&child_block, .unneeded, item, "") catch unreachable;
if (operand_val.eql(item_val, operand_ty, sema.mod)) {
+ if (is_inline) child_block.inline_case_capture = operand;
+
if (err_set) try sema.maybeErrorUnwrapComptime(&child_block, body, operand);
return sema.resolveBlockBody(block, src, &child_block, body, inst, merges);
}
@@ -9981,11 +10017,12 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
extra_index += 1;
// Validation above ensured these will succeed.
- const first_tv = sema.resolveInstConst(&child_block, .unneeded, item_first, undefined) catch unreachable;
- const last_tv = sema.resolveInstConst(&child_block, .unneeded, item_last, undefined) catch unreachable;
+ const first_tv = sema.resolveInstConst(&child_block, .unneeded, item_first, "") catch unreachable;
+ const last_tv = sema.resolveInstConst(&child_block, .unneeded, item_last, "") catch unreachable;
if ((try sema.compare(block, src, operand_val, .gte, first_tv.val, operand_ty)) and
(try sema.compare(block, src, operand_val, .lte, last_tv.val, operand_ty)))
{
+ if (is_inline) child_block.inline_case_capture = operand;
if (err_set) try sema.maybeErrorUnwrapComptime(&child_block, body, operand);
return sema.resolveBlockBody(block, src, &child_block, body, inst, merges);
}
@@ -9995,9 +10032,12 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
}
}
if (err_set) try sema.maybeErrorUnwrapComptime(&child_block, special.body, operand);
+ if (special.is_inline) child_block.inline_case_capture = operand;
return sema.resolveBlockBody(block, src, &child_block, special.body, inst, merges);
}
+ const backend_supports_is_named_enum = sema.mod.comp.bin_file.options.use_llvm;
+
if (scalar_cases_len + multi_cases_len == 0 and !special.is_inline) {
if (empty_enum) {
return Air.Inst.Ref.void_value;
@@ -10008,6 +10048,12 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
if (err_set and try sema.maybeErrorUnwrap(block, special.body, operand)) {
return Air.Inst.Ref.unreachable_value;
}
+ if (backend_supports_is_named_enum and block.wantSafety() and operand_ty.zigTypeTag() == .Enum and
+ (!operand_ty.isNonexhaustiveEnum() or union_originally))
+ {
+ const ok = try block.addUnOp(.is_named_enum_value, operand);
+ try sema.addSafetyCheck(block, ok, .corrupt_switch);
+ }
return sema.resolveBlockBody(block, src, &child_block, special.body, inst, merges);
}
@@ -10048,7 +10094,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
// `item` is already guaranteed to be constant known.
const analyze_body = if (union_originally) blk: {
- const item_val = sema.resolveConstValue(block, .unneeded, item, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(block, .unneeded, item, "") catch unreachable;
const field_ty = maybe_union_ty.unionFieldType(item_val, sema.mod);
break :blk field_ty.zigTypeTag() != .NoReturn;
} else true;
@@ -10199,7 +10245,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
const analyze_body = if (union_originally)
for (items) |item_ref| {
const item = try sema.resolveInst(item_ref);
- const item_val = sema.resolveConstValue(block, .unneeded, item, undefined) catch unreachable;
+ const item_val = sema.resolveConstValue(block, .unneeded, item, "") catch unreachable;
const field_ty = maybe_union_ty.unionFieldType(item_val, sema.mod);
if (field_ty.zigTypeTag() != .NoReturn) break true;
} else false
@@ -10465,6 +10511,13 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
case_block.wip_capture_scope = wip_captures.scope;
case_block.inline_case_capture = .none;
+ if (backend_supports_is_named_enum and special.body.len != 0 and block.wantSafety() and
+ operand_ty.zigTypeTag() == .Enum and (!operand_ty.isNonexhaustiveEnum() or union_originally))
+ {
+ const ok = try case_block.addUnOp(.is_named_enum_value, operand);
+ try sema.addSafetyCheck(&case_block, ok, .corrupt_switch);
+ }
+
const analyze_body = if (union_originally and !special.is_inline)
for (seen_enum_fields) |seen_field, index| {
if (seen_field != null) continue;
@@ -10587,14 +10640,14 @@ fn resolveSwitchItemVal(
// Constructing a LazySrcLoc is costly because we only have the switch AST node.
// Only if we know for sure we need to report a compile error do we resolve the
// full source locations.
- if (sema.resolveConstValue(block, .unneeded, item, undefined)) |val| {
+ if (sema.resolveConstValue(block, .unneeded, item, "")) |val| {
return TypedValue{ .ty = item_ty, .val = val };
} else |err| switch (err) {
error.NeededSourceLocation => {
const src = switch_prong_src.resolve(sema.gpa, sema.mod.declPtr(block.src_decl), switch_node_offset, range_expand);
return TypedValue{
.ty = item_ty,
- .val = try sema.resolveConstValue(block, src, item, "switch prong values must be comptime known"),
+ .val = try sema.resolveConstValue(block, src, item, "switch prong values must be comptime-known"),
};
},
else => |e| return e,
@@ -10883,7 +10936,7 @@ fn zirHasField(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
const ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const unresolved_ty = try sema.resolveType(block, ty_src, extra.lhs);
- const field_name = try sema.resolveConstString(block, name_src, extra.rhs, "field name must be comptime known");
+ const field_name = try sema.resolveConstString(block, name_src, extra.rhs, "field name must be comptime-known");
const ty = try sema.resolveTypeFields(block, ty_src, unresolved_ty);
const has_field = hf: {
@@ -10925,7 +10978,7 @@ fn zirHasDecl(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
const lhs_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const rhs_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const container_type = try sema.resolveType(block, lhs_src, extra.lhs);
- const decl_name = try sema.resolveConstString(block, rhs_src, extra.rhs, "decl name must be comptime known");
+ const decl_name = try sema.resolveConstString(block, rhs_src, extra.rhs, "decl name must be comptime-known");
try checkNamespaceType(sema, block, lhs_src, container_type);
@@ -10989,7 +11042,7 @@ fn zirEmbedFile(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const mod = sema.mod;
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- const name = try sema.resolveConstString(block, operand_src, inst_data.operand, "file path name must be comptime known");
+ const name = try sema.resolveConstString(block, operand_src, inst_data.operand, "file path name must be comptime-known");
const embed_file = mod.embedFile(block.getFileScope(), name) catch |err| switch (err) {
error.ImportOutsidePkgPath => {
@@ -11104,7 +11157,7 @@ fn zirShl(
if (lhs_val.isUndef()) return sema.addConstUndef(lhs_ty);
const rhs_val = maybe_rhs_val orelse {
if (scalar_ty.zigTypeTag() == .ComptimeInt) {
- return sema.fail(block, src, "LHS of shift must be a fixed-width integer type, or RHS must be a comptime known", .{});
+ return sema.fail(block, src, "LHS of shift must be a fixed-width integer type, or RHS must be comptime-known", .{});
}
break :rs rhs_src;
};
@@ -11286,7 +11339,7 @@ fn zirShr(
} else rhs_src;
if (maybe_rhs_val == null and scalar_ty.zigTypeTag() == .ComptimeInt) {
- return sema.fail(block, src, "LHS of shift must be a fixed-width integer type, or RHS must be a comptime known", .{});
+ return sema.fail(block, src, "LHS of shift must be a fixed-width integer type, or RHS must be comptime-known", .{});
}
try sema.requireRuntimeBlock(block, src, runtime_src);
@@ -11556,8 +11609,8 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
const rhs_sent = try sema.addConstant(rhs_info.elem_type, rhs_sent_val);
const lhs_sent_casted = try sema.coerce(block, resolved_elem_ty, lhs_sent, lhs_src);
const rhs_sent_casted = try sema.coerce(block, resolved_elem_ty, rhs_sent, rhs_src);
- const lhs_sent_casted_val = try sema.resolveConstValue(block, lhs_src, lhs_sent_casted, "array sentinel value must be comptime known");
- const rhs_sent_casted_val = try sema.resolveConstValue(block, rhs_src, rhs_sent_casted, "array sentinel value must be comptime known");
+ const lhs_sent_casted_val = try sema.resolveConstValue(block, lhs_src, lhs_sent_casted, "array sentinel value must be comptime-known");
+ const rhs_sent_casted_val = try sema.resolveConstValue(block, rhs_src, rhs_sent_casted, "array sentinel value must be comptime-known");
if (try sema.valuesEqual(block, src, lhs_sent_casted_val, rhs_sent_casted_val, resolved_elem_ty)) {
break :s lhs_sent_casted_val;
} else {
@@ -11565,14 +11618,14 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
}
} else {
const lhs_sent_casted = try sema.coerce(block, resolved_elem_ty, lhs_sent, lhs_src);
- const lhs_sent_casted_val = try sema.resolveConstValue(block, lhs_src, lhs_sent_casted, "array sentinel value must be comptime known");
+ const lhs_sent_casted_val = try sema.resolveConstValue(block, lhs_src, lhs_sent_casted, "array sentinel value must be comptime-known");
break :s lhs_sent_casted_val;
}
} else {
if (rhs_info.sentinel) |rhs_sent_val| {
const rhs_sent = try sema.addConstant(rhs_info.elem_type, rhs_sent_val);
const rhs_sent_casted = try sema.coerce(block, resolved_elem_ty, rhs_sent, rhs_src);
- const rhs_sent_casted_val = try sema.resolveConstValue(block, rhs_src, rhs_sent_casted, "array sentinel value must be comptime known");
+ const rhs_sent_casted_val = try sema.resolveConstValue(block, rhs_src, rhs_sent_casted, "array sentinel value must be comptime-known");
break :s rhs_sent_casted_val;
} else {
break :s null;
@@ -11693,7 +11746,7 @@ fn getArrayCatInfo(sema: *Sema, block: *Block, src: LazySrcLoc, operand: Air.Ins
// has a sentinel, and this code should compute the length based
// on the sentinel value.
.Slice, .Many => {
- const val = try sema.resolveConstValue(block, src, operand, "slice value being concatenated must be comptime known");
+ const val = try sema.resolveConstValue(block, src, operand, "slice value being concatenated must be comptime-known");
return Type.ArrayInfo{
.elem_type = ptr_info.pointee_type,
.sentinel = ptr_info.sentinel,
@@ -11794,7 +11847,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
const rhs_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node };
// In `**` rhs must be comptime-known, but lhs can be runtime-known
- const factor = try sema.resolveInt(block, rhs_src, extra.rhs, Type.usize, "array multiplication factor must be comptime known");
+ const factor = try sema.resolveInt(block, rhs_src, extra.rhs, Type.usize, "array multiplication factor must be comptime-known");
if (lhs_ty.isTuple()) {
return sema.analyzeTupleMul(block, inst_data.src_node, lhs, factor);
@@ -14114,6 +14167,14 @@ fn analyzeCmp(
// numeric types.
return sema.cmpNumeric(block, src, lhs, rhs, op, lhs_src, rhs_src);
}
+ if (is_equality_cmp and lhs_ty.zigTypeTag() == .ErrorUnion and rhs_ty.zigTypeTag() == .ErrorSet) {
+ const casted_lhs = try sema.analyzeErrUnionCode(block, lhs_src, lhs);
+ return sema.cmpSelf(block, src, casted_lhs, rhs, op, lhs_src, rhs_src);
+ }
+ if (is_equality_cmp and lhs_ty.zigTypeTag() == .ErrorSet and rhs_ty.zigTypeTag() == .ErrorUnion) {
+ const casted_rhs = try sema.analyzeErrUnionCode(block, rhs_src, rhs);
+ return sema.cmpSelf(block, src, lhs, casted_rhs, op, lhs_src, rhs_src);
+ }
const instructions = &[_]Air.Inst.Ref{ lhs, rhs };
const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{ .override = &[_]LazySrcLoc{ lhs_src, rhs_src } });
if (!resolved_type.isSelfComparable(is_equality_cmp)) {
@@ -14264,6 +14325,38 @@ fn zirBitSizeOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const src = inst_data.src();
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const operand_ty = try sema.resolveType(block, operand_src, inst_data.operand);
+ switch (operand_ty.zigTypeTag()) {
+ .Fn,
+ .NoReturn,
+ .Undefined,
+ .Null,
+ .BoundFn,
+ .Opaque,
+ => return sema.fail(block, operand_src, "no size available for type '{}'", .{operand_ty.fmt(sema.mod)}),
+
+ .Type,
+ .EnumLiteral,
+ .ComptimeFloat,
+ .ComptimeInt,
+ .Void,
+ => return sema.addIntUnsigned(Type.comptime_int, 0),
+
+ .Bool,
+ .Int,
+ .Float,
+ .Pointer,
+ .Array,
+ .Struct,
+ .Optional,
+ .ErrorUnion,
+ .ErrorSet,
+ .Enum,
+ .Union,
+ .Vector,
+ .Frame,
+ .AnyFrame,
+ => {},
+ }
const target = sema.mod.getTarget();
const bit_size = try operand_ty.bitSizeAdvanced(target, sema.kit(block, src));
return sema.addIntUnsigned(Type.comptime_int, bit_size);
@@ -14294,7 +14387,7 @@ fn zirClosureCapture(
// value only. In such case we preserve the type and use a dummy runtime value.
const operand = try sema.resolveInst(inst_data.operand);
const val = (try sema.resolveMaybeUndefValAllowVariables(block, src, operand)) orelse
- Value.initTag(.generic_poison);
+ Value.initTag(.unreachable_value);
try block.wip_capture_scope.captures.putNoClobber(sema.gpa, inst, .{
.ty = try sema.typeOf(operand).copy(sema.perm_arena),
@@ -14331,7 +14424,35 @@ fn zirClosureGet(
scope = scope.parent.?;
} else unreachable;
- if (tv.val.tag() == .generic_poison and !block.is_typeof and !block.is_comptime and sema.func != null) {
+ if (tv.val.tag() == .unreachable_value and !block.is_typeof and sema.func == null) {
+ const msg = msg: {
+ const name = name: {
+ const file = sema.owner_decl.getFileScope();
+ const tree = file.getTree(sema.mod.gpa) catch |err| {
+ // In this case we emit a warning + a less precise source location.
+ log.warn("unable to load {s}: {s}", .{
+ file.sub_file_path, @errorName(err),
+ });
+ break :name null;
+ };
+ const node = sema.owner_decl.relativeToNodeIndex(inst_data.src_node);
+ const token = tree.nodes.items(.main_token)[node];
+ break :name tree.tokenSlice(token);
+ };
+
+ const msg = if (name) |some|
+ try sema.errMsg(block, inst_data.src(), "'{s}' not accessible outside function scope", .{some})
+ else
+ try sema.errMsg(block, inst_data.src(), "variable not accessible outside function scope", .{});
+ errdefer msg.destroy(sema.gpa);
+
+ // TODO add "declared here" note
+ break :msg msg;
+ };
+ return sema.failWithOwnedErrorMsg(msg);
+ }
+
+ if (tv.val.tag() == .unreachable_value and !block.is_typeof and !block.is_comptime and sema.func != null) {
const msg = msg: {
const name = name: {
const file = sema.owner_decl.getFileScope();
@@ -16102,14 +16223,14 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
const sentinel = if (inst_data.flags.has_sentinel) blk: {
const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
extra_i += 1;
- break :blk (try sema.resolveInstConst(block, sentinel_src, ref, "pointer sentinel value must be comptime known")).val;
+ break :blk (try sema.resolveInstConst(block, sentinel_src, ref, "pointer sentinel value must be comptime-known")).val;
} else null;
const abi_align: u32 = if (inst_data.flags.has_align) blk: {
const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
extra_i += 1;
const coerced = try sema.coerce(block, Type.u32, try sema.resolveInst(ref), align_src);
- const val = try sema.resolveConstValue(block, align_src, coerced, "pointer alignment must be comptime known");
+ const val = try sema.resolveConstValue(block, align_src, coerced, "pointer alignment must be comptime-known");
// Check if this happens to be the lazy alignment of our element type, in
// which case we can make this 0 without resolving it.
if (val.castTag(.lazy_align)) |payload| {
@@ -16131,14 +16252,14 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
const bit_offset = if (inst_data.flags.has_bit_range) blk: {
const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
extra_i += 1;
- const bit_offset = try sema.resolveInt(block, bitoffset_src, ref, Type.u16, "pointer bit-offset must be comptime known");
+ const bit_offset = try sema.resolveInt(block, bitoffset_src, ref, Type.u16, "pointer bit-offset must be comptime-known");
break :blk @intCast(u16, bit_offset);
} else 0;
const host_size: u16 = if (inst_data.flags.has_bit_range) blk: {
const ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_i]);
extra_i += 1;
- const host_size = try sema.resolveInt(block, hostsize_src, ref, Type.u16, "pointer host size must be comptime known");
+ const host_size = try sema.resolveInt(block, hostsize_src, ref, Type.u16, "pointer host size must be comptime-known");
break :blk @intCast(u16, host_size);
} else 0;
@@ -16262,7 +16383,7 @@ fn zirUnionInit(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const init_src: LazySrcLoc = .{ .node_offset_builtin_call_arg2 = inst_data.src_node };
const extra = sema.code.extraData(Zir.Inst.UnionInit, inst_data.payload_index).data;
const union_ty = try sema.resolveType(block, ty_src, extra.union_type);
- const field_name = try sema.resolveConstString(block, field_src, extra.field_name, "name of field being initialized must be comptime known");
+ const field_name = try sema.resolveConstString(block, field_src, extra.field_name, "name of field being initialized must be comptime-known");
const init = try sema.resolveInst(extra.init);
return sema.unionInit(block, init, init_src, union_ty, ty_src, field_name, field_src);
}
@@ -16360,7 +16481,7 @@ fn zirStructInit(
field_inits[field_index] = try sema.resolveInst(item.data.init);
if (!is_packed) if (resolved_ty.structFieldValueComptime(field_index)) |default_value| {
const init_val = (try sema.resolveMaybeUndefVal(block, field_src, field_inits[field_index])) orelse {
- return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime known");
+ return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime-known");
};
if (!init_val.eql(default_value, resolved_ty.structFieldType(field_index), sema.mod)) {
@@ -16871,7 +16992,7 @@ fn zirFieldTypeRef(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro
const ty_src = inst_data.src();
const field_src = inst_data.src();
const aggregate_ty = try sema.resolveType(block, ty_src, extra.container_type);
- const field_name = try sema.resolveConstString(block, field_src, extra.field_name, "field name must be comptime known");
+ const field_name = try sema.resolveConstString(block, field_src, extra.field_name, "field name must be comptime-known");
return sema.fieldType(block, aggregate_ty, field_name, field_src, ty_src);
}
@@ -17094,7 +17215,7 @@ fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
try sema.resolveTypeLayout(block, operand_src, operand_ty);
const enum_ty = switch (operand_ty.zigTypeTag()) {
.EnumLiteral => {
- const val = try sema.resolveConstValue(block, .unneeded, operand, undefined);
+ const val = try sema.resolveConstValue(block, .unneeded, operand, "");
const bytes = val.castTag(.enum_literal).?.data;
return sema.addStrLit(block, bytes);
},
@@ -17152,7 +17273,7 @@ fn zirReify(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData, in
const uncasted_operand = try sema.resolveInst(extra.operand);
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
const type_info = try sema.coerce(block, type_info_ty, uncasted_operand, operand_src);
- const val = try sema.resolveConstValue(block, operand_src, type_info, "operand to @Type must be comptime known");
+ const val = try sema.resolveConstValue(block, operand_src, type_info, "operand to @Type must be comptime-known");
const union_val = val.cast(Value.Payload.Union).?.data;
const target = mod.getTarget();
const tag_index = type_info_ty.unionTagFieldIndex(union_val.tag, mod).?;
@@ -18092,7 +18213,7 @@ fn zirFloatToInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
const result_val = try sema.floatToInt(block, operand_src, val, operand_ty, dest_ty);
return sema.addConstant(dest_ty, result_val);
} else if (dest_ty.zigTypeTag() == .ComptimeInt) {
- return sema.failWithNeededComptime(block, operand_src, "value being casted to 'comptime_int' must be comptime known");
+ return sema.failWithNeededComptime(block, operand_src, "value being casted to 'comptime_int' must be comptime-known");
}
try sema.requireRuntimeBlock(block, inst_data.src(), operand_src);
@@ -18125,7 +18246,7 @@ fn zirIntToFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
const result_val = try val.intToFloatAdvanced(sema.arena, operand_ty, dest_ty, target, sema.kit(block, operand_src));
return sema.addConstant(dest_ty, result_val);
} else if (dest_ty.zigTypeTag() == .ComptimeFloat) {
- return sema.failWithNeededComptime(block, operand_src, "value being casted to 'comptime_float' must be comptime known");
+ return sema.failWithNeededComptime(block, operand_src, "value being casted to 'comptime_float' must be comptime-known");
}
try sema.requireRuntimeBlock(block, inst_data.src(), operand_src);
@@ -18352,7 +18473,7 @@ fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
return sema.failWithOwnedErrorMsg(msg);
}
- if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |operand_val| {
+ if (try sema.resolveMaybeUndefVal(block, operand_src, ptr)) |operand_val| {
if (!dest_ty.ptrAllowsZero() and operand_val.isUndef()) {
return sema.failWithUseOfUndef(block, operand_src);
}
@@ -18705,7 +18826,7 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
const ty = try sema.resolveType(block, lhs_src, extra.lhs);
- const field_name = try sema.resolveConstString(block, rhs_src, extra.rhs, "name of field must be comptime known");
+ const field_name = try sema.resolveConstString(block, rhs_src, extra.rhs, "name of field must be comptime-known");
const target = sema.mod.getTarget();
try sema.resolveTypeLayout(block, lhs_src, ty);
@@ -18729,6 +18850,10 @@ fn bitOffsetOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!u6
break :blk try sema.tupleFieldIndex(block, ty, field_name, rhs_src);
} else try sema.structFieldIndex(block, ty, field_name, rhs_src);
+ if (ty.structFieldIsComptime(field_index)) {
+ return sema.fail(block, src, "no offset available for comptime field", .{});
+ }
+
switch (ty.containerLayout()) {
.Packed => {
var bit_sum: u64 = 0;
@@ -19176,19 +19301,19 @@ fn resolveExportOptions(
const visibility_src = sema.maybeOptionsSrc(block, src, "visibility");
const name_operand = try sema.fieldVal(block, src, options, "name", name_src);
- const name_val = try sema.resolveConstValue(block, name_src, name_operand, "name of exported value must be comptime known");
+ const name_val = try sema.resolveConstValue(block, name_src, name_operand, "name of exported value must be comptime-known");
const name_ty = Type.initTag(.const_slice_u8);
const name = try name_val.toAllocatedBytes(name_ty, sema.arena, sema.mod);
const linkage_operand = try sema.fieldVal(block, src, options, "linkage", linkage_src);
- const linkage_val = try sema.resolveConstValue(block, linkage_src, linkage_operand, "linkage of exported value must be comptime known");
+ const linkage_val = try sema.resolveConstValue(block, linkage_src, linkage_operand, "linkage of exported value must be comptime-known");
const linkage = linkage_val.toEnum(std.builtin.GlobalLinkage);
const section = try sema.fieldVal(block, src, options, "section", section_src);
- const section_val = try sema.resolveConstValue(block, section_src, section, "linksection of exported value must be comptime known");
+ const section_val = try sema.resolveConstValue(block, section_src, section, "linksection of exported value must be comptime-known");
const visibility_operand = try sema.fieldVal(block, src, options, "visibility", visibility_src);
- const visibility_val = try sema.resolveConstValue(block, visibility_src, visibility_operand, "visibility of exported value must be comptime known");
+ const visibility_val = try sema.resolveConstValue(block, visibility_src, visibility_operand, "visibility of exported value must be comptime-known");
const visibility = visibility_val.toEnum(std.builtin.SymbolVisibility);
if (name.len < 1) {
@@ -19244,7 +19369,7 @@ fn resolveAtomicRmwOp(
src: LazySrcLoc,
zir_ref: Zir.Inst.Ref,
) CompileError!std.builtin.AtomicRmwOp {
- return resolveBuiltinEnum(sema, block, src, zir_ref, "AtomicRmwOp", "@atomicRmW operation must be comptime known");
+ return resolveBuiltinEnum(sema, block, src, zir_ref, "AtomicRmwOp", "@atomicRmW operation must be comptime-known");
}
fn zirCmpxchg(
@@ -19280,8 +19405,8 @@ fn zirCmpxchg(
const uncasted_ptr = try sema.resolveInst(extra.ptr);
const ptr = try sema.checkAtomicPtrOperand(block, elem_ty, elem_ty_src, uncasted_ptr, ptr_src, false);
const new_value = try sema.coerce(block, elem_ty, try sema.resolveInst(extra.new_value), new_value_src);
- const success_order = try sema.resolveAtomicOrder(block, success_order_src, extra.success_order, "atomic order of cmpxchg success must be comptime known");
- const failure_order = try sema.resolveAtomicOrder(block, failure_order_src, extra.failure_order, "atomic order of cmpxchg failure must be comptime known");
+ const success_order = try sema.resolveAtomicOrder(block, success_order_src, extra.success_order, "atomic order of cmpxchg success must be comptime-known");
+ const failure_order = try sema.resolveAtomicOrder(block, failure_order_src, extra.failure_order, "atomic order of cmpxchg failure must be comptime-known");
if (@enumToInt(success_order) < @enumToInt(std.builtin.AtomicOrder.Monotonic)) {
return sema.fail(block, success_order_src, "success atomic ordering must be Monotonic or stricter", .{});
@@ -19346,7 +19471,7 @@ fn zirSplat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
const len_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node };
const scalar_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node };
- const len = @intCast(u32, try sema.resolveInt(block, len_src, extra.lhs, Type.u32, "vector splat destination length must be comptime known"));
+ const len = @intCast(u32, try sema.resolveInt(block, len_src, extra.lhs, Type.u32, "vector splat destination length must be comptime-known"));
const scalar = try sema.resolveInst(extra.rhs);
const scalar_ty = sema.typeOf(scalar);
try sema.checkVectorElemType(block, scalar_src, scalar_ty);
@@ -19372,7 +19497,7 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
const op_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
- const operation = try sema.resolveBuiltinEnum(block, op_src, extra.lhs, "ReduceOp", "@reduce operation must be comptime known");
+ const operation = try sema.resolveBuiltinEnum(block, op_src, extra.lhs, "ReduceOp", "@reduce operation must be comptime-known");
const operand = try sema.resolveInst(extra.rhs);
const operand_ty = sema.typeOf(operand);
const target = sema.mod.getTarget();
@@ -19459,7 +19584,7 @@ fn zirShuffle(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
.elem_type = Type.@"i32",
});
mask = try sema.coerce(block, mask_ty, mask, mask_src);
- const mask_val = try sema.resolveConstMaybeUndefVal(block, mask_src, mask, "shuffle mask must be comptime known");
+ const mask_val = try sema.resolveConstMaybeUndefVal(block, mask_src, mask, "shuffle mask must be comptime-known");
return sema.analyzeShuffle(block, inst_data.src_node, elem_ty, a, b, mask_val, @intCast(u32, mask_len));
}
@@ -19727,7 +19852,7 @@ fn zirAtomicLoad(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!
const elem_ty = try sema.resolveType(block, elem_ty_src, extra.elem_type);
const uncasted_ptr = try sema.resolveInst(extra.ptr);
const ptr = try sema.checkAtomicPtrOperand(block, elem_ty, elem_ty_src, uncasted_ptr, ptr_src, true);
- const order = try sema.resolveAtomicOrder(block, order_src, extra.ordering, "atomic order of @atomicLoad must be comptime known");
+ const order = try sema.resolveAtomicOrder(block, order_src, extra.ordering, "atomic order of @atomicLoad must be comptime-known");
switch (order) {
.Release, .AcqRel => {
@@ -19791,7 +19916,7 @@ fn zirAtomicRmw(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
},
else => {},
}
- const order = try sema.resolveAtomicOrder(block, order_src, extra.ordering, "atomic order of @atomicRmW must be comptime known");
+ const order = try sema.resolveAtomicOrder(block, order_src, extra.ordering, "atomic order of @atomicRmW must be comptime-known");
if (order == .Unordered) {
return sema.fail(block, order_src, "@atomicRmw atomic ordering must not be Unordered", .{});
@@ -19859,7 +19984,7 @@ fn zirAtomicStore(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
const elem_ty = sema.typeOf(operand);
const uncasted_ptr = try sema.resolveInst(extra.ptr);
const ptr = try sema.checkAtomicPtrOperand(block, elem_ty, elem_ty_src, uncasted_ptr, ptr_src, false);
- const order = try sema.resolveAtomicOrder(block, order_src, extra.ordering, "atomic order of @atomicStore must be comptime known");
+ const order = try sema.resolveAtomicOrder(block, order_src, extra.ordering, "atomic order of @atomicStore must be comptime-known");
const air_tag: Air.Inst.Tag = switch (order) {
.Acquire, .AcqRel => {
@@ -19962,11 +20087,11 @@ fn resolveCallOptions(
const stack_src = sema.maybeOptionsSrc(block, src, "stack");
const modifier = try sema.fieldVal(block, src, options, "modifier", modifier_src);
- const modifier_val = try sema.resolveConstValue(block, modifier_src, modifier, "call modifier must be comptime known");
+ const modifier_val = try sema.resolveConstValue(block, modifier_src, modifier, "call modifier must be comptime-known");
const wanted_modifier = modifier_val.toEnum(std.builtin.CallOptions.Modifier);
const stack = try sema.fieldVal(block, src, options, "stack", stack_src);
- const stack_val = try sema.resolveConstValue(block, stack_src, stack, "call stack value must be comptime known");
+ const stack_val = try sema.resolveConstValue(block, stack_src, stack, "call stack value must be comptime-known");
if (!stack_val.isNull()) {
return sema.fail(block, stack_src, "TODO: implement @call with stack", .{});
@@ -20069,7 +20194,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
var bound_arg_src: ?LazySrcLoc = null;
if (sema.typeOf(func).tag() == .bound_fn) {
bound_arg_src = func_src;
- const bound_func = try sema.resolveValue(block, .unneeded, func, undefined);
+ const bound_func = try sema.resolveValue(block, .unneeded, func, "");
const bound_data = &bound_func.cast(Value.Payload.BoundFn).?.data;
func = bound_data.func_inst;
resolved_args = try sema.arena.alloc(Air.Inst.Ref, args_ty.structFieldCount() + 1);
@@ -20096,7 +20221,7 @@ fn zirFieldParentPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
const ptr_src: LazySrcLoc = .{ .node_offset_builtin_call_arg2 = inst_data.src_node };
const struct_ty = try sema.resolveType(block, ty_src, extra.parent_type);
- const field_name = try sema.resolveConstString(block, name_src, extra.field_name, "field name must be comptime known");
+ const field_name = try sema.resolveConstString(block, name_src, extra.field_name, "field name must be comptime-known");
const field_ptr = try sema.resolveInst(extra.field_ptr);
const field_ptr_ty = sema.typeOf(field_ptr);
@@ -20112,6 +20237,10 @@ fn zirFieldParentPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr
break :blk try sema.tupleFieldIndex(block, struct_ty, field_name, name_src);
} else try sema.structFieldIndex(block, struct_ty, field_name, name_src);
+ if (struct_ty.structFieldIsComptime(field_index)) {
+ return sema.fail(block, src, "cannot get @fieldParentPtr of a comptime field", .{});
+ }
+
try sema.checkPtrOperand(block, ptr_src, field_ptr_ty);
const field_ptr_ty_info = field_ptr_ty.ptrInfo().data;
@@ -20409,7 +20538,7 @@ fn zirVarExtended(
uncasted_init;
break :blk (try sema.resolveMaybeUndefVal(block, init_src, init)) orelse
- return sema.failWithNeededComptime(block, init_src, "container level variable initializers must be comptime known");
+ return sema.failWithNeededComptime(block, init_src, "container level variable initializers must be comptime-known");
} else Value.initTag(.unreachable_value);
try sema.validateVarType(block, ty_src, var_ty, small.is_extern);
@@ -20478,7 +20607,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body.len;
- const val = try sema.resolveGenericBody(block, align_src, body, inst, Type.u29, "alignment must be comptime known");
+ const val = try sema.resolveGenericBody(block, align_src, body, inst, Type.u29, "alignment must be comptime-known");
if (val.tag() == .generic_poison) {
break :blk null;
}
@@ -20492,7 +20621,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
} else if (extra.data.bits.has_align_ref) blk: {
const align_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
extra_index += 1;
- const align_tv = sema.resolveInstConst(block, align_src, align_ref, "alignment must be comptime known") catch |err| switch (err) {
+ const align_tv = sema.resolveInstConst(block, align_src, align_ref, "alignment must be comptime-known") catch |err| switch (err) {
error.GenericPoison => {
break :blk null;
},
@@ -20514,7 +20643,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
extra_index += body.len;
const addrspace_ty = try sema.getBuiltinType(block, addrspace_src, "AddressSpace");
- const val = try sema.resolveGenericBody(block, addrspace_src, body, inst, addrspace_ty, "addrespace must be comptime known");
+ const val = try sema.resolveGenericBody(block, addrspace_src, body, inst, addrspace_ty, "addrespace must be comptime-known");
if (val.tag() == .generic_poison) {
break :blk null;
}
@@ -20522,7 +20651,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
} else if (extra.data.bits.has_addrspace_ref) blk: {
const addrspace_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
extra_index += 1;
- const addrspace_tv = sema.resolveInstConst(block, addrspace_src, addrspace_ref, "addrespace must be comptime known") catch |err| switch (err) {
+ const addrspace_tv = sema.resolveInstConst(block, addrspace_src, addrspace_ref, "addrespace must be comptime-known") catch |err| switch (err) {
error.GenericPoison => {
break :blk null;
},
@@ -20537,7 +20666,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body.len;
- const val = try sema.resolveGenericBody(block, section_src, body, inst, Type.initTag(.const_slice_u8), "linksection must be comptime known");
+ const val = try sema.resolveGenericBody(block, section_src, body, inst, Type.initTag(.const_slice_u8), "linksection must be comptime-known");
if (val.tag() == .generic_poison) {
break :blk FuncLinkSection{ .generic = {} };
}
@@ -20545,7 +20674,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
} else if (extra.data.bits.has_section_ref) blk: {
const section_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
extra_index += 1;
- const section_tv = sema.resolveInstConst(block, section_src, section_ref, "linksection must be comptime known") catch |err| switch (err) {
+ const section_tv = sema.resolveInstConst(block, section_src, section_ref, "linksection must be comptime-known") catch |err| switch (err) {
error.GenericPoison => {
break :blk FuncLinkSection{ .generic = {} };
},
@@ -20562,7 +20691,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
extra_index += body.len;
const cc_ty = try sema.getBuiltinType(block, addrspace_src, "CallingConvention");
- const val = try sema.resolveGenericBody(block, cc_src, body, inst, cc_ty, "calling convention must be comptime known");
+ const val = try sema.resolveGenericBody(block, cc_src, body, inst, cc_ty, "calling convention must be comptime-known");
if (val.tag() == .generic_poison) {
break :blk null;
}
@@ -20570,7 +20699,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
} else if (extra.data.bits.has_cc_ref) blk: {
const cc_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
extra_index += 1;
- const cc_tv = sema.resolveInstConst(block, cc_src, cc_ref, "calling convention must be comptime known") catch |err| switch (err) {
+ const cc_tv = sema.resolveInstConst(block, cc_src, cc_ref, "calling convention must be comptime-known") catch |err| switch (err) {
error.GenericPoison => {
break :blk null;
},
@@ -20585,14 +20714,14 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body.len;
- const val = try sema.resolveGenericBody(block, ret_src, body, inst, Type.type, "return type must be comptime known");
+ const val = try sema.resolveGenericBody(block, ret_src, body, inst, Type.type, "return type must be comptime-known");
var buffer: Value.ToTypeBuffer = undefined;
const ty = try val.toType(&buffer).copy(sema.arena);
break :blk ty;
} else if (extra.data.bits.has_ret_ty_ref) blk: {
const ret_ty_ref = @intToEnum(Zir.Inst.Ref, sema.code.extra[extra_index]);
extra_index += 1;
- const ret_ty_tv = sema.resolveInstConst(block, ret_src, ret_ty_ref, "return type must be comptime known") catch |err| switch (err) {
+ const ret_ty_tv = sema.resolveInstConst(block, ret_src, ret_ty_ref, "return type must be comptime-known") catch |err| switch (err) {
error.GenericPoison => {
break :blk Type.initTag(.generic_poison);
},
@@ -20648,7 +20777,7 @@ fn zirCUndef(
const extra = sema.code.extraData(Zir.Inst.UnNode, extended.operand).data;
const src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
- const name = try sema.resolveConstString(block, src, extra.operand, "name of macro being undefined must be comptime known");
+ const name = try sema.resolveConstString(block, src, extra.operand, "name of macro being undefined must be comptime-known");
try block.c_import_buf.?.writer().print("#undefine {s}\n", .{name});
return Air.Inst.Ref.void_value;
}
@@ -20661,7 +20790,7 @@ fn zirCInclude(
const extra = sema.code.extraData(Zir.Inst.UnNode, extended.operand).data;
const src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
- const name = try sema.resolveConstString(block, src, extra.operand, "path being included must be comptime known");
+ const name = try sema.resolveConstString(block, src, extra.operand, "path being included must be comptime-known");
try block.c_import_buf.?.writer().print("#include <{s}>\n", .{name});
return Air.Inst.Ref.void_value;
}
@@ -20675,10 +20804,10 @@ fn zirCDefine(
const name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.node };
const val_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = extra.node };
- const name = try sema.resolveConstString(block, name_src, extra.lhs, "name of macro being undefined must be comptime known");
+ const name = try sema.resolveConstString(block, name_src, extra.lhs, "name of macro being undefined must be comptime-known");
const rhs = try sema.resolveInst(extra.rhs);
if (sema.typeOf(rhs).zigTypeTag() != .Void) {
- const value = try sema.resolveConstString(block, val_src, extra.rhs, "value of macro being undefined must be comptime known");
+ const value = try sema.resolveConstString(block, val_src, extra.rhs, "value of macro being undefined must be comptime-known");
try block.c_import_buf.?.writer().print("#define {s} {s}\n", .{ name, value });
} else {
try block.c_import_buf.?.writer().print("#define {s}\n", .{name});
@@ -20699,7 +20828,7 @@ fn zirWasmMemorySize(
return sema.fail(block, builtin_src, "builtin @wasmMemorySize is available when targeting WebAssembly; targeted CPU architecture is {s}", .{@tagName(target.cpu.arch)});
}
- const index = @intCast(u32, try sema.resolveInt(block, index_src, extra.operand, Type.u32, "wasm memory size index must be comptime known"));
+ const index = @intCast(u32, try sema.resolveInt(block, index_src, extra.operand, Type.u32, "wasm memory size index must be comptime-known"));
try sema.requireRuntimeBlock(block, builtin_src, null);
return block.addInst(.{
.tag = .wasm_memory_size,
@@ -20724,7 +20853,7 @@ fn zirWasmMemoryGrow(
return sema.fail(block, builtin_src, "builtin @wasmMemoryGrow is available when targeting WebAssembly; targeted CPU architecture is {s}", .{@tagName(target.cpu.arch)});
}
- const index = @intCast(u32, try sema.resolveInt(block, index_src, extra.lhs, Type.u32, "wasm memory size index must be comptime known"));
+ const index = @intCast(u32, try sema.resolveInt(block, index_src, extra.lhs, Type.u32, "wasm memory size index must be comptime-known"));
const delta = try sema.coerce(block, Type.u32, try sema.resolveInst(extra.rhs), delta_src);
try sema.requireRuntimeBlock(block, builtin_src, null);
@@ -20752,13 +20881,13 @@ fn resolvePrefetchOptions(
const cache_src = sema.maybeOptionsSrc(block, src, "cache");
const rw = try sema.fieldVal(block, src, options, "rw", rw_src);
- const rw_val = try sema.resolveConstValue(block, rw_src, rw, "prefetch read/write must be comptime known");
+ const rw_val = try sema.resolveConstValue(block, rw_src, rw, "prefetch read/write must be comptime-known");
const locality = try sema.fieldVal(block, src, options, "locality", locality_src);
- const locality_val = try sema.resolveConstValue(block, locality_src, locality, "prefetch locality must be comptime known");
+ const locality_val = try sema.resolveConstValue(block, locality_src, locality, "prefetch locality must be comptime-known");
const cache = try sema.fieldVal(block, src, options, "cache", cache_src);
- const cache_val = try sema.resolveConstValue(block, cache_src, cache, "prefetch cache must be comptime known");
+ const cache_val = try sema.resolveConstValue(block, cache_src, cache, "prefetch cache must be comptime-known");
return std.builtin.PrefetchOptions{
.rw = rw_val.toEnum(std.builtin.PrefetchOptions.Rw),
@@ -20818,18 +20947,18 @@ fn resolveExternOptions(
const thread_local_src = sema.maybeOptionsSrc(block, src, "thread_local");
const name_ref = try sema.fieldVal(block, src, options, "name", name_src);
- const name_val = try sema.resolveConstValue(block, name_src, name_ref, "name of the extern symbol must be comptime known");
+ const name_val = try sema.resolveConstValue(block, name_src, name_ref, "name of the extern symbol must be comptime-known");
const name = try name_val.toAllocatedBytes(Type.initTag(.const_slice_u8), sema.arena, mod);
const library_name_inst = try sema.fieldVal(block, src, options, "library_name", library_src);
- const library_name_val = try sema.resolveConstValue(block, library_src, library_name_inst, "library in which extern symbol is must be comptime known");
+ const library_name_val = try sema.resolveConstValue(block, library_src, library_name_inst, "library in which extern symbol is must be comptime-known");
const linkage_ref = try sema.fieldVal(block, src, options, "linkage", linkage_src);
- const linkage_val = try sema.resolveConstValue(block, linkage_src, linkage_ref, "linkage of the extern symbol must be comptime known");
+ const linkage_val = try sema.resolveConstValue(block, linkage_src, linkage_ref, "linkage of the extern symbol must be comptime-known");
const linkage = linkage_val.toEnum(std.builtin.GlobalLinkage);
const is_thread_local = try sema.fieldVal(block, src, options, "is_thread_local", thread_local_src);
- const is_thread_local_val = try sema.resolveConstValue(block, thread_local_src, is_thread_local, "threadlocality of the extern symbol must be comptime known");
+ const is_thread_local_val = try sema.resolveConstValue(block, thread_local_src, is_thread_local, "threadlocality of the extern symbol must be comptime-known");
const library_name = if (!library_name_val.isNull()) blk: {
const payload = library_name_val.castTag(.opt_payload).?.data;
@@ -21170,6 +21299,8 @@ const ExternPosition = enum {
ret_ty,
param_ty,
union_field,
+ struct_field,
+ element,
other,
};
@@ -21207,7 +21338,10 @@ fn validateExternType(
8, 16, 32, 64, 128 => return true,
else => return false,
},
- .Fn => return !Type.fnCallingConventionAllowsZigTypes(ty.fnCallingConvention()),
+ .Fn => {
+ if (position != .other) return false;
+ return !Type.fnCallingConventionAllowsZigTypes(ty.fnCallingConvention());
+ },
.Enum => {
var buf: Type.Payload.Bits = undefined;
return sema.validateExternType(block, src, ty.intTagType(&buf), position);
@@ -21226,9 +21360,9 @@ fn validateExternType(
},
.Array => {
if (position == .ret_ty or position == .param_ty) return false;
- return sema.validateExternType(block, src, ty.elemType2(), .other);
+ return sema.validateExternType(block, src, ty.elemType2(), .element);
},
- .Vector => return sema.validateExternType(block, src, ty.elemType2(), .other),
+ .Vector => return sema.validateExternType(block, src, ty.elemType2(), .element),
.Optional => return ty.isPtrLikeOptional(),
}
}
@@ -21268,11 +21402,18 @@ fn explainWhyTypeIsNotExtern(
} else {
try mod.errNoteNonLazy(src_loc, msg, "only integers with power of two bits are extern compatible", .{});
},
- .Fn => switch (ty.fnCallingConvention()) {
- .Unspecified => try mod.errNoteNonLazy(src_loc, msg, "extern function must specify calling convention", .{}),
- .Async => try mod.errNoteNonLazy(src_loc, msg, "async function cannot be extern", .{}),
- .Inline => try mod.errNoteNonLazy(src_loc, msg, "inline function cannot be extern", .{}),
- else => return,
+ .Fn => {
+ if (position != .other) {
+ try mod.errNoteNonLazy(src_loc, msg, "type has no guaranteed in-memory representation", .{});
+ try mod.errNoteNonLazy(src_loc, msg, "use '*const ' to make a function pointer type", .{});
+ return;
+ }
+ switch (ty.fnCallingConvention()) {
+ .Unspecified => try mod.errNoteNonLazy(src_loc, msg, "extern function must specify calling convention", .{}),
+ .Async => try mod.errNoteNonLazy(src_loc, msg, "async function cannot be extern", .{}),
+ .Inline => try mod.errNoteNonLazy(src_loc, msg, "inline function cannot be extern", .{}),
+ else => return,
+ }
},
.Enum => {
var buf: Type.Payload.Bits = undefined;
@@ -21288,9 +21429,9 @@ fn explainWhyTypeIsNotExtern(
} else if (position == .param_ty) {
return mod.errNoteNonLazy(src_loc, msg, "arrays are not allowed as a parameter type", .{});
}
- try sema.explainWhyTypeIsNotExtern(msg, src_loc, ty.elemType2(), position);
+ try sema.explainWhyTypeIsNotExtern(msg, src_loc, ty.elemType2(), .element);
},
- .Vector => try sema.explainWhyTypeIsNotExtern(msg, src_loc, ty.elemType2(), position),
+ .Vector => try sema.explainWhyTypeIsNotExtern(msg, src_loc, ty.elemType2(), .element),
.Optional => try mod.errNoteNonLazy(src_loc, msg, "only pointer like optionals are extern compatible", .{}),
}
}
@@ -22020,7 +22161,7 @@ fn fieldPtr(
}
},
.Type => {
- _ = try sema.resolveConstValue(block, .unneeded, object_ptr, undefined);
+ _ = try sema.resolveConstValue(block, .unneeded, object_ptr, "");
const result = try sema.analyzeLoad(block, src, object_ptr, object_ptr_src);
const inner = if (is_pointer_to)
try sema.analyzeLoad(block, src, result, object_ptr_src)
@@ -22812,7 +22953,7 @@ fn elemPtr(
.Array, .Vector => return sema.elemPtrArray(block, src, indexable_ptr_src, indexable_ptr, elem_index_src, elem_index, init),
.Struct => {
// Tuple field access.
- const index_val = try sema.resolveConstValue(block, elem_index_src, elem_index, "tuple field access index must be comptime known");
+ const index_val = try sema.resolveConstValue(block, elem_index_src, elem_index, "tuple field access index must be comptime-known");
const index = @intCast(u32, index_val.toUnsignedInt(target));
return sema.tupleFieldPtr(block, src, indexable_ptr, elem_index_src, index, init);
},
@@ -22874,7 +23015,7 @@ fn elemVal(
},
.Struct => {
// Tuple field access.
- const index_val = try sema.resolveConstValue(block, elem_index_src, elem_index, "tuple field access index must be comptime known");
+ const index_val = try sema.resolveConstValue(block, elem_index_src, elem_index, "tuple field access index must be comptime-known");
const index = @intCast(u32, index_val.toUnsignedInt(target));
return tupleField(sema, block, indexable_src, indexable, elem_index_src, index);
},
@@ -22896,7 +23037,7 @@ fn validateRuntimeElemAccess(
const msg = try sema.errMsg(
block,
elem_index_src,
- "values of type '{}' must be comptime known, but index value is runtime known",
+ "values of type '{}' must be comptime-known, but index value is runtime-known",
.{parent_ty.fmt(sema.mod)},
);
errdefer msg.destroy(sema.gpa);
@@ -23348,7 +23489,7 @@ fn coerceExtra(
// Function body to function pointer.
if (inst_ty.zigTypeTag() == .Fn) {
- const fn_val = try sema.resolveConstValue(block, .unneeded, inst, undefined);
+ const fn_val = try sema.resolveConstValue(block, .unneeded, inst, "");
const fn_decl = fn_val.pointerDecl().?;
const inst_as_ptr = try sema.analyzeDeclRef(fn_decl);
return sema.coerce(block, dest_ty, inst_as_ptr, inst_src);
@@ -23601,7 +23742,7 @@ fn coerceExtra(
const val = (try sema.resolveDefinedValue(block, inst_src, inst)) orelse {
if (dest_ty.zigTypeTag() == .ComptimeInt) {
if (!opts.report_err) return error.NotCoercible;
- return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_int' must be comptime known");
+ return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_int' must be comptime-known");
}
break :float;
};
@@ -23619,7 +23760,7 @@ fn coerceExtra(
},
.Int, .ComptimeInt => {
if (try sema.resolveDefinedValue(block, inst_src, inst)) |val| {
- // comptime known integer to other number
+ // comptime-known integer to other number
if (!(try sema.intFitsInType(block, inst_src, val, dest_ty, null))) {
if (!opts.report_err) return error.NotCoercible;
return sema.fail(block, inst_src, "type '{}' cannot represent integer value '{}'", .{ dest_ty.fmt(sema.mod), val.fmtValue(inst_ty, sema.mod) });
@@ -23629,7 +23770,7 @@ fn coerceExtra(
if (dest_ty.zigTypeTag() == .ComptimeInt) {
if (!opts.report_err) return error.NotCoercible;
if (opts.no_cast_to_comptime_int) return inst;
- return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_int' must be comptime known");
+ return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_int' must be comptime-known");
}
// integer widening
@@ -23650,7 +23791,7 @@ fn coerceExtra(
},
.Float, .ComptimeFloat => switch (inst_ty.zigTypeTag()) {
.ComptimeFloat => {
- const val = try sema.resolveConstValue(block, .unneeded, inst, undefined);
+ const val = try sema.resolveConstValue(block, .unneeded, inst, "");
const result_val = try val.floatCast(sema.arena, dest_ty, target);
return try sema.addConstant(dest_ty, result_val);
},
@@ -23668,7 +23809,7 @@ fn coerceExtra(
return try sema.addConstant(dest_ty, result_val);
} else if (dest_ty.zigTypeTag() == .ComptimeFloat) {
if (!opts.report_err) return error.NotCoercible;
- return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_float' must be comptime known");
+ return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_float' must be comptime-known");
}
// float widening
@@ -23683,7 +23824,7 @@ fn coerceExtra(
const val = (try sema.resolveDefinedValue(block, inst_src, inst)) orelse {
if (dest_ty.zigTypeTag() == .ComptimeFloat) {
if (!opts.report_err) return error.NotCoercible;
- return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_float' must be comptime known");
+ return sema.failWithNeededComptime(block, inst_src, "value being casted to 'comptime_float' must be comptime-known");
}
break :int;
};
@@ -23708,7 +23849,7 @@ fn coerceExtra(
.Enum => switch (inst_ty.zigTypeTag()) {
.EnumLiteral => {
// enum literal to enum
- const val = try sema.resolveConstValue(block, .unneeded, inst, undefined);
+ const val = try sema.resolveConstValue(block, .unneeded, inst, "");
const bytes = val.castTag(.enum_literal).?.data;
const field_index = dest_ty.enumFieldIndex(bytes) orelse {
const msg = msg: {
@@ -24778,7 +24919,7 @@ fn coerceVarArgParam(
.{},
),
.Fn => blk: {
- const fn_val = try sema.resolveConstValue(block, .unneeded, inst, undefined);
+ const fn_val = try sema.resolveConstValue(block, .unneeded, inst, "");
const fn_decl = fn_val.pointerDecl().?;
break :blk try sema.analyzeDeclRef(fn_decl);
},
@@ -24787,13 +24928,13 @@ fn coerceVarArgParam(
};
const coerced_ty = sema.typeOf(coerced);
- if (!try sema.validateExternType(block, inst_src, coerced_ty, .other)) {
+ if (!try sema.validateExternType(block, inst_src, coerced_ty, .param_ty)) {
const msg = msg: {
const msg = try sema.errMsg(block, inst_src, "cannot pass '{}' to variadic function", .{coerced_ty.fmt(sema.mod)});
errdefer msg.destroy(sema.gpa);
const src_decl = sema.mod.declPtr(block.src_decl);
- try sema.explainWhyTypeIsNotExtern(msg, inst_src.toSrcLoc(src_decl), coerced_ty, .other);
+ try sema.explainWhyTypeIsNotExtern(msg, inst_src.toSrcLoc(src_decl), coerced_ty, .param_ty);
try sema.addDeclaredHereNote(msg, coerced_ty);
break :msg msg;
@@ -26479,7 +26620,7 @@ fn coerceTupleToStruct(
field_refs[field_index] = coerced;
if (field.is_comptime) {
const init_val = (try sema.resolveMaybeUndefVal(block, field_src, coerced)) orelse {
- return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime known");
+ return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime-known");
};
if (!init_val.eql(field.default_val, field.ty, sema.mod)) {
@@ -26575,7 +26716,7 @@ fn coerceTupleToTuple(
field_refs[field_index] = coerced;
if (default_val.tag() != .unreachable_value) {
const init_val = (try sema.resolveMaybeUndefVal(block, field_src, coerced)) orelse {
- return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime known");
+ return sema.failWithNeededComptime(block, field_src, "value stored in comptime field must be comptime-known");
};
if (!init_val.eql(default_val, field_ty, sema.mod)) {
@@ -26651,10 +26792,10 @@ fn analyzeDeclVal(
src: LazySrcLoc,
decl_index: Decl.Index,
) CompileError!Air.Inst.Ref {
+ try sema.addReferencedBy(block, src, decl_index);
if (sema.decl_val_table.get(decl_index)) |result| {
return result;
}
- try sema.addReferencedBy(block, src, decl_index);
const decl_ref = try sema.analyzeDeclRef(decl_index);
const result = try sema.analyzeLoad(block, src, decl_ref, src);
if (Air.refToIndex(result)) |index| {
@@ -26877,10 +27018,14 @@ fn analyzeIsNull(
}
}
+ const inverted_non_null_res = if (invert_logic) Air.Inst.Ref.bool_true else Air.Inst.Ref.bool_false;
const operand_ty = sema.typeOf(operand);
var buf: Type.Payload.ElemType = undefined;
if (operand_ty.zigTypeTag() == .Optional and operand_ty.optionalChild(&buf).zigTypeTag() == .NoReturn) {
- return Air.Inst.Ref.bool_true;
+ return inverted_non_null_res;
+ }
+ if (operand_ty.zigTypeTag() != .Optional and !operand_ty.isPtrLikeOptional()) {
+ return inverted_non_null_res;
}
try sema.requireRuntimeBlock(block, src, null);
const air_tag: Air.Inst.Tag = if (invert_logic) .is_non_null else .is_null;
@@ -26941,7 +27086,7 @@ fn analyzeIsNonErrComptimeOnly(
const maybe_operand_val = try sema.resolveMaybeUndefVal(block, src, operand);
// exception if the error union error set is known to be empty,
- // we allow the comparison but always make it comptime known.
+ // we allow the comparison but always make it comptime-known.
const set_ty = operand_ty.errorUnionSet();
switch (set_ty.tag()) {
.anyerror => {},
@@ -27202,13 +27347,13 @@ fn analyzeSlice(
if (!end_is_len) {
break :e try sema.coerce(block, Type.usize, uncasted_end_opt, end_src);
}
- return sema.fail(block, end_src, "slice of pointer must include end value", .{});
+ return sema.fail(block, src, "slice of pointer must include end value", .{});
};
const sentinel = s: {
if (sentinel_opt != .none) {
const casted = try sema.coerce(block, elem_ty, sentinel_opt, sentinel_src);
- break :s try sema.resolveConstValue(block, sentinel_src, casted, "slice sentinel must be comptime known");
+ break :s try sema.resolveConstValue(block, sentinel_src, casted, "slice sentinel must be comptime-known");
}
// If we are slicing to the end of something that is sentinel-terminated
// then the resulting slice type is also sentinel-terminated.
@@ -27471,7 +27616,7 @@ fn cmpNumeric(
};
// TODO handle comparisons against lazy zero values
- // Some values can be compared against zero without being runtime known or without forcing
+ // Some values can be compared against zero without being runtime-known or without forcing
// a full resolution of their value, for example `@sizeOf(@Frame(function))` is known to
// always be nonzero, and we benefit from not forcing the full evaluation and stack frame layout
// of this function if we don't need to.
@@ -29078,14 +29223,14 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
};
return sema.failWithOwnedErrorMsg(msg);
}
- if (struct_obj.layout == .Extern and !try sema.validateExternType(&block_scope, src, field.ty, .other)) {
+ if (struct_obj.layout == .Extern and !try sema.validateExternType(&block_scope, src, field.ty, .struct_field)) {
const msg = msg: {
const tree = try sema.getAstTree(&block_scope);
const fields_src = enumFieldSrcLoc(decl, tree.*, 0, i);
const msg = try sema.errMsg(&block_scope, fields_src, "extern structs cannot contain fields of type '{}'", .{field.ty.fmt(sema.mod)});
errdefer msg.destroy(sema.gpa);
- try sema.explainWhyTypeIsNotExtern(msg, fields_src.toSrcLoc(decl), field.ty, .other);
+ try sema.explainWhyTypeIsNotExtern(msg, fields_src.toSrcLoc(decl), field.ty, .struct_field);
try sema.addDeclaredHereNote(msg, field.ty);
break :msg msg;
@@ -29130,7 +29275,7 @@ fn semaStructFields(mod: *Module, struct_obj: *Module.Struct) CompileError!void
const field = &struct_obj.fields.values()[i];
const coerced = try sema.coerce(&block_scope, field.ty, init, src);
const default_val = (try sema.resolveMaybeUndefVal(&block_scope, src, coerced)) orelse
- return sema.failWithNeededComptime(&block_scope, src, "struct field default value must be comptime known");
+ return sema.failWithNeededComptime(&block_scope, src, "struct field default value must be comptime-known");
field.default_val = try default_val.copy(decl_arena_allocator);
}
}
@@ -29326,7 +29471,7 @@ fn semaUnionFields(mod: *Module, union_obj: *Module.Union) CompileError!void {
if (tag_ref != .none) {
const tag_src = src; // TODO better source location
const coerced = try sema.coerce(&block_scope, int_tag_ty, tag_ref, tag_src);
- const val = try sema.resolveConstValue(&block_scope, tag_src, coerced, "enum tag value must be comptime known");
+ const val = try sema.resolveConstValue(&block_scope, tag_src, coerced, "enum tag value must be comptime-known");
last_tag_val = val;
// This puts the memory into the union arena, not the enum arena, but
@@ -30150,7 +30295,7 @@ pub fn analyzeAddrspace(
zir_ref: Zir.Inst.Ref,
ctx: AddressSpaceContext,
) !std.builtin.AddressSpace {
- const addrspace_tv = try sema.resolveInstConst(block, src, zir_ref, "addresspace must be comptime known");
+ const addrspace_tv = try sema.resolveInstConst(block, src, zir_ref, "addresspace must be comptime-known");
const address_space = addrspace_tv.val.toEnum(std.builtin.AddressSpace);
const target = sema.mod.getTarget();
const arch = target.cpu.arch;
diff --git a/src/Zir.zig b/src/Zir.zig
index add8bad801..890109fcb0 100644
--- a/src/Zir.zig
+++ b/src/Zir.zig
@@ -402,6 +402,8 @@ pub const Inst = struct {
/// Emits a compile error if an error is ignored.
/// Uses the `un_node` field.
ensure_result_non_error,
+ /// Emits a compile error error union payload is not void.
+ ensure_err_union_payload_void,
/// Create a `E!T` type.
/// Uses the `pl_node` field with `Bin` payload.
error_union_type,
@@ -646,9 +648,6 @@ pub const Inst = struct {
/// Given a pointer to an error union value, returns the error code. No safety checks.
/// Uses the `un_node` field.
err_union_code_ptr,
- /// Takes a *E!T and raises a compiler error if T != void
- /// Uses the `un_tok` field.
- ensure_err_payload_void,
/// An enum literal. Uses the `str_tok` union field.
enum_literal,
/// A switch expression. Uses the `pl_node` union field.
@@ -1060,6 +1059,7 @@ pub const Inst = struct {
.elem_val_node,
.ensure_result_used,
.ensure_result_non_error,
+ .ensure_err_union_payload_void,
.@"export",
.export_value,
.field_ptr,
@@ -1113,7 +1113,6 @@ pub const Inst = struct {
.err_union_code_ptr,
.ptr_type,
.overflow_arithmetic_ptr,
- .ensure_err_payload_void,
.enum_literal,
.merge_error_sets,
.error_union_type,
@@ -1282,7 +1281,7 @@ pub const Inst = struct {
.dbg_block_end,
.ensure_result_used,
.ensure_result_non_error,
- .ensure_err_payload_void,
+ .ensure_err_union_payload_void,
.set_eval_branch_quota,
.atomic_store,
.store,
@@ -1615,6 +1614,7 @@ pub const Inst = struct {
.elem_val_node = .pl_node,
.ensure_result_used = .un_node,
.ensure_result_non_error = .un_node,
+ .ensure_err_union_payload_void = .un_node,
.error_union_type = .pl_node,
.error_value = .str_tok,
.@"export" = .pl_node,
@@ -1677,7 +1677,6 @@ pub const Inst = struct {
.err_union_payload_unsafe_ptr = .un_node,
.err_union_code = .un_node,
.err_union_code_ptr = .un_node,
- .ensure_err_payload_void = .un_tok,
.enum_literal = .str_tok,
.switch_block = .pl_node,
.switch_cond = .un_node,
@@ -3051,11 +3050,16 @@ pub const Inst = struct {
var multi_i: u32 = 0;
while (true) : (multi_i += 1) {
const items_len = zir.extra[extra_index];
- extra_index += 2;
+ extra_index += 1;
+ const ranges_len = zir.extra[extra_index];
+ extra_index += 1;
const body_len = @truncate(u31, zir.extra[extra_index]);
extra_index += 1;
const items = zir.refSlice(extra_index, items_len);
extra_index += items_len;
+ // Each range has a start and an end.
+ extra_index += 2 * ranges_len;
+
const body = zir.extra[extra_index..][0..body_len];
extra_index += body_len;
diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig
index 75f4717f55..ed3a281b80 100644
--- a/src/arch/aarch64/CodeGen.zig
+++ b/src/arch/aarch64/CodeGen.zig
@@ -5425,7 +5425,7 @@ fn parseRegName(name: []const u8) ?Register {
fn registerAlias(reg: Register, size_bytes: u64) Register {
if (size_bytes == 0) {
- unreachable; // should be comptime known
+ unreachable; // should be comptime-known
} else if (size_bytes <= 4) {
return reg.to32();
} else if (size_bytes <= 8) {
diff --git a/src/arch/riscv64/CodeGen.zig b/src/arch/riscv64/CodeGen.zig
index 1dad5a4ac6..87e81748f9 100644
--- a/src/arch/riscv64/CodeGen.zig
+++ b/src/arch/riscv64/CodeGen.zig
@@ -1769,7 +1769,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.
return self.fail("TODO implement calling bitcasted functions", .{});
}
} else {
- return self.fail("TODO implement calling runtime known function pointer", .{});
+ return self.fail("TODO implement calling runtime-known function pointer", .{});
}
} else if (self.bin_file.cast(link.File.Coff)) |_| {
return self.fail("TODO implement calling in COFF for {}", .{self.target.cpu.arch});
diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig
index a72ae6a423..f27957d3f5 100644
--- a/src/arch/wasm/CodeGen.zig
+++ b/src/arch/wasm/CodeGen.zig
@@ -2289,6 +2289,14 @@ fn lowerParentPtr(self: *Self, ptr_val: Value, ptr_child_ty: Type) InnerError!WV
const offset = @intCast(u32, std.mem.alignForwardGeneric(u64, layout.tag_size, layout.tag_align));
break :blk offset;
},
+ .Pointer => switch (parent_ty.ptrSize()) {
+ .Slice => switch (field_ptr.field_index) {
+ 0 => 0,
+ 1 => self.ptrSize(),
+ else => unreachable,
+ },
+ else => unreachable,
+ },
else => unreachable,
};
diff --git a/src/arch/wasm/Emit.zig b/src/arch/wasm/Emit.zig
index 0f3ee9a2a2..ed8501a601 100644
--- a/src/arch/wasm/Emit.zig
+++ b/src/arch/wasm/Emit.zig
@@ -413,7 +413,7 @@ fn emitMemAddress(emit: *Emit, inst: Mir.Inst.Index) !void {
.offset = mem_offset,
.index = mem.pointer,
.relocation_type = if (is_wasm32) .R_WASM_MEMORY_ADDR_LEB else .R_WASM_MEMORY_ADDR_LEB64,
- .addend = mem.offset,
+ .addend = @intCast(i32, mem.offset),
});
}
}
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig
index c9c03e4646..27eb11c649 100644
--- a/src/arch/x86_64/CodeGen.zig
+++ b/src/arch/x86_64/CodeGen.zig
@@ -7272,7 +7272,7 @@ fn parseRegName(name: []const u8) ?Register {
/// Returns register wide enough to hold at least `size_bytes`.
fn registerAlias(reg: Register, size_bytes: u32) Register {
if (size_bytes == 0) {
- unreachable; // should be comptime known
+ unreachable; // should be comptime-known
} else if (size_bytes <= 1) {
return reg.to8();
} else if (size_bytes <= 2) {
diff --git a/src/clang.zig b/src/clang.zig
index 205a3cccc6..d3eacbfec4 100644
--- a/src/clang.zig
+++ b/src/clang.zig
@@ -470,6 +470,9 @@ pub const FieldDecl = opaque {
pub const getAlignedAttribute = ZigClangFieldDecl_getAlignedAttribute;
extern fn ZigClangFieldDecl_getAlignedAttribute(*const FieldDecl, *const ASTContext) c_uint;
+ pub const getPackedAttribute = ZigClangFieldDecl_getPackedAttribute;
+ extern fn ZigClangFieldDecl_getPackedAttribute(*const FieldDecl) bool;
+
pub const isAnonymousStructOrUnion = ZigClangFieldDecl_isAnonymousStructOrUnion;
extern fn ZigClangFieldDecl_isAnonymousStructOrUnion(*const FieldDecl) bool;
@@ -1015,6 +1018,9 @@ pub const VarDecl = opaque {
pub const getAlignedAttribute = ZigClangVarDecl_getAlignedAttribute;
extern fn ZigClangVarDecl_getAlignedAttribute(*const VarDecl, *const ASTContext) c_uint;
+ pub const getPackedAttribute = ZigClangVarDecl_getPackedAttribute;
+ extern fn ZigClangVarDecl_getPackedAttribute(*const VarDecl) bool;
+
pub const getCleanupAttribute = ZigClangVarDecl_getCleanupAttribute;
extern fn ZigClangVarDecl_getCleanupAttribute(*const VarDecl) ?*const FunctionDecl;
diff --git a/src/codegen.zig b/src/codegen.zig
index f5340458a5..e7f927a2d6 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -363,11 +363,21 @@ pub fn generateSymbol(
const mod = bin_file.options.module.?;
const decl = mod.declPtr(decl_index);
const addend = blk: {
- switch (decl.ty.tag()) {
- .@"struct" => {
+ switch (decl.ty.zigTypeTag()) {
+ .Struct => {
const addend = decl.ty.structFieldOffset(field_ptr.field_index, target);
break :blk @intCast(u32, addend);
},
+ .Pointer => {
+ assert(decl.ty.isSlice());
+ var buf: Type.SlicePtrFieldTypeBuffer = undefined;
+ const addend = switch (field_ptr.field_index) {
+ 0 => 0,
+ 1 => decl.ty.slicePtrFieldType(&buf).abiSize(target),
+ else => unreachable,
+ };
+ break :blk @intCast(u32, addend);
+ },
else => return Result{
.fail = try ErrorMsg.create(
bin_file.allocator,
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index 4a09c09cc9..b25e05e118 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -485,14 +485,24 @@ pub const DeclGen = struct {
const field_ptr = ptr_val.castTag(.field_ptr).?.data;
const container_ty = field_ptr.container_ty;
const index = field_ptr.field_index;
- const field_name = switch (container_ty.zigTypeTag()) {
- .Struct => container_ty.structFields().keys()[index],
- .Union => container_ty.unionFields().keys()[index],
- else => unreachable,
- };
- const field_ty = switch (container_ty.zigTypeTag()) {
- .Struct => container_ty.structFields().values()[index].ty,
- .Union => container_ty.unionFields().values()[index].ty,
+ const FieldInfo = struct { name: []const u8, ty: Type };
+ const field_info: FieldInfo = switch (container_ty.zigTypeTag()) {
+ .Struct => .{
+ .name = container_ty.structFields().keys()[index],
+ .ty = container_ty.structFields().values()[index].ty,
+ },
+ .Union => .{
+ .name = container_ty.unionFields().keys()[index],
+ .ty = container_ty.unionFields().values()[index].ty,
+ },
+ .Pointer => switch (container_ty.ptrSize()) {
+ .Slice => switch (index) {
+ 0 => FieldInfo{ .name = "ptr", .ty = container_ty.childType() },
+ 1 => FieldInfo{ .name = "len", .ty = Type.usize },
+ else => unreachable,
+ },
+ else => unreachable,
+ },
else => unreachable,
};
var container_ptr_ty_pl: Type.Payload.ElemType = .{
@@ -501,16 +511,16 @@ pub const DeclGen = struct {
};
const container_ptr_ty = Type.initPayload(&container_ptr_ty_pl.base);
- if (field_ty.hasRuntimeBitsIgnoreComptime()) {
+ if (field_info.ty.hasRuntimeBitsIgnoreComptime()) {
try writer.writeAll("&(");
try dg.renderParentPtr(writer, field_ptr.container_ptr, container_ptr_ty);
if (field_ptr.container_ty.tag() == .union_tagged or field_ptr.container_ty.tag() == .union_safety_tagged) {
- try writer.print(")->payload.{ }", .{fmtIdent(field_name)});
+ try writer.print(")->payload.{ }", .{fmtIdent(field_info.name)});
} else {
- try writer.print(")->{ }", .{fmtIdent(field_name)});
+ try writer.print(")->{ }", .{fmtIdent(field_info.name)});
}
} else {
- try dg.renderParentPtr(writer, field_ptr.container_ptr, field_ty);
+ try dg.renderParentPtr(writer, field_ptr.container_ptr, field_info.ty);
}
},
.elem_ptr => {
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index a24c14c9c6..7038606611 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -3938,6 +3938,15 @@ pub const DeclGen = struct {
const parent_llvm_ty = try dg.lowerType(parent_ty);
break :blk parent_llvm_ty.constInBoundsGEP(parent_llvm_ptr, &indices, indices.len);
},
+ .Pointer => {
+ assert(parent_ty.isSlice());
+ const indices: [2]*llvm.Value = .{
+ llvm_u32.constInt(0, .False),
+ llvm_u32.constInt(field_index, .False),
+ };
+ const parent_llvm_ty = try dg.lowerType(parent_ty);
+ break :blk parent_llvm_ty.constInBoundsGEP(parent_llvm_ptr, &indices, indices.len);
+ },
else => unreachable,
}
},
@@ -8897,7 +8906,7 @@ pub const FuncGen = struct {
return union_llvm_ty.constInt(tag_int, .False);
}
assert(isByRef(union_ty));
- // The llvm type of the alloca will the the named LLVM union type, which will not
+ // The llvm type of the alloca will be the named LLVM union type, and will not
// necessarily match the format that we need, depending on which tag is active. We
// must construct the correct unnamed struct type here and bitcast, in order to
// then set the fields appropriately.
@@ -8922,7 +8931,7 @@ pub const FuncGen = struct {
const fields: [2]*llvm.Type = .{
field_llvm_ty, self.context.intType(8).arrayType(padding_len),
};
- break :p self.context.structType(&fields, fields.len, .False);
+ break :p self.context.structType(&fields, fields.len, .True);
};
if (layout.tag_size == 0) {
const fields: [1]*llvm.Type = .{payload};
diff --git a/src/link.zig b/src/link.zig
index fe7891a439..0b6ffa8bf4 100644
--- a/src/link.zig
+++ b/src/link.zig
@@ -305,7 +305,7 @@ pub const File = struct {
};
}
const emit = options.emit.?;
- const use_lld = build_options.have_llvm and options.use_lld; // comptime known false when !have_llvm
+ const use_lld = build_options.have_llvm and options.use_lld; // comptime-known false when !have_llvm
const sub_path = if (use_lld) blk: {
if (options.module == null) {
// No point in opening a file, we would not write anything to it.
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig
index 0e6fe5dcc2..2327837b31 100644
--- a/src/link/Wasm.zig
+++ b/src/link/Wasm.zig
@@ -1080,7 +1080,7 @@ pub fn getDeclVAddr(
.index = target_symbol_index,
.offset = @intCast(u32, reloc_info.offset),
.relocation_type = if (is_wasm32) .R_WASM_MEMORY_ADDR_I32 else .R_WASM_MEMORY_ADDR_I64,
- .addend = reloc_info.addend,
+ .addend = @intCast(i32, reloc_info.addend),
});
}
// we do not know the final address at this point,
@@ -2001,7 +2001,7 @@ fn populateErrorNameTable(wasm: *Wasm) !void {
.index = names_symbol_index,
.relocation_type = .R_WASM_MEMORY_ADDR_I32,
.offset = offset,
- .addend = addend,
+ .addend = @intCast(i32, addend),
});
atom.size += @intCast(u32, slice_ty.abiSize(wasm.base.options.target));
addend += len;
@@ -2556,6 +2556,10 @@ pub fn flushModule(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Nod
try wasm.emitDataRelocations(&binary_bytes, data_index, symbol_table);
}
} else if (!wasm.base.options.strip) {
+ try wasm.emitNameSection(&binary_bytes, arena);
+ }
+
+ if (!wasm.base.options.strip) {
if (wasm.dwarf) |*dwarf| {
const mod = wasm.base.options.module.?;
try dwarf.writeDbgAbbrev(&wasm.base);
@@ -2597,7 +2601,8 @@ pub fn flushModule(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Nod
debug_bytes.clearRetainingCapacity();
}
}
- try wasm.emitNameSection(&binary_bytes, arena);
+
+ try emitProducerSection(&binary_bytes);
}
// Only when writing all sections executed properly we write the magic
@@ -2631,6 +2636,65 @@ fn emitDebugSection(binary_bytes: *std.ArrayList(u8), data: []const u8, name: []
);
}
+fn emitProducerSection(binary_bytes: *std.ArrayList(u8)) !void {
+ const header_offset = try reserveCustomSectionHeader(binary_bytes);
+
+ const writer = binary_bytes.writer();
+ const producers = "producers";
+ try leb.writeULEB128(writer, @intCast(u32, producers.len));
+ try writer.writeAll(producers);
+
+ try leb.writeULEB128(writer, @as(u32, 2)); // 2 fields: Language + processed-by
+
+ // used for the Zig version
+ var version_buf: [100]u8 = undefined;
+ const version = try std.fmt.bufPrint(&version_buf, "{}", .{build_options.semver});
+
+ // language field
+ {
+ const language = "language";
+ try leb.writeULEB128(writer, @intCast(u32, language.len));
+ try writer.writeAll(language);
+
+ // field_value_count (TODO: Parse object files for producer sections to detect their language)
+ try leb.writeULEB128(writer, @as(u32, 1));
+
+ // versioned name
+ {
+ try leb.writeULEB128(writer, @as(u32, 3)); // len of "Zig"
+ try writer.writeAll("Zig");
+
+ try leb.writeULEB128(writer, @intCast(u32, version.len));
+ try writer.writeAll(version);
+ }
+ }
+
+ // processed-by field
+ {
+ const processed_by = "processed-by";
+ try leb.writeULEB128(writer, @intCast(u32, processed_by.len));
+ try writer.writeAll(processed_by);
+
+ // field_value_count (TODO: Parse object files for producer sections to detect other used tools)
+ try leb.writeULEB128(writer, @as(u32, 1));
+
+ // versioned name
+ {
+ try leb.writeULEB128(writer, @as(u32, 3)); // len of "Zig"
+ try writer.writeAll("Zig");
+
+ try leb.writeULEB128(writer, @intCast(u32, version.len));
+ try writer.writeAll(version);
+ }
+ }
+
+ try writeCustomSectionHeader(
+ binary_bytes.items,
+ header_offset,
+ @intCast(u32, binary_bytes.items.len - header_offset - 6),
+ );
+}
+
fn emitNameSection(wasm: *Wasm, binary_bytes: *std.ArrayList(u8), arena: std.mem.Allocator) !void {
const Name = struct {
index: u32,
@@ -3369,7 +3433,7 @@ fn emitCodeRelocations(
try leb.writeULEB128(writer, offset);
try leb.writeULEB128(writer, symbol_index);
if (relocation.relocation_type.addendIsPresent()) {
- try leb.writeULEB128(writer, relocation.addend orelse 0);
+ try leb.writeILEB128(writer, relocation.addend);
}
log.debug("Emit relocation: {}", .{relocation});
}
@@ -3419,7 +3483,7 @@ fn emitDataRelocations(
try leb.writeULEB128(writer, offset);
try leb.writeULEB128(writer, symbol_index);
if (relocation.relocation_type.addendIsPresent()) {
- try leb.writeULEB128(writer, relocation.addend orelse 0);
+ try leb.writeILEB128(writer, relocation.addend);
}
log.debug("Emit relocation: {}", .{relocation});
}
diff --git a/src/link/Wasm/Atom.zig b/src/link/Wasm/Atom.zig
index 5af07d891a..4c1da180bd 100644
--- a/src/link/Wasm/Atom.zig
+++ b/src/link/Wasm/Atom.zig
@@ -194,12 +194,14 @@ fn relocationValue(atom: Atom, relocation: types.Relocation, wasm_bin: *const Wa
const segment_name = segment_info[symbol.index].outputName(merge_segment);
const segment_index = wasm_bin.data_segments.get(segment_name).?;
const segment = wasm_bin.segments.items[segment_index];
- return target_atom.offset + segment.offset + (relocation.addend orelse 0);
+ const rel_value = @intCast(i32, target_atom.offset + segment.offset) + relocation.addend;
+ return @intCast(u32, rel_value);
},
.R_WASM_EVENT_INDEX_LEB => return symbol.index,
.R_WASM_SECTION_OFFSET_I32 => {
const target_atom = wasm_bin.symbol_atom.get(target_loc).?;
- return target_atom.offset + (relocation.addend orelse 0);
+ const rel_value = @intCast(i32, target_atom.offset) + relocation.addend;
+ return @intCast(u32, rel_value);
},
.R_WASM_FUNCTION_OFFSET_I32 => {
const target_atom = wasm_bin.symbol_atom.get(target_loc).?;
@@ -214,7 +216,8 @@ fn relocationValue(atom: Atom, relocation: types.Relocation, wasm_bin: *const Wa
if (current_atom == target_atom) break;
current_atom = current_atom.next.?;
}
- return target_atom.offset + offset + (relocation.addend orelse 0);
+ const rel_value = @intCast(i32, target_atom.offset + offset) + relocation.addend;
+ return @intCast(u32, rel_value);
},
}
}
diff --git a/src/link/Wasm/Object.zig b/src/link/Wasm/Object.zig
index 97b7da0255..63084f4879 100644
--- a/src/link/Wasm/Object.zig
+++ b/src/link/Wasm/Object.zig
@@ -606,7 +606,7 @@ fn Parser(comptime ReaderType: type) type {
.relocation_type = rel_type_enum,
.offset = try leb.readULEB128(u32, reader),
.index = try leb.readULEB128(u32, reader),
- .addend = if (rel_type_enum.addendIsPresent()) try leb.readULEB128(u32, reader) else null,
+ .addend = if (rel_type_enum.addendIsPresent()) try leb.readILEB128(i32, reader) else 0,
};
log.debug("Found relocation: type({s}) offset({d}) index({d}) addend({?d})", .{
@tagName(relocation.relocation_type),
diff --git a/src/link/Wasm/types.zig b/src/link/Wasm/types.zig
index 9216f95efa..2006fe1812 100644
--- a/src/link/Wasm/types.zig
+++ b/src/link/Wasm/types.zig
@@ -12,8 +12,8 @@ pub const Relocation = struct {
/// When the type is `R_WASM_TYPE_INDEX_LEB`, it represents the index of the type.
index: u32,
/// Addend to add to the address.
- /// This field is only non-null for `R_WASM_MEMORY_ADDR_*`, `R_WASM_FUNCTION_OFFSET_I32` and `R_WASM_SECTION_OFFSET_I32`.
- addend: ?u32 = null,
+ /// This field is only non-zero for `R_WASM_MEMORY_ADDR_*`, `R_WASM_FUNCTION_OFFSET_I32` and `R_WASM_SECTION_OFFSET_I32`.
+ addend: i32 = 0,
/// All possible relocation types currently existing.
/// This enum is exhaustive as the spec is WIP and new types
diff --git a/src/main.zig b/src/main.zig
index 2f005b57a4..e657f69dd1 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -404,7 +404,8 @@ const usage_build_generic =
\\ -fno-builtin Disable implicit builtin knowledge of functions
\\ -ffunction-sections Places each function in a separate section
\\ -fno-function-sections All functions go into same section
- \\ --strip Omit debug symbols
+ \\ -fstrip Omit debug symbols
+ \\ -fno-strip Keep debug symbols
\\ -ofmt=[mode] Override target object format
\\ elf Executable and Linking Format
\\ c C source code
@@ -630,7 +631,7 @@ fn buildOutputType(
var version: std.builtin.Version = .{ .major = 0, .minor = 0, .patch = 0 };
var have_version = false;
var compatibility_version: ?std.builtin.Version = null;
- var strip = false;
+ var strip: ?bool = null;
var function_sections = false;
var no_builtin = false;
var watch = false;
@@ -1296,8 +1297,10 @@ fn buildOutputType(
} else if (mem.eql(u8, arg, "--show-builtin")) {
show_builtin = true;
emit_bin = .no;
- } else if (mem.eql(u8, arg, "--strip")) {
+ } else if (mem.eql(u8, arg, "-fstrip")) {
strip = true;
+ } else if (mem.eql(u8, arg, "-fno-strip")) {
+ strip = false;
} else if (mem.eql(u8, arg, "-fsingle-threaded")) {
single_threaded = true;
} else if (mem.eql(u8, arg, "-fno-single-threaded")) {
@@ -1432,7 +1435,6 @@ fn buildOutputType(
.cc, .cpp => {
emit_h = .no;
soname = .no;
- strip = false;
ensure_libc_on_non_freestanding = true;
ensure_libcpp_on_non_freestanding = arg_mode == .cpp;
want_native_include_dirs = true;
@@ -2186,6 +2188,9 @@ fn buildOutputType(
},
}
+ if (arg_mode == .build and optimize_mode == .ReleaseSmall and strip == null)
+ strip = true;
+
if (arg_mode == .translate_c and c_source_files.items.len != 1) {
fatal("translate-c expects exactly 1 source file (found {d})", .{c_source_files.items.len});
}
@@ -2763,7 +2768,14 @@ fn buildOutputType(
defer gpa.free(rel_src_path);
break :blk try Package.create(gpa, p, rel_src_path);
} else {
- break :blk try Package.create(gpa, fs.path.dirname(src_path), fs.path.basename(src_path));
+ const root_src_dir_path = fs.path.dirname(src_path);
+ break :blk Package.create(gpa, root_src_dir_path, fs.path.basename(src_path)) catch |err| {
+ if (root_src_dir_path) |p| {
+ fatal("unable to open '{s}': {s}", .{ p, @errorName(err) });
+ } else {
+ return err;
+ }
+ };
}
} else null;
defer if (main_pkg) |p| p.destroy(gpa);
@@ -2792,7 +2804,7 @@ fn buildOutputType(
var zig_lib_directory: Compilation.Directory = if (override_lib_dir) |lib_dir| .{
.path = lib_dir,
.handle = fs.cwd().openDir(lib_dir, .{}) catch |err| {
- fatal("unable to open zig lib directory from 'zig-lib-dir' argument or env, '{s}': {s}", .{ lib_dir, @errorName(err) });
+ fatal("unable to open zig lib directory '{s}': {s}", .{ lib_dir, @errorName(err) });
},
} else introspect.findZigLibDirFromSelfExe(arena, self_exe_path) catch |err| {
fatal("unable to find zig installation directory: {s}\n", .{@errorName(err)});
diff --git a/src/mingw.zig b/src/mingw.zig
index 23035fe72b..0d5d1fd0f7 100644
--- a/src/mingw.zig
+++ b/src/mingw.zig
@@ -91,6 +91,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
"-D_CRTBLD",
"-D_WIN32_WINNT=0x0f00",
"-D__MSVCRT_VERSION__=0x700",
+ "-D__USE_MINGW_ANSI_STDIO=0",
});
c_source_files[i] = .{
.src_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
@@ -105,7 +106,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
.msvcrt_os_lib => {
const extra_flags = try arena.dupe([]const u8, &[_][]const u8{
"-DHAVE_CONFIG_H",
- "-D__LIBMSVCRT__",
+ "-D__LIBMSVCRT_OS__",
"-I",
try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libc", "mingw", "include" }),
@@ -114,6 +115,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
"-D_CRTBLD",
"-D_WIN32_WINNT=0x0f00",
"-D__MSVCRT_VERSION__=0x700",
+ "-D__USE_MINGW_ANSI_STDIO=0",
"-isystem",
try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libc", "include", "any-windows-any" }),
@@ -162,6 +164,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
"-D_CRTBLD",
"-D_WIN32_WINNT=0x0f00",
"-D__MSVCRT_VERSION__=0x700",
+ "-D__USE_MINGW_ANSI_STDIO=0",
"-isystem",
try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libc", "include", "any-windows-any" }),
@@ -224,6 +227,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
"-D_CRTBLD",
"-D_WIN32_WINNT=0x0f00",
"-D__MSVCRT_VERSION__=0x700",
+ "-D__USE_MINGW_ANSI_STDIO=0",
"-isystem",
try comp.zig_lib_directory.join(arena, &[_][]const u8{
@@ -269,6 +273,7 @@ fn add_cc_args(
"-D_CRTBLD",
"-D_WIN32_WINNT=0x0f00",
"-D__MSVCRT_VERSION__=0x700",
+ "-D__USE_MINGW_ANSI_STDIO=0",
});
}
@@ -677,7 +682,6 @@ const mingwex_generic_src = [_][]const u8{
"math" ++ path.sep_str ++ "cbrt.c",
"math" ++ path.sep_str ++ "cbrtf.c",
"math" ++ path.sep_str ++ "cbrtl.c",
- "math" ++ path.sep_str ++ "cephes_emath.c",
"math" ++ path.sep_str ++ "copysign.c",
"math" ++ path.sep_str ++ "copysignf.c",
"math" ++ path.sep_str ++ "coshf.c",
@@ -810,7 +814,6 @@ const mingwex_generic_src = [_][]const u8{
"misc" ++ path.sep_str ++ "strnlen.c",
"misc" ++ path.sep_str ++ "strsafe.c",
"misc" ++ path.sep_str ++ "strtoimax.c",
- "misc" ++ path.sep_str ++ "strtold.c",
"misc" ++ path.sep_str ++ "strtoumax.c",
"misc" ++ path.sep_str ++ "tdelete.c",
"misc" ++ path.sep_str ++ "tfind.c",
diff --git a/src/print_zir.zig b/src/print_zir.zig
index d383664c16..8f055e9ddd 100644
--- a/src/print_zir.zig
+++ b/src/print_zir.zig
@@ -162,6 +162,7 @@ const Writer = struct {
.load,
.ensure_result_used,
.ensure_result_non_error,
+ .ensure_err_union_payload_void,
.ret_node,
.ret_load,
.resolve_inferred_alloc,
@@ -235,7 +236,6 @@ const Writer = struct {
.ref,
.ret_tok,
- .ensure_err_payload_void,
.closure_capture,
.switch_capture_tag,
=> try self.writeUnTok(stream, inst),
diff --git a/src/stage1.zig b/src/stage1.zig
index e3f0daaa44..f4c9cbf8a1 100644
--- a/src/stage1.zig
+++ b/src/stage1.zig
@@ -40,10 +40,18 @@ pub fn main(argc: c_int, argv: [*][*:0]u8) callconv(.C) c_int {
defer arena_instance.deinit();
const arena = arena_instance.allocator();
- const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"});
- for (args) |*arg, i| {
- arg.* = mem.sliceTo(argv[i], 0);
- }
+ const args: []const []const u8 = args: {
+ if (builtin.os.tag == .windows) {
+ break :args std.process.argsAlloc(arena) catch fatal("{s}", .{"OutOfMemory"});
+ } else {
+ const args = arena.alloc([]const u8, @intCast(usize, argc)) catch fatal("{s}", .{"OutOfMemory"});
+ for (args) |*arg, i| {
+ arg.* = mem.sliceTo(argv[i], 0);
+ }
+ break :args args;
+ }
+ };
+
if (builtin.mode == .Debug) {
stage2.mainArgs(gpa, arena, args) catch unreachable;
} else {
diff --git a/src/stage1/parse_f128.c b/src/stage1/parse_f128.c
index ea6acc73d0..493375e4d1 100644
--- a/src/stage1/parse_f128.c
+++ b/src/stage1/parse_f128.c
@@ -983,14 +983,14 @@ static int isspace(int c)
return c == ' ' || (unsigned)c-'\t' < 5;
}
-static inline float128_t makeInf128() {
+static inline float128_t makeInf128(void) {
union ldshape ux;
ux.i2.hi = 0x7fff000000000000UL;
ux.i2.lo = 0x0UL;
return ux.f;
}
-static inline float128_t makeNaN128() {
+static inline float128_t makeNaN128(void) {
uint64_t rand = 0UL;
union ldshape ux;
ux.i2.hi = 0x7fff000000000000UL | (rand & 0xffffffffffffUL);
diff --git a/src/tracy.zig b/src/tracy.zig
index 4ecae74481..fc485c4bfc 100644
--- a/src/tracy.zig
+++ b/src/tracy.zig
@@ -173,13 +173,13 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type {
};
}
-// This function only accepts comptime known strings, see `messageCopy` for runtime strings
+// This function only accepts comptime-known strings, see `messageCopy` for runtime strings
pub inline fn message(comptime msg: [:0]const u8) void {
if (!enable) return;
___tracy_emit_messageL(msg.ptr, if (enable_callstack) callstack_depth else 0);
}
-// This function only accepts comptime known strings, see `messageColorCopy` for runtime strings
+// This function only accepts comptime-known strings, see `messageColorCopy` for runtime strings
pub inline fn messageColor(comptime msg: [:0]const u8, color: u32) void {
if (!enable) return;
___tracy_emit_messageLC(msg.ptr, color, if (enable_callstack) callstack_depth else 0);
diff --git a/src/translate_c.zig b/src/translate_c.zig
index f969bf1c8b..d71e5f30e2 100644
--- a/src/translate_c.zig
+++ b/src/translate_c.zig
@@ -436,7 +436,7 @@ pub fn translate(
}
}
- return ast.render(gpa, context.global_scope.nodes.items);
+ return ast.render(gpa, zig_is_stage1, context.global_scope.nodes.items);
}
/// Determines whether macro is of the form: `#define FOO FOO` (Possibly with trailing tokens)
@@ -878,7 +878,7 @@ fn visitVarDecl(c: *Context, var_decl: *const clang.VarDecl, mangled_name: ?[]co
.is_export = is_export,
.is_threadlocal = is_threadlocal,
.linksection_string = linksection_string,
- .alignment = zigAlignment(var_decl.getAlignedAttribute(c.clang_context)),
+ .alignment = ClangAlignment.forVar(c, var_decl).zigAlignment(),
.name = var_name,
.type = type_node,
.init = init_node,
@@ -1096,7 +1096,6 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
break :blk Tag.opaque_literal.init();
};
- const is_packed = record_decl.getPackedAttribute();
var fields = std.ArrayList(ast.Payload.Record.Field).init(c.gpa);
defer fields.deinit();
@@ -1153,7 +1152,7 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
const alignment = if (has_flexible_array and field_decl.getFieldIndex() == 0)
@intCast(c_uint, record_alignment)
else
- zigAlignment(field_decl.getAlignedAttribute(c.clang_context));
+ ClangAlignment.forField(c, field_decl, record_def).zigAlignment();
if (is_anon) {
try c.decl_table.putNoClobber(c.gpa, @ptrToInt(field_decl.getCanonicalDecl()), field_name);
@@ -1166,15 +1165,11 @@ fn transRecordDecl(c: *Context, scope: *Scope, record_decl: *const clang.RecordD
});
}
- if (!c.zig_is_stage1 and is_packed) {
- return failDecl(c, record_loc, name, "cannot translate packed record union", .{});
- }
-
const record_payload = try c.arena.create(ast.Payload.Record);
record_payload.* = .{
.base = .{ .tag = ([2]Tag{ .@"struct", .@"union" })[@boolToInt(is_union)] },
.data = .{
- .layout = if (is_packed) .@"packed" else .@"extern",
+ .layout = .@"extern",
.fields = try c.arena.dupe(ast.Payload.Record.Field, fields.items),
.functions = try c.arena.dupe(Node, functions.items),
.variables = &.{},
@@ -1851,12 +1846,62 @@ fn transCStyleCastExprClass(
return maybeSuppressResult(c, scope, result_used, cast_node);
}
-/// Clang reports the alignment in bits, we use bytes
-/// Clang uses 0 for "no alignment specified", we use null
-fn zigAlignment(bit_alignment: c_uint) ?c_uint {
- if (bit_alignment == 0) return null;
- return bit_alignment / 8;
-}
+/// The alignment of a variable or field
+const ClangAlignment = struct {
+ /// Clang reports the alignment in bits, we use bytes
+ /// Clang uses 0 for "no alignment specified", we use null
+ bit_alignment: c_uint,
+ /// If the field or variable is marked as 'packed'
+ ///
+ /// According to the GCC variable attribute docs, this impacts alignment
+ /// https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html
+ ///
+ /// > The packed attribute specifies that a structure member
+ /// > should have the smallest possible alignment
+ ///
+ /// Note also that specifying the 'packed' attribute on a structure
+ /// implicitly packs all its fields (making their alignment 1).
+ ///
+ /// This will be null if the AST node doesn't support packing (functions)
+ is_packed: ?bool,
+
+ /// Get the alignment for a field, optionally taking into account the parent record
+ pub fn forField(c: *const Context, field: *const clang.FieldDecl, parent: ?*const clang.RecordDecl) ClangAlignment {
+ const parent_packed = if (parent) |record| record.getPackedAttribute() else false;
+ // NOTE: According to GCC docs, parent attribute packed implies child attribute packed
+ return ClangAlignment{
+ .bit_alignment = field.getAlignedAttribute(c.clang_context),
+ .is_packed = field.getPackedAttribute() or parent_packed,
+ };
+ }
+
+ pub fn forVar(c: *const Context, var_decl: *const clang.VarDecl) ClangAlignment {
+ return ClangAlignment{
+ .bit_alignment = var_decl.getAlignedAttribute(c.clang_context),
+ .is_packed = var_decl.getPackedAttribute(),
+ };
+ }
+
+ pub fn forFunc(c: *const Context, fun: *const clang.FunctionDecl) ClangAlignment {
+ return ClangAlignment{
+ .bit_alignment = fun.getAlignedAttribute(c.clang_context),
+ .is_packed = null, // not supported by GCC/clang (or meaningful),
+ };
+ }
+
+ /// Translate the clang alignment info into a zig alignment
+ ///
+ /// Returns null if there is no special alignment info
+ pub fn zigAlignment(self: ClangAlignment) ?c_uint {
+ if (self.bit_alignment != 0) {
+ return self.bit_alignment / 8;
+ } else if (self.is_packed orelse false) {
+ return 1;
+ } else {
+ return null;
+ }
+ }
+};
fn transDeclStmtOne(
c: *Context,
@@ -1910,7 +1955,7 @@ fn transDeclStmtOne(
.is_export = false,
.is_threadlocal = var_decl.getTLSKind() != .None,
.linksection_string = null,
- .alignment = zigAlignment(var_decl.getAlignedAttribute(c.clang_context)),
+ .alignment = ClangAlignment.forVar(c, var_decl).zigAlignment(),
.name = var_name,
.type = type_node,
.init = init_node,
@@ -2027,10 +2072,7 @@ fn transImplicitCastExpr(
},
.PointerToBoolean => {
// @ptrToInt(val) != 0
- var ptr_node = try transExpr(c, scope, sub_expr, .used);
- if (ptr_node.tag() == .fn_identifier) {
- ptr_node = try Tag.address_of.create(c.arena, ptr_node);
- }
+ const ptr_node = try transExpr(c, scope, sub_expr, .used);
const ptr_to_int = try Tag.ptr_to_int.create(c.arena, ptr_node);
const ne = try Tag.not_equal.create(c.arena, .{ .lhs = ptr_to_int, .rhs = Tag.zero_literal.init() });
@@ -2479,10 +2521,7 @@ fn transCCast(
}
if (cIsInteger(dst_type) and qualTypeIsPtr(src_type)) {
// @intCast(dest_type, @ptrToInt(val))
- const ptr_to_int = if (expr.tag() == .fn_identifier)
- try Tag.ptr_to_int.create(c.arena, try Tag.address_of.create(c.arena, expr))
- else
- try Tag.ptr_to_int.create(c.arena, expr);
+ const ptr_to_int = try Tag.ptr_to_int.create(c.arena, expr);
return Tag.int_cast.create(c.arena, .{ .lhs = dst_node, .rhs = ptr_to_int });
}
if (cIsInteger(src_type) and qualTypeIsPtr(dst_type)) {
@@ -3521,7 +3560,8 @@ fn transArrayAccess(c: *Context, scope: *Scope, stmt: *const clang.ArraySubscrip
// Special case: actual pointer (not decayed array) and signed integer subscript
// See discussion at https://github.com/ziglang/zig/pull/8589
- if (is_signed and (base_stmt == unwrapped_base) and !is_vector and !is_nonnegative_int_literal) return transSignedArrayAccess(c, scope, base_stmt, subscr_expr, result_used);
+ if (is_signed and (base_stmt == unwrapped_base) and !is_vector and !is_nonnegative_int_literal)
+ return transSignedArrayAccess(c, scope, base_stmt, subscr_expr, result_used);
const container_node = try transExpr(c, scope, unwrapped_base, .used);
const rhs = if (is_longlong or is_signed) blk: {
@@ -3716,9 +3756,6 @@ fn transUnaryOperator(c: *Context, scope: *Scope, stmt: *const clang.UnaryOperat
else
return transCreatePreCrement(c, scope, stmt, .sub_assign, used),
.AddrOf => {
- if (c.zig_is_stage1 and cIsFunctionDeclRef(op_expr)) {
- return transExpr(c, scope, op_expr, used);
- }
return Tag.address_of.create(c.arena, try transExpr(c, scope, op_expr, used));
},
.Deref => {
@@ -5054,7 +5091,7 @@ fn finishTransFnProto(
break :blk null;
};
- const alignment = if (fn_decl) |decl| zigAlignment(decl.getAlignedAttribute(c.clang_context)) else null;
+ const alignment = if (fn_decl) |decl| ClangAlignment.forFunc(c, decl).zigAlignment() else null;
const explicit_callconv = if ((is_inline or is_export or is_extern) and cc == .C) null else cc;
@@ -6459,7 +6496,11 @@ fn parseCPostfixExpr(c: *Context, m: *MacroCtx, scope: *Scope, type_name: ?Node)
node = try Tag.field_access.create(c.arena, .{ .lhs = deref, .field_name = m.slice() });
},
.LBracket => {
- const index = try macroBoolToInt(c, try parseCExpr(c, m, scope));
+ const index_val = try macroBoolToInt(c, try parseCExpr(c, m, scope));
+ const index = try Tag.int_cast.create(c.arena, .{
+ .lhs = try Tag.type.create(c.arena, "usize"),
+ .rhs = index_val,
+ });
node = try Tag.array_access.create(c.arena, .{ .lhs = node, .rhs = index });
try m.skip(c, .RBracket);
},
diff --git a/src/translate_c/ast.zig b/src/translate_c/ast.zig
index 55f197c644..4dcdbc4250 100644
--- a/src/translate_c/ast.zig
+++ b/src/translate_c/ast.zig
@@ -717,10 +717,11 @@ pub const Payload = struct {
/// Converts the nodes into a Zig Ast.
/// Caller must free the source slice.
-pub fn render(gpa: Allocator, nodes: []const Node) !std.zig.Ast {
+pub fn render(gpa: Allocator, zig_is_stage1: bool, nodes: []const Node) !std.zig.Ast {
var ctx = Context{
.gpa = gpa,
.buf = std.ArrayList(u8).init(gpa),
+ .zig_is_stage1 = zig_is_stage1,
};
defer ctx.buf.deinit();
defer ctx.nodes.deinit(gpa);
@@ -789,6 +790,11 @@ const Context = struct {
extra_data: std.ArrayListUnmanaged(std.zig.Ast.Node.Index) = .{},
tokens: std.zig.Ast.TokenList = .{},
+ /// This is used to emit different code depending on whether
+ /// the output zig source code is intended to be compiled with stage1 or stage2.
+ /// Refer to the Context in translate_c.zig.
+ zig_is_stage1: bool,
+
fn addTokenFmt(c: *Context, tag: TokenTag, comptime format: []const u8, args: anytype) Allocator.Error!TokenIndex {
const start_index = c.buf.items.len;
try c.buf.writer().print(format ++ " ", args);
@@ -910,7 +916,15 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
},
.call => {
const payload = node.castTag(.call).?.data;
- const lhs = try renderNode(c, payload.lhs);
+ // Cosmetic: avoids an unnecesary address_of on most function calls.
+ const lhs = if (!c.zig_is_stage1 and payload.lhs.tag() == .fn_identifier)
+ try c.addNode(.{
+ .tag = .identifier,
+ .main_token = try c.addIdentifier(payload.lhs.castTag(.fn_identifier).?.data),
+ .data = undefined,
+ })
+ else
+ try renderNodeGrouped(c, payload.lhs);
return renderCall(c, lhs, payload.args);
},
.null_literal => return c.addNode(.{
@@ -1064,12 +1078,32 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
});
},
.fn_identifier => {
+ // C semantics are that a function identifier has address
+ // value (implicit in stage1, explicit in stage2), except in
+ // the context of an address_of, which is handled there.
const payload = node.castTag(.fn_identifier).?.data;
- return c.addNode(.{
- .tag = .identifier,
- .main_token = try c.addIdentifier(payload),
- .data = undefined,
- });
+ if (c.zig_is_stage1) {
+ return try c.addNode(.{
+ .tag = .identifier,
+ .main_token = try c.addIdentifier(payload),
+ .data = undefined,
+ });
+ } else {
+ const tok = try c.addToken(.ampersand, "&");
+ const arg = try c.addNode(.{
+ .tag = .identifier,
+ .main_token = try c.addIdentifier(payload),
+ .data = undefined,
+ });
+ return c.addNode(.{
+ .tag = .address_of,
+ .main_token = tok,
+ .data = .{
+ .lhs = arg,
+ .rhs = undefined,
+ },
+ });
+ }
},
.float_literal => {
const payload = node.castTag(.float_literal).?.data;
@@ -1391,7 +1425,33 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
.bit_not => return renderPrefixOp(c, node, .bit_not, .tilde, "~"),
.not => return renderPrefixOp(c, node, .bool_not, .bang, "!"),
.optional_type => return renderPrefixOp(c, node, .optional_type, .question_mark, "?"),
- .address_of => return renderPrefixOp(c, node, .address_of, .ampersand, "&"),
+ .address_of => {
+ const payload = node.castTag(.address_of).?.data;
+ if (c.zig_is_stage1 and payload.tag() == .fn_identifier)
+ return try c.addNode(.{
+ .tag = .identifier,
+ .main_token = try c.addIdentifier(payload.castTag(.fn_identifier).?.data),
+ .data = undefined,
+ });
+
+ const ampersand = try c.addToken(.ampersand, "&");
+ const base = if (payload.tag() == .fn_identifier)
+ try c.addNode(.{
+ .tag = .identifier,
+ .main_token = try c.addIdentifier(payload.castTag(.fn_identifier).?.data),
+ .data = undefined,
+ })
+ else
+ try renderNodeGrouped(c, payload);
+ return c.addNode(.{
+ .tag = .address_of,
+ .main_token = ampersand,
+ .data = .{
+ .lhs = base,
+ .rhs = undefined,
+ },
+ });
+ },
.deref => {
const payload = node.castTag(.deref).?.data;
const operand = try renderNodeGrouped(c, payload);
diff --git a/src/type.zig b/src/type.zig
index 1fef525062..ea2b6c30c2 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -2318,7 +2318,7 @@ pub const Type = extern union {
/// * the type has only one possible value, making its ABI size 0.
/// - an enum with an explicit tag type has the ABI size of the integer tag type,
/// making it one-possible-value only if the integer tag type has 0 bits.
- /// When `ignore_comptime_only` is true, then types that are comptime only
+ /// When `ignore_comptime_only` is true, then types that are comptime-only
/// may return false positives.
pub fn hasRuntimeBitsAdvanced(
ty: Type,
@@ -5664,6 +5664,28 @@ pub const Type = extern union {
}
}
+ pub fn structFieldIsComptime(ty: Type, index: usize) bool {
+ switch (ty.tag()) {
+ .@"struct" => {
+ const struct_obj = ty.castTag(.@"struct").?.data;
+ if (struct_obj.layout == .Packed) return false;
+ const field = struct_obj.fields.values()[index];
+ return field.is_comptime;
+ },
+ .tuple => {
+ const tuple = ty.castTag(.tuple).?.data;
+ const val = tuple.values[index];
+ return val.tag() != .unreachable_value;
+ },
+ .anon_struct => {
+ const anon_struct = ty.castTag(.anon_struct).?.data;
+ const val = anon_struct.values[index];
+ return val.tag() != .unreachable_value;
+ },
+ else => unreachable,
+ }
+ }
+
pub fn packedStructFieldByteOffset(ty: Type, field_index: usize, target: Target) u32 {
const struct_obj = ty.castTag(.@"struct").?.data;
assert(struct_obj.layout == .Packed);
diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp
index 223dc29067..bd06ead4b0 100644
--- a/src/zig_clang.cpp
+++ b/src/zig_clang.cpp
@@ -1941,10 +1941,7 @@ const char* ZigClangVarDecl_getSectionAttribute(const struct ZigClangVarDecl *se
bool ZigClangRecordDecl_getPackedAttribute(const ZigClangRecordDecl *zig_record_decl) {
const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl);
- if (record_decl->getAttr<clang::PackedAttr>()) {
- return true;
- }
- return false;
+ return record_decl->hasAttr<clang::PackedAttr>();
}
unsigned ZigClangVarDecl_getAlignedAttribute(const struct ZigClangVarDecl *self, const ZigClangASTContext* ctx) {
@@ -1985,6 +1982,16 @@ unsigned ZigClangFunctionDecl_getAlignedAttribute(const struct ZigClangFunctionD
return 0;
}
+bool ZigClangVarDecl_getPackedAttribute(const struct ZigClangVarDecl *self) {
+ auto casted_self = reinterpret_cast<const clang::VarDecl *>(self);
+ return casted_self->hasAttr<clang::PackedAttr>();
+}
+
+bool ZigClangFieldDecl_getPackedAttribute(const struct ZigClangFieldDecl *self) {
+ auto casted_self = reinterpret_cast<const clang::FieldDecl *>(self);
+ return casted_self->hasAttr<clang::PackedAttr>();
+}
+
ZigClangQualType ZigClangParmVarDecl_getOriginalType(const struct ZigClangParmVarDecl *self) {
return bitcast(reinterpret_cast<const clang::ParmVarDecl *>(self)->getOriginalType());
}
diff --git a/src/zig_clang.h b/src/zig_clang.h
index 5d556700e6..fab5b83b2d 100644
--- a/src/zig_clang.h
+++ b/src/zig_clang.h
@@ -1101,6 +1101,8 @@ ZIG_EXTERN_C const struct ZigClangFunctionDecl *ZigClangVarDecl_getCleanupAttrib
ZIG_EXTERN_C unsigned ZigClangVarDecl_getAlignedAttribute(const struct ZigClangVarDecl *self, const ZigClangASTContext* ctx);
ZIG_EXTERN_C unsigned ZigClangFunctionDecl_getAlignedAttribute(const struct ZigClangFunctionDecl *self, const ZigClangASTContext* ctx);
ZIG_EXTERN_C unsigned ZigClangFieldDecl_getAlignedAttribute(const struct ZigClangFieldDecl *self, const ZigClangASTContext* ctx);
+ZIG_EXTERN_C bool ZigClangVarDecl_getPackedAttribute(const struct ZigClangVarDecl *self);
+ZIG_EXTERN_C bool ZigClangFieldDecl_getPackedAttribute(const struct ZigClangFieldDecl *self);
ZIG_EXTERN_C const struct ZigClangStringLiteral *ZigClangFileScopeAsmDecl_getAsmString(const struct ZigClangFileScopeAsmDecl *self);
diff --git a/test/behavior.zig b/test/behavior.zig
index 8f4657e634..468ecd034c 100644
--- a/test/behavior.zig
+++ b/test/behavior.zig
@@ -95,10 +95,13 @@ test {
_ = @import("behavior/bugs/12801-1.zig");
_ = @import("behavior/bugs/12801-2.zig");
_ = @import("behavior/bugs/12885.zig");
+ _ = @import("behavior/bugs/12890.zig");
_ = @import("behavior/bugs/12911.zig");
_ = @import("behavior/bugs/12928.zig");
_ = @import("behavior/bugs/12945.zig");
_ = @import("behavior/bugs/12984.zig");
+ _ = @import("behavior/bugs/13068.zig");
+ _ = @import("behavior/bugs/13128.zig");
_ = @import("behavior/byteswap.zig");
_ = @import("behavior/byval_arg_var.zig");
_ = @import("behavior/call.zig");
diff --git a/test/behavior/align.zig b/test/behavior/align.zig
index 5270aa9692..a131cc8df7 100644
--- a/test/behavior/align.zig
+++ b/test/behavior/align.zig
@@ -400,7 +400,7 @@ test "function callconv expression depends on generic parameter" {
comptime try S.doTheTest();
}
-test "runtime known array index has best alignment possible" {
+test "runtime-known array index has best alignment possible" {
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
// take full advantage of over-alignment
diff --git a/test/behavior/array.zig b/test/behavior/array.zig
index 54f87927f5..ab084ff30a 100644
--- a/test/behavior/array.zig
+++ b/test/behavior/array.zig
@@ -564,7 +564,7 @@ test "type coercion of pointer to anon struct literal to pointer to array" {
comptime try S.doTheTest();
}
-test "array with comptime only element type" {
+test "array with comptime-only element type" {
const a = [_]type{ u32, i32 };
try testing.expect(a[0] == u32);
try testing.expect(a[1] == i32);
diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig
index 7e49cd1d88..f82e6eef4b 100644
--- a/test/behavior/basic.zig
+++ b/test/behavior/basic.zig
@@ -999,7 +999,7 @@ test "generic function uses return type of other generic function" {
try std.testing.expect(S.call(S.func, .{@as(u8, 1)}) == 1);
}
-test "const alloc with comptime known initializer is made comptime known" {
+test "const alloc with comptime-known initializer is made comptime-known" {
const S = struct {
a: bool,
b: [2]u8,
diff --git a/test/behavior/bugs/12890.zig b/test/behavior/bugs/12890.zig
new file mode 100644
index 0000000000..cae79136dc
--- /dev/null
+++ b/test/behavior/bugs/12890.zig
@@ -0,0 +1,18 @@
+const expect = @import("std").testing.expect;
+const builtin = @import("builtin");
+
+fn a(b: []u3, c: u3) void {
+ switch (c) {
+ 0...1 => b[c] = c,
+ 2...3 => b[c] = c,
+ 4...7 => |d| b[d] = c,
+ }
+}
+test {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ var arr: [8]u3 = undefined;
+ a(&arr, 5);
+ try expect(arr[5] == 5);
+}
diff --git a/test/behavior/bugs/13068.zig b/test/behavior/bugs/13068.zig
new file mode 100644
index 0000000000..bfc05452a4
--- /dev/null
+++ b/test/behavior/bugs/13068.zig
@@ -0,0 +1,15 @@
+const std = @import("std");
+const builtin = @import("builtin");
+
+pub const allocator = std.heap.page_allocator;
+var list = std.ArrayList(u32).init(allocator);
+
+test {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ list.items.len = 0;
+}
diff --git a/test/behavior/bugs/13128.zig b/test/behavior/bugs/13128.zig
new file mode 100644
index 0000000000..057270a96f
--- /dev/null
+++ b/test/behavior/bugs/13128.zig
@@ -0,0 +1,29 @@
+const std = @import("std");
+const builtin = @import("builtin");
+const expect = std.testing.expect;
+
+const U = union(enum) {
+ x: u128,
+ y: [17]u8,
+};
+
+fn foo(val: U) !void {
+ try expect(val.x == 1);
+}
+
+test "runtime union init, most-aligned field != largest" {
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+
+ var x: u8 = 1;
+ try foo(.{ .x = x });
+
+ const val: U = @unionInit(U, "x", x);
+ try expect(val.x == 1);
+
+ const val2: U = .{ .x = x };
+ try expect(val2.x == 1);
+}
diff --git a/test/behavior/enum.zig b/test/behavior/enum.zig
index e2645058f7..114090c78e 100644
--- a/test/behavior/enum.zig
+++ b/test/behavior/enum.zig
@@ -846,12 +846,12 @@ fn doALoopThing(id: EnumWithOneMember) void {
}
}
-test "comparison operator on enum with one member is comptime known" {
+test "comparison operator on enum with one member is comptime-known" {
doALoopThing(EnumWithOneMember.Eof);
}
const State = enum { Start };
-test "switch on enum with one member is comptime known" {
+test "switch on enum with one member is comptime-known" {
var state = State.Start;
switch (state) {
State.Start => return,
diff --git a/test/behavior/error.zig b/test/behavior/error.zig
index dc29c9bc5b..c93d7aebf7 100644
--- a/test/behavior/error.zig
+++ b/test/behavior/error.zig
@@ -7,7 +7,7 @@ const mem = std.mem;
/// A more basic implementation of std.testing.expectError which
/// does not require formatter/printing support
fn expectError(expected_err: anyerror, observed_err_union: anytype) !void {
- if (observed_err_union) {
+ if (observed_err_union) |_| {
return error.TestExpectedError;
} else |err| if (err == expected_err) {
return; // Success
@@ -809,3 +809,24 @@ test "alignment of wrapping an error union payload" {
};
try expect((S.foo() catch unreachable).x == 1234);
}
+
+test "compare error union and error set" {
+ if (builtin.zig_backend == .stage1) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+
+ var a: anyerror = error.Foo;
+ var b: anyerror!u32 = error.Bar;
+
+ try expect(a != b);
+ try expect(b != a);
+
+ b = error.Foo;
+
+ try expect(a == b);
+ try expect(b == a);
+
+ b = 2;
+
+ try expect(a != b);
+ try expect(b != a);
+}
diff --git a/test/behavior/eval.zig b/test/behavior/eval.zig
index 849e0ca6cc..da93ebc831 100644
--- a/test/behavior/eval.zig
+++ b/test/behavior/eval.zig
@@ -582,16 +582,16 @@ test "comparisons 0 <= uint and 0 > uint should be comptime" {
}
fn testCompTimeUIntComparisons(x: u32) void {
if (!(0 <= x)) {
- @compileError("this condition should be comptime known");
+ @compileError("this condition should be comptime-known");
}
if (0 > x) {
- @compileError("this condition should be comptime known");
+ @compileError("this condition should be comptime-known");
}
if (!(x >= 0)) {
- @compileError("this condition should be comptime known");
+ @compileError("this condition should be comptime-known");
}
if (x < 0) {
- @compileError("this condition should be comptime known");
+ @compileError("this condition should be comptime-known");
}
}
@@ -1302,7 +1302,7 @@ test "repeated value is correctly expanded" {
}
}
-test "value in if block is comptime known" {
+test "value in if block is comptime-known" {
if (builtin.zig_backend == .stage1) return error.SkipZigTest;
const first = blk: {
@@ -1398,3 +1398,17 @@ test "continue in inline for inside a comptime switch" {
}
try expect(count == 4);
}
+
+test "continue nested inline for loop" {
+ var a: u8 = 0;
+ loop: inline for ([_]u8{ 1, 2 }) |x| {
+ inline for ([_]u8{1}) |y| {
+ if (x == y) {
+ continue :loop;
+ }
+ }
+ a = x;
+ try expect(x == 2);
+ }
+ try expect(a == 2);
+}
diff --git a/test/behavior/export.zig b/test/behavior/export.zig
index 3943fd2834..02d455236f 100644
--- a/test/behavior/export.zig
+++ b/test/behavior/export.zig
@@ -55,3 +55,16 @@ test "exporting with internal linkage" {
};
S.foo();
}
+
+test "exporting using field access" {
+ const S = struct {
+ const Inner = struct {
+ const x: u32 = 5;
+ };
+ comptime {
+ @export(Inner.x, .{ .name = "foo", .linkage = .Internal });
+ }
+ };
+
+ _ = S.Inner.x;
+}
diff --git a/test/behavior/inline_switch.zig b/test/behavior/inline_switch.zig
index ecc7bba280..153e36ca2f 100644
--- a/test/behavior/inline_switch.zig
+++ b/test/behavior/inline_switch.zig
@@ -129,3 +129,16 @@ test "inline else int all values" {
},
}
}
+
+test "inline switch capture is set when switch operand is comptime known" {
+ const U2 = union(enum) {
+ a: u32,
+ };
+ var u: U2 = undefined;
+ switch (u) {
+ inline else => |*f, tag| {
+ try expect(@TypeOf(f) == *u32);
+ try expect(tag == .a);
+ },
+ }
+}
diff --git a/test/behavior/math.zig b/test/behavior/math.zig
index b56bf7c140..d70b7a8f7e 100644
--- a/test/behavior/math.zig
+++ b/test/behavior/math.zig
@@ -990,7 +990,7 @@ test "overflow arithmetic with u0 values" {
try expect(result == 0);
}
-test "allow signed integer division/remainder when values are comptime known and positive or exact" {
+test "allow signed integer division/remainder when values are comptime-known and positive or exact" {
if (builtin.zig_backend == .stage1) return error.SkipZigTest;
try expect(5 / 3 == 1);
diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig
index 91d398e84d..b0fb0f3a42 100644
--- a/test/behavior/pointers.zig
+++ b/test/behavior/pointers.zig
@@ -483,3 +483,14 @@ test "pointer to constant decl preserves alignment" {
const alignment = @typeInfo(@TypeOf(&S.aligned)).Pointer.alignment;
try std.testing.expect(alignment == 8);
}
+
+test "ptrCast comptime known slice to C pointer" {
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const s: [:0]const u8 = "foo";
+ var p = @ptrCast([*c]const u8, s);
+ try std.testing.expectEqualStrings(s, std.mem.sliceTo(p, 0));
+}
diff --git a/test/behavior/sizeof_and_typeof.zig b/test/behavior/sizeof_and_typeof.zig
index 748fefa695..45a99f9d32 100644
--- a/test/behavior/sizeof_and_typeof.zig
+++ b/test/behavior/sizeof_and_typeof.zig
@@ -310,3 +310,7 @@ test "lazy size cast to float" {
try expect(@as(f32, @sizeOf(S)) == 1.0);
}
}
+
+test "bitSizeOf comptime_int" {
+ try expect(@bitSizeOf(comptime_int) == 0);
+}
diff --git a/test/behavior/slice.zig b/test/behavior/slice.zig
index 5aeb6a3414..25527ed742 100644
--- a/test/behavior/slice.zig
+++ b/test/behavior/slice.zig
@@ -2,6 +2,7 @@ const builtin = @import("builtin");
const std = @import("std");
const expect = std.testing.expect;
const expectEqualSlices = std.testing.expectEqualSlices;
+const expectEqualStrings = std.testing.expectEqualStrings;
const expectEqual = std.testing.expectEqual;
const mem = std.mem;
@@ -686,8 +687,6 @@ test "slice len modification at comptime" {
}
test "slice field ptr const" {
- if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
-
const const_slice: []const u8 = "string";
const const_ptr_const_slice = &const_slice;
@@ -700,8 +699,6 @@ test "slice field ptr const" {
}
test "slice field ptr var" {
- if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
-
var var_slice: []const u8 = "string";
var var_ptr_var_slice = &var_slice;
@@ -712,3 +709,18 @@ test "slice field ptr var" {
try expectEqual(*[]const u8, @TypeOf(&const_ptr_var_slice.*));
try expectEqual(*[*]const u8, @TypeOf(&const_ptr_var_slice.ptr));
}
+
+test "global slice field access" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const S = struct {
+ var slice: []const u8 = undefined;
+ };
+ S.slice = "string";
+ S.slice.ptr += 1;
+ S.slice.len -= 2;
+ try expectEqualStrings("trin", S.slice);
+}
diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig
index 7a650e1a33..2b9df06527 100644
--- a/test/behavior/struct.zig
+++ b/test/behavior/struct.zig
@@ -653,7 +653,7 @@ test "default struct initialization fields" {
.b = five,
};
if (x.a + x.b != 1239) {
- @compileError("it should be comptime known");
+ @compileError("it should be comptime-known");
}
try expect(y.a == x.a);
try expect(y.b == x.b);
diff --git a/test/behavior/truncate.zig b/test/behavior/truncate.zig
index 1543f9fef2..677fcd930f 100644
--- a/test/behavior/truncate.zig
+++ b/test/behavior/truncate.zig
@@ -2,7 +2,7 @@ const std = @import("std");
const builtin = @import("builtin");
const expect = std.testing.expect;
-test "truncate u0 to larger integer allowed and has comptime known result" {
+test "truncate u0 to larger integer allowed and has comptime-known result" {
var x: u0 = 0;
const y = @truncate(u8, x);
comptime try expect(y == 0);
@@ -25,7 +25,7 @@ test "truncate.u0.var" {
try expect(z == 0);
}
-test "truncate i0 to larger integer allowed and has comptime known result" {
+test "truncate i0 to larger integer allowed and has comptime-known result" {
var x: i0 = 0;
const y = @truncate(i8, x);
comptime try expect(y == 0);
diff --git a/test/c_abi/cfuncs.c b/test/c_abi/cfuncs.c
index 89de8ebcb6..004dc9c406 100644
--- a/test/c_abi/cfuncs.c
+++ b/test/c_abi/cfuncs.c
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
+#include <complex.h>
void zig_panic();
@@ -50,6 +51,13 @@ void zig_ptr(void *);
void zig_bool(bool);
+// Note: These two functions match the signature of __mulsc3 and __muldc3 in compiler-rt (and libgcc)
+float complex zig_cmultf_comp(float a_r, float a_i, float b_r, float b_i);
+double complex zig_cmultd_comp(double a_r, double a_i, double b_r, double b_i);
+
+float complex zig_cmultf(float complex a, float complex b);
+double complex zig_cmultd(double complex a, double complex b);
+
struct BigStruct {
uint64_t a;
uint64_t b;
@@ -167,6 +175,43 @@ void run_c_tests(void) {
zig_bool(true);
+ // TODO: Resolve https://github.com/ziglang/zig/issues/8465
+ //{
+ // float complex a = 1.25f + I * 2.6f;
+ // float complex b = 11.3f - I * 1.5f;
+ // float complex z = zig_cmultf(a, b);
+ // assert_or_panic(creal(z) == 1.5f);
+ // assert_or_panic(cimag(z) == 13.5f);
+ //}
+
+ {
+ double complex a = 1.25 + I * 2.6;
+ double complex b = 11.3 - I * 1.5;
+ double complex z = zig_cmultd(a, b);
+ assert_or_panic(creal(z) == 1.5);
+ assert_or_panic(cimag(z) == 13.5);
+ }
+
+ {
+ float a_r = 1.25f;
+ float a_i = 2.6f;
+ float b_r = 11.3f;
+ float b_i = -1.5f;
+ float complex z = zig_cmultf_comp(a_r, a_i, b_r, b_i);
+ assert_or_panic(creal(z) == 1.5f);
+ assert_or_panic(cimag(z) == 13.5f);
+ }
+
+ {
+ double a_r = 1.25;
+ double a_i = 2.6;
+ double b_r = 11.3;
+ double b_i = -1.5;
+ double complex z = zig_cmultd_comp(a_r, a_i, b_r, b_i);
+ assert_or_panic(creal(z) == 1.5);
+ assert_or_panic(cimag(z) == 13.5);
+ }
+
{
struct BigStruct s = {1, 2, 3, 4, 5};
zig_big_struct(s);
@@ -321,6 +366,42 @@ void c_five_floats(float a, float b, float c, float d, float e) {
assert_or_panic(e == 5.0);
}
+float complex c_cmultf_comp(float a_r, float a_i, float b_r, float b_i) {
+ assert_or_panic(a_r == 1.25f);
+ assert_or_panic(a_i == 2.6f);
+ assert_or_panic(b_r == 11.3f);
+ assert_or_panic(b_i == -1.5f);
+
+ return 1.5f + I * 13.5f;
+}
+
+double complex c_cmultd_comp(double a_r, double a_i, double b_r, double b_i) {
+ assert_or_panic(a_r == 1.25);
+ assert_or_panic(a_i == 2.6);
+ assert_or_panic(b_r == 11.3);
+ assert_or_panic(b_i == -1.5);
+
+ return 1.5 + I * 13.5;
+}
+
+float complex c_cmultf(float complex a, float complex b) {
+ assert_or_panic(creal(a) == 1.25f);
+ assert_or_panic(cimag(a) == 2.6f);
+ assert_or_panic(creal(b) == 11.3f);
+ assert_or_panic(cimag(b) == -1.5f);
+
+ return 1.5f + I * 13.5f;
+}
+
+double complex c_cmultd(double complex a, double complex b) {
+ assert_or_panic(creal(a) == 1.25);
+ assert_or_panic(cimag(a) == 2.6);
+ assert_or_panic(creal(b) == 11.3);
+ assert_or_panic(cimag(b) == -1.5);
+
+ return 1.5 + I * 13.5;
+}
+
void c_big_struct(struct BigStruct x) {
assert_or_panic(x.a == 1);
assert_or_panic(x.b == 2);
diff --git a/test/c_abi/main.zig b/test/c_abi/main.zig
index e8e2f4861c..9344c2efae 100644
--- a/test/c_abi/main.zig
+++ b/test/c_abi/main.zig
@@ -145,6 +145,101 @@ export fn zig_bool(x: bool) void {
expect(x) catch @panic("test failure: zig_bool");
}
+// TODO: Replace these with the correct types once we resolve
+// https://github.com/ziglang/zig/issues/8465
+//
+// For now, we have no way of referring to the _Complex C types from Zig,
+// so our ABI is unavoidably broken on some platforms (such as i386)
+const ComplexFloat = extern struct {
+ real: f32,
+ imag: f32,
+};
+const ComplexDouble = extern struct {
+ real: f64,
+ imag: f64,
+};
+
+// Note: These two functions match the signature of __mulsc3 and __muldc3 in compiler-rt (and libgcc)
+extern fn c_cmultf_comp(a_r: f32, a_i: f32, b_r: f32, b_i: f32) ComplexFloat;
+extern fn c_cmultd_comp(a_r: f64, a_i: f64, b_r: f64, b_i: f64) ComplexDouble;
+
+extern fn c_cmultf(a: ComplexFloat, b: ComplexFloat) ComplexFloat;
+extern fn c_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble;
+
+test "C ABI complex float" {
+ if (true) return error.SkipZigTest; // See https://github.com/ziglang/zig/issues/8465
+
+ const a = ComplexFloat{ .real = 1.25, .imag = 2.6 };
+ const b = ComplexFloat{ .real = 11.3, .imag = -1.5 };
+
+ const z = c_cmultf(a, b);
+ expect(z.real == 1.5) catch @panic("test failure: zig_complex_float 1");
+ expect(z.imag == 13.5) catch @panic("test failure: zig_complex_float 2");
+}
+
+test "C ABI complex float by component" {
+ const a = ComplexFloat{ .real = 1.25, .imag = 2.6 };
+ const b = ComplexFloat{ .real = 11.3, .imag = -1.5 };
+
+ const z2 = c_cmultf_comp(a.real, a.imag, b.real, b.imag);
+ expect(z2.real == 1.5) catch @panic("test failure: zig_complex_float 3");
+ expect(z2.imag == 13.5) catch @panic("test failure: zig_complex_float 4");
+}
+
+test "C ABI complex double" {
+ const a = ComplexDouble{ .real = 1.25, .imag = 2.6 };
+ const b = ComplexDouble{ .real = 11.3, .imag = -1.5 };
+
+ const z = c_cmultd(a, b);
+ expect(z.real == 1.5) catch @panic("test failure: zig_complex_double 1");
+ expect(z.imag == 13.5) catch @panic("test failure: zig_complex_double 2");
+}
+
+test "C ABI complex double by component" {
+ const a = ComplexDouble{ .real = 1.25, .imag = 2.6 };
+ const b = ComplexDouble{ .real = 11.3, .imag = -1.5 };
+
+ const z = c_cmultd_comp(a.real, a.imag, b.real, b.imag);
+ expect(z.real == 1.5) catch @panic("test failure: zig_complex_double 3");
+ expect(z.imag == 13.5) catch @panic("test failure: zig_complex_double 4");
+}
+
+export fn zig_cmultf(a: ComplexFloat, b: ComplexFloat) ComplexFloat {
+ expect(a.real == 1.25) catch @panic("test failure: zig_cmultf 1");
+ expect(a.imag == 2.6) catch @panic("test failure: zig_cmultf 2");
+ expect(b.real == 11.3) catch @panic("test failure: zig_cmultf 3");
+ expect(b.imag == -1.5) catch @panic("test failure: zig_cmultf 4");
+
+ return .{ .real = 1.5, .imag = 13.5 };
+}
+
+export fn zig_cmultd(a: ComplexDouble, b: ComplexDouble) ComplexDouble {
+ expect(a.real == 1.25) catch @panic("test failure: zig_cmultd 1");
+ expect(a.imag == 2.6) catch @panic("test failure: zig_cmultd 2");
+ expect(b.real == 11.3) catch @panic("test failure: zig_cmultd 3");
+ expect(b.imag == -1.5) catch @panic("test failure: zig_cmultd 4");
+
+ return .{ .real = 1.5, .imag = 13.5 };
+}
+
+export fn zig_cmultf_comp(a_r: f32, a_i: f32, b_r: f32, b_i: f32) ComplexFloat {
+ expect(a_r == 1.25) catch @panic("test failure: zig_cmultf_comp 1");
+ expect(a_i == 2.6) catch @panic("test failure: zig_cmultf_comp 2");
+ expect(b_r == 11.3) catch @panic("test failure: zig_cmultf_comp 3");
+ expect(b_i == -1.5) catch @panic("test failure: zig_cmultf_comp 4");
+
+ return .{ .real = 1.5, .imag = 13.5 };
+}
+
+export fn zig_cmultd_comp(a_r: f64, a_i: f64, b_r: f64, b_i: f64) ComplexDouble {
+ expect(a_r == 1.25) catch @panic("test failure: zig_cmultd_comp 1");
+ expect(a_i == 2.6) catch @panic("test failure: zig_cmultd_comp 2");
+ expect(b_r == 11.3) catch @panic("test failure: zig_cmultd_comp 3");
+ expect(b_i == -1.5) catch @panic("test failure: zig_cmultd_comp 4");
+
+ return .{ .real = 1.5, .imag = 13.5 };
+}
+
const BigStruct = extern struct {
a: u64,
b: u64,
diff --git a/test/cases/compile_errors/accessing_runtime_paramter_outside_function_scope.zig b/test/cases/compile_errors/accessing_runtime_paramter_outside_function_scope.zig
new file mode 100644
index 0000000000..583b7128c7
--- /dev/null
+++ b/test/cases/compile_errors/accessing_runtime_paramter_outside_function_scope.zig
@@ -0,0 +1,12 @@
+export fn entry(y: u8) void {
+ const Thing = struct {
+ y: u8 = y,
+ };
+ _ = @sizeOf(Thing);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:17: error: 'y' not accessible outside function scope
diff --git a/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig b/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig
deleted file mode 100644
index 3a9eabcb95..0000000000
--- a/test/cases/compile_errors/comparison_with_error_union_and_error_value.zig
+++ /dev/null
@@ -1,10 +0,0 @@
-export fn entry() void {
- var number_or_error: anyerror!i32 = error.SomethingAwful;
- _ = number_or_error == error.SomethingAwful;
-}
-
-// error
-// backend=stage2
-// target=native
-//
-// :3:25: error: operator == not allowed for type 'anyerror!i32'
diff --git a/test/cases/compile_errors/decl_shadows_local.zig b/test/cases/compile_errors/decl_shadows_local.zig
index cb48cafa45..44066ab659 100644
--- a/test/cases/compile_errors/decl_shadows_local.zig
+++ b/test/cases/compile_errors/decl_shadows_local.zig
@@ -16,7 +16,7 @@ fn bar(a: usize) void {
// backend=stage2
// target=native
//
-// :3:15: error: redeclaration of function parameter 'a'
+// :3:15: error: declaration 'a' shadows function parameter from outer scope
// :1:8: note: previous declaration here
-// :9:19: error: redeclaration of function parameter 'a'
+// :9:19: error: declaration 'a' shadows function parameter from outer scope
// :6:8: note: previous declaration here
diff --git a/test/cases/compile_errors/dereference_anyopaque.zig b/test/cases/compile_errors/dereference_anyopaque.zig
index a69eed946d..854d2f2dfb 100644
--- a/test/cases/compile_errors/dereference_anyopaque.zig
+++ b/test/cases/compile_errors/dereference_anyopaque.zig
@@ -45,11 +45,11 @@ pub export fn entry() void {
// backend=llvm
//
// :11:22: error: comparison of 'void' with null
-// :25:51: error: values of type 'anyopaque' must be comptime known, but operand value is runtime known
+// :25:51: error: values of type 'anyopaque' must be comptime-known, but operand value is runtime-known
// :25:51: note: opaque type 'anyopaque' has undefined size
-// :25:51: error: values of type 'fn(*anyopaque, usize, u29, u29, usize) error{OutOfMemory}![]u8' must be comptime known, but operand value is runtime known
+// :25:51: error: values of type 'fn(*anyopaque, usize, u29, u29, usize) error{OutOfMemory}![]u8' must be comptime-known, but operand value is runtime-known
// :25:51: note: use '*const fn(*anyopaque, usize, u29, u29, usize) error{OutOfMemory}![]u8' for a function pointer type
-// :25:51: error: values of type 'fn(*anyopaque, []u8, u29, usize, u29, usize) ?usize' must be comptime known, but operand value is runtime known
+// :25:51: error: values of type 'fn(*anyopaque, []u8, u29, usize, u29, usize) ?usize' must be comptime-known, but operand value is runtime-known
// :25:51: note: use '*const fn(*anyopaque, []u8, u29, usize, u29, usize) ?usize' for a function pointer type
-// :25:51: error: values of type 'fn(*anyopaque, []u8, u29, usize) void' must be comptime known, but operand value is runtime known
+// :25:51: error: values of type 'fn(*anyopaque, []u8, u29, usize) void' must be comptime-known, but operand value is runtime-known
// :25:51: note: use '*const fn(*anyopaque, []u8, u29, usize) void' for a function pointer type
diff --git a/test/cases/compile_errors/error_in_typeof_param.zig b/test/cases/compile_errors/error_in_typeof_param.zig
index 747cdf3df6..02d33e04f9 100644
--- a/test/cases/compile_errors/error_in_typeof_param.zig
+++ b/test/cases/compile_errors/error_in_typeof_param.zig
@@ -11,4 +11,4 @@ pub export fn entry() void {
// target=native
//
// :6:31: error: unable to resolve comptime value
-// :6:31: note: argument to parameter with comptime only type must be comptime known
+// :6:31: note: argument to parameter with comptime-only type must be comptime-known
diff --git a/test/cases/compile_errors/explain_why_fn_is_called_at_comptime.zig b/test/cases/compile_errors/explain_why_fn_is_called_at_comptime.zig
index 04f64c2303..d19ab31617 100644
--- a/test/cases/compile_errors/explain_why_fn_is_called_at_comptime.zig
+++ b/test/cases/compile_errors/explain_why_fn_is_called_at_comptime.zig
@@ -17,7 +17,7 @@ pub export fn entry() void {
// target=native
//
// :12:13: error: unable to resolve comptime value
-// :12:13: note: argument to function being called at comptime must be comptime known
-// :7:25: note: function is being called at comptime because it returns a comptime only type 'tmp.S'
+// :12:13: note: argument to function being called at comptime must be comptime-known
+// :7:25: note: function is being called at comptime because it returns a comptime-only type 'tmp.S'
// :2:12: note: struct requires comptime because of this field
// :2:12: note: use '*const fn() void' for a function pointer type
diff --git a/test/cases/compile_errors/explain_why_generic_fn_is_called_at_comptime.zig b/test/cases/compile_errors/explain_why_generic_fn_is_called_at_comptime.zig
index ccd828bd5c..36aeb40479 100644
--- a/test/cases/compile_errors/explain_why_generic_fn_is_called_at_comptime.zig
+++ b/test/cases/compile_errors/explain_why_generic_fn_is_called_at_comptime.zig
@@ -18,5 +18,5 @@ pub export fn entry() void {
// target=native
//
// :14:13: error: unable to resolve comptime value
-// :14:13: note: argument to function being called at comptime must be comptime known
-// :9:38: note: generic function is instantiated with a comptime only return type
+// :14:13: note: argument to function being called at comptime must be comptime-known
+// :9:38: note: generic function is instantiated with a comptime-only return type
diff --git a/test/cases/compile_errors/fieldParentPtr_on_comptime_field.zig b/test/cases/compile_errors/fieldParentPtr_on_comptime_field.zig
new file mode 100644
index 0000000000..fb95ea691c
--- /dev/null
+++ b/test/cases/compile_errors/fieldParentPtr_on_comptime_field.zig
@@ -0,0 +1,16 @@
+const T = struct {
+ comptime a: u32 = 2,
+};
+pub export fn entry1() void {
+ @offsetOf(T, "a");
+}
+pub export fn entry2() void {
+ @fieldParentPtr(T, "a", undefined);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :5:5: error: no offset available for comptime field
+// :8:5: error: cannot get @fieldParentPtr of a comptime field
diff --git a/test/cases/compile_errors/generic_funciton_instantiation_inherits_parent_branch_quota.zig b/test/cases/compile_errors/generic_funciton_instantiation_inherits_parent_branch_quota.zig
new file mode 100644
index 0000000000..1d45ce86db
--- /dev/null
+++ b/test/cases/compile_errors/generic_funciton_instantiation_inherits_parent_branch_quota.zig
@@ -0,0 +1,30 @@
+pub export fn entry1() void {
+ @setEvalBranchQuota(1001);
+ // Return type evaluation should inherit both the
+ // parent's branch quota and count meaning
+ // at least 2002 backwards branches are required.
+ comptime var i = 0;
+ inline while (i < 1000) : (i += 1) {}
+ _ = simple(10);
+}
+pub export fn entry2() void {
+ @setEvalBranchQuota(2001);
+ comptime var i = 0;
+ inline while (i < 1000) : (i += 1) {}
+ _ = simple(10);
+}
+fn simple(comptime n: usize) Type(n) {
+ return n;
+}
+fn Type(comptime n: usize) type {
+ if (n <= 1) return usize;
+ return Type(n - 1);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :21:16: error: evaluation exceeded 1001 backwards branches
+// :21:16: note: use @setEvalBranchQuota() to raise the branch limit from 1001
+// :16:34: note: called from here
diff --git a/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig b/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig
index 909e036915..4c3b3fc1ae 100644
--- a/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig
+++ b/test/cases/compile_errors/int-float_conversion_to_comptime_int-float.zig
@@ -12,6 +12,6 @@ export fn bar() void {
// target=native
//
// :3:35: error: unable to resolve comptime value
-// :3:35: note: value being casted to 'comptime_int' must be comptime known
+// :3:35: note: value being casted to 'comptime_int' must be comptime-known
// :7:37: error: unable to resolve comptime value
-// :7:37: note: value being casted to 'comptime_float' must be comptime known
+// :7:37: note: value being casted to 'comptime_float' must be comptime-known
diff --git a/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig b/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig
index 1d88ac2c88..4c55060c52 100644
--- a/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig
+++ b/test/cases/compile_errors/local_shadows_global_that_occurs_later.zig
@@ -8,5 +8,5 @@ fn foo() void {}
// backend=stage2
// target=native
//
-// :2:9: error: local shadows declaration of 'foo'
+// :2:9: error: local variable shadows declaration of 'foo'
// :5:1: note: declared here
diff --git a/test/cases/compile_errors/local_variable_redeclares_parameter.zig b/test/cases/compile_errors/local_variable_redeclares_parameter.zig
index f5693ca9b6..6e523c2c8f 100644
--- a/test/cases/compile_errors/local_variable_redeclares_parameter.zig
+++ b/test/cases/compile_errors/local_variable_redeclares_parameter.zig
@@ -7,5 +7,5 @@ export fn entry() void { f(1); }
// backend=stage2
// target=native
//
-// :2:11: error: redeclaration of function parameter 'a'
+// :2:11: error: local constant 'a' shadows function parameter from outer scope
// :1:6: note: previous declaration here
diff --git a/test/cases/compile_errors/local_variable_shadowing_global.zig b/test/cases/compile_errors/local_variable_shadowing_global.zig
index 1320bfcb41..91df6a7c3d 100644
--- a/test/cases/compile_errors/local_variable_shadowing_global.zig
+++ b/test/cases/compile_errors/local_variable_shadowing_global.zig
@@ -10,5 +10,5 @@ export fn entry() void {
// backend=stage2
// target=native
//
-// :5:9: error: local shadows declaration of 'Bar'
+// :5:9: error: local variable shadows declaration of 'Bar'
// :2:1: note: declared here
diff --git a/test/cases/compile_errors/non-comptime-parameter-used-as-array-size.zig b/test/cases/compile_errors/non-comptime-parameter-used-as-array-size.zig
index 0456bc9c8e..de5a3830eb 100644
--- a/test/cases/compile_errors/non-comptime-parameter-used-as-array-size.zig
+++ b/test/cases/compile_errors/non-comptime-parameter-used-as-array-size.zig
@@ -12,4 +12,4 @@ fn makeLlamas(count: usize) [count]u8 {
// target=native
//
// :8:30: error: unable to resolve comptime value
-// :8:30: note: array length must be comptime known
+// :8:30: note: array length must be comptime-known
diff --git a/test/cases/compile_errors/non-const_switch_number_literal.zig b/test/cases/compile_errors/non-const_switch_number_literal.zig
index 01e31bb92c..699edb5232 100644
--- a/test/cases/compile_errors/non-const_switch_number_literal.zig
+++ b/test/cases/compile_errors/non-const_switch_number_literal.zig
@@ -14,5 +14,5 @@ fn bar() i32 {
// backend=stage2
// target=native
//
-// :2:15: error: value with comptime only type 'comptime_int' depends on runtime control flow
+// :2:15: error: value with comptime-only type 'comptime_int' depends on runtime control flow
// :2:26: note: runtime control flow here
diff --git a/test/cases/compile_errors/non-const_variables_of_things_that_require_const_variables.zig b/test/cases/compile_errors/non-const_variables_of_things_that_require_const_variables.zig
index b6edbc265a..cf65131a1f 100644
--- a/test/cases/compile_errors/non-const_variables_of_things_that_require_const_variables.zig
+++ b/test/cases/compile_errors/non-const_variables_of_things_that_require_const_variables.zig
@@ -39,7 +39,7 @@ const Opaque = opaque {};
// :14:8: error: variable of type 'comptime_float' must be const or comptime
// :14:8: note: to modify this variable at runtime, it must be given an explicit fixed-size number type
// :18:8: error: variable of type '@TypeOf(null)' must be const or comptime
-// :22:19: error: values of type 'tmp.Opaque' must be comptime known, but operand value is runtime known
+// :22:19: error: values of type 'tmp.Opaque' must be comptime-known, but operand value is runtime-known
// :22:19: note: opaque type 'tmp.Opaque' has undefined size
// :26:8: error: variable of type 'type' must be const or comptime
// :26:8: note: types are not available at runtime
diff --git a/test/cases/compile_errors/non-inline_for_loop_on_a_type_that_requires_comptime.zig b/test/cases/compile_errors/non-inline_for_loop_on_a_type_that_requires_comptime.zig
index ec598e8f05..ce72f912b8 100644
--- a/test/cases/compile_errors/non-inline_for_loop_on_a_type_that_requires_comptime.zig
+++ b/test/cases/compile_errors/non-inline_for_loop_on_a_type_that_requires_comptime.zig
@@ -11,6 +11,6 @@ export fn entry() void {
// backend=stage2
// target=native
//
-// :7:10: error: values of type '[2]tmp.Foo' must be comptime known, but index value is runtime known
+// :7:10: error: values of type '[2]tmp.Foo' must be comptime-known, but index value is runtime-known
// :3:8: note: struct requires comptime because of this field
// :3:8: note: types are not available at runtime
diff --git a/test/cases/compile_errors/non_comptime_param_in_comptime_function.zig b/test/cases/compile_errors/non_comptime_param_in_comptime_function.zig
index 758166dd7f..5e8457cd43 100644
--- a/test/cases/compile_errors/non_comptime_param_in_comptime_function.zig
+++ b/test/cases/compile_errors/non_comptime_param_in_comptime_function.zig
@@ -26,10 +26,10 @@ export fn entry2() void {
// backend=stage2
// target=native
//
-// :1:20: error: function with comptime only return type 'type' requires all parameters to be comptime
+// :1:20: error: function with comptime-only return type 'type' requires all parameters to be comptime
// :1:20: note: types are not available at runtime
// :1:6: note: param 'val' is required to be comptime
-// :11:16: error: function with comptime only return type 'tmp.S' requires all parameters to be comptime
+// :11:16: error: function with comptime-only return type 'tmp.S' requires all parameters to be comptime
// :9:10: note: struct requires comptime because of this field
// :9:10: note: use '*const fn() void' for a function pointer type
// :11:8: note: param is required to be comptime
diff --git a/test/cases/compile_errors/non_void_error_union_payload_ignored.zig b/test/cases/compile_errors/non_void_error_union_payload_ignored.zig
new file mode 100644
index 0000000000..41b5b6803d
--- /dev/null
+++ b/test/cases/compile_errors/non_void_error_union_payload_ignored.zig
@@ -0,0 +1,25 @@
+pub export fn entry1() void {
+ var x: anyerror!usize = 5;
+ if (x) {
+ // foo
+ } else |_| {
+ // bar
+ }
+}
+pub export fn entry2() void {
+ var x: anyerror!usize = 5;
+ while (x) {
+ // foo
+ } else |_| {
+ // bar
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:5: error: error union payload is ignored
+// :3:5: note: payload value can be explicitly ignored with '|_|'
+// :11:5: error: error union payload is ignored
+// :11:5: note: payload value can be explicitly ignored with '|_|'
diff --git a/test/cases/compile_errors/old_fn_ptr_in_extern_context.zig b/test/cases/compile_errors/old_fn_ptr_in_extern_context.zig
new file mode 100644
index 0000000000..db778408bf
--- /dev/null
+++ b/test/cases/compile_errors/old_fn_ptr_in_extern_context.zig
@@ -0,0 +1,20 @@
+const S = extern struct {
+ a: fn () callconv(.C) void,
+};
+comptime {
+ _ = @sizeOf(S) == 1;
+}
+comptime {
+ _ = [*c][4]fn() callconv(.C) void;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :2:5: error: extern structs cannot contain fields of type 'fn() callconv(.C) void'
+// :2:5: note: type has no guaranteed in-memory representation
+// :2:5: note: use '*const ' to make a function pointer type
+// :8:13: error: C pointers cannot point to non-C-ABI-compatible type '[4]fn() callconv(.C) void'
+// :8:13: note: type has no guaranteed in-memory representation
+// :8:13: note: use '*const ' to make a function pointer type
diff --git a/test/cases/compile_errors/parameter_shadowing_global.zig b/test/cases/compile_errors/parameter_shadowing_global.zig
index 47d112807b..5cc837f05e 100644
--- a/test/cases/compile_errors/parameter_shadowing_global.zig
+++ b/test/cases/compile_errors/parameter_shadowing_global.zig
@@ -8,5 +8,5 @@ export fn entry() void {
// backend=stage2
// target=native
//
-// :2:6: error: local shadows declaration of 'Foo'
+// :2:6: error: function parameter shadows declaration of 'Foo'
// :1:1: note: declared here
diff --git a/test/cases/compile_errors/runtime_index_into_comptime_type_slice.zig b/test/cases/compile_errors/runtime_index_into_comptime_type_slice.zig
index a327de8f71..4c235ed94b 100644
--- a/test/cases/compile_errors/runtime_index_into_comptime_type_slice.zig
+++ b/test/cases/compile_errors/runtime_index_into_comptime_type_slice.zig
@@ -14,6 +14,6 @@ export fn entry() void {
// backend=stage2
// target=native
//
-// :9:51: error: values of type '[]const builtin.Type.StructField' must be comptime known, but index value is runtime known
+// :9:51: error: values of type '[]const builtin.Type.StructField' must be comptime-known, but index value is runtime-known
// :?:21: note: struct requires comptime because of this field
// :?:21: note: types are not available at runtime
diff --git a/test/cases/compile_errors/runtime_indexing_comptime_array.zig b/test/cases/compile_errors/runtime_indexing_comptime_array.zig
index b83e977b3f..ec5f8610eb 100644
--- a/test/cases/compile_errors/runtime_indexing_comptime_array.zig
+++ b/test/cases/compile_errors/runtime_indexing_comptime_array.zig
@@ -24,9 +24,9 @@ pub export fn entry3() void {
// target=native
// backend=stage2
//
-// :7:10: error: values of type '[2]fn() void' must be comptime known, but index value is runtime known
+// :7:10: error: values of type '[2]fn() void' must be comptime-known, but index value is runtime-known
// :7:10: note: use '*const fn() void' for a function pointer type
-// :15:18: error: values of type '[2]fn() void' must be comptime known, but index value is runtime known
+// :15:18: error: values of type '[2]fn() void' must be comptime-known, but index value is runtime-known
// :15:17: note: use '*const fn() void' for a function pointer type
-// :21:19: error: values of type '[2]fn() void' must be comptime known, but index value is runtime known
+// :21:19: error: values of type '[2]fn() void' must be comptime-known, but index value is runtime-known
// :21:18: note: use '*const fn() void' for a function pointer type
diff --git a/test/cases/compile_errors/runtime_to_comptime_num.zig b/test/cases/compile_errors/runtime_to_comptime_num.zig
index 2275e35c43..972adb59bb 100644
--- a/test/cases/compile_errors/runtime_to_comptime_num.zig
+++ b/test/cases/compile_errors/runtime_to_comptime_num.zig
@@ -22,10 +22,10 @@ pub export fn entry4() void{
// target=native
//
// :3:27: error: unable to resolve comptime value
-// :3:27: note: value being casted to 'comptime_int' must be comptime known
+// :3:27: note: value being casted to 'comptime_int' must be comptime-known
// :7:29: error: unable to resolve comptime value
-// :7:29: note: value being casted to 'comptime_float' must be comptime known
+// :7:29: note: value being casted to 'comptime_float' must be comptime-known
// :12:10: error: unable to resolve comptime value
-// :12:10: note: value being casted to 'comptime_float' must be comptime known
+// :12:10: note: value being casted to 'comptime_float' must be comptime-known
// :17:10: error: unable to resolve comptime value
-// :17:10: note: value being casted to 'comptime_int' must be comptime known
+// :17:10: note: value being casted to 'comptime_int' must be comptime-known
diff --git a/test/cases/compile_errors/runtime_value_in_switch_prong.zig b/test/cases/compile_errors/runtime_value_in_switch_prong.zig
new file mode 100644
index 0000000000..6fe7112aab
--- /dev/null
+++ b/test/cases/compile_errors/runtime_value_in_switch_prong.zig
@@ -0,0 +1,14 @@
+pub export fn entry() void {
+ var byte: u8 = 1;
+ switch (byte) {
+ byte => {},
+ else => {},
+ }
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :4:9: error: unable to resolve comptime value
+// :4:9: note: switch prong values must be comptime-known
diff --git a/test/cases/compile_errors/sema_src_used_after_inline_call.zig b/test/cases/compile_errors/sema_src_used_after_inline_call.zig
new file mode 100644
index 0000000000..4e3f31e410
--- /dev/null
+++ b/test/cases/compile_errors/sema_src_used_after_inline_call.zig
@@ -0,0 +1,26 @@
+inline fn bit_count(value: i32) i32 {
+ var i = value;
+ // Algo from : http://aggregate.ee.engr.uky.edu/MAGIC/#Population%20Count%20(ones%20Count)
+ i -= ((i >> 1) & 0x55555555);
+ i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
+ i = (((i >> 4) + i) & 0x0F0F0F0F);
+ i += (i >> 8);
+ i += (i >> 16);
+ return (i & 0x0000003F);
+}
+
+inline fn number_of_trailing_zeros(i: i32) u32 {
+ return @as(u32, bit_count((i & -i) - 1));
+}
+
+export fn entry() void {
+ _ = number_of_trailing_zeros(0);
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :13:30: error: expected type 'u32', found 'i32'
+// :13:30: note: unsigned 32-bit int cannot represent all possible signed 32-bit values
+// :17:33: note: called from here
diff --git a/test/cases/compile_errors/shifting_without_int_type_or_comptime_known.zig b/test/cases/compile_errors/shifting_without_int_type_or_comptime_known.zig
index 7e68baed62..7518165e93 100644
--- a/test/cases/compile_errors/shifting_without_int_type_or_comptime_known.zig
+++ b/test/cases/compile_errors/shifting_without_int_type_or_comptime_known.zig
@@ -17,7 +17,7 @@ export fn entry3() void {
// backend=stage2
// target=native
//
-// :2:17: error: LHS of shift must be a fixed-width integer type, or RHS must be a comptime known
-// :5:17: error: LHS of shift must be a fixed-width integer type, or RHS must be a comptime known
-// :9:9: error: LHS of shift must be a fixed-width integer type, or RHS must be a comptime known
-// :13:9: error: LHS of shift must be a fixed-width integer type, or RHS must be a comptime known
+// :2:17: error: LHS of shift must be a fixed-width integer type, or RHS must be comptime-known
+// :5:17: error: LHS of shift must be a fixed-width integer type, or RHS must be comptime-known
+// :9:9: error: LHS of shift must be a fixed-width integer type, or RHS must be comptime-known
+// :13:9: error: LHS of shift must be a fixed-width integer type, or RHS must be comptime-known
diff --git a/test/cases/compile_errors/slice_of_pointer_must_include_end_value.zig b/test/cases/compile_errors/slice_of_pointer_must_include_end_value.zig
new file mode 100644
index 0000000000..07fa6eee51
--- /dev/null
+++ b/test/cases/compile_errors/slice_of_pointer_must_include_end_value.zig
@@ -0,0 +1,10 @@
+comptime {
+ var ptr: [*]u8 = undefined;
+ _ = ptr[0..];
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:12: error: slice of pointer must include end value
diff --git a/test/cases/function_redeclaration.zig b/test/cases/function_redeclaration.zig
index a9664646c9..b6cbf664a9 100644
--- a/test/cases/function_redeclaration.zig
+++ b/test/cases/function_redeclaration.zig
@@ -10,5 +10,5 @@ fn foo() void {
//
// :3:1: error: redeclaration of 'entry'
// :2:1: note: other declaration here
-// :6:9: error: local shadows declaration of 'foo'
+// :6:9: error: local variable shadows declaration of 'foo'
// :5:1: note: declared here
diff --git a/test/cases/safety/switch else on corrupt enum value - one prong.zig b/test/cases/safety/switch else on corrupt enum value - one prong.zig
new file mode 100644
index 0000000000..2c0b58fcd4
--- /dev/null
+++ b/test/cases/safety/switch else on corrupt enum value - one prong.zig
@@ -0,0 +1,24 @@
+const std = @import("std");
+
+pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
+ _ = stack_trace;
+ if (std.mem.eql(u8, message, "switch on corrupt value")) {
+ std.process.exit(0);
+ }
+ std.process.exit(1);
+}
+const E = enum(u32) {
+ one = 1,
+ two = 2,
+};
+pub fn main() !void {
+ var a: E = undefined;
+ @ptrCast(*u32, &a).* = 255;
+ switch (a) {
+ .one => @panic("one"),
+ else => @panic("else"),
+ }
+}
+// run
+// backend=llvm
+// target=native
diff --git a/test/cases/safety/switch else on corrupt enum value - union.zig b/test/cases/safety/switch else on corrupt enum value - union.zig
new file mode 100644
index 0000000000..358ecc89ac
--- /dev/null
+++ b/test/cases/safety/switch else on corrupt enum value - union.zig
@@ -0,0 +1,29 @@
+const std = @import("std");
+
+pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
+ _ = stack_trace;
+ if (std.mem.eql(u8, message, "switch on corrupt value")) {
+ std.process.exit(0);
+ }
+ std.process.exit(1);
+}
+const E = enum(u16) {
+ one = 1,
+ two = 2,
+ _,
+};
+const U = union(E) {
+ one: u16,
+ two: u16,
+};
+pub fn main() !void {
+ var a: U = undefined;
+ @ptrCast(*align(@alignOf(U)) u32, &a).* = 0xFFFF_FFFF;
+ switch (a) {
+ .one => @panic("one"),
+ else => @panic("else"),
+ }
+}
+// run
+// backend=llvm
+// target=native
diff --git a/test/cases/safety/switch else on corrupt enum value.zig b/test/cases/safety/switch else on corrupt enum value.zig
new file mode 100644
index 0000000000..af04b7f4c3
--- /dev/null
+++ b/test/cases/safety/switch else on corrupt enum value.zig
@@ -0,0 +1,23 @@
+const std = @import("std");
+
+pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, _: ?usize) noreturn {
+ _ = stack_trace;
+ if (std.mem.eql(u8, message, "switch on corrupt value")) {
+ std.process.exit(0);
+ }
+ std.process.exit(1);
+}
+const E = enum(u32) {
+ one = 1,
+ two = 2,
+};
+pub fn main() !void {
+ var a: E = undefined;
+ @ptrCast(*u32, &a).* = 255;
+ switch (a) {
+ else => @panic("else"),
+ }
+}
+// run
+// backend=llvm
+// target=native
diff --git a/test/cases/variable_shadowing.1.zig b/test/cases/variable_shadowing.1.zig
index af24af038d..2a2945a65f 100644
--- a/test/cases/variable_shadowing.1.zig
+++ b/test/cases/variable_shadowing.1.zig
@@ -5,5 +5,5 @@ pub fn main() void {
// error
//
-// :3:9: error: local shadows declaration of 'testing'
+// :3:9: error: local variable shadows declaration of 'testing'
// :1:1: note: declared here
diff --git a/test/cases/variable_shadowing.3.zig b/test/cases/variable_shadowing.3.zig
index 89288705e1..1e22ccf123 100644
--- a/test/cases/variable_shadowing.3.zig
+++ b/test/cases/variable_shadowing.3.zig
@@ -6,5 +6,5 @@ pub fn main() void {
// error
//
-// :3:19: error: redeclaration of local variable 'i'
+// :3:19: error: loop index capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/variable_shadowing.4.zig b/test/cases/variable_shadowing.4.zig
index b798cc13c1..ab9f93d17d 100644
--- a/test/cases/variable_shadowing.4.zig
+++ b/test/cases/variable_shadowing.4.zig
@@ -6,5 +6,5 @@ pub fn main() void {
// error
//
-// :3:16: error: redeclaration of local variable 'i'
+// :3:16: error: capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/variable_shadowing.5.zig b/test/cases/variable_shadowing.5.zig
index 484d218ea2..1a5676190a 100644
--- a/test/cases/variable_shadowing.5.zig
+++ b/test/cases/variable_shadowing.5.zig
@@ -6,5 +6,5 @@ pub fn main() void {
// error
//
-// :3:18: error: redeclaration of local variable 'i'
+// :3:18: error: capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/variable_shadowing.6.zig b/test/cases/variable_shadowing.6.zig
index 3e53c4da2f..894a398b61 100644
--- a/test/cases/variable_shadowing.6.zig
+++ b/test/cases/variable_shadowing.6.zig
@@ -9,5 +9,5 @@ pub fn main() void {
// error
//
-// :5:13: error: redeclaration of local variable 'i'
+// :5:13: error: capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/variable_shadowing.7.zig b/test/cases/variable_shadowing.7.zig
index 95888839a7..e8368699b4 100644
--- a/test/cases/variable_shadowing.7.zig
+++ b/test/cases/variable_shadowing.7.zig
@@ -5,5 +5,5 @@ pub fn main() void {
// error
//
-// :3:16: error: redeclaration of local variable 'i'
+// :3:16: error: capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/variable_shadowing.8.zig b/test/cases/variable_shadowing.8.zig
index 57e616e1d6..1a3f560589 100644
--- a/test/cases/variable_shadowing.8.zig
+++ b/test/cases/variable_shadowing.8.zig
@@ -5,5 +5,5 @@ pub fn main() void {
// error
//
-// :3:16: error: redeclaration of local variable 'i'
+// :3:16: error: capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/variable_shadowing.9.zig b/test/cases/variable_shadowing.9.zig
index b8a1198aed..28e2b16834 100644
--- a/test/cases/variable_shadowing.9.zig
+++ b/test/cases/variable_shadowing.9.zig
@@ -5,5 +5,5 @@ pub fn main() void {
// error
//
-// :3:28: error: redeclaration of local variable 'i'
+// :3:28: error: capture 'i' shadows local variable from outer scope
// :2:9: note: previous declaration here
diff --git a/test/cases/x86_64-linux/assert_function.8.zig b/test/cases/x86_64-linux/assert_function.8.zig
index f4377bf880..1619452009 100644
--- a/test/cases/x86_64-linux/assert_function.8.zig
+++ b/test/cases/x86_64-linux/assert_function.8.zig
@@ -22,4 +22,4 @@ pub fn assert(ok: bool) void {
// error
//
// :3:21: error: unable to resolve comptime value
-// :3:21: note: condition in comptime branch must be comptime known
+// :3:21: note: condition in comptime branch must be comptime-known
diff --git a/test/cases/x86_64-macos/assert_function.8.zig b/test/cases/x86_64-macos/assert_function.8.zig
index 7cfa795330..3942a3e24b 100644
--- a/test/cases/x86_64-macos/assert_function.8.zig
+++ b/test/cases/x86_64-macos/assert_function.8.zig
@@ -17,4 +17,4 @@ pub fn assert(ok: bool) void {
// error
//
// :5:21: error: unable to resolve comptime value
-// :5:21: note: condition in comptime branch must be comptime known
+// :5:21: note: condition in comptime branch must be comptime-known
diff --git a/test/cli.zig b/test/cli.zig
index df1a1497e1..57f26f73d7 100644
--- a/test/cli.zig
+++ b/test/cli.zig
@@ -133,7 +133,7 @@ fn testGodboltApi(zig_exe: []const u8, dir_path: []const u8) anyerror!void {
"--cache-dir", dir_path,
"--name", "example",
"-fno-emit-bin", "-fno-emit-h",
- "--strip", "-OReleaseFast",
+ "-fstrip", "-OReleaseFast",
example_zig_path,
});
diff --git a/test/compile_errors.zig b/test/compile_errors.zig
index 96df66d081..e9b08565ce 100644
--- a/test/compile_errors.zig
+++ b/test/compile_errors.zig
@@ -203,8 +203,8 @@ pub fn addCases(ctx: *TestContext) !void {
\\}
, &[_][]const u8{
":3:12: error: unable to resolve comptime value",
- ":3:12: note: argument to function being called at comptime must be comptime known",
- ":2:55: note: generic function is instantiated with a comptime only return type",
+ ":3:12: note: argument to function being called at comptime must be comptime-known",
+ ":2:55: note: generic function is instantiated with a comptime-only return type",
});
}
diff --git a/test/link.zig b/test/link.zig
index a798b700cd..4bde09df38 100644
--- a/test/link.zig
+++ b/test/link.zig
@@ -34,7 +34,7 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {
});
cases.addBuildFile("test/link/wasm/bss/build.zig", .{
- .build_modes = true,
+ .build_modes = false,
.requires_stage2 = true,
});
@@ -44,6 +44,11 @@ fn addWasmCases(cases: *tests.StandaloneContext) void {
.use_emulation = true,
});
+ cases.addBuildFile("test/link/wasm/producers/build.zig", .{
+ .build_modes = true,
+ .requires_stage2 = true,
+ });
+
cases.addBuildFile("test/link/wasm/segments/build.zig", .{
.build_modes = true,
.requires_stage2 = true,
diff --git a/test/link/wasm/archive/build.zig b/test/link/wasm/archive/build.zig
index 95ce444659..0ee67102ac 100644
--- a/test/link/wasm/archive/build.zig
+++ b/test/link/wasm/archive/build.zig
@@ -15,6 +15,7 @@ pub fn build(b: *Builder) void {
lib.use_llvm = false;
lib.use_stage1 = false;
lib.use_lld = false;
+ lib.strip = false;
const check = lib.checkObject(.wasm);
check.checkStart("Section import");
diff --git a/test/link/wasm/bss/build.zig b/test/link/wasm/bss/build.zig
index f813bd379f..0a8d652338 100644
--- a/test/link/wasm/bss/build.zig
+++ b/test/link/wasm/bss/build.zig
@@ -13,6 +13,7 @@ pub fn build(b: *Builder) void {
lib.use_llvm = false;
lib.use_stage1 = false;
lib.use_lld = false;
+ lib.strip = false;
// to make sure the bss segment is emitted, we must import memory
lib.import_memory = true;
lib.install();
diff --git a/test/link/wasm/producers/build.zig b/test/link/wasm/producers/build.zig
new file mode 100644
index 0000000000..0f29c68968
--- /dev/null
+++ b/test/link/wasm/producers/build.zig
@@ -0,0 +1,37 @@
+const std = @import("std");
+const builtin = @import("builtin");
+const Builder = std.build.Builder;
+
+pub fn build(b: *Builder) void {
+ const mode = b.standardReleaseOptions();
+
+ const test_step = b.step("test", "Test");
+ test_step.dependOn(b.getInstallStep());
+
+ const lib = b.addSharedLibrary("lib", "lib.zig", .unversioned);
+ lib.setBuildMode(mode);
+ lib.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding });
+ lib.use_llvm = false;
+ lib.use_stage1 = false;
+ lib.use_lld = false;
+ lib.strip = false;
+ lib.install();
+
+ const zig_version = builtin.zig_version;
+ var version_buf: [100]u8 = undefined;
+ const version_fmt = std.fmt.bufPrint(&version_buf, "version {}", .{zig_version}) catch unreachable;
+
+ const check_lib = lib.checkObject(.wasm);
+ check_lib.checkStart("name producers");
+ check_lib.checkNext("fields 2");
+ check_lib.checkNext("field_name language");
+ check_lib.checkNext("values 1");
+ check_lib.checkNext("value_name Zig");
+ check_lib.checkNext(version_fmt);
+ check_lib.checkNext("field_name processed-by");
+ check_lib.checkNext("values 1");
+ check_lib.checkNext("value_name Zig");
+ check_lib.checkNext(version_fmt);
+
+ test_step.dependOn(&check_lib.step);
+}
diff --git a/test/link/wasm/producers/lib.zig b/test/link/wasm/producers/lib.zig
new file mode 100644
index 0000000000..0e416dbf18
--- /dev/null
+++ b/test/link/wasm/producers/lib.zig
@@ -0,0 +1 @@
+export fn foo() void {}
diff --git a/test/link/wasm/segments/build.zig b/test/link/wasm/segments/build.zig
index 7b3b08d860..06ca55300f 100644
--- a/test/link/wasm/segments/build.zig
+++ b/test/link/wasm/segments/build.zig
@@ -13,6 +13,7 @@ pub fn build(b: *Builder) void {
lib.use_llvm = false;
lib.use_stage1 = false;
lib.use_lld = false;
+ lib.strip = false;
lib.install();
const check_lib = lib.checkObject(.wasm);
diff --git a/test/link/wasm/stack_pointer/build.zig b/test/link/wasm/stack_pointer/build.zig
index 761ce423ec..1f50a60d19 100644
--- a/test/link/wasm/stack_pointer/build.zig
+++ b/test/link/wasm/stack_pointer/build.zig
@@ -13,6 +13,7 @@ pub fn build(b: *Builder) void {
lib.use_llvm = false;
lib.use_stage1 = false;
lib.use_lld = false;
+ lib.strip = false;
lib.stack_size = std.wasm.page_size * 2; // set an explicit stack size
lib.install();
diff --git a/test/link/wasm/type/build.zig b/test/link/wasm/type/build.zig
index f39448c7aa..2c926eced3 100644
--- a/test/link/wasm/type/build.zig
+++ b/test/link/wasm/type/build.zig
@@ -13,6 +13,7 @@ pub fn build(b: *Builder) void {
lib.use_llvm = false;
lib.use_stage1 = false;
lib.use_lld = false;
+ lib.strip = false;
lib.install();
const check_lib = lib.checkObject(.wasm);
diff --git a/test/run_translated_c.zig b/test/run_translated_c.zig
index e62c33eaa8..a64a3eb7a4 100644
--- a/test/run_translated_c.zig
+++ b/test/run_translated_c.zig
@@ -250,20 +250,18 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void {
\\}
, "");
- if (@import("builtin").zig_backend == .stage1) {
- cases.add("struct initializer - packed",
- \\#define _NO_CRT_STDIO_INLINE 1
- \\#include <stdint.h>
- \\#include <stdlib.h>
- \\struct s {uint8_t x,y;
- \\ uint32_t z;} __attribute__((packed)) s0 = {1, 2};
- \\int main() {
- \\ /* sizeof nor offsetof currently supported */
- \\ if (((intptr_t)&s0.z - (intptr_t)&s0.x) != 2) abort();
- \\ return 0;
- \\}
- , "");
- }
+ cases.add("struct initializer - packed",
+ \\#define _NO_CRT_STDIO_INLINE 1
+ \\#include <stdint.h>
+ \\#include <stdlib.h>
+ \\struct s {uint8_t x,y;
+ \\ uint32_t z;} __attribute__((packed)) s0 = {1, 2};
+ \\int main() {
+ \\ /* sizeof nor offsetof currently supported */
+ \\ if (((intptr_t)&s0.z - (intptr_t)&s0.x) != 2) abort();
+ \\ return 0;
+ \\}
+ , "");
cases.add("cast signed array index to unsigned",
\\#include <stdlib.h>
@@ -893,42 +891,39 @@ pub fn addCases(cases: *tests.RunTranslatedCContext) void {
\\}
, "");
- if (@import("builtin").zig_backend == .stage1) {
- // https://github.com/ziglang/zig/issues/12263
- cases.add("Obscure ways of calling functions; issue #4124",
- \\#include <stdlib.h>
- \\static int add(int a, int b) {
- \\ return a + b;
- \\}
- \\typedef int (*adder)(int, int);
- \\typedef void (*funcptr)(void);
- \\int main() {
- \\ if ((add)(1, 2) != 3) abort();
- \\ if ((&add)(1, 2) != 3) abort();
- \\ if (add(3, 1) != 4) abort();
- \\ if ((*add)(2, 3) != 5) abort();
- \\ if ((**add)(7, -1) != 6) abort();
- \\ if ((***add)(-2, 9) != 7) abort();
- \\
- \\ int (*ptr)(int a, int b);
- \\ ptr = add;
- \\
- \\ if (ptr(1, 2) != 3) abort();
- \\ if ((*ptr)(3, 1) != 4) abort();
- \\ if ((**ptr)(2, 3) != 5) abort();
- \\ if ((***ptr)(7, -1) != 6) abort();
- \\ if ((****ptr)(-2, 9) != 7) abort();
- \\
- \\ funcptr addr1 = (funcptr)(add);
- \\ funcptr addr2 = (funcptr)(&add);
- \\
- \\ if (addr1 != addr2) abort();
- \\ if (((int(*)(int, int))addr1)(1, 2) != 3) abort();
- \\ if (((adder)addr2)(1, 2) != 3) abort();
- \\ return 0;
- \\}
- , "");
- }
+ cases.add("Obscure ways of calling functions; issue #4124",
+ \\#include <stdlib.h>
+ \\static int add(int a, int b) {
+ \\ return a + b;
+ \\}
+ \\typedef int (*adder)(int, int);
+ \\typedef void (*funcptr)(void);
+ \\int main() {
+ \\ if ((add)(1, 2) != 3) abort();
+ \\ if ((&add)(1, 2) != 3) abort();
+ \\ if (add(3, 1) != 4) abort();
+ \\ if ((*add)(2, 3) != 5) abort();
+ \\ if ((**add)(7, -1) != 6) abort();
+ \\ if ((***add)(-2, 9) != 7) abort();
+ \\
+ \\ int (*ptr)(int a, int b);
+ \\ ptr = add;
+ \\
+ \\ if (ptr(1, 2) != 3) abort();
+ \\ if ((*ptr)(3, 1) != 4) abort();
+ \\ if ((**ptr)(2, 3) != 5) abort();
+ \\ if ((***ptr)(7, -1) != 6) abort();
+ \\ if ((****ptr)(-2, 9) != 7) abort();
+ \\
+ \\ funcptr addr1 = (funcptr)(add);
+ \\ funcptr addr2 = (funcptr)(&add);
+ \\
+ \\ if (addr1 != addr2) abort();
+ \\ if (((int(*)(int, int))addr1)(1, 2) != 3) abort();
+ \\ if (((adder)addr2)(1, 2) != 3) abort();
+ \\ return 0;
+ \\}
+ , "");
cases.add("Return boolean expression as int; issue #6215",
\\#include <stdlib.h>
diff --git a/test/standalone/c_compiler/test.c b/test/standalone/c_compiler/test.c
index da0a137798..3beb1aa2ff 100644
--- a/test/standalone/c_compiler/test.c
+++ b/test/standalone/c_compiler/test.c
@@ -1,4 +1,5 @@
#include <assert.h>
+#include <complex.h>
#include <stdio.h>
#include <stdlib.h>
@@ -24,5 +25,30 @@ int main (int argc, char *argv[])
if (!ok) abort();
+ // Test some basic arithmetic from compiler-rt
+ {
+ double complex z = 0.0 + I * 4.0;
+ double complex w = 0.0 + I * 16.0;
+ double complex product = z * w;
+ double complex quotient = z / w;
+
+ if (!(creal(product) == -64.0)) abort();
+ if (!(cimag(product) == 0.0)) abort();
+ if (!(creal(quotient) == 0.25)) abort();
+ if (!(cimag(quotient) == 0.0)) abort();
+ }
+
+ {
+ float complex z = 4.0 + I * 4.0;
+ float complex w = 2.0 - I * 2.0;
+ float complex product = z * w;
+ float complex quotient = z / w;
+
+ if (!(creal(product) == 16.0)) abort();
+ if (!(cimag(product) == 0.0)) abort();
+ if (!(creal(quotient) == 0.0)) abort();
+ if (!(cimag(quotient) == 2.0)) abort();
+ }
+
return EXIT_SUCCESS;
}
diff --git a/test/translate_c.zig b/test/translate_c.zig
index 0e38444ad2..d6b6bcbbba 100644
--- a/test/translate_c.zig
+++ b/test/translate_c.zig
@@ -728,22 +728,20 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\}
});
- if (builtin.zig_backend == .stage1) {
- cases.add("struct initializer - packed",
- \\struct {int x,y,z;} __attribute__((packed)) s0 = {1, 2};
- , &[_][]const u8{
- \\const struct_unnamed_1 = packed struct {
- \\ x: c_int,
- \\ y: c_int,
- \\ z: c_int,
- \\};
- \\pub export var s0: struct_unnamed_1 = struct_unnamed_1{
- \\ .x = @as(c_int, 1),
- \\ .y = @as(c_int, 2),
- \\ .z = 0,
- \\};
- });
- }
+ cases.add("struct initializer - packed",
+ \\struct {int x,y,z;} __attribute__((packed)) s0 = {1, 2};
+ , &[_][]const u8{
+ \\const struct_unnamed_1 = extern struct {
+ \\ x: c_int align(1),
+ \\ y: c_int align(1),
+ \\ z: c_int align(1),
+ \\};
+ \\pub export var s0: struct_unnamed_1 = struct_unnamed_1{
+ \\ .x = @as(c_int, 1),
+ \\ .y = @as(c_int, 2),
+ \\ .z = 0,
+ \\};
+ });
// Test case temporarily disabled:
// https://github.com/ziglang/zig/issues/12055
@@ -909,7 +907,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub extern fn foo() void;
\\pub export fn bar() void {
- \\ var func_ptr: ?*anyopaque = @ptrCast(?*anyopaque, foo);
+ \\ var func_ptr: ?*anyopaque = @ptrCast(?*anyopaque, &foo);
\\ var typed_func_ptr: ?*const fn () callconv(.C) void = @intToPtr(?*const fn () callconv(.C) void, @intCast(c_ulong, @ptrToInt(func_ptr)));
\\ _ = @TypeOf(typed_func_ptr);
\\}
@@ -1393,6 +1391,74 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\pub const Foo = union_Foo;
});
+ cases.add("packed union - simple",
+ \\union Foo {
+ \\ char x;
+ \\ double y;
+ \\} __attribute__((packed));
+ , &[_][]const u8{
+ \\pub const union_Foo = extern union {
+ \\ x: u8 align(1),
+ \\ y: f64 align(1),
+ \\};
+ ,
+ \\pub const Foo = union_Foo;
+ });
+
+ cases.add("packed union - nested unpacked",
+ \\union Foo{
+ \\ char x;
+ \\ double y;
+ \\ struct {
+ \\ char a;
+ \\ int b;
+ \\ } z;
+ \\} __attribute__((packed));
+ , &[_][]const u8{
+ // NOTE: The nested struct is *not* packed/aligned,
+ // even though the parent struct is
+ // this is consistent with GCC docs
+ \\const struct_unnamed_1 = extern struct {
+ \\ a: u8,
+ \\ b: c_int,
+ \\};
+ ,
+ \\pub const union_Foo = extern union {
+ \\ x: u8 align(1),
+ \\ y: f64 align(1),
+ \\ z: struct_unnamed_1 align(1),
+ \\};
+ ,
+ \\pub const Foo = union_Foo;
+ });
+
+ cases.add("packed union - nested packed",
+ \\union Foo{
+ \\ char x;
+ \\ double y;
+ \\ struct {
+ \\ char a;
+ \\ int b;
+ \\ } __attribute__((packed)) z;
+ \\} __attribute__((packed));
+ , &[_][]const u8{
+ // in order for the nested struct to be packed, it must
+ // have an independent packed declaration on
+ // the nested type (see GCC docs for details)
+ \\const struct_unnamed_1 = extern struct {
+ \\ a: u8 align(1),
+ \\ b: c_int align(1),
+ \\};
+ ,
+ \\pub const union_Foo = extern union {
+ \\ x: u8 align(1),
+ \\ y: f64 align(1),
+ \\ z: struct_unnamed_1 align(1),
+ \\};
+ ,
+ \\pub const Foo = union_Foo;
+ });
+
cases.add("string literal",
\\const char *foo(void) {
\\ return "bar";
@@ -2660,7 +2726,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ return array[@intCast(c_uint, index)];
\\}
,
- \\pub const ACCESS = array[@as(c_int, 2)];
+ \\pub const ACCESS = array[@intCast(usize, @as(c_int, 2))];
});
cases.add("cast signed array index to unsigned",
@@ -2890,8 +2956,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ return 0;
\\}
\\pub export fn bar() void {
- \\ var f: ?*const fn () callconv(.C) void = foo;
- \\ var b: ?*const fn () callconv(.C) c_int = baz;
+ \\ var f: ?*const fn () callconv(.C) void = &foo;
+ \\ var b: ?*const fn () callconv(.C) c_int = &baz;
\\ f.?();
\\ f.?();
\\ foo();
@@ -3714,7 +3780,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
cases.add("Demote function that dereference types that contain opaque type",
\\struct inner {
- \\ _Atomic int a;
+ \\ _Atomic int a;
\\};
\\struct outer {
\\ int thing;