summaryrefslogtreecommitdiffstats
path: root/third_party/rust/winapi-0.2.8
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/winapi-0.2.8')
-rw-r--r--third_party/rust/winapi-0.2.8/.cargo-checksum.json1
-rw-r--r--third_party/rust/winapi-0.2.8/Cargo.toml61
-rw-r--r--third_party/rust/winapi-0.2.8/LICENSE.md21
-rw-r--r--third_party/rust/winapi-0.2.8/src/activation.rs5
-rw-r--r--third_party/rust/winapi-0.2.8/src/audioclient.rs71
-rw-r--r--third_party/rust/winapi-0.2.8/src/audiosessiontypes.rs11
-rw-r--r--third_party/rust/winapi-0.2.8/src/basetsd.rs99
-rw-r--r--third_party/rust/winapi-0.2.8/src/bcrypt.rs356
-rw-r--r--third_party/rust/winapi-0.2.8/src/cfg.rs134
-rw-r--r--third_party/rust/winapi-0.2.8/src/cfgmgr32.rs758
-rw-r--r--third_party/rust/winapi-0.2.8/src/combaseapi.rs17
-rw-r--r--third_party/rust/winapi-0.2.8/src/commctrl.rs3578
-rw-r--r--third_party/rust/winapi-0.2.8/src/commdlg.rs583
-rw-r--r--third_party/rust/winapi-0.2.8/src/corsym.rs79
-rw-r--r--third_party/rust/winapi-0.2.8/src/d2d1.rs734
-rw-r--r--third_party/rust/winapi-0.2.8/src/d2dbasetypes.rs61
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d10shader.rs110
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d11.rs2665
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d11shader.rs320
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d12.rs2324
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d12sdklayers.rs1063
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d12shader.rs320
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d9.rs713
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d9caps.rs349
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3d9types.rs1397
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3dcommon.rs753
-rw-r--r--third_party/rust/winapi-0.2.8/src/d3dcompiler.rs74
-rw-r--r--third_party/rust/winapi-0.2.8/src/dbghelp.rs340
-rw-r--r--third_party/rust/winapi-0.2.8/src/dcommon.rs18
-rw-r--r--third_party/rust/winapi-0.2.8/src/devpropdef.rs71
-rw-r--r--third_party/rust/winapi-0.2.8/src/docobj.rs22
-rw-r--r--third_party/rust/winapi-0.2.8/src/dpapi.rs11
-rw-r--r--third_party/rust/winapi-0.2.8/src/dsgetdc.rs113
-rw-r--r--third_party/rust/winapi-0.2.8/src/dsound.rs132
-rw-r--r--third_party/rust/winapi-0.2.8/src/dsrole.rs50
-rw-r--r--third_party/rust/winapi-0.2.8/src/dwmapi.rs9
-rw-r--r--third_party/rust/winapi-0.2.8/src/dwrite.rs1038
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgi.rs240
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgi1_2.rs288
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgi1_3.rs131
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgi1_4.rs82
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgiformat.rs124
-rw-r--r--third_party/rust/winapi-0.2.8/src/dxgitype.rs86
-rw-r--r--third_party/rust/winapi-0.2.8/src/errhandlingapi.rs7
-rw-r--r--third_party/rust/winapi-0.2.8/src/excpt.rs14
-rw-r--r--third_party/rust/winapi-0.2.8/src/fileapi.rs152
-rw-r--r--third_party/rust/winapi-0.2.8/src/gl.rs35
-rw-r--r--third_party/rust/winapi-0.2.8/src/guiddef.rs20
-rw-r--r--third_party/rust/winapi-0.2.8/src/heapapi.rs12
-rw-r--r--third_party/rust/winapi-0.2.8/src/hidclass.rs56
-rw-r--r--third_party/rust/winapi-0.2.8/src/hidpi.rs182
-rw-r--r--third_party/rust/winapi-0.2.8/src/hidsdi.rs15
-rw-r--r--third_party/rust/winapi-0.2.8/src/hidusage.rs270
-rw-r--r--third_party/rust/winapi-0.2.8/src/hstring.rs16
-rw-r--r--third_party/rust/winapi-0.2.8/src/http.rs828
-rw-r--r--third_party/rust/winapi-0.2.8/src/imm.rs3
-rw-r--r--third_party/rust/winapi-0.2.8/src/inaddr.rs22
-rw-r--r--third_party/rust/winapi-0.2.8/src/inspectable.rs15
-rw-r--r--third_party/rust/winapi-0.2.8/src/ksmedia.rs18
-rw-r--r--third_party/rust/winapi-0.2.8/src/lib.rs368
-rw-r--r--third_party/rust/winapi-0.2.8/src/libloaderapi.rs23
-rw-r--r--third_party/rust/winapi-0.2.8/src/lmaccess.rs853
-rw-r--r--third_party/rust/winapi-0.2.8/src/lmcons.rs55
-rw-r--r--third_party/rust/winapi-0.2.8/src/lmdfs.rs311
-rw-r--r--third_party/rust/winapi-0.2.8/src/lmerrlog.rs263
-rw-r--r--third_party/rust/winapi-0.2.8/src/lmjoin.rs80
-rw-r--r--third_party/rust/winapi-0.2.8/src/lsalookup.rs69
-rw-r--r--third_party/rust/winapi-0.2.8/src/macros.rs270
-rw-r--r--third_party/rust/winapi-0.2.8/src/memoryapi.rs19
-rw-r--r--third_party/rust/winapi-0.2.8/src/minschannel.rs56
-rw-r--r--third_party/rust/winapi-0.2.8/src/minwinbase.rs253
-rw-r--r--third_party/rust/winapi-0.2.8/src/minwindef.rs89
-rw-r--r--third_party/rust/winapi-0.2.8/src/mmdeviceapi.rs63
-rw-r--r--third_party/rust/winapi-0.2.8/src/mmreg.rs304
-rw-r--r--third_party/rust/winapi-0.2.8/src/mmsystem.rs259
-rw-r--r--third_party/rust/winapi-0.2.8/src/mscat.rs28
-rw-r--r--third_party/rust/winapi-0.2.8/src/mssip.rs103
-rw-r--r--third_party/rust/winapi-0.2.8/src/nb30.rs200
-rw-r--r--third_party/rust/winapi-0.2.8/src/ncrypt.rs9
-rw-r--r--third_party/rust/winapi-0.2.8/src/ntdef.rs7
-rw-r--r--third_party/rust/winapi-0.2.8/src/ntsecapi.rs1589
-rw-r--r--third_party/rust/winapi-0.2.8/src/ntstatus.rs2474
-rw-r--r--third_party/rust/winapi-0.2.8/src/oaidl.rs590
-rw-r--r--third_party/rust/winapi-0.2.8/src/objbase.rs5
-rw-r--r--third_party/rust/winapi-0.2.8/src/objidl.rs100
-rw-r--r--third_party/rust/winapi-0.2.8/src/objidlbase.rs93
-rw-r--r--third_party/rust/winapi-0.2.8/src/olectl.rs10
-rw-r--r--third_party/rust/winapi-0.2.8/src/pdh.rs52
-rw-r--r--third_party/rust/winapi-0.2.8/src/playsoundapi.rs19
-rw-r--r--third_party/rust/winapi-0.2.8/src/processsnapshot.rs58
-rw-r--r--third_party/rust/winapi-0.2.8/src/processthreadsapi.rs62
-rw-r--r--third_party/rust/winapi-0.2.8/src/propidl.rs10
-rw-r--r--third_party/rust/winapi-0.2.8/src/propsys.rs4
-rw-r--r--third_party/rust/winapi-0.2.8/src/prsht.rs262
-rw-r--r--third_party/rust/winapi-0.2.8/src/psapi.rs166
-rw-r--r--third_party/rust/winapi-0.2.8/src/qos.rs16
-rw-r--r--third_party/rust/winapi-0.2.8/src/reason.rs63
-rw-r--r--third_party/rust/winapi-0.2.8/src/restrictederrorinfo.rs9
-rw-r--r--third_party/rust/winapi-0.2.8/src/roapi.rs13
-rw-r--r--third_party/rust/winapi-0.2.8/src/roerrorapi.rs11
-rw-r--r--third_party/rust/winapi-0.2.8/src/rpc.rs5
-rw-r--r--third_party/rust/winapi-0.2.8/src/rpcdce.rs535
-rw-r--r--third_party/rust/winapi-0.2.8/src/sapi.rs2431
-rw-r--r--third_party/rust/winapi-0.2.8/src/schannel.rs333
-rw-r--r--third_party/rust/winapi-0.2.8/src/servprov.rs11
-rw-r--r--third_party/rust/winapi-0.2.8/src/setupapi.rs1301
-rw-r--r--third_party/rust/winapi-0.2.8/src/shellapi.rs62
-rw-r--r--third_party/rust/winapi-0.2.8/src/shellscalingapi.rs19
-rw-r--r--third_party/rust/winapi-0.2.8/src/shlguid.rs2
-rw-r--r--third_party/rust/winapi-0.2.8/src/shlobj.rs94
-rw-r--r--third_party/rust/winapi-0.2.8/src/shobjidl.rs652
-rw-r--r--third_party/rust/winapi-0.2.8/src/shtypes.rs40
-rw-r--r--third_party/rust/winapi-0.2.8/src/spapidef.rs48
-rw-r--r--third_party/rust/winapi-0.2.8/src/sql.rs179
-rw-r--r--third_party/rust/winapi-0.2.8/src/sqltypes.rs130
-rw-r--r--third_party/rust/winapi-0.2.8/src/sspi.rs657
-rw-r--r--third_party/rust/winapi-0.2.8/src/strmif.rs4
-rw-r--r--third_party/rust/winapi-0.2.8/src/subauth.rs198
-rw-r--r--third_party/rust/winapi-0.2.8/src/synchapi.rs14
-rw-r--r--third_party/rust/winapi-0.2.8/src/sysinfoapi.rs46
-rw-r--r--third_party/rust/winapi-0.2.8/src/threadpoolapi.rs7
-rw-r--r--third_party/rust/winapi-0.2.8/src/timezoneapi.rs27
-rw-r--r--third_party/rust/winapi-0.2.8/src/tlhelp32.rs104
-rw-r--r--third_party/rust/winapi-0.2.8/src/unknwnbase.rs29
-rw-r--r--third_party/rust/winapi-0.2.8/src/urlhist.rs56
-rw-r--r--third_party/rust/winapi-0.2.8/src/urlmon.rs6
-rw-r--r--third_party/rust/winapi-0.2.8/src/usb.rs18
-rw-r--r--third_party/rust/winapi-0.2.8/src/usbspec.rs41
-rw-r--r--third_party/rust/winapi-0.2.8/src/usp10.rs201
-rw-r--r--third_party/rust/winapi-0.2.8/src/vadefs.rs7
-rw-r--r--third_party/rust/winapi-0.2.8/src/vsbackup.rs303
-rw-r--r--third_party/rust/winapi-0.2.8/src/vss.rs256
-rw-r--r--third_party/rust/winapi-0.2.8/src/vsserror.rs85
-rw-r--r--third_party/rust/winapi-0.2.8/src/vswriter.rs241
-rw-r--r--third_party/rust/winapi-0.2.8/src/werapi.rs8
-rw-r--r--third_party/rust/winapi-0.2.8/src/winbase.rs552
-rw-r--r--third_party/rust/winapi-0.2.8/src/wincon.rs198
-rw-r--r--third_party/rust/winapi-0.2.8/src/wincred.rs209
-rw-r--r--third_party/rust/winapi-0.2.8/src/wincrypt.rs2206
-rw-r--r--third_party/rust/winapi-0.2.8/src/windef.rs57
-rw-r--r--third_party/rust/winapi-0.2.8/src/windowscodecs.rs363
-rw-r--r--third_party/rust/winapi-0.2.8/src/windowsx.rs22
-rw-r--r--third_party/rust/winapi-0.2.8/src/winerror.rs6065
-rw-r--r--third_party/rust/winapi-0.2.8/src/winevt.rs40
-rw-r--r--third_party/rust/winapi-0.2.8/src/wingdi.rs1238
-rw-r--r--third_party/rust/winapi-0.2.8/src/winhttp.rs441
-rw-r--r--third_party/rust/winapi-0.2.8/src/winioctl.rs754
-rw-r--r--third_party/rust/winapi-0.2.8/src/winnetwk.rs275
-rw-r--r--third_party/rust/winapi-0.2.8/src/winnls.rs164
-rw-r--r--third_party/rust/winapi-0.2.8/src/winnt.rs2368
-rw-r--r--third_party/rust/winapi-0.2.8/src/winreg.rs41
-rw-r--r--third_party/rust/winapi-0.2.8/src/winscard.rs269
-rw-r--r--third_party/rust/winapi-0.2.8/src/winsmcrd.rs157
-rw-r--r--third_party/rust/winapi-0.2.8/src/winsock2.rs429
-rw-r--r--third_party/rust/winapi-0.2.8/src/winspool.rs29
-rw-r--r--third_party/rust/winapi-0.2.8/src/winstring.rs3
-rw-r--r--third_party/rust/winapi-0.2.8/src/winsvc.rs200
-rw-r--r--third_party/rust/winapi-0.2.8/src/winusb.rs33
-rw-r--r--third_party/rust/winapi-0.2.8/src/winusbio.rs18
-rw-r--r--third_party/rust/winapi-0.2.8/src/winuser.rs2334
-rw-r--r--third_party/rust/winapi-0.2.8/src/ws2def.rs279
-rw-r--r--third_party/rust/winapi-0.2.8/src/ws2ipdef.rs42
-rw-r--r--third_party/rust/winapi-0.2.8/src/ws2spi.rs57
-rw-r--r--third_party/rust/winapi-0.2.8/src/ws2tcpip.rs27
-rw-r--r--third_party/rust/winapi-0.2.8/src/wtypes.rs75
-rw-r--r--third_party/rust/winapi-0.2.8/src/wtypesbase.rs37
-rw-r--r--third_party/rust/winapi-0.2.8/src/xinput.rs118
167 files changed, 57615 insertions, 0 deletions
diff --git a/third_party/rust/winapi-0.2.8/.cargo-checksum.json b/third_party/rust/winapi-0.2.8/.cargo-checksum.json
new file mode 100644
index 0000000000..8723902673
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"d15a0464554e57323507a2ff34925a2c592f3dffec9beb092c7ce985440f5bda","LICENSE.md":"fd232cfaeeff018cd3b9f22e0279b1c2237742999277596638800e967f6e4a29","src/activation.rs":"0e25834dfecd59391e2ecfdaa2e01bb5ac4d181778b47d0b9f67c56a6b2bd75f","src/audioclient.rs":"8c645d4ddb171620a527bcc14fa2904ff9aeb529262e68a0a9957d2ed77118be","src/audiosessiontypes.rs":"ba8cd1950cdab112861208ac1ecc35e656cbbe36e60c31315e547cfe47707685","src/basetsd.rs":"7b879d3164d5e6ec1b94d18a6b58f74a7f4e62fc279df32126e76c4f3138239d","src/bcrypt.rs":"05fe44190a37dd744bff8fc682f25a47c5f4239d417b213d18542aaa19b08b06","src/cfg.rs":"057ace203f04f8c09b6f68fefba7d3eb6644c46f2e44ca8f1364a8bc3bdd4970","src/cfgmgr32.rs":"714289f058283fc89fc79bbd4932bdbc0e9a88edd62a1787aac82c338f2dfb45","src/combaseapi.rs":"45458b1e0d918b237afd7e9581e2714b58ee009a91bbec45827694d1159a2e8b","src/commctrl.rs":"c0173aabd50f34a85c2523876fa0191d052d1d0c157f95ed228d98508806cc7d","src/commdlg.rs":"e75f64491eea54f651884eb3cc5353588c7fe54b086b43557d6d4917abbf95cd","src/corsym.rs":"301f937c7cb394675b2127a24595beef261d269d8f7cb45d6b4ac21a063985e3","src/d2d1.rs":"e7aa08883d85e2631f5327541e644b650ad009095daadef606bb06d9ac99afd3","src/d2dbasetypes.rs":"5a26048c997a580d8bb2a3512f1cb20dba411da99ffd6b23f4b0615ab9378058","src/d3d10shader.rs":"d6edf923fa8442be35b7f4ebebcd2e4bec4c3842ed5aee4bfd05c2de11edc4e0","src/d3d11.rs":"3f2f681357730df7ea954fb78903f0f0ad0bb3b577727307e751fd9598a4e837","src/d3d11shader.rs":"29612cc75ba238e2cd691fdcc01be9c79ca12b046e207d3cbfc5af23f04c4cb9","src/d3d12.rs":"906e512385e78756fe84f9a9622c510ce5a6daeb121127cf93f11af0f2fa3763","src/d3d12sdklayers.rs":"b50edb48a1c51bc7e3bf7176733c3dad4eb45a4e9747096e3b5a723052e130c8","src/d3d12shader.rs":"ff58932ef32c108348e41864f09ac6f909d641cac4f94c3e4f6c3dc4e5916521","src/d3d9.rs":"e01614130a4d68bb6e2a23f62ffb4d5016381e9026f8477aaca64851c8dcad53","src/d3d9caps.rs":"d4bcf91b7ae307388c91c19eacdb808506faea184b03178feee5c47959211b7b","src/d3d9types.rs":"1e10aae6297bc8dc083b111da496313ff19dcb9b88450e2637f8e98c0401519c","src/d3dcommon.rs":"f841b2e4df6dfccb9eb1955add24689db7b173780ec25e99b89097140a012152","src/d3dcompiler.rs":"02269410bd7f83f49391f852320ca0d76fd8d907ed22c68a003af65b3f5ab54a","src/dbghelp.rs":"c0ea5bcd04f414a696cd876439a7c4d6ee63627f4662705d189fd6e0412622f8","src/dcommon.rs":"8889ca66e2f89f1c275e5d6b7d6b203e7f25b4e7a262689b2ec6f04b9d1b5ae8","src/devpropdef.rs":"74948513ed623d3bdf1ea3fbf1f540b3e9e46efb9c1674ecccfe7f2fae5792f2","src/docobj.rs":"43e214d9d0c436a88ed2c620b8386e58e4d549ba9c8be51bf52291caf95e225d","src/dpapi.rs":"d44a1a6c9e52b34e8e87df1079b97081c646f07d0eee51f0d0cf66ae1c6fd58a","src/dsgetdc.rs":"5911c35ef3d80a5162fdbea6902f9b07033b746ff91bff2657a0971edb07bff2","src/dsound.rs":"53a5532d645e1b7995f0b4a0f0711fc66da8a27b7f8c87ce3d9e0882cfdca07c","src/dsrole.rs":"50b27a8afb11188ce24ab49620fe69ea21658148d8fd6076b8927175db5c1a9e","src/dwmapi.rs":"e65ca961eec0db275e211e04c59a8995c8c13d36ab08dc36ce197d9a4856266f","src/dwrite.rs":"f138d36e8b93778a7866cc755893b4da19cfd6ce42427139589a0bbaa294eb44","src/dxgi.rs":"5b6fcc5c665df1c0c6ed3de5d678a7bade1bb8ab1acbe952b784ce99fc817e53","src/dxgi1_2.rs":"6ba44755d715f2493236103fc5c24d7d45dff2e1fc3690aefbd4eb6c859dbc07","src/dxgi1_3.rs":"1f86a9db5fd45199fcc3ce56423e5fcf0c58df4001e2b50c5586d38ab820b78f","src/dxgi1_4.rs":"c578e6fcb82d535b20fc10232b75a7b9512d068919cc1e3f1c7cf55f3eb46460","src/dxgiformat.rs":"2e73df34f480b6ef3b5e21de0a520dacec91b00772e42786568fd162ca5e9aa6","src/dxgitype.rs":"204b8dae38c13a1dd8cd2ce6ca68851f743b416213d6db1cd0d96808bcbf7058","src/errhandlingapi.rs":"a70f9db3dd8ab60aba0daf39f12b527e54e312ca640e0b80d80c93ffdb6913c6","src/excpt.rs":"b07cf9ff0d23dd50c0776d048d0c579e401b7d729635f78998f85d35f33f05a4","src/fileapi.rs":"d31814c612bbd9372abbf6f8455fc2af89ac236c6b1855da10d66545e485ec57","src/gl.rs":"9429708bb97aeecb2c40030460ed0c3415fc0f2335c9513c68afa6157bd9b465","src/guiddef.rs":"86618dcd39c77048c7e453e6e86dafe90358eb7f97144f9672ae09e7b9855729","src/heapapi.rs":"21e420ba7641e507e8f2801d2b0ed25dbcb98e967924d711beb5cbfa8a5785e4","src/hidclass.rs":"a93380d35dc4d45807b10bbd69ee63eb8517b75989b68391685070a2fcfbefa1","src/hidpi.rs":"0b641fc119ac35761fe8e5eaed9a0781e9018598ea269d6cd386dbf5563ab9a0","src/hidsdi.rs":"50abb938ea8d0af90ccdea7ac3de4bc10fe42e34bc6a6d6eb4da1b330727da34","src/hidusage.rs":"44adc029bc89f0d4977b1295b7e998ddabf5283de66e1e33146bda8968d1d98b","src/hstring.rs":"51b3e63e3f1ed48f54c63c3e820e0563fb857b2743529d5f947f718d43425b89","src/http.rs":"ebb8b8db9e786e2683ad8b9a9066ef418df773ae7ce4d75f166cb5321f85f5a0","src/imm.rs":"b9277502f17f4cc6bde4f80f722ec1b976913355edbf162814ccfec2b3b080fd","src/inaddr.rs":"938143669da02c83a31d207be11e2176ed5219edf0e6f8f7a5534a5c6c3ce8d1","src/inspectable.rs":"b01f1814a233a77bf9f25c264747252c0464388c7d9c7302e5bde57502b8139b","src/ksmedia.rs":"acb96b1ea0cf3b5397f9037958093c6b4dbb54c4246516e57b9fed055e8e69c1","src/lib.rs":"8a7840b030f56883f68bdf90a1a04df8be2a5e2698a9ea86c73fac59c9f09b6e","src/libloaderapi.rs":"21a5d17c9f8ac4c006b515979964a8870f30710be4482083f45c6a41a16a36ce","src/lmaccess.rs":"712661c871569513334152bdcdf56c07776c560a22cd5b892a0f38e1957e28db","src/lmcons.rs":"3449aab4399cc36e7d7db551e384d82dfa4204178c4cfb9642f90645687fbc81","src/lmdfs.rs":"c351cdb2d10bf3a7c5ce7400dcdca41a792554e21e75fa9e5378ac18d8d3e4e7","src/lmerrlog.rs":"7937928544d27575e302c5e9c5e6803e9033e1f4d715e7ca29be202276d7d7a6","src/lmjoin.rs":"362cdc71f3f50099b862eff0733b3a57dd0f95cac15943135f794424f651b916","src/lsalookup.rs":"4aef1a95033444181f2b2b9df364ea165b0fdedb396c63e5d12db6b7398a3d5f","src/macros.rs":"5dacc570f226b6f1ad31d76a03675f0d182a3d578846920000fabb7cd92fc7f8","src/memoryapi.rs":"2273b8bfd7fc36dcf654c320826952ad502e8922a84174f8c1f7ed08aa555a04","src/minschannel.rs":"139828de63a0a4476de2bee454f5bca5e8a46cc29f1680339bb2804ee2d17322","src/minwinbase.rs":"6cd387a7f79e1a708bc48b5b27eaeaa7aadf0fff7a5e0a76cda0bdf3fa871863","src/minwindef.rs":"47ba4f2ec7789109ae339170715ed76288ae60ee57a4f06d5cc50a0e6855699f","src/mmdeviceapi.rs":"c8b7f7b6b78488d23ccba2b34e8765eac60ec9f08e19c96b377d957f65b1b6d1","src/mmreg.rs":"1621fad6eaa16d1e5ca95055fd11bf066b777b1343625f9fdc74e4d313d60dea","src/mmsystem.rs":"f6a2bff3bf80af1468de2c2a5f7ff2ced2b625adaf24f08f9b303965ed5ee371","src/mscat.rs":"9226a8e30546c4142e4fcdc716f8a15cc7c8081c9e875ec72ff9e8551f86f9a1","src/mssip.rs":"d7e2b91e358ff4986e700396d04f92aa1671aafada0d4889914a413177c091e1","src/nb30.rs":"dd85d7849111f04d33895835269929dc219e04de4373e91468eb053e3e0a5c52","src/ncrypt.rs":"29f168dcddeaa2cb231a7174cec672be83cca192ffc4632cead4c4a25189fb49","src/ntdef.rs":"3be66042d16a862f0fed8f48406b08c3091fbf92885a44efb7747f4a764d7de7","src/ntsecapi.rs":"dfb2cc7e23e8b20fa5ffd30ccecdb81b62d8ffeb68fdf99f93fb141ff4155afd","src/ntstatus.rs":"de6208f4e119a6405c1726433ea5e47a8b5f46b345f5809e9f580cce88360a79","src/oaidl.rs":"640c911e39888928baf77145cca34c1a768bfd759ec9709f70649a2946cb3246","src/objbase.rs":"7c9edb6a9ea72baddb15a6aec3602b3f9e7b1ce969dd655f440eae0ede1372e2","src/objidl.rs":"2a623b989f2a216edca3bd118eceff41267632839a3fd4410df9a7c126a87b64","src/objidlbase.rs":"3415a0bcd1b5b63ff48e17138ff87dae7c31eaeb323ae81f34b6712efade1d04","src/olectl.rs":"da2014c3d5858c5abff1635e1b8c8223333e7d22d28cac614aac3305a7f04ee4","src/pdh.rs":"eb01459c2acc456ecd204c6716d26027a6c77c2b4a9b698d3c922254fe2cc319","src/playsoundapi.rs":"7efddfc8601de565946c8c93074211c83b20866a1588e36e0518bba9864d0cf0","src/processsnapshot.rs":"df99a56280e6e41c5896341ffa1abe734f6c8662f4d7ea960cb97fb34c5b85d9","src/processthreadsapi.rs":"bf8edf8984ee97bc5054e68d02ec4633b5f15720602ab19c95d78e7d420c9cc8","src/propidl.rs":"88b5f176e4624063cadd8db95db52bf07cff421d73a8cfe319f992a9c99cd315","src/propsys.rs":"05c411639479f88e77383c585117a886f48ea7453260210db9f283e2cafdffbf","src/prsht.rs":"f862538c0010a51a02e5f24b3a44b54ba5993c32400b98a3b0558741ae7473a3","src/psapi.rs":"512523c5f8334c9ad221a73776c0ed2da93d8e2353dc4d2cee951ffa6ea7c163","src/qos.rs":"9ef6183b7c03b5b412f81f38ebb06048ff6266032bc236964dd994f173b82ec4","src/reason.rs":"c92aded3bbea859f110eed73b9b0fb40df6ac4a6ed6431ca69882b46b5ad5229","src/restrictederrorinfo.rs":"b8c53f4ae149ea806028cdafe699390a20202d72028b5f62836bcbf97720d133","src/roapi.rs":"dbbefb19f402a2aece66b500739b0a9e2c4d0133a8bc94d076510d5a67def175","src/roerrorapi.rs":"84a0a71a3f9ce67a577954ee5761cbd97d892eb5e7eb2c381f6bd29d4e1d4af7","src/rpc.rs":"e2293651222edf37f3ad3076adaae9033b25b06bd7b88ed7372585a4ae46c7d9","src/rpcdce.rs":"de77ca3c9b689ffaaf395a6882d3dfc3a1cec181efa6cb6075e605e4462bc3f6","src/sapi.rs":"05dbc1166b836251538c9e52a772fa584a1d0a1ad823e4336ab5e6cfefb96d57","src/schannel.rs":"e48926896227ffae5033bd634a7c71f5359d7a08b7b8c6e94e03864d87a37f8b","src/servprov.rs":"f086b4330162c7da711ea59d7023304a8fa2a53470b54d846ea1c11567703693","src/setupapi.rs":"4959862dd39597cd711022fcefbaf5c75b61410d57d04e9dbec2ddf7a2fa6f31","src/shellapi.rs":"ce3e3e7cd8aefe8068d6c51256827c0c3d51a449e4ab73e7125ea28d44dd6b6d","src/shellscalingapi.rs":"59c162b0215ff4b71b3535b6e142cca8cd99028031f47f0a6efb960c160a8776","src/shlguid.rs":"dcb7a1ada1b1b90f405e6dea8bcf1fc6994725b49a3165b7908670b2c31490e5","src/shlobj.rs":"53ff059ec6123001bed8f007c36e40812f83e4e04bd50b371319d10b4e38c36f","src/shobjidl.rs":"953d6ef4dc2a0d175d7133dc2f41255123ab8f778b22feaebd8ca1fa77356aa7","src/shtypes.rs":"ff785004e819bcfc521ab79327e58f98debab4e40c20412bbecdcee1b2801371","src/spapidef.rs":"9abe751425b6aaac7e4a7ea49f6d8e859f8f73164abd4d69b48e3e224d7de829","src/sql.rs":"004ed353b40bb4bceab55d6e8c33063a8eac992b076e47e6ead8303dbbc5b67f","src/sqltypes.rs":"0c5fa183c9f5b9e16e292de6a9afdf73f554730e651250856148ac04718803b8","src/sspi.rs":"dbd9d544abea4396983867ef4f7fbe2588673cc953dbeb74e7edc46503b16fa0","src/strmif.rs":"168040999cf99843cc1447988e46c56481a7a343ae41ab854db40ef566fa1119","src/subauth.rs":"183dd0df6436e9f0e859d62ca78e8ed42d4c1a5dc0690dcf22d42467fd2e0700","src/synchapi.rs":"cfce677c85377a340cb9307d9ac9eb06ffe9fd5e2ce08ed4a0390729e3a7d717","src/sysinfoapi.rs":"9a5579143263ce20d8c365b9874a0ae90ef28bc3295eab26ba3782efa48b464a","src/threadpoolapi.rs":"57876ea70b86d08663f7916ce076547f17596c26b8bf4dfafbad60e78264ff95","src/timezoneapi.rs":"5ccd80e6d16a858c56e20a7f3c5570e29777dab0fdfc057b6d2fb06463d56eb3","src/tlhelp32.rs":"c96ef7416bceab473463cc4ad98f037aeaac87bb7adf45cc16c281308537e82f","src/unknwnbase.rs":"2708c19491deb7364100025f3bb88a791c219551a65af70a776f8f3c5bf18b05","src/urlhist.rs":"8c8c0d0a613e59f68bf0e8cec061ea2126baa98d1479df4d07c8df5e41b50bc1","src/urlmon.rs":"0652e602ef2f5826360e5eab68bdf4f9365827a012c2c89289c54016ea001b74","src/usb.rs":"7e682ee819b237eabe796e604cff2434c450f724f4c86d919683eb7a5167c343","src/usbspec.rs":"d19671960838eb592cda4cd7c84c6f66cd9484f0904b5a28e1d8fd91e9c2c6af","src/usp10.rs":"baa2c1ef6ca5f064bc55b24f39c0553ede45a87b9183318572916fd4f1c679c6","src/vadefs.rs":"0e2f12fd1c521a943908669b2d10fceea409bac45242ec6e87c0e69706c1b3d0","src/vsbackup.rs":"af71cb851bd7eacde9d3e46a112497baef3ecebb472aae3c76c7faff804d33f9","src/vss.rs":"a626613810a69309b8f50d0a3bd75928d9de771c2287b6242487cb8cd55394a0","src/vsserror.rs":"f06b108d66ea9f06ad15d83b981117ed6a2a9cd218bb3bf53f13b0055acd9b2e","src/vswriter.rs":"8c4f5d27fa0883d187506538136cc610074941bb952afbe0984f7cb7c3c656f7","src/werapi.rs":"a2d692514ff3a61126971c5c2c5a7298c0f822559550a7f14501f8c96d1d951a","src/winbase.rs":"e224c40d827b1f1a9c74643c000f71e87ad18f749810cc611425af325c9472b8","src/wincon.rs":"402c5ebf80aa6ab1002935b7ddca17e8a243d0c714982054395862fe0ae40a04","src/wincred.rs":"e5fa987622dd880151ae190bb45daa666ffae3ae8e2da97407210afe01dd93d6","src/wincrypt.rs":"f7f8743b6a89d3f5e8b07405e43010bb3729aa8a8cf4546cc02705f802947ebc","src/windef.rs":"89fa9f5ab2909a4840f16979ebbc0afa2134abcb1d47cb7435b581f31b227658","src/windowscodecs.rs":"7c63bc4e2d0e7ce60c7bb13b93ef5aa12213f71a46845b6e034a9c224ef3eb3c","src/windowsx.rs":"414a9a841590f88804da3eb9ba55d583372a467cc50ab1ebdd7cfc653ce5f627","src/winerror.rs":"f3882eba4e299acbdedd548feb1ff89de958fb72d665bd6ba013b6a1f7596b52","src/winevt.rs":"64ae96f475ed98da7a84704d53d16caccbac2dbd525de0ef0f65fc58a6775ed1","src/wingdi.rs":"35aa9dd14b4b4c5a227ac3df0d312c19cbaede2d1388c26ad8eb910e80efeafd","src/winhttp.rs":"37769be104a2eb9efa70ffd74c8f38a09d9639cf575a677ad75d941e8d87cd58","src/winioctl.rs":"0f0efe0a41894a325b70428d04aeddec8dd7a87a91489a4e564a248e8498861b","src/winnetwk.rs":"d492c3d14a422f611166d39b895ddc6dd749ebc64a020bf3125af452494f91dd","src/winnls.rs":"90904d6adad70081a620165223fb4a71b64d747596c64d0df7de9511cd0f75c6","src/winnt.rs":"2c51ad0a065006010f1cfe7a3335274304e4747adc63f9798e1ca1f7091154a5","src/winreg.rs":"c687a5c6433daa13793815ef9af8befaedc9635be14eea0c618ad5334952dc31","src/winscard.rs":"78ab1d3ae22e486726740c343a4cc6268ca318de43f4b7d7ba51acbdf1b93936","src/winsmcrd.rs":"62be129c3d4cdea9dd31e769b587f071a94c347c8df71a43bb1eea18d52a60cc","src/winsock2.rs":"21dc0393f37f56c15c59d49a32861fb24c8f28d43ce26b56d958a174a5040a76","src/winspool.rs":"a3bd8e04f2db6118fe529bf52cb856a773cd8b816d197fc8edc8ac942578fd74","src/winstring.rs":"dc535f972d93be2fe067a5ca64edb45b6ad8e4549ecc0ce24486bd94555d5707","src/winsvc.rs":"7999f00b341f3e0e8701ea89f71986a6600650ff8cffdb1292e9f55d47bd0a3e","src/winusb.rs":"0ac355aa879a4aae501db04f1e8859dbef5e33fda9d46a7a12ef25e5524ec396","src/winusbio.rs":"8e2d64832999b59b2ea900396184c36d34cf94c97f31e15916c299213748a3e1","src/winuser.rs":"791bd8625812feccc8ec421489194d635c94cb4c4d754287a0caa54fa8f71c19","src/ws2def.rs":"0a1c7a69e4da8edc0584b0e3fb4ad1fa4aed621510b1bc1b0d104990577c6a38","src/ws2ipdef.rs":"c6a898cf25d187ad83e110af1e2286824868691a60818ecc44e68fa0bbbd4ff6","src/ws2spi.rs":"e63da700de55a317769230319eb9e4ec85cc0ac80b2baa076399367338b7ca0f","src/ws2tcpip.rs":"698084fd5d631a2ef236fe76001e7c44afd9b8958243e4ad4c098ac4beb4b352","src/wtypes.rs":"2689e8f442ccdc0b0e1ec82160a5cc3e80abf95dca82855ec595314062774a14","src/wtypesbase.rs":"f6dc0a8b09f3f003339c5dd366bdddb9dd671894be9dcf4a42058b226d2917a8","src/xinput.rs":"e15cd46bf18977481e22d609f8e0bb5508776902d7fa64477bb5b78596c0f67d"},"package":"167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"} \ No newline at end of file
diff --git a/third_party/rust/winapi-0.2.8/Cargo.toml b/third_party/rust/winapi-0.2.8/Cargo.toml
new file mode 100644
index 0000000000..941a659b0f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/Cargo.toml
@@ -0,0 +1,61 @@
+[package]
+name = "winapi"
+version = "0.2.8"
+authors = ["Peter Atashian <retep998@gmail.com>"]
+description = "Types and constants for WinAPI bindings. See README for list of crates providing function bindings."
+documentation = "https://retep998.github.io/doc/winapi/"
+repository = "https://github.com/retep998/winapi-rs"
+readme = "README.md"
+keywords = ["windows", "ffi", "win32", "com", "directx"]
+license = "MIT"
+include = ["src/**/*", "Cargo.toml", "LICENSE.md"]
+
+[dev-dependencies]
+advapi32-sys = { version = "0", path = "lib/advapi32" }
+bcrypt-sys = { version = "0", path = "lib/bcrypt" }
+comctl32-sys = { version = "0", path = "lib/comctl32" }
+comdlg32-sys = { version = "0", path = "lib/comdlg32" }
+credui-sys = { version = "0", path = "lib/credui" }
+crypt32-sys = { version = "0", path = "lib/crypt32" }
+d2d1-sys = { version = "0", path = "lib/d2d1" }
+d3d11-sys = { version = "0", path = "lib/d3d11" }
+d3d12-sys = { version = "0", path = "lib/d3d12" }
+d3d9-sys = { version = "0", path = "lib/d3d9" }
+d3dcompiler-sys = { version = "0", path = "lib/d3dcompiler" }
+dbghelp-sys = { version = "0", path = "lib/dbghelp" }
+dsound-sys = { version = "0", path = "lib/dsound" }
+dwmapi-sys = { version = "0", path = "lib/dwmapi" }
+dwrite-sys = { version = "0", path = "lib/dwrite" }
+dxgi-sys = { version = "0", path = "lib/dxgi" }
+dxguid-sys = { version = "0", path = "lib/dxguid" }
+gdi32-sys = { version = "0", path = "lib/gdi32" }
+hid-sys = { version = "0", path = "lib/hid" }
+httpapi-sys = { version = "0", path = "lib/httpapi" }
+kernel32-sys = { version = "0", path = "lib/kernel32" }
+ktmw32-sys = { version = "0", path = "lib/ktmw32" }
+mpr-sys = { version = "0", path = "lib/mpr" }
+netapi32-sys = { version = "0", path = "lib/netapi32" }
+odbc32-sys = { version = "0", path = "lib/odbc32" }
+ole32-sys = { version = "0", path = "lib/ole32" }
+oleaut32-sys = { version = "0", path = "lib/oleaut32" }
+opengl32-sys = { version = "0", path = "lib/opengl32" }
+pdh-sys = { version = "0", path = "lib/pdh" }
+psapi-sys = { version = "0", path = "lib/psapi" }
+runtimeobject-sys = { version = "0", path = "lib/runtimeobject" }
+secur32-sys = { version = "0", path = "lib/secur32" }
+setupapi-sys = { version = "0", path = "lib/setupapi" }
+shell32-sys = { version = "0", path = "lib/shell32" }
+shlwapi-sys = { version = "0", path = "lib/shlwapi" }
+user32-sys = { version = "0", path = "lib/user32" }
+userenv-sys = { version = "0", path = "lib/userenv" }
+usp10-sys = { version = "0", path = "lib/usp10" }
+uuid-sys = { version = "0", path = "lib/uuid" }
+vssapi-sys = { version = "0", path = "lib/vssapi" }
+wevtapi-sys = { version = "0", path = "lib/wevtapi" }
+winhttp-sys = { version = "0", path = "lib/winhttp" }
+winmm-sys = { version = "0", path = "lib/winmm" }
+winscard-sys = { version = "0", path = "lib/winscard" }
+winspool-sys = { version = "0", path = "lib/winspool" }
+winusb-sys = { version = "0", path = "lib/winusb" }
+ws2_32-sys = { version = "0", path = "lib/ws2_32" }
+xinput-sys = { version = "0", path = "lib/xinput" }
diff --git a/third_party/rust/winapi-0.2.8/LICENSE.md b/third_party/rust/winapi-0.2.8/LICENSE.md
new file mode 100644
index 0000000000..60d12ac7b7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Peter Atashian
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/third_party/rust/winapi-0.2.8/src/activation.rs b/third_party/rust/winapi-0.2.8/src/activation.rs
new file mode 100644
index 0000000000..f94f81b4ea
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/activation.rs
@@ -0,0 +1,5 @@
+RIDL!(
+interface IActivationFactory(IActivationFactoryVtbl): IInspectable(IInspectableVtbl) {
+ fn ActivateInstance(&mut self, instance: *mut *mut ::IInspectable) -> ::HRESULT
+}
+); \ No newline at end of file
diff --git a/third_party/rust/winapi-0.2.8/src/audioclient.rs b/third_party/rust/winapi-0.2.8/src/audioclient.rs
new file mode 100644
index 0000000000..5a5ee6a84c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/audioclient.rs
@@ -0,0 +1,71 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+//1627
+pub const AUDCLNT_E_NOT_INITIALIZED: ::HRESULT = AUDCLNT_ERR!(0x001);
+pub const AUDCLNT_E_ALREADY_INITIALIZED: ::HRESULT = AUDCLNT_ERR!(0x002);
+pub const AUDCLNT_E_WRONG_ENDPOINT_TYPE: ::HRESULT = AUDCLNT_ERR!(0x003);
+pub const AUDCLNT_E_DEVICE_INVALIDATED: ::HRESULT = AUDCLNT_ERR!(0x004);
+pub const AUDCLNT_E_NOT_STOPPED: ::HRESULT = AUDCLNT_ERR!(0x005);
+pub const AUDCLNT_E_BUFFER_TOO_LARGE: ::HRESULT = AUDCLNT_ERR!(0x006);
+pub const AUDCLNT_E_OUT_OF_ORDER: ::HRESULT = AUDCLNT_ERR!(0x007);
+pub const AUDCLNT_E_UNSUPPORTED_FORMAT: ::HRESULT = AUDCLNT_ERR!(0x008);
+pub const AUDCLNT_E_INVALID_SIZE: ::HRESULT = AUDCLNT_ERR!(0x009);
+pub const AUDCLNT_E_DEVICE_IN_USE: ::HRESULT = AUDCLNT_ERR!(0x00a);
+pub const AUDCLNT_E_BUFFER_OPERATION_PENDING: ::HRESULT = AUDCLNT_ERR!(0x00b);
+pub const AUDCLNT_E_THREAD_NOT_REGISTERED: ::HRESULT = AUDCLNT_ERR!(0x00c);
+pub const AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED: ::HRESULT = AUDCLNT_ERR!(0x00e);
+pub const AUDCLNT_E_ENDPOINT_CREATE_FAILED: ::HRESULT = AUDCLNT_ERR!(0x00f);
+pub const AUDCLNT_E_SERVICE_NOT_RUNNING: ::HRESULT = AUDCLNT_ERR!(0x010);
+pub const AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED: ::HRESULT = AUDCLNT_ERR!(0x011);
+pub const AUDCLNT_E_EXCLUSIVE_MODE_ONLY: ::HRESULT = AUDCLNT_ERR!(0x012);
+pub const AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL: ::HRESULT = AUDCLNT_ERR!(0x013);
+pub const AUDCLNT_E_EVENTHANDLE_NOT_SET: ::HRESULT = AUDCLNT_ERR!(0x014);
+pub const AUDCLNT_E_INCORRECT_BUFFER_SIZE: ::HRESULT = AUDCLNT_ERR!(0x015);
+pub const AUDCLNT_E_BUFFER_SIZE_ERROR: ::HRESULT = AUDCLNT_ERR!(0x016);
+pub const AUDCLNT_E_CPUUSAGE_EXCEEDED: ::HRESULT = AUDCLNT_ERR!(0x017);
+pub const AUDCLNT_E_BUFFER_ERROR: ::HRESULT = AUDCLNT_ERR!(0x018);
+pub const AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED: ::HRESULT = AUDCLNT_ERR!(0x019);
+pub const AUDCLNT_E_INVALID_DEVICE_PERIOD: ::HRESULT = AUDCLNT_ERR!(0x020);
+pub const AUDCLNT_E_INVALID_STREAM_FLAG: ::HRESULT = AUDCLNT_ERR!(0x021);
+pub const AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE: ::HRESULT = AUDCLNT_ERR!(0x022);
+pub const AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES: ::HRESULT = AUDCLNT_ERR!(0x023);
+pub const AUDCLNT_E_OFFLOAD_MODE_ONLY: ::HRESULT = AUDCLNT_ERR!(0x024);
+pub const AUDCLNT_E_NONOFFLOAD_MODE_ONLY: ::HRESULT = AUDCLNT_ERR!(0x025);
+pub const AUDCLNT_E_RESOURCES_INVALIDATED: ::HRESULT = AUDCLNT_ERR!(0x026);
+pub const AUDCLNT_E_RAW_MODE_UNSUPPORTED: ::HRESULT = AUDCLNT_ERR!(0x027);
+pub const AUDCLNT_S_BUFFER_EMPTY: ::SCODE = AUDCLNT_SUCCESS!(0x001);
+pub const AUDCLNT_S_THREAD_ALREADY_REGISTERED: ::SCODE = AUDCLNT_SUCCESS!(0x002);
+pub const AUDCLNT_S_POSITION_STALLED: ::SCODE = AUDCLNT_SUCCESS!(0x003);
+DEFINE_GUID!(IID_IAudioClient, 0x1CB9AD4C, 0xDBFA, 0x4c32,
+ 0xB1, 0x78, 0xC2, 0xF5, 0x68, 0xA7, 0x03, 0xB2);
+DEFINE_GUID!(IID_IAudioRenderClient, 0xF294ACFC, 0x3146, 0x4483,
+ 0xA7, 0xBF, 0xAD, 0xDC, 0xA7, 0xC2, 0x60, 0xE2);
+RIDL!{interface IAudioClient(IAudioClientVtbl): IUnknown(IUnknownVtbl) {
+ fn Initialize(
+ &mut self, ShareMode: ::AUDCLNT_SHAREMODE, StreamFlags: ::DWORD,
+ hnsBufferDuration: ::REFERENCE_TIME, hnsPeriodicity: ::REFERENCE_TIME,
+ pFormat: *const ::WAVEFORMATEX, AudioSessionGuid: ::LPCGUID
+ ) -> ::HRESULT,
+ fn GetBufferSize(&mut self, pNumBufferFrames: *mut ::UINT32) -> ::HRESULT,
+ fn GetStreamLatency(&mut self, phnsLatency: *mut ::REFERENCE_TIME) -> ::HRESULT,
+ fn GetCurrentPadding(&mut self, pNumPaddingFrames: *mut ::UINT32) -> ::HRESULT,
+ fn IsFormatSupported(
+ &mut self, ShareMode: ::AUDCLNT_SHAREMODE, pFormat: *const ::WAVEFORMATEX,
+ ppClosestMatch: *mut *mut ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn GetMixFormat(&mut self, ppDeviceFormat: *mut *mut ::WAVEFORMATEX) -> ::HRESULT,
+ fn GetDevicePeriod(
+ &mut self, phnsDefaultDevicePeriod: *mut ::REFERENCE_TIME,
+ phnsMinimumDevicePeriod: *mut ::REFERENCE_TIME
+ ) -> ::HRESULT,
+ fn Start(&mut self) -> ::HRESULT,
+ fn Stop(&mut self) -> ::HRESULT,
+ fn Reset(&mut self) -> ::HRESULT,
+ fn SetEventHandle(&mut self, eventHandle: ::HANDLE) -> ::HRESULT,
+ fn GetService(&mut self, riid: ::REFIID, ppv: *mut ::LPVOID) -> ::HRESULT
+}}
+RIDL!{interface IAudioRenderClient(IAudioRenderClientVtbl): IUnknown(IUnknownVtbl) {
+ fn GetBuffer(&mut self, NumFramesRequested: ::UINT32, ppData: *mut *mut ::BYTE) -> ::HRESULT,
+ fn ReleaseBuffer(&mut self, NumFramesWritten: ::UINT32, dwFlags: ::DWORD) -> ::HRESULT
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/audiosessiontypes.rs b/third_party/rust/winapi-0.2.8/src/audiosessiontypes.rs
new file mode 100644
index 0000000000..796f17f286
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/audiosessiontypes.rs
@@ -0,0 +1,11 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+ENUM!{enum AUDCLNT_SHAREMODE {
+ AUDCLNT_SHAREMODE_SHARED,
+ AUDCLNT_SHAREMODE_EXCLUSIVE,
+}}
+pub const AUDCLNT_STREAMFLAGS_CROSSPROCESS: ::DWORD = 0x00010000;
+pub const AUDCLNT_STREAMFLAGS_LOOPBACK: ::DWORD = 0x00020000;
+pub const AUDCLNT_STREAMFLAGS_EVENTCALLBACK: ::DWORD = 0x00040000;
+pub const AUDCLNT_STREAMFLAGS_NOPERSIST: ::DWORD = 0x00080000;
+pub const AUDCLNT_STREAMFLAGS_RATEADJUST: ::DWORD = 0x00100000;
diff --git a/third_party/rust/winapi-0.2.8/src/basetsd.rs b/third_party/rust/winapi-0.2.8/src/basetsd.rs
new file mode 100644
index 0000000000..6bf20fc96d
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/basetsd.rs
@@ -0,0 +1,99 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Type definitions for the basic sized types.
+#[cfg(target_arch = "x86")]
+pub type POINTER_64_INT = ::c_ulong;
+#[cfg(target_arch = "x86_64")]
+pub type POINTER_64_INT = ::__uint64;
+pub type INT8 = ::c_schar;
+pub type PINT8 = *mut ::c_schar;
+pub type INT16 = ::c_short;
+pub type PINT16 = *mut ::c_short;
+pub type INT32 = ::c_int;
+pub type PINT32 = *mut ::c_int;
+pub type INT64 = ::__int64;
+pub type PINT64 = *mut ::__int64;
+pub type UINT8 = ::c_uchar;
+pub type PUINT8 = *mut ::c_uchar;
+pub type UINT16 = ::c_ushort;
+pub type PUINT16 = *mut ::c_ushort;
+pub type UINT32 = ::c_uint;
+pub type PUINT32 = *mut ::c_uint;
+pub type UINT64 = ::__uint64;
+pub type PUINT64 = *mut ::__uint64;
+pub type LONG32 = ::c_int;
+pub type PLONG32 = *mut ::c_int;
+pub type ULONG32 = ::c_uint;
+pub type PULONG32 = *mut ::c_uint;
+pub type DWORD32 = ::c_uint;
+pub type PDWORD32 = *mut ::c_uint;
+#[cfg(target_arch = "x86")]
+pub type INT_PTR = ::c_int;
+#[cfg(target_arch = "x86_64")]
+pub type INT_PTR = ::__int64;
+#[cfg(target_arch = "x86")]
+pub type PINT_PTR = *mut ::c_int;
+#[cfg(target_arch = "x86_64")]
+pub type PINT_PTR = *mut ::__int64;
+#[cfg(target_arch = "x86")]
+pub type UINT_PTR = ::c_uint;
+#[cfg(target_arch = "x86_64")]
+pub type UINT_PTR = ::__uint64;
+#[cfg(target_arch = "x86")]
+pub type PUINT_PTR = *mut ::c_uint;
+#[cfg(target_arch = "x86_64")]
+pub type PUINT_PTR = *mut ::__uint64;
+#[cfg(target_arch = "x86")]
+pub type LONG_PTR = ::c_long;
+#[cfg(target_arch = "x86_64")]
+pub type LONG_PTR = ::__int64;
+#[cfg(target_arch = "x86")]
+pub type PLONG_PTR = *mut ::c_long;
+#[cfg(target_arch = "x86_64")]
+pub type PLONG_PTR = *mut ::__int64;
+#[cfg(target_arch = "x86")]
+pub type ULONG_PTR = ::c_ulong;
+#[cfg(target_arch = "x86_64")]
+pub type ULONG_PTR = ::__uint64;
+#[cfg(target_arch = "x86")]
+pub type PULONG_PTR = *mut ::c_ulong;
+#[cfg(target_arch = "x86_64")]
+pub type PULONG_PTR = *mut ::__uint64;
+#[cfg(target_arch = "x86_64")]
+pub type SHANDLE_PTR = ::__int64;
+#[cfg(target_arch = "x86_64")]
+pub type HANDLE_PTR = ::__uint64;
+#[cfg(target_arch = "x86_64")]
+pub type UHALF_PTR = ::c_uint;
+#[cfg(target_arch = "x86_64")]
+pub type PUHALF_PTR = *mut ::c_uint;
+#[cfg(target_arch = "x86_64")]
+pub type HALF_PTR = ::c_int;
+#[cfg(target_arch = "x86_64")]
+pub type PHALF_PTR = *mut ::c_int;
+#[cfg(target_arch = "x86")]
+pub type SHANDLE_PTR = ::c_long;
+#[cfg(target_arch = "x86")]
+pub type HANDLE_PTR = ::c_ulong;
+#[cfg(target_arch = "x86")]
+pub type UHALF_PTR = ::c_ushort;
+#[cfg(target_arch = "x86")]
+pub type PUHALF_PTR = *mut ::c_ushort;
+#[cfg(target_arch = "x86")]
+pub type HALF_PTR = ::c_short;
+#[cfg(target_arch = "x86")]
+pub type PHALF_PTR = *mut ::c_short;
+pub type SIZE_T = ULONG_PTR;
+pub type PSIZE_T = *mut ULONG_PTR;
+pub type SSIZE_T = LONG_PTR;
+pub type PSSIZE_T = *mut LONG_PTR;
+pub type DWORD_PTR = ULONG_PTR;
+pub type PDWORD_PTR = *mut ULONG_PTR;
+pub type LONG64 = ::__int64;
+pub type PLONG64 = *mut ::__int64;
+pub type ULONG64 = ::__uint64;
+pub type PULONG64 = *mut ::__uint64;
+pub type DWORD64 = ::__uint64;
+pub type PDWORD64 = *mut ::__uint64;
+pub type KAFFINITY = ULONG_PTR;
+pub type PKAFFINITY = *mut KAFFINITY;
diff --git a/third_party/rust/winapi-0.2.8/src/bcrypt.rs b/third_party/rust/winapi-0.2.8/src/bcrypt.rs
new file mode 100644
index 0000000000..ee818a5bd0
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/bcrypt.rs
@@ -0,0 +1,356 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Cryptographic Primitive API Prototypes and Definitions
+pub const KDF_HASH_ALGORITHM: ::ULONG = 0x0;
+pub const KDF_SECRET_PREPEND: ::ULONG = 0x1;
+pub const KDF_SECRET_APPEND: ::ULONG = 0x2;
+pub const KDF_HMAC_KEY: ::ULONG = 0x3;
+pub const KDF_TLS_PRF_LABEL: ::ULONG = 0x4;
+pub const KDF_TLS_PRF_SEED: ::ULONG = 0x5;
+pub const KDF_SECRET_HANDLE: ::ULONG = 0x6;
+pub const KDF_TLS_PRF_PROTOCOL: ::ULONG = 0x7;
+pub const KDF_ALGORITHMID: ::ULONG = 0x8;
+pub const KDF_PARTYUINFO: ::ULONG = 0x9;
+pub const KDF_PARTYVINFO: ::ULONG = 0xA;
+pub const KDF_SUPPPUBINFO: ::ULONG = 0xB;
+pub const KDF_SUPPPRIVINFO: ::ULONG = 0xC;
+pub const KDF_LABEL: ::ULONG = 0xD;
+pub const KDF_CONTEXT: ::ULONG = 0xE;
+pub const KDF_SALT: ::ULONG = 0xF;
+pub const KDF_ITERATION_COUNT: ::ULONG = 0x10;
+pub const KDF_GENERIC_PARAMETER: ::ULONG = 0x11;
+pub const KDF_KEYBITLENGTH: ::ULONG = 0x12;
+pub const KDF_USE_SECRET_AS_HMAC_KEY_FLAG: ::ULONG = 0x1;
+STRUCT!{struct BCRYPT_KEY_LENGTHS_STRUCT {
+ dwMinLength: ::ULONG,
+ dwMaxLength: ::ULONG,
+ dwIncrement: ::ULONG,
+}}
+pub type BCRYPT_AUTH_TAG_LENGTHS_STRUCT = BCRYPT_KEY_LENGTHS_STRUCT;
+STRUCT!{struct BCRYPT_OID {
+ cbOID: ::ULONG,
+ pbOID: ::PUCHAR,
+}}
+STRUCT!{struct BCRYPT_OID_LIST {
+ dwOIDCount: ::ULONG,
+ pOIDs: *mut BCRYPT_OID,
+}}
+STRUCT!{struct BCRYPT_PKCS1_PADDING_INFO {
+ pszAlgId: ::LPCWSTR,
+}}
+STRUCT!{struct BCRYPT_PSS_PADDING_INFO {
+ pszAlgId: ::LPCWSTR,
+ cbSalt: ::ULONG,
+}}
+STRUCT!{struct BCRYPT_OAEP_PADDING_INFO {
+ pszAlgId: ::LPCWSTR,
+ pbLabel: ::PUCHAR,
+ cbLabel: ::ULONG,
+}}
+pub const BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION: ::ULONG = 1;
+pub const BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG: ::ULONG = 0x00000001;
+pub const BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG: ::ULONG = 0x00000002;
+STRUCT!{struct BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
+ cbSize: ::ULONG,
+ dwInfoVersion: ::ULONG,
+ pbNonce: ::PUCHAR,
+ cbNonce: ::ULONG,
+ pbAuthData: ::PUCHAR,
+ cbAuthData: ::ULONG,
+ pbTag: ::PUCHAR,
+ cbTag: ::ULONG,
+ pbMacContext: ::PUCHAR,
+ cbMacContext: ::ULONG,
+ cbAAD: ::ULONG,
+ cbData: ::ULONGLONG,
+ dwFlags: ::ULONG,
+}}
+pub type PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO = *mut BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
+pub const BCRYPT_PROV_DISPATCH: ::ULONG = 0x00000001;
+pub const BCRYPT_BLOCK_PADDING: ::ULONG = 0x00000001;
+pub const BCRYPT_PAD_NONE: ::ULONG = 0x00000001;
+pub const BCRYPT_PAD_PKCS1: ::ULONG = 0x00000002;
+pub const BCRYPT_PAD_OAEP: ::ULONG = 0x00000004;
+pub const BCRYPT_PAD_PSS: ::ULONG = 0x00000008;
+pub const BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID: ::ULONG = 0x00000010;
+pub const BCRYPTBUFFER_VERSION: ::ULONG = 0;
+STRUCT!{struct BCryptBuffer {
+ cbBuffer: ::ULONG,
+ BufferType: ::ULONG,
+ pvBuffer: ::PVOID,
+}}
+pub type PBCryptBuffer = *mut BCryptBuffer;
+STRUCT!{struct BCryptBufferDesc {
+ ulVersion: ::ULONG,
+ cBuffers: ::ULONG,
+ pBuffers: PBCryptBuffer,
+}}
+pub type PBCryptBufferDesc = *mut BCryptBufferDesc;
+//321
+pub type BCRYPT_HANDLE = ::PVOID;
+pub type BCRYPT_ALG_HANDLE = ::PVOID;
+pub type BCRYPT_KEY_HANDLE = ::PVOID;
+pub type BCRYPT_HASH_HANDLE = ::PVOID;
+pub type BCRYPT_SECRET_HANDLE = ::PVOID;
+STRUCT!{struct BCRYPT_KEY_BLOB {
+ Magic: ::ULONG,
+}}
+pub const BCRYPT_RSAPUBLIC_MAGIC: ::ULONG = 0x31415352;
+pub const BCRYPT_RSAPRIVATE_MAGIC: ::ULONG = 0x32415352;
+STRUCT!{struct BCRYPT_RSAKEY_BLOB {
+ Magic: ::ULONG,
+ BitLength: ::ULONG,
+ cbPublicExp: ::ULONG,
+ cbModulus: ::ULONG,
+ cbPrime1: ::ULONG,
+ cbPrime2: ::ULONG,
+}}
+pub const BCRYPT_RSAFULLPRIVATE_MAGIC: ::ULONG = 0x33415352;
+pub const BCRYPT_ECDH_PUBLIC_P256_MAGIC: ::ULONG = 0x314B4345;
+pub const BCRYPT_ECDH_PRIVATE_P256_MAGIC: ::ULONG = 0x324B4345;
+pub const BCRYPT_ECDH_PUBLIC_P384_MAGIC: ::ULONG = 0x334B4345;
+pub const BCRYPT_ECDH_PRIVATE_P384_MAGIC: ::ULONG = 0x344B4345;
+pub const BCRYPT_ECDH_PUBLIC_P521_MAGIC: ::ULONG = 0x354B4345;
+pub const BCRYPT_ECDH_PRIVATE_P521_MAGIC: ::ULONG = 0x364B4345;
+pub const BCRYPT_ECDSA_PUBLIC_P256_MAGIC: ::ULONG = 0x31534345;
+pub const BCRYPT_ECDSA_PRIVATE_P256_MAGIC: ::ULONG = 0x32534345;
+pub const BCRYPT_ECDSA_PUBLIC_P384_MAGIC: ::ULONG = 0x33534345;
+pub const BCRYPT_ECDSA_PRIVATE_P384_MAGIC: ::ULONG = 0x34534345;
+pub const BCRYPT_ECDSA_PUBLIC_P521_MAGIC: ::ULONG = 0x35534345;
+pub const BCRYPT_ECDSA_PRIVATE_P521_MAGIC: ::ULONG = 0x36534345;
+STRUCT!{struct BCRYPT_ECCKEY_BLOB {
+ dwMagic: ::ULONG,
+ cbKey: ::ULONG,
+}}
+pub type PBCRYPT_ECCKEY_BLOB = *mut BCRYPT_ECCKEY_BLOB;
+pub const BCRYPT_DH_PUBLIC_MAGIC: ::ULONG = 0x42504844;
+pub const BCRYPT_DH_PRIVATE_MAGIC: ::ULONG = 0x56504844;
+STRUCT!{struct BCRYPT_DH_KEY_BLOB {
+ dwMagic: ::ULONG,
+ cbKey: ::ULONG,
+}}
+pub type PBCRYPT_DH_KEY_BLOB = *mut BCRYPT_DH_KEY_BLOB;
+pub const BCRYPT_DH_PARAMETERS_MAGIC: ::ULONG = 0x4d504844;
+STRUCT!{struct BCRYPT_DH_PARAMETER_HEADER {
+ cbLength: ::ULONG,
+ dwMagic: ::ULONG,
+ cbKeyLength: ::ULONG,
+}}
+pub const BCRYPT_DSA_PUBLIC_MAGIC: ::ULONG = 0x42505344;
+pub const BCRYPT_DSA_PRIVATE_MAGIC: ::ULONG = 0x56505344;
+pub const BCRYPT_DSA_PUBLIC_MAGIC_V2: ::ULONG = 0x32425044;
+pub const BCRYPT_DSA_PRIVATE_MAGIC_V2: ::ULONG = 0x32565044;
+STRUCT!{struct BCRYPT_DSA_KEY_BLOB {
+ dwMagic: ::ULONG,
+ cbKey: ::ULONG,
+ Count: [::UCHAR; 4],
+ Seed: [::UCHAR; 20],
+ q: [::UCHAR; 20],
+}}
+pub type PBCRYPT_DSA_KEY_BLOB = *mut BCRYPT_DSA_KEY_BLOB;
+ENUM!{enum HASHALGORITHM_ENUM {
+ DSA_HASH_ALGORITHM_SHA1,
+ DSA_HASH_ALGORITHM_SHA256,
+ DSA_HASH_ALGORITHM_SHA512,
+}}
+ENUM!{enum DSAFIPSVERSION_ENUM {
+ DSA_FIPS186_2,
+ DSA_FIPS186_3,
+}}
+STRUCT!{struct BCRYPT_DSA_KEY_BLOB_V2 {
+ dwMagic: ::ULONG,
+ cbKey: ::ULONG,
+ hashAlgorithm: HASHALGORITHM_ENUM,
+ standardVersion: DSAFIPSVERSION_ENUM,
+ cbSeedLength: ::ULONG,
+ cbGroupSize: ::ULONG,
+ Count: [::UCHAR; 4],
+}}
+pub type PBCRYPT_DSA_KEY_BLOB_V2 = *mut BCRYPT_DSA_KEY_BLOB_V2;
+STRUCT!{struct BCRYPT_KEY_DATA_BLOB_HEADER {
+ dwMagic: ::ULONG,
+ dwVersion: ::ULONG,
+ cbKeyData: ::ULONG,
+}}
+pub type PBCRYPT_KEY_DATA_BLOB_HEADER = *mut BCRYPT_KEY_DATA_BLOB_HEADER;
+pub const BCRYPT_KEY_DATA_BLOB_MAGIC: ::ULONG = 0x4d42444b;
+pub const BCRYPT_KEY_DATA_BLOB_VERSION1: ::ULONG = 0x1;
+pub const BCRYPT_DSA_PARAMETERS_MAGIC: ::ULONG = 0x4d505344;
+pub const BCRYPT_DSA_PARAMETERS_MAGIC_V2: ::ULONG = 0x324d5044;
+STRUCT!{struct BCRYPT_DSA_PARAMETER_HEADER {
+ cbLength: ::ULONG,
+ dwMagic: ::ULONG,
+ cbKeyLength: ::ULONG,
+ Count: [::UCHAR; 4],
+ Seed: [::UCHAR; 20],
+ q: [::UCHAR; 20],
+}}
+STRUCT!{struct BCRYPT_DSA_PARAMETER_HEADER_V2 {
+ cbLength: ::ULONG,
+ dwMagic: ::ULONG,
+ cbKeyLength: ::ULONG,
+ hashAlgorithm: HASHALGORITHM_ENUM,
+ standardVersion: DSAFIPSVERSION_ENUM,
+ cbSeedLength: ::ULONG,
+ cbGroupSize: ::ULONG,
+ Count: [::UCHAR; 4],
+}}
+ENUM!{enum BCRYPT_HASH_OPERATION_TYPE {
+ BCRYPT_HASH_OPERATION_HASH_DATA = 1,
+ BCRYPT_HASH_OPERATION_FINISH_HASH = 2,
+}}
+STRUCT!{struct BCRYPT_MULTI_HASH_OPERATION {
+ iHash: ::ULONG,
+ hashOperation: BCRYPT_HASH_OPERATION_TYPE,
+ pbBuffer: ::PUCHAR,
+ cbBuffer: ::ULONG,
+}}
+ENUM!{enum BCRYPT_MULTI_OPERATION_TYPE {
+ BCRYPT_OPERATION_TYPE_HASH = 1,
+}}
+STRUCT!{struct BCRYPT_MULTI_OBJECT_LENGTH_STRUCT {
+ cbPerObject: ::ULONG,
+ cbPerElement: ::ULONG,
+}}
+pub const BCRYPT_CIPHER_INTERFACE: ::ULONG = 0x00000001;
+pub const BCRYPT_HASH_INTERFACE: ::ULONG = 0x00000002;
+pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE: ::ULONG = 0x00000003;
+pub const BCRYPT_SECRET_AGREEMENT_INTERFACE: ::ULONG = 0x00000004;
+pub const BCRYPT_SIGNATURE_INTERFACE: ::ULONG = 0x00000005;
+pub const BCRYPT_RNG_INTERFACE: ::ULONG = 0x00000006;
+pub const BCRYPT_KEY_DERIVATION_INTERFACE: ::ULONG = 0x00000007;
+pub const BCRYPT_ALG_HANDLE_HMAC_FLAG: ::ULONG = 0x00000008;
+pub const BCRYPT_CAPI_AES_FLAG: ::ULONG = 0x00000010;
+pub const BCRYPT_HASH_REUSABLE_FLAG: ::ULONG = 0x00000020;
+pub const BCRYPT_BUFFERS_LOCKED_FLAG: ::ULONG = 0x00000040;
+pub const BCRYPT_EXTENDED_KEYSIZE: ::ULONG = 0x00000080;
+pub const BCRYPT_CIPHER_OPERATION: ::ULONG = 0x00000001;
+pub const BCRYPT_HASH_OPERATION: ::ULONG = 0x00000002;
+pub const BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION: ::ULONG = 0x00000004;
+pub const BCRYPT_SECRET_AGREEMENT_OPERATION: ::ULONG = 0x00000008;
+pub const BCRYPT_SIGNATURE_OPERATION: ::ULONG = 0x00000010;
+pub const BCRYPT_RNG_OPERATION: ::ULONG = 0x00000020;
+pub const BCRYPT_KEY_DERIVATION_OPERATION: ::ULONG = 0x00000040;
+STRUCT!{struct BCRYPT_ALGORITHM_IDENTIFIER {
+ pszName: ::LPWSTR,
+ dwClass: ::ULONG,
+ dwFlags: ::ULONG,
+}}
+STRUCT!{struct BCRYPT_PROVIDER_NAME {
+ pszProviderName: ::LPWSTR,
+}}
+pub const BCRYPT_PUBLIC_KEY_FLAG: ::ULONG = 0x00000001;
+pub const BCRYPT_PRIVATE_KEY_FLAG: ::ULONG = 0x00000002;
+pub const BCRYPT_RNG_USE_ENTROPY_IN_BUFFER: ::ULONG = 0x00000001;
+pub const BCRYPT_USE_SYSTEM_PREFERRED_RNG: ::ULONG = 0x00000002;
+STRUCT!{struct BCRYPT_INTERFACE_VERSION {
+ MajorVersion: ::USHORT,
+ MinorVersion: ::USHORT,
+}}
+pub type PBCRYPT_INTERFACE_VERSION = *mut BCRYPT_INTERFACE_VERSION;
+pub const BCRYPT_CIPHER_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
+pub const BCRYPT_HASH_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
+pub const BCRYPT_HASH_INTERFACE_MAJORVERSION_2: ::USHORT = 2;
+pub const BCRYPT_HASH_INTERFACE_VERSION_2: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(BCRYPT_HASH_INTERFACE_MAJORVERSION_2, 0);
+pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
+pub const BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
+pub const BCRYPT_SIGNATURE_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
+pub const BCRYPT_RNG_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
+ BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
+pub const CRYPT_MIN_DEPENDENCIES: ::ULONG = 0x00000001;
+pub const CRYPT_PROCESS_ISOLATE: ::ULONG = 0x00010000;
+pub const CRYPT_UM: ::ULONG = 0x00000001;
+pub const CRYPT_KM: ::ULONG = 0x00000002;
+pub const CRYPT_MM: ::ULONG = 0x00000003;
+pub const CRYPT_ANY: ::ULONG = 0x00000004;
+pub const CRYPT_OVERWRITE: ::ULONG = 0x00000001;
+pub const CRYPT_LOCAL: ::ULONG = 0x00000001;
+pub const CRYPT_DOMAIN: ::ULONG = 0x00000002;
+pub const CRYPT_EXCLUSIVE: ::ULONG = 0x00000001;
+pub const CRYPT_OVERRIDE: ::ULONG = 0x00010000;
+pub const CRYPT_ALL_FUNCTIONS: ::ULONG = 0x00000001;
+pub const CRYPT_ALL_PROVIDERS: ::ULONG = 0x00000002;
+pub const CRYPT_PRIORITY_TOP: ::ULONG = 0x00000000;
+pub const CRYPT_PRIORITY_BOTTOM: ::ULONG = 0xFFFFFFFF;
+STRUCT!{struct CRYPT_INTERFACE_REG {
+ dwInterface: ::ULONG,
+ dwFlags: ::ULONG,
+ cFunctions: ::ULONG,
+ rgpszFunctions: *mut ::PWSTR,
+}}
+pub type PCRYPT_INTERFACE_REG = *mut CRYPT_INTERFACE_REG;
+STRUCT!{struct CRYPT_IMAGE_REG {
+ pszImage: ::PWSTR,
+ cInterfaces: ::ULONG,
+ rgpInterfaces: *mut PCRYPT_INTERFACE_REG,
+}}
+pub type PCRYPT_IMAGE_REG = *mut CRYPT_IMAGE_REG;
+STRUCT!{struct CRYPT_PROVIDER_REG {
+ cAliases: ::ULONG,
+ rgpszAliases: *mut ::PWSTR,
+ pUM: PCRYPT_IMAGE_REG,
+ pKM: PCRYPT_IMAGE_REG,
+}}
+pub type PCRYPT_PROVIDER_REG = *mut CRYPT_PROVIDER_REG;
+STRUCT!{struct CRYPT_PROVIDERS {
+ cProviders: ::ULONG,
+ rgpszProviders: *mut ::PWSTR,
+}}
+pub type PCRYPT_PROVIDERS = *mut CRYPT_PROVIDERS;
+STRUCT!{struct CRYPT_CONTEXT_CONFIG {
+ dwFlags: ::ULONG,
+ dwReserved: ::ULONG,
+}}
+pub type PCRYPT_CONTEXT_CONFIG = *mut CRYPT_CONTEXT_CONFIG;
+STRUCT!{struct CRYPT_CONTEXT_FUNCTION_CONFIG {
+ dwFlags: ::ULONG,
+ dwReserved: ::ULONG,
+}}
+pub type PCRYPT_CONTEXT_FUNCTION_CONFIG = *mut CRYPT_CONTEXT_FUNCTION_CONFIG;
+STRUCT!{struct CRYPT_CONTEXTS {
+ cContexts: ::ULONG,
+ rgpszContexts: *mut ::PWSTR,
+}}
+pub type PCRYPT_CONTEXTS = *mut CRYPT_CONTEXTS;
+STRUCT!{struct CRYPT_CONTEXT_FUNCTIONS {
+ cFunctions: ::ULONG,
+ rgpszFunctions: *mut ::PWSTR,
+}}
+pub type PCRYPT_CONTEXT_FUNCTIONS = *mut CRYPT_CONTEXT_FUNCTIONS;
+STRUCT!{struct CRYPT_CONTEXT_FUNCTION_PROVIDERS {
+ cProviders: ::ULONG,
+ rgpszProviders: *mut ::PWSTR,
+}}
+pub type PCRYPT_CONTEXT_FUNCTION_PROVIDERS = *mut CRYPT_CONTEXT_FUNCTION_PROVIDERS;
+STRUCT!{struct CRYPT_PROPERTY_REF {
+ pszProperty: ::PWSTR,
+ cbValue: ::ULONG,
+ pbValue: ::PUCHAR,
+}}
+pub type PCRYPT_PROPERTY_REF = *mut CRYPT_PROPERTY_REF;
+STRUCT!{struct CRYPT_IMAGE_REF {
+ pszImage: ::PWSTR,
+ dwFlags: ::ULONG,
+}}
+pub type PCRYPT_IMAGE_REF = *mut CRYPT_IMAGE_REF;
+STRUCT!{struct CRYPT_PROVIDER_REF {
+ dwInterface: ::ULONG,
+ pszFunction: ::PWSTR,
+ pszProvider: ::PWSTR,
+ cProperties: ::ULONG,
+ rgpProperties: *mut PCRYPT_PROPERTY_REF,
+ pUM: PCRYPT_IMAGE_REF,
+ pKM: PCRYPT_IMAGE_REF,
+}}
+pub type PCRYPT_PROVIDER_REF = *mut CRYPT_PROVIDER_REF;
+STRUCT!{struct CRYPT_PROVIDER_REFS {
+ cProviders: ::ULONG,
+ rgpProviders: *mut PCRYPT_PROVIDER_REF,
+}}
+pub type PCRYPT_PROVIDER_REFS = *mut CRYPT_PROVIDER_REFS;
diff --git a/third_party/rust/winapi-0.2.8/src/cfg.rs b/third_party/rust/winapi-0.2.8/src/cfg.rs
new file mode 100644
index 0000000000..0720d32472
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/cfg.rs
@@ -0,0 +1,134 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! common Configuration Manager definitions for both user mode and kernel mode code
+ENUM!{enum PNP_VETO_TYPE {
+ PNP_VetoTypeUnknown,
+ PNP_VetoLegacyDevice,
+ PNP_VetoPendingClose,
+ PNP_VetoWindowsApp,
+ PNP_VetoWindowsService,
+ PNP_VetoOutstandingOpen,
+ PNP_VetoDevice,
+ PNP_VetoDriver,
+ PNP_VetoIllegalDeviceRequest,
+ PNP_VetoInsufficientPower,
+ PNP_VetoNonDisableable,
+ PNP_VetoLegacyDriver,
+ PNP_VetoInsufficientRights,
+}}
+pub type PPNP_VETO_TYPE = *mut PNP_VETO_TYPE;
+pub const CM_PROB_NOT_CONFIGURED: ::CONFIGRET = 0x00000001;
+pub const CM_PROB_DEVLOADER_FAILED: ::CONFIGRET = 0x00000002;
+pub const CM_PROB_OUT_OF_MEMORY: ::CONFIGRET = 0x00000003;
+pub const CM_PROB_ENTRY_IS_WRONG_TYPE: ::CONFIGRET = 0x00000004;
+pub const CM_PROB_LACKED_ARBITRATOR: ::CONFIGRET = 0x00000005;
+pub const CM_PROB_BOOT_CONFIG_CONFLICT: ::CONFIGRET = 0x00000006;
+pub const CM_PROB_FAILED_FILTER: ::CONFIGRET = 0x00000007;
+pub const CM_PROB_DEVLOADER_NOT_FOUND: ::CONFIGRET = 0x00000008;
+pub const CM_PROB_INVALID_DATA: ::CONFIGRET = 0x00000009;
+pub const CM_PROB_FAILED_START: ::CONFIGRET = 0x0000000A;
+pub const CM_PROB_LIAR: ::CONFIGRET = 0x0000000B;
+pub const CM_PROB_NORMAL_CONFLICT: ::CONFIGRET = 0x0000000C;
+pub const CM_PROB_NOT_VERIFIED: ::CONFIGRET = 0x0000000D;
+pub const CM_PROB_NEED_RESTART: ::CONFIGRET = 0x0000000E;
+pub const CM_PROB_REENUMERATION: ::CONFIGRET = 0x0000000F;
+pub const CM_PROB_PARTIAL_LOG_CONF: ::CONFIGRET = 0x00000010;
+pub const CM_PROB_UNKNOWN_RESOURCE: ::CONFIGRET = 0x00000011;
+pub const CM_PROB_REINSTALL: ::CONFIGRET = 0x00000012;
+pub const CM_PROB_REGISTRY: ::CONFIGRET = 0x00000013;
+pub const CM_PROB_VXDLDR: ::CONFIGRET = 0x00000014;
+pub const CM_PROB_WILL_BE_REMOVED: ::CONFIGRET = 0x00000015;
+pub const CM_PROB_DISABLED: ::CONFIGRET = 0x00000016;
+pub const CM_PROB_DEVLOADER_NOT_READY: ::CONFIGRET = 0x00000017;
+pub const CM_PROB_DEVICE_NOT_THERE: ::CONFIGRET = 0x00000018;
+pub const CM_PROB_MOVED: ::CONFIGRET = 0x00000019;
+pub const CM_PROB_TOO_EARLY: ::CONFIGRET = 0x0000001A;
+pub const CM_PROB_NO_VALID_LOG_CONF: ::CONFIGRET = 0x0000001B;
+pub const CM_PROB_FAILED_INSTALL: ::CONFIGRET = 0x0000001C;
+pub const CM_PROB_HARDWARE_DISABLED: ::CONFIGRET = 0x0000001D;
+pub const CM_PROB_CANT_SHARE_IRQ: ::CONFIGRET = 0x0000001E;
+pub const CM_PROB_FAILED_ADD: ::CONFIGRET = 0x0000001F;
+pub const CM_PROB_DISABLED_SERVICE: ::CONFIGRET = 0x00000020;
+pub const CM_PROB_TRANSLATION_FAILED: ::CONFIGRET = 0x00000021;
+pub const CM_PROB_NO_SOFTCONFIG: ::CONFIGRET = 0x00000022;
+pub const CM_PROB_BIOS_TABLE: ::CONFIGRET = 0x00000023;
+pub const CM_PROB_IRQ_TRANSLATION_FAILED: ::CONFIGRET = 0x00000024;
+pub const CM_PROB_FAILED_DRIVER_ENTRY: ::CONFIGRET = 0x00000025;
+pub const CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD: ::CONFIGRET = 0x00000026;
+pub const CM_PROB_DRIVER_FAILED_LOAD: ::CONFIGRET = 0x00000027;
+pub const CM_PROB_DRIVER_SERVICE_KEY_INVALID: ::CONFIGRET = 0x00000028;
+pub const CM_PROB_LEGACY_SERVICE_NO_DEVICES: ::CONFIGRET = 0x00000029;
+pub const CM_PROB_DUPLICATE_DEVICE: ::CONFIGRET = 0x0000002A;
+pub const CM_PROB_FAILED_POST_START: ::CONFIGRET = 0x0000002B;
+pub const CM_PROB_HALTED: ::CONFIGRET = 0x0000002C;
+pub const CM_PROB_PHANTOM: ::CONFIGRET = 0x0000002D;
+pub const CM_PROB_SYSTEM_SHUTDOWN: ::CONFIGRET = 0x0000002E;
+pub const CM_PROB_HELD_FOR_EJECT: ::CONFIGRET = 0x0000002F;
+pub const CM_PROB_DRIVER_BLOCKED: ::CONFIGRET = 0x00000030;
+pub const CM_PROB_REGISTRY_TOO_LARGE: ::CONFIGRET = 0x00000031;
+pub const CM_PROB_SETPROPERTIES_FAILED: ::CONFIGRET = 0x00000032;
+pub const CM_PROB_WAITING_ON_DEPENDENCY: ::CONFIGRET = 0x00000033;
+pub const CM_PROB_UNSIGNED_DRIVER: ::CONFIGRET = 0x00000034;
+pub const CM_PROB_USED_BY_DEBUGGER: ::CONFIGRET = 0x00000035;
+pub const NUM_CM_PROB_V1: ::CONFIGRET = 0x00000025;
+pub const NUM_CM_PROB_V2: ::CONFIGRET = 0x00000032;
+pub const NUM_CM_PROB_V3: ::CONFIGRET = 0x00000033;
+pub const NUM_CM_PROB_V4: ::CONFIGRET = 0x00000034;
+pub const NUM_CM_PROB_V5: ::CONFIGRET = 0x00000035;
+pub const NUM_CM_PROB_V6: ::CONFIGRET = 0x00000036;
+pub const DN_ROOT_ENUMERATED: ::CONFIGRET = 0x00000001;
+pub const DN_DRIVER_LOADED: ::CONFIGRET = 0x00000002;
+pub const DN_ENUM_LOADED: ::CONFIGRET = 0x00000004;
+pub const DN_STARTED: ::CONFIGRET = 0x00000008;
+pub const DN_MANUAL: ::CONFIGRET = 0x00000010;
+pub const DN_NEED_TO_ENUM: ::CONFIGRET = 0x00000020;
+pub const DN_NOT_FIRST_TIME: ::CONFIGRET = 0x00000040;
+pub const DN_HARDWARE_ENUM: ::CONFIGRET = 0x00000080;
+pub const DN_LIAR: ::CONFIGRET = 0x00000100;
+pub const DN_HAS_MARK: ::CONFIGRET = 0x00000200;
+pub const DN_HAS_PROBLEM: ::CONFIGRET = 0x00000400;
+pub const DN_FILTERED: ::CONFIGRET = 0x00000800;
+pub const DN_MOVED: ::CONFIGRET = 0x00001000;
+pub const DN_DISABLEABLE: ::CONFIGRET = 0x00002000;
+pub const DN_REMOVABLE: ::CONFIGRET = 0x00004000;
+pub const DN_PRIVATE_PROBLEM: ::CONFIGRET = 0x00008000;
+pub const DN_MF_PARENT: ::CONFIGRET = 0x00010000;
+pub const DN_MF_CHILD: ::CONFIGRET = 0x00020000;
+pub const DN_WILL_BE_REMOVED: ::CONFIGRET = 0x00040000;
+pub const DN_NOT_FIRST_TIMEE: ::CONFIGRET = 0x00080000;
+pub const DN_STOP_FREE_RES: ::CONFIGRET = 0x00100000;
+pub const DN_REBAL_CANDIDATE: ::CONFIGRET = 0x00200000;
+pub const DN_BAD_PARTIAL: ::CONFIGRET = 0x00400000;
+pub const DN_NT_ENUMERATOR: ::CONFIGRET = 0x00800000;
+pub const DN_NT_DRIVER: ::CONFIGRET = 0x01000000;
+pub const DN_NEEDS_LOCKING: ::CONFIGRET = 0x02000000;
+pub const DN_ARM_WAKEUP: ::CONFIGRET = 0x04000000;
+pub const DN_APM_ENUMERATOR: ::CONFIGRET = 0x08000000;
+pub const DN_APM_DRIVER: ::CONFIGRET = 0x10000000;
+pub const DN_SILENT_INSTALL: ::CONFIGRET = 0x20000000;
+pub const DN_NO_SHOW_IN_DM: ::CONFIGRET = 0x40000000;
+pub const DN_BOOT_LOG_PROB: ::CONFIGRET = 0x80000000;
+pub const DN_NEED_RESTART: ::CONFIGRET = DN_LIAR;
+pub const DN_DRIVER_BLOCKED: ::CONFIGRET = DN_NOT_FIRST_TIME;
+pub const DN_LEGACY_DRIVER: ::CONFIGRET = DN_MOVED;
+pub const DN_CHILD_WITH_INVALID_ID: ::CONFIGRET = DN_HAS_MARK;
+pub const DN_DEVICE_DISCONNECTED: ::CONFIGRET = DN_NEEDS_LOCKING;
+pub const DN_CHANGEABLE_FLAGS: ::CONFIGRET = DN_NOT_FIRST_TIME + DN_HARDWARE_ENUM + DN_HAS_MARK
+ + DN_DISABLEABLE + DN_REMOVABLE + DN_MF_CHILD + DN_MF_PARENT + DN_NOT_FIRST_TIMEE
+ + DN_STOP_FREE_RES + DN_REBAL_CANDIDATE + DN_NT_ENUMERATOR + DN_NT_DRIVER + DN_SILENT_INSTALL
+ + DN_NO_SHOW_IN_DM;
+pub const LCPRI_FORCECONFIG: ::PRIORITY = 0x00000000;
+pub const LCPRI_BOOTCONFIG: ::PRIORITY = 0x00000001;
+pub const LCPRI_DESIRED: ::PRIORITY = 0x00002000;
+pub const LCPRI_NORMAL: ::PRIORITY = 0x00003000;
+pub const LCPRI_LASTBESTCONFIG: ::PRIORITY = 0x00003FFF;
+pub const LCPRI_SUBOPTIMAL: ::PRIORITY = 0x00005000;
+pub const LCPRI_LASTSOFTCONFIG: ::PRIORITY = 0x00007FFF;
+pub const LCPRI_RESTART: ::PRIORITY = 0x00008000;
+pub const LCPRI_REBOOT: ::PRIORITY = 0x00009000;
+pub const LCPRI_POWEROFF: ::PRIORITY = 0x0000A000;
+pub const LCPRI_HARDRECONFIG: ::PRIORITY = 0x0000C000;
+pub const LCPRI_HARDWIRED: ::PRIORITY = 0x0000E000;
+pub const LCPRI_IMPOSSIBLE: ::PRIORITY = 0x0000F000;
+pub const LCPRI_DISABLED: ::PRIORITY = 0x0000FFFF;
+pub const MAX_LCPRI: ::PRIORITY = 0x0000FFFF;
diff --git a/third_party/rust/winapi-0.2.8/src/cfgmgr32.rs b/third_party/rust/winapi-0.2.8/src/cfgmgr32.rs
new file mode 100644
index 0000000000..0305f1bd7f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/cfgmgr32.rs
@@ -0,0 +1,758 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! user APIs for the Configuration Manager
+pub type PCVOID = *const ::VOID;
+pub const MAX_DEVICE_ID_LEN: usize = 200;
+pub const MAX_DEVNODE_ID_LEN: usize = MAX_DEVICE_ID_LEN;
+pub const MAX_GUID_STRING_LEN: usize = 39;
+pub const MAX_CLASS_NAME_LEN: usize = 32;
+pub const MAX_PROFILE_LEN: usize = 80;
+pub const MAX_CONFIG_VALUE: ::DWORD = 9999;
+pub const MAX_INSTANCE_VALUE: ::DWORD = 9999;
+pub const MAX_MEM_REGISTERS: ::DWORD = 9;
+pub const MAX_IO_PORTS: ::DWORD = 20;
+pub const MAX_IRQS: ::DWORD = 7;
+pub const MAX_DMA_CHANNELS: ::DWORD = 7;
+pub const DWORD_MAX: ::DWORD = 0xffffffff;
+pub const DWORDLONG_MAX: ::DWORDLONG = 0xffffffffffffffff;
+pub const CONFIGMG_VERSION: ::DWORD = 0x0400;
+pub type RETURN_TYPE = ::DWORD;
+pub type CONFIGRET = RETURN_TYPE;
+pub type DEVNODE = ::DWORD;
+pub type DEVINST = ::DWORD;
+pub type PDEVNODE = *mut DEVNODE;
+pub type PDEVINST = *mut DEVNODE;
+pub type DEVNODEID_A = *mut ::CHAR;
+pub type DEVINSTID_A = *mut ::CHAR;
+pub type DEVNODEID_W = *mut ::WCHAR;
+pub type DEVINSTID_W = *mut ::WCHAR;
+pub type LOG_CONF = ::DWORD_PTR;
+pub type PLOG_CONF = *mut LOG_CONF;
+pub type RES_DES = ::DWORD_PTR;
+pub type PRES_DES = *mut RES_DES;
+pub type RESOURCEID = ::ULONG;
+pub type PRESOURCEID = *mut RESOURCEID;
+pub type PRIORITY = ::ULONG;
+pub type PPRIORITY = *mut PRIORITY;
+pub type RANGE_LIST = ::DWORD_PTR;
+pub type PRANGE_LIST = *mut RANGE_LIST;
+pub type RANGE_ELEMENT = ::DWORD_PTR;
+pub type PRANGE_ELEMENT = *mut RANGE_ELEMENT;
+pub type HMACHINE = ::HANDLE;
+pub type PHMACHINE = *mut HMACHINE;
+pub type CONFLICT_LIST = ::ULONG_PTR;
+pub type PCONFLICT_LIST = *mut CONFLICT_LIST;
+STRUCT!{nodebug struct CONFLICT_DETAILS_A {
+ CD_ulSize: ::ULONG,
+ CD_ulMask: ::ULONG,
+ CD_dnDevInst: DEVINST,
+ CD_rdResDes: RES_DES,
+ CD_ulFlags: ::ULONG,
+ CD_szDescription: [::CHAR; ::MAX_PATH],
+}}
+pub type PCONFLICT_DETAILS_A = *mut CONFLICT_DETAILS_A;
+STRUCT!{nodebug struct CONFLICT_DETAILS_W {
+ CD_ulSize: ::ULONG,
+ CD_ulMask: ::ULONG,
+ CD_dnDevInst: DEVINST,
+ CD_rdResDes: RES_DES,
+ CD_ulFlags: ::ULONG,
+ CD_szDescription: [::WCHAR; ::MAX_PATH],
+}}
+pub type PCONFLICT_DETAILS_W = *mut CONFLICT_DETAILS_W;
+pub const CM_CDMASK_DEVINST: ::ULONG = 0x00000001;
+pub const CM_CDMASK_RESDES: ::ULONG = 0x00000002;
+pub const CM_CDMASK_FLAGS: ::ULONG = 0x00000004;
+pub const CM_CDMASK_DESCRIPTION: ::ULONG = 0x00000008;
+pub const CM_CDMASK_VALID: ::ULONG = 0x0000000F;
+pub const CM_CDFLAGS_DRIVER: ::ULONG = 0x00000001;
+pub const CM_CDFLAGS_ROOT_OWNED: ::ULONG = 0x00000002;
+pub const CM_CDFLAGS_RESERVED: ::ULONG = 0x00000004;
+pub type REGDISPOSITION = ::ULONG;
+pub const mMD_MemoryType: ::DWORD = 0x1;
+pub const fMD_MemoryType: ::DWORD = mMD_MemoryType;
+pub const fMD_ROM: ::DWORD = 0x0;
+pub const fMD_RAM: ::DWORD = 0x1;
+pub const mMD_32_24: ::DWORD = 0x2;
+pub const fMD_32_24: ::DWORD = mMD_32_24;
+pub const fMD_24: ::DWORD = 0x0;
+pub const fMD_32: ::DWORD = 0x2;
+pub const mMD_Prefetchable: ::DWORD = 0x4;
+pub const fMD_Prefetchable: ::DWORD = mMD_Prefetchable;
+pub const fMD_Pref: ::DWORD = mMD_Prefetchable;
+pub const fMD_PrefetchDisallowed: ::DWORD = 0x0;
+pub const fMD_PrefetchAllowed: ::DWORD = 0x4;
+pub const mMD_Readable: ::DWORD = 0x8;
+pub const fMD_Readable: ::DWORD = mMD_Readable;
+pub const fMD_ReadAllowed: ::DWORD = 0x0;
+pub const fMD_ReadDisallowed: ::DWORD = 0x8;
+pub const mMD_CombinedWrite: ::DWORD = 0x10;
+pub const fMD_CombinedWrite: ::DWORD = mMD_CombinedWrite;
+pub const fMD_CombinedWriteDisallowed: ::DWORD = 0x0;
+pub const fMD_CombinedWriteAllowed: ::DWORD = 0x10;
+pub const mMD_Cacheable: ::DWORD = 0x20;
+pub const fMD_NonCacheable: ::DWORD = 0x0;
+pub const fMD_Cacheable: ::DWORD = 0x20;
+pub const fMD_WINDOW_DECODE: ::DWORD = 0x40;
+pub const fMD_MEMORY_BAR: ::DWORD = 0x80;
+STRUCT!{struct MEM_RANGE {
+ MR_Align: ::DWORDLONG,
+ MR_nBytes: ::ULONG,
+ MR_Min: ::DWORDLONG,
+ MR_Max: ::DWORDLONG,
+ MR_Flags: ::DWORD,
+ MR_Reserved: ::DWORD,
+}}
+pub type PMEM_RANGE = *mut MEM_RANGE;
+STRUCT!{struct MEM_DES {
+ MD_Count: ::DWORD,
+ MD_Type: ::DWORD,
+ MD_Alloc_Base: ::DWORDLONG,
+ MD_Alloc_End: ::DWORDLONG,
+ MD_Flags: ::DWORD,
+ MD_Reserved: ::DWORD,
+}}
+pub type PMEM_DES = *mut MEM_DES;
+STRUCT!{struct MEM_RESOURCE {
+ MEM_Header: MEM_DES,
+ MEM_Data: [MEM_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PMEM_RESOURCE = *mut MEM_RESOURCE;
+STRUCT!{struct MEM_LARGE_RANGE {
+ MLR_Align: ::DWORDLONG,
+ MLR_nBytes: ::ULONGLONG,
+ MLR_Min: ::DWORDLONG,
+ MLR_Max: ::DWORDLONG,
+ MLR_Flags: ::DWORD,
+ MLR_Reserved: ::DWORD,
+}}
+pub type PMEM_LARGE_RANGE = *mut MEM_LARGE_RANGE;
+STRUCT!{struct MEM_LARGE_DES {
+ MLD_Count: ::DWORD,
+ MLD_Type: ::DWORD,
+ MLD_Alloc_Base: ::DWORDLONG,
+ MLD_Alloc_End: ::DWORDLONG,
+ MLD_Flags: ::DWORD,
+ MLD_Reserved: ::DWORD,
+}}
+pub type PMEM_LARGE_DES = *mut MEM_LARGE_DES;
+STRUCT!{struct MEM_LARGE_RESOURCE {
+ MEM_LARGE_Header: MEM_LARGE_DES,
+ MEM_LARGE_Data: [MEM_LARGE_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PMEM_LARGE_RESOURCE = *mut MEM_LARGE_RESOURCE;
+pub const fIOD_PortType: ::DWORD = 0x1;
+pub const fIOD_Memory: ::DWORD = 0x0;
+pub const fIOD_IO: ::DWORD = 0x1;
+pub const fIOD_DECODE: ::DWORD = 0x00fc;
+pub const fIOD_10_BIT_DECODE: ::DWORD = 0x0004;
+pub const fIOD_12_BIT_DECODE: ::DWORD = 0x0008;
+pub const fIOD_16_BIT_DECODE: ::DWORD = 0x0010;
+pub const fIOD_POSITIVE_DECODE: ::DWORD = 0x0020;
+pub const fIOD_PASSIVE_DECODE: ::DWORD = 0x0040;
+pub const fIOD_WINDOW_DECODE: ::DWORD = 0x0080;
+pub const fIOD_PORT_BAR: ::DWORD = 0x0100;
+pub const IO_ALIAS_10_BIT_DECODE: ::DWORDLONG = 0x00000004;
+pub const IO_ALIAS_12_BIT_DECODE: ::DWORDLONG = 0x00000010;
+pub const IO_ALIAS_16_BIT_DECODE: ::DWORDLONG = 0x00000000;
+pub const IO_ALIAS_POSITIVE_DECODE: ::DWORDLONG = 0x000000FF;
+STRUCT!{struct IO_RANGE {
+ IOR_Align: ::DWORDLONG,
+ IOR_nPorts: ::DWORD,
+ IOR_Min: ::DWORDLONG,
+ IOR_Max: ::DWORDLONG,
+ IOR_RangeFlags: ::DWORD,
+ IOR_Alias: ::DWORDLONG,
+}}
+pub type PIO_RANGE = *mut IO_RANGE;
+STRUCT!{struct IO_DES {
+ IOD_Count: ::DWORD,
+ IOD_Type: ::DWORD,
+ IOD_Alloc_Base: ::DWORDLONG,
+ IOD_Alloc_End: ::DWORDLONG,
+ IOD_DesFlags: ::DWORD,
+}}
+pub type PIO_DES = *mut IO_DES;
+STRUCT!{struct IO_RESOURCE {
+ IO_Header: IO_DES,
+ IO_Data: [IO_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PIO_RESOURCE = *mut IO_RESOURCE;
+pub const mDD_Width: ::ULONG = 0x3;
+pub const fDD_BYTE: ::ULONG = 0x0;
+pub const fDD_WORD: ::ULONG = 0x1;
+pub const fDD_DWORD: ::ULONG = 0x2;
+pub const fDD_BYTE_AND_WORD: ::ULONG = 0x3;
+pub const mDD_BusMaster: ::ULONG = 0x4;
+pub const fDD_NoBusMaster: ::ULONG = 0x0;
+pub const fDD_BusMaster: ::ULONG = 0x4;
+pub const mDD_Type: ::ULONG = 0x18;
+pub const fDD_TypeStandard: ::ULONG = 0x00;
+pub const fDD_TypeA: ::ULONG = 0x08;
+pub const fDD_TypeB: ::ULONG = 0x10;
+pub const fDD_TypeF: ::ULONG = 0x18;
+STRUCT!{struct DMA_RANGE {
+ DR_Min: ::ULONG,
+ DR_Max: ::ULONG,
+ DR_Flags: ::ULONG,
+}}
+pub type PDMA_RANGE = *mut DMA_RANGE;
+STRUCT!{struct DMA_DES {
+ DD_Count: ::DWORD,
+ DD_Type: ::DWORD,
+ DD_Flags: ::DWORD,
+ DD_Alloc_Chan: ::ULONG,
+}}
+pub type PDMA_DES = *mut DMA_DES;
+STRUCT!{struct DMA_RESOURCE {
+ DMA_Header: DMA_DES,
+ DMA_Data: [DMA_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PDMA_RESOURCE = *mut DMA_RESOURCE;
+pub const mIRQD_Share: ::ULONG = 0x1;
+pub const fIRQD_Exclusive: ::ULONG = 0x0;
+pub const fIRQD_Share: ::ULONG = 0x1;
+pub const fIRQD_Share_Bit: ::ULONG = 0;
+pub const fIRQD_Level_Bit: ::ULONG = 1;
+pub const mIRQD_Edge_Level: ::ULONG = 0x2;
+pub const fIRQD_Level: ::ULONG = 0x0;
+pub const fIRQD_Edge: ::ULONG = 0x2;
+STRUCT!{struct IRQ_RANGE {
+ IRQR_Min: ::ULONG,
+ IRQR_Max: ::ULONG,
+ IRQR_Flags: ::ULONG,
+}}
+pub type PIRQ_RANGE = *mut IRQ_RANGE;
+STRUCT!{struct IRQ_DES_32 {
+ IRQD_Count: ::DWORD,
+ IRQD_Type: ::DWORD,
+ IRQD_Flags: ::DWORD,
+ IRQD_Alloc_Num: ::ULONG,
+ IRQD_Affinity: ::ULONG32,
+}}
+pub type PIRQ_DES_32 = *mut IRQ_DES_32;
+STRUCT!{struct IRQ_DES_64 {
+ IRQD_Count: ::DWORD,
+ IRQD_Type: ::DWORD,
+ IRQD_Flags: ::DWORD,
+ IRQD_Alloc_Num: ::ULONG,
+ IRQD_Affinity: ::ULONG64,
+}}
+pub type PIRQ_DES_64 = *mut IRQ_DES_64;
+STRUCT!{struct IRQ_RESOURCE_32 {
+ IRQ_Header: IRQ_DES_32,
+ IRQ_Data: [IRQ_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PIRQ_RESOURCE_32 = *mut IRQ_RESOURCE_32;
+STRUCT!{struct IRQ_RESOURCE_64 {
+ IRQ_Header: IRQ_DES_64,
+ IRQ_Data: [IRQ_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PIRQ_RESOURCE_64 = *mut IRQ_RESOURCE_64;
+STRUCT!{struct DEVPRIVATE_RANGE {
+ PR_Data1: ::DWORD,
+ PR_Data2: ::DWORD,
+ PR_Data3: ::DWORD,
+}}
+pub type PDEVPRIVATE_RANGE = *mut DEVPRIVATE_RANGE;
+STRUCT!{struct DEVPRIVATE_DES {
+ PD_Count: ::DWORD,
+ PD_Type: ::DWORD,
+ PD_Data1: ::DWORD,
+ PD_Data2: ::DWORD,
+ PD_Data3: ::DWORD,
+ PD_Flags: ::DWORD,
+}}
+pub type PDEVPRIVATE_DES = *mut DEVPRIVATE_DES;
+STRUCT!{struct DEVPRIVATE_RESOURCE {
+ PRV_Header: DEVPRIVATE_DES,
+ PRV_Data: [DEVPRIVATE_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PDEVPRIVATE_RESOURCE = *mut DEVPRIVATE_RESOURCE;
+STRUCT!{struct CS_DES {
+ CSD_SignatureLength: ::DWORD,
+ CSD_LegacyDataOffset: ::DWORD,
+ CSD_LegacyDataSize: ::DWORD,
+ CSD_Flags: ::DWORD,
+ CSD_ClassGuid: ::GUID,
+ CSD_Signature: [::BYTE; ::ANYSIZE_ARRAY],
+}}
+pub type PCS_DES = *mut CS_DES;
+STRUCT!{struct CS_RESOURCE {
+ CS_Header: CS_DES,
+}}
+pub type PCS_RESOURCE = *mut CS_RESOURCE;
+pub const mPCD_IO_8_16: ::DWORD = 0x1;
+pub const fPCD_IO_8: ::DWORD = 0x0;
+pub const fPCD_IO_16: ::DWORD = 0x1;
+pub const mPCD_MEM_8_16: ::DWORD = 0x2;
+pub const fPCD_MEM_8: ::DWORD = 0x0;
+pub const fPCD_MEM_16: ::DWORD = 0x2;
+pub const mPCD_MEM_A_C: ::DWORD = 0xC;
+pub const fPCD_MEM1_A: ::DWORD = 0x4;
+pub const fPCD_MEM2_A: ::DWORD = 0x8;
+pub const fPCD_IO_ZW_8: ::DWORD = 0x10;
+pub const fPCD_IO_SRC_16: ::DWORD = 0x20;
+pub const fPCD_IO_WS_16: ::DWORD = 0x40;
+pub const mPCD_MEM_WS: ::DWORD = 0x300;
+pub const fPCD_MEM_WS_ONE: ::DWORD = 0x100;
+pub const fPCD_MEM_WS_TWO: ::DWORD = 0x200;
+pub const fPCD_MEM_WS_THREE: ::DWORD = 0x300;
+pub const fPCD_MEM_A: ::DWORD = 0x4;
+pub const fPCD_ATTRIBUTES_PER_WINDOW: ::DWORD = 0x8000;
+pub const fPCD_IO1_16: ::DWORD = 0x00010000;
+pub const fPCD_IO1_ZW_8: ::DWORD = 0x00020000;
+pub const fPCD_IO1_SRC_16: ::DWORD = 0x00040000;
+pub const fPCD_IO1_WS_16: ::DWORD = 0x00080000;
+pub const fPCD_IO2_16: ::DWORD = 0x00100000;
+pub const fPCD_IO2_ZW_8: ::DWORD = 0x00200000;
+pub const fPCD_IO2_SRC_16: ::DWORD = 0x00400000;
+pub const fPCD_IO2_WS_16: ::DWORD = 0x00800000;
+pub const mPCD_MEM1_WS: ::DWORD = 0x03000000;
+pub const fPCD_MEM1_WS_TWO: ::DWORD = 0x02000000;
+pub const fPCD_MEM1_WS_THREE: ::DWORD = 0x03000000;
+pub const fPCD_MEM1_16: ::DWORD = 0x04000000;
+pub const mPCD_MEM2_WS: ::DWORD = 0x30000000;
+pub const fPCD_MEM2_WS_ONE: ::DWORD = 0x10000000;
+pub const fPCD_MEM2_WS_TWO: ::DWORD = 0x20000000;
+pub const fPCD_MEM2_WS_THREE: ::DWORD = 0x30000000;
+pub const fPCD_MEM2_16: ::DWORD = 0x40000000;
+pub const PCD_MAX_MEMORY: usize = 2;
+pub const PCD_MAX_IO: usize = 2;
+STRUCT!{struct PCCARD_DES {
+ PCD_Count: ::DWORD,
+ PCD_Type: ::DWORD,
+ PCD_Flags: ::DWORD,
+ PCD_ConfigIndex: ::BYTE,
+ PCD_Reserved: [::BYTE; 3],
+ PCD_MemoryCardBase1: ::DWORD,
+ PCD_MemoryCardBase2: ::DWORD,
+ PCD_MemoryCardBase: [::DWORD; PCD_MAX_MEMORY],
+ PCD_MemoryFlags: [::WORD; PCD_MAX_MEMORY],
+ PCD_IoFlags: [::BYTE; PCD_MAX_IO],
+}}
+pub type PPCCARD_DES = *mut PCCARD_DES;
+STRUCT!{struct PCCARD_RESOURCE {
+ PcCard_Header: PCCARD_DES,
+}}
+pub type PPCCARD_RESOURCE = *mut PCCARD_RESOURCE;
+pub const mPMF_AUDIO_ENABLE: ::DWORD = 0x8;
+pub const fPMF_AUDIO_ENABLE: ::DWORD = 0x8;
+STRUCT!{struct MFCARD_DES {
+ PMF_Count: ::DWORD,
+ PMF_Type: ::DWORD,
+ PMF_Flags: ::DWORD,
+ PMF_ConfigOptions: ::BYTE,
+ PMF_IoResourceIndex: ::BYTE,
+ PMF_Reserved: [::BYTE; 2],
+ PMF_ConfigRegisterBase: ::DWORD,
+}}
+pub type PMFCARD_DES = *mut MFCARD_DES;
+STRUCT!{struct MFCARD_RESOURCE {
+ MfCard_Header: MFCARD_DES,
+}}
+pub type PMFCARD_RESOURCE = *mut MFCARD_RESOURCE;
+STRUCT!{struct BUSNUMBER_RANGE {
+ BUSR_Min: ::ULONG,
+ BUSR_Max: ::ULONG,
+ BUSR_nBusNumbers: ::ULONG,
+ BUSR_Flags: ::ULONG,
+}}
+pub type PBUSNUMBER_RANGE = *mut BUSNUMBER_RANGE;
+STRUCT!{struct BUSNUMBER_DES {
+ BUSD_Count: ::DWORD,
+ BUSD_Type: ::DWORD,
+ BUSD_Flags: ::DWORD,
+ BUSD_Alloc_Base: ::ULONG,
+ BUSD_Alloc_End: ::ULONG,
+}}
+pub type PBUSNUMBER_DES = *mut BUSNUMBER_DES;
+STRUCT!{struct BUSNUMBER_RESOURCE {
+ BusNumber_Header: BUSNUMBER_DES,
+ BusNumber_Data: [BUSNUMBER_RANGE; ::ANYSIZE_ARRAY],
+}}
+pub type PBUSNUMBER_RESOURCE = *mut BUSNUMBER_RESOURCE;
+STRUCT!{struct CONNECTION_DES {
+ COND_Type: ::DWORD,
+ COND_Flags: ::DWORD,
+ COND_Class: ::BYTE,
+ COND_ClassType: ::BYTE,
+ COND_Reserved1: ::BYTE,
+ COND_Reserved2: ::BYTE,
+ COND_Id: ::LARGE_INTEGER,
+}}
+pub type PCONNECTION_DES = *mut CONNECTION_DES;
+STRUCT!{struct CONNECTION_RESOURCE {
+ Connection_Header: CONNECTION_DES,
+}}
+pub type PCONNECTION_RESOURCE = *mut CONNECTION_RESOURCE;
+pub const CM_HWPI_NOT_DOCKABLE: ::DWORD = 0x00000000;
+pub const CM_HWPI_UNDOCKED: ::DWORD = 0x00000001;
+pub const CM_HWPI_DOCKED: ::DWORD = 0x00000002;
+STRUCT!{nodebug struct HWPROFILEINFO_A {
+ HWPI_ulHWProfile: ::ULONG,
+ HWPI_szFriendlyName: [::CHAR; MAX_PROFILE_LEN],
+ HWPI_dwFlags: ::DWORD,
+}}
+pub type PHWPROFILEINFO_A = *mut HWPROFILEINFO_A;
+STRUCT!{nodebug struct HWPROFILEINFO_W {
+ HWPI_ulHWProfile: ::ULONG,
+ HWPI_szFriendlyName: [::WCHAR; MAX_PROFILE_LEN],
+ HWPI_dwFlags: ::DWORD,
+}}
+pub type PHWPROFILEINFO_W = *mut HWPROFILEINFO_W;
+pub const ResType_All: RESOURCEID = 0x00000000;
+pub const ResType_None: RESOURCEID = 0x00000000;
+pub const ResType_Mem: RESOURCEID = 0x00000001;
+pub const ResType_IO: RESOURCEID = 0x00000002;
+pub const ResType_DMA: RESOURCEID = 0x00000003;
+pub const ResType_IRQ: RESOURCEID = 0x00000004;
+pub const ResType_DoNotUse: RESOURCEID = 0x00000005;
+pub const ResType_BusNumber: RESOURCEID = 0x00000006;
+pub const ResType_MemLarge: RESOURCEID = 0x00000007;
+pub const ResType_MAX: RESOURCEID = 0x00000007;
+pub const ResType_Ignored_Bit: RESOURCEID = 0x00008000;
+pub const ResType_ClassSpecific: RESOURCEID = 0x0000FFFF;
+pub const ResType_Reserved: RESOURCEID = 0x00008000;
+pub const ResType_DevicePrivate: RESOURCEID = 0x00008001;
+pub const ResType_PcCardConfig: RESOURCEID = 0x00008002;
+pub const ResType_MfCardConfig: RESOURCEID = 0x00008003;
+pub const ResType_Connection: RESOURCEID = 0x00008004;
+pub const CM_ADD_RANGE_ADDIFCONFLICT: ::ULONG = 0x00000000;
+pub const CM_ADD_RANGE_DONOTADDIFCONFLICT: ::ULONG = 0x00000001;
+pub const CM_ADD_RANGE_BITS: ::ULONG = 0x00000001;
+pub const BASIC_LOG_CONF: ::ULONG = 0x00000000;
+pub const FILTERED_LOG_CONF: ::ULONG = 0x00000001;
+pub const ALLOC_LOG_CONF: ::ULONG = 0x00000002;
+pub const BOOT_LOG_CONF: ::ULONG = 0x00000003;
+pub const FORCED_LOG_CONF: ::ULONG = 0x00000004;
+pub const OVERRIDE_LOG_CONF: ::ULONG = 0x00000005;
+pub const NUM_LOG_CONF: ::ULONG = 0x00000006;
+pub const LOG_CONF_BITS: ::ULONG = 0x00000007;
+pub const PRIORITY_EQUAL_FIRST: ::ULONG = 0x00000008;
+pub const PRIORITY_EQUAL_LAST: ::ULONG = 0x00000000;
+pub const PRIORITY_BIT: ::ULONG = 0x00000008;
+pub const RegDisposition_OpenAlways: REGDISPOSITION = 0x00000000;
+pub const RegDisposition_OpenExisting: REGDISPOSITION = 0x00000001;
+pub const RegDisposition_Bits: REGDISPOSITION = 0x00000001;
+pub const CM_ADD_ID_HARDWARE: ::ULONG = 0x00000000;
+pub const CM_ADD_ID_COMPATIBLE: ::ULONG = 0x00000001;
+pub const CM_ADD_ID_BITS: ::ULONG = 0x00000001;
+pub const CM_CREATE_DEVNODE_NORMAL: ::ULONG = 0x00000000;
+pub const CM_CREATE_DEVNODE_NO_WAIT_INSTALL: ::ULONG = 0x00000001;
+pub const CM_CREATE_DEVNODE_PHANTOM: ::ULONG = 0x00000002;
+pub const CM_CREATE_DEVNODE_GENERATE_ID: ::ULONG = 0x00000004;
+pub const CM_CREATE_DEVNODE_DO_NOT_INSTALL: ::ULONG = 0x00000008;
+pub const CM_CREATE_DEVNODE_BITS: ::ULONG = 0x0000000F;
+pub const CM_CREATE_DEVINST_NORMAL: ::ULONG = CM_CREATE_DEVNODE_NORMAL;
+pub const CM_CREATE_DEVINST_NO_WAIT_INSTALL: ::ULONG = CM_CREATE_DEVNODE_NO_WAIT_INSTALL;
+pub const CM_CREATE_DEVINST_PHANTOM: ::ULONG = CM_CREATE_DEVNODE_PHANTOM;
+pub const CM_CREATE_DEVINST_GENERATE_ID: ::ULONG = CM_CREATE_DEVNODE_GENERATE_ID;
+pub const CM_CREATE_DEVINST_DO_NOT_INSTALL: ::ULONG = CM_CREATE_DEVNODE_DO_NOT_INSTALL;
+pub const CM_CREATE_DEVINST_BITS: ::ULONG = CM_CREATE_DEVNODE_BITS;
+pub const CM_DELETE_CLASS_ONLY: ::ULONG = 0x00000000;
+pub const CM_DELETE_CLASS_SUBKEYS: ::ULONG = 0x00000001;
+pub const CM_DELETE_CLASS_INTERFACE: ::ULONG = 0x00000002;
+pub const CM_DELETE_CLASS_BITS: ::ULONG = 0x00000003;
+pub const CM_ENUMERATE_CLASSES_INSTALLER: ::ULONG = 0x00000000;
+pub const CM_ENUMERATE_CLASSES_INTERFACE: ::ULONG = 0x00000001;
+pub const CM_ENUMERATE_CLASSES_BITS: ::ULONG = 0x00000001;
+pub const CM_DETECT_NEW_PROFILE: ::ULONG = 0x00000001;
+pub const CM_DETECT_CRASHED: ::ULONG = 0x00000002;
+pub const CM_DETECT_HWPROF_FIRST_BOOT: ::ULONG = 0x00000004;
+pub const CM_DETECT_RUN: ::ULONG = 0x80000000;
+pub const CM_DETECT_BITS: ::ULONG = 0x80000007;
+pub const CM_DISABLE_POLITE: ::ULONG = 0x00000000;
+pub const CM_DISABLE_ABSOLUTE: ::ULONG = 0x00000001;
+pub const CM_DISABLE_HARDWARE: ::ULONG = 0x00000002;
+pub const CM_DISABLE_UI_NOT_OK: ::ULONG = 0x00000004;
+pub const CM_DISABLE_BITS: ::ULONG = 0x00000007;
+pub const CM_GETIDLIST_FILTER_NONE: ::ULONG = 0x00000000;
+pub const CM_GETIDLIST_FILTER_ENUMERATOR: ::ULONG = 0x00000001;
+pub const CM_GETIDLIST_FILTER_SERVICE: ::ULONG = 0x00000002;
+pub const CM_GETIDLIST_FILTER_EJECTRELATIONS: ::ULONG = 0x00000004;
+pub const CM_GETIDLIST_FILTER_REMOVALRELATIONS: ::ULONG = 0x00000008;
+pub const CM_GETIDLIST_FILTER_POWERRELATIONS: ::ULONG = 0x00000010;
+pub const CM_GETIDLIST_FILTER_BUSRELATIONS: ::ULONG = 0x00000020;
+pub const CM_GETIDLIST_DONOTGENERATE: ::ULONG = 0x10000040;
+pub const CM_GETIDLIST_FILTER_TRANSPORTRELATIONS: ::ULONG = 0x00000080;
+pub const CM_GETIDLIST_FILTER_PRESENT: ::ULONG = 0x00000100;
+pub const CM_GETIDLIST_FILTER_CLASS: ::ULONG = 0x00000200;
+pub const CM_GETIDLIST_FILTER_BITS: ::ULONG = 0x100003FF;
+pub const CM_GET_DEVICE_INTERFACE_LIST_PRESENT: ::ULONG = 0x00000000;
+pub const CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES: ::ULONG = 0x00000001;
+pub const CM_GET_DEVICE_INTERFACE_LIST_BITS: ::ULONG = 0x00000001;
+pub const CM_DRP_DEVICEDESC: ::ULONG = 0x00000001;
+pub const CM_DRP_HARDWAREID: ::ULONG = 0x00000002;
+pub const CM_DRP_COMPATIBLEIDS: ::ULONG = 0x00000003;
+pub const CM_DRP_UNUSED0: ::ULONG = 0x00000004;
+pub const CM_DRP_SERVICE: ::ULONG = 0x00000005;
+pub const CM_DRP_UNUSED1: ::ULONG = 0x00000006;
+pub const CM_DRP_UNUSED2: ::ULONG = 0x00000007;
+pub const CM_DRP_CLASS: ::ULONG = 0x00000008;
+pub const CM_DRP_CLASSGUID: ::ULONG = 0x00000009;
+pub const CM_DRP_DRIVER: ::ULONG = 0x0000000A;
+pub const CM_DRP_CONFIGFLAGS: ::ULONG = 0x0000000B;
+pub const CM_DRP_MFG: ::ULONG = 0x0000000C;
+pub const CM_DRP_FRIENDLYNAME: ::ULONG = 0x0000000D;
+pub const CM_DRP_LOCATION_INFORMATION: ::ULONG = 0x0000000E;
+pub const CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME: ::ULONG = 0x0000000F;
+pub const CM_DRP_CAPABILITIES: ::ULONG = 0x00000010;
+pub const CM_DRP_UI_NUMBER: ::ULONG = 0x00000011;
+pub const CM_DRP_UPPERFILTERS: ::ULONG = 0x00000012;
+pub const CM_CRP_UPPERFILTERS: ::ULONG = CM_DRP_UPPERFILTERS;
+pub const CM_DRP_LOWERFILTERS: ::ULONG = 0x00000013;
+pub const CM_CRP_LOWERFILTERS: ::ULONG = CM_DRP_LOWERFILTERS;
+pub const CM_DRP_BUSTYPEGUID: ::ULONG = 0x00000014;
+pub const CM_DRP_LEGACYBUSTYPE: ::ULONG = 0x00000015;
+pub const CM_DRP_BUSNUMBER: ::ULONG = 0x00000016;
+pub const CM_DRP_ENUMERATOR_NAME: ::ULONG = 0x00000017;
+pub const CM_DRP_SECURITY: ::ULONG = 0x00000018;
+pub const CM_CRP_SECURITY: ::ULONG = CM_DRP_SECURITY;
+pub const CM_DRP_SECURITY_SDS: ::ULONG = 0x00000019;
+pub const CM_CRP_SECURITY_SDS: ::ULONG = CM_DRP_SECURITY_SDS;
+pub const CM_DRP_DEVTYPE: ::ULONG = 0x0000001A;
+pub const CM_CRP_DEVTYPE: ::ULONG = CM_DRP_DEVTYPE;
+pub const CM_DRP_EXCLUSIVE: ::ULONG = 0x0000001B;
+pub const CM_CRP_EXCLUSIVE: ::ULONG = CM_DRP_EXCLUSIVE;
+pub const CM_DRP_CHARACTERISTICS: ::ULONG = 0x0000001C;
+pub const CM_CRP_CHARACTERISTICS: ::ULONG = CM_DRP_CHARACTERISTICS;
+pub const CM_DRP_ADDRESS: ::ULONG = 0x0000001D;
+pub const CM_DRP_UI_NUMBER_DESC_FORMAT: ::ULONG = 0x0000001E;
+pub const CM_DRP_DEVICE_POWER_DATA: ::ULONG = 0x0000001F;
+pub const CM_DRP_REMOVAL_POLICY: ::ULONG = 0x00000020;
+pub const CM_DRP_REMOVAL_POLICY_HW_DEFAULT: ::ULONG = 0x00000021;
+pub const CM_DRP_REMOVAL_POLICY_OVERRIDE: ::ULONG = 0x00000022;
+pub const CM_DRP_INSTALL_STATE: ::ULONG = 0x00000023;
+pub const CM_DRP_LOCATION_PATHS: ::ULONG = 0x00000024;
+pub const CM_DRP_BASE_CONTAINERID: ::ULONG = 0x00000025;
+pub const CM_DRP_MIN: ::ULONG = 0x00000001;
+pub const CM_CRP_MIN: ::ULONG = CM_DRP_MIN;
+pub const CM_DRP_MAX: ::ULONG = 0x00000025;
+pub const CM_CRP_MAX: ::ULONG = CM_DRP_MAX;
+pub const CM_DEVCAP_LOCKSUPPORTED: ::ULONG = 0x00000001;
+pub const CM_DEVCAP_EJECTSUPPORTED: ::ULONG = 0x00000002;
+pub const CM_DEVCAP_REMOVABLE: ::ULONG = 0x00000004;
+pub const CM_DEVCAP_DOCKDEVICE: ::ULONG = 0x00000008;
+pub const CM_DEVCAP_UNIQUEID: ::ULONG = 0x00000010;
+pub const CM_DEVCAP_SILENTINSTALL: ::ULONG = 0x00000020;
+pub const CM_DEVCAP_RAWDEVICEOK: ::ULONG = 0x00000040;
+pub const CM_DEVCAP_SURPRISEREMOVALOK: ::ULONG = 0x00000080;
+pub const CM_DEVCAP_HARDWAREDISABLED: ::ULONG = 0x00000100;
+pub const CM_DEVCAP_NONDYNAMIC: ::ULONG = 0x00000200;
+pub const CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL: ::ULONG = 1;
+pub const CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL: ::ULONG = 2;
+pub const CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL: ::ULONG = 3;
+pub const CM_INSTALL_STATE_INSTALLED: ::ULONG = 0;
+pub const CM_INSTALL_STATE_NEEDS_REINSTALL: ::ULONG = 1;
+pub const CM_INSTALL_STATE_FAILED_INSTALL: ::ULONG = 2;
+pub const CM_INSTALL_STATE_FINISH_INSTALL: ::ULONG = 3;
+pub const CM_LOCATE_DEVNODE_NORMAL: ::ULONG = 0x00000000;
+pub const CM_LOCATE_DEVNODE_PHANTOM: ::ULONG = 0x00000001;
+pub const CM_LOCATE_DEVNODE_CANCELREMOVE: ::ULONG = 0x00000002;
+pub const CM_LOCATE_DEVNODE_NOVALIDATION: ::ULONG = 0x00000004;
+pub const CM_LOCATE_DEVNODE_BITS: ::ULONG = 0x00000007;
+pub const CM_LOCATE_DEVINST_NORMAL: ::ULONG = CM_LOCATE_DEVNODE_NORMAL;
+pub const CM_LOCATE_DEVINST_PHANTOM: ::ULONG = CM_LOCATE_DEVNODE_PHANTOM;
+pub const CM_LOCATE_DEVINST_CANCELREMOVE: ::ULONG = CM_LOCATE_DEVNODE_CANCELREMOVE;
+pub const CM_LOCATE_DEVINST_NOVALIDATION: ::ULONG = CM_LOCATE_DEVNODE_NOVALIDATION;
+pub const CM_LOCATE_DEVINST_BITS: ::ULONG = CM_LOCATE_DEVNODE_BITS;
+pub const CM_OPEN_CLASS_KEY_INSTALLER: ::ULONG = 0x00000000;
+pub const CM_OPEN_CLASS_KEY_INTERFACE: ::ULONG = 0x00000001;
+pub const CM_OPEN_CLASS_KEY_BITS: ::ULONG = 0x00000001;
+pub const CM_REMOVE_UI_OK: ::ULONG = 0x00000000;
+pub const CM_REMOVE_UI_NOT_OK: ::ULONG = 0x00000001;
+pub const CM_REMOVE_NO_RESTART: ::ULONG = 0x00000002;
+pub const CM_REMOVE_BITS: ::ULONG = 0x00000003;
+pub const CM_QUERY_REMOVE_UI_OK: ::ULONG = CM_REMOVE_UI_OK;
+pub const CM_QUERY_REMOVE_UI_NOT_OK: ::ULONG = CM_REMOVE_UI_NOT_OK;
+pub const CM_QUERY_REMOVE_BITS: ::ULONG = CM_QUERY_REMOVE_UI_OK | CM_QUERY_REMOVE_UI_NOT_OK;
+pub const CM_REENUMERATE_NORMAL: ::ULONG = 0x00000000;
+pub const CM_REENUMERATE_SYNCHRONOUS: ::ULONG = 0x00000001;
+pub const CM_REENUMERATE_RETRY_INSTALLATION: ::ULONG = 0x00000002;
+pub const CM_REENUMERATE_ASYNCHRONOUS: ::ULONG = 0x00000004;
+pub const CM_REENUMERATE_BITS: ::ULONG = 0x00000007;
+pub const CM_REGISTER_DEVICE_DRIVER_STATIC: ::ULONG = 0x00000000;
+pub const CM_REGISTER_DEVICE_DRIVER_DISABLEABLE: ::ULONG = 0x00000001;
+pub const CM_REGISTER_DEVICE_DRIVER_REMOVABLE: ::ULONG = 0x00000002;
+pub const CM_REGISTER_DEVICE_DRIVER_BITS: ::ULONG = 0x00000003;
+pub const CM_REGISTRY_HARDWARE: ::ULONG = 0x00000000;
+pub const CM_REGISTRY_SOFTWARE: ::ULONG = 0x00000001;
+pub const CM_REGISTRY_USER: ::ULONG = 0x00000100;
+pub const CM_REGISTRY_CONFIG: ::ULONG = 0x00000200;
+pub const CM_REGISTRY_BITS: ::ULONG = 0x00000301;
+pub const CM_SET_DEVNODE_PROBLEM_NORMAL: ::ULONG = 0x00000000;
+pub const CM_SET_DEVNODE_PROBLEM_OVERRIDE: ::ULONG = 0x00000001;
+pub const CM_SET_DEVNODE_PROBLEM_BITS: ::ULONG = 0x00000001;
+pub const CM_SET_DEVINST_PROBLEM_NORMAL: ::ULONG = CM_SET_DEVNODE_PROBLEM_NORMAL;
+pub const CM_SET_DEVINST_PROBLEM_OVERRIDE: ::ULONG = CM_SET_DEVNODE_PROBLEM_OVERRIDE;
+pub const CM_SET_DEVINST_PROBLEM_BITS: ::ULONG = CM_SET_DEVNODE_PROBLEM_BITS;
+pub const CM_SET_HW_PROF_FLAGS_UI_NOT_OK: ::ULONG = 0x00000001;
+pub const CM_SET_HW_PROF_FLAGS_BITS: ::ULONG = 0x00000001;
+pub const CM_SETUP_DEVNODE_READY: ::ULONG = 0x00000000;
+pub const CM_SETUP_DEVINST_READY: ::ULONG = CM_SETUP_DEVNODE_READY;
+pub const CM_SETUP_DOWNLOAD: ::ULONG = 0x00000001;
+pub const CM_SETUP_WRITE_LOG_CONFS: ::ULONG = 0x00000002;
+pub const CM_SETUP_PROP_CHANGE: ::ULONG = 0x00000003;
+pub const CM_SETUP_DEVNODE_RESET: ::ULONG = 0x00000004;
+pub const CM_SETUP_DEVINST_RESET: ::ULONG = CM_SETUP_DEVNODE_RESET;
+pub const CM_SETUP_DEVNODE_CONFIG: ::ULONG = 0x00000005;
+pub const CM_SETUP_DEVINST_CONFIG: ::ULONG = CM_SETUP_DEVNODE_CONFIG;
+pub const CM_SETUP_DEVNODE_CONFIG_CLASS: ::ULONG = 0x00000006;
+pub const CM_SETUP_DEVINST_CONFIG_CLASS: ::ULONG = CM_SETUP_DEVNODE_CONFIG_CLASS;
+pub const CM_SETUP_DEVNODE_CONFIG_EXTENSIONS: ::ULONG = 0x00000007;
+pub const CM_SETUP_DEVINST_CONFIG_EXTENSIONS: ::ULONG = CM_SETUP_DEVNODE_CONFIG_EXTENSIONS;
+pub const CM_SETUP_BITS: ::ULONG = 0x00000007;
+pub const CM_QUERY_ARBITRATOR_RAW: ::ULONG = 0x00000000;
+pub const CM_QUERY_ARBITRATOR_TRANSLATED: ::ULONG = 0x00000001;
+pub const CM_QUERY_ARBITRATOR_BITS: ::ULONG = 0x00000001;
+pub const CM_CUSTOMDEVPROP_MERGE_MULTISZ: ::ULONG = 0x00000001;
+pub const CM_CUSTOMDEVPROP_BITS: ::ULONG = 0x00000001;
+pub const CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE: ::ULONG = 0x1;
+pub const CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME: ::ULONG = 0x2;
+pub const CM_CLASS_PROPERTY_INSTALLER: ::ULONG = 0x00000000;
+pub const CM_CLASS_PROPERTY_INTERFACE: ::ULONG = 0x00000001;
+pub const CM_CLASS_PROPERTY_BITS: ::ULONG = 0x00000001;
+DECLARE_HANDLE!(HCMNOTIFICATION, HCMNOTIFICATION__);
+pub type PHCMNOTIFICATION = *mut HCMNOTIFICATION;
+pub const CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES: ::ULONG = 0x00000001;
+pub const CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES: ::ULONG = 0x00000002;
+pub const CM_NOTIFY_FILTER_VALID_FLAGS: ::ULONG = CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES
+ | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES;
+ENUM!{enum CM_NOTIFY_FILTER_TYPE {
+ CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0,
+ CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE,
+ CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE,
+ CM_NOTIFY_FILTER_TYPE_MAX,
+}}
+pub type PCM_NOTIFY_FILTER_TYPE = *mut CM_NOTIFY_FILTER_TYPE;
+STRUCT!{struct CM_NOTIFY_FILTER_DeviceInterface {
+ ClassGuid: ::GUID,
+}}
+STRUCT!{struct CM_NOTIFY_FILTER_DeviceHandle {
+ hTarget: ::HANDLE,
+}}
+STRUCT!{nodebug struct CM_NOTIFY_FILTER_DeviceInstance {
+ InstanceId: [::WCHAR; MAX_DEVICE_ID_LEN],
+}}
+STRUCT!{nodebug struct CM_NOTIFY_FILTER {
+ cbSize: ::DWORD,
+ Flags: ::DWORD,
+ FilterType: CM_NOTIFY_FILTER_TYPE,
+ Reserved: ::DWORD,
+ u: [::BYTE; 400],
+}}
+UNION!(CM_NOTIFY_FILTER, u, DeviceInterface, DeviceInterface_mut, CM_NOTIFY_FILTER_DeviceInterface);
+UNION!(CM_NOTIFY_FILTER, u, DeviceHandle, DeviceHandle_mut, CM_NOTIFY_FILTER_DeviceHandle);
+UNION!(CM_NOTIFY_FILTER, u, DeviceInstance, DeviceInstance_mut, CM_NOTIFY_FILTER_DeviceInstance);
+pub type PCM_NOTIFY_FILTER = *mut CM_NOTIFY_FILTER;
+ENUM!{enum CM_NOTIFY_ACTION {
+ CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
+ CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
+ CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
+ CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
+ CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
+ CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
+ CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
+ CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
+ CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
+ CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
+ CM_NOTIFY_ACTION_MAX,
+}}
+pub type PCM_NOTIFY_ACTION = *mut CM_NOTIFY_ACTION;
+STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInterface {
+ ClassGuid: ::GUID,
+ SymbolicLink: [::WCHAR; ::ANYSIZE_ARRAY],
+}}
+STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceHandle {
+ EventGuid: ::GUID,
+ NameOffset: ::LONG,
+ DataSize: ::DWORD,
+ Data: [::BYTE; ::ANYSIZE_ARRAY],
+}}
+STRUCT!{struct CM_NOTIFY_EVENT_DATA_DeviceInstance {
+ InstanceId: [::WCHAR; ::ANYSIZE_ARRAY],
+}}
+STRUCT!{struct CM_NOTIFY_EVENT_DATA {
+ FilterType: CM_NOTIFY_FILTER_TYPE,
+ Reserved: ::DWORD,
+ u: [::BYTE; 25],
+}}
+UNION!(
+ CM_NOTIFY_EVENT_DATA, u, DeviceInterface, DeviceInterface_mut,
+ CM_NOTIFY_EVENT_DATA_DeviceInterface
+);
+UNION!(CM_NOTIFY_EVENT_DATA, u, DeviceHandle, DeviceHandle_mut, CM_NOTIFY_EVENT_DATA_DeviceHandle);
+UNION!(
+ CM_NOTIFY_EVENT_DATA, u, DeviceInstance, DeviceInstance_mut, CM_NOTIFY_EVENT_DATA_DeviceInstance
+);
+pub type PCM_NOTIFY_EVENT_DATA = *mut CM_NOTIFY_EVENT_DATA;
+pub type PCM_NOTIFY_CALLBACK = Option<unsafe extern "system" fn(
+ hNotify: HCMNOTIFICATION, Context: ::PVOID, Action: CM_NOTIFY_ACTION,
+ EventData: PCM_NOTIFY_EVENT_DATA, EventDataSize: ::DWORD,
+) -> ::DWORD>;
+pub const CR_SUCCESS: CONFIGRET = 0x00000000;
+pub const CR_DEFAULT: CONFIGRET = 0x00000001;
+pub const CR_OUT_OF_MEMORY: CONFIGRET = 0x00000002;
+pub const CR_INVALID_POINTER: CONFIGRET = 0x00000003;
+pub const CR_INVALID_FLAG: CONFIGRET = 0x00000004;
+pub const CR_INVALID_DEVNODE: CONFIGRET = 0x00000005;
+pub const CR_INVALID_DEVINST: CONFIGRET = CR_INVALID_DEVNODE;
+pub const CR_INVALID_RES_DES: CONFIGRET = 0x00000006;
+pub const CR_INVALID_LOG_CONF: CONFIGRET = 0x00000007;
+pub const CR_INVALID_ARBITRATOR: CONFIGRET = 0x00000008;
+pub const CR_INVALID_NODELIST: CONFIGRET = 0x00000009;
+pub const CR_DEVNODE_HAS_REQS: CONFIGRET = 0x0000000A;
+pub const CR_DEVINST_HAS_REQS: CONFIGRET = CR_DEVNODE_HAS_REQS;
+pub const CR_INVALID_RESOURCEID: CONFIGRET = 0x0000000B;
+pub const CR_DLVXD_NOT_FOUND: CONFIGRET = 0x0000000C;
+pub const CR_NO_SUCH_DEVNODE: CONFIGRET = 0x0000000D;
+pub const CR_NO_SUCH_DEVINST: CONFIGRET = CR_NO_SUCH_DEVNODE;
+pub const CR_NO_MORE_LOG_CONF: CONFIGRET = 0x0000000E;
+pub const CR_NO_MORE_RES_DES: CONFIGRET = 0x0000000F;
+pub const CR_ALREADY_SUCH_DEVNODE: CONFIGRET = 0x00000010;
+pub const CR_ALREADY_SUCH_DEVINST: CONFIGRET = CR_ALREADY_SUCH_DEVNODE;
+pub const CR_INVALID_RANGE_LIST: CONFIGRET = 0x00000011;
+pub const CR_INVALID_RANGE: CONFIGRET = 0x00000012;
+pub const CR_FAILURE: CONFIGRET = 0x00000013;
+pub const CR_NO_SUCH_LOGICAL_DEV: CONFIGRET = 0x00000014;
+pub const CR_CREATE_BLOCKED: CONFIGRET = 0x00000015;
+pub const CR_NOT_SYSTEM_VM: CONFIGRET = 0x00000016;
+pub const CR_REMOVE_VETOED: CONFIGRET = 0x00000017;
+pub const CR_APM_VETOED: CONFIGRET = 0x00000018;
+pub const CR_INVALID_LOAD_TYPE: CONFIGRET = 0x00000019;
+pub const CR_BUFFER_SMALL: CONFIGRET = 0x0000001A;
+pub const CR_NO_ARBITRATOR: CONFIGRET = 0x0000001B;
+pub const CR_NO_REGISTRY_HANDLE: CONFIGRET = 0x0000001C;
+pub const CR_REGISTRY_ERROR: CONFIGRET = 0x0000001D;
+pub const CR_INVALID_DEVICE_ID: CONFIGRET = 0x0000001E;
+pub const CR_INVALID_DATA: CONFIGRET = 0x0000001F;
+pub const CR_INVALID_API: CONFIGRET = 0x00000020;
+pub const CR_DEVLOADER_NOT_READY: CONFIGRET = 0x00000021;
+pub const CR_NEED_RESTART: CONFIGRET = 0x00000022;
+pub const CR_NO_MORE_HW_PROFILES: CONFIGRET = 0x00000023;
+pub const CR_DEVICE_NOT_THERE: CONFIGRET = 0x00000024;
+pub const CR_NO_SUCH_VALUE: CONFIGRET = 0x00000025;
+pub const CR_WRONG_TYPE: CONFIGRET = 0x00000026;
+pub const CR_INVALID_PRIORITY: CONFIGRET = 0x00000027;
+pub const CR_NOT_DISABLEABLE: CONFIGRET = 0x00000028;
+pub const CR_FREE_RESOURCES: CONFIGRET = 0x00000029;
+pub const CR_QUERY_VETOED: CONFIGRET = 0x0000002A;
+pub const CR_CANT_SHARE_IRQ: CONFIGRET = 0x0000002B;
+pub const CR_NO_DEPENDENT: CONFIGRET = 0x0000002C;
+pub const CR_SAME_RESOURCES: CONFIGRET = 0x0000002D;
+pub const CR_NO_SUCH_REGISTRY_KEY: CONFIGRET = 0x0000002E;
+pub const CR_INVALID_MACHINENAME: CONFIGRET = 0x0000002F;
+pub const CR_REMOTE_COMM_FAILURE: CONFIGRET = 0x00000030;
+pub const CR_MACHINE_UNAVAILABLE: CONFIGRET = 0x00000031;
+pub const CR_NO_CM_SERVICES: CONFIGRET = 0x00000032;
+pub const CR_ACCESS_DENIED: CONFIGRET = 0x00000033;
+pub const CR_CALL_NOT_IMPLEMENTED: CONFIGRET = 0x00000034;
+pub const CR_INVALID_PROPERTY: CONFIGRET = 0x00000035;
+pub const CR_DEVICE_INTERFACE_ACTIVE: CONFIGRET = 0x00000036;
+pub const CR_NO_SUCH_DEVICE_INTERFACE: CONFIGRET = 0x00000037;
+pub const CR_INVALID_REFERENCE_STRING: CONFIGRET = 0x00000038;
+pub const CR_INVALID_CONFLICT_LIST: CONFIGRET = 0x00000039;
+pub const CR_INVALID_INDEX: CONFIGRET = 0x0000003A;
+pub const CR_INVALID_STRUCTURE_SIZE: CONFIGRET = 0x0000003B;
+pub const NUM_CR_RESULTS: CONFIGRET = 0x0000003C;
diff --git a/third_party/rust/winapi-0.2.8/src/combaseapi.rs b/third_party/rust/winapi-0.2.8/src/combaseapi.rs
new file mode 100644
index 0000000000..9233bc58a0
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/combaseapi.rs
@@ -0,0 +1,17 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub const CLSCTX_INPROC_SERVER: DWORD = 0x1;
+pub const CLSCTX_INPROC_HANDLER: DWORD = 0x2;
+pub const CLSCTX_LOCAL_SERVER: DWORD = 0x4;
+pub const CLSCTX_REMOTE_SERVER: DWORD = 0x10;
+pub const CLSCTX_SERVER: DWORD = CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER |
+ CLSCTX_REMOTE_SERVER;
+pub const CLSCTX_ALL: DWORD = CLSCTX_INPROC_HANDLER | CLSCTX_SERVER;
+STRUCT!{struct ServerInformation {
+ dwServerPid: DWORD,
+ dwServerTid: DWORD,
+ ui64ServerAddress: UINT64,
+}}
+pub type PServerInformation = *mut ServerInformation;
+DECLARE_HANDLE!(CO_MTA_USAGE_COOKIE, CO_MTA_USAGE_COOKIE__);
diff --git a/third_party/rust/winapi-0.2.8/src/commctrl.rs b/third_party/rust/winapi-0.2.8/src/commctrl.rs
new file mode 100644
index 0000000000..88513e1170
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/commctrl.rs
@@ -0,0 +1,3578 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//138
+STRUCT!{struct INITCOMMONCONTROLSEX {
+ dwSize: ::DWORD,
+ dwICC: ::DWORD,
+}}
+pub type LPINITCOMMONCONTROLSEX = *mut INITCOMMONCONTROLSEX;
+pub const ICC_LISTVIEW_CLASSES: ::DWORD = 0x1;
+pub const ICC_TREEVIEW_CLASSES: ::DWORD = 0x2;
+pub const ICC_BAR_CLASSES: ::DWORD = 0x4;
+pub const ICC_TAB_CLASSES: ::DWORD = 0x8;
+pub const ICC_UPDOWN_CLASS: ::DWORD = 0x10;
+pub const ICC_PROGRESS_CLASS: ::DWORD = 0x20;
+pub const ICC_HOTKEY_CLASS: ::DWORD = 0x40;
+pub const ICC_ANIMATE_CLASS: ::DWORD = 0x80;
+pub const ICC_WIN95_CLASSES: ::DWORD = 0xFF;
+pub const ICC_DATE_CLASSES: ::DWORD = 0x100;
+pub const ICC_USEREX_CLASSES: ::DWORD = 0x200;
+pub const ICC_COOL_CLASSES: ::DWORD = 0x400;
+pub const ICC_INTERNET_CLASSES: ::DWORD = 0x800;
+pub const ICC_PAGESCROLLER_CLASS: ::DWORD = 0x1000;
+pub const ICC_NATIVEFNTCTL_CLASS: ::DWORD = 0x2000;
+pub const ICC_STANDARD_CLASSES: ::DWORD = 0x4000;
+pub const ICC_LINK_CLASS: ::DWORD = 0x8000;
+pub const ODT_HEADER: ::UINT = 100;
+pub const ODT_TAB: ::UINT = 101;
+pub const ODT_LISTVIEW: ::UINT = 102;
+pub const LVM_FIRST: ::UINT = 0x1000;
+pub const TV_FIRST: ::UINT = 0x1100;
+pub const HDM_FIRST: ::UINT = 0x1200;
+pub const TCM_FIRST: ::UINT = 0x1300;
+pub const PGM_FIRST: ::UINT = 0x1400;
+pub const ECM_FIRST: ::UINT = 0x1500;
+pub const BCM_FIRST: ::UINT = 0x1600;
+pub const CBM_FIRST: ::UINT = 0x1700;
+pub const CCM_FIRST: ::UINT = 0x2000;
+pub const CCM_LAST: ::UINT = CCM_FIRST + 0x200;
+pub const CCM_SETBKCOLOR: ::UINT = CCM_FIRST + 1;
+STRUCT!{struct COLORSCHEME {
+ dwSize: ::DWORD,
+ clrBtnHighlight: ::COLORREF,
+ clrBtnShadow: ::COLORREF,
+}}
+pub type LPCOLORSCHEME = *mut COLORSCHEME;
+pub const CCM_SETCOLORSCHEME: ::UINT = CCM_FIRST + 2;
+pub const CCM_GETCOLORSCHEME: ::UINT = CCM_FIRST + 3;
+pub const CCM_GETDROPTARGET: ::UINT = CCM_FIRST + 4;
+pub const CCM_SETUNICODEFORMAT: ::UINT = CCM_FIRST + 5;
+pub const CCM_GETUNICODEFORMAT: ::UINT = CCM_FIRST + 6;
+pub const CCM_SETVERSION: ::UINT = CCM_FIRST + 7;
+pub const CCM_GETVERSION: ::UINT = CCM_FIRST + 8;
+pub const CCM_SETNOTIFYWINDOW: ::UINT = CCM_FIRST + 9;
+pub const CCM_SETWINDOWTHEME: ::UINT = CCM_FIRST + 0xb;
+pub const CCM_DPISCALE: ::UINT = CCM_FIRST + 0xc;
+pub const INFOTIPSIZE: ::c_int = 1024;
+pub const NM_OUTOFMEMORY: ::UINT = (NM_FIRST as ::INT - 1) as ::UINT;
+pub const NM_CLICK: ::UINT = (NM_FIRST as ::INT - 2) as ::UINT;
+pub const NM_DBLCLK: ::UINT = (NM_FIRST as ::INT - 3) as ::UINT;
+pub const NM_RETURN: ::UINT = (NM_FIRST as ::INT - 4) as ::UINT;
+pub const NM_RCLICK: ::UINT = (NM_FIRST as ::INT - 5) as ::UINT;
+pub const NM_RDBLCLK: ::UINT = (NM_FIRST as ::INT - 6) as ::UINT;
+pub const NM_SETFOCUS: ::UINT = (NM_FIRST as ::INT - 7) as ::UINT;
+pub const NM_KILLFOCUS: ::UINT = (NM_FIRST as ::INT - 8) as ::UINT;
+pub const NM_CUSTOMDRAW: ::UINT = (NM_FIRST as ::INT - 12) as ::UINT;
+pub const NM_HOVER: ::UINT = (NM_FIRST as ::INT - 13) as ::UINT;
+pub const NM_NCHITTEST: ::UINT = (NM_FIRST as ::INT - 14) as ::UINT;
+pub const NM_KEYDOWN: ::UINT = (NM_FIRST as ::INT - 15) as ::UINT;
+pub const NM_RELEASEDCAPTURE: ::UINT = (NM_FIRST as ::INT - 16) as ::UINT;
+pub const NM_SETCURSOR: ::UINT = (NM_FIRST as ::INT - 17) as ::UINT;
+pub const NM_CHAR: ::UINT = (NM_FIRST as ::INT - 18) as ::UINT;
+pub const NM_TOOLTIPSCREATED: ::UINT = (NM_FIRST as ::INT - 19) as ::UINT;
+pub const NM_LDOWN: ::UINT = (NM_FIRST as ::INT - 20) as ::UINT;
+pub const NM_RDOWN: ::UINT = (NM_FIRST as ::INT - 21) as ::UINT;
+pub const NM_THEMECHANGED: ::UINT = (NM_FIRST as ::INT - 22) as ::UINT;
+pub const NM_FONTCHANGED: ::UINT = (NM_FIRST as ::INT - 23) as ::UINT;
+pub const NM_CUSTOMTEXT: ::UINT = (NM_FIRST as ::INT - 24) as ::UINT;
+pub const NM_TVSTATEIMAGECHANGING: ::UINT = (NM_FIRST as ::INT - 24) as ::UINT;
+STRUCT!{struct NMTOOLTIPSCREATED {
+ hdr: ::NMHDR,
+ hwndToolTips: ::HWND,
+}}
+pub type LPNMTOOLTIPSCREATED = *mut NMTOOLTIPSCREATED;
+STRUCT!{struct NMMOUSE {
+ hdr : ::NMHDR,
+ dwItemSpec: ::DWORD_PTR,
+ dwItemData: ::DWORD_PTR,
+ pt: ::POINT,
+ dwHitInfo: ::LPARAM,
+}}
+pub type LPNMMOUSE = *mut NMMOUSE;
+pub type NMCLICK = NMMOUSE;
+pub type LPNMCLICK = LPNMMOUSE;
+STRUCT!{struct NMOBJECTNOTIFY {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ piid: *const ::IID,
+ pObject: *mut ::c_void,
+ hResult: ::HRESULT,
+ dwFlags: ::DWORD,
+}}
+pub type LPNMOBJECTNOTIFY = *mut NMOBJECTNOTIFY;
+STRUCT!{struct NMKEY {
+ hdr: ::NMHDR,
+ nVKey: ::UINT,
+ uFlags: ::UINT,
+}}
+pub type LPNMKEY = *mut NMKEY;
+STRUCT!{struct NMCHAR {
+ hdr: ::NMHDR,
+ ch: ::UINT,
+ dwItemPrev: ::DWORD,
+ dwItemNext: ::DWORD,
+}}
+pub type LPNMCHAR = *mut NMCHAR;
+STRUCT!{struct NMCUSTOMTEXT {
+ hdr: ::NMHDR,
+ hDC: ::HDC,
+ lpString: ::LPCWSTR,
+ nCount: ::c_int,
+ lpRect: ::LPRECT,
+ uFormat: ::UINT,
+ fLink: ::BOOL,
+}}
+pub type LPNMCUSTOMTEXT = *mut NMCUSTOMTEXT;
+pub const NM_FIRST: ::UINT = 0;
+pub const NM_LAST: ::UINT = -99i32 as ::UINT;
+pub const LVN_FIRST: ::UINT = -100i32 as ::UINT;
+pub const LVN_LAST: ::UINT = -199i32 as ::UINT;
+pub const HDN_FIRST: ::UINT = -300i32 as ::UINT;
+pub const HDN_LAST: ::UINT = -399i32 as ::UINT;
+pub const TVN_FIRST: ::UINT = -400i32 as ::UINT;
+pub const TVN_LAST: ::UINT = -499i32 as ::UINT;
+pub const TTN_FIRST: ::UINT = -520i32 as ::UINT;
+pub const TTN_LAST: ::UINT = -549i32 as ::UINT;
+pub const TCN_FIRST: ::UINT = -550i32 as ::UINT;
+pub const TCN_LAST: ::UINT = -580i32 as ::UINT;
+// pub const CDN_FIRST: ::UINT = 0 - 601;
+// pub const CDN_LAST: ::UINT = 0 - 699;
+pub const TBN_FIRST: ::UINT = -700i32 as ::UINT;
+pub const TBN_LAST: ::UINT = -720i32 as ::UINT;
+pub const UDN_FIRST: ::UINT = -721i32 as ::UINT;
+pub const UDN_LAST: ::UINT = -729i32 as ::UINT;
+pub const DTN_FIRST: ::UINT = -740i32 as ::UINT;
+pub const DTN_LAST: ::UINT = -745i32 as ::UINT;
+pub const MCN_FIRST: ::UINT = -746i32 as ::UINT;
+pub const MCN_LAST: ::UINT = -752i32 as ::UINT;
+pub const DTN_FIRST2: ::UINT = -753i32 as ::UINT;
+pub const DTN_LAST2: ::UINT = -799i32 as ::UINT;
+pub const CBEN_FIRST: ::UINT = -800i32 as ::UINT;
+pub const CBEN_LAST: ::UINT = -830i32 as ::UINT;
+pub const RBN_FIRST: ::UINT = -831i32 as ::UINT;
+pub const RBN_LAST: ::UINT = -859i32 as ::UINT;
+pub const IPN_FIRST: ::UINT = -860i32 as ::UINT;
+pub const IPN_LAST: ::UINT = -879i32 as ::UINT;
+pub const SBN_FIRST: ::UINT = -880i32 as ::UINT;
+pub const SBN_LAST: ::UINT = -899i32 as ::UINT;
+pub const PGN_FIRST: ::UINT = -900i32 as ::UINT;
+pub const PGN_LAST: ::UINT = -950i32 as ::UINT;
+pub const WMN_FIRST: ::UINT = -1000i32 as ::UINT;
+pub const WMN_LAST: ::UINT = -1200i32 as ::UINT;
+pub const BCN_FIRST: ::UINT = -1250i32 as ::UINT;
+pub const BCN_LAST: ::UINT = -1350i32 as ::UINT;
+pub const TRBN_FIRST: ::UINT = -1501i32 as ::UINT;
+pub const TRBN_LAST: ::UINT = -1519i32 as ::UINT;
+pub const CDRF_DODEFAULT: ::LRESULT = 0x00000000;
+pub const CDRF_NEWFONT: ::LRESULT = 0x00000002;
+pub const CDRF_SKIPDEFAULT: ::LRESULT = 0x00000004;
+pub const CDRF_DOERASE: ::LRESULT = 0x00000008;
+pub const CDRF_SKIPPOSTPAINT: ::LRESULT = 0x00000100;
+pub const CDRF_NOTIFYPOSTPAINT: ::LRESULT = 0x00000010;
+pub const CDRF_NOTIFYITEMDRAW: ::LRESULT = 0x00000020;
+pub const CDRF_NOTIFYSUBITEMDRAW: ::LRESULT = 0x00000020;
+pub const CDRF_NOTIFYPOSTERASE: ::LRESULT = 0x00000040;
+pub const CDDS_PREPAINT: ::DWORD = 0x00000001;
+pub const CDDS_POSTPAINT: ::DWORD = 0x00000002;
+pub const CDDS_PREERASE: ::DWORD = 0x00000003;
+pub const CDDS_POSTERASE: ::DWORD = 0x00000004;
+pub const CDDS_ITEM: ::DWORD = 0x00010000;
+pub const CDDS_ITEMPREPAINT: ::DWORD = CDDS_ITEM | CDDS_PREPAINT;
+pub const CDDS_ITEMPOSTPAINT: ::DWORD = CDDS_ITEM | CDDS_POSTPAINT;
+pub const CDDS_ITEMPREERASE: ::DWORD = CDDS_ITEM | CDDS_PREERASE;
+pub const CDDS_ITEMPOSTERASE: ::DWORD = CDDS_ITEM | CDDS_POSTERASE;
+pub const CDDS_SUBITEM: ::DWORD = 0x00020000;
+pub const CDIS_SELECTED: ::UINT = 0x0001;
+pub const CDIS_GRAYED: ::UINT = 0x0002;
+pub const CDIS_DISABLED: ::UINT = 0x0004;
+pub const CDIS_CHECKED: ::UINT = 0x0008;
+pub const CDIS_FOCUS: ::UINT = 0x0010;
+pub const CDIS_DEFAULT: ::UINT = 0x0020;
+pub const CDIS_HOT: ::UINT = 0x0040;
+pub const CDIS_MARKED: ::UINT = 0x0080;
+pub const CDIS_INDETERMINATE: ::UINT = 0x0100;
+pub const CDIS_SHOWKEYBOARDCUES: ::UINT = 0x0200;
+pub const CDIS_NEARHOT: ::UINT = 0x0400;
+pub const CDIS_OTHERSIDEHOT: ::UINT = 0x0800;
+pub const CDIS_DROPHILITED: ::UINT = 0x1000;
+STRUCT!{struct NMCUSTOMDRAW {
+ hdr: ::NMHDR,
+ dwDrawStage: ::DWORD,
+ hdc: ::HDC,
+ rc: ::RECT,
+ dwItemSpec: ::DWORD_PTR,
+ uItemState: ::UINT,
+ lItemlParam: ::LPARAM,
+}}
+pub type LPNMCUSTOMDRAW = *mut NMCUSTOMDRAW;
+STRUCT!{struct NMTTCUSTOMDRAW {
+ nmcd: NMCUSTOMDRAW,
+ uDrawFlags: ::UINT,
+}}
+pub type LPNMTTCUSTOMDRAW = *mut NMTTCUSTOMDRAW;
+STRUCT!{struct NMCUSTOMSPLITRECTINFO {
+ hdr: ::NMHDR,
+ rcClient: ::RECT,
+ rcButton: ::RECT,
+ rcSplit: ::RECT,
+}}
+pub type LPNMCUSTOMSPLITRECTINFO = *mut NMCUSTOMSPLITRECTINFO;
+pub const NM_GETCUSTOMSPLITRECT: ::UINT = BCN_FIRST + 0x0003;
+pub const CLR_NONE: ::DWORD = 0xFFFFFFFF;
+pub const CLR_DEFAULT: ::DWORD = 0xFF000000;
+pub enum IMAGELIST {}
+pub type HIMAGELIST = *mut IMAGELIST;
+STRUCT!{struct IMAGELISTDRAWPARAMS {
+ cbSize: ::DWORD,
+ himl: HIMAGELIST,
+ i: ::c_int,
+ hdcDst: ::HDC,
+ x: ::c_int,
+ y: ::c_int,
+ cx: ::c_int,
+ cy: ::c_int,
+ xBitmap: ::c_int,
+ yBitmap: ::c_int,
+ rgbBk: ::COLORREF,
+ rgbFg: ::COLORREF,
+ fStyle: ::UINT,
+ dwRop: ::DWORD,
+ fState: ::DWORD,
+ Frame: ::DWORD,
+ crEffect: ::COLORREF,
+}}
+pub type LPIMAGELISTDRAWPARAMS = *mut IMAGELISTDRAWPARAMS;
+pub const ILC_MASK: ::UINT = 0x00000001;
+pub const ILC_COLOR: ::UINT = 0x00000000;
+pub const ILC_COLORDDB: ::UINT = 0x000000FE;
+pub const ILC_COLOR4: ::UINT = 0x00000004;
+pub const ILC_COLOR8: ::UINT = 0x00000008;
+pub const ILC_COLOR16: ::UINT = 0x00000010;
+pub const ILC_COLOR24: ::UINT = 0x00000018;
+pub const ILC_COLOR32: ::UINT = 0x00000020;
+pub const ILC_PALETTE: ::UINT = 0x00000800;
+pub const ILC_MIRROR: ::UINT = 0x00002000;
+pub const ILC_PERITEMMIRROR: ::UINT = 0x00008000;
+pub const ILC_ORIGINALSIZE: ::UINT = 0x00010000;
+pub const ILC_HIGHQUALITYSCALE: ::UINT = 0x00020000;
+pub const ILD_NORMAL: ::UINT = 0x00000000;
+pub const ILD_TRANSPARENT: ::UINT = 0x00000001;
+pub const ILD_MASK: ::UINT = 0x00000010;
+pub const ILD_IMAGE: ::UINT = 0x00000020;
+pub const ILD_ROP: ::UINT = 0x00000040;
+pub const ILD_BLEND25: ::UINT = 0x00000002;
+pub const ILD_BLEND50: ::UINT = 0x00000004;
+pub const ILD_OVERLAYMASK: ::UINT = 0x00000F00;
+#[inline] #[allow(dead_code)]
+pub fn INDEXTOOVERLAYMASK(i: ::UINT) -> ::UINT { i << 8 }
+pub const ILD_PRESERVEALPHA: ::UINT = 0x00001000;
+pub const ILD_SCALE: ::UINT = 0x00002000;
+pub const ILD_DPISCALE: ::UINT = 0x00004000;
+pub const ILD_ASYNC: ::UINT = 0x00008000;
+pub const ILD_SELECTED: ::UINT = ILD_BLEND50;
+pub const ILD_FOCUS: ::UINT = ILD_BLEND25;
+pub const ILD_BLEND: ::UINT = ILD_BLEND50;
+pub const CLR_HILIGHT: ::DWORD = CLR_DEFAULT;
+pub const ILS_NORMAL: ::DWORD = 0x00000000;
+pub const ILS_GLOW: ::DWORD = 0x00000001;
+pub const ILS_SHADOW: ::DWORD = 0x00000002;
+pub const ILS_SATURATE: ::DWORD = 0x00000004;
+pub const ILS_ALPHA: ::DWORD = 0x00000008;
+pub const HBITMAP_CALLBACK: ::HBITMAP = (0-1) as ::HBITMAP;
+pub const ILCF_MOVE: ::UINT = 0x00000000;
+pub const ILCF_SWAP: ::UINT = 0x00000001;
+STRUCT!{struct IMAGEINFO {
+ hbmImage: ::HBITMAP,
+ hbmMask: ::HBITMAP,
+ Unused1: ::c_int,
+ Unused2: ::c_int,
+ rcImage: ::RECT,
+}}
+pub type LPIMAGEINFO = *mut IMAGEINFO;
+pub const HDS_HORZ: ::DWORD = 0x0000;
+pub const HDS_BUTTONS: ::DWORD = 0x0002;
+pub const HDS_HOTTRACK: ::DWORD = 0x0004;
+pub const HDS_HIDDEN: ::DWORD = 0x0008;
+pub const HDS_DRAGDROP: ::DWORD = 0x0040;
+pub const HDS_FULLDRAG: ::DWORD = 0x0080;
+pub const HDS_FILTERBAR: ::DWORD = 0x0100;
+pub const HDS_FLAT: ::DWORD = 0x0200;
+pub const HDS_CHECKBOXES: ::DWORD = 0x0400;
+pub const HDS_NOSIZING: ::DWORD = 0x0800;
+pub const HDS_OVERFLOW: ::DWORD = 0x1000;
+pub const HDFT_ISSTRING: ::UINT = 0x0000;
+pub const HDFT_ISNUMBER: ::UINT = 0x0001;
+pub const HDFT_ISDATE: ::UINT = 0x0002;
+pub const HDFT_HASNOVALUE: ::UINT = 0x8000;
+STRUCT!{struct HD_TEXTFILTERA {
+ pszText: ::LPSTR,
+ cchTextMax: ::INT,
+}}
+pub type LPHD_TEXTFILTERA = *mut HD_TEXTFILTERA;
+STRUCT!{struct HD_TEXTFILTERW {
+ pszText: ::LPWSTR,
+ cchTextMax: ::INT,
+}}
+pub type LPHD_TEXTFILTERW = *mut HD_TEXTFILTERW;
+STRUCT!{struct HDITEMA {
+ mask: ::UINT,
+ cxy: ::c_int,
+ pszText: ::LPSTR,
+ hbm: ::HBITMAP,
+ cchTextMax: ::c_int,
+ fmt: ::c_int,
+ lParam: ::LPARAM,
+ iImage: ::c_int,
+ iOrder: ::c_int,
+ _type: ::UINT,
+ pvFilter: *mut ::c_void,
+ state: ::UINT,
+}}
+pub type LPHDITEMA = *mut HDITEMA;
+STRUCT!{struct HDITEMW {
+ mask: ::UINT,
+ cxy: ::c_int,
+ pszText: ::LPWSTR,
+ hbm: ::HBITMAP,
+ cchTextMax: ::c_int,
+ fmt: ::c_int,
+ lParam: ::LPARAM,
+ iImage: ::c_int,
+ iOrder: ::c_int,
+ _type: ::UINT,
+ pvFilter: *mut ::c_void,
+ state: ::UINT,
+}}
+pub type LPHDITEMW = *mut HDITEMW;
+pub const HDI_WIDTH: ::UINT = 0x0001;
+pub const HDI_HEIGHT: ::UINT = HDI_WIDTH;
+pub const HDI_TEXT: ::UINT = 0x0002;
+pub const HDI_FORMAT: ::UINT = 0x0004;
+pub const HDI_LPARAM: ::UINT = 0x0008;
+pub const HDI_BITMAP: ::UINT = 0x0010;
+pub const HDI_IMAGE: ::UINT = 0x0020;
+pub const HDI_DI_SETITEM: ::UINT = 0x0040;
+pub const HDI_ORDER: ::UINT = 0x0080;
+pub const HDI_FILTER: ::UINT = 0x0100;
+pub const HDI_STATE: ::UINT = 0x0200;
+pub const HDF_LEFT: ::c_int = 0x0000;
+pub const HDF_RIGHT: ::c_int = 0x0001;
+pub const HDF_CENTER: ::c_int = 0x0002;
+pub const HDF_JUSTIFYMASK: ::c_int = 0x0003;
+pub const HDF_RTLREADING: ::c_int = 0x0004;
+pub const HDF_BITMAP: ::c_int = 0x2000;
+pub const HDF_STRING: ::c_int = 0x4000;
+pub const HDF_OWNERDRAW: ::c_int = 0x8000;
+pub const HDF_IMAGE: ::c_int = 0x0800;
+pub const HDF_BITMAP_ON_RIGHT: ::c_int = 0x1000;
+pub const HDF_SORTUP: ::c_int = 0x0400;
+pub const HDF_SORTDOWN: ::c_int = 0x0200;
+pub const HDF_CHECKBOX: ::c_int = 0x0040;
+pub const HDF_CHECKED: ::c_int = 0x0080;
+pub const HDF_FIXEDWIDTH: ::c_int = 0x0100;
+pub const HDF_SPLITBUTTON: ::c_int = 0x1000000;
+pub const HDIS_FOCUSED: ::UINT = 0x00000001;
+pub const HDM_GETITEMCOUNT: ::UINT = HDM_FIRST + 0;
+pub const HDM_INSERTITEMA: ::UINT = HDM_FIRST + 1;
+pub const HDM_INSERTITEMW: ::UINT = HDM_FIRST + 10;
+pub const HDM_DELETEITEM: ::UINT = HDM_FIRST + 2;
+pub const HDM_GETITEMA: ::UINT = HDM_FIRST + 3;
+pub const HDM_GETITEMW: ::UINT = HDM_FIRST + 11;
+pub const HDM_SETITEMA: ::UINT = HDM_FIRST + 4;
+pub const HDM_SETITEMW: ::UINT = HDM_FIRST + 12;
+STRUCT!{struct HDLAYOUT {
+ prc: *mut ::RECT,
+ pwpos: *mut ::WINDOWPOS,
+}}
+pub type LPHDLAYOUT = *mut HDLAYOUT;
+pub const HDM_LAYOUT: ::UINT = HDM_FIRST + 5;
+pub const HHT_NOWHERE: ::UINT = 0x0001;
+pub const HHT_ONHEADER: ::UINT = 0x0002;
+pub const HHT_ONDIVIDER: ::UINT = 0x0004;
+pub const HHT_ONDIVOPEN: ::UINT = 0x0008;
+pub const HHT_ONFILTER: ::UINT = 0x0010;
+pub const HHT_ONFILTERBUTTON: ::UINT = 0x0020;
+pub const HHT_ABOVE: ::UINT = 0x0100;
+pub const HHT_BELOW: ::UINT = 0x0200;
+pub const HHT_TORIGHT: ::UINT = 0x0400;
+pub const HHT_TOLEFT: ::UINT = 0x0800;
+pub const HHT_ONITEMSTATEICON: ::UINT = 0x1000;
+pub const HHT_ONDROPDOWN: ::UINT = 0x2000;
+pub const HHT_ONOVERFLOW: ::UINT = 0x4000;
+STRUCT!{struct HDHITTESTINFO {
+ pt: ::POINT,
+ flags: ::UINT,
+ iItem: ::c_int,
+}}
+pub type LPHDHITTESTINFO = *mut HDHITTESTINFO;
+pub const HDSIL_NORMAL: ::WPARAM = 0;
+pub const HDSIL_STATE: ::WPARAM = 1;
+pub const HDM_HITTEST: ::UINT = HDM_FIRST + 6;
+pub const HDM_GETITEMRECT: ::UINT = HDM_FIRST + 7;
+pub const HDM_SETIMAGELIST: ::UINT = HDM_FIRST + 8;
+pub const HDM_GETIMAGELIST: ::UINT = HDM_FIRST + 9;
+pub const HDM_ORDERTOINDEX: ::UINT = HDM_FIRST + 15;
+pub const HDM_CREATEDRAGIMAGE: ::UINT = HDM_FIRST + 16;
+pub const HDM_GETORDERARRAY: ::UINT = HDM_FIRST + 17;
+pub const HDM_SETORDERARRAY: ::UINT = HDM_FIRST + 18;
+pub const HDM_SETHOTDIVIDER: ::UINT = HDM_FIRST + 19;
+pub const HDM_SETBITMAPMARGIN: ::UINT = HDM_FIRST + 20;
+pub const HDM_GETBITMAPMARGIN: ::UINT = HDM_FIRST + 21;
+pub const HDM_SETFILTERCHANGETIMEOUT: ::UINT = HDM_FIRST + 22;
+pub const HDM_EDITFILTER: ::UINT = HDM_FIRST + 23;
+pub const HDM_CLEARFILTER: ::UINT = HDM_FIRST + 24;
+pub const HDM_GETITEMDROPDOWNRECT: ::UINT = HDM_FIRST + 25;
+pub const HDM_GETOVERFLOWRECT: ::UINT = HDM_FIRST + 26;
+pub const HDM_GETFOCUSEDITEM: ::UINT = HDM_FIRST + 27;
+pub const HDM_SETFOCUSEDITEM: ::UINT = HDM_FIRST + 28;
+pub const HDN_ITEMCHANGINGA: ::UINT = HDN_FIRST-0;
+pub const HDN_ITEMCHANGINGW: ::UINT = HDN_FIRST-20;
+pub const HDN_ITEMCHANGEDA: ::UINT = HDN_FIRST-1;
+pub const HDN_ITEMCHANGEDW: ::UINT = HDN_FIRST-21;
+pub const HDN_ITEMCLICKA: ::UINT = HDN_FIRST-2;
+pub const HDN_ITEMCLICKW: ::UINT = HDN_FIRST-22;
+pub const HDN_ITEMDBLCLICKA: ::UINT = HDN_FIRST-3;
+pub const HDN_ITEMDBLCLICKW: ::UINT = HDN_FIRST-23;
+pub const HDN_DIVIDERDBLCLICKA: ::UINT = HDN_FIRST-5;
+pub const HDN_DIVIDERDBLCLICKW: ::UINT = HDN_FIRST-25;
+pub const HDN_BEGINTRACKA: ::UINT = HDN_FIRST-6;
+pub const HDN_BEGINTRACKW: ::UINT = HDN_FIRST-26;
+pub const HDN_ENDTRACKA: ::UINT = HDN_FIRST-7;
+pub const HDN_ENDTRACKW: ::UINT = HDN_FIRST-27;
+pub const HDN_TRACKA: ::UINT = HDN_FIRST-8;
+pub const HDN_TRACKW: ::UINT = HDN_FIRST-28;
+pub const HDN_GETDISPINFOA: ::UINT = HDN_FIRST-9;
+pub const HDN_GETDISPINFOW: ::UINT = HDN_FIRST-29;
+pub const HDN_BEGINDRAG: ::UINT = HDN_FIRST-10;
+pub const HDN_ENDDRAG: ::UINT = HDN_FIRST-11;
+pub const HDN_FILTERCHANGE: ::UINT = HDN_FIRST-12;
+pub const HDN_FILTERBTNCLICK: ::UINT = HDN_FIRST-13;
+pub const HDN_BEGINFILTEREDIT: ::UINT = HDN_FIRST-14;
+pub const HDN_ENDFILTEREDIT: ::UINT = HDN_FIRST-15;
+pub const HDN_ITEMSTATEICONCLICK: ::UINT = HDN_FIRST-16;
+pub const HDN_ITEMKEYDOWN: ::UINT = HDN_FIRST-17;
+pub const HDN_DROPDOWN: ::UINT = HDN_FIRST-18;
+pub const HDN_OVERFLOWCLICK: ::UINT = HDN_FIRST-19;
+STRUCT!{struct NMHEADERA {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ iButton: ::c_int,
+ pitem: *mut HDITEMA,
+}}
+pub type LPNMHEADERA = *mut NMHEADERA;
+STRUCT!{struct NMHEADERW {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ iButton: ::c_int,
+ pitem: *mut HDITEMW,
+}}
+pub type LPNMHEADERW = *mut NMHEADERW;
+STRUCT!{struct NMHDDISPINFOW {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ mask: ::UINT,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPNMHDDISPINFOW = *mut NMHDDISPINFOW;
+STRUCT!{struct NMHDDISPINFOA {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ mask: ::UINT,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPNMHDDISPINFOA = *mut NMHDDISPINFOA;
+STRUCT!{struct NMHDFILTERBTNCLICK {
+ hdr: ::NMHDR,
+ iItem: ::INT,
+ rc: ::RECT,
+}}
+pub type LPNMHDFILTERBTNCLICK = *mut NMHDFILTERBTNCLICK;
+#[cfg(target_arch="x86")]
+STRUCT!{struct TBBUTTON {
+ iBitmap: ::c_int,
+ idCommand: ::c_int,
+ fsState: ::BYTE,
+ fsStyle: ::BYTE,
+ bReserved: [::BYTE; 2],
+ dwData: ::DWORD_PTR,
+ iString: ::INT_PTR,
+}}
+#[cfg(target_arch="x86_64")]
+STRUCT!{struct TBBUTTON {
+ iBitmap: ::c_int,
+ idCommand: ::c_int,
+ fsState: ::BYTE,
+ fsStyle: ::BYTE,
+ bReserved: [::BYTE; 6],
+ dwData: ::DWORD_PTR,
+ iString: ::INT_PTR,
+}}
+pub type PTBBUTTON = *mut TBBUTTON;
+pub type LPTBBUTTON = *mut TBBUTTON;
+pub type LPCTBBUTTON = *const TBBUTTON;
+STRUCT!{struct COLORMAP {
+ from: ::COLORREF,
+ to: ::COLORREF,
+}}
+pub type LPCOLORMAP = *mut COLORMAP;
+pub const CMB_MASKED: ::UINT = 0x02;
+pub const TBSTATE_CHECKED: ::BYTE = 0x01;
+pub const TBSTATE_PRESSED: ::BYTE = 0x02;
+pub const TBSTATE_ENABLED: ::BYTE = 0x04;
+pub const TBSTATE_HIDDEN: ::BYTE = 0x08;
+pub const TBSTATE_INDETERMINATE: ::BYTE = 0x10;
+pub const TBSTATE_WRAP: ::BYTE = 0x20;
+pub const TBSTATE_ELLIPSES: ::BYTE = 0x40;
+pub const TBSTATE_MARKED: ::BYTE = 0x80;
+pub const TBSTYLE_BUTTON: ::DWORD = 0x0000;
+pub const TBSTYLE_SEP: ::DWORD = 0x0001;
+pub const TBSTYLE_CHECK: ::DWORD = 0x0002;
+pub const TBSTYLE_GROUP: ::DWORD = 0x0004;
+pub const TBSTYLE_CHECKGROUP: ::DWORD = TBSTYLE_GROUP | TBSTYLE_CHECK;
+pub const TBSTYLE_DROPDOWN: ::DWORD = 0x0008;
+pub const TBSTYLE_AUTOSIZE: ::DWORD = 0x0010;
+pub const TBSTYLE_NOPREFIX: ::DWORD = 0x0020;
+pub const TBSTYLE_TOOLTIPS: ::DWORD = 0x0100;
+pub const TBSTYLE_WRAPABLE: ::DWORD = 0x0200;
+pub const TBSTYLE_ALTDRAG: ::DWORD = 0x0400;
+pub const TBSTYLE_FLAT: ::DWORD = 0x0800;
+pub const TBSTYLE_LIST: ::DWORD = 0x1000;
+pub const TBSTYLE_CUSTOMERASE: ::DWORD = 0x2000;
+pub const TBSTYLE_REGISTERDROP: ::DWORD = 0x4000;
+pub const TBSTYLE_TRANSPARENT: ::DWORD = 0x8000;
+pub const TBSTYLE_EX_DRAWDDARROWS: ::DWORD = 0x00000001;
+pub const BTNS_BUTTON: ::DWORD = TBSTYLE_BUTTON;
+pub const BTNS_SEP: ::DWORD = TBSTYLE_SEP;
+pub const BTNS_CHECK: ::DWORD = TBSTYLE_CHECK;
+pub const BTNS_GROUP: ::DWORD = TBSTYLE_GROUP;
+pub const BTNS_CHECKGROUP: ::DWORD = TBSTYLE_CHECKGROUP;
+pub const BTNS_DROPDOWN: ::DWORD = TBSTYLE_DROPDOWN;
+pub const BTNS_AUTOSIZE: ::DWORD = TBSTYLE_AUTOSIZE;
+pub const BTNS_NOPREFIX: ::DWORD = TBSTYLE_NOPREFIX;
+pub const BTNS_SHOWTEXT: ::DWORD = 0x0040;
+pub const BTNS_WHOLEDROPDOWN: ::DWORD = 0x0080;
+pub const TBSTYLE_EX_MIXEDBUTTONS: ::DWORD = 0x00000008;
+pub const TBSTYLE_EX_HIDECLIPPEDBUTTONS: ::DWORD = 0x00000010;
+pub const TBSTYLE_EX_MULTICOLUMN: ::DWORD = 0x00000002;
+pub const TBSTYLE_EX_VERTICAL: ::DWORD = 0x00000004;
+pub const TBSTYLE_EX_DOUBLEBUFFER: ::DWORD = 0x00000080;
+STRUCT!{struct NMTBCUSTOMDRAW {
+ nmcd: NMCUSTOMDRAW,
+ hbrMonoDither: ::HBRUSH,
+ hbrLines: ::HBRUSH,
+ hpenLines: ::HPEN,
+ clrText: ::COLORREF,
+ clrMark: ::COLORREF,
+ clrTextHighlight: ::COLORREF,
+ clrBtnFace: ::COLORREF,
+ clrBtnHighlight: ::COLORREF,
+ clrHighlightHotTrack: ::COLORREF,
+ rcText: ::RECT,
+ nStringBkMode: ::c_int,
+ nHLStringBkMode: ::c_int,
+ iListGap: ::c_int,
+}}
+pub type LPNMTBCUSTOMDRAW = *mut NMTBCUSTOMDRAW;
+pub const TBCDRF_NOEDGES: ::LRESULT = 0x00010000;
+pub const TBCDRF_HILITEHOTTRACK: ::LRESULT = 0x00020000;
+pub const TBCDRF_NOOFFSET: ::LRESULT = 0x00040000;
+pub const TBCDRF_NOMARK: ::LRESULT = 0x00080000;
+pub const TBCDRF_NOETCHEDEFFECT: ::LRESULT = 0x00100000;
+pub const TBCDRF_BLENDICON: ::LRESULT = 0x00200000;
+pub const TBCDRF_NOBACKGROUND: ::LRESULT = 0x00400000;
+pub const TBCDRF_USECDCOLORS: ::LRESULT = 0x00800000;
+pub const TB_ENABLEBUTTON: ::UINT = ::WM_USER + 1;
+pub const TB_CHECKBUTTON: ::UINT = ::WM_USER + 2;
+pub const TB_PRESSBUTTON: ::UINT = ::WM_USER + 3;
+pub const TB_HIDEBUTTON: ::UINT = ::WM_USER + 4;
+pub const TB_INDETERMINATE: ::UINT = ::WM_USER + 5;
+pub const TB_MARKBUTTON: ::UINT = ::WM_USER + 6;
+pub const TB_ISBUTTONENABLED: ::UINT = ::WM_USER + 9;
+pub const TB_ISBUTTONCHECKED: ::UINT = ::WM_USER + 10;
+pub const TB_ISBUTTONPRESSED: ::UINT = ::WM_USER + 11;
+pub const TB_ISBUTTONHIDDEN: ::UINT = ::WM_USER + 12;
+pub const TB_ISBUTTONINDETERMINATE : ::UINT = ::WM_USER + 13;
+pub const TB_ISBUTTONHIGHLIGHTED: ::UINT = ::WM_USER + 14;
+pub const TB_SETSTATE: ::UINT = ::WM_USER + 17;
+pub const TB_GETSTATE: ::UINT = ::WM_USER + 18;
+pub const TB_ADDBITMAP: ::UINT = ::WM_USER + 19;
+STRUCT!{struct TBADDBITMAP {
+ hInst: ::HINSTANCE,
+ nID: ::UINT_PTR,
+}}
+pub type LPTBADDBITMAP = *mut TBADDBITMAP;
+pub const HINST_COMMCTRL: ::HINSTANCE = (0 - 1) as ::HINSTANCE;
+pub const IDB_STD_SMALL_COLOR: ::WPARAM = 0;
+pub const IDB_STD_LARGE_COLOR: ::WPARAM = 1;
+pub const IDB_VIEW_SMALL_COLOR: ::WPARAM = 4;
+pub const IDB_VIEW_LARGE_COLOR: ::WPARAM = 5;
+pub const IDB_HIST_SMALL_COLOR: ::WPARAM = 8;
+pub const IDB_HIST_LARGE_COLOR: ::WPARAM = 9;
+pub const IDB_HIST_NORMAL: ::WPARAM = 12;
+pub const IDB_HIST_HOT: ::WPARAM = 13;
+pub const IDB_HIST_DISABLED: ::WPARAM = 14;
+pub const IDB_HIST_PRESSED: ::WPARAM = 15;
+pub const STD_CUT: ::c_int = 0;
+pub const STD_COPY: ::c_int = 1;
+pub const STD_PASTE: ::c_int = 2;
+pub const STD_UNDO: ::c_int = 3;
+pub const STD_REDOW: ::c_int = 4;
+pub const STD_DELETE: ::c_int = 5;
+pub const STD_FILENEW: ::c_int = 6;
+pub const STD_FILEOPEN: ::c_int = 7;
+pub const STD_FILESAVE: ::c_int = 8;
+pub const STD_PRINTPRE: ::c_int = 9;
+pub const STD_PROPERTIES: ::c_int = 10;
+pub const STD_HELP: ::c_int = 11;
+pub const STD_FIND: ::c_int = 12;
+pub const STD_REPLACE: ::c_int = 13;
+pub const STD_PRINT: ::c_int = 14;
+pub const VIEW_LARGEICONS: ::c_int = 0;
+pub const VIEW_SMALLICONS: ::c_int = 1;
+pub const VIEW_LIST: ::c_int = 2;
+pub const VIEW_DETAILS: ::c_int = 3;
+pub const VIEW_SORTNAME: ::c_int = 4;
+pub const VIEW_SORTSIZE: ::c_int = 5;
+pub const VIEW_SORTDATE: ::c_int = 6;
+pub const VIEW_SORTTYPE: ::c_int = 7;
+pub const VIEW_PARENTFOLDER: ::c_int = 8;
+pub const VIEW_NETCONNECT: ::c_int = 9;
+pub const VIEW_NETDISCONNECT: ::c_int = 10;
+pub const VIEW_NEWFOLDER: ::c_int = 11;
+pub const VIEW_VIEWMENU: ::c_int = 12;
+pub const HIST_BACK: ::c_int = 0;
+pub const HIST_FORWARD: ::c_int = 1;
+pub const HIST_FAVORITES: ::c_int = 2;
+pub const HIST_ADDTOFAVORITES: ::c_int = 3;
+pub const HIST_VIEWTREE: ::c_int = 4;
+pub const TB_ADDBUTTONSA: ::UINT = ::WM_USER + 20;
+pub const TB_INSERTBUTTONA: ::UINT = ::WM_USER + 21;
+pub const TB_DELETEBUTTON: ::UINT = ::WM_USER + 22;
+pub const TB_GETBUTTON: ::UINT = ::WM_USER + 23;
+pub const TB_BUTTONCOUNT: ::UINT = ::WM_USER + 24;
+pub const TB_COMMANDTOINDEX: ::UINT = ::WM_USER + 25;
+STRUCT!{struct TBSAVEPARAMSA {
+ hkr: ::HKEY,
+ pszSubKey: ::LPCSTR,
+ pszValueName: ::LPCSTR,
+}}
+pub type LPTBSAVEPARAMSA = *mut TBSAVEPARAMSA;
+STRUCT!{struct TBSAVEPARAMSW {
+ hkr: ::HKEY,
+ pszSubKey: ::LPCWSTR,
+ pszValueName: ::LPCWSTR,
+}}
+pub type LPTBSAVEPARAMSW = *mut TBSAVEPARAMSW;
+pub const TB_SAVERESTOREA: ::UINT = ::WM_USER + 26;
+pub const TB_SAVERESTOREW: ::UINT = ::WM_USER + 76;
+pub const TB_CUSTOMIZE: ::UINT = ::WM_USER + 27;
+pub const TB_ADDSTRINGA: ::UINT = ::WM_USER + 28;
+pub const TB_ADDSTRINGW: ::UINT = ::WM_USER + 77;
+pub const TB_GETITEMRECT: ::UINT = ::WM_USER + 29;
+pub const TB_BUTTONSTRUCTSIZE: ::UINT = ::WM_USER + 30;
+pub const TB_SETBUTTONSIZE: ::UINT = ::WM_USER + 31;
+pub const TB_SETBITMAPSIZE: ::UINT = ::WM_USER + 32;
+pub const TB_AUTOSIZE: ::UINT = ::WM_USER + 33;
+pub const TB_GETTOOLTIPS: ::UINT = ::WM_USER + 35;
+pub const TB_SETTOOLTIPS: ::UINT = ::WM_USER + 36;
+pub const TB_SETPARENT: ::UINT = ::WM_USER + 37;
+pub const TB_SETROWS: ::UINT = ::WM_USER + 39;
+pub const TB_GETROWS: ::UINT = ::WM_USER + 40;
+pub const TB_SETCMDID: ::UINT = ::WM_USER + 42;
+pub const TB_CHANGEBITMAP: ::UINT = ::WM_USER + 43;
+pub const TB_GETBITMAP: ::UINT = ::WM_USER + 44;
+pub const TB_GETBUTTONTEXTA: ::UINT = ::WM_USER + 45;
+pub const TB_GETBUTTONTEXTW: ::UINT = ::WM_USER + 75;
+pub const TB_REPLACEBITMAP: ::UINT = ::WM_USER + 46;
+pub const TB_SETINDENT: ::UINT = ::WM_USER + 47;
+pub const TB_SETIMAGELIST: ::UINT = ::WM_USER + 48;
+pub const TB_GETIMAGELIST: ::UINT = ::WM_USER + 49;
+pub const TB_LOADIMAGES: ::UINT = ::WM_USER + 50;
+pub const TB_GETRECT: ::UINT = ::WM_USER + 51;
+pub const TB_SETHOTIMAGELIST: ::UINT = ::WM_USER + 52;
+pub const TB_GETHOTIMAGELIST: ::UINT = ::WM_USER + 53;
+pub const TB_SETDISABLEDIMAGELIST: ::UINT = ::WM_USER + 54;
+pub const TB_GETDISABLEDIMAGELIST: ::UINT = ::WM_USER + 55;
+pub const TB_SETSTYLE: ::UINT = ::WM_USER + 56;
+pub const TB_GETSTYLE: ::UINT = ::WM_USER + 57;
+pub const TB_GETBUTTONSIZE: ::UINT = ::WM_USER + 58;
+pub const TB_SETBUTTONWIDTH: ::UINT = ::WM_USER + 59;
+pub const TB_SETMAXTEXTROWS: ::UINT = ::WM_USER + 60;
+pub const TB_GETTEXTROWS: ::UINT = ::WM_USER + 61;
+pub const TB_GETOBJECT: ::UINT = ::WM_USER + 62;
+pub const TB_GETHOTITEM: ::UINT = ::WM_USER + 71;
+pub const TB_SETHOTITEM: ::UINT = ::WM_USER + 72;
+pub const TB_SETANCHORHIGHLIGHT: ::UINT = ::WM_USER + 73;
+pub const TB_GETANCHORHIGHLIGHT: ::UINT = ::WM_USER + 74;
+pub const TB_MAPACCELERATORA: ::UINT = ::WM_USER + 78;
+STRUCT!{struct TBINSERTMARK {
+ iButton: ::c_int,
+ dwFlags: ::DWORD,
+}}
+pub type LPTBINSERTMARK = *mut TBINSERTMARK;
+pub const TBIMHT_AFTER: ::DWORD = 0x00000001;
+pub const TBIMHT_BACKGROUND: ::DWORD = 0x00000002;
+pub const TB_GETINSERTMARK: ::UINT = ::WM_USER + 79;
+pub const TB_SETINSERTMARK: ::UINT = ::WM_USER + 80;
+pub const TB_INSERTMARKHITTEST: ::UINT = ::WM_USER + 81;
+pub const TB_MOVEBUTTON: ::UINT = ::WM_USER + 82;
+pub const TB_GETMAXSIZE: ::UINT = ::WM_USER + 83;
+pub const TB_SETEXTENDEDSTYLE: ::UINT = ::WM_USER + 84;
+pub const TB_GETEXTENDEDSTYLE: ::UINT = ::WM_USER + 85;
+pub const TB_GETPADDING: ::UINT = ::WM_USER + 86;
+pub const TB_SETPADDING: ::UINT = ::WM_USER + 87;
+pub const TB_SETINSERTMARKCOLOR: ::UINT = ::WM_USER + 88;
+pub const TB_GETINSERTMARKCOLOR: ::UINT = ::WM_USER + 89;
+pub const TB_SETCOLORSCHEME: ::UINT = CCM_SETCOLORSCHEME;
+pub const TB_GETCOLORSCHEME: ::UINT = CCM_GETCOLORSCHEME;
+pub const TB_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const TB_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const TB_MAPACCELERATORW: ::UINT = ::WM_USER + 90;
+STRUCT!{struct TBREPLACEBITMAP {
+ hInstOld: ::HINSTANCE,
+ nIDOld: ::UINT_PTR,
+ hInstNew: ::HINSTANCE,
+ nIDNew: ::UINT_PTR,
+ nButtons: ::c_int,
+}}
+pub type LPTBREPLACEBITMAP = *mut TBREPLACEBITMAP;
+pub const TBBF_LARGE: ::DWORD = 0x0001;
+pub const TB_GETBITMAPFLAGS: ::UINT = ::WM_USER + 41;
+pub const TBIF_IMAGE: ::DWORD = 0x00000001;
+pub const TBIF_TEXT: ::DWORD = 0x00000002;
+pub const TBIF_STATE: ::DWORD = 0x00000004;
+pub const TBIF_STYLE: ::DWORD = 0x00000008;
+pub const TBIF_LPARAM: ::DWORD = 0x00000010;
+pub const TBIF_COMMAND: ::DWORD = 0x00000020;
+pub const TBIF_SIZE: ::DWORD = 0x00000040;
+pub const TBIF_BYINDEX: ::DWORD = 0x80000000;
+STRUCT!{struct TBBUTTONINFOA {
+ cbSize: ::UINT,
+ dwMask: ::DWORD,
+ idCommand: ::c_int,
+ iImage: ::c_int,
+ fsState: ::BYTE,
+ fsStyle: ::BYTE,
+ cx: ::WORD,
+ lParam: ::DWORD_PTR,
+ pszText: ::LPSTR,
+ cchText: ::c_int,
+}}
+pub type LPTBBUTTONINFOA = *mut TBBUTTONINFOA;
+STRUCT!{struct TBBUTTONINFOW {
+ cbSize: ::UINT,
+ dwMask: ::DWORD,
+ idCommand: ::c_int,
+ iImage: ::c_int,
+ fsState: ::BYTE,
+ fsStyle: ::BYTE,
+ cx: ::WORD,
+ lParam: ::DWORD_PTR,
+ pszText: ::LPWSTR,
+ cchText: ::c_int,
+}}
+pub type LPTBBUTTONINFOW = *mut TBBUTTONINFOW;
+pub const TB_GETBUTTONINFOW: ::UINT = ::WM_USER + 63;
+pub const TB_SETBUTTONINFOW: ::UINT = ::WM_USER + 64;
+pub const TB_GETBUTTONINFOA: ::UINT = ::WM_USER + 65;
+pub const TB_SETBUTTONINFOA: ::UINT = ::WM_USER + 66;
+pub const TB_INSERTBUTTONW: ::UINT = ::WM_USER + 67;
+pub const TB_ADDBUTTONSW: ::UINT = ::WM_USER + 68;
+pub const TB_HITTEST: ::UINT = ::WM_USER + 69;
+pub const TB_SETDRAWTEXTFLAGS: ::UINT = ::WM_USER + 70;
+pub const TB_GETSTRINGW: ::UINT = ::WM_USER + 91;
+pub const TB_GETSTRINGA: ::UINT = ::WM_USER + 92;
+pub const TB_SETBOUNDINGSIZE: ::UINT = ::WM_USER + 93;
+pub const TB_SETHOTITEM2: ::UINT = ::WM_USER + 94;
+pub const TB_HASACCELERATOR: ::UINT = ::WM_USER + 95;
+pub const TB_SETLISTGAP: ::UINT = ::WM_USER + 96;
+pub const TB_GETIMAGELISTCOUNT: ::UINT = ::WM_USER + 98;
+pub const TB_GETIDEALSIZE: ::UINT = ::WM_USER + 99;
+pub const TBMF_PAD: ::DWORD = 0x00000001;
+pub const TBMF_BARPAD: ::DWORD = 0x00000002;
+pub const TBMF_BUTTONSPACING: ::DWORD = 0x00000004;
+STRUCT!{struct TBMETRICS {
+ cbSize: ::UINT,
+ dwMask: ::DWORD,
+ cxPad: ::c_int,
+ cyPad: ::c_int,
+ cxBarPad: ::c_int,
+ cyBarPad: ::c_int,
+ cxButtonSpacing: ::c_int,
+ cyButtonSpacing: ::c_int,
+}}
+pub type LPTBMETRICS = *mut TBMETRICS;
+pub const TB_GETMETRICS: ::UINT = ::WM_USER + 101;
+pub const TB_SETMETRICS: ::UINT = ::WM_USER + 102;
+pub const TB_GETITEMDROPDOWNRECT: ::UINT = ::WM_USER + 103;
+pub const TB_SETPRESSEDIMAGELIST: ::UINT = ::WM_USER + 104;
+pub const TB_GETPRESSEDIMAGELIST: ::UINT = ::WM_USER + 105;
+pub const TB_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
+pub const TBN_GETBUTTONINFOA: ::UINT = TBN_FIRST - 0;
+pub const TBN_BEGINDRAG: ::UINT = TBN_FIRST - 1;
+pub const TBN_ENDDRAG: ::UINT = TBN_FIRST - 2;
+pub const TBN_BEGINADJUST: ::UINT = TBN_FIRST - 3;
+pub const TBN_ENDADJUST: ::UINT = TBN_FIRST - 4;
+pub const TBN_RESET: ::UINT = TBN_FIRST - 5;
+pub const TBN_QUERYINSERT: ::UINT = TBN_FIRST - 6;
+pub const TBN_QUERYDELETE: ::UINT = TBN_FIRST - 7;
+pub const TBN_TOOLBARCHANGE: ::UINT = TBN_FIRST - 8;
+pub const TBN_CUSTHELP: ::UINT = TBN_FIRST - 9;
+pub const TBN_DROPDOWN: ::UINT = TBN_FIRST - 10;
+pub const TBN_GETOBJECT: ::UINT = TBN_FIRST - 12;
+STRUCT!{struct NMTBHOTITEM {
+ hdr: ::NMHDR,
+ idOld: ::c_int,
+ idNew: ::c_int,
+ dwFlags: ::DWORD,
+}}
+pub type LPNMTBHOTITEM = *mut NMTBHOTITEM;
+pub const HICF_OTHER: ::DWORD = 0x00000000;
+pub const HICF_MOUSE: ::DWORD = 0x00000001;
+pub const HICF_ARROWKEYS: ::DWORD = 0x00000002;
+pub const HICF_ACCELERATOR: ::DWORD = 0x00000004;
+pub const HICF_DUPACCEL: ::DWORD = 0x00000008;
+pub const HICF_ENTERING: ::DWORD = 0x00000010;
+pub const HICF_LEAVING: ::DWORD = 0x00000020;
+pub const HICF_RESELECT: ::DWORD = 0x00000040;
+pub const HICF_LMOUSE: ::DWORD = 0x00000080;
+pub const HICF_TOGGLEDROPDOWN: ::DWORD = 0x00000100;
+pub const TBN_HOTITEMCHANGE: ::UINT = TBN_FIRST - 13;
+pub const TBN_DRAGOUT: ::UINT = TBN_FIRST - 14;
+pub const TBN_DELETINGBUTTON: ::UINT = TBN_FIRST - 15;
+pub const TBN_GETDISPINFOA: ::UINT = TBN_FIRST - 16;
+pub const TBN_GETDISPINFOW: ::UINT = TBN_FIRST - 17;
+pub const TBN_GETINFOTIPA: ::UINT = TBN_FIRST - 18;
+pub const TBN_GETINFOTIPW: ::UINT = TBN_FIRST - 19;
+pub const TBN_GETBUTTONINFOW: ::UINT = TBN_FIRST - 20;
+pub const TBN_RESTORE: ::UINT = TBN_FIRST - 21;
+pub const TBN_SAVE: ::UINT = TBN_FIRST - 22;
+pub const TBN_INITCUSTOMIZE: ::UINT = TBN_FIRST - 23;
+pub const TBN_WRAPHOTITEM: ::UINT = TBN_FIRST - 24;
+pub const TBN_DUPACCELERATOR: ::UINT = TBN_FIRST - 25;
+pub const TBN_WRAPACCELERATOR: ::UINT = TBN_FIRST - 26;
+pub const TBN_DRAGOVER: ::UINT = TBN_FIRST - 27;
+pub const TBN_MAPACCELERATOR: ::UINT = TBN_FIRST - 28;
+pub const TBNRF_HIDEHELP: ::LRESULT = 0x00000001;
+pub const TBNRF_ENDCUSTOMIZE: ::LRESULT = 0x00000002;
+STRUCT!{struct NMTBSAVE {
+ hdr: ::NMHDR,
+ pData: *mut ::DWORD,
+ pCurrent: *mut ::DWORD,
+ cbData: ::UINT,
+ iItem: ::c_int,
+ cButtons: ::c_int,
+ tbButton: TBBUTTON,
+}}
+pub type LPNMTBSAVE = *mut NMTBSAVE;
+STRUCT!{struct NMTBRESTORE {
+ hdr: ::NMHDR,
+ pData: *mut ::DWORD,
+ pCurrent: *mut ::DWORD,
+ cbData: ::UINT,
+ iItem: ::c_int,
+ cButtons: ::c_int,
+ cbBytesPerRecord: ::c_int,
+ tbButton: TBBUTTON,
+}}
+pub type LPNMTBRESTORE = *mut NMTBRESTORE;
+STRUCT!{struct NMTBGETINFOTIPA {
+ hdr: ::NMHDR,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iItem: ::c_int,
+ lParal: ::LPARAM,
+}}
+pub type LPNMTBGETINFOTIPA = *mut NMTBGETINFOTIPA;
+STRUCT!{struct NMTBGETINFOTIPW {
+ hdr: ::NMHDR,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iItem: ::c_int,
+ lParal: ::LPARAM,
+}}
+pub type LPNMTBGETINFOTIPW = *mut NMTBGETINFOTIPW;
+pub const TBNF_IMAGE: ::DWORD = 0x00000001;
+pub const TBNF_TEXT: ::DWORD = 0x00000002;
+pub const TBNF_DI_SETITEM: ::DWORD = 0x10000000;
+STRUCT!{struct NMTBDISPINFOA {
+ hdr: ::NMHDR,
+ dwMask: ::DWORD,
+ idCommand: ::c_int,
+ lParam: ::DWORD_PTR,
+ iImage: ::c_int,
+ pszText: ::LPSTR,
+ cchText: ::c_int,
+}}
+pub type LPNMTBDISPINFOA = *mut NMTBDISPINFOA;
+STRUCT!{struct NMTBDISPINFOW {
+ hdr: ::NMHDR,
+ dwMask: ::DWORD,
+ idCommand: ::c_int,
+ lParam: ::DWORD_PTR,
+ iImage: ::c_int,
+ pszText: ::LPWSTR,
+ cchText: ::c_int,
+}}
+pub type LPNMTBDISPINFOW = *mut NMTBDISPINFOW;
+pub const TBDDRET_DEFAULT: ::LRESULT = 0;
+pub const TBDDRET_NODEFAULT: ::LRESULT = 1;
+pub const TBDDRET_TREATPRESSED: ::LRESULT = 2;
+pub type TBNOTIFYA = NMTOOLBARA;
+pub type TBNOTIFYW = NMTOOLBARW;
+pub type LPTBNOTIFYA = LPNMTOOLBARA;
+pub type LPTBNOTIFYW = LPNMTOOLBARW;
+STRUCT!{struct NMTOOLBARA {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ tbButton: TBBUTTON,
+ cchText: ::c_int,
+ pszText: ::LPSTR,
+ rcButton: ::RECT,
+}}
+pub type LPNMTOOLBARA = *mut NMTOOLBARA;
+STRUCT!{struct NMTOOLBARW {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ tbButton: TBBUTTON,
+ cchText: ::c_int,
+ pszText: ::LPWSTR,
+ rcButton: ::RECT,
+}}
+pub type LPNMTOOLBARW = *mut NMTOOLBARW;
+pub const RBIM_IMAGELIST: ::UINT = 0x00000001;
+pub const RBS_TOOLTIPS: ::DWORD = 0x00000100;
+pub const RBS_VARHEIGHT: ::DWORD = 0x00000200;
+pub const RBS_BANDBORDERS: ::DWORD = 0x00000400;
+pub const RBS_FIXEDORDER: ::DWORD = 0x00000800;
+pub const RBS_REGISTERDROP: ::DWORD = 0x00001000;
+pub const RBS_AUTOSIZE: ::DWORD = 0x00002000;
+pub const RBS_VERTICALGRIPPER: ::DWORD = 0x00004000;
+pub const RBS_DBLCLKTOGGLE: ::DWORD = 0x00008000;
+STRUCT!{struct REBARINFO {
+ cbSize: ::UINT,
+ fMask: ::UINT,
+ himl: HIMAGELIST,
+}}
+pub type LPREBARINFO = *mut REBARINFO;
+pub const RBBS_BREAK: ::UINT = 0x00000001;
+pub const RBBS_FIXEDSIZE: ::UINT = 0x00000002;
+pub const RBBS_CHILDEDGE: ::UINT = 0x00000004;
+pub const RBBS_HIDDEN: ::UINT = 0x00000008;
+pub const RBBS_NOVERT: ::UINT = 0x00000010;
+pub const RBBS_FIXEDBMP: ::UINT = 0x00000020;
+pub const RBBS_VARIABLEHEIGHT: ::UINT = 0x00000040;
+pub const RBBS_GRIPPERALWAYS: ::UINT = 0x00000080;
+pub const RBBS_NOGRIPPER: ::UINT = 0x00000100;
+pub const RBBS_USECHEVRON: ::UINT = 0x00000200;
+pub const RBBS_HIDETITLE: ::UINT = 0x00000400;
+pub const RBBS_TOPALIGN: ::UINT = 0x00000800;
+pub const RBBIM_STYLE: ::UINT = 0x00000001;
+pub const RBBIM_COLORS: ::UINT = 0x00000002;
+pub const RBBIM_TEXT: ::UINT = 0x00000004;
+pub const RBBIM_IMAGE: ::UINT = 0x00000008;
+pub const RBBIM_CHILD: ::UINT = 0x00000010;
+pub const RBBIM_CHILDSIZE: ::UINT = 0x00000020;
+pub const RBBIM_SIZE: ::UINT = 0x00000040;
+pub const RBBIM_BACKGROUND: ::UINT = 0x00000080;
+pub const RBBIM_ID: ::UINT = 0x00000100;
+pub const RBBIM_IDEALSIZE: ::UINT = 0x00000200;
+pub const RBBIM_LPARAM: ::UINT = 0x00000400;
+pub const RBBIM_HEADERSIZE: ::UINT = 0x00000800;
+pub const RBBIM_CHEVRONLOCATION: ::UINT = 0x00001000;
+pub const RBBIM_CHEVRONSTATE: ::UINT = 0x00002000;
+STRUCT!{struct REBARBANDINFOA {
+ cbSize: ::UINT,
+ fMask: ::UINT,
+ fStyle: ::UINT,
+ clrFore: ::COLORREF,
+ clrBack: ::COLORREF,
+ lpText: ::LPSTR,
+ cch: ::UINT,
+ iImage: ::c_int,
+ hwndChild: ::HWND,
+ cxMinChild: ::UINT,
+ cyMinChild: ::UINT,
+ cx: ::UINT,
+ hbmBack: ::HBITMAP,
+ wID: ::UINT,
+ cyChild: ::UINT,
+ cyMaxChild: ::UINT,
+ cyIntegral: ::UINT,
+ cxIdeal: ::UINT,
+ lParam: ::LPARAM,
+ cxHeader: ::UINT,
+ rcChevronLocation: ::RECT,
+ uChevronState: ::UINT,
+}}
+pub type LPREBARBANDINFOA = *mut REBARBANDINFOA;
+pub type LPCREBARBANDINFOA = *const REBARBANDINFOA;
+STRUCT!{struct REBARBANDINFOW {
+ cbSize: ::UINT,
+ fMask: ::UINT,
+ fStyle: ::UINT,
+ clrFore: ::COLORREF,
+ clrBack: ::COLORREF,
+ lpText: ::LPWSTR,
+ cch: ::UINT,
+ iImage: ::c_int,
+ hwndChild: ::HWND,
+ cxMinChild: ::UINT,
+ cyMinChild: ::UINT,
+ cx: ::UINT,
+ hbmBack: ::HBITMAP,
+ wID: ::UINT,
+ cyChild: ::UINT,
+ cyMaxChild: ::UINT,
+ cyIntegral: ::UINT,
+ cxIdeal: ::UINT,
+ lParam: ::LPARAM,
+ cxHeader: ::UINT,
+ rcChevronLocation: ::RECT,
+ uChevronState: ::UINT,
+}}
+pub type LPREBARBANDINFOW = *mut REBARBANDINFOW;
+pub type LPCREBARBANDINFOW = *const REBARBANDINFOW;
+pub const RB_INSERTBANDA: ::UINT = ::WM_USER + 1;
+pub const RB_DELETEBAND: ::UINT = ::WM_USER + 2;
+pub const RB_GETBARINFO: ::UINT = ::WM_USER + 3;
+pub const RB_SETBARINFO: ::UINT = ::WM_USER + 4;
+pub const RB_SETBANDINFOA: ::UINT = ::WM_USER + 6;
+pub const RB_SETPARENT: ::UINT = ::WM_USER + 7;
+pub const RB_HITTEST: ::UINT = ::WM_USER + 8;
+pub const RB_GETRECT: ::UINT = ::WM_USER + 9;
+pub const RB_INSERTBANDW: ::UINT = ::WM_USER + 10;
+pub const RB_SETBANDINFOW: ::UINT = ::WM_USER + 11;
+pub const RB_GETBANDCOUNT: ::UINT = ::WM_USER + 12;
+pub const RB_GETROWCOUNT: ::UINT = ::WM_USER + 13;
+pub const RB_GETROWHEIGHT: ::UINT = ::WM_USER + 14;
+pub const RB_IDTOINDEX: ::UINT = ::WM_USER + 16;
+pub const RB_GETTOOLTIPS: ::UINT = ::WM_USER + 17;
+pub const RB_SETTOOLTIPS: ::UINT = ::WM_USER + 18;
+pub const RB_SETBKCOLOR: ::UINT = ::WM_USER + 19;
+pub const RB_GETBKCOLOR: ::UINT = ::WM_USER + 20;
+pub const RB_SETTEXTCOLOR: ::UINT = ::WM_USER + 21;
+pub const RB_GETTEXTCOLOR: ::UINT = ::WM_USER + 22;
+pub const RBSTR_CHANGERECT: ::WPARAM = 0x0001;
+pub const RB_SIZETORECT: ::UINT = ::WM_USER + 23;
+pub const RB_SETCOLORSCHEME: ::UINT = CCM_SETCOLORSCHEME;
+pub const RB_GETCOLORSCHEME: ::UINT = CCM_GETCOLORSCHEME;
+pub const RB_BEGINDRAG: ::UINT = ::WM_USER + 24;
+pub const RB_ENDDRAG: ::UINT = ::WM_USER + 25;
+pub const RB_DRAGMOVE: ::UINT = ::WM_USER + 26;
+pub const RB_GETBARHEIGHT: ::UINT = ::WM_USER + 27;
+pub const RB_GETBANDINFOW: ::UINT = ::WM_USER + 28;
+pub const RB_GETBANDINFOA: ::UINT = ::WM_USER + 29;
+pub const RB_MINIMIZEBAND: ::UINT = ::WM_USER + 30;
+pub const RB_MAXIMIZEBAND: ::UINT = ::WM_USER + 31;
+pub const RB_GETDROPTARGET: ::UINT = CCM_GETDROPTARGET;
+pub const RB_GETBANDBORDERS: ::UINT = ::WM_USER + 34;
+pub const RB_SHOWBAND: ::UINT = ::WM_USER + 35;
+pub const RB_SETPALETTE: ::UINT = ::WM_USER + 37;
+pub const RB_GETPALETTE: ::UINT = ::WM_USER + 38;
+pub const RB_MOVEBAND: ::UINT = ::WM_USER + 39;
+pub const RB_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const RB_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const RB_GETBANDMARGINS: ::UINT = ::WM_USER + 40;
+pub const RB_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
+pub const RB_SETEXTENDEDSTYLE: ::UINT = ::WM_USER + 41;
+pub const RB_GETEXTENDEDSTYLE: ::UINT = ::WM_USER + 42;
+pub const RB_PUSHCHEVRON: ::UINT = ::WM_USER + 43;
+pub const RB_SETBANDWIDTH: ::UINT = ::WM_USER + 44;
+pub const RBN_HEIGHTCHANGE: ::UINT = RBN_FIRST - 0;
+pub const RBN_GETOBJECT: ::UINT = RBN_FIRST - 1;
+pub const RBN_LAYOUTCHANGED: ::UINT = RBN_FIRST - 2;
+pub const RBN_AUTOSIZE: ::UINT = RBN_FIRST - 3;
+pub const RBN_BEGINDRAG: ::UINT = RBN_FIRST - 4;
+pub const RBN_ENDDRAG: ::UINT = RBN_FIRST - 5;
+pub const RBN_DELETINGBAND: ::UINT = RBN_FIRST - 6;
+pub const RBN_DELETEDBAND: ::UINT = RBN_FIRST - 7;
+pub const RBN_CHILDSIZE: ::UINT = RBN_FIRST - 8;
+pub const RBN_CHEVRONPUSHED: ::UINT = RBN_FIRST - 10;
+pub const RBN_SPLITTERDRAG: ::UINT = RBN_FIRST - 11;
+pub const RBN_MINMAX: ::UINT = RBN_FIRST - 21;
+pub const RBN_AUTOBREAK: ::UINT = RBN_FIRST - 22;
+STRUCT!{struct NMREBARCHILDSIZE {
+ hdr: ::NMHDR,
+ uBand: ::UINT,
+ wID: ::UINT,
+ rcChild: ::RECT,
+ rcBand: ::RECT,
+}}
+pub type LPNMREBARCHILDSIZE = *mut NMREBARCHILDSIZE;
+STRUCT!{struct NMREBAR {
+ hdr: ::NMHDR,
+ dwMask: ::DWORD,
+ uBand: ::UINT,
+ fStyle: ::UINT,
+ wID: ::UINT,
+ lParam: ::LPARAM,
+}}
+pub type LPNMREBAR = *mut NMREBAR;
+pub const RBNM_ID: ::DWORD = 0x00000001;
+pub const RBNM_STYLE: ::DWORD = 0x00000002;
+pub const RBNM_LPARAM: ::DWORD = 0x00000004;
+STRUCT!{struct NMRBAUTOSIZE {
+ hdr: ::NMHDR,
+ fChanged: ::BOOL,
+ rcTarget: ::RECT,
+ rcActual: ::RECT,
+}}
+pub type LPNMRBAUTOSIZE = *mut NMRBAUTOSIZE;
+STRUCT!{struct NMREBARCHEVRON {
+ hdr: ::NMHDR,
+ uBand: ::UINT,
+ wID: ::UINT,
+ lParam: ::LPARAM,
+ rc: ::RECT,
+ lParamNM: ::LPARAM,
+}}
+pub type LPNMREBARCHEVRON = *mut NMREBARCHEVRON;
+STRUCT!{struct NMREBARSPLITTER {
+ hdr: ::NMHDR,
+ rcSizing: ::RECT,
+}}
+pub type LPNMREBARSPLITTER = *mut NMREBARSPLITTER;
+pub const RBAB_AUTOSIZE: ::UINT = 0x0001;
+pub const RBAB_ADDBAND: ::UINT = 0x0002;
+STRUCT!{struct NMREBARAUTOBREAK {
+ hdr: ::NMHDR,
+ uBand: ::UINT,
+ wID: ::UINT,
+ lParam: ::LPARAM,
+ uMsg: ::UINT,
+ fStyleCurrent: ::UINT,
+ fAutoBreak: ::UINT,
+}}
+pub type LPNMREBARAUTOBREAK = *mut NMREBARAUTOBREAK;
+pub const RBHT_NOWHERE: ::UINT = 0x0001;
+pub const RBHT_CAPTION: ::UINT = 0x0002;
+pub const RBHT_CLIENT: ::UINT = 0x0003;
+pub const RBHT_GRABBER: ::UINT = 0x0004;
+pub const RBHT_CHEVRON: ::UINT = 0x0008;
+pub const RBHT_SPLITTER: ::UINT = 0x0010;
+STRUCT!{struct RBHITTESTINFO {
+ pt: ::POINT,
+ flags: ::UINT,
+ iBand: ::c_int,
+}}
+pub type LPRBHITTESTINFO = *mut RBHITTESTINFO;
+pub type LPTOOLINFOA = LPTTTOOLINFOA;
+pub type LPTOOLINFOW = LPTTTOOLINFOW;
+pub type TOOLINFOA = TTTOOLINFOA;
+pub type TOOLINFOW = TTTOOLINFOW;
+STRUCT!{struct TTTOOLINFOA {
+ cbSize: ::UINT,
+ uFlags: ::UINT,
+ hwnd: ::HWND,
+ uId: ::UINT_PTR,
+ rect: ::RECT,
+ hinst: ::HINSTANCE,
+ lpszText: ::LPSTR,
+ lParam: ::LPARAM,
+ lpReserved: *mut ::c_void,
+}}
+pub type PTTTOOLINFOA = *mut TTTOOLINFOA;
+pub type LPTTTOOLINFOA = *mut TTTOOLINFOA;
+STRUCT!{struct TTTOOLINFOW {
+ cbSize: ::UINT,
+ uFlags: ::UINT,
+ hwnd: ::HWND,
+ uId: ::UINT_PTR,
+ rect: ::RECT,
+ hinst: ::HINSTANCE,
+ lpszText: ::LPSTR,
+ lParam: ::LPARAM,
+ lpReserved: *mut ::c_void,
+}}
+pub type PTTTOOLINFOW = *mut TTTOOLINFOW;
+pub type LPTTTOOLINFOW = *mut TTTOOLINFOW;
+pub const TTS_ALWAYSTIP: ::DWORD = 0x01;
+pub const TTS_NOPREFIX: ::DWORD = 0x02;
+pub const TTS_NOANIMATE: ::DWORD = 0x10;
+pub const TTS_NOFADE: ::DWORD = 0x20;
+pub const TTS_BALLOON: ::DWORD = 0x40;
+pub const TTS_CLOSE: ::DWORD = 0x80;
+pub const TTS_USEVISUALSTYLE: ::DWORD = 0x100;
+pub const TTF_IDISHWND: ::UINT = 0x0001;
+pub const TTF_CENTERTIP: ::UINT = 0x0002;
+pub const TTF_RTLREADING: ::UINT = 0x0004;
+pub const TTF_SUBCLASS: ::UINT = 0x0010;
+pub const TTF_TRACK: ::UINT = 0x0020;
+pub const TTF_ABSOLUTE: ::UINT = 0x0080;
+pub const TTF_TRANSPARENT: ::UINT = 0x0100;
+pub const TTF_PARSELINKS: ::UINT = 0x1000;
+pub const TTF_DI_SETITEM: ::UINT = 0x8000;
+pub const TTDT_AUTOMATIC: ::WPARAM = 0;
+pub const TTDT_RESHOW: ::WPARAM = 1;
+pub const TTDT_AUTOPOP: ::WPARAM = 2;
+pub const TTDT_INITIAL: ::WPARAM = 3;
+pub const TTI_NONE: ::WPARAM = 0;
+pub const TTI_INFO: ::WPARAM = 1;
+pub const TTI_WARNING: ::WPARAM = 2;
+pub const TTI_ERROR: ::WPARAM = 3;
+pub const TTI_INFO_LARGE: ::WPARAM = 4;
+pub const TTI_WARNING_LARGE: ::WPARAM = 5;
+pub const TTI_ERROR_LARGE: ::WPARAM = 6;
+pub const TTM_ACTIVATE: ::UINT = ::WM_USER + 1;
+pub const TTM_SETDELAYTIME: ::UINT = ::WM_USER + 3;
+pub const TTM_ADDTOOLA: ::UINT = ::WM_USER + 4;
+pub const TTM_ADDTOOLW: ::UINT = ::WM_USER + 50;
+pub const TTM_DELTOOLA: ::UINT = ::WM_USER + 5;
+pub const TTM_DELTOOLW: ::UINT = ::WM_USER + 51;
+pub const TTM_NEWTOOLRECTA: ::UINT = ::WM_USER + 6;
+pub const TTM_NEWTOOLRECTW: ::UINT = ::WM_USER + 52;
+pub const TTM_RELAYEVENT: ::UINT = ::WM_USER + 7;
+pub const TTM_GETTOOLINFOA: ::UINT = ::WM_USER + 8;
+pub const TTM_GETTOOLINFOW: ::UINT = ::WM_USER + 53;
+pub const TTM_SETTOOLINFOA: ::UINT = ::WM_USER + 9;
+pub const TTM_SETTOOLINFOW: ::UINT = ::WM_USER + 54;
+pub const TTM_HITTESTA: ::UINT = ::WM_USER + 10;
+pub const TTM_HITTESTW: ::UINT = ::WM_USER + 55;
+pub const TTM_GETTEXTA: ::UINT = ::WM_USER + 11;
+pub const TTM_GETTEXTW: ::UINT = ::WM_USER + 56;
+pub const TTM_UPDATETIPTEXTA: ::UINT = ::WM_USER + 12;
+pub const TTM_UPDATETIPTEXTW: ::UINT = ::WM_USER + 57;
+pub const TTM_GETTOOLCOUNT: ::UINT = ::WM_USER + 13;
+pub const TTM_ENUMTOOLSA: ::UINT = ::WM_USER + 14;
+pub const TTM_ENUMTOOLSW: ::UINT = ::WM_USER + 58;
+pub const TTM_GETCURRENTTOOLA: ::UINT = ::WM_USER + 15;
+pub const TTM_GETCURRENTTOOLW: ::UINT = ::WM_USER + 59;
+pub const TTM_WINDOWFROMPOINT: ::UINT = ::WM_USER + 16;
+pub const TTM_TRACKACTIVATE: ::UINT = ::WM_USER + 17;
+pub const TTM_TRACKPOSITION: ::UINT = ::WM_USER + 18;
+pub const TTM_SETTIPBKCOLOR: ::UINT = ::WM_USER + 19;
+pub const TTM_SETTIPTEXTCOLOR: ::UINT = ::WM_USER + 20;
+pub const TTM_GETDELAYTIME: ::UINT = ::WM_USER + 21;
+pub const TTM_GETTIPBKCOLOR: ::UINT = ::WM_USER + 22;
+pub const TTM_GETTIPTEXTCOLOR: ::UINT = ::WM_USER + 23;
+pub const TTM_SETMAXTIPWIDTH: ::UINT = ::WM_USER + 24;
+pub const TTM_GETMAXTIPWIDTH: ::UINT = ::WM_USER + 25;
+pub const TTM_SETMARGIN: ::UINT = ::WM_USER + 26;
+pub const TTM_GETMARGIN: ::UINT = ::WM_USER + 27;
+pub const TTM_POP: ::UINT = ::WM_USER + 28;
+pub const TTM_UPDATE: ::UINT = ::WM_USER + 29;
+pub const TTM_GETBUBBLESIZE: ::UINT = ::WM_USER + 30;
+pub const TTM_ADJUSTRECT: ::UINT = ::WM_USER + 31;
+pub const TTM_SETTITLEA: ::UINT = ::WM_USER + 32;
+pub const TTM_SETTITLEW: ::UINT = ::WM_USER + 33;
+pub const TTM_POPUP: ::UINT = ::WM_USER + 34;
+pub const TTM_GETTITLE: ::UINT = ::WM_USER + 35;
+STRUCT!{struct TTGETTITLE {
+ dwSize: ::DWORD,
+ uTitleBitmap: ::UINT,
+ cch: ::UINT,
+ pszTitle: *mut ::WCHAR,
+}}
+pub type LPTTGETTITLE = *mut TTGETTITLE;
+pub const TTM_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
+pub type LPHITTESTINFOW = LPTTHITTESTINFOW;
+pub type LPHITTESTINFOA = LPTTHITTESTINFOA;
+STRUCT!{struct TTHITTESTINFOA {
+ hwnd: ::HWND,
+ pt: ::POINT,
+ ti: TTTOOLINFOA,
+}}
+pub type LPTTHITTESTINFOA = *mut TTHITTESTINFOA;
+STRUCT!{struct TTHITTESTINFOW {
+ hwnd: ::HWND,
+ pt: ::POINT,
+ ti: TTTOOLINFOW,
+}}
+pub type LPTTHITTESTINFOW = *mut TTHITTESTINFOW;
+pub const TTN_GETDISPINFOA: ::UINT = TTN_FIRST - 0;
+pub const TTN_GETDISPINFOW: ::UINT = TTN_FIRST - 10;
+pub const TTN_SHOW: ::UINT = TTN_FIRST - 1;
+pub const TTN_POP: ::UINT = TTN_FIRST - 2;
+pub const TTN_LINKCLICK: ::UINT = TTN_FIRST - 3;
+pub const TTN_NEEDTEXTA: ::UINT = TTN_GETDISPINFOA;
+pub const TTN_NEEDTEXTW: ::UINT = TTN_GETDISPINFOW;
+pub type TOOLTIPTEXTW = NMTTDISPINFOW;
+pub type TOOLTIPTEXTA = NMTTDISPINFOA;
+pub type LPTOOLTIPTEXTA = LPNMTTDISPINFOA;
+pub type LPTOOLTIPTEXTW = LPNMTTDISPINFOW;
+STRUCT!{nodebug struct NMTTDISPINFOA {
+ hdr: ::NMHDR,
+ lpszText: ::LPSTR,
+ szText: [::c_char; 80],
+ hinst: ::HINSTANCE,
+ uFlags: ::UINT,
+ lParam: ::LPARAM,
+}}
+pub type LPNMTTDISPINFOA = *mut NMTTDISPINFOA;
+STRUCT!{nodebug struct NMTTDISPINFOW {
+ hdr: ::NMHDR,
+ lpszText: ::LPWSTR,
+ szText: [::WCHAR; 80],
+ hinst: ::HINSTANCE,
+ uFlags: ::UINT,
+ lParam: ::LPARAM,
+}}
+pub type LPNMTTDISPINFOW = *mut NMTTDISPINFOW;
+pub const SBARS_SIZEGRIP: ::DWORD = 0x0100;
+pub const SBARS_TOOLTIPS: ::DWORD = 0x0800;
+pub const SBT_TOOLTIPS: ::DWORD = 0x0800;
+pub const SB_SETTEXTA: ::UINT = ::WM_USER + 1;
+pub const SB_SETTEXTW: ::UINT = ::WM_USER + 11;
+pub const SB_GETTEXTA: ::UINT = ::WM_USER + 2;
+pub const SB_GETTEXTW: ::UINT = ::WM_USER + 13;
+pub const SB_GETTEXTLENGTHA: ::UINT = ::WM_USER + 3;
+pub const SB_GETTEXTLENGTHW: ::UINT = ::WM_USER + 12;
+pub const SB_SETPARTS: ::UINT = ::WM_USER + 4;
+pub const SB_GETPARTS: ::UINT = ::WM_USER + 6;
+pub const SB_GETBORDERS: ::UINT = ::WM_USER + 7;
+pub const SB_SETMINHEIGHT: ::UINT = ::WM_USER + 8;
+pub const SB_SIMPLE: ::UINT = ::WM_USER + 9;
+pub const SB_GETRECT: ::UINT = ::WM_USER + 10;
+pub const SB_ISSIMPLE: ::UINT = ::WM_USER + 14;
+pub const SB_SETICON: ::UINT = ::WM_USER + 15;
+pub const SB_SETTIPTEXTA: ::UINT = ::WM_USER + 16;
+pub const SB_SETTIPTEXTW: ::UINT = ::WM_USER + 17;
+pub const SB_GETTIPTEXTA: ::UINT = ::WM_USER + 18;
+pub const SB_GETTIPTEXTW: ::UINT = ::WM_USER + 19;
+pub const SB_GETICON: ::UINT = ::WM_USER + 20;
+pub const SB_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const SB_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const SBT_OWNERDRAW: ::WPARAM = 0x1000;
+pub const SBT_NOBORDERS: ::WPARAM = 0x0100;
+pub const SBT_POPOUT: ::WPARAM = 0x0200;
+pub const SBT_RTLREADING: ::WPARAM = 0x0400;
+pub const SBT_NOTABPARSING: ::WPARAM = 0x0800;
+pub const SB_SETBKCOLOR: ::UINT = CCM_SETBKCOLOR;
+pub const SBN_SIMPLEMODECHANGE: ::UINT = SBN_FIRST - 0;
+pub const SB_SIMPLEID: ::WPARAM = 0x00ff;
+pub const TBS_AUTOTICKS: ::DWORD = 0x0001;
+pub const TBS_VERT: ::DWORD = 0x0002;
+pub const TBS_HORZ: ::DWORD = 0x0000;
+pub const TBS_TOP: ::DWORD = 0x0004;
+pub const TBS_BOTTOM: ::DWORD = 0x0000;
+pub const TBS_LEFT: ::DWORD = 0x0004;
+pub const TBS_RIGHT: ::DWORD = 0x0000;
+pub const TBS_BOTH: ::DWORD = 0x0008;
+pub const TBS_NOTICKS: ::DWORD = 0x0010;
+pub const TBS_ENABLESELRANGE: ::DWORD = 0x0020;
+pub const TBS_FIXEDLENGTH: ::DWORD = 0x0040;
+pub const TBS_NOTHUMB: ::DWORD = 0x0080;
+pub const TBS_TOOLTIPS: ::DWORD = 0x0100;
+pub const TBS_REVERSED: ::DWORD = 0x0200;
+pub const TBS_DOWNISLEFT: ::DWORD = 0x0400;
+pub const TBS_NOTIFYBEFOREMOVE: ::DWORD = 0x0800;
+pub const TBS_TRANSPARENTBKGND: ::DWORD = 0x1000;
+pub const TBM_GETPOS: ::UINT = ::WM_USER;
+pub const TBM_GETRANGEMIN: ::UINT = ::WM_USER + 1;
+pub const TBM_GETRANGEMAX: ::UINT = ::WM_USER + 2;
+pub const TBM_GETTIC: ::UINT = ::WM_USER + 3;
+pub const TBM_SETTIC: ::UINT = ::WM_USER + 4;
+pub const TBM_SETPOS: ::UINT = ::WM_USER + 5;
+pub const TBM_SETRANGE: ::UINT = ::WM_USER + 6;
+pub const TBM_SETRANGEMIN: ::UINT = ::WM_USER + 7;
+pub const TBM_SETRANGEMAX: ::UINT = ::WM_USER + 8;
+pub const TBM_CLEARTICS: ::UINT = ::WM_USER + 9;
+pub const TBM_SETSEL: ::UINT = ::WM_USER + 10;
+pub const TBM_SETSELSTART: ::UINT = ::WM_USER + 11;
+pub const TBM_SETSELEND: ::UINT = ::WM_USER + 12;
+pub const TBM_GETPTICS: ::UINT = ::WM_USER + 14;
+pub const TBM_GETTICPOS: ::UINT = ::WM_USER + 15;
+pub const TBM_GETNUMTICS: ::UINT = ::WM_USER + 16;
+pub const TBM_GETSELSTART: ::UINT = ::WM_USER + 17;
+pub const TBM_GETSELEND: ::UINT = ::WM_USER + 18;
+pub const TBM_CLEARSEL: ::UINT = ::WM_USER + 19;
+pub const TBM_SETTICFREQ: ::UINT = ::WM_USER + 20;
+pub const TBM_SETPAGESIZE: ::UINT = ::WM_USER + 21;
+pub const TBM_GETPAGESIZE: ::UINT = ::WM_USER + 22;
+pub const TBM_SETLINESIZE: ::UINT = ::WM_USER + 23;
+pub const TBM_GETLINESIZE: ::UINT = ::WM_USER + 24;
+pub const TBM_GETTHUMBRECT: ::UINT = ::WM_USER + 25;
+pub const TBM_GETCHANNELRECT: ::UINT = ::WM_USER + 26;
+pub const TBM_SETTHUMBLENGTH: ::UINT = ::WM_USER + 27;
+pub const TBM_GETTHUMBLENGTH: ::UINT = ::WM_USER + 28;
+pub const TBM_SETTOOLTIPS: ::UINT = ::WM_USER + 29;
+pub const TBM_GETTOOLTIPS: ::UINT = ::WM_USER + 30;
+pub const TBM_SETTIPSIDE: ::UINT = ::WM_USER + 31;
+pub const TBTS_TOP: ::WPARAM = 0;
+pub const TBTS_LEFT: ::WPARAM = 1;
+pub const TBTS_BOTTOM: ::WPARAM = 2;
+pub const TBTS_RIGHT: ::WPARAM = 3;
+pub const TBM_SETBUDDY: ::UINT = ::WM_USER + 32;
+pub const TBM_GETBUDDY: ::UINT = ::WM_USER + 33;
+pub const TBM_SETPOSNOTIFY: ::UINT = ::WM_USER + 34;
+pub const TBM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const TBM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const TBCD_TICS: ::DWORD_PTR = 0x0001;
+pub const TBCD_THUMB: ::DWORD_PTR = 0x0001;
+pub const TBCD_CHANNEL: ::DWORD_PTR = 0x0001;
+pub const TB_LINEUP: ::WPARAM = 0;
+pub const TB_LINEDOWN: ::WPARAM = 1;
+pub const TB_PAGEUP: ::WPARAM = 2;
+pub const TB_PAGEDOWN: ::WPARAM = 3;
+pub const TB_THUMBPOSITION: ::WPARAM = 4;
+pub const TB_THUMBTRACK: ::WPARAM = 5;
+pub const TB_TOP: ::WPARAM = 6;
+pub const TB_BOTTOM: ::WPARAM = 7;
+pub const TB_ENDTRACK: ::WPARAM = 8;
+pub const TRBN_THUMBPOSCHANGING: ::UINT = TRBN_FIRST - 1;
+STRUCT!{struct NMTRBTHUMBPOSCHANGING {
+ hdr: ::NMHDR,
+ dwPos: ::DWORD,
+ nReason: ::c_int,
+}}
+STRUCT!{struct DRAGLISTINFO {
+ uNotification: ::UINT,
+ hWnd: ::HWND,
+ ptCursor: ::POINT,
+}}
+pub type LPDRAGLISTINFO = *mut DRAGLISTINFO;
+pub const DL_BEGINDRAG: ::UINT = ::WM_USER + 133;
+pub const DL_DRAGGING: ::UINT = ::WM_USER + 134;
+pub const DL_DROPPED: ::UINT = ::WM_USER + 135;
+pub const DL_CANCELDRAG: ::UINT = ::WM_USER + 136;
+pub const DL_CURSORSET: ::UINT = 0;
+pub const DL_STOPCURSOR: ::UINT = 1;
+pub const DL_COPYCURSOR: ::UINT = 2;
+pub const DL_MOVECURSOR: ::UINT = 3;
+STRUCT!{struct UDACCEL {
+ nSec: ::UINT,
+ nInc: ::UINT,
+}}
+pub type LPUDACCEL = *mut UDACCEL;
+pub const UD_MAXVAL: ::c_short = 0x7fff;
+pub const UD_MINVAL: ::c_short = 0 - UD_MAXVAL;
+pub const UDS_WRAP: ::DWORD = 0x0001;
+pub const UDS_SETBUDDYINT: ::DWORD = 0x0002;
+pub const UDS_ALIGNRIGHT: ::DWORD = 0x0004;
+pub const UDS_ALIGNLEFT: ::DWORD = 0x0008;
+pub const UDS_AUTOBUDDY: ::DWORD = 0x0010;
+pub const UDS_ARROWKEYS: ::DWORD = 0x0020;
+pub const UDS_HORZ: ::DWORD = 0x0040;
+pub const UDS_NOTHOUSANDS: ::DWORD = 0x0080;
+pub const UDS_HOTTRACK: ::DWORD = 0x0100;
+pub const UDM_SETRANGE: ::UINT = ::WM_USER + 101;
+pub const UDM_GETRANGE: ::UINT = ::WM_USER + 102;
+pub const UDM_SETPOS: ::UINT = ::WM_USER + 103;
+pub const UDM_GETPOS: ::UINT = ::WM_USER + 104;
+pub const UDM_SETBUDDY: ::UINT = ::WM_USER + 105;
+pub const UDM_GETBUDDY: ::UINT = ::WM_USER + 106;
+pub const UDM_SETACCEL: ::UINT = ::WM_USER + 107;
+pub const UDM_GETACCEL: ::UINT = ::WM_USER + 108;
+pub const UDM_SETBASE: ::UINT = ::WM_USER + 109;
+pub const UDM_GETBASE: ::UINT = ::WM_USER + 110;
+pub const UDM_SETRANGE32: ::UINT = ::WM_USER + 111;
+pub const UDM_GETRANGE32: ::UINT = ::WM_USER + 112;
+pub const UDM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const UDM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const UDM_SETPOS32: ::UINT = ::WM_USER + 113;
+pub const UDM_GETPOS32: ::UINT = ::WM_USER + 114;
+pub type NM_UPDOWN = NMUPDOWN;
+pub type LPNM_UPDOWN = LPNMUPDOWN;
+STRUCT!{struct NMUPDOWN {
+ hdr: ::NMHDR,
+ iPos: ::c_int,
+ iDelta: ::c_int,
+}}
+pub type LPNMUPDOWN = *mut NMUPDOWN;
+pub const UDN_DELTAPOS: ::UINT = UDN_FIRST - 1;
+pub const PBS_SMOOTH: ::DWORD = 0x01;
+pub const PBS_VERTICAL: ::DWORD = 0x04;
+pub const PBM_SETRANGE: ::UINT = ::WM_USER + 1;
+pub const PBM_SETPOS: ::UINT = ::WM_USER + 2;
+pub const PBM_DELTAPOS: ::UINT = ::WM_USER + 3;
+pub const PBM_SETSTEP: ::UINT = ::WM_USER + 4;
+pub const PBM_STEPIT: ::UINT = ::WM_USER + 5;
+pub const PBM_SETRANGE32: ::UINT = ::WM_USER + 6;
+STRUCT!{struct PBRANGE {
+ iLow: ::c_int,
+ iHigh: ::c_int,
+}}
+pub type LPPBRANGE = *mut PBRANGE;
+pub const PBM_GETRANGE: ::UINT = ::WM_USER + 7;
+pub const PBM_GETPOS: ::UINT = ::WM_USER + 8;
+pub const PBM_SETBARCOLOR: ::UINT = ::WM_USER + 9;
+pub const PBM_SETBKCOLOR: ::UINT = CCM_SETBKCOLOR;
+pub const PBM_SETMARQUEE: ::UINT = ::WM_USER + 10;
+pub const PBS_MARQUEE: ::DWORD = 0x08;
+pub const PBS_SMOOTHREVERSE: ::DWORD = 0x10;
+pub const PBM_GETSTEP: ::UINT = ::WM_USER + 13;
+pub const PBM_GETBKCOLOR: ::UINT = ::WM_USER + 14;
+pub const PBM_GETBARCOLOR: ::UINT = ::WM_USER + 15;
+pub const PBM_SETSTATE: ::UINT = ::WM_USER + 16;
+pub const PBM_GETSTATE: ::UINT = ::WM_USER + 17;
+pub const PBST_NORMAL: ::c_int = 0x0001;
+pub const PBST_ERROR: ::c_int = 0x0002;
+pub const PBST_PAUSED: ::c_int = 0x0003;
+pub const HOTKEYF_SHIFT: ::BYTE = 0x01;
+pub const HOTKEYF_CONTROL: ::BYTE = 0x02;
+pub const HOTKEYF_ALT: ::BYTE = 0x04;
+pub const HOTKEYF_EXT: ::BYTE = 0x08;
+pub const HKCOMB_NONE: ::WPARAM = 0x0001;
+pub const HKCOMB_S: ::WPARAM = 0x0002;
+pub const HKCOMB_C: ::WPARAM = 0x0004;
+pub const HKCOMB_A: ::WPARAM = 0x0008;
+pub const HKCOMB_SC: ::WPARAM = 0x0010;
+pub const HKCOMB_SA: ::WPARAM = 0x0020;
+pub const HKCOMB_CA: ::WPARAM = 0x0040;
+pub const HKCOMB_SCA: ::WPARAM = 0x0080;
+pub const HKM_SETHOTKEY: ::UINT = ::WM_USER + 1;
+pub const HKM_GETHOTKEY: ::UINT = ::WM_USER + 2;
+pub const HKM_SETRULES: ::UINT = ::WM_USER + 3;
+pub const CCS_TOP: ::DWORD = 0x00000001;
+pub const CCS_NOMOVEY: ::DWORD = 0x00000002;
+pub const CCS_BOTTOM: ::DWORD = 0x00000003;
+pub const CCS_NORESIZE: ::DWORD = 0x00000004;
+pub const CCS_NOPARENTALIGN: ::DWORD = 0x00000008;
+pub const CCS_ADJUSTABLE: ::DWORD = 0x00000020;
+pub const CCS_NODIVIDER: ::DWORD = 0x00000040;
+pub const CCS_VERT: ::DWORD = 0x00000080;
+pub const CCS_LEFT: ::DWORD = CCS_VERT | CCS_TOP;
+pub const CCS_RIGHT: ::DWORD = CCS_VERT | CCS_BOTTOM;
+pub const CCS_NOMOVEX: ::DWORD = CCS_VERT | CCS_NOMOVEY;
+pub const MAX_LINKID_TEXT: usize = 48;
+pub const L_MAX_URL_LENGTH: usize = 2048 + 32 + 4;
+pub const LWS_TRANSPARENT: ::DWORD = 0x0001;
+pub const LWS_IGNORERETURN: ::DWORD = 0x0002;
+pub const LWS_NOPREFIX: ::DWORD = 0x0004;
+pub const LWS_USEVISUALSTYLE: ::DWORD = 0x0008;
+pub const LWS_USECUSTOMTEXT: ::DWORD = 0x0010;
+pub const LWS_RIGHT: ::DWORD = 0x0020;
+pub const LIF_ITEMINDEX: ::UINT = 0x00000001;
+pub const LIF_STATE: ::UINT = 0x00000002;
+pub const LIF_ITEMID: ::UINT = 0x00000004;
+pub const LIF_URL: ::UINT = 0x00000008;
+pub const LIS_FOCUSED: ::UINT = 0x00000001;
+pub const LIS_ENABLED: ::UINT = 0x00000002;
+pub const LIS_VISITED: ::UINT = 0x00000004;
+pub const LIS_HOTTRACK: ::UINT = 0x00000008;
+pub const LIS_DEFAULTCOLORS: ::UINT = 0x00000010;
+STRUCT!{nodebug struct LITEM {
+ mask: ::UINT,
+ iLink: ::c_int,
+ state: ::UINT,
+ stateMask: ::UINT,
+ szID: [::WCHAR; MAX_LINKID_TEXT],
+ szUrl: [::WCHAR; L_MAX_URL_LENGTH],
+}}
+pub type PLITEM = *mut LITEM;
+STRUCT!{nodebug struct LHITTESTINFO {
+ pt: ::POINT,
+ item: LITEM,
+}}
+pub type PLHITTESTINFO = *mut LHITTESTINFO;
+STRUCT!{nodebug struct NMLINK {
+ hdr: ::NMHDR,
+ item: LITEM,
+}}
+pub type PNMLINK = *mut NMLINK;
+pub const LM_HITTEST: ::UINT = ::WM_USER + 0x300;
+pub const LM_GETIDEALHEIGHT: ::UINT = ::WM_USER + 0x301;
+pub const LM_SETITEM: ::UINT = ::WM_USER + 0x302;
+pub const LM_GETITEM: ::UINT = ::WM_USER + 0x303;
+pub const LM_GETIDEALSIZE: ::UINT = LM_GETIDEALHEIGHT;
+pub const LVS_ICON: ::DWORD = 0x0000;
+pub const LVS_REPORT: ::DWORD = 0x0001;
+pub const LVS_SMALLICON: ::DWORD = 0x0002;
+pub const LVS_LIST: ::DWORD = 0x0003;
+pub const LVS_TYPEMASK: ::DWORD = 0x0003;
+pub const LVS_SINGLESEL: ::DWORD = 0x0004;
+pub const LVS_SHOWSELALWAYS: ::DWORD = 0x0008;
+pub const LVS_SORTASCENDING: ::DWORD = 0x0010;
+pub const LVS_SORTDESCENDING: ::DWORD = 0x0020;
+pub const LVS_SHAREIMAGELISTS: ::DWORD = 0x0040;
+pub const LVS_NOLABELWRAP: ::DWORD = 0x0080;
+pub const LVS_AUTOARRANGE: ::DWORD = 0x0100;
+pub const LVS_EDITLABELS: ::DWORD = 0x0200;
+pub const LVS_OWNERDATA: ::DWORD = 0x1000;
+pub const LVS_NOSCROLL: ::DWORD = 0x2000;
+pub const LVS_TYPESTYLEMASK: ::DWORD = 0xfc00;
+pub const LVS_ALIGNTOP: ::DWORD = 0x0000;
+pub const LVS_ALIGNLEFT: ::DWORD = 0x0800;
+pub const LVS_ALIGNMASK: ::DWORD = 0x0c00;
+pub const LVS_OWNERDRAWFIXED: ::DWORD = 0x0400;
+pub const LVS_NOCOLUMNHEADER: ::DWORD = 0x4000;
+pub const LVS_NOSORTHEADER: ::DWORD = 0x8000;
+pub const LVM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const LVM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const LVM_GETBKCOLOR: ::UINT = LVM_FIRST + 0;
+pub const LVM_SETBKCOLOR: ::UINT = LVM_FIRST + 1;
+pub const LVM_GETIMAGELIST: ::UINT = LVM_FIRST + 2;
+pub const LVM_SETIMAGELIST: ::UINT = LVM_FIRST + 3;
+pub const LVM_GETITEMCOUNT: ::UINT = LVM_FIRST + 4;
+pub const LVSIL_NORMAL: ::c_int = 0;
+pub const LVSIL_SMALL: ::c_int = 1;
+pub const LVSIL_STATE: ::c_int = 2;
+pub const LVSIL_GROUPHEADER: ::c_int = 3;
+pub const LVIF_TEXT: ::UINT = 0x00000001;
+pub const LVIF_IMAGE: ::UINT = 0x00000002;
+pub const LVIF_PARAM: ::UINT = 0x00000004;
+pub const LVIF_STATE: ::UINT = 0x00000008;
+pub const LVIF_INDENT: ::UINT = 0x00000010;
+pub const LVIF_NORECOMPUTE: ::UINT = 0x00000800;
+pub const LVIF_GROUPID: ::UINT = 0x00000100;
+pub const LVIF_COLUMNS: ::UINT = 0x00000200;
+pub const LVIF_COLFMT: ::UINT = 0x00010000;
+pub const LVIS_FOCUSED: ::UINT = 0x0001;
+pub const LVIS_SELECTED: ::UINT = 0x0002;
+pub const LVIS_CUT: ::UINT = 0x0004;
+pub const LVIS_DROPHILITED: ::UINT = 0x0008;
+pub const LVIS_GLOW: ::UINT = 0x0010;
+pub const LVIS_ACTIVATING: ::UINT = 0x0020;
+pub const LVIS_OVERLAYMASK: ::UINT = 0x0F00;
+pub const LVIS_STATEIMAGEMASK: ::UINT = 0xF000;
+#[inline] #[allow(dead_code)]
+pub fn INDEXTOSTATEIMAGEMASK(i: ::UINT) -> ::UINT { i << 12 }
+pub const I_INDENTCALLBACK: ::c_int = -1;
+pub type LV_ITEMA = LVITEMA;
+pub type LV_ITEMW = LVITEMW;
+pub const I_GROUPIDCALLBACK: ::c_int = -1;
+pub const I_GROUPIDNONE: ::c_int = -2;
+STRUCT!{struct LVITEMA {
+ mask: ::UINT,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ state: ::UINT,
+ stateMask: ::UINT,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ lParam: ::LPARAM,
+ iIndent: ::c_int,
+ iGroupId: ::c_int,
+ cColumns: ::UINT,
+ puColumns: ::PUINT,
+ piColFmt: *mut ::c_int,
+ iGroup: ::c_int,
+}}
+pub type LPLVITEMA = *mut LVITEMA;
+STRUCT!{struct LVITEMW {
+ mask: ::UINT,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ state: ::UINT,
+ stateMask: ::UINT,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ lParam: ::LPARAM,
+ iIndent: ::c_int,
+ iGroupId: ::c_int,
+ cColumns: ::UINT,
+ puColumns: ::PUINT,
+ piColFmt: *mut ::c_int,
+ iGroup: ::c_int,
+}}
+pub type LPLVITEMW = *mut LVITEMW;
+pub const LPSTR_TEXTCALLBACKW: ::LPWSTR = (0 - 1) as ::LPWSTR;
+pub const LPSTR_TEXTCALLBACKA: ::LPSTR = (0 - 1) as ::LPSTR;
+pub const I_IMAGECALLBACK: ::c_int = -1;
+pub const I_IMAGENONE: ::c_int = -2;
+pub const I_COLUMNSCALLBACK: ::UINT = -1i32 as ::UINT;
+pub const LVM_GETITEMA: ::UINT = LVM_FIRST + 5;
+pub const LVM_GETITEMW: ::UINT = LVM_FIRST + 75;
+pub const LVM_SETITEMA: ::UINT = LVM_FIRST + 6;
+pub const LVM_SETITEMW: ::UINT = LVM_FIRST + 76;
+pub const LVM_INSERTITEMA: ::UINT = LVM_FIRST + 7;
+pub const LVM_INSERTITEMW: ::UINT = LVM_FIRST + 77;
+pub const LVM_DELETEITEM: ::UINT = LVM_FIRST + 8;
+pub const LVM_DELETEALLITEMS: ::UINT = LVM_FIRST + 9;
+pub const LVM_GETCALLBACKMASK: ::UINT = LVM_FIRST + 10;
+pub const LVM_SETCALLBACKMASK: ::UINT = LVM_FIRST + 11;
+pub const LVM_GETNEXTITEM: ::UINT = LVM_FIRST + 12;
+pub const LVNI_ALL: ::LPARAM = 0x0000;
+pub const LVNI_FOCUSED: ::LPARAM = 0x0001;
+pub const LVNI_SELECTED: ::LPARAM = 0x0002;
+pub const LVNI_CUT: ::LPARAM = 0x0004;
+pub const LVNI_DROPHILITED: ::LPARAM = 0x0008;
+pub const LVNI_STATEMASK: ::LPARAM = LVNI_FOCUSED | LVNI_SELECTED | LVNI_CUT | LVNI_DROPHILITED;
+pub const LVNI_VISIBLEORDER: ::LPARAM = 0x0010;
+pub const LVNI_PREVIOUS: ::LPARAM = 0x0020;
+pub const LVNI_VISIBLEONLY: ::LPARAM = 0x0040;
+pub const LVNI_SAMEGROUPONLY: ::LPARAM = 0x0080;
+pub const LVNI_ABOVE: ::LPARAM = 0x0100;
+pub const LVNI_BELOW: ::LPARAM = 0x0200;
+pub const LVNI_TOLEFT: ::LPARAM = 0x0400;
+pub const LVNI_TORIGHT: ::LPARAM = 0x0800;
+pub const LVNI_DIRECTIONMASK: ::LPARAM = LVNI_ABOVE | LVNI_BELOW | LVNI_TOLEFT | LVNI_TORIGHT;
+pub const LVFI_PARAM: ::UINT = 0x0001;
+pub const LVFI_STRING: ::UINT = 0x0002;
+pub const LVFI_SUBSTRING: ::UINT = 0x0004;
+pub const LVFI_PARTIAL: ::UINT = 0x0008;
+pub const LVFI_WRAP: ::UINT = 0x0020;
+pub const LVFI_NEARESTXY: ::UINT = 0x0040;
+pub type LV_FINDINFOA = LVFINDINFOA;
+pub type LV_FINDINFOW = LVFINDINFOW;
+STRUCT!{struct LVFINDINFOA {
+ flags: ::UINT,
+ psz: ::LPCSTR,
+ lParam: ::LPARAM,
+ pt: ::POINT,
+ vkDirection: ::UINT,
+}}
+pub type LPLVFINDINFOA = *mut LVFINDINFOA;
+STRUCT!{struct LVFINDINFOW {
+ flags: ::UINT,
+ psz: ::LPCWSTR,
+ lParam: ::LPARAM,
+ pt: ::POINT,
+ vkDirection: ::UINT,
+}}
+pub type LPLVFINDINFOW = *mut LVFINDINFOW;
+pub const LVM_FINDITEMA: ::UINT = LVM_FIRST + 13;
+pub const LVM_FINDITEMW: ::UINT = LVM_FIRST + 83;
+pub const LVIR_BOUNDS: ::c_int = 0;
+pub const LVIR_ICON: ::c_int = 1;
+pub const LVIR_LABEL: ::c_int = 2;
+pub const LVIR_SELECTBOUNDS: ::c_int = 3;
+pub const LVM_GETITEMRECT: ::UINT = LVM_FIRST + 14;
+pub const LVM_SETITEMPOSITION: ::UINT = LVM_FIRST + 15;
+pub const LVM_GETITEMPOSITION: ::UINT = LVM_FIRST + 16;
+pub const LVM_GETSTRINGWIDTHA: ::UINT = LVM_FIRST + 17;
+pub const LVM_GETSTRINGWIDTHW: ::UINT = LVM_FIRST + 87;
+pub const LVHT_NOWHERE: ::UINT = 0x00000001;
+pub const LVHT_ONITEMICON: ::UINT = 0x00000002;
+pub const LVHT_ONITEMLABEL: ::UINT = 0x00000004;
+pub const LVHT_ONITEMSTATEICON: ::UINT = 0x00000008;
+pub const LVHT_ONITEM: ::UINT = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON;
+pub const LVHT_ABOVE: ::UINT = 0x00000008;
+pub const LVHT_BELOW: ::UINT = 0x00000010;
+pub const LVHT_TORIGHT: ::UINT = 0x00000020;
+pub const LVHT_TOLEFT: ::UINT = 0x00000040;
+pub const LVHT_EX_GROUP_HEADER: ::UINT = 0x10000000;
+pub const LVHT_EX_GROUP_FOOTER: ::UINT = 0x20000000;
+pub const LVHT_EX_GROUP_COLLAPSE: ::UINT = 0x40000000;
+pub const LVHT_EX_GROUP_BACKGROUND: ::UINT = 0x80000000;
+pub const LVHT_EX_GROUP_STATEICON: ::UINT = 0x01000000;
+pub const LVHT_EX_GROUP_SUBSETLINK: ::UINT = 0x02000000;
+pub const LVHT_EX_GROUP: ::UINT = LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE
+ | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON
+ | LVHT_EX_GROUP_SUBSETLINK;
+pub const LVHT_EX_ONCONTENTS: ::UINT = 0x04000000;
+pub const LVHT_EX_FOOTER: ::UINT = 0x08000000;
+pub type LV_HITTESTINFO = LVHITTESTINFO;
+STRUCT!{struct LVHITTESTINFO {
+ pt: ::POINT,
+ flags: ::UINT,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ iGroup: ::c_int,
+}}
+pub type LPLVHITTESTINFO = *mut LVHITTESTINFO;
+pub const LVM_HITTEST: ::UINT = LVM_FIRST + 18;
+pub const LVM_ENSUREVISIBLE: ::UINT = LVM_FIRST + 19;
+pub const LVM_SCROLL: ::UINT = LVM_FIRST + 20;
+pub const LVM_REDRAWITEMS: ::UINT = LVM_FIRST + 21;
+pub const LVA_DEFAULT: ::WPARAM = 0x0000;
+pub const LVA_ALIGNLEFT: ::WPARAM = 0x0001;
+pub const LVA_ALIGNTOP: ::WPARAM = 0x0002;
+pub const LVA_SNAPTOGRID: ::WPARAM = 0x0005;
+pub const LVM_ARRANGE: ::UINT = LVM_FIRST + 22;
+pub const LVM_EDITLABELA: ::UINT = LVM_FIRST + 23;
+pub const LVM_EDITLABELW: ::UINT = LVM_FIRST + 118;
+pub const LVM_GETEDITCONTROL: ::UINT = LVM_FIRST + 24;
+pub type LV_COLUMNA = LVCOLUMNA;
+pub type LV_COLUMNW = LVCOLUMNW;
+STRUCT!{struct LVCOLUMNA {
+ mask: ::UINT,
+ fmt: ::c_int,
+ cx: ::c_int,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iSubItem: ::c_int,
+ iImage: ::c_int,
+ iOrder: ::c_int,
+ cxMin: ::c_int,
+ cxDefault: ::c_int,
+ cxIdeal: ::c_int,
+}}
+pub type LPLVCOLUMNA = *mut LVCOLUMNA;
+STRUCT!{struct LVCOLUMNW {
+ mask: ::UINT,
+ fmt: ::c_int,
+ cx: ::c_int,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iSubItem: ::c_int,
+ iImage: ::c_int,
+ iOrder: ::c_int,
+ cxMin: ::c_int,
+ cxDefault: ::c_int,
+ cxIdeal: ::c_int,
+}}
+pub type LPLVCOLUMNW = *mut LVCOLUMNW;
+pub const LVCF_FMT: ::UINT = 0x0001;
+pub const LVCF_WIDTH: ::UINT = 0x0002;
+pub const LVCF_TEXT: ::UINT = 0x0004;
+pub const LVCF_SUBITEM: ::UINT = 0x0008;
+pub const LVCF_IMAGE: ::UINT = 0x0010;
+pub const LVCF_ORDER: ::UINT = 0x0020;
+pub const LVCF_MINWIDTH: ::UINT = 0x0040;
+pub const LVCF_DEFAULTWIDTH: ::UINT = 0x0080;
+pub const LVCF_IDEALWIDTH: ::UINT = 0x0100;
+pub const LVCFMT_LEFT: ::c_int = 0x0000;
+pub const LVCFMT_RIGHT: ::c_int = 0x0001;
+pub const LVCFMT_CENTER: ::c_int = 0x0002;
+pub const LVCFMT_JUSTIFYMASK: ::c_int = 0x0003;
+pub const LVCFMT_IMAGE: ::c_int = 0x0800;
+pub const LVCFMT_BITMAP_ON_RIGHT: ::c_int = 0x1000;
+pub const LVCFMT_COL_HAS_IMAGES: ::c_int = 0x8000;
+pub const LVCFMT_FIXED_WIDTH: ::c_int = 0x00100;
+pub const LVCFMT_NO_DPI_SCALE: ::c_int = 0x40000;
+pub const LVCFMT_FIXED_RATIO: ::c_int = 0x80000;
+pub const LVCFMT_LINE_BREAK: ::c_int = 0x100000;
+pub const LVCFMT_FILL: ::c_int = 0x200000;
+pub const LVCFMT_WRAP: ::c_int = 0x400000;
+pub const LVCFMT_NO_TITLE: ::c_int = 0x800000;
+pub const LVCFMT_TILE_PLACEMENTMASK: ::c_int = LVCFMT_LINE_BREAK | LVCFMT_FILL;
+pub const LVCFMT_SPLITBUTTON: ::c_int = 0x1000000;
+pub const LVM_GETCOLUMNA: ::UINT = LVM_FIRST + 25;
+pub const LVM_GETCOLUMNW: ::UINT = LVM_FIRST + 95;
+pub const LVM_SETCOLUMNA: ::UINT = LVM_FIRST + 26;
+pub const LVM_SETCOLUMNW: ::UINT = LVM_FIRST + 96;
+pub const LVM_INSERTCOLUMNA: ::UINT = LVM_FIRST + 27;
+pub const LVM_INSERTCOLUMNW: ::UINT = LVM_FIRST + 97;
+pub const LVM_DELETECOLUMN: ::UINT = LVM_FIRST + 28;
+pub const LVM_GETCOLUMNWIDTH: ::UINT = LVM_FIRST + 29;
+pub const LVM_SETCOLUMNWIDTH: ::UINT = LVM_FIRST + 30;
+pub const LVM_GETHEADER: ::UINT = LVM_FIRST + 31;
+pub const LVM_CREATEDRAGIMAGE: ::UINT = LVM_FIRST + 33;
+pub const LVM_GETVIEWRECT: ::UINT = LVM_FIRST + 34;
+pub const LVM_GETTEXTCOLOR: ::UINT = LVM_FIRST + 35;
+pub const LVM_SETTEXTCOLOR: ::UINT = LVM_FIRST + 36;
+pub const LVM_GETTEXTBKCOLOR: ::UINT = LVM_FIRST + 37;
+pub const LVM_SETTEXTBKCOLOR: ::UINT = LVM_FIRST + 38;
+pub const LVM_GETTOPINDEX: ::UINT = LVM_FIRST + 39;
+pub const LVM_GETCOUNTPERPAGE: ::UINT = LVM_FIRST + 40;
+pub const LVM_GETORIGIN: ::UINT = LVM_FIRST + 41;
+pub const LVM_UPDATE: ::UINT = LVM_FIRST + 42;
+pub const LVM_SETITEMSTATE: ::UINT = LVM_FIRST + 43;
+pub const LVM_GETITEMSTATE: ::UINT = LVM_FIRST + 44;
+pub const LVM_GETITEMTEXTA: ::UINT = LVM_FIRST + 45;
+pub const LVM_GETITEMTEXTW: ::UINT = LVM_FIRST + 115;
+pub const LVM_SETITEMTEXTA: ::UINT = LVM_FIRST + 46;
+pub const LVM_SETITEMTEXTW: ::UINT = LVM_FIRST + 116;
+pub const LVM_SETITEMCOUNT: ::UINT = LVM_FIRST + 47;
+pub const LVM_SORTITEMS: ::UINT = LVM_FIRST + 48;
+pub const LVM_SETITEMPOSITION32: ::UINT = LVM_FIRST + 49;
+pub const LVM_GETSELECTEDCOUNT: ::UINT = LVM_FIRST + 50;
+pub const LVM_GETITEMSPACING: ::UINT = LVM_FIRST + 51;
+pub const LVM_GETISEARCHSTRINGA: ::UINT = LVM_FIRST + 52;
+pub const LVM_GETISEARCHSTRINGW: ::UINT = LVM_FIRST + 117;
+pub const LVM_SETICONSPACING: ::UINT = LVM_FIRST + 53;
+pub const LVM_SETEXTENDEDLISTVIEWSTYLE: ::UINT = LVM_FIRST + 54;
+pub const LVM_GETEXTENDEDLISTVIEWSTYLE: ::UINT = LVM_FIRST + 55;
+pub const LVSICF_NOINVALIDATEALL: ::LPARAM = 0x00000001;
+pub const LVSICF_NOSCROLL: ::LPARAM = 0x00000002;
+pub const LVS_EX_GRIDLINES: ::DWORD = 0x00000001;
+pub const LVS_EX_SUBITEMIMAGES: ::DWORD = 0x00000002;
+pub const LVS_EX_CHECKBOXES: ::DWORD = 0x00000004;
+pub const LVS_EX_TRACKSELECT: ::DWORD = 0x00000008;
+pub const LVS_EX_HEADERDRAGDROP: ::DWORD = 0x00000010;
+pub const LVS_EX_FULLROWSELECT: ::DWORD = 0x00000020;
+pub const LVS_EX_ONECLICKACTIVATE: ::DWORD = 0x00000040;
+pub const LVS_EX_TWOCLICKACTIVATE: ::DWORD = 0x00000080;
+pub const LVS_EX_FLATSB: ::DWORD = 0x00000100;
+pub const LVS_EX_REGIONAL: ::DWORD = 0x00000200;
+pub const LVS_EX_INFOTIP: ::DWORD = 0x00000400;
+pub const LVS_EX_UNDERLINEHOT: ::DWORD = 0x00000800;
+pub const LVS_EX_UNDERLINECOLD: ::DWORD = 0x00001000;
+pub const LVS_EX_MULTIWORKAREAS: ::DWORD = 0x00002000;
+pub const LVS_EX_LABELTIP: ::DWORD = 0x00004000;
+pub const LVS_EX_BORDERSELECT: ::DWORD = 0x00008000;
+pub const LVS_EX_DOUBLEBUFFER: ::DWORD = 0x00010000;
+pub const LVS_EX_HIDELABELS: ::DWORD = 0x00020000;
+pub const LVS_EX_SINGLEROW: ::DWORD = 0x00040000;
+pub const LVS_EX_SNAPTOGRID: ::DWORD = 0x00080000;
+pub const LVS_EX_SIMPLESELECT: ::DWORD = 0x00100000;
+pub const LVS_EX_JUSTIFYCOLUMNS: ::DWORD = 0x00200000;
+pub const LVS_EX_TRANSPARENTBKGND: ::DWORD = 0x00400000;
+pub const LVS_EX_TRANSPARENTSHADOWTEXT: ::DWORD = 0x00800000;
+pub const LVS_EX_AUTOAUTOARRANGE: ::DWORD = 0x01000000;
+pub const LVS_EX_HEADERINALLVIEWS: ::DWORD = 0x02000000;
+pub const LVS_EX_AUTOCHECKSELECT: ::DWORD = 0x08000000;
+pub const LVS_EX_AUTOSIZECOLUMNS: ::DWORD = 0x10000000;
+pub const LVS_EX_COLUMNSNAPPOINTS: ::DWORD = 0x40000000;
+pub const LVS_EX_COLUMNOVERFLOW: ::DWORD = 0x80000000;
+pub const LVM_GETSUBITEMRECT: ::UINT = LVM_FIRST + 56;
+pub const LVM_SUBITEMHITTEST: ::UINT = LVM_FIRST + 57;
+pub const LVM_SETCOLUMNORDERARRAY: ::UINT = LVM_FIRST + 58;
+pub const LVM_GETCOLUMNORDERARRAY: ::UINT = LVM_FIRST + 59;
+pub const LVM_SETHOTITEM: ::UINT = LVM_FIRST + 60;
+pub const LVM_GETHOTITEM: ::UINT = LVM_FIRST + 61;
+pub const LVM_SETHOTCURSOR: ::UINT = LVM_FIRST + 62;
+pub const LVM_GETHOTCURSOR: ::UINT = LVM_FIRST + 63;
+pub const LVM_APPROXIMATEVIEWRECT: ::UINT = LVM_FIRST + 64;
+pub const LV_MAX_WORKAREAS: ::WPARAM = 16;
+pub const LVM_SETWORKAREAS: ::UINT = LVM_FIRST + 65;
+pub const LVM_GETWORKAREAS: ::UINT = LVM_FIRST + 70;
+pub const LVM_GETNUMBEROFWORKAREAS: ::UINT = LVM_FIRST + 73;
+pub const LVM_GETSELECTIONMARK: ::UINT = LVM_FIRST + 66;
+pub const LVM_SETSELECTIONMARK: ::UINT = LVM_FIRST + 67;
+pub const LVM_SETHOVERTIME: ::UINT = LVM_FIRST + 71;
+pub const LVM_GETHOVERTIME: ::UINT = LVM_FIRST + 72;
+pub const LVM_SETTOOLTIPS: ::UINT = LVM_FIRST + 74;
+pub const LVM_GETTOOLTIPS: ::UINT = LVM_FIRST + 78;
+pub const LVM_SORTITEMSEX: ::UINT = LVM_FIRST + 81;
+STRUCT!{struct LVBKIMAGEA {
+ ulFlags: ::ULONG,
+ hbm: ::HBITMAP,
+ pszImage: ::LPSTR,
+ cchImageMax: ::UINT,
+ xOffsetPercent: ::c_int,
+ yOffsetPercent: ::c_int,
+}}
+pub type LPLVBKIMAGEA = *mut LVBKIMAGEA;
+STRUCT!{struct LVBKIMAGEW {
+ ulFlags: ::ULONG,
+ hbm: ::HBITMAP,
+ pszImage: ::LPWSTR,
+ cchImageMax: ::UINT,
+ xOffsetPercent: ::c_int,
+ yOffsetPercent: ::c_int,
+}}
+pub type LPLVBKIMAGEW = *mut LVBKIMAGEW;
+pub const LVBKIF_SOURCE_NONE: ::ULONG = 0x00000000;
+pub const LVBKIF_SOURCE_HBITMAP: ::ULONG = 0x00000001;
+pub const LVBKIF_SOURCE_URL: ::ULONG = 0x00000002;
+pub const LVBKIF_SOURCE_MASK: ::ULONG = 0x00000003;
+pub const LVBKIF_STYLE_NORMAL: ::ULONG = 0x00000000;
+pub const LVBKIF_STYLE_TILE: ::ULONG = 0x00000010;
+pub const LVBKIF_STYLE_MASK: ::ULONG = 0x00000010;
+pub const LVBKIF_FLAG_TILEOFFSET: ::ULONG = 0x00000100;
+pub const LVBKIF_TYPE_WATERMARK: ::ULONG = 0x10000000;
+pub const LVBKIF_FLAG_ALPHABLEND: ::ULONG = 0x20000000;
+pub const LVM_SETBKIMAGEA: ::UINT = LVM_FIRST + 68;
+pub const LVM_SETBKIMAGEW: ::UINT = LVM_FIRST + 138;
+pub const LVM_GETBKIMAGEA: ::UINT = LVM_FIRST + 69;
+pub const LVM_GETBKIMAGEW: ::UINT = LVM_FIRST + 139;
+pub const LVM_SETSELECTEDCOLUMN: ::UINT = LVM_FIRST + 140;
+pub const LV_VIEW_ICON: ::DWORD = 0x0000;
+pub const LV_VIEW_DETAILS: ::DWORD = 0x0001;
+pub const LV_VIEW_SMALLICON: ::DWORD = 0x0002;
+pub const LV_VIEW_LIST: ::DWORD = 0x0003;
+pub const LV_VIEW_TILE: ::DWORD = 0x0004;
+pub const LV_VIEW_MAX: ::DWORD = 0x0004;
+pub const LVM_SETVIEW: ::UINT = LVM_FIRST + 142;
+pub const LVM_GETVIEW: ::UINT = LVM_FIRST + 143;
+pub const LVGF_NONE: ::UINT = 0x00000000;
+pub const LVGF_HEADER: ::UINT = 0x00000001;
+pub const LVGF_FOOTER: ::UINT = 0x00000002;
+pub const LVGF_STATE: ::UINT = 0x00000004;
+pub const LVGF_ALIGN: ::UINT = 0x00000008;
+pub const LVGF_GROUPID: ::UINT = 0x00000010;
+pub const LVGF_SUBTITLE: ::UINT = 0x00000100;
+pub const LVGF_TASK: ::UINT = 0x00000200;
+pub const LVGF_DESCRIPTIONTOP: ::UINT = 0x00000400;
+pub const LVGF_DESCRIPTIONBOTTOM: ::UINT = 0x00000800;
+pub const LVGF_TITLEIMAGE: ::UINT = 0x00001000;
+pub const LVGF_EXTENDEDIMAGE: ::UINT = 0x00002000;
+pub const LVGF_ITEMS: ::UINT = 0x00004000;
+pub const LVGF_SUBSET: ::UINT = 0x00008000;
+pub const LVGF_SUBSETITEMS: ::UINT = 0x00010000;
+pub const LVGS_NORMAL: ::UINT = 0x00000000;
+pub const LVGS_COLLAPSED: ::UINT = 0x00000001;
+pub const LVGS_HIDDEN: ::UINT = 0x00000002;
+pub const LVGS_NOHEADER: ::UINT = 0x00000004;
+pub const LVGS_COLLAPSIBLE: ::UINT = 0x00000008;
+pub const LVGS_FOCUSED: ::UINT = 0x00000010;
+pub const LVGS_SELECTED: ::UINT = 0x00000020;
+pub const LVGS_SUBSETED: ::UINT = 0x00000040;
+pub const LVGS_SUBSETLINKFOCUSED: ::UINT = 0x00000080;
+pub const LVGA_HEADER_LEFT: ::UINT = 0x00000001;
+pub const LVGA_HEADER_CENTER: ::UINT = 0x00000002;
+pub const LVGA_HEADER_RIGHT: ::UINT = 0x00000004;
+pub const LVGA_FOOTER_LEFT: ::UINT = 0x00000008;
+pub const LVGA_FOOTER_CENTER: ::UINT = 0x00000010;
+pub const LVGA_FOOTER_RIGHT: ::UINT = 0x00000020;
+STRUCT!{struct LVGROUP {
+ cbSize: ::UINT,
+ mask: ::UINT,
+ pszHeader: ::LPWSTR,
+ cchHeader: ::c_int,
+ pszFooter: ::LPWSTR,
+ cchFooter: ::c_int,
+ iGroupId: ::c_int,
+ stateMask: ::UINT,
+ state: ::UINT,
+ uAlign: ::UINT,
+ pszSubtitle: ::LPWSTR,
+ cchSubtitle: ::UINT,
+ pszTask: ::LPWSTR,
+ cchTask: ::UINT,
+ pszDescriptionTop: ::LPWSTR,
+ cchDescriptionTop: ::UINT,
+ pszDescriptionBottom: ::LPWSTR,
+ cchDescriptionBottom: ::UINT,
+ iTitleImage: ::c_int,
+ iExtendedImage: ::c_int,
+ iFirstItem: ::c_int,
+ cItems: ::UINT,
+ pszSubsetTitle: ::LPWSTR,
+ cchSubsetTitle: ::UINT,
+}}
+pub type PLVGROUP = *mut LVGROUP;
+pub const LVM_INSERTGROUP: ::UINT = LVM_FIRST + 145;
+pub const LVM_SETGROUPINFO: ::UINT = LVM_FIRST + 147;
+pub const LVM_GETGROUPINFO: ::UINT = LVM_FIRST + 149;
+pub const LVM_REMOVEGROUP: ::UINT = LVM_FIRST + 150;
+pub const LVM_MOVEGROUP: ::UINT = LVM_FIRST + 151;
+pub const LVM_GETGROUPCOUNT: ::UINT = LVM_FIRST + 152;
+pub const LVM_GETGROUPINFOBYINDEX: ::UINT = LVM_FIRST + 153;
+pub const LVM_MOVEITEMTOGROUP: ::UINT = LVM_FIRST + 154;
+pub const LVM_GETGROUPRECT: ::UINT = LVM_FIRST + 98;
+pub const LVGGR_GROUP: ::LPARAM = 0;
+pub const LVGGR_HEADER: ::LPARAM = 1;
+pub const LVGGR_LABEL: ::LPARAM = 2;
+pub const LVGGR_SUBSETLINK: ::LPARAM = 3;
+pub const LVGMF_NONE: ::UINT = 0x00000000;
+pub const LVGMF_BORDERSIZE: ::UINT = 0x00000001;
+pub const LVGMF_BORDERCOLOR: ::UINT = 0x00000002;
+pub const LVGMF_TEXTCOLOR: ::UINT = 0x00000004;
+STRUCT!{struct LVGROUPMETRICS {
+ cbSize: ::UINT,
+ mask: ::UINT,
+ Left: ::UINT,
+ Top: ::UINT,
+ Right: ::UINT,
+ Bottom: ::UINT,
+ crLeft: ::COLORREF,
+ crTop: ::COLORREF,
+ crRight: ::COLORREF,
+ crBottom: ::COLORREF,
+ crHeader: ::COLORREF,
+ crFooter: ::COLORREF,
+}}
+pub type PLVGROUPMETRICS = *mut LVGROUPMETRICS;
+pub const LVM_SETGROUPMETRICS: ::UINT = LVM_FIRST + 155;
+pub const LVM_GETGROUPMETRICS: ::UINT = LVM_FIRST + 156;
+pub const LVM_ENABLEGROUPVIEW: ::UINT = LVM_FIRST + 157;
+pub const LVM_SORTGROUPS: ::UINT = LVM_FIRST + 158;
+pub type PFNLVGROUPCOMPARE = Option<unsafe extern "system" fn(
+ ::c_int, ::c_int, *mut ::c_void,
+) -> ::c_int>;
+STRUCT!{nodebug struct LVINSERTGROUPSORTED {
+ pfnGroupCompare: PFNLVGROUPCOMPARE,
+ pvData: *mut ::c_void,
+ lvGroup: LVGROUP,
+}}
+pub type PLVINSERTGROUPSORTED = *mut LVINSERTGROUPSORTED;
+pub const LVM_INSERTGROUPSORTED: ::UINT = LVM_FIRST + 159;
+pub const LVM_REMOVEALLGROUPS: ::UINT = LVM_FIRST + 160;
+pub const LVM_HASGROUP: ::UINT = LVM_FIRST + 161;
+pub const LVM_GETGROUPSTATE: ::UINT = LVM_FIRST + 92;
+pub const LVM_GETFOCUSEDGROUP: ::UINT = LVM_FIRST + 93;
+pub const LVTVIF_AUTOSIZE: ::DWORD = 0x00000000;
+pub const LVTVIF_FIXEDWIDTH: ::DWORD = 0x00000001;
+pub const LVTVIF_FIXEDHEIGHT: ::DWORD = 0x00000002;
+pub const LVTVIF_FIXEDSIZE: ::DWORD = 0x00000003;
+pub const LVTVIF_EXTENDED: ::DWORD = 0x00000004;
+pub const LVTVIM_TILESIZE: ::DWORD = 0x00000001;
+pub const LVTVIM_COLUMNS: ::DWORD = 0x00000002;
+pub const LVTVIM_LABELMARGIN: ::DWORD = 0x00000004;
+STRUCT!{struct LVTILEVIEWINFO {
+ cbSize: ::UINT,
+ dwMask: ::DWORD,
+ dwFlags: ::DWORD,
+ sizeTile: ::SIZE,
+ cLines: ::c_int,
+ rcLabelMargin: ::RECT,
+}}
+pub type PLVTILEVIEWINFO = *mut LVTILEVIEWINFO;
+STRUCT!{struct LVTILEINFO {
+ cbSize: ::UINT,
+ iItem: ::c_int,
+ cColumns: ::UINT,
+ puColumns: ::PUINT,
+ piColFmt: *mut ::c_int,
+}}
+pub type PLVTILEINFO = *mut LVTILEINFO;
+pub const LVM_SETTILEVIEWINFO: ::UINT = LVM_FIRST + 162;
+pub const LVM_GETTILEVIEWINFO: ::UINT = LVM_FIRST + 163;
+pub const LVM_SETTILEINFO: ::UINT = LVM_FIRST + 164;
+pub const LVM_GETTILEINFO: ::UINT = LVM_FIRST + 165;
+STRUCT!{struct LVINSERTMARK {
+ cbSize: ::UINT,
+ dwFlags: ::DWORD,
+ iItem: ::c_int,
+ dwReserved: ::DWORD,
+}}
+pub type LPLVINSERTMARK = *mut LVINSERTMARK;
+pub const LVIM_AFTER: ::DWORD = 0x00000001;
+pub const LVM_SETINSERTMARK: ::UINT = LVM_FIRST + 166;
+pub const LVM_GETINSERTMARK: ::UINT = LVM_FIRST + 167;
+pub const LVM_INSERTMARKHITTEST: ::UINT = LVM_FIRST + 168;
+pub const LVM_GETINSERTMARKRECT: ::UINT = LVM_FIRST + 169;
+pub const LVM_SETINSERTMARKCOLOR: ::UINT = LVM_FIRST + 170;
+pub const LVM_GETINSERTMARKCOLOR: ::UINT = LVM_FIRST + 171;
+STRUCT!{struct LVSETINFOTIP {
+ cbSize: ::UINT,
+ dwFlags: ::DWORD,
+ pszText: ::LPWSTR,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+}}
+pub type PLVSETINFOTIP = *mut LVSETINFOTIP;
+pub const LVM_SETINFOTIP: ::UINT = LVM_FIRST + 173;
+pub const LVM_GETSELECTEDCOLUMN: ::UINT = LVM_FIRST + 174;
+pub const LVM_ISGROUPVIEWENABLED: ::UINT = LVM_FIRST + 175;
+pub const LVM_GETOUTLINECOLOR: ::UINT = LVM_FIRST + 176;
+pub const LVM_SETOUTLINECOLOR: ::UINT = LVM_FIRST + 177;
+pub const LVM_CANCELEDITLABEL: ::UINT = LVM_FIRST + 179;
+pub const LVM_MAPINDEXTOID: ::UINT = LVM_FIRST + 180;
+pub const LVM_MAPIDTOINDEX: ::UINT = LVM_FIRST + 181;
+pub const LVM_ISITEMVISIBLE: ::UINT = LVM_FIRST + 182;
+pub const LVM_GETEMPTYTEXT: ::UINT = LVM_FIRST + 204;
+pub const LVM_GETFOOTERRECT: ::UINT = LVM_FIRST + 205;
+pub const LVFF_ITEMCOUNT: ::UINT = 0x00000001;
+STRUCT!{struct LVFOOTERINFO {
+ mask: ::UINT,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ cItems: ::UINT,
+}}
+pub type LPLVFOOTERINFO = *mut LVFOOTERINFO;
+pub const LVM_GETFOOTERINFO: ::UINT = LVM_FIRST + 206;
+pub const LVM_GETFOOTERITEMRECT: ::UINT = LVM_FIRST + 207;
+pub const LVFIF_TEXT: ::UINT = 0x00000001;
+pub const LVFIF_STATE: ::UINT = 0x00000002;
+pub const LVFIS_FOCUSED: ::UINT = 0x0001;
+STRUCT!{struct LVFOOTERITEM {
+ mask: ::UINT,
+ iItem: ::c_int,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ state: ::UINT,
+ stateMask: ::UINT,
+}}
+pub type LPLVFOOTERITEM = *mut LVFOOTERITEM;
+pub const LVM_GETFOOTERITEM: ::UINT = LVM_FIRST + 208;
+STRUCT!{struct LVITEMINDEX {
+ iItem: ::c_int,
+ iGroup: ::c_int,
+}}
+pub type PLVITEMINDEX = *mut LVITEMINDEX;
+pub const LVM_GETITEMINDEXRECT: ::UINT = LVM_FIRST + 209;
+pub const LVM_SETITEMINDEXSTATE: ::UINT = LVM_FIRST + 210;
+pub const LVM_GETNEXTITEMINDEX: ::UINT = LVM_FIRST + 211;
+pub type LPNM_LISTVIEW = LPNMLISTVIEW;
+pub type NM_LISTVIEW = NMLISTVIEW;
+STRUCT!{struct NMLISTVIEW {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ uNewState: ::UINT,
+ uOldState: ::UINT,
+ uChanged: ::UINT,
+ ptAction: ::POINT,
+ lParam: ::LPARAM,
+}}
+pub type LPNMLISTVIEW = *mut NMLISTVIEW;
+STRUCT!{struct NMITEMACTIVATE {
+ hdr: ::NMHDR,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ uNewState: ::UINT,
+ uOldState: ::UINT,
+ uChanged: ::UINT,
+ ptAction: ::POINT,
+ lParam: ::LPARAM,
+ uKeyFlags: ::UINT,
+}}
+pub type LPNMITEMACTIVATE = *mut NMITEMACTIVATE;
+pub const LVKF_ALT: ::UINT = 0x0001;
+pub const LVKF_CONTROL: ::UINT = 0x0002;
+pub const LVKF_SHIFT: ::UINT = 0x0004;
+STRUCT!{struct NMLVCUSTOMDRAW {
+ nmcd: NMCUSTOMDRAW,
+ clrText: ::COLORREF,
+ clrTextBk: ::COLORREF,
+ iSubItem: ::c_int,
+ dwItemType: ::DWORD,
+ clrFace: ::COLORREF,
+ iIconEffect: ::c_int,
+ iIconPhase: ::c_int,
+ iPartId: ::c_int,
+ iStateId: ::c_int,
+ rcText: ::RECT,
+ uAlign: ::UINT,
+}}
+pub type LPNMLVCUSTOMDRAW = *mut NMLVCUSTOMDRAW;
+pub const LVCDI_ITEM: ::DWORD = 0x00000000;
+pub const LVCDI_GROUP: ::DWORD = 0x00000001;
+pub const LVCDI_ITEMSLIST: ::DWORD = 0x00000002;
+pub const LVCDRF_NOSELECT: ::LRESULT = 0x00010000;
+pub const LVCDRF_NOGROUPFRAME: ::LRESULT = 0x00020000;
+STRUCT!{struct NMLVCACHEHINT {
+ hdr: ::NMHDR,
+ iFrom: ::c_int,
+ iTo: ::c_int,
+}}
+pub type LPNMLVCACHEHINT = *mut NMLVCACHEHINT;
+pub type LPNM_CACHEHINT = LPNMLVCACHEHINT;
+pub type PNM_CACHEHINT = LPNMLVCACHEHINT;
+pub type NM_CACHEHINT = NMLVCACHEHINT;
+STRUCT!{struct NMLVFINDITEMA {
+ hdr: ::NMHDR,
+ iStart: ::c_int,
+ lvfi: LVFINDINFOA,
+}}
+pub type LPNMLVFINDITEMA = *mut NMLVFINDITEMA;
+STRUCT!{struct NMLVFINDITEMW {
+ hdr: ::NMHDR,
+ iStart: ::c_int,
+ lvfi: LVFINDINFOW,
+}}
+pub type LPNMLVFINDITEMW = *mut NMLVFINDITEMW;
+pub type PNM_FINDITEMA = LPNMLVFINDITEMA;
+pub type LPNM_FINDITEMA = LPNMLVFINDITEMA;
+pub type NM_FINDITEMA = NMLVFINDITEMA;
+pub type PNM_FINDITEMW = LPNMLVFINDITEMW;
+pub type LPNM_FINDITEMW = LPNMLVFINDITEMW;
+pub type NM_FINDITEMW = NMLVFINDITEMW;
+STRUCT!{struct NMLVODSTATECHANGE {
+ hdr: ::NMHDR,
+ iFrom: ::c_int,
+ iTo: ::c_int,
+ uNewState: ::UINT,
+ uOldState: ::UINT,
+}}
+pub type LPNMLVODSTATECHANGE = *mut NMLVODSTATECHANGE;
+pub type PNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
+pub type LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
+pub type NM_ODSTATECHANGE = NMLVODSTATECHANGE;
+pub const LVN_ITEMCHANGING: ::UINT = LVN_FIRST - 0;
+pub const LVN_ITEMCHANGED: ::UINT = LVN_FIRST - 1;
+pub const LVN_INSERTITEM: ::UINT = LVN_FIRST - 2;
+pub const LVN_DELETEITEM: ::UINT = LVN_FIRST - 3;
+pub const LVN_DELETEALLITEMS: ::UINT = LVN_FIRST - 4;
+pub const LVN_BEGINLABELEDITA: ::UINT = LVN_FIRST - 5;
+pub const LVN_BEGINLABELEDITW: ::UINT = LVN_FIRST - 75;
+pub const LVN_ENDLABELEDITA: ::UINT = LVN_FIRST - 6;
+pub const LVN_ENDLABELEDITW: ::UINT = LVN_FIRST - 76;
+pub const LVN_COLUMNCLICK: ::UINT = LVN_FIRST - 8;
+pub const LVN_BEGINDRAG: ::UINT = LVN_FIRST - 9;
+pub const LVN_BEGINRDRAG: ::UINT = LVN_FIRST - 11;
+pub const LVN_ODCACHEHINT: ::UINT = LVN_FIRST - 13;
+pub const LVN_ODFINDITEMA: ::UINT = LVN_FIRST - 52;
+pub const LVN_ODFINDITEMW: ::UINT = LVN_FIRST - 79;
+pub const LVN_ITEMACTIVATE: ::UINT = LVN_FIRST - 14;
+pub const LVN_ODSTATECHANGED: ::UINT = LVN_FIRST - 15;
+pub const LVN_HOTTRACK: ::UINT = LVN_FIRST - 21;
+pub const LVN_GETDISPINFOA: ::UINT = LVN_FIRST - 50;
+pub const LVN_GETDISPINFOW: ::UINT = LVN_FIRST - 77;
+pub const LVN_SETDISPINFOA: ::UINT = LVN_FIRST - 51;
+pub const LVN_SETDISPINFOW: ::UINT = LVN_FIRST - 78;
+pub const LVIF_DI_SETITEM: ::UINT = 0x1000;
+pub type LV_DISPINFOA = NMLVDISPINFOA;
+pub type LV_DISPINFOW = NMLVDISPINFOW;
+STRUCT!{struct NMLVDISPINFOA {
+ hdr: ::NMHDR,
+ item: LVITEMA,
+}}
+pub type LPNMLVDISPINFOA = *mut NMLVDISPINFOA;
+STRUCT!{struct NMLVDISPINFOW {
+ hdr: ::NMHDR,
+ item: LVITEMW,
+}}
+pub type LPNMLVDISPINFOW = *mut NMLVDISPINFOW;
+pub const LVN_KEYDOWN: ::UINT = LVN_FIRST - 55;
+pub type LV_KEYDOWN = NMLVKEYDOWN;
+STRUCT!{struct NMLVKEYDOWN {
+ hdr: ::NMHDR,
+ wVKey: ::WORD,
+ flags: ::UINT,
+}}
+pub type LPNMLVKEYDOWN = *mut NMLVKEYDOWN;
+pub const LVN_MARQUEEBEGIN: ::UINT = LVN_FIRST - 56;
+STRUCT!{nodebug struct NMLVLINK {
+ hdr: ::NMHDR,
+ link: LITEM,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+}}
+pub type PNMLVLINK = *mut NMLVLINK;
+STRUCT!{struct NMLVGETINFOTIPA {
+ hdr: ::NMHDR,
+ dwFlags: ::DWORD,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPNMLVGETINFOTIPA = *mut NMLVGETINFOTIPA;
+STRUCT!{struct NMLVGETINFOTIPW {
+ hdr: ::NMHDR,
+ dwFlags: ::DWORD,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iItem: ::c_int,
+ iSubItem: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPNMLVGETINFOTIPW = *mut NMLVGETINFOTIPW;
+pub const LVGIT_UNFOLDED: ::DWORD = 0x0001;
+pub const LVN_GETINFOTIPA: ::UINT = LVN_FIRST - 57;
+pub const LVN_GETINFOTIPW: ::UINT = LVN_FIRST - 58;
+pub const LVNSCH_DEFAULT: ::LPARAM = -1;
+pub const LVNSCH_ERROR: ::LPARAM = -2;
+pub const LVNSCH_IGNORE: ::LPARAM = -3;
+pub const LVN_INCREMENTALSEARCHA: ::UINT = LVN_FIRST - 62;
+pub const LVN_INCREMENTALSEARCHW: ::UINT = LVN_FIRST - 63;
+pub const LVN_COLUMNDROPDOWN: ::UINT = LVN_FIRST - 64;
+pub const LVN_COLUMNOVERFLOWCLICK: ::UINT = LVN_FIRST - 66;
+STRUCT!{struct NMLVSCROLL {
+ hdr: ::NMHDR,
+ dx: ::c_int,
+ dy: ::c_int,
+}}
+pub type LPNMLVSCROLL = *mut NMLVSCROLL;
+pub const LVN_BEGINSCROLL: ::UINT = LVN_FIRST - 80;
+pub const LVN_ENDSCROLL: ::UINT = LVN_FIRST - 81;
+pub const LVN_LINKCLICK: ::UINT = LVN_FIRST - 84;
+pub const EMF_CENTERED: ::DWORD = 0x00000001;
+STRUCT!{nodebug struct NMLVEMPTYMARKUP {
+ hdr: ::NMHDR,
+ dwFlags: ::DWORD,
+ szMarkup: [::WCHAR; L_MAX_URL_LENGTH],
+}}
+pub const LVN_GETEMPTYMARKUP: ::UINT = LVN_FIRST - 87;
+pub const TVS_HASBUTTONS: ::DWORD = 0x0001;
+pub const TVS_HASLINES: ::DWORD = 0x0002;
+pub const TVS_LINESATROOT: ::DWORD = 0x0004;
+pub const TVS_EDITLABELS: ::DWORD = 0x0008;
+pub const TVS_DISABLEDRAGDROP: ::DWORD = 0x0010;
+pub const TVS_SHOWSELALWAYS: ::DWORD = 0x0020;
+pub const TVS_RTLREADING: ::DWORD = 0x0040;
+pub const TVS_NOTOOLTIPS: ::DWORD = 0x0080;
+pub const TVS_CHECKBOXES: ::DWORD = 0x0100;
+pub const TVS_TRACKSELECT: ::DWORD = 0x0200;
+pub const TVS_SINGLEEXPAND: ::DWORD = 0x0400;
+pub const TVS_INFOTIP: ::DWORD = 0x0800;
+pub const TVS_FULLROWSELECT: ::DWORD = 0x1000;
+pub const TVS_NOSCROLL: ::DWORD = 0x2000;
+pub const TVS_NONEVENHEIGHT: ::DWORD = 0x4000;
+pub const TVS_NOHSCROLL: ::DWORD = 0x8000;
+pub const TVS_EX_NOSINGLECOLLAPSE: ::DWORD = 0x0001;
+pub const TVS_EX_MULTISELECT: ::DWORD = 0x0002;
+pub const TVS_EX_DOUBLEBUFFER: ::DWORD = 0x0004;
+pub const TVS_EX_NOINDENTSTATE: ::DWORD = 0x0008;
+pub const TVS_EX_RICHTOOLTIP: ::DWORD = 0x0010;
+pub const TVS_EX_AUTOHSCROLL: ::DWORD = 0x0020;
+pub const TVS_EX_FADEINOUTEXPANDOS: ::DWORD = 0x0040;
+pub const TVS_EX_PARTIALCHECKBOXES: ::DWORD = 0x0080;
+pub const TVS_EX_EXCLUSIONCHECKBOXES: ::DWORD = 0x0100;
+pub const TVS_EX_DIMMEDCHECKBOXES: ::DWORD = 0x0200;
+pub const TVS_EX_DRAWIMAGEASYNC: ::DWORD = 0x0400;
+pub enum TREEITEM {}
+pub type HTREEITEM = *mut TREEITEM;
+pub const TVIF_TEXT: ::UINT = 0x0001;
+pub const TVIF_IMAGE: ::UINT = 0x0002;
+pub const TVIF_PARAM: ::UINT = 0x0004;
+pub const TVIF_STATE: ::UINT = 0x0008;
+pub const TVIF_HANDLE: ::UINT = 0x0010;
+pub const TVIF_SELECTEDIMAGE: ::UINT = 0x0020;
+pub const TVIF_CHILDREN: ::UINT = 0x0040;
+pub const TVIF_INTEGRAL: ::UINT = 0x0080;
+pub const TVIF_STATEEX: ::UINT = 0x0100;
+pub const TVIF_EXPANDEDIMAGE: ::UINT = 0x0200;
+pub const TVIS_SELECTED: ::UINT = 0x0002;
+pub const TVIS_CUT: ::UINT = 0x0004;
+pub const TVIS_DROPHILITED: ::UINT = 0x0008;
+pub const TVIS_BOLD: ::UINT = 0x0010;
+pub const TVIS_EXPANDED: ::UINT = 0x0020;
+pub const TVIS_EXPANDEDONCE: ::UINT = 0x0040;
+pub const TVIS_EXPANDPARTIAL: ::UINT = 0x0080;
+pub const TVIS_OVERLAYMASK: ::UINT = 0x0F00;
+pub const TVIS_STATEIMAGEMASK: ::UINT = 0xF000;
+pub const TVIS_USERMASK: ::UINT = 0xF000;
+pub const TVIS_EX_FLAT: ::UINT = 0x0001;
+pub const TVIS_EX_DISABLED: ::UINT = 0x0002;
+pub const TVIS_EX_ALL: ::UINT = 0x0002;
+STRUCT!{struct NMTVSTATEIMAGECHANGING {
+ hdr: ::NMHDR,
+ hti: HTREEITEM,
+ iOldStateImageIndex: ::c_int,
+ iNewStateImageIndex: ::c_int,
+}}
+pub type LPNMTVSTATEIMAGECHANGING = *mut NMTVSTATEIMAGECHANGING;
+pub const I_CHILDRENCALLBACK: ::c_int = -1;
+pub const I_CHILDRENAUTO: ::c_int = -2;
+pub type LPTV_ITEMW = LPTVITEMW;
+pub type LPTV_ITEMA = LPTVITEMA;
+pub type TV_ITEMW = TVITEMW;
+pub type TV_ITEMA = TVITEMA;
+STRUCT!{struct TVITEMA {
+ mask: ::UINT,
+ hItem: HTREEITEM,
+ state: ::UINT,
+ stateMask: ::UINT,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ iSelectedImage: ::c_int,
+ cChildren: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPTVITEMA = *mut TVITEMA;
+STRUCT!{struct TVITEMW {
+ mask: ::UINT,
+ hItem: HTREEITEM,
+ state: ::UINT,
+ stateMask: ::UINT,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ iSelectedImage: ::c_int,
+ cChildren: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPTVITEMW = *mut TVITEMW;
+STRUCT!{struct TVITEMEXA {
+ mask: ::UINT,
+ hItem: HTREEITEM,
+ state: ::UINT,
+ stateMask: ::UINT,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ iSelectedImage: ::c_int,
+ cChildren: ::c_int,
+ lParam: ::LPARAM,
+ iIntegral: ::c_int,
+ uStateEx: ::UINT,
+ hwnd: ::HWND,
+ iExpandedImage: ::c_int,
+ iReserved: ::c_int,
+}}
+pub type LPTVITEMEXA = *mut TVITEMEXA;
+STRUCT!{struct TVITEMEXW {
+ mask: ::UINT,
+ hItem: HTREEITEM,
+ state: ::UINT,
+ stateMask: ::UINT,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ iSelectedImage: ::c_int,
+ cChildren: ::c_int,
+ lParam: ::LPARAM,
+ iIntegral: ::c_int,
+ uStateEx: ::UINT,
+ hwnd: ::HWND,
+ iExpandedImage: ::c_int,
+ iReserved: ::c_int,
+}}
+pub type LPTVITEMEXW = *mut TVITEMEXW;
+pub const TVI_ROOT: HTREEITEM = (0 - 0x10000) as HTREEITEM;
+pub const TVI_FIRST: HTREEITEM = (0 - 0x0FFFF) as HTREEITEM;
+pub const TVI_LAST: HTREEITEM = (0 - 0x0FFFE) as HTREEITEM;
+pub const TVI_SORT: HTREEITEM = (0 - 0x0FFFD) as HTREEITEM;
+pub type LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;
+pub type LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;
+pub type TV_INSERTSTRUCTA = TVINSERTSTRUCTA;
+pub type TV_INSERTSTRUCTW = TVINSERTSTRUCTW;
+STRUCT!{struct TVINSERTSTRUCTA {
+ hParent: HTREEITEM,
+ hInsertAfter: HTREEITEM,
+ itemex: TVITEMEXA,
+}}
+UNION!(TVINSERTSTRUCTA, itemex, item, item_mut, TV_ITEMA);
+pub type LPTVINSERTSTRUCTA = *mut TVINSERTSTRUCTA;
+STRUCT!{struct TVINSERTSTRUCTW {
+ hParent: HTREEITEM,
+ hInsertAfter: HTREEITEM,
+ itemex: TVITEMEXW,
+}}
+UNION!(TVINSERTSTRUCTW, itemex, item, item_mut, TV_ITEMW);
+pub type LPTVINSERTSTRUCTW = *mut TVINSERTSTRUCTW;
+pub const TVM_INSERTITEMA: ::UINT = TV_FIRST + 0;
+pub const TVM_INSERTITEMW: ::UINT = TV_FIRST + 50;
+pub const TVM_DELETEITEM: ::UINT = TV_FIRST + 1;
+pub const TVM_EXPAND: ::UINT = TV_FIRST + 2;
+pub const TVM_GETITEMRECT: ::UINT = TV_FIRST + 4;
+pub const TVE_COLLAPSE: ::WPARAM = 0x0001;
+pub const TVE_EXPAND: ::WPARAM = 0x0002;
+pub const TVE_TOGGLE: ::WPARAM = 0x0003;
+pub const TVE_EXPANDPARTIAL: ::WPARAM = 0x4000;
+pub const TVE_COLLAPSERESET: ::WPARAM = 0x8000;
+pub const TVM_GETCOUNT: ::UINT = TV_FIRST + 5;
+pub const TVM_GETINDENT: ::UINT = TV_FIRST + 6;
+pub const TVM_SETINDENT: ::UINT = TV_FIRST + 7;
+pub const TVM_GETIMAGELIST: ::UINT = TV_FIRST + 8;
+pub const TVM_SETIMAGELIST: ::UINT = TV_FIRST + 9;
+pub const TVM_GETNEXTITEM: ::UINT = TV_FIRST + 10;
+pub const TVSIL_NORMAL: ::WPARAM = 0;
+pub const TVSIL_STATE: ::WPARAM = 2;
+pub const TVGN_ROOT: ::WPARAM = 0x0000;
+pub const TVGN_NEXT: ::WPARAM = 0x0001;
+pub const TVGN_PREVIOUS: ::WPARAM = 0x0002;
+pub const TVGN_PARENT: ::WPARAM = 0x0003;
+pub const TVGN_CHILD: ::WPARAM = 0x0004;
+pub const TVGN_FIRSTVISIBLE: ::WPARAM = 0x0005;
+pub const TVGN_NEXTVISIBLE: ::WPARAM = 0x0006;
+pub const TVGN_PREVIOUSVISIBLE: ::WPARAM = 0x0007;
+pub const TVGN_DROPHILITE: ::WPARAM = 0x0008;
+pub const TVGN_CARET: ::WPARAM = 0x0009;
+pub const TVGN_LASTVISIBLE: ::WPARAM = 0x000A;
+pub const TVGN_NEXTSELECTED: ::WPARAM = 0x000B;
+pub const TVSI_NOSINGLEEXPAND: ::WPARAM = 0x8000;
+pub const TVM_SELECTITEM: ::UINT = TV_FIRST + 11;
+pub const TVM_GETITEMA: ::UINT = TV_FIRST + 12;
+pub const TVM_GETITEMW: ::UINT = TV_FIRST + 62;
+pub const TVM_SETITEMA: ::UINT = TV_FIRST + 13;
+pub const TVM_SETITEMW: ::UINT = TV_FIRST + 63;
+pub const TVM_EDITLABELA: ::UINT = TV_FIRST + 14;
+pub const TVM_EDITLABELW: ::UINT = TV_FIRST + 65;
+pub const TVM_GETEDITCONTROL: ::UINT = TV_FIRST + 15;
+pub const TVM_GETVISIBLECOUNT: ::UINT = TV_FIRST + 16;
+pub const TVM_HITTEST: ::UINT = TV_FIRST + 17;
+pub type LPTV_HITTESTINFO = LPTVHITTESTINFO;
+pub type TV_HITTESTINFO = TVHITTESTINFO;
+STRUCT!{struct TVHITTESTINFO {
+ pt: ::POINT,
+ flags: ::UINT,
+ hItem: HTREEITEM,
+}}
+pub type LPTVHITTESTINFO = *mut TVHITTESTINFO;
+pub const TVHT_NOWHERE: ::UINT = 0x0001;
+pub const TVHT_ONITEMICON: ::UINT = 0x0002;
+pub const TVHT_ONITEMLABEL: ::UINT = 0x0004;
+pub const TVHT_ONITEM: ::UINT = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON;
+pub const TVHT_ONITEMINDENT: ::UINT = 0x0008;
+pub const TVHT_ONITEMBUTTON: ::UINT = 0x0010;
+pub const TVHT_ONITEMRIGHT: ::UINT = 0x0020;
+pub const TVHT_ONITEMSTATEICON: ::UINT = 0x0040;
+pub const TVHT_ABOVE: ::UINT = 0x0100;
+pub const TVHT_BELOW: ::UINT = 0x0200;
+pub const TVHT_TORIGHT: ::UINT = 0x0400;
+pub const TVHT_TOLEFT: ::UINT = 0x0800;
+pub const TVM_CREATEDRAGIMAGE: ::UINT = TV_FIRST + 18;
+pub const TVM_SORTCHILDREN: ::UINT = TV_FIRST + 19;
+pub const TVM_ENSUREVISIBLE: ::UINT = TV_FIRST + 20;
+pub const TVM_SORTCHILDRENCB: ::UINT = TV_FIRST + 21;
+pub const TVM_ENDEDITLABELNOW: ::UINT = TV_FIRST + 22;
+pub const TVM_GETISEARCHSTRINGA: ::UINT = TV_FIRST + 23;
+pub const TVM_GETISEARCHSTRINGW: ::UINT = TV_FIRST + 64;
+pub const TVM_SETTOOLTIPS: ::UINT = TV_FIRST + 24;
+pub const TVM_GETTOOLTIPS: ::UINT = TV_FIRST + 25;
+pub const TVM_SETINSERTMARK: ::UINT = TV_FIRST + 26;
+pub const TVM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const TVM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const TVM_SETITEMHEIGHT: ::UINT = TV_FIRST + 27;
+pub const TVM_GETITEMHEIGHT: ::UINT = TV_FIRST + 28;
+pub const TVM_SETBKCOLOR: ::UINT = TV_FIRST + 29;
+pub const TVM_SETTEXTCOLOR: ::UINT = TV_FIRST + 30;
+pub const TVM_GETBKCOLOR: ::UINT = TV_FIRST + 31;
+pub const TVM_GETTEXTCOLOR: ::UINT = TV_FIRST + 32;
+pub const TVM_SETSCROLLTIME: ::UINT = TV_FIRST + 33;
+pub const TVM_GETSCROLLTIME: ::UINT = TV_FIRST + 34;
+pub const TVM_SETINSERTMARKCOLOR: ::UINT = TV_FIRST + 37;
+pub const TVM_GETINSERTMARKCOLOR: ::UINT = TV_FIRST + 38;
+pub const TVM_SETBORDER: ::UINT = TV_FIRST + 35;
+pub const TVSBF_XBORDER: ::WPARAM = 0x00000001;
+pub const TVSBF_YBORDER: ::WPARAM = 0x00000002;
+pub const TVM_GETITEMSTATE: ::UINT = TV_FIRST + 39;
+pub const TVM_SETLINECOLOR: ::UINT = TV_FIRST + 40;
+pub const TVM_GETLINECOLOR: ::UINT = TV_FIRST + 41;
+pub const TVM_MAPACCIDTOHTREEITEM: ::UINT = TV_FIRST + 42;
+pub const TVM_MAPHTREEITEMTOACCID: ::UINT = TV_FIRST + 43;
+pub const TVM_SETEXTENDEDSTYLE: ::UINT = TV_FIRST + 44;
+pub const TVM_GETEXTENDEDSTYLE: ::UINT = TV_FIRST + 45;
+pub const TVM_SETAUTOSCROLLINFO: ::UINT = TV_FIRST + 59;
+pub const TVM_SETHOT: ::UINT = TV_FIRST + 58;
+pub const TVM_GETSELECTEDCOUNT: ::UINT = TV_FIRST + 70;
+pub const TVM_SHOWINFOTIP: ::UINT = TV_FIRST + 71;
+ENUM!{enum TVITEMPART {
+ TVGIPR_BUTTON = 0x0001,
+}}
+STRUCT!{struct TVGETITEMPARTRECTINFO {
+ hti: HTREEITEM,
+ prc: *mut ::RECT,
+ partID: TVITEMPART,
+}}
+pub const TVM_GETITEMPARTRECT: ::UINT = TV_FIRST + 72;
+pub type PFNTVCOMPARE = Option<unsafe extern "system" fn(
+ lParam1: ::LPARAM, lParam2: ::LPARAM, lParamSort: ::LPARAM,
+) -> ::c_int>;
+pub type LPTV_SORTCB = LPTVSORTCB;
+pub type TV_SORTCB = TVSORTCB;
+STRUCT!{nodebug struct TVSORTCB {
+ hParent: HTREEITEM,
+ lpfnCompare: PFNTVCOMPARE,
+ lParam: ::LPARAM,
+}}
+pub type LPTVSORTCB = *mut TVSORTCB;
+pub type LPNM_TREEVIEWA = LPNMTREEVIEWA;
+pub type LPNM_TREEVIEWW = LPNMTREEVIEWW;
+pub type NM_TREEVIEWA = NMTREEVIEWA;
+pub type NM_TREEVIEWW = NMTREEVIEWW;
+STRUCT!{struct NMTREEVIEWA {
+ hdr: ::NMHDR,
+ action: ::UINT,
+ itemOld: TVITEMA,
+ itemNew: TVITEMA,
+ ptDrag: ::POINT,
+}}
+pub type LPNMTREEVIEWA = *mut NMTREEVIEWA;
+STRUCT!{struct NMTREEVIEWW {
+ hdr: ::NMHDR,
+ action: ::UINT,
+ itemOld: TVITEMW,
+ itemNew: TVITEMW,
+ ptDrag: ::POINT,
+}}
+pub type LPNMTREEVIEWW = *mut NMTREEVIEWW;
+pub const TVN_SELCHANGINGA: ::UINT = TVN_FIRST - 1;
+pub const TVN_SELCHANGINGW: ::UINT = TVN_FIRST - 50;
+pub const TVN_SELCHANGEDA: ::UINT = TVN_FIRST - 2;
+pub const TVN_SELCHANGEDW: ::UINT = TVN_FIRST - 51;
+pub const TVN_GETDISPINFOA: ::UINT = TVN_FIRST - 3;
+pub const TVN_GETDISPINFOW: ::UINT = TVN_FIRST - 52;
+pub const TVN_SETDISPINFOA: ::UINT = TVN_FIRST - 4;
+pub const TVN_SETDISPINFOW: ::UINT = TVN_FIRST - 53;
+pub const TVC_UNKNOWN: ::LPARAM = 0x0000;
+pub const TVC_BYMOUSE: ::LPARAM = 0x0001;
+pub const TVC_BYKEYBOARD: ::LPARAM = 0x0002;
+pub const TVIF_DI_SETITEM: ::UINT = 0x1000;
+pub type TV_DISPINFOA = NMTVDISPINFOA;
+pub type TV_DISPINFOW = NMTVDISPINFOW;
+STRUCT!{struct NMTVDISPINFOA {
+ hdr: ::NMHDR,
+ item: TVITEMA,
+}}
+pub type LPNMTVDISPINFOA = *mut NMTVDISPINFOA;
+STRUCT!{struct NMTVDISPINFOW {
+ hdr: ::NMHDR,
+ item: TVITEMW,
+}}
+pub type LPNMTVDISPINFOW = *mut NMTVDISPINFOW;
+STRUCT!{struct NMTVDISPINFOEXA {
+ hdr: ::NMHDR,
+ item: TVITEMEXA,
+}}
+pub type LPNMTVDISPINFOEXA = *mut NMTVDISPINFOEXA;
+STRUCT!{struct NMTVDISPINFOEXW {
+ hdr: ::NMHDR,
+ item: TVITEMEXW,
+}}
+pub type LPNMTVDISPINFOEXW = *mut NMTVDISPINFOEXW;
+pub type TV_DISPINFOEXA = NMTVDISPINFOEXA;
+pub type TV_DISPINFOEXW = NMTVDISPINFOEXW;
+pub const TVN_ITEMEXPANDINGA: ::UINT = TVN_FIRST - 5;
+pub const TVN_ITEMEXPANDINGW: ::UINT = TVN_FIRST - 54;
+pub const TVN_ITEMEXPANDEDA: ::UINT = TVN_FIRST - 6;
+pub const TVN_ITEMEXPANDEDW: ::UINT = TVN_FIRST - 55;
+pub const TVN_BEGINDRAGA: ::UINT = TVN_FIRST - 7;
+pub const TVN_BEGINDRAGW: ::UINT = TVN_FIRST - 56;
+pub const TVN_BEGINRDRAGA: ::UINT = TVN_FIRST - 8;
+pub const TVN_BEGINRDRAGW: ::UINT = TVN_FIRST - 57;
+pub const TVN_DELETEITEMA: ::UINT = TVN_FIRST - 9;
+pub const TVN_DELETEITEMW: ::UINT = TVN_FIRST - 58;
+pub const TVN_BEGINLABELEDITA: ::UINT = TVN_FIRST - 10;
+pub const TVN_BEGINLABELEDITW: ::UINT = TVN_FIRST - 59;
+pub const TVN_ENDLABELEDITA: ::UINT = TVN_FIRST - 11;
+pub const TVN_ENDLABELEDITW: ::UINT = TVN_FIRST - 60;
+pub const TVN_KEYDOWN: ::UINT = TVN_FIRST - 12;
+pub const TVN_GETINFOTIPA: ::UINT = TVN_FIRST - 13;
+pub const TVN_GETINFOTIPW: ::UINT = TVN_FIRST - 14;
+pub const TVN_SINGLEEXPAND: ::UINT = TVN_FIRST - 15;
+pub const TVN_ITEMCHANGINGA: ::UINT = TVN_FIRST - 16;
+pub const TVN_ITEMCHANGINGW: ::UINT = TVN_FIRST - 17;
+pub const TVN_ITEMCHANGEDA: ::UINT = TVN_FIRST - 18;
+pub const TVN_ITEMCHANGEDW: ::UINT = TVN_FIRST - 19;
+pub const TVN_ASYNCDRAW: ::UINT = TVN_FIRST - 20;
+pub const TVNRET_DEFAULT: ::LRESULT = 0;
+pub const TVNRET_SKIPOLD: ::LRESULT = 1;
+pub const TVNRET_SKIPNEW: ::LRESULT = 2;
+pub type TV_KEYDOWN = NMTVKEYDOWN;
+STRUCT!{struct NMTVKEYDOWN {
+ hdr: ::NMHDR,
+ wVKey: ::WORD,
+ flags: ::UINT,
+}}
+pub type LPNMTVKEYDOWN = *mut NMTVKEYDOWN;
+STRUCT!{struct NMTVCUSTOMDRAW {
+ nmcd: NMCUSTOMDRAW,
+ clrText: ::COLORREF,
+ clrTextBk: ::COLORREF,
+ iLevel: ::c_int,
+}}
+pub type LPNMTVCUSTOMDRAW = *mut NMTVCUSTOMDRAW;
+STRUCT!{struct NMTVGETINFOTIPA {
+ hdr: ::NMHDR,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ hItem: HTREEITEM,
+ lParam: ::LPARAM,
+}}
+pub type LPNMTVGETINFOTIPA = *mut NMTVGETINFOTIPA;
+STRUCT!{struct NMTVGETINFOTIPW {
+ hdr: ::NMHDR,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ hItem: HTREEITEM,
+ lParam: ::LPARAM,
+}}
+pub type LPNMTVGETINFOTIPW = *mut NMTVGETINFOTIPW;
+pub const TVCDRF_NOIMAGES: ::LRESULT = 0x00010000;
+STRUCT!{struct NMTVITEMCHANGE {
+ hdr: ::NMHDR,
+ uChanged: ::UINT,
+ hItem: HTREEITEM,
+ uStateNew: ::UINT,
+ uStateOld: ::UINT,
+ lParam: ::LPARAM,
+}}
+STRUCT!{struct NMTVASYNCDRAW {
+ hdr: ::NMHDR,
+ pimldp: *mut IMAGELISTDRAWPARAMS,
+ hr: ::HRESULT,
+ hItem: HTREEITEM,
+ lParam: ::LPARAM,
+ dwRetFlags: ::DWORD,
+ iRetImageIndex: ::c_int,
+}}
+pub const CBEIF_TEXT: ::UINT = 0x00000001;
+pub const CBEIF_IMAGE: ::UINT = 0x00000002;
+pub const CBEIF_SELECTEDIMAGE: ::UINT = 0x00000004;
+pub const CBEIF_OVERLAY: ::UINT = 0x00000008;
+pub const CBEIF_INDENT: ::UINT = 0x00000010;
+pub const CBEIF_LPARAM: ::UINT = 0x00000020;
+pub const CBEIF_DI_SETITEM: ::UINT = 0x10000000;
+STRUCT!{struct COMBOBOXEXITEMA {
+ mask: ::UINT,
+ iItem: ::INT_PTR,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ iSelectedImage: ::c_int,
+ iOverlay: ::c_int,
+ iIndent: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type PCOMBOBOXEXITEMA = *mut COMBOBOXEXITEMA;
+pub type PCCOMBOBOXEXITEMA = *const COMBOBOXEXITEMA;
+STRUCT!{struct COMBOBOXEXITEMW {
+ mask: ::UINT,
+ iItem: ::INT_PTR,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ iSelectedImage: ::c_int,
+ iOverlay: ::c_int,
+ iIndent: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type PCOMBOBOXEXITEMW = *mut COMBOBOXEXITEMW;
+pub type PCCOMBOBOXEXITEMW = *const COMBOBOXEXITEMW;
+pub const CBEM_INSERTITEMA: ::UINT = ::WM_USER + 1;
+pub const CBEM_SETIMAGELIST: ::UINT = ::WM_USER + 2;
+pub const CBEM_GETIMAGELIST: ::UINT = ::WM_USER + 3;
+pub const CBEM_GETITEMA: ::UINT = ::WM_USER + 4;
+pub const CBEM_SETITEMA: ::UINT = ::WM_USER + 5;
+pub const CBEM_DELETEITEM: ::UINT = ::CB_DELETESTRING;
+pub const CBEM_GETCOMBOCONTROL: ::UINT = ::WM_USER + 6;
+pub const CBEM_GETEDITCONTROL: ::UINT = ::WM_USER + 7;
+pub const CBEM_SETEXSTYLE: ::UINT = ::WM_USER + 8;
+pub const CBEM_SETEXTENDEDSTYLE: ::UINT = ::WM_USER + 14;
+pub const CBEM_GETEXSTYLE: ::UINT = ::WM_USER + 9;
+pub const CBEM_GETEXTENDEDSTYLE: ::UINT = ::WM_USER + 9;
+pub const CBEM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const CBEM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const CBEM_HASEDITCHANGED: ::UINT = ::WM_USER + 10;
+pub const CBEM_INSERTITEMW: ::UINT = ::WM_USER + 11;
+pub const CBEM_SETITEMW: ::UINT = ::WM_USER + 12;
+pub const CBEM_GETITEMW: ::UINT = ::WM_USER + 13;
+pub const CBEM_SETWINDOWTHEME: ::UINT = CCM_SETWINDOWTHEME;
+pub const CBES_EX_NOEDITIMAGE: ::DWORD = 0x00000001;
+pub const CBES_EX_NOEDITIMAGEINDENT: ::DWORD = 0x00000002;
+pub const CBES_EX_PATHWORDBREAKPROC: ::DWORD = 0x00000004;
+pub const CBES_EX_NOSIZELIMIT: ::DWORD = 0x00000008;
+pub const CBES_EX_CASESENSITIVE: ::DWORD = 0x00000010;
+pub const CBES_EX_TEXTENDELLIPSIS: ::DWORD = 0x00000020;
+STRUCT!{struct NMCOMBOBOXEXA {
+ hdr: ::NMHDR,
+ ceItem: COMBOBOXEXITEMA,
+}}
+pub type PNMCOMBOBOXEXA = *mut NMCOMBOBOXEXA;
+STRUCT!{struct NMCOMBOBOXEXW {
+ hdr: ::NMHDR,
+ ceItem: COMBOBOXEXITEMW,
+}}
+pub type PNMCOMBOBOXEXW = *mut NMCOMBOBOXEXW;
+pub const CBEN_GETDISPINFOA: ::UINT = CBEN_FIRST - 0;
+pub const CBEN_INSERTITEM: ::UINT = CBEN_FIRST - 1;
+pub const CBEN_DELETEITEM: ::UINT = CBEN_FIRST - 2;
+pub const CBEN_BEGINEDIT: ::UINT = CBEN_FIRST - 4;
+pub const CBEN_ENDEDITA: ::UINT = CBEN_FIRST - 5;
+pub const CBEN_ENDEDITW: ::UINT = CBEN_FIRST - 6;
+pub const CBEN_GETDISPINFOW: ::UINT = CBEN_FIRST - 7;
+pub const CBEN_DRAGBEGINA: ::UINT = CBEN_FIRST - 8;
+pub const CBEN_DRAGBEGINW: ::UINT = CBEN_FIRST - 9;
+pub const CBENF_KILLFOCUS: ::c_int = 1;
+pub const CBENF_RETURN: ::c_int = 2;
+pub const CBENF_ESCAPE: ::c_int = 3;
+pub const CBENF_DROPDOWN: ::c_int = 4;
+pub const CBEMAXSTRLEN: usize = 260;
+STRUCT!{nodebug struct NMCBEDRAGBEGINW {
+ hdr: ::NMHDR,
+ iItemid: ::c_int,
+ szText: [::WCHAR; CBEMAXSTRLEN],
+}}
+pub type PNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
+pub type LPNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;
+STRUCT!{nodebug struct NMCBEDRAGBEGINA {
+ hdr: ::NMHDR,
+ iItemid: ::c_int,
+ szText: [::c_char; CBEMAXSTRLEN],
+}}
+pub type PNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
+pub type LPNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;
+STRUCT!{nodebug struct NMCBEENDEDITW {
+ hdr: ::NMHDR,
+ fChanged: ::BOOL,
+ iNewSelection: ::c_int,
+ szText: [::WCHAR; CBEMAXSTRLEN],
+ iWhy: ::c_int,
+}}
+pub type PNMCBEENDEDITW = *mut NMCBEENDEDITW;
+pub type LPNMCBEENDEDITW = *mut NMCBEENDEDITW;
+STRUCT!{nodebug struct NMCBEENDEDITA {
+ hdr: ::NMHDR,
+ fChanged: ::BOOL,
+ iNewSelection: ::c_int,
+ szText: [::c_char; CBEMAXSTRLEN],
+ iWhy: ::c_int,
+}}
+pub type PNMCBEENDEDITA = *mut NMCBEENDEDITA;
+pub type LPNMCBEENDEDITA = *mut NMCBEENDEDITA;
+pub const TCS_SCROLLOPPOSITE: ::DWORD = 0x0001;
+pub const TCS_BOTTOM: ::DWORD = 0x0002;
+pub const TCS_RIGHT: ::DWORD = 0x0002;
+pub const TCS_MULTISELECT: ::DWORD = 0x0004;
+pub const TCS_FLATBUTTONS: ::DWORD = 0x0008;
+pub const TCS_FORCEICONLEFT: ::DWORD = 0x0010;
+pub const TCS_FORCELABELLEFT: ::DWORD = 0x0020;
+pub const TCS_HOTTRACK: ::DWORD = 0x0040;
+pub const TCS_VERTICAL: ::DWORD = 0x0080;
+pub const TCS_TABS: ::DWORD = 0x0000;
+pub const TCS_BUTTONS: ::DWORD = 0x0100;
+pub const TCS_SINGLELINE: ::DWORD = 0x0000;
+pub const TCS_MULTILINE: ::DWORD = 0x0200;
+pub const TCS_RIGHTJUSTIFY: ::DWORD = 0x0000;
+pub const TCS_FIXEDWIDTH: ::DWORD = 0x0400;
+pub const TCS_RAGGEDRIGHT: ::DWORD = 0x0800;
+pub const TCS_FOCUSONBUTTONDOWN: ::DWORD = 0x1000;
+pub const TCS_OWNERDRAWFIXED: ::DWORD = 0x2000;
+pub const TCS_TOOLTIPS: ::DWORD = 0x4000;
+pub const TCS_FOCUSNEVER: ::DWORD = 0x8000;
+pub const TCS_EX_FLATSEPARATORS: ::DWORD = 0x00000001;
+pub const TCS_EX_REGISTERDROP: ::DWORD = 0x00000002;
+pub const TCM_GETIMAGELIST: ::UINT = TCM_FIRST + 2;
+pub const TCM_SETIMAGELIST: ::UINT = TCM_FIRST + 3;
+pub const TCM_GETITEMCOUNT: ::UINT = TCM_FIRST + 4;
+pub const TCIF_TEXT: ::UINT = 0x0001;
+pub const TCIF_IMAGE: ::UINT = 0x0002;
+pub const TCIF_RTLREADING: ::UINT = 0x0004;
+pub const TCIF_PARAM: ::UINT = 0x0008;
+pub const TCIF_STATE: ::UINT = 0x0010;
+pub const TCIS_BUTTONPRESSED: ::DWORD = 0x0001;
+pub const TCIS_HIGHLIGHTED: ::DWORD = 0x0002;
+pub type TC_ITEMHEADERA = TCITEMHEADERA;
+pub type TC_ITEMHEADERW = TCITEMHEADERW;
+STRUCT!{struct TCITEMHEADERA {
+ mask: ::UINT,
+ lpReserved1: ::UINT,
+ lpReserved2: ::UINT,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+}}
+pub type LPTCITEMHEADERA = *mut TCITEMHEADERA;
+STRUCT!{struct TCITEMHEADERW {
+ mask: ::UINT,
+ lpReserved1: ::UINT,
+ lpReserved2: ::UINT,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+}}
+pub type LPTCITEMHEADERW = *mut TCITEMHEADERW;
+pub type TC_ITEMA = TCITEMA;
+pub type TC_ITEMW = TCITEMW;
+STRUCT!{struct TCITEMA {
+ mask: ::UINT,
+ dwState: ::DWORD,
+ dwStateMask: ::DWORD,
+ pszText: ::LPSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPTCITEMA = *mut TCITEMA;
+STRUCT!{struct TCITEMW {
+ mask: ::UINT,
+ dwState: ::DWORD,
+ dwStateMask: ::DWORD,
+ pszText: ::LPWSTR,
+ cchTextMax: ::c_int,
+ iImage: ::c_int,
+ lParam: ::LPARAM,
+}}
+pub type LPTCITEMW = *mut TCITEMW;
+pub const TCM_GETITEMA: ::UINT = TCM_FIRST + 5;
+pub const TCM_GETITEMW: ::UINT = TCM_FIRST + 60;
+pub const TCM_SETITEMA: ::UINT = TCM_FIRST + 6;
+pub const TCM_SETITEMW: ::UINT = TCM_FIRST + 61;
+pub const TCM_INSERTITEMA: ::UINT = TCM_FIRST + 7;
+pub const TCM_INSERTITEMW: ::UINT = TCM_FIRST + 62;
+pub const TCM_DELETEITEM: ::UINT = TCM_FIRST + 8;
+pub const TCM_DELETEALLITEMS: ::UINT = TCM_FIRST + 9;
+pub const TCM_GETITEMRECT: ::UINT = TCM_FIRST + 10;
+pub const TCM_GETCURSEL: ::UINT = TCM_FIRST + 11;
+pub const TCM_SETCURSEL: ::UINT = TCM_FIRST + 12;
+pub const TCHT_NOWHERE: ::UINT = 0x0001;
+pub const TCHT_ONITEMICON: ::UINT = 0x0002;
+pub const TCHT_ONITEMLABEL: ::UINT = 0x0004;
+pub const TCHT_ONITEM: ::UINT = TCHT_ONITEMICON | TCHT_ONITEMLABEL;
+pub type LPTC_HITTESTINFO = LPTCHITTESTINFO;
+pub type TC_HITTESTINFO = TCHITTESTINFO;
+STRUCT!{struct TCHITTESTINFO {
+ pt: ::POINT,
+ flags: ::UINT,
+}}
+pub type LPTCHITTESTINFO = *mut TCHITTESTINFO;
+pub const TCM_HITTEST: ::UINT = TCM_FIRST + 13;
+pub const TCM_SETITEMEXTRA: ::UINT = TCM_FIRST + 14;
+pub const TCM_ADJUSTRECT: ::UINT = TCM_FIRST + 40;
+pub const TCM_SETITEMSIZE: ::UINT = TCM_FIRST + 41;
+pub const TCM_REMOVEIMAGE: ::UINT = TCM_FIRST + 42;
+pub const TCM_SETPADDING: ::UINT = TCM_FIRST + 43;
+pub const TCM_GETROWCOUNT: ::UINT = TCM_FIRST + 44;
+pub const TCM_GETTOOLTIPS: ::UINT = TCM_FIRST + 45;
+pub const TCM_SETTOOLTIPS: ::UINT = TCM_FIRST + 46;
+pub const TCM_GETCURFOCUS: ::UINT = TCM_FIRST + 47;
+pub const TCM_SETCURFOCUS: ::UINT = TCM_FIRST + 48;
+pub const TCM_SETMINTABWIDTH: ::UINT = TCM_FIRST + 49;
+pub const TCM_DESELECTALL: ::UINT = TCM_FIRST + 50;
+pub const TCM_HIGHLIGHTITEM: ::UINT = TCM_FIRST + 51;
+pub const TCM_SETEXTENDEDSTYLE: ::UINT = TCM_FIRST + 52;
+pub const TCM_GETEXTENDEDSTYLE: ::UINT = TCM_FIRST + 53;
+pub const TCM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const TCM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const TCN_KEYDOWN: ::UINT = TCN_FIRST - 0;
+pub type TC_KEYDOWN = NMTCKEYDOWN;
+STRUCT!{struct NMTCKEYDOWN {
+ hdr: ::NMHDR,
+ wVKey: ::WORD,
+ flags: ::UINT,
+}}
+pub const TCN_SELCHANGE: ::UINT = TCN_FIRST - 1;
+pub const TCN_SELCHANGING: ::UINT = TCN_FIRST - 2;
+pub const TCN_GETOBJECT: ::UINT = TCN_FIRST - 3;
+pub const TCN_FOCUSCHANGE: ::UINT = TCN_FIRST - 4;
+pub const ACS_CENTER: ::DWORD = 0x0001;
+pub const ACS_TRANSPARENT: ::DWORD = 0x0002;
+pub const ACS_AUTOPLAY: ::DWORD = 0x0004;
+pub const ACS_TIMER: ::DWORD = 0x0008;
+pub const ACM_OPENA: ::UINT = ::WM_USER + 100;
+pub const ACM_OPENW: ::UINT = ::WM_USER + 103;
+pub const ACM_PLAY: ::UINT = ::WM_USER + 101;
+pub const ACM_STOP: ::UINT = ::WM_USER + 102;
+pub const ACM_ISPLAYING: ::UINT = ::WM_USER + 104;
+pub const ACN_START: ::WPARAM = 1;
+pub const ACN_STOP: ::WPARAM = 2;
+pub type MONTHDAYSTATE = ::DWORD;
+pub type LPMONTHDAYSTATE = *mut ::DWORD;
+pub const MCM_FIRST: ::UINT = 0x1000;
+pub const MCM_GETCURSEL: ::UINT = MCM_FIRST + 1;
+pub const MCM_SETCURSEL: ::UINT = MCM_FIRST + 2;
+pub const MCM_GETMAXSELCOUNT: ::UINT = MCM_FIRST + 3;
+pub const MCM_SETMAXSELCOUNT: ::UINT = MCM_FIRST + 4;
+pub const MCM_GETSELRANGE: ::UINT = MCM_FIRST + 5;
+pub const MCM_SETSELRANGE: ::UINT = MCM_FIRST + 6;
+pub const MCM_GETMONTHRANGE: ::UINT = MCM_FIRST + 7;
+pub const MCM_SETDAYSTATE: ::UINT = MCM_FIRST + 8;
+pub const MCM_GETMINREQRECT: ::UINT = MCM_FIRST + 9;
+pub const MCM_SETCOLOR: ::UINT = MCM_FIRST + 10;
+pub const MCM_GETCOLOR: ::UINT = MCM_FIRST + 11;
+pub const MCM_SETTODAY: ::UINT = MCM_FIRST + 12;
+pub const MCM_GETTODAY: ::UINT = MCM_FIRST + 13;
+pub const MCM_HITTEST: ::UINT = MCM_FIRST + 14;
+pub const MCSC_BACKGROUND: ::WPARAM = 0;
+pub const MCSC_TEXT: ::WPARAM = 1;
+pub const MCSC_TITLEBK: ::WPARAM = 2;
+pub const MCSC_TITLETEXT: ::WPARAM = 3;
+pub const MCSC_MONTHBK: ::WPARAM = 4;
+pub const MCSC_TRAILINGTEXT: ::WPARAM = 5;
+STRUCT!{struct MCHITTESTINFO {
+ cbSize: ::UINT,
+ pt: ::POINT,
+ uHit: ::UINT,
+ st: ::SYSTEMTIME,
+ rc: ::RECT,
+ iOffset: ::c_int,
+ iRow: ::c_int,
+ iCol: ::c_int,
+}}
+pub type PMCHITTESTINFO = *mut MCHITTESTINFO;
+pub const MCHT_TITLE: ::UINT = 0x00010000;
+pub const MCHT_CALENDAR: ::UINT = 0x00020000;
+pub const MCHT_TODAYLINK: ::UINT = 0x00030000;
+pub const MCHT_CALENDARCONTROL: ::UINT = 0x00100000;
+pub const MCHT_NEXT: ::UINT = 0x01000000;
+pub const MCHT_PREV: ::UINT = 0x02000000;
+pub const MCHT_NOWHERE: ::UINT = 0x00000000;
+pub const MCHT_TITLEBK: ::UINT = MCHT_TITLE;
+pub const MCHT_TITLEMONTH: ::UINT = MCHT_TITLE | 0x0001;
+pub const MCHT_TITLEYEAR: ::UINT = MCHT_TITLE | 0x0002;
+pub const MCHT_TITLEBTNNEXT: ::UINT = MCHT_TITLE | MCHT_NEXT | 0x0003;
+pub const MCHT_TITLEBTNPREV: ::UINT = MCHT_TITLE | MCHT_PREV | 0x0003;
+pub const MCHT_CALENDARBK: ::UINT = MCHT_CALENDAR;
+pub const MCHT_CALENDARDATE: ::UINT = MCHT_CALENDAR | 0x0001;
+pub const MCHT_CALENDARDATENEXT: ::UINT = MCHT_CALENDARDATE | MCHT_NEXT;
+pub const MCHT_CALENDARDATEPREV: ::UINT = MCHT_CALENDARDATE | MCHT_PREV;
+pub const MCHT_CALENDARDAY: ::UINT = MCHT_CALENDAR | 0x0002;
+pub const MCHT_CALENDARWEEKNUM: ::UINT = MCHT_CALENDAR | 0x0003;
+pub const MCHT_CALENDARDATEMIN: ::UINT = MCHT_CALENDAR | 0x0004;
+pub const MCHT_CALENDARDATEMAX: ::UINT = MCHT_CALENDAR | 0x0005;
+pub const MCM_SETFIRSTDAYOFWEEK: ::UINT = MCM_FIRST + 15;
+pub const MCM_GETFIRSTDAYOFWEEK: ::UINT = MCM_FIRST + 16;
+pub const MCM_GETRANGE: ::UINT = MCM_FIRST + 17;
+pub const MCM_SETRANGE: ::UINT = MCM_FIRST + 18;
+pub const MCM_GETMONTHDELTA: ::UINT = MCM_FIRST + 19;
+pub const MCM_SETMONTHDELTA: ::UINT = MCM_FIRST + 20;
+pub const MCM_GETMAXTODAYWIDTH: ::UINT = MCM_FIRST + 21;
+pub const MCM_SETUNICODEFORMAT: ::UINT = CCM_SETUNICODEFORMAT;
+pub const MCM_GETUNICODEFORMAT: ::UINT = CCM_GETUNICODEFORMAT;
+pub const MCM_GETCURRENTVIEW: ::UINT = MCM_FIRST + 22;
+pub const MCM_GETCALENDARCOUNT: ::UINT = MCM_FIRST + 23;
+pub const MCMV_MONTH: ::DWORD = 0;
+pub const MCMV_YEAR: ::DWORD = 1;
+pub const MCMV_DECADE: ::DWORD = 2;
+pub const MCMV_CENTURY: ::DWORD = 3;
+pub const MCMV_MAX: ::DWORD = MCMV_CENTURY;
+pub const MCGIP_CALENDARCONTROL: ::DWORD = 0;
+pub const MCGIP_NEXT: ::DWORD = 1;
+pub const MCGIP_PREV: ::DWORD = 2;
+pub const MCGIP_FOOTER: ::DWORD = 3;
+pub const MCGIP_CALENDAR: ::DWORD = 4;
+pub const MCGIP_CALENDARHEADER: ::DWORD = 5;
+pub const MCGIP_CALENDARBODY: ::DWORD = 6;
+pub const MCGIP_CALENDARROW: ::DWORD = 7;
+pub const MCGIP_CALENDARCELL: ::DWORD = 8;
+pub const MCGIF_DATE: ::DWORD = 0x00000001;
+pub const MCGIF_RECT: ::DWORD = 0x00000002;
+pub const MCGIF_NAME: ::DWORD = 0x00000004;
+STRUCT!{struct MCGRIDINFO {
+ cbSize: ::UINT,
+ dwPart: ::DWORD,
+ dwFlags: ::DWORD,
+ iCalendar: ::c_int,
+ iRow: ::c_int,
+ iCol: ::c_int,
+ bSelected: ::BOOL,
+ stStart: ::SYSTEMTIME,
+ stEnd: ::SYSTEMTIME,
+ rc: ::RECT,
+ pszName: ::PWSTR,
+ cchName: ::size_t,
+}}
+pub type PMCGRIDINFO = *mut MCGRIDINFO;
+pub const MCM_GETCALENDARGRIDINFO: ::UINT = MCM_FIRST + 24;
+pub const MCM_GETCALID: ::UINT = MCM_FIRST + 27;
+pub const MCM_SETCALID: ::UINT = MCM_FIRST + 28;
+pub const MCM_SIZERECTTOMIN: ::UINT = MCM_FIRST + 29;
+pub const MCM_SETCALENDARBORDER: ::UINT = MCM_FIRST + 30;
+pub const MCM_GETCALENDARBORDER: ::UINT = MCM_FIRST + 31;
+pub const MCM_SETCURRENTVIEW: ::UINT = MCM_FIRST + 32;
+STRUCT!{struct NMSELCHANGE {
+ nmhdr: ::NMHDR,
+ stSelStart: ::SYSTEMTIME,
+ stSelEnd: ::SYSTEMTIME,
+}}
+pub type LPNMSELCHANGE = *mut NMSELCHANGE;
+pub const MCN_SELCHANGE: ::UINT = MCN_FIRST - 3;
+STRUCT!{struct NMDAYSTATE {
+ nmhdr: ::NMHDR,
+ stStart: ::SYSTEMTIME,
+ cDayState: ::c_int,
+ prgDayState: LPMONTHDAYSTATE,
+}}
+pub type LPNMDAYSTATE = *mut NMDAYSTATE;
+pub const MCN_GETDAYSTATE: ::UINT = MCN_FIRST - 1;
+pub type NMSELECT = NMSELCHANGE;
+pub type LPNMSELECT = *mut NMSELCHANGE;
+pub const MCN_SELECT: ::UINT = MCN_FIRST;
+STRUCT!{struct NMVIEWCHANGE {
+ nmhdr: ::NMHDR,
+ dwOldView: ::DWORD,
+ dwNewView: ::DWORD,
+}}
+pub type LPNMVIEWCHANGE = *mut NMVIEWCHANGE;
+pub const MCN_VIEWCHANGE: ::UINT = MCN_FIRST - 4;
+pub const MCS_DAYSTATE: ::DWORD = 0x0001;
+pub const MCS_MULTISELECT: ::DWORD = 0x0002;
+pub const MCS_WEEKNUMBERS: ::DWORD = 0x0004;
+pub const MCS_NOTODAYCIRCLE: ::DWORD = 0x0008;
+pub const MCS_NOTODAY: ::DWORD = 0x0010;
+pub const MCS_NOTRAILINGDATES: ::DWORD = 0x0040;
+pub const MCS_SHORTDAYSOFWEEK: ::DWORD = 0x0080;
+pub const MCS_NOSELCHANGEONNAV: ::DWORD = 0x0100;
+pub const GMR_VISIBLE: ::DWORD = 0;
+pub const GMR_DAYSTATE: ::DWORD = 1;
+STRUCT!{struct DATETIMEPICKERINFO {
+ cbSize: ::UINT,
+ rcCheck: ::RECT,
+ stateCheck: ::DWORD,
+ rcButton: ::RECT,
+ stateButton: ::DWORD,
+ hwndEdit: ::HWND,
+ hwndUD: ::HWND,
+ hwndDropDown: ::HWND,
+}}
+pub type LPDATETIMEPICKERINFO = *mut DATETIMEPICKERINFO;
+pub const DTM_FIRST: ::UINT = 0x1000;
+pub const DTM_GETSYSTEMTIME: ::UINT = DTM_FIRST + 1;
+pub const DTM_SETSYSTEMTIME: ::UINT = DTM_FIRST + 2;
+pub const DTM_GETRANGE: ::UINT = DTM_FIRST + 3;
+pub const DTM_SETRANGE: ::UINT = DTM_FIRST + 4;
+pub const DTM_SETFORMATA: ::UINT = DTM_FIRST + 5;
+pub const DTM_SETFORMATW: ::UINT = DTM_FIRST + 50;
+pub const DTM_SETMCCOLOR: ::UINT = DTM_FIRST + 6;
+pub const DTM_GETMCCOLOR: ::UINT = DTM_FIRST + 7;
+pub const DTM_GETMONTHCAL: ::UINT = DTM_FIRST + 8;
+pub const DTM_SETMCFONT: ::UINT = DTM_FIRST + 9;
+pub const DTM_GETMCFONT: ::UINT = DTM_FIRST + 10;
+pub const DTM_SETMCSTYLE: ::UINT = DTM_FIRST + 11;
+pub const DTM_GETMCSTYLE: ::UINT = DTM_FIRST + 12;
+pub const DTM_CLOSEMONTHCAL: ::UINT = DTM_FIRST + 13;
+pub const DTM_GETDATETIMEPICKERINFO: ::UINT = DTM_FIRST + 14;
+pub const DTM_GETIDEALSIZE: ::UINT = DTM_FIRST + 15;
+pub const DTS_UPDOWN: ::DWORD = 0x0001;
+pub const DTS_SHOWNONE: ::DWORD = 0x0002;
+pub const DTS_SHORTDATEFORMAT: ::DWORD = 0x0000;
+pub const DTS_LONGDATEFORMAT: ::DWORD = 0x0004;
+pub const DTS_SHORTDATECENTURYFORMAT: ::DWORD = 0x000C;
+pub const DTS_TIMEFORMAT: ::DWORD = 0x0009;
+pub const DTS_APPCANPARSE: ::DWORD = 0x0010;
+pub const DTS_RIGHTALIGN: ::DWORD = 0x0020;
+pub const DTN_DATETIMECHANGE: ::UINT = DTN_FIRST2 - 6;
+STRUCT!{struct NMDATETIMECHANGE {
+ nmhdr: ::NMHDR,
+ dwFlags: ::DWORD,
+ st: ::SYSTEMTIME,
+}}
+pub type LPNMDATETIMECHANGE = *mut NMDATETIMECHANGE;
+pub const DTN_USERSTRINGA: ::UINT = DTN_FIRST2 - 5;
+pub const DTN_USERSTRINGW: ::UINT = DTN_FIRST - 5;
+STRUCT!{struct NMDATETIMESTRINGA {
+ nmhdr: ::NMHDR,
+ pszUserString: ::LPCSTR,
+ st: ::SYSTEMTIME,
+ dwFlags: ::DWORD,
+}}
+pub type LPNMDATETIMESTRINGA = *mut NMDATETIMESTRINGA;
+STRUCT!{struct NMDATETIMESTRINGW {
+ nmhdr: ::NMHDR,
+ pszUserString: ::LPCWSTR,
+ st: ::SYSTEMTIME,
+ dwFlags: ::DWORD,
+}}
+pub type LPNMDATETIMESTRINGW = *mut NMDATETIMESTRINGW;
+pub const DTN_WMKEYDOWNA: ::UINT = DTN_FIRST2 - 4;
+pub const DTN_WMKEYDOWNW: ::UINT = DTN_FIRST - 4;
+STRUCT!{struct NMDATETIMEWMKEYDOWNA {
+ nmhdr: ::NMHDR,
+ nVirtKey: ::c_int,
+ pszFormat: ::LPCSTR,
+ st: ::SYSTEMTIME,
+}}
+pub type LPNMDATETIMEWMKEYDOWNA = *mut NMDATETIMEWMKEYDOWNA;
+STRUCT!{struct NMDATETIMEWMKEYDOWNW {
+ nmhdr: ::NMHDR,
+ nVirtKey: ::c_int,
+ pszFormat: ::LPCWSTR,
+ st: ::SYSTEMTIME,
+}}
+pub type LPNMDATETIMEWMKEYDOWNW = *mut NMDATETIMEWMKEYDOWNW;
+pub const DTN_FORMATA: ::UINT = DTN_FIRST2 - 3;
+pub const DTN_FORMATW: ::UINT = DTN_FIRST - 3;
+STRUCT!{nodebug struct NMDATETIMEFORMATA {
+ nmhdr: ::NMHDR,
+ pszFormat: ::LPCSTR,
+ st: ::SYSTEMTIME,
+ pszDisplay: ::LPCSTR,
+ szDisplay: [::CHAR; 64],
+}}
+pub type LPNMDATETIMEFORMATA = *mut NMDATETIMEFORMATA;
+STRUCT!{nodebug struct NMDATETIMEFORMATW {
+ nmhdr: ::NMHDR,
+ pszFormat: ::LPCWSTR,
+ st: ::SYSTEMTIME,
+ pszDisplay: ::LPCWSTR,
+ szDisplay: [::WCHAR; 64],
+}}
+pub type LPNMDATETIMEFORMATW = *mut NMDATETIMEFORMATW;
+pub const DTN_FORMATQUERYA: ::UINT = DTN_FIRST2 - 2;
+pub const DTN_FORMATQUERYW: ::UINT = DTN_FIRST - 2;
+STRUCT!{struct NMDATETIMEFORMATQUERYA {
+ nmhdr: ::NMHDR,
+ pszFormat: ::LPCSTR,
+ szMax: ::SIZE,
+}}
+pub type LPNMDATETIMEFORMATQUERYA = *mut NMDATETIMEFORMATQUERYA;
+STRUCT!{struct NMDATETIMEFORMATQUERYW {
+ nmhdr: ::NMHDR,
+ pszFormat: ::LPCWSTR,
+ szMax: ::SIZE,
+}}
+pub type LPNMDATETIMEFORMATQUERYW = *mut NMDATETIMEFORMATQUERYW;
+pub const DTN_DROPDOWN: ::UINT = DTN_FIRST2 - 1;
+pub const DTN_CLOSEUP: ::UINT = DTN_FIRST2;
+pub const GDTR_MIN: ::WPARAM = 0x0001;
+pub const GDTR_MAX: ::WPARAM = 0x0002;
+pub const GDT_ERROR: ::LRESULT = -1;
+pub const GDT_VALID: ::LRESULT = 0;
+pub const GDT_NONE: ::LRESULT = 1;
+pub const IPM_CLEARADDRESS: ::UINT = ::WM_USER + 100;
+pub const IPM_SETADDRESS: ::UINT = ::WM_USER + 101;
+pub const IPM_GETADDRESS: ::UINT = ::WM_USER + 102;
+pub const IPM_SETRANGE: ::UINT = ::WM_USER + 103;
+pub const IPM_SETFOCUS: ::UINT = ::WM_USER + 104;
+pub const IPM_ISBLANK: ::UINT = ::WM_USER + 105;
+pub const IPN_FIELDCHANGED: ::UINT = IPN_FIRST - 0;
+STRUCT!{struct NMIPADDRESS {
+ hdr: ::NMHDR,
+ iField: ::c_int,
+ iValue: ::c_int,
+}}
+pub type LPNMIPADDRESS = *mut NMIPADDRESS;
+#[inline] #[allow(dead_code)]
+pub fn MAKEIPRANGE(low: ::BYTE, high: ::BYTE) -> ::LPARAM {
+ (high << 8 + low) as ::LPARAM
+}
+#[inline] #[allow(dead_code)]
+pub fn MAKEIPADDRESS(b1: ::DWORD, b2: ::DWORD, b3: ::DWORD, b4: ::DWORD) -> ::LPARAM {
+ ((b1 << 24) + (b2 << 16) + (b3 << 8) + b4) as ::LPARAM
+}
+pub const PGS_VERT: ::DWORD = 0x00000000;
+pub const PGS_HORZ: ::DWORD = 0x00000001;
+pub const PGS_AUTOSCROLL: ::DWORD = 0x00000002;
+pub const PGS_DRAGNDROP: ::DWORD = 0x00000004;
+pub const PGF_INVISIBLE: ::DWORD = 0;
+pub const PGF_NORMAL: ::DWORD = 1;
+pub const PGF_GRAYED: ::DWORD = 2;
+pub const PGF_DEPRESSED: ::DWORD = 4;
+pub const PGF_HOT: ::DWORD = 8;
+pub const PGB_TOPORLEFT: ::c_int = 0;
+pub const PGB_BOTTOMORRIGHT: ::c_int = 1;
+pub const PGM_SETCHILD: ::UINT = PGM_FIRST + 1;
+pub const PGM_RECALCSIZE: ::UINT = PGM_FIRST + 2;
+pub const PGM_FORWARDMOUSE: ::UINT = PGM_FIRST + 3;
+pub const PGM_SETBKCOLOR: ::UINT = PGM_FIRST + 4;
+pub const PGM_GETBKCOLOR: ::UINT = PGM_FIRST + 5;
+pub const PGM_SETBORDER: ::UINT = PGM_FIRST + 6;
+pub const PGM_GETBORDER: ::UINT = PGM_FIRST + 7;
+pub const PGM_SETPOS: ::UINT = PGM_FIRST + 8;
+pub const PGM_GETPOS: ::UINT = PGM_FIRST + 9;
+pub const PGM_SETBUTTONSIZE: ::UINT = PGM_FIRST + 10;
+pub const PGM_GETBUTTONSIZE: ::UINT = PGM_FIRST + 11;
+pub const PGM_GETBUTTONSTATE: ::UINT = PGM_FIRST + 12;
+pub const PGM_GETDROPTARGET: ::UINT = CCM_GETDROPTARGET;
+pub const PGM_SETSCROLLINFO: ::UINT = PGM_FIRST + 13;
+pub const PGN_SCROLL: ::UINT = PGN_FIRST - 1;
+pub const PGF_SCROLLUP: ::c_int = 1;
+pub const PGF_SCROLLDOWN: ::c_int = 2;
+pub const PGF_SCROLLLEFT: ::c_int = 4;
+pub const PGF_SCROLLRIGHT: ::c_int = 8;
+pub const PGK_SHIFT: ::BOOL = 1;
+pub const PGK_CONTROL: ::BOOL = 2;
+pub const PGK_MENU: ::BOOL = 4;
+STRUCT!{struct NMPGSCROLL {
+ hdr: ::NMHDR,
+ fwKeys: ::BOOL,
+ rcParent: ::RECT,
+ iDir: ::c_int,
+ iXpos: ::c_int,
+ iYpos: ::c_int,
+ iScroll: ::c_int,
+}}
+pub type LPNMPGSCROLL = *mut NMPGSCROLL;
+pub const PGN_CALCSIZE: ::UINT = PGN_FIRST - 2;
+pub const PGF_CALCWIDTH: ::DWORD = 1;
+pub const PGF_CALCHEIGHT: ::DWORD = 2;
+STRUCT!{struct NMPGCALCSIZE {
+ hdr: ::NMHDR,
+ dwFlag: ::DWORD,
+ iWidth: ::c_int,
+ iHeight: ::c_int,
+}}
+pub type LPNMPGCALCSIZE = *mut NMPGCALCSIZE;
+pub const PGN_HOTITEMCHANGE: ::UINT = PGN_FIRST - 3;
+STRUCT!{struct NMPGHOTITEM {
+ hdr: ::NMHDR,
+ idOld: ::c_int,
+ idNew: ::c_int,
+ dwFlags: ::DWORD,
+}}
+pub type LPNMPGHOTITEM = *mut NMPGHOTITEM;
+pub const NFS_EDIT: ::DWORD = 0x0001;
+pub const NFS_STATIC: ::DWORD = 0x0002;
+pub const NFS_LISTCOMBO: ::DWORD = 0x0004;
+pub const NFS_BUTTON: ::DWORD = 0x0008;
+pub const NFS_ALL: ::DWORD = 0x0010;
+pub const NFS_USEFONTASSOC: ::DWORD = 0x0020;
+pub const BUTTON_IMAGELIST_ALIGN_LEFT: ::UINT = 0;
+pub const BUTTON_IMAGELIST_ALIGN_RIGHT: ::UINT = 1;
+pub const BUTTON_IMAGELIST_ALIGN_TOP: ::UINT = 2;
+pub const BUTTON_IMAGELIST_ALIGN_BOTTOM: ::UINT = 3;
+pub const BUTTON_IMAGELIST_ALIGN_CENTER: ::UINT = 4;
+STRUCT!{struct BUTTON_IMAGELIST {
+ himl: HIMAGELIST,
+ margin: ::RECT,
+ uAlign: ::UINT,
+}}
+pub type PBUTTON_IMAGELIST = *mut BUTTON_IMAGELIST;
+pub const BCM_GETIDEALSIZE: ::UINT = BCM_FIRST + 0x0001;
+pub const BCM_SETIMAGELIST: ::UINT = BCM_FIRST + 0x0002;
+pub const BCM_GETIMAGELIST: ::UINT = BCM_FIRST + 0x0003;
+pub const BCM_SETTEXTMARGIN: ::UINT = BCM_FIRST + 0x0004;
+pub const BCM_GETTEXTMARGIN: ::UINT = BCM_FIRST + 0x0005;
+STRUCT!{struct NMBCHOTITEM {
+ hdr: ::NMHDR,
+ dwFlags: ::DWORD,
+}}
+pub type LPNMBCHOTITEM = *mut NMBCHOTITEM;
+pub const BCN_HOTITEMCHANGE: ::UINT = BCN_FIRST + 0x0001;
+pub const BS_SPLITBUTTON: ::UINT = 0x0000000C;
+pub const BS_DEFSPLITBUTTON: ::UINT = 0x0000000D;
+pub const BS_COMMANDLINK: ::UINT = 0x0000000E;
+pub const BS_DEFCOMMANDLINK: ::UINT = 0x0000000F;
+pub const BCSIF_GLYPH: ::UINT = 0x0001;
+pub const BCSIF_IMAGE: ::UINT = 0x0002;
+pub const BCSIF_STYLE: ::UINT = 0x0004;
+pub const BCSIF_SIZE: ::UINT = 0x0008;
+pub const BCSS_NOSPLIT: ::UINT = 0x0001;
+pub const BCSS_STRETCH: ::UINT = 0x0002;
+pub const BCSS_ALIGNLEFT: ::UINT = 0x0004;
+pub const BCSS_IMAGE: ::UINT = 0x0008;
+STRUCT!{struct BUTTON_SPLITINFO {
+ mask: ::UINT,
+ himlGlyph: HIMAGELIST,
+ uSplitStyle: ::UINT,
+ size: ::SIZE,
+}}
+pub type PBUTTON_SPLITINFO = *mut BUTTON_SPLITINFO;
+pub const BCM_SETDROPDOWNSTATE: ::UINT = BCM_FIRST + 0x0006;
+pub const BCM_SETSPLITINFO: ::UINT = BCM_FIRST + 0x0007;
+pub const BCM_GETSPLITINFO: ::UINT = BCM_FIRST + 0x0008;
+pub const BCM_SETNOTE: ::UINT = BCM_FIRST + 0x0009;
+pub const BCM_GETNOTE: ::UINT = BCM_FIRST + 0x000A;
+pub const BCM_GETNOTELENGTH: ::UINT = BCM_FIRST + 0x000B;
+pub const BCM_SETSHIELD: ::UINT = BCM_FIRST + 0x000C;
+pub const BCCL_NOGLYPH: HIMAGELIST = (0 - 1) as HIMAGELIST;
+STRUCT!{struct NMBCDROPDOWN {
+ hdr: ::NMHDR,
+ rcButton: ::RECT,
+}}
+pub type LPNMBCDROPDOWN = *mut NMBCDROPDOWN;
+pub const BCN_DROPDOWN: ::UINT = BCN_FIRST + 0x0002;
+pub const EM_SETCUEBANNER: ::UINT = ECM_FIRST + 1;
+pub const EM_GETCUEBANNER: ::UINT = ECM_FIRST + 2;
+pub const EM_SHOWBALLOONTIP: ::UINT = ECM_FIRST + 3;
+pub const EM_HIDEBALLOONTIP: ::UINT = ECM_FIRST + 4;
+pub const EM_SETHILITE: ::UINT = ECM_FIRST + 5;
+pub const EM_GETHILITE: ::UINT = ECM_FIRST + 6;
+pub const EM_NOSETFOCUS: ::UINT = ECM_FIRST + 7;
+pub const EM_TAKEFOCUS: ::UINT = ECM_FIRST + 8;
+STRUCT!{struct EDITBALLOONTIP {
+ cbStruct: ::DWORD,
+ pszTitle: ::LPCWSTR,
+ pszText: ::LPCWSTR,
+ ttiIcon: ::INT,
+}}
+pub type PEDITBALLOONTIP = *mut EDITBALLOONTIP;
+pub const CB_SETMINVISIBLE: ::UINT = CBM_FIRST + 1;
+pub const CB_GETMINVISIBLE: ::UINT = CBM_FIRST + 2;
+pub const CB_SETCUEBANNER: ::UINT = CBM_FIRST + 3;
+pub const CB_GETCUEBANNER: ::UINT = CBM_FIRST + 4;
+pub type PFTASKDIALOGCALLBACK = Option<unsafe extern "system" fn(
+ hwnd: ::HWND, msg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM, lpRefData: ::LONG_PTR,
+) -> ::HRESULT>;
+FLAGS!{enum TASKDIALOG_FLAGS {
+ TDF_ENABLE_HYPERLINKS = 0x0001,
+ TDF_USE_HICON_MAIN = 0x0002,
+ TDF_USE_HICON_FOOTER = 0x0004,
+ TDF_ALLOW_DIALOG_CANCELLATION = 0x0008,
+ TDF_USE_COMMAND_LINKS = 0x0010,
+ TDF_USE_COMMAND_LINKS_NO_ICON = 0x0020,
+ TDF_EXPAND_FOOTER_AREA = 0x0040,
+ TDF_EXPANDED_BY_DEFAULT = 0x0080,
+ TDF_VERIFICATION_FLAG_CHECKED = 0x0100,
+ TDF_SHOW_PROGRESS_BAR = 0x0200,
+ TDF_SHOW_MARQUEE_PROGRESS_BAR = 0x0400,
+ TDF_CALLBACK_TIMER = 0x0800,
+ TDF_POSITION_RELATIVE_TO_WINDOW = 0x1000,
+ TDF_RTL_LAYOUT = 0x2000,
+ TDF_NO_DEFAULT_RADIO_BUTTON = 0x4000,
+ TDF_CAN_BE_MINIMIZED = 0x8000,
+ TDF_NO_SET_FOREGROUND = 0x00010000,
+ TDF_SIZE_TO_CONTENT = 0x01000000,
+}}
+ENUM!{enum TASKDIALOG_MESSAGES {
+ TDM_NAVIGATE_PAGE = ::WM_USER + 101,
+ TDM_CLICK_BUTTON = ::WM_USER + 102,
+ TDM_SET_MARQUEE_PROGRESS_BAR = ::WM_USER + 103,
+ TDM_SET_PROGRESS_BAR_STATE = ::WM_USER + 104,
+ TDM_SET_PROGRESS_BAR_RANGE = ::WM_USER + 105,
+ TDM_SET_PROGRESS_BAR_POS = ::WM_USER + 106,
+ TDM_SET_PROGRESS_BAR_MARQUEE = ::WM_USER + 107,
+ TDM_SET_ELEMENT_TEXT = ::WM_USER + 108,
+ TDM_CLICK_RADIO_BUTTON = ::WM_USER + 110,
+ TDM_ENABLE_BUTTON = ::WM_USER + 111,
+ TDM_ENABLE_RADIO_BUTTON = ::WM_USER + 112,
+ TDM_CLICK_VERIFICATION = ::WM_USER + 113,
+ TDM_UPDATE_ELEMENT_TEXT = ::WM_USER + 114,
+ TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = ::WM_USER + 115,
+ TDM_UPDATE_ICON = ::WM_USER + 116,
+}}
+ENUM!{enum TASKDIALOG_NOTIFICATIONS {
+ TDN_CREATED = 0,
+ TDN_NAVIGATED = 1,
+ TDN_BUTTON_CLICKED = 2,
+ TDN_HYPERLINK_CLICKED = 3,
+ TDN_TIMER = 4,
+ TDN_DESTROYED = 5,
+ TDN_RADIO_BUTTON_CLICKED = 6,
+ TDN_DIALOG_CONSTRUCTED = 7,
+ TDN_VERIFICATION_CLICKED = 8,
+ TDN_HELP = 9,
+ TDN_EXPANDO_BUTTON_CLICKED = 10,
+}}
+STRUCT!{struct TASKDIALOG_BUTTON {
+ nButtonID: ::c_int,
+ pszButtonText: ::PCWSTR,
+}}
+ENUM!{enum TASKDIALOG_ELEMENTS {
+ TDE_CONTENT,
+ TDE_EXPANDED_INFORMATION,
+ TDE_FOOTER,
+ TDE_MAIN_INSTRUCTION,
+}}
+ENUM!{enum TASKDIALOG_ICON_ELEMENTS {
+ TDIE_ICON_MAIN,
+ TDIE_ICON_FOOTER,
+}}
+FLAGS!{enum TASKDIALOG_COMMON_BUTTON_FLAGS {
+ TDCBF_OK_BUTTON = 0x0001,
+ TDCBF_YES_BUTTON = 0x0002,
+ TDCBF_NO_BUTTON = 0x0004,
+ TDCBF_CANCEL_BUTTON = 0x0008,
+ TDCBF_RETRY_BUTTON = 0x0010,
+ TDCBF_CLOSE_BUTTON = 0x0020,
+}}
+STRUCT!{nodebug struct TASKDIALOGCONFIG {
+ cbSize: ::UINT,
+ hwndParent: ::HWND,
+ hInstance: ::HINSTANCE,
+ dwFlags: TASKDIALOG_FLAGS,
+ dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS,
+ pszWindowTitle: ::PCWSTR,
+ hMainIcon: ::HICON,
+ pszMainInstruction: ::PCWSTR,
+ pszContent: ::PCWSTR,
+ cButtons: ::UINT,
+ pButtons: *const TASKDIALOG_BUTTON,
+ nDefaultButton: ::c_int,
+ cRadioButtons: ::UINT,
+ pRadioButtons: *const TASKDIALOG_BUTTON,
+ nDefaultRadioButton: ::c_int,
+ pszVerificationText: ::PCWSTR,
+ pszExpandedInformation: ::PCWSTR,
+ pszExpandedControlText: ::PCWSTR,
+ pszCollapsedControlText: ::PCWSTR,
+ hFooterIcon: ::HICON,
+ pszFooter: ::PCWSTR,
+ pfCallback: PFTASKDIALOGCALLBACK,
+ lpCallbackData: ::LONG_PTR,
+ cxWidth: ::UINT,
+}}
+UNION!(TASKDIALOGCONFIG, hMainIcon, pszMainIcon, pszMainIcon_mut, ::PCWSTR);
+UNION!(TASKDIALOGCONFIG, hFooterIcon, pszFooterIcon, pszFooterIcon_mut, ::PCWSTR);
+pub const DA_LAST: ::c_int = 0x7FFFFFFF;
+pub const DA_ERR: ::c_int = -1;
+pub type PFNDAENUMCALLBACK = Option<unsafe extern "system" fn(
+ p: *mut ::c_void, pData: *mut ::c_void,
+) -> ::c_int>;
+pub type PFNDAENUMCALLBACKCONST = Option<unsafe extern "system" fn(
+ p: *const ::c_void, pData: *mut ::c_void,
+) -> ::c_int>;
+pub type PFNDACOMPARE = Option<unsafe extern "system" fn(
+ p1: *mut ::c_void, p2: *mut ::c_void, lParam: ::LPARAM,
+) -> ::c_int>;
+pub type PFNDACOMPARECONST = Option<unsafe extern "system" fn(
+ p1: *const ::c_void, p2: *const ::c_void, lParam: ::LPARAM,
+) -> ::c_int>;
+pub enum DSA {}
+pub type HDSA = *mut DSA;
+pub const DSA_APPEND: ::c_int = DA_LAST;
+pub const DSA_ERR: ::c_int = DA_ERR;
+pub type PFNDSAENUMCALLBACK = PFNDAENUMCALLBACK;
+pub type PFNDSAENUMCALLBACKCONST = PFNDAENUMCALLBACKCONST;
+pub type PFNDSACOMPARE = PFNDACOMPARE;
+pub type PFNDSACOMPARECONST = PFNDACOMPARECONST;
+pub enum DPA {}
+pub type HDPA = *mut DPA;
+STRUCT!{struct DPASTREAMINFO {
+ iPos: ::c_int,
+ pvItem: *mut ::c_void,
+}}
+pub type PFNDPASTREAM = Option<unsafe extern "system" fn(
+ pinfo: *mut DPASTREAMINFO, pstream: *mut ::IStream, pvInstData: *mut ::c_void,
+) -> ::HRESULT>;
+pub const DPAM_SORTED: ::DWORD = 0x00000001;
+pub const DPAM_NORMAL: ::DWORD = 0x00000002;
+pub const DPAM_UNION: ::DWORD = 0x00000004;
+pub const DPAM_INTERSECT: ::DWORD = 0x00000008;
+pub type PFNDPAMERGE = Option<unsafe extern "system" fn(
+ uMsg: ::UINT, pvDest: *mut ::c_void, pvSrc: *mut ::c_void, lParam: ::LPARAM,
+) -> *mut ::c_void>;
+pub type PFNDPAMERGECONST = Option<unsafe extern "system" fn(
+ uMsg: ::UINT, pvDest: *const ::c_void, pvSrc: *const ::c_void, lParam: ::LPARAM,
+) -> *const ::c_void>;
+pub const DPAMM_MERGE: ::UINT = 1;
+pub const DPAMM_DELETE: ::UINT = 2;
+pub const DPAMM_INSERT: ::UINT = 3;
+pub const DPAS_SORTED: ::UINT = 0x0001;
+pub const DPAS_INSERTBEFORE: ::UINT = 0x0002;
+pub const DPAS_INSERTAFTER: ::UINT = 0x0004;
+pub const DPA_APPEND: ::c_int = DA_LAST;
+pub const DPA_ERR: ::c_int = DA_ERR;
+pub type PFNDPAENUMCALLBACK = PFNDAENUMCALLBACK;
+pub type PFNDPAENUMCALLBACKCONST = PFNDAENUMCALLBACKCONST;
+pub type PFNDPACOMPARE = PFNDACOMPARE;
+pub type PFNDPACOMPARECONST = PFNDACOMPARECONST;
+pub const WSB_PROP_CYVSCROLL: ::UINT = 0x00000001;
+pub const WSB_PROP_CXHSCROLL: ::UINT = 0x00000002;
+pub const WSB_PROP_CYHSCROLL: ::UINT = 0x00000004;
+pub const WSB_PROP_CXVSCROLL: ::UINT = 0x00000008;
+pub const WSB_PROP_CXHTHUMB: ::UINT = 0x00000010;
+pub const WSB_PROP_CYVTHUMB: ::UINT = 0x00000020;
+pub const WSB_PROP_VBKGCOLOR: ::UINT = 0x00000040;
+pub const WSB_PROP_HBKGCOLOR: ::UINT = 0x00000080;
+pub const WSB_PROP_VSTYLE: ::UINT = 0x00000100;
+pub const WSB_PROP_HSTYLE: ::UINT = 0x00000200;
+pub const WSB_PROP_WINSTYLE: ::UINT = 0x00000400;
+pub const WSB_PROP_PALETTE: ::UINT = 0x00000800;
+pub const WSB_PROP_MASK: ::UINT = 0x00000FFF;
+pub const FSB_FLAT_MODE: ::INT_PTR = 2;
+pub const FSB_ENCARTA_MODE: ::INT_PTR = 1;
+pub const FSB_REGULAR_MODE: ::INT_PTR = 0;
+pub type SUBCLASSPROC = Option<unsafe extern "system" fn(
+ hWnd: ::HWND, uMsg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM, uIdSubclass: ::UINT_PTR,
+ dwRefData: ::DWORD_PTR,
+) -> ::LRESULT>;
diff --git a/third_party/rust/winapi-0.2.8/src/commdlg.rs b/third_party/rust/winapi-0.2.8/src/commdlg.rs
new file mode 100644
index 0000000000..0eb3fd8721
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/commdlg.rs
@@ -0,0 +1,583 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! 32-Bit Common Dialog APIs
+pub type LPOFNHOOKPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+STRUCT!{nodebug struct OPENFILENAME_NT4A {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ lpstrFilter: ::LPCSTR,
+ lpstrCustomFilter: ::LPSTR,
+ nMaxCustFilter: ::DWORD,
+ nFilterIndex: ::DWORD,
+ lpstrFile: ::LPSTR,
+ nMaxFile: ::DWORD,
+ lpstrFileTitle: ::LPSTR,
+ nMaxFileTitle: ::DWORD,
+ lpstrInitialDir: ::LPCSTR,
+ lpstrTitle: ::LPCSTR,
+ Flags: ::DWORD,
+ nFileOffset: ::WORD,
+ nFileExtension: ::WORD,
+ lpstrDefExt: ::LPCSTR,
+ lCustData: ::LPARAM,
+ lpfnHook: LPOFNHOOKPROC,
+ lpTemplateName: ::LPCSTR,
+}}
+pub type LPOPENFILENAME_NT4A = *mut OPENFILENAME_NT4A;
+STRUCT!{nodebug struct OPENFILENAME_NT4W {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ lpstrFilter: ::LPCWSTR,
+ lpstrCustomFilter: ::LPWSTR,
+ nMaxCustFilter: ::DWORD,
+ nFilterIndex: ::DWORD,
+ lpstrFile: ::LPWSTR,
+ nMaxFile: ::DWORD,
+ lpstrFileTitle: ::LPWSTR,
+ nMaxFileTitle: ::DWORD,
+ lpstrInitialDir: ::LPCWSTR,
+ lpstrTitle: ::LPCWSTR,
+ Flags: ::DWORD,
+ nFileOffset: ::WORD,
+ nFileExtension: ::WORD,
+ lpstrDefExt: ::LPCWSTR,
+ lCustData: ::LPARAM,
+ lpfnHook: LPOFNHOOKPROC,
+ lpTemplateName: ::LPCWSTR,
+}}
+pub type LPOPENFILENAME_NT4W = *mut OPENFILENAME_NT4W;
+STRUCT!{nodebug struct OPENFILENAMEA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ lpstrFilter: ::LPCSTR,
+ lpstrCustomFilter: ::LPSTR,
+ nMaxCustFilter: ::DWORD,
+ nFilterIndex: ::DWORD,
+ lpstrFile: ::LPSTR,
+ nMaxFile: ::DWORD,
+ lpstrFileTitle: ::LPSTR,
+ nMaxFileTitle: ::DWORD,
+ lpstrInitialDir: ::LPCSTR,
+ lpstrTitle: ::LPCSTR,
+ Flags: ::DWORD,
+ nFileOffset: ::WORD,
+ nFileExtension: ::WORD,
+ lpstrDefExt: ::LPCSTR,
+ lCustData: ::LPARAM,
+ lpfnHook: LPOFNHOOKPROC,
+ lpTemplateName: ::LPCSTR,
+ pvReserved: *mut ::c_void,
+ dwReserved: ::DWORD,
+ FlagsEx: ::DWORD,
+}}
+pub type LPOPENFILENAMEA = *mut OPENFILENAMEA;
+STRUCT!{nodebug struct OPENFILENAMEW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ lpstrFilter: ::LPCWSTR,
+ lpstrCustomFilter: ::LPWSTR,
+ nMaxCustFilter: ::DWORD,
+ nFilterIndex: ::DWORD,
+ lpstrFile: ::LPWSTR,
+ nMaxFile: ::DWORD,
+ lpstrFileTitle: ::LPWSTR,
+ nMaxFileTitle: ::DWORD,
+ lpstrInitialDir: ::LPCWSTR,
+ lpstrTitle: ::LPCWSTR,
+ Flags: ::DWORD,
+ nFileOffset: ::WORD,
+ nFileExtension: ::WORD,
+ lpstrDefExt: ::LPCWSTR,
+ lCustData: ::LPARAM,
+ lpfnHook: LPOFNHOOKPROC,
+ lpTemplateName: ::LPCWSTR,
+ pvReserved: *mut ::c_void,
+ dwReserved: ::DWORD,
+ FlagsEx: ::DWORD,
+}}
+pub type LPOPENFILENAMEW = *mut OPENFILENAMEW;
+pub const OFN_READONLY: ::DWORD = 0x00000001;
+pub const OFN_OVERWRITEPROMPT: ::DWORD = 0x00000002;
+pub const OFN_HIDEREADONLY: ::DWORD = 0x00000004;
+pub const OFN_NOCHANGEDIR: ::DWORD = 0x00000008;
+pub const OFN_SHOWHELP: ::DWORD = 0x00000010;
+pub const OFN_ENABLEHOOK: ::DWORD = 0x00000020;
+pub const OFN_ENABLETEMPLATE: ::DWORD = 0x00000040;
+pub const OFN_ENABLETEMPLATEHANDLE: ::DWORD = 0x00000080;
+pub const OFN_NOVALIDATE: ::DWORD = 0x00000100;
+pub const OFN_ALLOWMULTISELECT: ::DWORD = 0x00000200;
+pub const OFN_EXTENSIONDIFFERENT: ::DWORD = 0x00000400;
+pub const OFN_PATHMUSTEXIST: ::DWORD = 0x00000800;
+pub const OFN_FILEMUSTEXIST: ::DWORD = 0x00001000;
+pub const OFN_CREATEPROMPT: ::DWORD = 0x00002000;
+pub const OFN_SHAREAWARE: ::DWORD = 0x00004000;
+pub const OFN_NOREADONLYRETURN: ::DWORD = 0x00008000;
+pub const OFN_NOTESTFILECREATE: ::DWORD = 0x00010000;
+pub const OFN_NONETWORKBUTTON: ::DWORD = 0x00020000;
+pub const OFN_NOLONGNAMES: ::DWORD = 0x00040000;
+pub const OFN_EXPLORER: ::DWORD = 0x00080000;
+pub const OFN_NODEREFERENCELINKS: ::DWORD = 0x00100000;
+pub const OFN_LONGNAMES: ::DWORD = 0x00200000;
+pub const OFN_ENABLEINCLUDENOTIFY: ::DWORD = 0x00400000;
+pub const OFN_ENABLESIZING: ::DWORD = 0x00800000;
+pub const OFN_DONTADDTORECENT: ::DWORD = 0x02000000;
+pub const OFN_FORCESHOWHIDDEN: ::DWORD = 0x10000000;
+pub const OFN_EX_NOPLACESBAR: ::DWORD = 0x00000001;
+pub const OFN_SHAREFALLTHROUGH: ::UINT_PTR = 2;
+pub const OFN_SHARENOWARN: ::UINT_PTR = 1;
+pub const OFN_SHAREWARN: ::UINT_PTR = 0;
+pub type LPCCHOOKPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+STRUCT!{struct OFNOTIFYA {
+ hdr: ::NMHDR,
+ lpOFN: LPOPENFILENAMEA,
+ pszFile: ::LPSTR,
+}}
+pub type LPOFNOTIFYA = *mut OFNOTIFYA;
+STRUCT!{struct OFNOTIFYW {
+ hdr: ::NMHDR,
+ lpOFN: LPOPENFILENAMEW,
+ pszFile: ::LPWSTR,
+}}
+pub type LPOFNOTIFYW = *mut OFNOTIFYW;
+STRUCT!{struct OFNOTIFYEXA {
+ hdr: ::NMHDR,
+ lpOFN: LPOPENFILENAMEA,
+ psf: ::LPVOID,
+ pidl: ::LPVOID,
+}}
+pub type LPOFNOTIFYEXA = *mut OFNOTIFYEXA;
+STRUCT!{struct OFNOTIFYEXW {
+ hdr: ::NMHDR,
+ lpOFN: LPOPENFILENAMEW,
+ psf: ::LPVOID,
+ pidl: ::LPVOID,
+}}
+pub type LPOFNOTIFYEXW = *mut OFNOTIFYEXW;
+pub const CDN_FIRST: ::UINT = -601i32 as ::UINT;
+pub const CDN_LAST: ::UINT = -699i32 as ::UINT;
+pub const CDN_INITDONE: ::UINT = CDN_FIRST - 0x0000;
+pub const CDN_SELCHANGE: ::UINT = CDN_FIRST - 0x0001;
+pub const CDN_FOLDERCHANGE: ::UINT = CDN_FIRST - 0x0002;
+pub const CDN_SHAREVIOLATION: ::UINT = CDN_FIRST - 0x0003;
+pub const CDN_HELP: ::UINT = CDN_FIRST - 0x0004;
+pub const CDN_FILEOK: ::UINT = CDN_FIRST - 0x0005;
+pub const CDN_TYPECHANGE: ::UINT = CDN_FIRST - 0x0006;
+pub const CDN_INCLUDEITEM: ::UINT = CDN_FIRST - 0x0007;
+pub const CDM_FIRST: ::UINT = ::WM_USER + 100;
+pub const CDM_LAST: ::UINT = ::WM_USER + 200;
+pub const CDM_GETSPEC: ::UINT = CDM_FIRST + 0x0000;
+pub const CDM_GETFILEPATH: ::UINT = CDM_FIRST + 0x0001;
+pub const CDM_GETFOLDERPATH: ::UINT = CDM_FIRST + 0x0002;
+pub const CDM_GETFOLDERIDLIST: ::UINT = CDM_FIRST + 0x0003;
+pub const CDM_SETCONTROLTEXT: ::UINT = CDM_FIRST + 0x0004;
+pub const CDM_HIDECONTROL: ::UINT = CDM_FIRST + 0x0005;
+pub const CDM_SETDEFEXT: ::UINT = CDM_FIRST + 0x0006;
+STRUCT!{nodebug struct CHOOSECOLORA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HWND,
+ rgbResult: ::COLORREF,
+ lpCustColors: *mut ::COLORREF,
+ Flags: ::DWORD,
+ lCustData: ::LPARAM,
+ lpfnHook: LPCCHOOKPROC,
+ lpTemplateName: ::LPCSTR,
+}}
+pub type LPCHOOSECOLORA = *mut CHOOSECOLORA;
+STRUCT!{nodebug struct CHOOSECOLORW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HWND,
+ rgbResult: ::COLORREF,
+ lpCustColors: *mut ::COLORREF,
+ Flags: ::DWORD,
+ lCustData: ::LPARAM,
+ lpfnHook: LPCCHOOKPROC,
+ lpTemplateName: ::LPCWSTR,
+}}
+pub type LPCHOOSECOLORW = *mut CHOOSECOLORW;
+pub const CC_RGBINIT: ::DWORD = 0x00000001;
+pub const CC_FULLOPEN: ::DWORD = 0x00000002;
+pub const CC_PREVENTFULLOPEN: ::DWORD = 0x00000004;
+pub const CC_SHOWHELP: ::DWORD = 0x00000008;
+pub const CC_ENABLEHOOK: ::DWORD = 0x00000010;
+pub const CC_ENABLETEMPLATE: ::DWORD = 0x00000020;
+pub const CC_ENABLETEMPLATEHANDLE: ::DWORD = 0x00000040;
+pub const CC_SOLIDCOLOR: ::DWORD = 0x00000080;
+pub const CC_ANYCOLOR: ::DWORD = 0x00000100;
+pub type LPFRHOOKPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+STRUCT!{nodebug struct FINDREPLACEA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ Flags: ::DWORD,
+ lpstrFindWhat: ::LPSTR,
+ lpstrReplaceWith: ::LPSTR,
+ wFindWhatLen: ::WORD,
+ wReplaceWithLen: ::WORD,
+ lCustData: ::LPARAM,
+ lpfnHook: LPFRHOOKPROC,
+ lpTemplateName: ::LPCSTR,
+}}
+pub type LPFINDREPLACEA = *mut FINDREPLACEA;
+STRUCT!{nodebug struct FINDREPLACEW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ Flags: ::DWORD,
+ lpstrFindWhat: ::LPWSTR,
+ lpstrReplaceWith: ::LPWSTR,
+ wFindWhatLen: ::WORD,
+ wReplaceWithLen: ::WORD,
+ lCustData: ::LPARAM,
+ lpfnHook: LPFRHOOKPROC,
+ lpTemplateName: ::LPCWSTR,
+}}
+pub type LPFINDREPLACEW = *mut FINDREPLACEW;
+pub const FR_DOWN: ::DWORD = 0x00000001;
+pub const FR_WHOLEWORD: ::DWORD = 0x00000002;
+pub const FR_MATCHCASE: ::DWORD = 0x00000004;
+pub const FR_FINDNEXT: ::DWORD = 0x00000008;
+pub const FR_REPLACE: ::DWORD = 0x00000010;
+pub const FR_REPLACEALL: ::DWORD = 0x00000020;
+pub const FR_DIALOGTERM: ::DWORD = 0x00000040;
+pub const FR_SHOWHELP: ::DWORD = 0x00000080;
+pub const FR_ENABLEHOOK: ::DWORD = 0x00000100;
+pub const FR_ENABLETEMPLATE: ::DWORD = 0x00000200;
+pub const FR_NOUPDOWN: ::DWORD = 0x00000400;
+pub const FR_NOMATCHCASE: ::DWORD = 0x00000800;
+pub const FR_NOWHOLEWORD: ::DWORD = 0x00001000;
+pub const FR_ENABLETEMPLATEHANDLE: ::DWORD = 0x00002000;
+pub const FR_HIDEUPDOWN: ::DWORD = 0x00004000;
+pub const FR_HIDEMATCHCASE: ::DWORD = 0x00008000;
+pub const FR_HIDEWHOLEWORD: ::DWORD = 0x00010000;
+pub const FR_RAW: ::DWORD = 0x00020000;
+pub const FR_MATCHDIAC: ::DWORD = 0x20000000;
+pub const FR_MATCHKASHIDA: ::DWORD = 0x40000000;
+pub const FR_MATCHALEFHAMZA: ::DWORD = 0x80000000;
+pub type LPCFHOOKPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+STRUCT!{nodebug struct CHOOSEFONTA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDC: ::HDC,
+ lpLogFont: ::LPLOGFONTA,
+ iPointSize: ::INT,
+ Flags: ::DWORD,
+ rgbColors: ::COLORREF,
+ lCustData: ::LPARAM,
+ lpfnHook: LPCFHOOKPROC,
+ lpTemplateName: ::LPCSTR,
+ hInstance: ::HINSTANCE,
+ lpszStyle: ::LPSTR,
+ nFontType: ::WORD,
+ ___MISSING_ALIGNMENT__: ::WORD,
+ nSizeMin: ::INT,
+ nSizeMax: ::INT,
+}}
+pub type LPCHOOSEFONTA = *mut CHOOSEFONTA;
+STRUCT!{nodebug struct CHOOSEFONTW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDC: ::HDC,
+ lpLogFont: ::LPLOGFONTW,
+ iPointSize: ::INT,
+ Flags: ::DWORD,
+ rgbColors: ::COLORREF,
+ lCustData: ::LPARAM,
+ lpfnHook: LPCFHOOKPROC,
+ lpTemplateName: ::LPCWSTR,
+ hInstance: ::HINSTANCE,
+ lpszStyle: ::LPWSTR,
+ nFontType: ::WORD,
+ ___MISSING_ALIGNMENT__: ::WORD,
+ nSizeMin: ::INT,
+ nSizeMax: ::INT,
+}}
+pub type LPCHOOSEFONTW = *mut CHOOSEFONTW;
+pub const CF_SCREENFONTS: ::DWORD = 0x00000001;
+pub const CF_PRINTERFONTS: ::DWORD = 0x00000002;
+pub const CF_BOTH: ::DWORD = CF_SCREENFONTS | CF_PRINTERFONTS;
+pub const CF_SHOWHELP: ::DWORD = 0x00000004;
+pub const CF_ENABLEHOOK: ::DWORD = 0x00000008;
+pub const CF_ENABLETEMPLATE: ::DWORD = 0x00000010;
+pub const CF_ENABLETEMPLATEHANDLE: ::DWORD = 0x00000020;
+pub const CF_INITTOLOGFONTSTRUCT: ::DWORD = 0x00000040;
+pub const CF_USESTYLE: ::DWORD = 0x00000080;
+pub const CF_EFFECTS: ::DWORD = 0x00000100;
+pub const CF_APPLY: ::DWORD = 0x00000200;
+pub const CF_ANSIONLY: ::DWORD = 0x00000400;
+pub const CF_SCRIPTSONLY: ::DWORD = CF_ANSIONLY;
+pub const CF_NOVECTORFONTS: ::DWORD = 0x00000800;
+pub const CF_NOOEMFONTS: ::DWORD = CF_NOVECTORFONTS;
+pub const CF_NOSIMULATIONS: ::DWORD = 0x00001000;
+pub const CF_LIMITSIZE: ::DWORD = 0x00002000;
+pub const CF_FIXEDPITCHONLY: ::DWORD = 0x00004000;
+pub const CF_WYSIWYG: ::DWORD = 0x00008000;
+pub const CF_FORCEFONTEXIST: ::DWORD = 0x00010000;
+pub const CF_SCALABLEONLY: ::DWORD = 0x00020000;
+pub const CF_TTONLY: ::DWORD = 0x00040000;
+pub const CF_NOFACESEL: ::DWORD = 0x00080000;
+pub const CF_NOSTYLESEL: ::DWORD = 0x00100000;
+pub const CF_NOSIZESEL: ::DWORD = 0x00200000;
+pub const CF_SELECTSCRIPT: ::DWORD = 0x00400000;
+pub const CF_NOSCRIPTSEL: ::DWORD = 0x00800000;
+pub const CF_NOVERTFONTS: ::DWORD = 0x01000000;
+pub const CF_INACTIVEFONTS: ::DWORD = 0x02000000;
+pub const SIMULATED_FONTTYPE: ::WORD = 0x8000;
+pub const PRINTER_FONTTYPE: ::WORD = 0x4000;
+pub const SCREEN_FONTTYPE: ::WORD = 0x2000;
+pub const BOLD_FONTTYPE: ::WORD = 0x0100;
+pub const ITALIC_FONTTYPE: ::WORD = 0x0200;
+pub const REGULAR_FONTTYPE: ::WORD = 0x0400;
+pub const PS_OPENTYPE_FONTTYPE: ::DWORD = 0x10000;
+pub const TT_OPENTYPE_FONTTYPE: ::DWORD = 0x20000;
+pub const TYPE1_FONTTYPE: ::DWORD = 0x40000;
+pub const SYMBOL_FONTTYPE: ::DWORD = 0x80000;
+pub const WM_CHOOSEFONT_GETLOGFONT: ::UINT = ::WM_USER + 1;
+pub const WM_CHOOSEFONT_SETLOGFONT: ::UINT = ::WM_USER + 101;
+pub const WM_CHOOSEFONT_SETFLAGS: ::UINT = ::WM_USER + 102;
+pub const CD_LBSELNOITEMS: ::WORD = -1i16 as ::WORD;
+pub const CD_LBSELCHANGE: ::WORD = 0;
+pub const CD_LBSELSUB: ::WORD = 1;
+pub const CD_LBSELADD: ::WORD = 2;
+pub type LPPRINTHOOKPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+pub type LPSETUPHOOKPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+STRUCT!{nodebug struct PRINTDLGA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDevMode: ::HGLOBAL,
+ hDevNames: ::HGLOBAL,
+ hDC: ::HDC,
+ Flags: ::DWORD,
+ nFromPage: ::WORD,
+ nToPage: ::WORD,
+ nMinPage: ::WORD,
+ nMaxPage: ::WORD,
+ nCopies: ::WORD,
+ hInstance: ::HINSTANCE,
+ lCustData: ::LPARAM,
+ lpfnPrintHook: LPPRINTHOOKPROC,
+ lpfnSetupHook: LPSETUPHOOKPROC,
+ lpPrintTemplateName: ::LPCSTR,
+ lpSetupTemplateName: ::LPCSTR,
+ hPrintTemplate: ::HGLOBAL,
+ hSetupTemplate: ::HGLOBAL,
+}}
+pub type LPPRINTDLGA = *mut PRINTDLGA;
+STRUCT!{nodebug struct PRINTDLGW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDevMode: ::HGLOBAL,
+ hDevNames: ::HGLOBAL,
+ hDC: ::HDC,
+ Flags: ::DWORD,
+ nFromPage: ::WORD,
+ nToPage: ::WORD,
+ nMinPage: ::WORD,
+ nMaxPage: ::WORD,
+ nCopies: ::WORD,
+ hInstance: ::HINSTANCE,
+ lCustData: ::LPARAM,
+ lpfnPrintHook: LPPRINTHOOKPROC,
+ lpfnSetupHook: LPSETUPHOOKPROC,
+ lpPrintTemplateName: ::LPCWSTR,
+ lpSetupTemplateName: ::LPCWSTR,
+ hPrintTemplate: ::HGLOBAL,
+ hSetupTemplate: ::HGLOBAL,
+}}
+pub type LPPRINTDLGW = *mut PRINTDLGW;
+RIDL!(
+interface IPrintDialogCallback(IPrintDialogCallbackVtbl) : IUnknown(IUnknownVtbl) {
+ fn InitDone(&mut self) -> ::HRESULT,
+ fn SelectionChange(&mut self) -> ::HRESULT,
+ fn HandleMessage(
+ &mut self, hDlg: ::HWND, uMsg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM,
+ pResult: *mut ::LRESULT
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IPrintDialogServices(IPrintDialogServicesVtbl) : IUnknown(IUnknownVtbl) {
+ fn GetCurrentDevMode(&mut self, pDevMode: ::LPDEVMODEW, pcbSize: *mut ::UINT) -> ::HRESULT,
+ fn GetCurrentPrinterName(&mut self, pPrinterName: ::LPWSTR, pcchSize: *mut ::UINT) -> ::HRESULT,
+ fn GetCurrentPortName(&mut self, pPortName: ::LPWSTR, pcchSize: *mut ::UINT) -> ::HRESULT
+}
+);
+STRUCT!{struct PRINTPAGERANGE {
+ nFromPage: ::DWORD,
+ nToPage: ::DWORD,
+}}
+pub type LPPRINTPAGERANGE = *mut PRINTPAGERANGE;
+pub type PCPRINTPAGERANGE = *const PRINTPAGERANGE;
+STRUCT!{struct PRINTDLGEXA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDevMode: ::HGLOBAL,
+ hDevNames: ::HGLOBAL,
+ hDC: ::HDC,
+ Flags: ::DWORD,
+ Flags2: ::DWORD,
+ ExclusionFlags: ::DWORD,
+ nPageRanges: ::DWORD,
+ nMaxPageRanges: ::DWORD,
+ lpPageRanges: LPPRINTPAGERANGE,
+ nMinPage: ::DWORD,
+ nMaxPage: ::DWORD,
+ nCopies: ::DWORD,
+ hInstance: ::HINSTANCE,
+ lpPrintTemplateName: ::LPCSTR,
+ lpCallback: ::LPUNKNOWN,
+ nPropertyPages: ::DWORD,
+ lphPropertyPages: *mut ::HPROPSHEETPAGE,
+ nStartPage: ::DWORD,
+ dwResultAction: ::DWORD,
+}}
+pub type LPPRINTDLGEXA = *mut PRINTDLGEXA;
+STRUCT!{struct PRINTDLGEXW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDevMode: ::HGLOBAL,
+ hDevNames: ::HGLOBAL,
+ hDC: ::HDC,
+ Flags: ::DWORD,
+ Flags2: ::DWORD,
+ ExclusionFlags: ::DWORD,
+ nPageRanges: ::DWORD,
+ nMaxPageRanges: ::DWORD,
+ lpPageRanges: LPPRINTPAGERANGE,
+ nMinPage: ::DWORD,
+ nMaxPage: ::DWORD,
+ nCopies: ::DWORD,
+ hInstance: ::HINSTANCE,
+ lpPrintTemplateName: ::LPCWSTR,
+ lpCallback: ::LPUNKNOWN,
+ nPropertyPages: ::DWORD,
+ lphPropertyPages: *mut ::HPROPSHEETPAGE,
+ nStartPage: ::DWORD,
+ dwResultAction: ::DWORD,
+}}
+pub type LPPRINTDLGEXW = *mut PRINTDLGEXW;
+pub const PD_ALLPAGES: ::DWORD = 0x00000000;
+pub const PD_SELECTION: ::DWORD = 0x00000001;
+pub const PD_PAGENUMS: ::DWORD = 0x00000002;
+pub const PD_NOSELECTION: ::DWORD = 0x00000004;
+pub const PD_NOPAGENUMS: ::DWORD = 0x00000008;
+pub const PD_COLLATE: ::DWORD = 0x00000010;
+pub const PD_PRINTTOFILE: ::DWORD = 0x00000020;
+pub const PD_PRINTSETUP: ::DWORD = 0x00000040;
+pub const PD_NOWARNING: ::DWORD = 0x00000080;
+pub const PD_RETURNDC: ::DWORD = 0x00000100;
+pub const PD_RETURNIC: ::DWORD = 0x00000200;
+pub const PD_RETURNDEFAULT: ::DWORD = 0x00000400;
+pub const PD_SHOWHELP: ::DWORD = 0x00000800;
+pub const PD_ENABLEPRINTHOOK: ::DWORD = 0x00001000;
+pub const PD_ENABLESETUPHOOK: ::DWORD = 0x00002000;
+pub const PD_ENABLEPRINTTEMPLATE: ::DWORD = 0x00004000;
+pub const PD_ENABLESETUPTEMPLATE: ::DWORD = 0x00008000;
+pub const PD_ENABLEPRINTTEMPLATEHANDLE: ::DWORD = 0x00010000;
+pub const PD_ENABLESETUPTEMPLATEHANDLE: ::DWORD = 0x00020000;
+pub const PD_USEDEVMODECOPIES: ::DWORD = 0x00040000;
+pub const PD_USEDEVMODECOPIESANDCOLLATE: ::DWORD = 0x00040000;
+pub const PD_DISABLEPRINTTOFILE: ::DWORD = 0x00080000;
+pub const PD_HIDEPRINTTOFILE: ::DWORD = 0x00100000;
+pub const PD_NONETWORKBUTTON: ::DWORD = 0x00200000;
+pub const PD_CURRENTPAGE: ::DWORD = 0x00400000;
+pub const PD_NOCURRENTPAGE: ::DWORD = 0x00800000;
+pub const PD_EXCLUSIONFLAGS: ::DWORD = 0x01000000;
+pub const PD_USELARGETEMPLATE: ::DWORD = 0x10000000;
+pub const PD_EXCL_COPIESANDCOLLATE: ::DWORD = ::DM_COPIES | ::DM_COLLATE;
+pub const START_PAGE_GENERAL: ::DWORD = 0xffffffff;
+pub const PD_RESULT_CANCEL: ::DWORD = 0;
+pub const PD_RESULT_PRINT: ::DWORD = 1;
+pub const PD_RESULT_APPLY: ::DWORD = 2;
+STRUCT!{struct DEVNAMES {
+ wDriverOffset: ::WORD,
+ wDeviceOffset: ::WORD,
+ wOutputOffset: ::WORD,
+ wDefault: ::WORD,
+}}
+pub type LPDEVNAMES = *mut DEVNAMES;
+pub type PCDEVNAMES = *const DEVNAMES;
+pub const DN_DEFAULTPRN: ::WORD = 0x0001;
+pub const WM_PSD_PAGESETUPDLG: ::UINT = ::WM_USER;
+pub const WM_PSD_FULLPAGERECT: ::UINT = ::WM_USER + 1;
+pub const WM_PSD_MINMARGINRECT: ::UINT = ::WM_USER + 2;
+pub const WM_PSD_MARGINRECT: ::UINT = ::WM_USER + 3;
+pub const WM_PSD_GREEKTEXTRECT: ::UINT = ::WM_USER + 4;
+pub const WM_PSD_ENVSTAMPRECT: ::UINT = ::WM_USER + 5;
+pub const WM_PSD_YAFULLPAGERECT: ::UINT = ::WM_USER + 6;
+pub type LPPAGEPAINTHOOK = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+pub type LPPAGESETUPHOOK = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::UINT_PTR>;
+STRUCT!{nodebug struct PAGESETUPDLGA {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDevMode: ::HGLOBAL,
+ hDevNames: ::HGLOBAL,
+ Flags: ::DWORD,
+ ptPaperSize: ::POINT,
+ rtMinMargin: ::RECT,
+ rtMargin: ::RECT,
+ hInstance: ::HINSTANCE,
+ lCustData: ::LPARAM,
+ lpfnPageSetupHook: LPPAGESETUPHOOK,
+ lpfnPagePaintHook: LPPAGEPAINTHOOK,
+ lpPageSetupTemplateName: ::LPCSTR,
+ hPageSetupTemplate: ::HGLOBAL,
+}}
+pub type LPPAGESETUPDLGA = *mut PAGESETUPDLGA;
+STRUCT!{nodebug struct PAGESETUPDLGW {
+ lStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hDevMode: ::HGLOBAL,
+ hDevNames: ::HGLOBAL,
+ Flags: ::DWORD,
+ ptPaperSize: ::POINT,
+ rtMinMargin: ::RECT,
+ rtMargin: ::RECT,
+ hInstance: ::HINSTANCE,
+ lCustData: ::LPARAM,
+ lpfnPageSetupHook: LPPAGESETUPHOOK,
+ lpfnPagePaintHook: LPPAGEPAINTHOOK,
+ lpPageSetupTemplateName: ::LPCWSTR,
+ hPageSetupTemplate: ::HGLOBAL,
+}}
+pub type LPPAGESETUPDLGW = *mut PAGESETUPDLGW;
+pub const PSD_DEFAULTMINMARGINS: ::DWORD = 0x00000000;
+pub const PSD_INWININIINTLMEASURE: ::DWORD = 0x00000000;
+pub const PSD_MINMARGINS: ::DWORD = 0x00000001;
+pub const PSD_MARGINS: ::DWORD = 0x00000002;
+pub const PSD_INTHOUSANDTHSOFINCHES: ::DWORD = 0x00000004;
+pub const PSD_INHUNDREDTHSOFMILLIMETERS: ::DWORD = 0x00000008;
+pub const PSD_DISABLEMARGINS: ::DWORD = 0x00000010;
+pub const PSD_DISABLEPRINTER: ::DWORD = 0x00000020;
+pub const PSD_NOWARNING: ::DWORD = 0x00000080;
+pub const PSD_DISABLEORIENTATION: ::DWORD = 0x00000100;
+pub const PSD_RETURNDEFAULT: ::DWORD = 0x00000400;
+pub const PSD_DISABLEPAPER: ::DWORD = 0x00000200;
+pub const PSD_SHOWHELP: ::DWORD = 0x00000800;
+pub const PSD_ENABLEPAGESETUPHOOK: ::DWORD = 0x00002000;
+pub const PSD_ENABLEPAGESETUPTEMPLATE: ::DWORD = 0x00008000;
+pub const PSD_ENABLEPAGESETUPTEMPLATEHANDLE: ::DWORD = 0x00020000;
+pub const PSD_ENABLEPAGEPAINTHOOK: ::DWORD = 0x00040000;
+pub const PSD_DISABLEPAGEPAINTING: ::DWORD = 0x00080000;
+pub const PSD_NONETWORKBUTTON: ::DWORD = 0x00200000;
diff --git a/third_party/rust/winapi-0.2.8/src/corsym.rs b/third_party/rust/winapi-0.2.8/src/corsym.rs
new file mode 100644
index 0000000000..d036f07d64
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/corsym.rs
@@ -0,0 +1,79 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Common Language Runtime Debugging Symbol Reader/Writer/Binder Interfaces
+DEFINE_GUID!(CorSym_LanguageType_C, 0x63a08714, 0xfc37, 0x11d2,
+ 0x90, 0x4c, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+DEFINE_GUID!(CorSym_LanguageType_CPlusPlus, 0x3a12d0b7, 0xc26c, 0x11d0,
+ 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+DEFINE_GUID!(CorSym_LanguageType_CSharp, 0x3f5162f8, 0x07c6, 0x11d3,
+ 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+DEFINE_GUID!(CorSym_LanguageType_Basic, 0x3a12d0b8, 0xc26c, 0x11d0,
+ 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+DEFINE_GUID!(CorSym_LanguageType_Java, 0x3a12d0b4, 0xc26c, 0x11d0,
+ 0xb4, 0x42, 0x0, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+DEFINE_GUID!(CorSym_LanguageType_Cobol, 0xaf046cd1, 0xd0e1, 0x11d2,
+ 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+DEFINE_GUID!(CorSym_LanguageType_Pascal, 0xaf046cd2, 0xd0e1, 0x11d2,
+ 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+DEFINE_GUID!(CorSym_LanguageType_ILAssembly, 0xaf046cd3, 0xd0e1, 0x11d2,
+ 0x97, 0x7c, 0x0, 0xa0, 0xc9, 0xb4, 0xd5, 0xc);
+DEFINE_GUID!(CorSym_LanguageType_JScript, 0x3a12d0b6, 0xc26c, 0x11d0,
+ 0xb4, 0x42, 0x00, 0xa0, 0x24, 0x4a, 0x1d, 0xd2);
+DEFINE_GUID!(CorSym_LanguageType_SMC, 0xd9b9f7b, 0x6611, 0x11d3,
+ 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
+DEFINE_GUID!(CorSym_LanguageType_MCPlusPlus, 0x4b35fde8, 0x07c6, 0x11d3,
+ 0x90, 0x53, 0x0, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+DEFINE_GUID!(CorSym_LanguageVendor_Microsoft, 0x994b45c4, 0xe6e9, 0x11d2,
+ 0x90, 0x3f, 0x00, 0xc0, 0x4f, 0xa3, 0x02, 0xa1);
+DEFINE_GUID!(CorSym_DocumentType_Text, 0x5a869d0b, 0x6611, 0x11d3,
+ 0xbd, 0x2a, 0x0, 0x0, 0xf8, 0x8, 0x49, 0xbd);
+DEFINE_GUID!(CorSym_DocumentType_MC, 0xeb40cb65, 0x3c1f, 0x4352,
+ 0x9d, 0x7b, 0xba, 0xf, 0xc4, 0x7a, 0x9d, 0x77);
+DEFINE_GUID!(CorSym_SourceHash_MD5, 0x406ea660, 0x64cf, 0x4c82,
+ 0xb6, 0xf0, 0x42, 0xd4, 0x81, 0x72, 0xa7, 0x99);
+DEFINE_GUID!(CorSym_SourceHash_SHA1, 0xff1816ec, 0xaa5e, 0x4d10,
+ 0x87, 0xf7, 0x6f, 0x49, 0x63, 0x83, 0x34, 0x60);
+ENUM!{enum CorSymAddrKind {
+ ADDR_IL_OFFSET = 1,
+ ADDR_NATIVE_RVA = 2,
+ ADDR_NATIVE_REGISTER = 3,
+ ADDR_NATIVE_REGREL = 4,
+ ADDR_NATIVE_OFFSET = 5,
+ ADDR_NATIVE_REGREG = 6,
+ ADDR_NATIVE_REGSTK = 7,
+ ADDR_NATIVE_STKREG = 8,
+ ADDR_BITFIELD = 9,
+ ADDR_NATIVE_ISECTOFFSET = 10,
+}}
+FLAGS!{enum CorSymVarFlag {
+ VAR_IS_COMP_GEN = 1,
+}}
+RIDL!(
+interface ISymUnmanagedBinder(ISymUnmanagedBinderVtbl): IUnknown(IUnknownVtbl) {
+ fn GetReaderForFile(
+ &mut self, importer: *mut ::IUnknown, fileName: *const ::WCHAR, searchPath: *const ::WCHAR,
+ pRetVal: *mut *mut ISymUnmanagedReader
+ ) -> ::HRESULT,
+ fn GetReaderFromStream(
+ &mut self, importer: *mut ::IUnknown, pstream: *mut ::IStream,
+ pRetVal: *mut *mut ISymUnmanagedReader
+ ) -> ::HRESULT
+}
+);
+FLAGS!{enum CorSymSearchPolicyAttributes {
+ AllowRegistryAccess = 0x1,
+ AllowSymbolServerAccess = 0x2,
+ AllowOriginalPathAccess = 0x4,
+ AllowReferencePathAccess = 0x8,
+}}
+RIDL!(
+interface ISymUnmanagedBinder2(ISymUnmanagedBinder2Vtbl):
+ ISymUnmanagedBinder(ISymUnmanagedBinderVtbl) {
+ fn GetReaderForFile2(
+ &mut self, importer: *mut ::IUnknown, fileName: *const ::WCHAR, searchPath: *const ::WCHAR,
+ searchPolicy: ::ULONG32, pRetVal: *mut *mut ISymUnmanagedReader
+ ) -> ::HRESULT
+}
+);
+#[derive(Clone, Copy)]
+pub struct ISymUnmanagedReader;
diff --git a/third_party/rust/winapi-0.2.8/src/d2d1.rs b/third_party/rust/winapi-0.2.8/src/d2d1.rs
new file mode 100644
index 0000000000..1b1b039803
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d2d1.rs
@@ -0,0 +1,734 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of d2d1.h
+// Types confirmed affected by the ABI issue:
+// D2D1_SIZE_F, D2D1_SIZE_U, D2D1_COLOR_F, D2D1_PIXEL_FORMAT,
+// D2D1_POINT_2F
+pub const D2D1_DEFAULT_FLATTENING_TOLERANCE: ::FLOAT = 0.25;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR: ::DWORD = 0;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR: ::DWORD = 1;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC: ::DWORD = 2;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR: ::DWORD = 3;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC: ::DWORD = 4;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC: ::DWORD = 5;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_FANT: ::DWORD = 6;
+pub const D2D1_INTERPOLATION_MODE_DEFINITION_MIPMAP_LINEAR: ::DWORD = 7;
+ENUM!{enum D2D1_GAMMA {
+ D2D1_GAMMA_2_2 = 0,
+ D2D1_GAMMA_1_0 = 1,
+}}
+ENUM!{enum D2D1_OPACITY_MASK_CONTENT {
+ D2D1_OPACITY_MASK_CONTENT_GRAPHICS = 0,
+ D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL = 1,
+ D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE = 2,
+}}
+ENUM!{enum D2D1_EXTEND_MODE {
+ D2D1_EXTEND_MODE_CLAMP = 0,
+ D2D1_EXTEND_MODE_WRAP = 1,
+ D2D1_EXTEND_MODE_MIRROR = 2,
+}}
+ENUM!{enum D2D1_ANTIALIAS_MODE {
+ D2D1_ANTIALIAS_MODE_PER_PRIMITIVE = 0,
+ D2D1_ANTIALIAS_MODE_ALIASED = 1,
+}}
+ENUM!{enum D2D1_TEXT_ANTIALIAS_MODE {
+ D2D1_TEXT_ANTIALIAS_MODE_DEFAULT = 0,
+ D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE = 1,
+ D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE = 2,
+ D2D1_TEXT_ANTIALIAS_MODE_ALIASED = 3,
+}}
+ENUM!{enum D2D1_BITMAP_INTERPOLATION_MODE {
+ D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR =
+ D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
+ D2D1_BITMAP_INTERPOLATION_MODE_LINEAR =
+ D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
+}}
+FLAGS!{enum D2D1_DRAW_TEXT_OPTIONS {
+ D2D1_DRAW_TEXT_OPTIONS_NO_SNAP = 0x00000001,
+ D2D1_DRAW_TEXT_OPTIONS_CLIP = 0x00000002,
+ D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT = 0x00000004,
+ D2D1_DRAW_TEXT_OPTIONS_NONE = 0x00000000,
+}}
+pub type D2D1_POINT_2U = ::D2D_POINT_2U;
+pub type D2D1_POINT_2F = ::D2D_POINT_2F;
+pub type D2D1_RECT_F = ::D2D_RECT_F;
+pub type D2D1_RECT_U = ::D2D_RECT_U;
+pub type D2D1_SIZE_F = ::D2D_SIZE_F;
+pub type D2D1_SIZE_U = ::D2D_SIZE_U;
+pub type D2D1_COLOR_F = ::D2D_COLOR_F;
+pub type D2D1_MATRIX_3X2_F = ::D2D_MATRIX_3X2_F;
+pub type D2D1_TAG = ::UINT64;
+STRUCT!{struct D2D1_BITMAP_PROPERTIES {
+ pixelFormat: ::D2D1_PIXEL_FORMAT,
+ dpiX: ::FLOAT,
+ dpiY: ::FLOAT,
+}}
+STRUCT!{struct D2D1_GRADIENT_STOP {
+ position: ::FLOAT,
+ color: D2D1_COLOR_F,
+}}
+STRUCT!{struct D2D1_BRUSH_PROPERTIES {
+ opacity: ::FLOAT,
+ transform: D2D1_MATRIX_3X2_F,
+}}
+STRUCT!{struct D2D1_BITMAP_BRUSH_PROPERTIES {
+ extendModeX: D2D1_EXTEND_MODE,
+ extendModeY: D2D1_EXTEND_MODE,
+ interpolationMode: D2D1_BITMAP_INTERPOLATION_MODE,
+}}
+STRUCT!{struct D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES {
+ startPoint: ::D2D1_POINT_2F,
+ endPoint: ::D2D1_POINT_2F,
+}}
+STRUCT!{struct D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES {
+ center: ::D2D1_POINT_2F,
+ gradientOriginOffset: ::D2D1_POINT_2F,
+ radiusX: ::FLOAT,
+ radiusY: ::FLOAT,
+}}
+ENUM!{enum D2D1_ARC_SIZE {
+ D2D1_ARC_SIZE_SMALL = 0,
+ D2D1_ARC_SIZE_LARGE = 1,
+}}
+ENUM!{enum D2D1_CAP_STYLE {
+ D2D1_CAP_STYLE_FLAT = 0,
+ D2D1_CAP_STYLE_SQUARE = 1,
+ D2D1_CAP_STYLE_ROUND = 2,
+ D2D1_CAP_STYLE_TRIANGLE = 3,
+}}
+ENUM!{enum D2D1_DASH_STYLE {
+ D2D1_DASH_STYLE_SOLID = 0,
+ D2D1_DASH_STYLE_DASH = 1,
+ D2D1_DASH_STYLE_DOT = 2,
+ D2D1_DASH_STYLE_DASH_DOT = 3,
+ D2D1_DASH_STYLE_DASH_DOT_DOT = 4,
+ D2D1_DASH_STYLE_CUSTOM = 5,
+}}
+ENUM!{enum D2D1_LINE_JOIN {
+ D2D1_LINE_JOIN_MITER = 0,
+ D2D1_LINE_JOIN_BEVEL = 1,
+ D2D1_LINE_JOIN_ROUND = 2,
+ D2D1_LINE_JOIN_MITER_OR_BEVEL = 3,
+}}
+ENUM!{enum D2D1_COMBINE_MODE {
+ D2D1_COMBINE_MODE_UNION = 0,
+ D2D1_COMBINE_MODE_INTERSECT = 1,
+ D2D1_COMBINE_MODE_XOR = 2,
+ D2D1_COMBINE_MODE_EXCLUDE = 3,
+}}
+ENUM!{enum D2D1_GEOMETRY_RELATION {
+ D2D1_GEOMETRY_RELATION_UNKNOWN = 0,
+ D2D1_GEOMETRY_RELATION_DISJOINT = 1,
+ D2D1_GEOMETRY_RELATION_IS_CONTAINED = 2,
+ D2D1_GEOMETRY_RELATION_CONTAINS = 3,
+ D2D1_GEOMETRY_RELATION_OVERLAP = 4,
+}}
+ENUM!{enum D2D1_GEOMETRY_SIMPLIFICATION_OPTION {
+ D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES = 0,
+ D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES = 1,
+}}
+ENUM!{enum D2D1_FIGURE_BEGIN {
+ D2D1_FIGURE_BEGIN_FILLED = 0,
+ D2D1_FIGURE_BEGIN_HOLLOW = 1,
+}}
+ENUM!{enum D2D1_FIGURE_END {
+ D2D1_FIGURE_END_OPEN = 0,
+ D2D1_FIGURE_END_CLOSED = 1,
+}}
+STRUCT!{struct D2D1_BEZIER_SEGMENT {
+ point1: ::D2D1_POINT_2F,
+ point2: ::D2D1_POINT_2F,
+ point3: ::D2D1_POINT_2F,
+}}
+STRUCT!{struct D2D1_TRIANGLE {
+ point1: ::D2D1_POINT_2F,
+ point2: ::D2D1_POINT_2F,
+ point3: ::D2D1_POINT_2F,
+}}
+FLAGS!{enum D2D1_PATH_SEGMENT {
+ D2D1_PATH_SEGMENT_NONE = 0x00000000,
+ D2D1_PATH_SEGMENT_FORCE_UNSTROKED = 0x00000001,
+ D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN = 0x00000002,
+}}
+ENUM!{enum D2D1_SWEEP_DIRECTION {
+ D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE = 0,
+ D2D1_SWEEP_DIRECTION_CLOCKWISE = 1,
+}}
+ENUM!{enum D2D1_FILL_MODE {
+ D2D1_FILL_MODE_ALTERNATE = 0,
+ D2D1_FILL_MODE_WINDING = 1,
+}}
+STRUCT!{struct D2D1_ARC_SEGMENT {
+ point: ::D2D1_POINT_2F,
+ size: D2D1_SIZE_F,
+ rotationAngle: ::FLOAT,
+ sweepDirection: D2D1_SWEEP_DIRECTION,
+ arcSize: D2D1_ARC_SIZE,
+}}
+STRUCT!{struct D2D1_QUADRATIC_BEZIER_SEGMENT {
+ point1: ::D2D1_POINT_2F,
+ point2: ::D2D1_POINT_2F,
+}}
+STRUCT!{struct D2D1_ELLIPSE {
+ point: ::D2D1_POINT_2F,
+ radiusX: ::FLOAT,
+ radiusY: ::FLOAT,
+}}
+STRUCT!{struct D2D1_ROUNDED_RECT {
+ rect: ::D2D1_RECT_F,
+ radiusX: ::FLOAT,
+ radiusY: ::FLOAT,
+}}
+STRUCT!{struct D2D1_STROKE_STYLE_PROPERTIES {
+ startCap: D2D1_CAP_STYLE,
+ endCap: D2D1_CAP_STYLE,
+ dashCap: D2D1_CAP_STYLE,
+ lineJoin: D2D1_LINE_JOIN,
+ miterLimit: ::FLOAT,
+ dashStyle: D2D1_DASH_STYLE,
+ dashOffset: ::FLOAT,
+}}
+FLAGS!{enum D2D1_LAYER_OPTIONS {
+ D2D1_LAYER_OPTIONS_NONE = 0x00000000,
+ D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE = 0x00000001,
+}}
+STRUCT!{struct D2D1_LAYER_PARAMETERS {
+ contentBounds: ::D2D1_RECT_F,
+ geometricMask: *mut ID2D1Geometry,
+ maskAntialiasMode: D2D1_ANTIALIAS_MODE,
+ maskTransform: D2D1_MATRIX_3X2_F,
+ opacity: ::FLOAT,
+ opacityBrush: *mut ID2D1Brush,
+ layerOptions: D2D1_LAYER_OPTIONS,
+}}
+ENUM!{enum D2D1_WINDOW_STATE {
+ D2D1_WINDOW_STATE_NONE = 0x0000000,
+ D2D1_WINDOW_STATE_OCCLUDED = 0x0000001,
+}}
+ENUM!{enum D2D1_RENDER_TARGET_TYPE {
+ D2D1_RENDER_TARGET_TYPE_DEFAULT = 0,
+ D2D1_RENDER_TARGET_TYPE_SOFTWARE = 1,
+ D2D1_RENDER_TARGET_TYPE_HARDWARE = 2,
+}}
+ENUM!{enum D2D1_FEATURE_LEVEL {
+ D2D1_FEATURE_LEVEL_DEFAULT = 0,
+ D2D1_FEATURE_LEVEL_9 = ::D3D_FEATURE_LEVEL_9_1.0,
+ D2D1_FEATURE_LEVEL_10 = ::D3D_FEATURE_LEVEL_10_0.0,
+}}
+FLAGS!{enum D2D1_RENDER_TARGET_USAGE {
+ D2D1_RENDER_TARGET_USAGE_NONE = 0x00000000,
+ D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING = 0x00000001,
+ D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE = 0x00000002,
+}}
+FLAGS!{enum D2D1_PRESENT_OPTIONS {
+ D2D1_PRESENT_OPTIONS_NONE = 0x00000000,
+ D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS = 0x00000001,
+ D2D1_PRESENT_OPTIONS_IMMEDIATELY = 0x00000002,
+}}
+STRUCT!{struct D2D1_RENDER_TARGET_PROPERTIES {
+ _type: D2D1_RENDER_TARGET_TYPE,
+ pixelFormat: ::D2D1_PIXEL_FORMAT,
+ dpiX: ::FLOAT,
+ dpiY: ::FLOAT,
+ usage: D2D1_RENDER_TARGET_USAGE,
+ minLevel: D2D1_FEATURE_LEVEL,
+}}
+STRUCT!{struct D2D1_HWND_RENDER_TARGET_PROPERTIES {
+ hwnd: ::HWND,
+ pixelSize: D2D1_SIZE_U,
+ presentOptions: D2D1_PRESENT_OPTIONS,
+}}
+FLAGS!{enum D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS {
+ D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE = 0x00000000,
+ D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE = 0x00000001,
+}}
+STRUCT!{struct D2D1_DRAWING_STATE_DESCRIPTION {
+ antialiasMode: D2D1_ANTIALIAS_MODE,
+ textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE,
+ tag1: D2D1_TAG,
+ tag2: D2D1_TAG,
+ transform: D2D1_MATRIX_3X2_F,
+}}
+ENUM!{enum D2D1_DC_INITIALIZE_MODE {
+ D2D1_DC_INITIALIZE_MODE_COPY = 0,
+ D2D1_DC_INITIALIZE_MODE_CLEAR = 1,
+}}
+ENUM!{enum D2D1_DEBUG_LEVEL {
+ D2D1_DEBUG_LEVEL_NONE = 0,
+ D2D1_DEBUG_LEVEL_ERROR = 1,
+ D2D1_DEBUG_LEVEL_WARNING = 2,
+ D2D1_DEBUG_LEVEL_INFORMATION = 3,
+}}
+ENUM!{enum D2D1_FACTORY_TYPE {
+ D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
+ D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
+}}
+STRUCT!{struct D2D1_FACTORY_OPTIONS {
+ debugLevel: D2D1_DEBUG_LEVEL,
+}}
+RIDL!(
+interface ID2D1Resource(ID2D1ResourceVtbl): IUnknown(IUnknownVtbl) {
+ fn GetFactory(&mut self, factory: *mut *mut ID2D1Factory) -> ()
+});
+RIDL!(
+interface ID2D1Image(ID2D1ImageVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+});
+RIDL!(
+interface ID2D1Bitmap(ID2D1BitmapVtbl): ID2D1Image(ID2D1ImageVtbl) {
+ fn GetSize(&mut self, ret: *mut D2D1_SIZE_F) -> *mut D2D1_SIZE_F, // FIXME: ABI issue
+ fn GetPixelSize(&mut self, ret: *mut D2D1_SIZE_U) -> *mut D2D1_SIZE_U, // FIXME: ABI issue
+ fn GetPixelFormat(
+ &mut self, ret: *mut ::D2D1_PIXEL_FORMAT
+ ) -> *mut ::D2D1_PIXEL_FORMAT, // FIXME: ABI issue
+ fn GetDpi(&mut self, dpiX: *mut ::FLOAT, dpiY: *mut ::FLOAT) -> (),
+ fn CopyFromBitmap(
+ &mut self, destPoint: *const ::D2D1_POINT_2U, bitmap: *mut ID2D1Bitmap,
+ srcRect: *const ::D2D1_RECT_U
+ ) -> ::HRESULT,
+ fn CopyFromRenderTarget(
+ &mut self, destPoint: *const ::D2D1_POINT_2U, renderTarget: *mut ID2D1RenderTarget,
+ srcRect: *const ::D2D1_RECT_U
+ ) -> ::HRESULT,
+ fn CopyFromMemory(
+ &mut self, dstRect: *const ::D2D1_RECT_U, srcData: *const ::c_void, pitch: ::UINT32
+ ) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1GradientStopCollection(ID2D1GradientStopCollectionVtbl)
+ : ID2D1Resource(ID2D1ResourceVtbl) {
+ fn GetGradientStopCount(&mut self) -> ::UINT32,
+ fn GetGradientStops(
+ &mut self, gradientStops: *mut D2D1_GRADIENT_STOP, gradientStopsCount: ::UINT32
+ ) -> (),
+ fn GetColorInterpolationGamma(&mut self) -> D2D1_GAMMA,
+ fn GetExtendMode(&mut self) -> D2D1_EXTEND_MODE
+});
+RIDL!(
+interface ID2D1Brush(ID2D1BrushVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn SetOpacity(&mut self, opacity: ::FLOAT) -> (),
+ fn SetTransform(&mut self, transform: *const D2D1_MATRIX_3X2_F) -> (),
+ fn GetOpacity(&mut self) -> ::FLOAT,
+ fn GetTransform(&mut self, transform: *mut D2D1_MATRIX_3X2_F) -> ()
+});
+RIDL!(
+interface ID2D1BitmapBrush(ID2D1BitmapBrushVtbl): ID2D1Brush(ID2D1BrushVtbl) {
+ fn SetExtendModeX(&mut self, extendModeX: D2D1_EXTEND_MODE) -> (),
+ fn SetExtendModeY(&mut self, extendModeY: D2D1_EXTEND_MODE) -> (),
+ fn SetInterpolationMode(&mut self, interpolationMode: D2D1_BITMAP_INTERPOLATION_MODE) -> (),
+ fn SetBitmap(&mut self, bitmap: *mut ID2D1Bitmap) -> (),
+ fn GetExtendModeX(&mut self) -> D2D1_EXTEND_MODE,
+ fn GetExtendModeY(&mut self) -> D2D1_EXTEND_MODE,
+ fn GetInterpolationMode(&mut self) -> D2D1_BITMAP_INTERPOLATION_MODE,
+ fn GetBitmap(&mut self, bitmap: *mut *mut ID2D1Bitmap) -> ()
+});
+RIDL!(
+interface ID2D1SolidColorBrush(ID2D1SolidColorBrushVtbl): ID2D1Brush(ID2D1BrushVtbl) {
+ fn SetColor(&mut self, color: *const D2D1_COLOR_F) -> (),
+ fn GetColor(&mut self, color: *mut D2D1_COLOR_F) -> *mut D2D1_COLOR_F
+});
+RIDL!(
+interface ID2D1LinearGradientBrush(ID2D1LinearGradientBrushVtbl): ID2D1Brush(ID2D1BrushVtbl) {
+ fn SetStartPoint(&mut self, startPoint: ::D2D1_POINT_2F) -> (),
+ fn SetEndPoint(&mut self, endPoint: ::D2D1_POINT_2F) -> (),
+ fn GetStartPoint(&mut self, ret: *mut D2D1_POINT_2F) -> *mut D2D1_POINT_2F, // FIXME ABI issue
+ fn GetEndPoint(&mut self, ret: *mut D2D1_POINT_2F) -> *mut D2D1_POINT_2F, // FIXME ABI issue
+ fn GetGradientStopCollection(
+ &mut self, gradientStopCollection: *mut *mut ID2D1GradientStopCollection
+ ) -> ()
+});
+RIDL!(
+interface ID2D1RadialGradientBrush(ID2D1RadialGradientBrushVtbl): ID2D1Brush(ID2D1BrushVtbl) {
+ fn SetCenter(&mut self, center: ::D2D1_POINT_2F) -> (),
+ fn SetGradientOriginOffset(&mut self, gradientOriginOffset: ::D2D1_POINT_2F) -> (),
+ fn SetRadiusX(&mut self, radiusX: ::FLOAT) -> (),
+ fn SetRadiusY(&mut self, radiusY: ::FLOAT) -> (),
+ fn GetCenter(&mut self, ret: *mut D2D1_POINT_2F) -> *mut D2D1_POINT_2F, // FIXME ABI issue
+ fn GetGradientOriginOffset(
+ &mut self, ret: *mut D2D1_POINT_2F
+ ) -> *mut D2D1_POINT_2F, // FIXME ABI issue
+ fn GetRadiusX(&mut self) -> ::FLOAT,
+ fn GetRadiusY(&mut self) -> ::FLOAT,
+ fn GetGradientStopCollection(
+ &mut self, gradientStopCollection: *mut *mut ID2D1GradientStopCollection
+ ) -> ()
+});
+RIDL!(
+interface ID2D1StrokeStyle(ID2D1StrokeStyleVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn GetStartCap(&mut self) -> D2D1_CAP_STYLE,
+ fn GetEndCap(&mut self) -> D2D1_CAP_STYLE,
+ fn GetDashCap(&mut self) -> D2D1_CAP_STYLE,
+ fn GetMiterLimit(&mut self) -> ::FLOAT,
+ fn GetLineJoin(&mut self) -> D2D1_LINE_JOIN,
+ fn GetDashOffset(&mut self) -> ::FLOAT,
+ fn GetDashStyle(&mut self) -> D2D1_DASH_STYLE,
+ fn GetDashesCount(&mut self) -> ::UINT32,
+ fn GetDashes(&mut self, dashes: *mut ::FLOAT, dashesCount: ::UINT32) -> ()
+});
+RIDL!(
+interface ID2D1Geometry(ID2D1GeometryVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn GetBounds(
+ &mut self, worldTransform: *const D2D1_MATRIX_3X2_F, bounds: *mut ::D2D1_RECT_F
+ ) -> ::HRESULT,
+ fn GetWidenedBounds(
+ &mut self, strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle,
+ worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ bounds: *mut ::D2D1_RECT_F
+ ) -> ::HRESULT,
+ fn StrokeContainsPoint(
+ &mut self, point: ::D2D1_POINT_2F, strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle,
+ worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ contains: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn FillContainsPoint(
+ &mut self, point: ::D2D1_POINT_2F, worldTransform: *const D2D1_MATRIX_3X2_F,
+ flatteningTolerance: ::FLOAT, contains: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn CompareWithGeometry(
+ &mut self, inputGeometry: *mut ID2D1Geometry,
+ inputGeometryTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ relation: *mut D2D1_GEOMETRY_RELATION
+ ) -> ::HRESULT,
+ fn Simplify(
+ &mut self, simplificationOption: D2D1_GEOMETRY_SIMPLIFICATION_OPTION,
+ worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ geometrySink: *mut ID2D1SimplifiedGeometrySink
+ ) -> ::HRESULT,
+ fn Tessellate(
+ &mut self, worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ tessellationSink: *mut ID2D1TessellationSink
+ ) -> ::HRESULT,
+ fn CombineWithGeometry(
+ &mut self, inputGeometry: *mut ID2D1Geometry, combineMode: D2D1_COMBINE_MODE,
+ inputGeometryTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ geometrySink: *mut ID2D1SimplifiedGeometrySink
+ ) -> ::HRESULT,
+ fn Outline(
+ &mut self, worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ geometrySink: *mut ID2D1SimplifiedGeometrySink
+ ) -> ::HRESULT,
+ fn ComputeArea(
+ &mut self, worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ area: *mut ::FLOAT
+ ) -> ::HRESULT,
+ fn ComputeLength(
+ &mut self, worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ length: *mut ::FLOAT
+ ) -> ::HRESULT,
+ fn ComputePointAtLength(
+ &mut self, length: ::FLOAT, worldTransform: *const D2D1_MATRIX_3X2_F,
+ flatteningTolerance: ::FLOAT, point: *mut ::D2D1_POINT_2F,
+ unitTangentVector: *mut ::D2D1_POINT_2F
+ ) -> ::HRESULT,
+ fn Widen(
+ &mut self, strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle,
+ worldTransform: *const D2D1_MATRIX_3X2_F, flatteningTolerance: ::FLOAT,
+ geometrySink: *mut ID2D1SimplifiedGeometrySink
+ ) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1RectangleGeometry(ID2D1RectangleGeometryVtbl): ID2D1Geometry(ID2D1GeometryVtbl) {
+ fn GetRect(&mut self, rect: *mut ::D2D1_RECT_F) -> ()
+});
+RIDL!(
+interface ID2D1RoundedRectangleGeometry(ID2D1RoundedRectangleGeometryVtbl)
+ : ID2D1Geometry(ID2D1GeometryVtbl) {
+ fn GetRoundedRect(&mut self, roundedRect: *mut D2D1_ROUNDED_RECT) -> ()
+});
+RIDL!(
+interface ID2D1EllipseGeometry(ID2D1EllipseGeometryVtbl): ID2D1Geometry(ID2D1GeometryVtbl) {
+ fn GetEllipse(&mut self, ellipse: *mut D2D1_ELLIPSE) -> ()
+});
+RIDL!(
+interface ID2D1GeometryGroup(ID2D1GeometryGroupVtbl): ID2D1Geometry(ID2D1GeometryVtbl) {
+ fn GetFillMode(&mut self) -> D2D1_FILL_MODE,
+ fn GetSourceGeometryCount(&mut self) -> ::UINT32,
+ fn GetSourceGeometries(
+ &mut self, geometries: *mut *mut ID2D1Geometry, geometriesCount: ::UINT32
+ ) -> ()
+});
+RIDL!(
+interface ID2D1TransformedGeometry(ID2D1TransformedGeometryVtbl)
+ : ID2D1Geometry(ID2D1GeometryVtbl) {
+ fn GetSourceGeometry(&mut self, sourceGeometry: *mut *mut ID2D1Geometry) -> (),
+ fn GetTransform(&mut self, transform: *mut D2D1_MATRIX_3X2_F) -> ()
+});
+RIDL!(
+interface ID2D1SimplifiedGeometrySink(ID2D1SimplifiedGeometrySinkVtbl): IUnknown(IUnknownVtbl) {
+ fn SetFillMode(&mut self, fillMode: D2D1_FILL_MODE) -> (),
+ fn SetSegmentFlags(&mut self, vertexFlags: D2D1_PATH_SEGMENT) -> (),
+ fn BeginFigure(&mut self, startPoint: ::D2D1_POINT_2F, figureBegin: D2D1_FIGURE_BEGIN) -> (),
+ fn AddLines(&mut self, points: *const ::D2D1_POINT_2F, pointsCount: ::UINT32) -> (),
+ fn AddBeziers(&mut self, beziers: *const D2D1_BEZIER_SEGMENT, beziersCount: ::UINT32) -> (),
+ fn EndFigure(&mut self, figureEnd: D2D1_FIGURE_END) -> (),
+ fn Close(&mut self) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1GeometrySink(ID2D1GeometrySinkVtbl)
+ : ID2D1SimplifiedGeometrySink(ID2D1SimplifiedGeometrySinkVtbl) {
+ fn AddLine(&mut self, point: ::D2D1_POINT_2F) -> (),
+ fn AddBezier(&mut self, bezier: *const D2D1_BEZIER_SEGMENT) -> (),
+ fn AddQuadraticBezier(&mut self, bezier: *const D2D1_QUADRATIC_BEZIER_SEGMENT) -> (),
+ fn AddQuadraticBeziers(
+ &mut self, beziers: *const D2D1_QUADRATIC_BEZIER_SEGMENT, beziersCount: ::UINT32
+ ) -> (),
+ fn AddArc(&mut self, arc: *const D2D1_ARC_SEGMENT) -> ()
+});
+RIDL!(
+interface ID2D1TessellationSink(ID2D1TessellationSinkVtbl): IUnknown(IUnknownVtbl) {
+ fn AddTriangles(&mut self, triangles: *const D2D1_TRIANGLE, triangleCount: ::UINT32) -> (),
+ fn Close(&mut self) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1PathGeometry(ID2D1PathGeometryVtbl): ID2D1Geometry(ID2D1GeometryVtbl) {
+ fn Open(&mut self, geometrySink: *mut *mut ID2D1GeometrySink) -> ::HRESULT,
+ fn Stream(&mut self, geometrySink: *mut ID2D1GeometrySink) -> ::HRESULT,
+ fn GetSegmentCount(&mut self, count: *mut ::UINT32) -> ::HRESULT,
+ fn GetFigureCount(&mut self, count: *mut ::UINT32) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1Mesh(ID2D1MeshVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn Open(&mut self, tessellationSink: *mut *mut ID2D1TessellationSink) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1Layer(ID2D1LayerVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn GetSize(&mut self, ret: *mut D2D1_SIZE_F) -> *mut D2D1_SIZE_F // FIXME: ABI issue
+});
+RIDL!(
+interface ID2D1DrawingStateBlock(ID2D1DrawingStateBlockVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn GetDescription(&mut self, stateDescription: *mut D2D1_DRAWING_STATE_DESCRIPTION) -> (),
+ fn SetDescription(&mut self, stateDescription: *const D2D1_DRAWING_STATE_DESCRIPTION) -> (),
+ fn SetTextRenderingParams(
+ &mut self, textRenderingParams: *mut ::IDWriteRenderingParams
+ ) -> (),
+ fn GetTextRenderingParams(
+ &mut self, textRenderingParams: *mut *mut ::IDWriteRenderingParams
+ ) -> ()
+});
+RIDL!(
+interface ID2D1RenderTarget(ID2D1RenderTargetVtbl): ID2D1Resource(ID2D1ResourceVtbl) {
+ fn CreateBitmap(
+ &mut self, size: D2D1_SIZE_U, srcData: *const ::c_void, pitch: ::UINT32,
+ bitmapProperties: *const D2D1_BITMAP_PROPERTIES, bitmap: *mut *mut ID2D1Bitmap
+ ) -> ::HRESULT,
+ fn CreateBitmapFromWicBitmap(
+ &mut self, wicBitmapSource: *mut ::IWICBitmapSource,
+ bitmapProperties: *const D2D1_BITMAP_PROPERTIES, bitmap: *mut *mut ID2D1Bitmap
+ ) -> ::HRESULT,
+ fn CreateSharedBitmap(
+ &mut self, riid: ::REFIID, data: *const ::c_void,
+ bitmapProperties: *const D2D1_BITMAP_PROPERTIES, bitmap: *mut *mut ID2D1Bitmap
+ ) -> ::HRESULT,
+ fn CreateBitmapBrush(
+ &mut self, bitmap: *mut ID2D1Bitmap,
+ bitmapBrushProperties: *const D2D1_BITMAP_BRUSH_PROPERTIES,
+ brushProperties: *const D2D1_BRUSH_PROPERTIES, bitmapBrush: *mut *mut ID2D1BitmapBrush
+ ) -> ::HRESULT,
+ fn CreateSolidColorBrush(
+ &mut self, color: *const D2D1_COLOR_F, brushProperties: *const D2D1_BRUSH_PROPERTIES,
+ solidColorBrush: *mut *mut ID2D1SolidColorBrush
+ ) -> ::HRESULT,
+ fn CreateGradientStopCollection(
+ &mut self, gradientStops: *const D2D1_GRADIENT_STOP, gradientStopsCount: ::UINT32,
+ colorInterpolationGamma: D2D1_GAMMA, extendMode: D2D1_EXTEND_MODE,
+ gradientStopCollection: *mut *mut ID2D1GradientStopCollection
+ ) -> ::HRESULT,
+ fn CreateLinearGradientBrush(
+ &mut self, linearGradientBrushProperties: *const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES,
+ brushProperties: *const D2D1_BRUSH_PROPERTIES,
+ gradientStopCollection: *mut ID2D1GradientStopCollection,
+ linearGradientBrush: *mut *mut ID2D1LinearGradientBrush
+ ) -> ::HRESULT,
+ fn CreateRadialGradientBrush(
+ &mut self, radialGradientBrushProperties: *const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES,
+ brushProperties: *const D2D1_BRUSH_PROPERTIES,
+ gradientStopCollection: *mut ID2D1GradientStopCollection,
+ radialGradientBrush: *mut *mut ID2D1RadialGradientBrush
+ ) -> ::HRESULT,
+ fn CreateCompatibleRenderTarget(
+ &mut self, desiredSize: *const D2D1_SIZE_F, desiredPixelSize: *const D2D1_SIZE_U,
+ desiredFormat: *const ::D2D1_PIXEL_FORMAT, options: D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS,
+ bitmapRenderTarget: *mut *mut ID2D1BitmapRenderTarget
+ ) -> ::HRESULT,
+ fn CreateLayer(&mut self, size: *const D2D1_SIZE_F, layer: *mut *mut ID2D1Layer) -> ::HRESULT,
+ fn CreateMesh(&mut self, mesh: *mut *mut ID2D1Mesh) -> ::HRESULT,
+ fn DrawLine(
+ &mut self, point0: ::D2D1_POINT_2F, point1: ::D2D1_POINT_2F, brush: *mut ID2D1Brush,
+ strokeWidth: ::FLOAT, strokeStype: *mut ID2D1StrokeStyle
+ ) -> (),
+ fn DrawRectangle(
+ &mut self, rect: *const ::D2D1_RECT_F, brush: *mut ID2D1Brush,
+ strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle
+ ) -> (),
+ fn FillRectangle(
+ &mut self, rect: *const ::D2D1_RECT_F, brush: *mut ID2D1Brush
+ ) -> (),
+ fn DrawRoundedRectangle(
+ &mut self, roundedRect: *const D2D1_ROUNDED_RECT, brush: *mut ID2D1Brush,
+ strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle
+ ) -> (),
+ fn FillRoundedRectangle(
+ &mut self, roundedRect: *const D2D1_ROUNDED_RECT, brush: *mut ID2D1Brush
+ ) -> (),
+ fn DrawEllipse(
+ &mut self, ellipse: *const D2D1_ELLIPSE, brush: *mut ID2D1Brush,
+ strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle
+ ) -> (),
+ fn FillEllipse(
+ &mut self, ellipse: *const D2D1_ELLIPSE, brush: *mut ID2D1Brush
+ ) -> (),
+ fn DrawGeometry(
+ &mut self, geometry: *mut ID2D1Geometry, brush: *mut ID2D1Brush,
+ strokeWidth: ::FLOAT, strokeStyle: *mut ID2D1StrokeStyle
+ ) -> (),
+ fn FillGeometry(
+ &mut self, geometry: *mut ID2D1Geometry, brush: *mut ID2D1Brush,
+ opacityBrush: *mut ID2D1Brush
+ ) -> (),
+ fn FillMesh(
+ &mut self, mesh: *mut ID2D1Mesh, brush: *const ID2D1Brush
+ ) -> (),
+ fn FillOpacityMask(
+ &mut self, opacityMask: *mut ID2D1Bitmap, brush: *mut ID2D1Brush,
+ content: D2D1_OPACITY_MASK_CONTENT, destinationRectangle: *const ::D2D1_RECT_F,
+ sourceRectangle: *const ::D2D1_RECT_F
+ ) -> (),
+ fn DrawBitmap(
+ &mut self, bitmap: *mut ID2D1Bitmap, destinationRectangle: *const ::D2D1_RECT_F,
+ opacity: ::FLOAT, interpolationMode: D2D1_BITMAP_INTERPOLATION_MODE,
+ sourceRectangle: *const ::D2D1_RECT_F
+ ) -> (),
+ fn DrawText(
+ &mut self, string: *const ::WCHAR, stringLength: ::UINT32,
+ textFormat: *mut ::IDWriteTextFormat, layoutRect: *const ::D2D1_RECT_F,
+ defaultForegroundBrush: *mut ID2D1Brush, options: D2D1_DRAW_TEXT_OPTIONS,
+ measuringMode: ::DWRITE_MEASURING_MODE
+ ) -> (),
+ fn DrawTextLayout(
+ &mut self, origin: ::D2D1_POINT_2F, textLayout: *mut ::IDWriteTextLayout,
+ defaultForegroundBrush: *mut ID2D1Brush, options: D2D1_DRAW_TEXT_OPTIONS
+ ) -> (),
+ fn DrawGlyphRun(
+ &mut self, baselineOrigin: ::D2D1_POINT_2F, glyphRun: *const ::DWRITE_GLYPH_RUN,
+ foregroundBrush: *mut ID2D1Brush, measuringMode: ::DWRITE_MEASURING_MODE
+ ) -> (),
+ fn SetTransform(&mut self, transform: *const D2D1_MATRIX_3X2_F) -> (),
+ fn GetTransform(&mut self, transform: *mut D2D1_MATRIX_3X2_F) -> (),
+ fn SetAntialiasMode(&mut self, antialiasMode: D2D1_ANTIALIAS_MODE) -> (),
+ fn GetAntialiasMode(&mut self) -> D2D1_ANTIALIAS_MODE,
+ fn SetTextAntialiasMode(&mut self, textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE) -> (),
+ fn GetTextAntialiasMode(&mut self) -> D2D1_TEXT_ANTIALIAS_MODE,
+ fn SetTextRenderingParams(
+ &mut self, textRenderingParams: *mut ::IDWriteRenderingParams
+ ) -> (),
+ fn GetTextRenderingParams(
+ &mut self, textRenderingParams: *mut *mut ::IDWriteRenderingParams
+ ) -> (),
+ fn SetTags(&mut self, tag1: D2D1_TAG, tag2: D2D1_TAG) -> (),
+ fn GetTags(&mut self, tag1: *mut D2D1_TAG, tag2: *mut D2D1_TAG) -> (),
+ fn PushLayer(
+ &mut self, layerParameters: *const D2D1_LAYER_PARAMETERS, layer: *mut ID2D1Layer
+ ) -> (),
+ fn PopLayer(&mut self) -> (),
+ fn Flush(&mut self, tag1: *mut D2D1_TAG, tag2: *mut D2D1_TAG) -> ::HRESULT,
+ fn SaveDrawingState(&mut self, drawingStateBlock: *mut ID2D1DrawingStateBlock) -> (),
+ fn RestoreDrawingState(&mut self, drawingStateBlock: *mut ID2D1DrawingStateBlock) -> (),
+ fn PushAxisAlignedClip(
+ &mut self, clipRect: *const ::D2D1_RECT_F, antialiasMode: D2D1_ANTIALIAS_MODE
+ ) -> (),
+ fn PopAxisAlignedClip(&mut self) -> (),
+ fn Clear(&mut self, clearColor: *const D2D1_COLOR_F) -> (),
+ fn BeginDraw(&mut self) -> (),
+ fn EndDraw(&mut self, tag1: *mut D2D1_TAG, tag2: *mut D2D1_TAG) -> ::HRESULT,
+ fn GetPixelFormat(
+ &mut self, ret: *mut ::D2D1_PIXEL_FORMAT
+ ) -> *mut ::D2D1_PIXEL_FORMAT, // FIXME: ABI issue
+ fn SetDpi(&mut self, dpiX: ::FLOAT, dpiY: ::FLOAT) -> (),
+ fn GetDpi(&mut self, dpiX: *mut ::FLOAT, dpiY: *mut ::FLOAT) -> (),
+ fn GetSize(&mut self, ret: *mut D2D1_SIZE_F) -> *mut D2D1_SIZE_F, // FIXME: ABI issue
+ fn GetPixelSize(&mut self, ret: *mut D2D1_SIZE_U) -> *mut D2D1_SIZE_U, // FIXME: ABI issue
+ fn GetMaximumBitmapSize(&mut self) -> ::UINT32,
+ fn IsSupported(
+ &mut self, renderTargetProperties: *const D2D1_RENDER_TARGET_PROPERTIES
+ ) -> ::BOOL
+});
+RIDL!(
+interface ID2D1BitmapRenderTarget(ID2D1BitmapRenderTargetVtbl)
+ : ID2D1RenderTarget(ID2D1RenderTargetVtbl) {
+ fn GetBitmap(&mut self, bitmap: *mut *mut ID2D1Bitmap) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1HwndRenderTarget(ID2D1HwndRenderTargetVtbl)
+ : ID2D1RenderTarget(ID2D1RenderTargetVtbl) {
+ fn CheckWindowState(&mut self) -> D2D1_WINDOW_STATE,
+ fn Resize(&mut self, pixelSize: *const D2D1_SIZE_U) -> ::HRESULT,
+ fn GetHwnd(&mut self) -> ::HWND
+});
+RIDL!(
+interface ID2D1GdiInteropRenderTarget(ID2D1GdiInteropRenderTargetVtbl): IUnknown(IUnknownVtbl) {
+ fn GetDC(&mut self, mode: D2D1_DC_INITIALIZE_MODE, hdc: *mut ::HDC) -> ::HRESULT,
+ fn ReleaseDC(&mut self, update: *const ::RECT) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1DCRenderTarget(ID2D1DCRenderTargetVtbl): ID2D1RenderTarget(ID2D1RenderTargetVtbl) {
+ fn BindDC(&mut self, hDC: ::HDC, pSubRect: *const ::RECT) -> ::HRESULT
+});
+RIDL!(
+interface ID2D1Factory(ID2D1FactoryVtbl): IUnknown(IUnknownVtbl) {
+ fn ReloadSystemMetrics(&mut self) -> ::HRESULT,
+ fn GetDesktopDpi(&mut self, dpiX: *mut ::FLOAT, dpiY: *mut ::FLOAT) -> (),
+ fn CreateRectangleGeometry(
+ &mut self, rectangle: *const ::D2D1_RECT_F,
+ rectangleGeometry: *mut *mut ID2D1RectangleGeometry
+ ) -> ::HRESULT,
+ fn CreateRoundedRectangleGeometry(
+ &mut self, roundedRectangle: *const D2D1_ROUNDED_RECT,
+ roundedRectangleGeometry: *mut *mut ID2D1RoundedRectangleGeometry
+ ) -> ::HRESULT,
+ fn CreateEllipseGeometry(
+ &mut self, ellipse: *const D2D1_ELLIPSE,
+ ellipseGeometry: *mut *mut ID2D1EllipseGeometry
+ ) -> ::HRESULT,
+ fn CreateGeometryGroup(
+ &mut self, fillMode: D2D1_FILL_MODE, geometries: *mut *mut ID2D1Geometry,
+ geometriesCount: ::UINT32, geometryGroup: *mut *mut ID2D1GeometryGroup
+ ) -> ::HRESULT,
+ fn CreateTransformedGeometry(
+ &mut self, sourceGeometry: *mut ID2D1Geometry, transform: *const D2D1_MATRIX_3X2_F,
+ transformedGeometry: *mut *mut ID2D1TransformedGeometry
+ ) -> ::HRESULT,
+ fn CreatePathGeometry(
+ &mut self, pathGeometry: *mut *mut ID2D1PathGeometry
+ ) -> ::HRESULT,
+ fn CreateStrokeStyle(
+ &mut self, strokeStyleProperties: *const D2D1_STROKE_STYLE_PROPERTIES,
+ dashes: *const ::FLOAT, dashesCount: ::UINT32, strokeStyle: *mut *mut ID2D1StrokeStyle
+ ) -> ::HRESULT,
+ fn CreateDrawingStateBlock(
+ &mut self, drawingStateDescription: *const D2D1_DRAWING_STATE_DESCRIPTION,
+ textRenderingParams: *mut ::IDWriteRenderingParams,
+ drawingStateBlock: *mut *mut ID2D1DrawingStateBlock
+ ) -> ::HRESULT,
+ fn CreateWicBitmapRenderTarget(
+ &mut self, target: *mut ::IWICBitmap,
+ renderTargetProperties: *const D2D1_RENDER_TARGET_PROPERTIES,
+ renderTarget: *mut *mut ID2D1RenderTarget
+ ) -> ::HRESULT,
+ fn CreateHwndRenderTarget(
+ &mut self, renderTargetProperties: *const D2D1_RENDER_TARGET_PROPERTIES,
+ hwndRenderTargetProperties: *const D2D1_HWND_RENDER_TARGET_PROPERTIES,
+ hwndRenderTarget: *mut *mut ID2D1HwndRenderTarget
+ ) -> ::HRESULT,
+ fn CreateDxgiSurfaceRenderTarget(
+ &mut self, dxgiSurface: *mut ::IDXGISurface,
+ renderTargetProperties: *const D2D1_RENDER_TARGET_PROPERTIES,
+ renderTarget: *mut *mut ID2D1RenderTarget
+ ) -> ::HRESULT,
+ fn CreateDCRenderTarget(
+ &mut self, renderTargetProperties: *const D2D1_RENDER_TARGET_PROPERTIES,
+ dcRenderTarget: *mut *mut ID2D1DCRenderTarget
+ ) -> ::HRESULT
+});
+DEFINE_GUID!(
+ UuidOfID2D1Factory,
+ 0x06152247, 0x6f50, 0x465a, 0x92, 0x45, 0x11, 0x8b, 0xfd, 0x3b, 0x60, 0x07
+);
diff --git a/third_party/rust/winapi-0.2.8/src/d2dbasetypes.rs b/third_party/rust/winapi-0.2.8/src/d2dbasetypes.rs
new file mode 100644
index 0000000000..45a5a1414d
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d2dbasetypes.rs
@@ -0,0 +1,61 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of d2dbasetypes.h
+STRUCT!{struct D2D_POINT_2U {
+ x: ::UINT32,
+ y: ::UINT32,
+}}
+STRUCT!{struct D2D_POINT_2F {
+ x: ::FLOAT,
+ y: ::FLOAT,
+}}
+pub type D2D_POINT_2L = ::POINT;
+STRUCT!{struct D2D_VECTOR_2F {
+ x: ::FLOAT,
+ y: ::FLOAT,
+}}
+STRUCT!{struct D2D_VECTOR_3F {
+ x: ::FLOAT,
+ y: ::FLOAT,
+ z: ::FLOAT,
+}}
+STRUCT!{struct D2D_VECTOR_4F {
+ x: ::FLOAT,
+ y: ::FLOAT,
+ z: ::FLOAT,
+ w: ::FLOAT,
+}}
+STRUCT!{struct D2D_RECT_F {
+ left: ::FLOAT,
+ top: ::FLOAT,
+ right: ::FLOAT,
+ bottom: ::FLOAT,
+}}
+STRUCT!{struct D2D_RECT_U {
+ left: ::UINT32,
+ top: ::UINT32,
+ right: ::UINT32,
+ bottom: ::UINT32,
+}}
+pub type D2D_RECT_L = ::RECT;
+STRUCT!{struct D2D_SIZE_F {
+ width: ::FLOAT,
+ height: ::FLOAT,
+}}
+STRUCT!{struct D2D_SIZE_U {
+ width: ::UINT32,
+ height: ::UINT32,
+}}
+pub type D2D_COLOR_F = ::D3DCOLORVALUE;
+STRUCT!{struct D2D_MATRIX_3X2_F {
+ matrix: [[::FLOAT; 2]; 3],
+}}
+STRUCT!{struct D2D_MATRIX_4X3_F {
+ matrix: [[::FLOAT; 3]; 4],
+}}
+STRUCT!{struct D2D_MATRIX_4X4_F {
+ matrix: [[::FLOAT; 4]; 4],
+}}
+STRUCT!{struct D2D_MATRIX_5X4_F {
+ matrix: [[::FLOAT; 4]; 5],
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/d3d10shader.rs b/third_party/rust/winapi-0.2.8/src/d3d10shader.rs
new file mode 100644
index 0000000000..4f64c5f330
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d10shader.rs
@@ -0,0 +1,110 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub type D3D10_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;
+pub type D3D10_CBUFFER_TYPE = D3D_CBUFFER_TYPE;
+STRUCT!{struct D3D10_SHADER_DESC {
+ Version: UINT,
+ Creator: LPCSTR,
+ Flags: UINT,
+ ConstantBuffers: UINT,
+ BoundResources: UINT,
+ InputParameters: UINT,
+ OutputParameters: UINT,
+ InstructionCount: UINT,
+ TempRegisterCount: UINT,
+ TempArrayCount: UINT,
+ DefCount: UINT,
+ DclCount: UINT,
+ TextureNormalInstructions: UINT,
+ TextureLoadInstructions: UINT,
+ TextureCompInstructions: UINT,
+ TextureBiasInstructions: UINT,
+ TextureGradientInstructions: UINT,
+ FloatInstructionCount: UINT,
+ IntInstructionCount: UINT,
+ UintInstructionCount: UINT,
+ StaticFlowControlCount: UINT,
+ DynamicFlowControlCount: UINT,
+ MacroInstructionCount: UINT,
+ ArrayInstructionCount: UINT,
+ CutInstructionCount: UINT,
+ EmitInstructionCount: UINT,
+ GSOutputTopology: D3D_PRIMITIVE_TOPOLOGY,
+ GSMaxOutputVertexCount: UINT,
+}}
+STRUCT!{struct D3D10_SHADER_BUFFER_DESC {
+ Name: LPCSTR,
+ Type: D3D10_CBUFFER_TYPE,
+ Variables: UINT,
+ Size: UINT,
+ uFlags: UINT,
+}}
+STRUCT!{struct D3D10_SHADER_VARIABLE_DESC {
+ Name: LPCSTR,
+ StartOffset: UINT,
+ Size: UINT,
+ uFlags: UINT,
+ DefaultValue: LPVOID,
+}}
+STRUCT!{struct D3D10_SHADER_TYPE_DESC {
+ Class: D3D_SHADER_VARIABLE_CLASS,
+ Type: D3D_SHADER_VARIABLE_TYPE,
+ Rows: UINT,
+ Columns: UINT,
+ Elements: UINT,
+ Members: UINT,
+ Offset: UINT,
+}}
+STRUCT!{struct D3D10_SHADER_INPUT_BIND_DESC {
+ Name: LPCSTR,
+ Type: D3D_SHADER_INPUT_TYPE,
+ BindPoint: UINT,
+ BindCount: UINT,
+ uFlags: UINT,
+ ReturnType: D3D_RESOURCE_RETURN_TYPE,
+ Dimension: D3D_SRV_DIMENSION,
+ NumSamples: UINT,
+}}
+STRUCT!{struct D3D10_SIGNATURE_PARAMETER_DESC {
+ SemanticName: LPCSTR,
+ SemanticIndex: UINT,
+ Register: UINT,
+ SystemValueType: D3D_NAME,
+ ComponentType: D3D_REGISTER_COMPONENT_TYPE,
+ Mask: BYTE,
+ ReadWriteMask: BYTE,
+}}
+RIDL!{interface ID3D10ShaderReflectionType(ID3D10ShaderReflectionTypeVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_TYPE_DESC) -> HRESULT,
+ fn GetMemberTypeByIndex(&mut self, Index: UINT) -> *mut ID3D10ShaderReflectionType,
+ fn GetMemberTypeByName(&mut self, Name: LPCSTR) -> *mut ID3D10ShaderReflectionType,
+ fn GetMemberTypeName(&mut self, Index: UINT) -> LPCSTR
+}}
+RIDL!{interface ID3D10ShaderReflectionVariable(ID3D10ShaderReflectionVariableVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_VARIABLE_DESC) -> HRESULT,
+ fn GetType(&mut self) -> *mut ID3D10ShaderReflectionType
+}}
+RIDL!{interface ID3D10ShaderReflectionConstantBuffer(ID3D10ShaderReflectionConstantBufferVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_BUFFER_DESC) -> HRESULT,
+ fn GetVariableByIndex(&mut self, Index: UINT) -> *mut ID3D10ShaderReflectionVariable,
+ fn GetVariableByName(&mut self, Name: LPCSTR) -> *mut ID3D10ShaderReflectionVariable
+}}
+RIDL!{interface ID3D10ShaderReflection(ID3D10ShaderReflectionVtbl): IUnknown(IUnknownVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D10_SHADER_DESC) -> HRESULT,
+ fn GetConstantBufferByIndex(
+ &mut self, Index: UINT
+ ) -> *mut ID3D10ShaderReflectionConstantBuffer,
+ fn GetConstantBufferByName(
+ &mut self, Name: LPCSTR
+ ) -> *mut ID3D10ShaderReflectionConstantBuffer,
+ fn GetResourceBindingDesc(
+ &mut self, ResourceIndex: UINT, pDesc: *mut D3D10_SHADER_INPUT_BIND_DESC
+ ) -> HRESULT,
+ fn GetInputParameterDesc(
+ &mut self, ParameterIndex: UINT, pDesc: *mut D3D10_SIGNATURE_PARAMETER_DESC
+ ) -> HRESULT,
+ fn GetOutputParameterDesc(
+ &mut self, ParameterIndex: UINT, pDesc: *mut D3D10_SIGNATURE_PARAMETER_DESC
+ ) -> HRESULT
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/d3d11.rs b/third_party/rust/winapi-0.2.8/src/d3d11.rs
new file mode 100644
index 0000000000..4fed70ca2e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d11.rs
@@ -0,0 +1,2665 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub const D3D11_16BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffff;
+pub const D3D11_32BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xffffffff;
+pub const D3D11_8BIT_INDEX_STRIP_CUT_VALUE: DWORD = 0xff;
+pub const D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT: DWORD = 9;
+pub const D3D11_CLIP_OR_CULL_DISTANCE_COUNT: DWORD = 8;
+pub const D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT: DWORD = 2;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT: DWORD = 14;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS: DWORD = 4;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT: DWORD = 15;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT: DWORD = 16;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 15;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
+pub const D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT: DWORD = 64;
+pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST: DWORD = 1;
+pub const D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT: DWORD = 128;
+pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST: DWORD = 1;
+pub const D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT: DWORD = 128;
+pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT: DWORD = 16;
+pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST: DWORD = 1;
+pub const D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT: DWORD = 16;
+pub const D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT: DWORD = 32;
+pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_COMMONSHADER_TEMP_REGISTER_COUNT: DWORD = 4096;
+pub const D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST: DWORD = 3;
+pub const D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS: DWORD = 3;
+pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX: DWORD = 10;
+pub const D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN: c_long = -10;
+pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE: c_long = -8;
+pub const D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE: DWORD = 7;
+pub const D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 256;
+pub const D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP: DWORD = 64;
+pub const D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 240;
+pub const D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP: DWORD = 68;
+pub const D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 224;
+pub const D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP: DWORD = 72;
+pub const D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 208;
+pub const D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP: DWORD = 76;
+pub const D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 192;
+pub const D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP: DWORD = 84;
+pub const D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 176;
+pub const D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP: DWORD = 92;
+pub const D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 160;
+pub const D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP: DWORD = 100;
+pub const D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 144;
+pub const D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP: DWORD = 112;
+pub const D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 128;
+pub const D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP: DWORD = 128;
+pub const D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 112;
+pub const D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP: DWORD = 144;
+pub const D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 96;
+pub const D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP: DWORD = 168;
+pub const D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 80;
+pub const D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP: DWORD = 204;
+pub const D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 64;
+pub const D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP: DWORD = 256;
+pub const D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 48;
+pub const D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP: DWORD = 340;
+pub const D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 32;
+pub const D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP: DWORD = 512;
+pub const D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: DWORD = 16;
+pub const D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP: DWORD = 768;
+pub const D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION: DWORD = 1;
+pub const D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT: DWORD = 256;
+pub const D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 768;
+pub const D3D11_CS_4_X_THREAD_GROUP_MAX_X: DWORD = 768;
+pub const D3D11_CS_4_X_THREAD_GROUP_MAX_Y: DWORD = 768;
+pub const D3D11_CS_4_X_UAV_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION: DWORD = 65535;
+pub const D3D11_CS_TGSM_REGISTER_COUNT: DWORD = 8192;
+pub const D3D11_CS_TGSM_REGISTER_READS_PER_INST: DWORD = 1;
+pub const D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_CS_THREADGROUPID_REGISTER_COMPONENTS: DWORD = 3;
+pub const D3D11_CS_THREADGROUPID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_CS_THREADIDINGROUP_REGISTER_COMPONENTS: DWORD = 3;
+pub const D3D11_CS_THREADIDINGROUP_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_CS_THREADID_REGISTER_COMPONENTS: DWORD = 3;
+pub const D3D11_CS_THREADID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP: DWORD = 1024;
+pub const D3D11_CS_THREAD_GROUP_MAX_X: DWORD = 1024;
+pub const D3D11_CS_THREAD_GROUP_MAX_Y: DWORD = 1024;
+pub const D3D11_CS_THREAD_GROUP_MAX_Z: DWORD = 64;
+pub const D3D11_CS_THREAD_GROUP_MIN_X: DWORD = 1;
+pub const D3D11_CS_THREAD_GROUP_MIN_Y: DWORD = 1;
+pub const D3D11_CS_THREAD_GROUP_MIN_Z: DWORD = 1;
+pub const D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL: DWORD = 16384;
+pub const D3D11_DEFAULT_BLEND_FACTOR_ALPHA: FLOAT = 1.0;
+pub const D3D11_DEFAULT_BLEND_FACTOR_BLUE: FLOAT = 1.0;
+pub const D3D11_DEFAULT_BLEND_FACTOR_GREEN: FLOAT = 1.0;
+pub const D3D11_DEFAULT_BLEND_FACTOR_RED: FLOAT = 1.0;
+pub const D3D11_DEFAULT_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
+pub const D3D11_DEFAULT_DEPTH_BIAS: DWORD = 0;
+pub const D3D11_DEFAULT_DEPTH_BIAS_CLAMP: FLOAT = 0.0;
+pub const D3D11_DEFAULT_MAX_ANISOTROPY: DWORD = 16;
+pub const D3D11_DEFAULT_MIP_LOD_BIAS: FLOAT = 0.0;
+pub const D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX: DWORD = 0;
+pub const D3D11_DEFAULT_SAMPLE_MASK: DWORD = 0xffffffff;
+pub const D3D11_DEFAULT_SCISSOR_ENDX: DWORD = 0;
+pub const D3D11_DEFAULT_SCISSOR_ENDY: DWORD = 0;
+pub const D3D11_DEFAULT_SCISSOR_STARTX: DWORD = 0;
+pub const D3D11_DEFAULT_SCISSOR_STARTY: DWORD = 0;
+pub const D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS: FLOAT = 0.0;
+pub const D3D11_DEFAULT_STENCIL_READ_MASK: DWORD = 0xff;
+pub const D3D11_DEFAULT_STENCIL_REFERENCE: DWORD = 0;
+pub const D3D11_DEFAULT_STENCIL_WRITE_MASK: DWORD = 0xff;
+pub const D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX: DWORD = 0;
+pub const D3D11_DEFAULT_VIEWPORT_HEIGHT: DWORD = 0;
+pub const D3D11_DEFAULT_VIEWPORT_MAX_DEPTH: FLOAT = 0.0;
+pub const D3D11_DEFAULT_VIEWPORT_MIN_DEPTH: FLOAT = 0.0;
+pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTX: DWORD = 0;
+pub const D3D11_DEFAULT_VIEWPORT_TOPLEFTY: DWORD = 0;
+pub const D3D11_DEFAULT_VIEWPORT_WIDTH: DWORD = 0;
+pub const D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
+pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS: DWORD = 3;
+pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_DS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_DS_OUTPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP: FLOAT = 0.6;
+pub const D3D11_FLOAT32_MAX: FLOAT = 3.402823466E+38;
+pub const D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP: FLOAT = 0.6;
+pub const D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR: FLOAT = 2.4;
+pub const D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR: FLOAT = 1.0;
+pub const D3D11_FLOAT_TO_SRGB_OFFSET: FLOAT = 0.055;
+pub const D3D11_FLOAT_TO_SRGB_SCALE_1: FLOAT = 12.92;
+pub const D3D11_FLOAT_TO_SRGB_SCALE_2: FLOAT = 1.055;
+pub const D3D11_FLOAT_TO_SRGB_THRESHOLD: FLOAT = 0.0031308;
+pub const D3D11_FTOI_INSTRUCTION_MAX_INPUT: FLOAT = 2147483647.999;
+pub const D3D11_FTOI_INSTRUCTION_MIN_INPUT: FLOAT = -2147483648.999;
+pub const D3D11_FTOU_INSTRUCTION_MAX_INPUT: FLOAT = 4294967295.999;
+pub const D3D11_FTOU_INSTRUCTION_MIN_INPUT: FLOAT = 0.0;
+pub const D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST: DWORD = 2;
+pub const D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS: DWORD = 1;
+pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_GS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_GS_INPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_GS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_GS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_GS_INPUT_REGISTER_VERTICES: DWORD = 32;
+pub const D3D11_GS_MAX_INSTANCE_COUNT: DWORD = 32;
+pub const D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES: DWORD = 1024;
+pub const D3D11_GS_OUTPUT_ELEMENTS: DWORD = 32;
+pub const D3D11_GS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_GS_OUTPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
+pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND: DWORD = 0xffffffff;
+pub const D3D11_HS_MAXTESSFACTOR_LOWER_BOUND: FLOAT = 1.0;
+pub const D3D11_HS_MAXTESSFACTOR_UPPER_BOUND: FLOAT = 64.0;
+pub const D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: DWORD = 3968;
+pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS: DWORD = 128;
+pub const D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
+pub const D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY: DWORD = 0;
+pub const D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES: DWORD = 0;
+pub const D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 1;
+pub const D3D11_IA_INSTANCE_ID_BIT_COUNT: DWORD = 32;
+pub const D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT: DWORD = 32;
+pub const D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT: DWORD = 32;
+pub const D3D11_IA_PRIMITIVE_ID_BIT_COUNT: DWORD = 32;
+pub const D3D11_IA_VERTEX_ID_BIT_COUNT: DWORD = 32;
+pub const D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT: DWORD = 32;
+pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS: DWORD = 128;
+pub const D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT: DWORD = 32;
+pub const D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT: DWORD = 0xffffffff;
+pub const D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER: DWORD = 0xffffffff;
+pub const D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL: DWORD = 0xffffffff;
+pub const D3D11_KEEP_UNORDERED_ACCESS_VIEWS: DWORD = 0xffffffff;
+pub const D3D11_LINEAR_GAMMA: FLOAT = 1.0;
+pub const D3D11_MAJOR_VERSION: DWORD = 11;
+pub const D3D11_MAX_BORDER_COLOR_COMPONENT: FLOAT = 1.0;
+pub const D3D11_MAX_DEPTH: FLOAT = 1.0;
+pub const D3D11_MAX_MAXANISOTROPY: DWORD = 16;
+pub const D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT: DWORD = 32;
+pub const D3D11_MAX_POSITION_VALUE: FLOAT = 3.402823466E+34;
+pub const D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP: DWORD = 17;
+pub const D3D11_MINOR_VERSION: DWORD = 0;
+pub const D3D11_MIN_BORDER_COLOR_COMPONENT: FLOAT = 0.0;
+pub const D3D11_MIN_DEPTH: FLOAT = 0.0;
+pub const D3D11_MIN_MAXANISOTROPY: DWORD = 0;
+pub const D3D11_MIP_LOD_BIAS_MAX: FLOAT = 15.99;
+pub const D3D11_MIP_LOD_BIAS_MIN: FLOAT = -16.0;
+pub const D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT: DWORD = 8;
+pub const D3D11_MIP_LOD_RANGE_BIT_COUNT: DWORD = 8;
+pub const D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH: FLOAT = 1.4;
+pub const D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT: DWORD = 0;
+pub const D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 15;
+pub const D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
+pub const D3D11_PS_CS_UAV_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_PS_CS_UAV_REGISTER_COUNT: DWORD = 8;
+pub const D3D11_PS_CS_UAV_REGISTER_READS_PER_INST: DWORD = 1;
+pub const D3D11_PS_CS_UAV_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_PS_FRONTFACING_DEFAULT_VALUE: DWORD = 0xffffffff;
+pub const D3D11_PS_FRONTFACING_FALSE_VALUE: DWORD = 0;
+pub const D3D11_PS_FRONTFACING_TRUE_VALUE: DWORD = 0xffffffff;
+pub const D3D11_PS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_PS_INPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_PS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_PS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.0;
+pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS: DWORD = 1;
+pub const D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_PS_OUTPUT_MASK_REGISTER_COUNT: DWORD = 1;
+pub const D3D11_PS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_PS_OUTPUT_REGISTER_COUNT: DWORD = 8;
+pub const D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT: FLOAT = 0.5;
+pub const D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT: DWORD = 16;
+pub const D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
+pub const D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP: DWORD = 27;
+pub const D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
+pub const D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
+pub const D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 32;
+pub const D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 32;
+pub const D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION: DWORD = 16384;
+pub const D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT: DWORD = 1024;
+pub const D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT: DWORD = 4096;
+pub const D3D11_REQ_MAXANISOTROPY: DWORD = 16;
+pub const D3D11_REQ_MIP_LEVELS: DWORD = 15;
+pub const D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES: DWORD = 2048;
+pub const D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
+pub const D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH: DWORD = 16384;
+pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM: DWORD = 128;
+pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM: FLOAT = 0.25;
+pub const D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM: DWORD = 2048;
+pub const D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP: DWORD = 20;
+pub const D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE: DWORD = 4096;
+pub const D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
+pub const D3D11_REQ_TEXTURE1D_U_DIMENSION: DWORD = 16384;
+pub const D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION: DWORD = 2048;
+pub const D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION: DWORD = 16384;
+pub const D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION: DWORD = 2048;
+pub const D3D11_REQ_TEXTURECUBE_DIMENSION: DWORD = 16384;
+pub const D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: DWORD = 0;
+pub const D3D11_SHADER_MAJOR_VERSION: DWORD = 5;
+pub const D3D11_SHADER_MAX_INSTANCES: DWORD = 65535;
+pub const D3D11_SHADER_MAX_INTERFACES: DWORD = 253;
+pub const D3D11_SHADER_MAX_INTERFACE_CALL_SITES: DWORD = 4096;
+pub const D3D11_SHADER_MAX_TYPES: DWORD = 65535;
+pub const D3D11_SHADER_MINOR_VERSION: DWORD = 0;
+pub const D3D11_SHIFT_INSTRUCTION_PAD_VALUE: DWORD = 0;
+pub const D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT: DWORD = 5;
+pub const D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT: DWORD = 8;
+pub const D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES: DWORD = 2048;
+pub const D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES: DWORD = 512;
+pub const D3D11_SO_BUFFER_SLOT_COUNT: DWORD = 4;
+pub const D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP: DWORD = 0xffffffff;
+pub const D3D11_SO_NO_RASTERIZED_STREAM: DWORD = 0xffffffff;
+pub const D3D11_SO_OUTPUT_COMPONENT_COUNT: DWORD = 128;
+pub const D3D11_SO_STREAM_COUNT: DWORD = 4;
+pub const D3D11_SPEC_DATE_DAY: DWORD = 16;
+pub const D3D11_SPEC_DATE_MONTH: DWORD = 05;
+pub const D3D11_SPEC_DATE_YEAR: DWORD = 2011;
+pub const D3D11_SPEC_VERSION: FLOAT = 1.07;
+pub const D3D11_SRGB_GAMMA: FLOAT = 2.2;
+pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_1: FLOAT = 12.92;
+pub const D3D11_SRGB_TO_FLOAT_DENOMINATOR_2: FLOAT = 1.055;
+pub const D3D11_SRGB_TO_FLOAT_EXPONENT: FLOAT = 2.4;
+pub const D3D11_SRGB_TO_FLOAT_OFFSET: FLOAT = 0.055;
+pub const D3D11_SRGB_TO_FLOAT_THRESHOLD: FLOAT = 0.04045;
+pub const D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP: FLOAT = 0.5;
+pub const D3D11_STANDARD_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED: DWORD = 64;
+pub const D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE: DWORD = 4;
+pub const D3D11_STANDARD_PIXEL_COMPONENT_COUNT: DWORD = 128;
+pub const D3D11_STANDARD_PIXEL_ELEMENT_COUNT: DWORD = 32;
+pub const D3D11_STANDARD_VECTOR_SIZE: DWORD = 4;
+pub const D3D11_STANDARD_VERTEX_ELEMENT_COUNT: DWORD = 32;
+pub const D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT: DWORD = 64;
+pub const D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
+pub const D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT: DWORD = 8;
+pub const D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR: DWORD = 64;
+pub const D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 64;
+pub const D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR: DWORD = 63;
+pub const D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR: DWORD = 64;
+pub const D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR: DWORD = 2;
+pub const D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR: DWORD = 1;
+pub const D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR: DWORD = 1;
+pub const D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT: DWORD = 16;
+pub const D3D11_UNBOUND_MEMORY_ACCESS_RESULT: DWORD = 0;
+pub const D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX: DWORD = 15;
+pub const D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE: DWORD = 16;
+pub const D3D11_VIEWPORT_BOUNDS_MAX: DWORD = 32767;
+pub const D3D11_VIEWPORT_BOUNDS_MIN: c_long = -32768;
+pub const D3D11_VS_INPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_VS_INPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_VS_INPUT_REGISTER_READS_PER_INST: DWORD = 2;
+pub const D3D11_VS_INPUT_REGISTER_READ_PORTS: DWORD = 1;
+pub const D3D11_VS_OUTPUT_REGISTER_COMPONENTS: DWORD = 4;
+pub const D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: DWORD = 32;
+pub const D3D11_VS_OUTPUT_REGISTER_COUNT: DWORD = 32;
+pub const D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: DWORD = 10;
+pub const D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: DWORD = 25;
+pub const D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: DWORD = 25;
+pub const D3D11_1_UAV_SLOT_COUNT: DWORD = 64;
+pub const D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES: DWORD = 65536;
+ENUM!{enum D3D11_INPUT_CLASSIFICATION {
+ D3D11_INPUT_PER_VERTEX_DATA = 0,
+ D3D11_INPUT_PER_INSTANCE_DATA = 1,
+}}
+pub const D3D11_APPEND_ALIGNED_ELEMENT: DWORD = 0xffffffff;
+STRUCT!{struct D3D11_INPUT_ELEMENT_DESC {
+ SemanticName: LPCSTR,
+ SemanticIndex: UINT,
+ Format: DXGI_FORMAT,
+ InputSlot: UINT,
+ AlignedByteOffset: UINT,
+ InputSlotClass: D3D11_INPUT_CLASSIFICATION,
+ InstanceDataStepRate: UINT,
+}}
+ENUM!{enum D3D11_FILL_MODE {
+ D3D11_FILL_WIREFRAME = 2,
+ D3D11_FILL_SOLID = 3,
+}}
+pub type D3D11_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;
+pub type D3D11_PRIMITIVE = D3D_PRIMITIVE;
+ENUM!{enum D3D11_CULL_MODE {
+ D3D11_CULL_NONE = 1,
+ D3D11_CULL_FRONT = 2,
+ D3D11_CULL_BACK = 3,
+}}
+STRUCT!{struct D3D11_SO_DECLARATION_ENTRY {
+ Stream: UINT,
+ SemanticName: LPCSTR,
+ SemanticIndex: UINT,
+ StartComponent: BYTE,
+ ComponentCount: BYTE,
+ OutputSlot: BYTE,
+}}
+STRUCT!{struct D3D11_VIEWPORT {
+ TopLeftX: FLOAT,
+ TopLeftY: FLOAT,
+ Width: FLOAT,
+ Height: FLOAT,
+ MinDepth: FLOAT,
+ MaxDepth: FLOAT,
+}}
+STRUCT!{struct D3D11_DRAW_INSTANCED_INDIRECT_ARGS {
+ VertexCountPerInstance: UINT,
+ InstanceCount: UINT,
+ StartVertexLocation: UINT,
+ StartInstanceLocation: UINT,
+}}
+STRUCT!{struct D3D11_DRAW_INDEXED_INSTANCED_INDIRECT_ARGS {
+ IndexCountPerInstance: UINT,
+ InstanceCount: UINT,
+ StartIndexLocation: UINT,
+ BaseVertexLocation: INT,
+ StartInstanceLocation: UINT,
+}}
+ENUM!{enum D3D11_RESOURCE_DIMENSION {
+ D3D11_RESOURCE_DIMENSION_UNKNOWN = 0,
+ D3D11_RESOURCE_DIMENSION_BUFFER = 1,
+ D3D11_RESOURCE_DIMENSION_TEXTURE1D = 2,
+ D3D11_RESOURCE_DIMENSION_TEXTURE2D = 3,
+ D3D11_RESOURCE_DIMENSION_TEXTURE3D = 4,
+}}
+pub type D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;
+ENUM!{enum D3D11_DSV_DIMENSION {
+ D3D11_DSV_DIMENSION_UNKNOWN = 0,
+ D3D11_DSV_DIMENSION_TEXTURE1D = 1,
+ D3D11_DSV_DIMENSION_TEXTURE1DARRAY = 2,
+ D3D11_DSV_DIMENSION_TEXTURE2D = 3,
+ D3D11_DSV_DIMENSION_TEXTURE2DARRAY = 4,
+ D3D11_DSV_DIMENSION_TEXTURE2DMS = 5,
+ D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
+}}
+ENUM!{enum D3D11_RTV_DIMENSION {
+ D3D11_RTV_DIMENSION_UNKNOWN = 0,
+ D3D11_RTV_DIMENSION_BUFFER = 1,
+ D3D11_RTV_DIMENSION_TEXTURE1D = 2,
+ D3D11_RTV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D11_RTV_DIMENSION_TEXTURE2D = 4,
+ D3D11_RTV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D11_RTV_DIMENSION_TEXTURE2DMS = 6,
+ D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D11_RTV_DIMENSION_TEXTURE3D = 8,
+}}
+ENUM!{enum D3D11_UAV_DIMENSION {
+ D3D11_UAV_DIMENSION_UNKNOWN = 0,
+ D3D11_UAV_DIMENSION_BUFFER = 1,
+ D3D11_UAV_DIMENSION_TEXTURE1D = 2,
+ D3D11_UAV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D11_UAV_DIMENSION_TEXTURE2D = 4,
+ D3D11_UAV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D11_UAV_DIMENSION_TEXTURE3D = 8,
+}}
+ENUM!{enum D3D11_USAGE {
+ D3D11_USAGE_DEFAULT = 0,
+ D3D11_USAGE_IMMUTABLE = 1,
+ D3D11_USAGE_DYNAMIC = 2,
+ D3D11_USAGE_STAGING = 3,
+}}
+FLAGS!{enum D3D11_BIND_FLAG {
+ D3D11_BIND_VERTEX_BUFFER = 0x1,
+ D3D11_BIND_INDEX_BUFFER = 0x2,
+ D3D11_BIND_CONSTANT_BUFFER = 0x4,
+ D3D11_BIND_SHADER_RESOURCE = 0x8,
+ D3D11_BIND_STREAM_OUTPUT = 0x10,
+ D3D11_BIND_RENDER_TARGET = 0x20,
+ D3D11_BIND_DEPTH_STENCIL = 0x40,
+ D3D11_BIND_UNORDERED_ACCESS = 0x80,
+ D3D11_BIND_DECODER = 0x200,
+ D3D11_BIND_VIDEO_ENCODER = 0x400,
+}}
+FLAGS!{enum D3D11_CPU_ACCESS_FLAG {
+ D3D11_CPU_ACCESS_WRITE = 0x10000,
+ D3D11_CPU_ACCESS_READ = 0x20000,
+}}
+FLAGS!{enum D3D11_RESOURCE_MISC_FLAG {
+ D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1,
+ D3D11_RESOURCE_MISC_SHARED = 0x2,
+ D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4,
+ D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10,
+ D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20,
+ D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40,
+ D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80,
+ D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100,
+ D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200,
+ D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800,
+ D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000,
+ D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000,
+ D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000,
+ D3D11_RESOURCE_MISC_GUARDED = 0x8000,
+ D3D11_RESOURCE_MISC_TILE_POOL = 0x20000,
+ D3D11_RESOURCE_MISC_TILED = 0x40000,
+ D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000,
+}}
+ENUM!{enum D3D11_MAP {
+ D3D11_MAP_READ = 1,
+ D3D11_MAP_WRITE = 2,
+ D3D11_MAP_READ_WRITE = 3,
+ D3D11_MAP_WRITE_DISCARD = 4,
+ D3D11_MAP_WRITE_NO_OVERWRITE = 5,
+}}
+FLAGS!{enum D3D11_MAP_FLAG {
+ D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000,
+}}
+FLAGS!{enum D3D11_RAISE_FLAG {
+ D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x1,
+}}
+FLAGS!{enum D3D11_CLEAR_FLAG {
+ D3D11_CLEAR_DEPTH = 0x1,
+ D3D11_CLEAR_STENCIL = 0x2,
+}}
+pub type D3D11_RECT = RECT;
+STRUCT!{struct D3D11_BOX {
+ left: UINT,
+ top: UINT,
+ front: UINT,
+ right: UINT,
+ bottom: UINT,
+ back: UINT,
+}}
+RIDL!{interface ID3D11DeviceChild(ID3D11DeviceChildVtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut ID3D11Device) -> (),
+ fn GetPrivateData(
+ &mut self, guid: REFGUID, pDataSize: *mut UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn SetPrivateData(
+ &mut self, guid: REFGUID, DataSize: UINT, pData: *const c_void
+ ) -> HRESULT,
+ fn SetPrivateDataInterface(&mut self, guid: REFGUID, pData: *const IUnknown) -> HRESULT
+}}
+ENUM!{enum D3D11_COMPARISON_FUNC {
+ D3D11_COMPARISON_NEVER = 1,
+ D3D11_COMPARISON_LESS = 2,
+ D3D11_COMPARISON_EQUAL = 3,
+ D3D11_COMPARISON_LESS_EQUAL = 4,
+ D3D11_COMPARISON_GREATER = 5,
+ D3D11_COMPARISON_NOT_EQUAL = 6,
+ D3D11_COMPARISON_GREATER_EQUAL = 7,
+ D3D11_COMPARISON_ALWAYS = 8,
+}}
+ENUM!{enum D3D11_DEPTH_WRITE_MASK {
+ D3D11_DEPTH_WRITE_MASK_ZERO = 0,
+ D3D11_DEPTH_WRITE_MASK_ALL = 1,
+}}
+ENUM!{enum D3D11_STENCIL_OP {
+ D3D11_STENCIL_OP_KEEP = 1,
+ D3D11_STENCIL_OP_ZERO = 2,
+ D3D11_STENCIL_OP_REPLACE = 3,
+ D3D11_STENCIL_OP_INCR_SAT = 4,
+ D3D11_STENCIL_OP_DECR_SAT = 5,
+ D3D11_STENCIL_OP_INVERT = 6,
+ D3D11_STENCIL_OP_INCR = 7,
+ D3D11_STENCIL_OP_DECR = 8,
+}}
+STRUCT!{struct D3D11_DEPTH_STENCILOP_DESC {
+ StencilFailOp: D3D11_STENCIL_OP,
+ StencilDepthFailOp: D3D11_STENCIL_OP,
+ StencilPassOp: D3D11_STENCIL_OP,
+ StencilFunc: D3D11_COMPARISON_FUNC,
+}}
+STRUCT!{struct D3D11_DEPTH_STENCIL_DESC {
+ DepthEnable: BOOL,
+ DepthWriteMask: D3D11_DEPTH_WRITE_MASK,
+ DepthFunc: D3D11_COMPARISON_FUNC,
+ StencilEnable: BOOL,
+ StencilReadMask: UINT8,
+ StencilWriteMask: UINT8,
+ FrontFace: D3D11_DEPTH_STENCILOP_DESC,
+ BackFace: D3D11_DEPTH_STENCILOP_DESC,
+}}
+RIDL!{interface ID3D11DepthStencilState(ID3D11DepthStencilStateVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_DEPTH_STENCIL_DESC) -> ()
+}}
+ENUM!{enum D3D11_BLEND {
+ D3D11_BLEND_ZERO = 1,
+ D3D11_BLEND_ONE = 2,
+ D3D11_BLEND_SRC_COLOR = 3,
+ D3D11_BLEND_INV_SRC_COLOR = 4,
+ D3D11_BLEND_SRC_ALPHA = 5,
+ D3D11_BLEND_INV_SRC_ALPHA = 6,
+ D3D11_BLEND_DEST_ALPHA = 7,
+ D3D11_BLEND_INV_DEST_ALPHA = 8,
+ D3D11_BLEND_DEST_COLOR = 9,
+ D3D11_BLEND_INV_DEST_COLOR = 10,
+ D3D11_BLEND_SRC_ALPHA_SAT = 11,
+ D3D11_BLEND_BLEND_FACTOR = 14,
+ D3D11_BLEND_INV_BLEND_FACTOR = 15,
+ D3D11_BLEND_SRC1_COLOR = 16,
+ D3D11_BLEND_INV_SRC1_COLOR = 17,
+ D3D11_BLEND_SRC1_ALPHA = 18,
+ D3D11_BLEND_INV_SRC1_ALPHA = 19,
+}}
+ENUM!{enum D3D11_BLEND_OP {
+ D3D11_BLEND_OP_ADD = 1,
+ D3D11_BLEND_OP_SUBTRACT = 2,
+ D3D11_BLEND_OP_REV_SUBTRACT = 3,
+ D3D11_BLEND_OP_MIN = 4,
+ D3D11_BLEND_OP_MAX = 5,
+}}
+FLAGS!{enum D3D11_COLOR_WRITE_ENABLE {
+ D3D11_COLOR_WRITE_ENABLE_RED = 1,
+ D3D11_COLOR_WRITE_ENABLE_GREEN = 2,
+ D3D11_COLOR_WRITE_ENABLE_BLUE = 4,
+ D3D11_COLOR_WRITE_ENABLE_ALPHA = 8,
+ D3D11_COLOR_WRITE_ENABLE_ALL = D3D11_COLOR_WRITE_ENABLE_RED.0 | D3D11_COLOR_WRITE_ENABLE_GREEN.0 |
+ D3D11_COLOR_WRITE_ENABLE_BLUE.0 | D3D11_COLOR_WRITE_ENABLE_ALPHA.0,
+}}
+STRUCT!{struct D3D11_RENDER_TARGET_BLEND_DESC {
+ BlendEnable: BOOL,
+ SrcBlend: D3D11_BLEND,
+ DestBlend: D3D11_BLEND,
+ BlendOp: D3D11_BLEND_OP,
+ SrcBlendAlpha: D3D11_BLEND,
+ DestBlendAlpha: D3D11_BLEND,
+ BlendOpAlpha: D3D11_BLEND_OP,
+ RenderTargetWriteMask: UINT8,
+}}
+STRUCT!{struct D3D11_BLEND_DESC {
+ AlphaToCoverageEnable: BOOL,
+ IndependentBlendEnable: BOOL,
+ RenderTarget: [D3D11_RENDER_TARGET_BLEND_DESC; 8],
+}}
+RIDL!{interface ID3D11BlendState(ID3D11BlendStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_BLEND_DESC) -> ()
+}}
+STRUCT!{struct D3D11_RASTERIZER_DESC {
+ FillMode: D3D11_FILL_MODE,
+ CullMode: D3D11_CULL_MODE,
+ FrontCounterClockwise: BOOL,
+ DepthBias: INT,
+ DepthBiasClamp: FLOAT,
+ SlopeScaledDepthBias: FLOAT,
+ DepthClipEnable: BOOL,
+ ScissorEnable: BOOL,
+ MultisampleEnable: BOOL,
+ AntialiasedLineEnable: BOOL,
+}}
+RIDL!{interface ID3D11RasterizerState(ID3D11RasterizerStateVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_RASTERIZER_DESC) -> ()
+}}
+STRUCT!{struct D3D11_SUBRESOURCE_DATA {
+ pSysMem: *const c_void,
+ SysMemPitch: UINT,
+ SysMemSlicePitch: UINT,
+}}
+STRUCT!{struct D3D11_MAPPED_SUBRESOURCE {
+ pData: *mut c_void,
+ RowPitch: UINT,
+ DepthPitch: UINT,
+}}
+RIDL!{interface ID3D11Resource(ID3D11ResourceVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetType(&mut self, pResourceDimension: *mut D3D11_RESOURCE_DIMENSION) -> (),
+ fn SetEvictionPriority(&mut self, EvictionPriority: UINT) -> (),
+ fn GetEvictionPriority(&mut self) -> UINT
+}}
+STRUCT!{struct D3D11_BUFFER_DESC {
+ ByteWidth: UINT,
+ Usage: D3D11_USAGE,
+ BindFlags: UINT,
+ CPUAccessFlags: UINT,
+ MiscFlags: UINT,
+ StructureByteStride: UINT,
+}}
+RIDL!{interface ID3D11Buffer(ID3D11BufferVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_BUFFER_DESC) -> ()
+}}
+STRUCT!{struct D3D11_TEXTURE1D_DESC {
+ Width: UINT,
+ MipLevels: UINT,
+ ArraySize: UINT,
+ Format: DXGI_FORMAT,
+ Usage: D3D11_USAGE,
+ BindFlags: UINT,
+ CPUAccessFlags: UINT,
+ MiscFlags: UINT,
+}}
+RIDL!{interface ID3D11Texture1D(ID3D11Texture1DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_TEXTURE1D_DESC) -> ()
+}}
+STRUCT!{struct D3D11_TEXTURE2D_DESC {
+ Width: UINT,
+ Height: UINT,
+ MipLevels: UINT,
+ ArraySize: UINT,
+ Format: DXGI_FORMAT,
+ SampleDesc: DXGI_SAMPLE_DESC,
+ Usage: D3D11_USAGE,
+ BindFlags: UINT,
+ CPUAccessFlags: UINT,
+ MiscFlags: UINT,
+}}
+RIDL!{interface ID3D11Texture2D(ID3D11Texture2DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_TEXTURE2D_DESC) -> ()
+}}
+STRUCT!{struct D3D11_TEXTURE3D_DESC {
+ Width: UINT,
+ Height: UINT,
+ Depth: UINT,
+ MipLevels: UINT,
+ Format: DXGI_FORMAT,
+ Usage: D3D11_USAGE,
+ BindFlags: UINT,
+ CPUAccessFlags: UINT,
+ MiscFlags: UINT,
+}}
+RIDL!{interface ID3D11Texture3D(ID3D11Texture3DVtbl): ID3D11Resource(ID3D11ResourceVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_TEXTURE3D_DESC) -> ()
+}}
+ENUM!{enum D3D11_TEXTURECUBE_FACE {
+ D3D11_TEXTURECUBE_FACE_POSITIVE_X = 0,
+ D3D11_TEXTURECUBE_FACE_NEGATIVE_X = 1,
+ D3D11_TEXTURECUBE_FACE_POSITIVE_Y = 2,
+ D3D11_TEXTURECUBE_FACE_NEGATIVE_Y = 3,
+ D3D11_TEXTURECUBE_FACE_POSITIVE_Z = 4,
+ D3D11_TEXTURECUBE_FACE_NEGATIVE_Z = 5,
+}}
+RIDL!{interface ID3D11View(ID3D11ViewVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetResource(&mut self, ppResource: *mut *mut ID3D11Resource) -> ()
+}}
+STRUCT!{struct D3D11_BUFFER_SRV {
+ u1: UINT,
+ u2: UINT,
+}}
+UNION!{D3D11_BUFFER_SRV, u1, FirstElement, FirstElement_mut, UINT}
+UNION!{D3D11_BUFFER_SRV, u1, ElementOffset, ElementOffset_mut, UINT}
+UNION!{D3D11_BUFFER_SRV, u2, NumElements, NumElements_mut, UINT}
+UNION!{D3D11_BUFFER_SRV, u2, ElementWidth, ElementWidth_mut, UINT}
+FLAGS!{enum D3D11_BUFFEREX_SRV_FLAG {
+ D3D11_BUFFEREX_SRV_FLAG_RAW = 0x1,
+}}
+STRUCT!{struct D3D11_BUFFEREX_SRV {
+ FirstElement: UINT,
+ NumElements: UINT,
+ Flags: UINT,
+}}
+STRUCT!{struct D3D11_TEX1D_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+}}
+STRUCT!{struct D3D11_TEX1D_ARRAY_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_ARRAY_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX3D_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+}}
+STRUCT!{struct D3D11_TEXCUBE_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+}}
+STRUCT!{struct D3D11_TEXCUBE_ARRAY_SRV {
+ MostDetailedMip: UINT,
+ MipLevels: UINT,
+ First2DArrayFace: UINT,
+ NumCubes: UINT,
+}}
+STRUCT!{struct D3D11_TEX2DMS_SRV {
+ UnusedField_NothingToDefine: UINT,
+}}
+STRUCT!{struct D3D11_TEX2DMS_ARRAY_SRV {
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_SHADER_RESOURCE_VIEW_DESC {
+ Format: DXGI_FORMAT,
+ ViewDimension: D3D11_SRV_DIMENSION,
+ u: [UINT; 4],
+}}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Buffer, Buffer_mut, D3D11_BUFFER_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ D3D11_TEX1D_ARRAY_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ D3D11_TEX2D_ARRAY_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, D3D11_TEX2DMS_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
+ D3D11_TEX2DMS_ARRAY_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, Texture3D, Texture3D_mut, D3D11_TEX3D_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, TextureCube, TextureCube_mut, D3D11_TEXCUBE_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, TextureCubeArray, TextureCubeArray_mut,
+ D3D11_TEXCUBE_ARRAY_SRV}
+UNION!{D3D11_SHADER_RESOURCE_VIEW_DESC, u, BufferEx, BufferEx_mut, D3D11_BUFFEREX_SRV}
+RIDL!{interface ID3D11ShaderResourceView(ID3D11ShaderResourceViewVtbl): ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_SHADER_RESOURCE_VIEW_DESC) -> ()
+}}
+STRUCT!{struct D3D11_BUFFER_RTV {
+ u1: UINT,
+ u2: UINT,
+}}
+UNION!{D3D11_BUFFER_RTV, u1, FirstElement, FirstElement_mut, UINT}
+UNION!{D3D11_BUFFER_RTV, u1, ElementOffset, ElementOffset_mut, UINT}
+UNION!{D3D11_BUFFER_RTV, u2, NumElements, NumElements_mut, UINT}
+UNION!{D3D11_BUFFER_RTV, u2, ElementWidth, ElementWidth_mut, UINT}
+STRUCT!{struct D3D11_TEX1D_RTV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX1D_ARRAY_RTV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_RTV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX2DMS_RTV {
+ UnusedField_NothingToDefine: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_ARRAY_RTV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX2DMS_ARRAY_RTV {
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX3D_RTV {
+ MipSlice: UINT,
+ FirstWSlice: UINT,
+ WSize: UINT,
+}}
+STRUCT!{struct D3D11_RENDER_TARGET_VIEW_DESC {
+ Format: DXGI_FORMAT,
+ ViewDimension: D3D11_RTV_DIMENSION,
+ u: [UINT; 3],
+}}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Buffer, Buffer_mut, D3D11_BUFFER_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ D3D11_TEX1D_ARRAY_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ D3D11_TEX2D_ARRAY_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, D3D11_TEX2DMS_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture2DMSArray,Texture2DMSArray_mut,
+ D3D11_TEX2DMS_ARRAY_RTV}
+UNION!{D3D11_RENDER_TARGET_VIEW_DESC, u, Texture3D, Texture3D_mut, D3D11_TEX3D_RTV}
+RIDL!{interface ID3D11RenderTargetView(ID3D11RenderTargetViewVtbl): ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_RENDER_TARGET_VIEW_DESC) -> ()
+}}
+STRUCT!{struct D3D11_TEX1D_DSV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX1D_ARRAY_DSV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_DSV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_ARRAY_DSV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX2DMS_DSV {
+ UnusedField_NothingToDefine: UINT,
+}}
+STRUCT!{struct D3D11_TEX2DMS_ARRAY_DSV {
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+FLAGS!{enum D3D11_DSV_FLAG{
+ D3D11_DSV_READ_ONLY_DEPTH = 0x1,
+ D3D11_DSV_READ_ONLY_STENCIL = 0x2,
+}}
+STRUCT!{struct D3D11_DEPTH_STENCIL_VIEW_DESC {
+ Format: DXGI_FORMAT,
+ ViewDimension: D3D11_DSV_DIMENSION,
+ Flags: UINT,
+ u: [UINT; 3],
+}}
+UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_DSV}
+UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ D3D11_TEX1D_ARRAY_DSV}
+UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_DSV}
+UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ D3D11_TEX2D_ARRAY_DSV}
+UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, D3D11_TEX2DMS_DSV}
+UNION!{D3D11_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
+ D3D11_TEX2DMS_ARRAY_DSV}
+RIDL!{interface ID3D11DepthStencilView(ID3D11DepthStencilViewVtbl): ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_DEPTH_STENCIL_VIEW_DESC) -> ()
+}}
+FLAGS!{enum D3D11_BUFFER_UAV_FLAG {
+ D3D11_BUFFER_UAV_FLAG_RAW = 0x1,
+ D3D11_BUFFER_UAV_FLAG_APPEND = 0x2,
+ D3D11_BUFFER_UAV_FLAG_COUNTER = 0x4,
+}}
+STRUCT!{struct D3D11_BUFFER_UAV {
+ FirstElement: UINT,
+ NumElements: UINT,
+ Flags: UINT,
+}}
+STRUCT!{struct D3D11_TEX1D_UAV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX1D_ARRAY_UAV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_UAV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_ARRAY_UAV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_TEX3D_UAV {
+ MipSlice: UINT,
+ FirstWSlice: UINT,
+ WSize: UINT,
+}}
+STRUCT!{struct D3D11_UNORDERED_ACCESS_VIEW_DESC {
+ Format: DXGI_FORMAT,
+ ViewDimension: D3D11_UAV_DIMENSION,
+ u: [UINT; 3],
+}}
+UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Buffer, Buffer_mut, D3D11_BUFFER_UAV}
+UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture1D, Texture1D_mut, D3D11_TEX1D_UAV}
+UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ D3D11_TEX1D_ARRAY_UAV}
+UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_UAV}
+UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ D3D11_TEX2D_ARRAY_UAV}
+UNION!{D3D11_UNORDERED_ACCESS_VIEW_DESC, u, Texture3D, Texture3D_mut, D3D11_TEX3D_UAV}
+RIDL!{interface ID3D11UnorderedAccessView(ID3D11UnorderedAccessViewVtbl): ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_UNORDERED_ACCESS_VIEW_DESC) -> ()
+}}
+RIDL!{interface ID3D11VertexShader(ID3D11VertexShaderVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+RIDL!{interface ID3D11HullShader(ID3D11HullShaderVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+RIDL!{interface ID3D11DomainShader(ID3D11DomainShaderVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+RIDL!{interface ID3D11GeometryShader(ID3D11GeometryShaderVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+RIDL!{interface ID3D11PixelShader(ID3D11PixelShaderVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+RIDL!{interface ID3D11ComputeShader(ID3D11ComputeShaderVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+RIDL!{interface ID3D11InputLayout(ID3D11InputLayoutVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
+ENUM!{enum D3D11_FILTER {
+ D3D11_FILTER_MIN_MAG_MIP_POINT = 0,
+ D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
+ D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
+ D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
+ D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
+ D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
+ D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
+ D3D11_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
+ D3D11_FILTER_ANISOTROPIC = 0x55,
+ D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
+ D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
+ D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
+ D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
+ D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
+ D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
+ D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
+ D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
+ D3D11_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
+ D3D11_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
+ D3D11_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
+ D3D11_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
+ D3D11_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
+ D3D11_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
+ D3D11_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
+ D3D11_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
+ D3D11_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
+ D3D11_FILTER_MINIMUM_ANISOTROPIC = 0x155,
+ D3D11_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
+ D3D11_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
+ D3D11_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
+ D3D11_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
+ D3D11_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
+ D3D11_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
+ D3D11_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
+ D3D11_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
+ D3D11_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
+}}
+ENUM!{enum D3D11_FILTER_TYPE {
+ D3D11_FILTER_TYPE_POINT = 0,
+ D3D11_FILTER_TYPE_LINEAR = 1,
+}}
+ENUM!{enum D3D11_FILTER_REDUCTION_TYPE {
+ D3D11_FILTER_REDUCTION_TYPE_STANDARD = 0,
+ D3D11_FILTER_REDUCTION_TYPE_COMPARISON = 1,
+ D3D11_FILTER_REDUCTION_TYPE_MINIMUM = 2,
+ D3D11_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
+}}
+pub const D3D11_FILTER_REDUCTION_TYPE_MASK: DWORD = 0x3;
+pub const D3D11_FILTER_REDUCTION_TYPE_SHIFT: DWORD = 7;
+pub const D3D11_FILTER_TYPE_MASK: DWORD = 0x3;
+pub const D3D11_MIN_FILTER_SHIFT: DWORD = 4;
+pub const D3D11_MAG_FILTER_SHIFT: DWORD = 2;
+pub const D3D11_MIP_FILTER_SHIFT: DWORD = 0;
+pub const D3D11_COMPARISON_FILTERING_BIT: DWORD = 0x80;
+pub const D3D11_ANISOTROPIC_FILTERING_BIT: DWORD = 0x40;
+ENUM!{enum D3D11_TEXTURE_ADDRESS_MODE {
+ D3D11_TEXTURE_ADDRESS_WRAP = 1,
+ D3D11_TEXTURE_ADDRESS_MIRROR = 2,
+ D3D11_TEXTURE_ADDRESS_CLAMP = 3,
+ D3D11_TEXTURE_ADDRESS_BORDER = 4,
+ D3D11_TEXTURE_ADDRESS_MIRROR_ONCE = 5,
+}}
+STRUCT!{struct D3D11_SAMPLER_DESC {
+ Filter: D3D11_FILTER,
+ AddressU: D3D11_TEXTURE_ADDRESS_MODE,
+ AddressV: D3D11_TEXTURE_ADDRESS_MODE,
+ AddressW: D3D11_TEXTURE_ADDRESS_MODE,
+ MipLODBias: FLOAT,
+ MaxAnisotropy: UINT,
+ ComparisonFunc: D3D11_COMPARISON_FUNC,
+ BorderColor: [FLOAT; 4],
+ MinLOD: FLOAT,
+ MaxLOD: FLOAT,
+}}
+RIDL!{interface ID3D11SamplerState(ID3D11SamplerStateVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_SAMPLER_DESC) -> ()
+}}
+FLAGS!{enum D3D11_FORMAT_SUPPORT {
+ D3D11_FORMAT_SUPPORT_BUFFER = 0x1,
+ D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER = 0x2,
+ D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER = 0x4,
+ D3D11_FORMAT_SUPPORT_SO_BUFFER = 0x8,
+ D3D11_FORMAT_SUPPORT_TEXTURE1D = 0x10,
+ D3D11_FORMAT_SUPPORT_TEXTURE2D = 0x20,
+ D3D11_FORMAT_SUPPORT_TEXTURE3D = 0x40,
+ D3D11_FORMAT_SUPPORT_TEXTURECUBE = 0x80,
+ D3D11_FORMAT_SUPPORT_SHADER_LOAD = 0x100,
+ D3D11_FORMAT_SUPPORT_SHADER_SAMPLE = 0x200,
+ D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON = 0x400,
+ D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT = 0x800,
+ D3D11_FORMAT_SUPPORT_MIP = 0x1000,
+ D3D11_FORMAT_SUPPORT_MIP_AUTOGEN = 0x2000,
+ D3D11_FORMAT_SUPPORT_RENDER_TARGET = 0x4000,
+ D3D11_FORMAT_SUPPORT_BLENDABLE = 0x8000,
+ D3D11_FORMAT_SUPPORT_DEPTH_STENCIL = 0x10000,
+ D3D11_FORMAT_SUPPORT_CPU_LOCKABLE = 0x20000,
+ D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE = 0x40000,
+ D3D11_FORMAT_SUPPORT_DISPLAY = 0x80000,
+ D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000,
+ D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET = 0x200000,
+ D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD = 0x400000,
+ D3D11_FORMAT_SUPPORT_SHADER_GATHER = 0x800000,
+ D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST = 0x1000000,
+ D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
+ D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON = 0x4000000,
+ D3D11_FORMAT_SUPPORT_DECODER_OUTPUT = 0x8000000,
+ D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
+ D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT = 0x20000000,
+ D3D11_FORMAT_SUPPORT_VIDEO_ENCODER = 0x40000000,
+}}
+FLAGS!{enum D3D11_FORMAT_SUPPORT2 {
+ D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
+ D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
+ D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
+ D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
+ D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
+ D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
+ D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
+ D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
+ D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
+ D3D11_FORMAT_SUPPORT2_TILED = 0x200,
+ D3D11_FORMAT_SUPPORT2_SHAREABLE = 0x400,
+ D3D11_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
+}}
+RIDL!{interface ID3D11Asynchronous(ID3D11AsynchronousVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetDataSize(&mut self) -> UINT
+}}
+FLAGS!{enum D3D11_ASYNC_GETDATA_FLAG {
+ D3D11_ASYNC_GETDATA_DONOTFLUSH = 0x1,
+}}
+ENUM!{enum D3D11_QUERY {
+ D3D11_QUERY_EVENT = 0,
+ D3D11_QUERY_OCCLUSION = D3D11_QUERY_EVENT.0 + 1,
+ D3D11_QUERY_TIMESTAMP = D3D11_QUERY_OCCLUSION.0 + 1,
+ D3D11_QUERY_TIMESTAMP_DISJOINT = D3D11_QUERY_TIMESTAMP.0 + 1,
+ D3D11_QUERY_PIPELINE_STATISTICS = D3D11_QUERY_TIMESTAMP_DISJOINT.0 + 1,
+ D3D11_QUERY_OCCLUSION_PREDICATE = D3D11_QUERY_PIPELINE_STATISTICS.0 + 1,
+ D3D11_QUERY_SO_STATISTICS = D3D11_QUERY_OCCLUSION_PREDICATE.0 + 1,
+ D3D11_QUERY_SO_OVERFLOW_PREDICATE = D3D11_QUERY_SO_STATISTICS.0 + 1,
+ D3D11_QUERY_SO_STATISTICS_STREAM0 = D3D11_QUERY_SO_OVERFLOW_PREDICATE.0 + 1,
+ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 = D3D11_QUERY_SO_STATISTICS_STREAM0.0 + 1,
+ D3D11_QUERY_SO_STATISTICS_STREAM1 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0.0 + 1,
+ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 = D3D11_QUERY_SO_STATISTICS_STREAM1.0 + 1,
+ D3D11_QUERY_SO_STATISTICS_STREAM2 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1.0 + 1,
+ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 = D3D11_QUERY_SO_STATISTICS_STREAM2.0 + 1,
+ D3D11_QUERY_SO_STATISTICS_STREAM3 = D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2.0 + 1,
+ D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 = D3D11_QUERY_SO_STATISTICS_STREAM3.0 + 1,
+}}
+FLAGS!{enum D3D11_QUERY_MISC_FLAG {
+ D3D11_QUERY_MISC_PREDICATEHINT = 0x1,
+}}
+STRUCT!{struct D3D11_QUERY_DESC {
+ Query: D3D11_QUERY,
+ MiscFlags: UINT,
+}}
+RIDL!{interface ID3D11Query(ID3D11QueryVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_QUERY_DESC) -> ()
+}}
+RIDL!{interface ID3D11Predicate(ID3D11PredicateVtbl): ID3D11Query(ID3D11QueryVtbl) {}}
+STRUCT!{struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
+ Frequency: UINT64,
+ Disjoint: BOOL,
+}}
+STRUCT!{struct D3D11_QUERY_DATA_PIPELINE_STATISTICS {
+ IAVertices: UINT64,
+ IAPrimitives: UINT64,
+ VSInvocations: UINT64,
+ GSInvocations: UINT64,
+ GSPrimitives: UINT64,
+ CInvocations: UINT64,
+ CPrimitives: UINT64,
+ PSInvocations: UINT64,
+ HSInvocations: UINT64,
+ DSInvocations: UINT64,
+ CSInvocations: UINT64,
+}}
+STRUCT!{struct D3D11_QUERY_DATA_SO_STATISTICS {
+ NumPrimitivesWritten: UINT64,
+ PrimitivesStorageNeeded: UINT64,
+}}
+FLAGS!{enum D3D11_COUNTER {
+ D3D11_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000,
+}}
+ENUM!{enum D3D11_COUNTER_TYPE {
+ D3D11_COUNTER_TYPE_FLOAT32 = 0,
+ D3D11_COUNTER_TYPE_UINT16 = D3D11_COUNTER_TYPE_FLOAT32.0 + 1,
+ D3D11_COUNTER_TYPE_UINT32 = D3D11_COUNTER_TYPE_UINT16.0 + 1,
+ D3D11_COUNTER_TYPE_UINT64 = D3D11_COUNTER_TYPE_UINT32.0 + 1,
+}}
+STRUCT!{struct D3D11_COUNTER_DESC {
+ Counter: D3D11_COUNTER,
+ MiscFlags: UINT,
+}}
+STRUCT!{struct D3D11_COUNTER_INFO {
+ LastDeviceDependentCounter: D3D11_COUNTER,
+ NumSimultaneousCounters: UINT,
+ NumDetectableParallelUnits: UINT8,
+}}
+RIDL!{interface ID3D11Counter(ID3D11CounterVtbl): ID3D11Asynchronous(ID3D11AsynchronousVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_COUNTER_DESC) -> ()
+}}
+ENUM!{enum D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS {
+ D3D11_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
+ D3D11_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe,
+}}
+ENUM!{enum D3D11_DEVICE_CONTEXT_TYPE {
+ D3D11_DEVICE_CONTEXT_IMMEDIATE = 0,
+ D3D11_DEVICE_CONTEXT_DEFERRED = D3D11_DEVICE_CONTEXT_IMMEDIATE.0 + 1,
+}}
+STRUCT!{struct D3D11_CLASS_INSTANCE_DESC {
+ InstanceId: UINT,
+ InstanceIndex: UINT,
+ TypeId: UINT,
+ ConstantBuffer: UINT,
+ BaseConstantBufferOffset: UINT,
+ BaseTexture: UINT,
+ BaseSampler: UINT,
+ Created: BOOL,
+}}
+RIDL!{interface ID3D11ClassInstance(ID3D11ClassInstanceVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetClassLinkage(&mut self, ppLinkage: *mut *mut ID3D11ClassLinkage) -> (),
+ fn GetDesc(&mut self, pDesc: *mut D3D11_CLASS_INSTANCE_DESC) -> (),
+ fn GetInstanceName(&mut self, pInstanceName: LPSTR, pBufferLength: *mut SIZE_T) -> (),
+ fn GetTypeName(&mut self, pTypeName: LPSTR, pBufferLength: *mut SIZE_T) -> ()
+}}
+RIDL!{interface ID3D11ClassLinkage(ID3D11ClassLinkageVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetClassInstance(
+ &mut self, GetClassInstance: LPCSTR, InstanceIndex: UINT,
+ ppInstance: *mut *mut ID3D11ClassInstance
+ ) -> HRESULT,
+ fn CreateClassInstance(
+ &mut self, pClassTypeName: LPCSTR, ConstantBufferOffset: UINT, ConstantVectorOffset: UINT, TextureOffset: UINT, SamplerOffset: UINT, ppInstance: *mut *mut ID3D11ClassInstance
+ ) -> HRESULT
+}}
+RIDL!{interface ID3D11CommandList(ID3D11CommandListVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetContextFlags(&mut self) -> UINT
+}}
+ENUM!{enum D3D11_FEATURE {
+ D3D11_FEATURE_THREADING = 0,
+ D3D11_FEATURE_DOUBLES = D3D11_FEATURE_THREADING.0 + 1,
+ D3D11_FEATURE_FORMAT_SUPPORT = D3D11_FEATURE_DOUBLES.0 + 1,
+ D3D11_FEATURE_FORMAT_SUPPORT2 = D3D11_FEATURE_FORMAT_SUPPORT.0 + 1,
+ D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS = D3D11_FEATURE_FORMAT_SUPPORT2.0 + 1,
+ D3D11_FEATURE_D3D11_OPTIONS = D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS.0 + 1,
+ D3D11_FEATURE_ARCHITECTURE_INFO = D3D11_FEATURE_D3D11_OPTIONS.0 + 1,
+ D3D11_FEATURE_D3D9_OPTIONS = D3D11_FEATURE_ARCHITECTURE_INFO.0 + 1,
+ D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT = D3D11_FEATURE_D3D9_OPTIONS.0 + 1,
+ D3D11_FEATURE_D3D9_SHADOW_SUPPORT = D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT.0 + 1,
+ D3D11_FEATURE_D3D11_OPTIONS1 = D3D11_FEATURE_D3D9_SHADOW_SUPPORT.0 + 1,
+ D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT = D3D11_FEATURE_D3D11_OPTIONS1.0 + 1,
+ D3D11_FEATURE_MARKER_SUPPORT = D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT.0 + 1,
+ D3D11_FEATURE_D3D9_OPTIONS1 = D3D11_FEATURE_MARKER_SUPPORT.0 + 1,
+ D3D11_FEATURE_D3D11_OPTIONS2 = D3D11_FEATURE_D3D9_OPTIONS1.0 + 1,
+ D3D11_FEATURE_D3D11_OPTIONS3 = D3D11_FEATURE_D3D11_OPTIONS2.0 + 1,
+ D3D11_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = D3D11_FEATURE_D3D11_OPTIONS3.0 + 1,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_THREADING {
+ DriverConcurrentCreates: BOOL,
+ DriverCommandLists: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_DOUBLES {
+ DoublePrecisionFloatShaderOps: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
+ InFormat: DXGI_FORMAT,
+ OutFormatSupport: UINT,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2 {
+ InFormat: DXGI_FORMAT,
+ OutFormatSupport2: UINT,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS {
+ ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS {
+ OutputMergerLogicOp: BOOL,
+ UAVOnlyRenderingForcedSampleCount: BOOL,
+ DiscardAPIsSeenByDriver: BOOL,
+ FlagsForUpdateAndCopySeenByDriver: BOOL,
+ ClearView: BOOL,
+ CopyWithOverlap: BOOL,
+ ConstantBufferPartialUpdate: BOOL,
+ ConstantBufferOffsetting: BOOL,
+ MapNoOverwriteOnDynamicConstantBuffer: BOOL,
+ MapNoOverwriteOnDynamicBufferSRV: BOOL,
+ MultisampleRTVWithForcedSampleCountOne: BOOL,
+ SAD4ShaderInstructions: BOOL,
+ ExtendedDoublesShaderInstructions: BOOL,
+ ExtendedResourceSharing: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_ARCHITECTURE_INFO {
+ TileBasedDeferredRenderer: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS {
+ FullNonPow2TextureSupport: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT {
+ SupportsDepthAsTextureWithLessEqualComparisonFilter: BOOL,
+}}
+FLAGS!{enum D3D11_SHADER_MIN_PRECISION_SUPPORT {
+ D3D11_SHADER_MIN_PRECISION_10_BIT = 0x1,
+ D3D11_SHADER_MIN_PRECISION_16_BIT = 0x2,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT {
+ PixelShaderMinPrecision: UINT,
+ AllOtherShaderStagesMinPrecision: UINT,
+}}
+ENUM!{enum D3D11_TILED_RESOURCES_TIER {
+ D3D11_TILED_RESOURCES_NOT_SUPPORTED = 0,
+ D3D11_TILED_RESOURCES_TIER_1 = 1,
+ D3D11_TILED_RESOURCES_TIER_2 = 2,
+ D3D11_TILED_RESOURCES_TIER_3 = 3,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS1 {
+ TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
+ MinMaxFiltering: BOOL,
+ ClearViewAlsoSupportsDepthOnlyFormats: BOOL,
+ MapOnDefaultBuffers: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT {
+ SimpleInstancingSupported: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_MARKER_SUPPORT {
+ Profile: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D9_OPTIONS1 {
+ FullNonPow2TextureSupported: BOOL,
+ DepthAsTextureWithLessEqualComparisonFilterSupported: BOOL,
+ SimpleInstancingSupported: BOOL,
+ TextureCubeFaceRenderTargetWithNonCubeDepthStencilSupported: BOOL,
+}}
+ENUM!{enum D3D11_CONSERVATIVE_RASTERIZATION_TIER {
+ D3D11_CONSERVATIVE_RASTERIZATION_NOT_SUPPORTED = 0,
+ D3D11_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
+ D3D11_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
+ D3D11_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS2 {
+ PSSpecifiedStencilRefSupported: BOOL,
+ TypedUAVLoadAdditionalFormats: BOOL,
+ ROVsSupported: BOOL,
+ ConservativeRasterizationTier: D3D11_CONSERVATIVE_RASTERIZATION_TIER,
+ TiledResourcesTier: D3D11_TILED_RESOURCES_TIER,
+ MapOnDefaultTextures: BOOL,
+ StandardSwizzle: BOOL,
+ UnifiedMemoryArchitecture: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_D3D11_OPTIONS3 {
+ VPAndRTArrayIndexFromAnyShaderFeedingRasterizer: BOOL,
+}}
+STRUCT!{struct D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
+ MaxGPUVirtualAddressBitsPerResource: UINT,
+ MaxGPUVirtualAddressBitsPerProcess: UINT,
+}}
+RIDL!{interface ID3D11DeviceContext(ID3D11DeviceContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn VSSetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
+ ) -> (),
+ fn PSSetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn PSSetShader(
+ &mut self, pPixelShader: *mut ID3D11PixelShader,
+ ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
+ ) -> (),
+ fn PSSetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
+ ) -> (),
+ fn VSSetShader(
+ &mut self, pVertexShader: *mut ID3D11VertexShader,
+ ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
+ ) -> (),
+ fn DrawIndexed(
+ &mut self, IndexCount: UINT, StartIndexLocation: UINT, BaseVertexLocation: INT
+ ) -> (),
+ fn Draw(&mut self, VertexCount: UINT, StartVertexLocation: UINT) -> (),
+ fn Map(
+ &mut self, pResource: *mut ID3D11Resource, Subresource: UINT, MapType: D3D11_MAP,
+ MapFlags: UINT, pMappedResource: *mut D3D11_MAPPED_SUBRESOURCE
+ ) -> HRESULT,
+ fn Unmap(&mut self, pResource: *mut ID3D11Resource, Subresource: UINT) -> (),
+ fn PSSetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
+ ) -> (),
+ fn IASetInputLayout(&mut self, pInputLayout: *mut ID3D11InputLayout) -> (),
+ fn IASetVertexBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppVertexBuffers: *const *mut ID3D11Buffer,
+ pStrides: *const UINT, pOffsets: *const UINT
+ ) -> (),
+ fn IASetIndexBuffer(
+ &mut self, pIndexBuffer: *mut ID3D11Buffer, Format: DXGI_FORMAT, Offset: UINT
+ ) -> (),
+ fn DrawIndexedInstanced(
+ &mut self, IndexCountPerInstance: UINT, InstanceCount: UINT, StartIndexLocation: UINT,
+ BaseVertexLocation: INT, StartInstanceLocation: UINT
+ ) -> (),
+ fn DrawInstanced(
+ &mut self, VertexCountPerInstance: UINT, InstanceCount: UINT, StartVertexLocation: UINT,
+ StartInstanceLocation: UINT
+ ) -> (),
+ fn GSSetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
+ ) -> (),
+ fn GSSetShader(
+ &mut self, pShader: *mut ID3D11GeometryShader,
+ ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
+ ) -> (),
+ fn IASetPrimitiveTopology(&mut self, Topology: D3D11_PRIMITIVE_TOPOLOGY) -> (),
+ fn VSSetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn VSSetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
+ ) -> (),
+ fn Begin(&mut self, pAsync: *mut ID3D11Asynchronous) -> (),
+ fn End(&mut self, pAsync: *mut ID3D11Asynchronous) -> (),
+ fn GetData(
+ &mut self, pAsync: *mut ID3D11Asynchronous, pData: *mut c_void, DataSize: UINT,
+ GetDataFlags: UINT
+ ) -> HRESULT,
+ fn SetPredication(
+ &mut self, pPredicate: *mut ID3D11Predicate, PredicateValue: BOOL
+ ) -> (),
+ fn GSSetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn GSSetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
+ ) -> (),
+ fn OMSetRenderTargets(
+ &mut self, NumViews: UINT, ppRenderTargetViews: *const *mut ID3D11RenderTargetView,
+ pDepthStencilView: *mut ID3D11DepthStencilView
+ ) -> (),
+ fn OMSetRenderTargetsAndUnorderedAccessViews(
+ &mut self, NumRTVs: UINT, ppRenderTargetViews: *const *mut ID3D11RenderTargetView,
+ pDepthStencilView: *mut ID3D11DepthStencilView, UAVStartSlot: UINT, NumUAVs: UINT,
+ ppUnorderedAccessViews: *const *mut ID3D11UnorderedAccessView,
+ pUAVInitialCounts: *const UINT
+ ) -> (),
+ fn OMSetBlendState(
+ &mut self, pBlendState: *mut ID3D11BlendState, BlendFactor: &[FLOAT; 4], SampleMask: UINT
+ ) -> (),
+ fn OMSetDepthStencilState(
+ &mut self, pDepthStencilState: *mut ID3D11DepthStencilState, StencilRef: UINT
+ ) -> (),
+ fn SOSetTargets(
+ &mut self, NumBuffers: UINT, ppSOTargets: *const *mut ID3D11Buffer, pOffsets: *const UINT
+ ) -> (),
+ fn DrawAuto(&mut self) -> (),
+ fn DrawIndexedInstancedIndirect(
+ &mut self, pBufferForArgs: *mut ID3D11Buffer, AlignedByteOffsetForArgs: UINT
+ ) -> (),
+ fn DrawInstancedIndirect(
+ &mut self, pBufferForArgs: *mut ID3D11Buffer, AlignedByteOffsetForArgs: UINT
+ ) -> (),
+ fn Dispatch(
+ &mut self, ThreadGroupCountX: UINT, ThreadGroupCountY: UINT, ThreadGroupCountZ: UINT
+ ) -> (),
+ fn DispatchIndirect(
+ &mut self, pBufferForArgs: *mut ID3D11Buffer, AlignedByteOffsetForArgs: UINT
+ ) -> (),
+ fn RSSetState(&mut self, pRasterizerState: *mut ID3D11RasterizerState) -> (),
+ fn RSSetViewports(&mut self, NumViewports: UINT, pViewports: *const D3D11_VIEWPORT) -> (),
+ fn RSSetScissorRects(&mut self, NumRects: UINT, pRects: *const D3D11_RECT) -> (),
+ fn CopySubresourceRegion(
+ &mut self, pDstResource: *mut ID3D11Resource, DstSubresource: UINT, DstX: UINT, DstY: UINT,
+ DstZ: UINT, pSrcResource: *mut ID3D11Resource, SrcSubresource: UINT,
+ pSrcBox: *const D3D11_BOX
+ ) -> (),
+ fn CopyResource(
+ &mut self, pDstResource: *mut ID3D11Resource, pSrcResource: *mut ID3D11Resource
+ ) -> (),
+ fn UpdateSubresource(
+ &mut self, pDstResource: *mut ID3D11Resource, DstSubresource: UINT,
+ pDstBox: *const D3D11_BOX, pSrcData: *const c_void, SrcRowPitch: UINT, SrcDepthPitch: UINT
+ ) -> (),
+ fn CopyStructureCount(
+ &mut self, pDstBuffer: *mut ID3D11Buffer, DstAlignedByteOffset: UINT,
+ pSrcView: *mut ID3D11UnorderedAccessView
+ ) -> (),
+ fn ClearRenderTargetView(
+ &mut self, pRenderTargetView: *mut ID3D11RenderTargetView, ColorRGBA: &[FLOAT; 4]
+ ) -> (),
+ fn ClearUnorderedAccessViewUint(
+ &mut self, pUnorderedAccessView: *mut ID3D11UnorderedAccessView, Values: &[UINT; 4]
+ ) -> (),
+ fn ClearUnorderedAccessViewFloat(
+ &mut self, pUnorderedAccessView: *mut ID3D11UnorderedAccessView, Values: &[FLOAT; 4]
+ ) -> (),
+ fn ClearDepthStencilView(
+ &mut self, pDepthStencilView: *mut ID3D11DepthStencilView, ClearFlags: UINT, Depth: FLOAT,
+ Stencil: UINT8
+ ) -> (),
+ fn GenerateMips(&mut self, pShaderResourceView: *mut ID3D11ShaderResourceView) -> (),
+ fn SetResourceMinLOD(&mut self, pResource: *mut ID3D11Resource, MinLOD: FLOAT) -> (),
+ fn GetResourceMinLOD(&mut self, pResource: *mut ID3D11Resource) -> FLOAT,
+ fn ResolveSubresource(
+ &mut self, pDstResource: *mut ID3D11Resource, DstSubresource: UINT,
+ pSrcResource: *mut ID3D11Resource, SrcSubresource: UINT, Format: DXGI_FORMAT
+ ) -> (),
+ fn ExecuteCommandList(
+ &mut self, pCommandList: *mut ID3D11CommandList,
+ RestoreContextState: BOOL
+ ) -> (),
+ fn HSSetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn HSSetShader(
+ &mut self, pHullShader: *mut ID3D11HullShader,
+ ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
+ ) -> (),
+ fn HSSetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
+ ) -> (),
+ fn HSSetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
+ ) -> (),
+ fn DSSetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn DSSetShader(
+ &mut self, pDomainShader: *mut ID3D11DomainShader,
+ ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
+ ) -> (),
+ fn DSSetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
+ ) -> (),
+ fn DSSetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
+ ) -> (),
+ fn CSSetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *const *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn CSSetUnorderedAccessViews(
+ &mut self, StartSlot: UINT, NumUAVs: UINT,
+ ppUnorderedAccessViews: *const *mut ID3D11UnorderedAccessView
+ ) -> (),
+ fn CSSetShader(
+ &mut self, pComputeShader: *mut ID3D11ComputeShader,
+ ppClassInstances: *const *mut ID3D11ClassInstance, NumClassInstances: UINT
+ ) -> (),
+ fn CSSetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *const *mut ID3D11SamplerState
+ ) -> (),
+ fn CSSetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *const *mut ID3D11Buffer
+ ) -> (),
+ fn VSGetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
+ ) -> (),
+ fn PSGetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn PSGetShader(
+ &mut self, ppPixelShader: *mut *mut ID3D11PixelShader,
+ ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
+ ) -> (),
+ fn PSGetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
+ ) -> (),
+ fn VSGetShader(
+ &mut self, ppVertexShader: *mut *mut ID3D11VertexShader,
+ ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
+ ) -> (),
+ fn PSGetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
+ ) -> (),
+ fn IAGetInputLayout(&mut self, ppInputLayout: *mut *mut ID3D11InputLayout) -> (),
+ fn IAGetVertexBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppVertexBuffers: *mut *mut ID3D11Buffer,
+ pStrides: *mut UINT, pOffsets: *mut UINT
+ ) -> (),
+ fn IAGetIndexBuffer(
+ &mut self, pIndexBuffer: *mut *mut ID3D11Buffer, Format: *mut DXGI_FORMAT,
+ Offset: *mut UINT
+ ) -> (),
+ fn GSGetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
+ ) -> (),
+ fn GSGetShader(
+ &mut self, ppGeometryShader: *mut *mut ID3D11GeometryShader,
+ ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
+ ) -> (),
+ fn IAGetPrimitiveTopology(&mut self, pTopology: *mut D3D11_PRIMITIVE_TOPOLOGY) -> (),
+ fn VSGetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn VSGetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
+ ) -> (),
+ fn GetPredication(
+ &mut self, ppPredicate: *mut *mut ID3D11Predicate, pPredicateValue: *mut BOOL
+ ) -> (),
+ fn GSGetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn GSGetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
+ ) -> (),
+ fn OMGetRenderTargets(
+ &mut self, NumViews: UINT, ppRenderTargetViews: *mut *mut ID3D11RenderTargetView,
+ ppDepthStencilView: *mut *mut ID3D11DepthStencilView
+ ) -> (),
+ fn OMGetRenderTargetsAndUnorderedAccessViews(
+ &mut self, NumRTVs: UINT, ppRenderTargetViews: *mut *mut ID3D11RenderTargetView,
+ ppDepthStencilView: *mut *mut ID3D11DepthStencilView, UAVStartSlot: UINT,
+ ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView
+ ) -> (),
+ fn OMGetBlendState(
+ &mut self, ppBlendState: *mut *mut ID3D11BlendState, BlendFactor: &mut [FLOAT; 4],
+ pSampleMask: *mut UINT
+ ) -> (),
+ fn OMGetDepthStencilState(
+ &mut self, ppDepthStencilState: *mut *mut ID3D11DepthStencilState, pStencilRef: *mut UINT
+ ) -> (),
+ fn SOGetTargets(&mut self, NumBuffers: UINT, ppSOTargets: *mut *mut ID3D11Buffer) -> (),
+ fn RSGetState(&mut self, ppRasterizerState: *mut *mut ID3D11RasterizerState) -> (),
+ fn RSGetViewports(&mut self, pNumViewports: *mut UINT, pViewports: *mut D3D11_VIEWPORT) -> (),
+ fn RSGetScissorRects(&mut self, pNumRects: *mut UINT, pRects: *mut D3D11_RECT) -> (),
+ fn HSGetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn HSGetShader(
+ &mut self, ppHullShader: *mut *mut ID3D11HullShader,
+ ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
+ ) -> (),
+ fn HSGetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
+ ) -> (),
+ fn HSGetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
+ ) -> (),
+ fn DSGetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn DSGetShader(
+ &mut self, ppDomainShader: *mut *mut ID3D11DomainShader,
+ ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
+ ) -> (),
+ fn DSGetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
+ ) -> (),
+ fn DSGetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
+ ) -> (),
+ fn CSGetShaderResources(
+ &mut self, StartSlot: UINT, NumViews: UINT,
+ ppShaderResourceViews: *mut *mut ID3D11ShaderResourceView
+ ) -> (),
+ fn CSGetUnorderedAccessViews(
+ &mut self, StartSlot: UINT, NumUAVs: UINT,
+ ppUnorderedAccessViews: *mut *mut ID3D11UnorderedAccessView
+ ) -> (),
+ fn CSGetShader(
+ &mut self, ppComputeShader: *mut *mut ID3D11ComputeShader,
+ ppClassInstances: *mut *mut ID3D11ClassInstance, pNumClassInstances: *mut UINT
+ ) -> (),
+ fn CSGetSamplers(
+ &mut self, StartSlot: UINT, NumSamplers: UINT, ppSamplers: *mut *mut ID3D11SamplerState
+ ) -> (),
+ fn CSGetConstantBuffers(
+ &mut self, StartSlot: UINT, NumBuffers: UINT, ppConstantBuffers: *mut *mut ID3D11Buffer
+ ) -> (),
+ fn ClearState(&mut self) -> (),
+ fn Flush(&mut self) -> (),
+ fn GetType(&mut self) -> D3D11_DEVICE_CONTEXT_TYPE,
+ fn GetContextFlags(&mut self) -> UINT,
+ fn FinishCommandList(
+ &mut self, RestoreDeferredContextState: BOOL, ppCommandList: *mut *mut ID3D11CommandList
+ ) -> HRESULT
+}}
+STRUCT!{struct D3D11_VIDEO_DECODER_DESC {
+ Guid: GUID,
+ SampleWidth: UINT,
+ SampleHeight: UINT,
+ OutputFormat: DXGI_FORMAT,
+}}
+STRUCT!{struct D3D11_VIDEO_DECODER_CONFIG {
+ guidConfigBitstreamEncryption: GUID,
+ guidConfigMBcontrolEncryption: GUID,
+ guidConfigResidDiffEncryption: GUID,
+ ConfigBitstreamRaw: UINT,
+ ConfigMBcontrolRasterOrder: UINT,
+ ConfigResidDiffHost: UINT,
+ ConfigSpatialResid8: UINT,
+ ConfigResid8Subtraction: UINT,
+ ConfigSpatialHost8or9Clipping: UINT,
+ ConfigSpatialResidInterleaved: UINT,
+ ConfigIntraResidUnsigned: UINT,
+ ConfigResidDiffAccelerator: UINT,
+ ConfigHostInverseScan: UINT,
+ ConfigSpecificIDCT: UINT,
+ Config4GroupedCoefs: UINT,
+ ConfigMinRenderTargetBuffCount: USHORT,
+ ConfigDecoderSpecific: USHORT,
+}}
+ENUM!{enum D3D11_VIDEO_DECODER_BUFFER_TYPE {
+ D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
+ D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
+ D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
+ D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
+ D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
+ D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
+ D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
+ D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
+ D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8,
+}}
+STRUCT!{struct D3D11_AES_CTR_IV {
+ IV: UINT64,
+ Count: UINT64,
+}}
+STRUCT!{struct D3D11_ENCRYPTED_BLOCK_INFO {
+ NumEncryptedBytesAtBeginning: UINT,
+ NumBytesInSkipPattern: UINT,
+ NumBytesInEncryptPattern: UINT,
+}}
+STRUCT!{struct D3D11_VIDEO_DECODER_BUFFER_DESC {
+ BufferType: D3D11_VIDEO_DECODER_BUFFER_TYPE,
+ BufferIndex: UINT,
+ DataOffset: UINT,
+ DataSize: UINT,
+ FirstMBaddress: UINT,
+ NumMBsInBuffer: UINT,
+ Width: UINT,
+ Height: UINT,
+ Stride: UINT,
+ ReservedBits: UINT,
+ pIV: *mut c_void,
+ IVSize: UINT,
+ PartialEncryption: BOOL,
+ EncryptedBlockInfo: D3D11_ENCRYPTED_BLOCK_INFO,
+}}
+STRUCT!{struct D3D11_VIDEO_DECODER_EXTENSION {
+ Function: UINT,
+ pPrivateInputData: *mut c_void,
+ PrivateInputDataSize: UINT,
+ pPrivateOutputData: *mut c_void,
+ PrivateOutputDataSize: UINT,
+ ResourceCount: UINT,
+ ppResourceList: *mut *mut ID3D11Resource,
+}}
+RIDL!{interface ID3D11VideoDecoder(ID3D11VideoDecoderVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetCreationParameters(
+ &mut self, pVideoDesc: *mut D3D11_VIDEO_DECODER_DESC,
+ pConfig: *mut D3D11_VIDEO_DECODER_CONFIG
+ ) -> HRESULT,
+ fn GetDriverHandle(&mut self, pDriverHandle: *mut HANDLE) -> HRESULT
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT {
+ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x1,
+ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x2,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_DEVICE_CAPS {
+ D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE = 0x1,
+ D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC = 0x2,
+ D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
+ D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8,
+ D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_NOMINAL_RANGE = 0x10,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_FEATURE_CAPS {
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL = 0x1,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION = 0x2,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY = 0x4,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE = 0x8,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY = 0x10,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO = 0x20,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION = 0x40,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM = 0x80,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO = 0x100,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_MIRROR = 0x200,
+ D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_SHADER_USAGE = 0x400,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_FILTER_CAPS {
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS = 0x1,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST = 0x2,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE = 0x4,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION = 0x8,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION = 0x10,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40,
+ D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT = 0x80,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_FORMAT_CAPS {
+ D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED = 0x1,
+ D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP = 0x2,
+ D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
+ D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED = 0x8,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS {
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE = 0x1,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING = 0x2,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT = 0x4,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION = 0x8,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING = 0x10,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION = 0x20,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION = 0x40,
+ D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING = 0x80,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_STEREO_CAPS {
+ D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET = 0x1,
+ D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED = 0x2,
+ D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED = 0x4,
+ D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD = 0x8,
+ D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE = 0x10,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_CAPS {
+ DeviceCaps: UINT,
+ FeatureCaps: UINT,
+ FilterCaps: UINT,
+ InputFormatCaps: UINT,
+ AutoStreamCaps: UINT,
+ StereoCaps: UINT,
+ RateConversionCapsCount: UINT,
+ MaxInputStreams: UINT,
+ MaxStreamStates: UINT,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS {
+ D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
+ D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
+ D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE = 0x4,
+ D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION = 0x8,
+ D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_INVERSE_TELECINE = 0x10,
+ D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION = 0x20,
+}}
+FLAGS!{enum D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS {
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32 = 0x1,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_22 = 0x2,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2224 = 0x4,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2332 = 0x8,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32322 = 0x10,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_55 = 0x20,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_64 = 0x40,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_87 = 0x80,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_222222222223 = 0x100,
+ D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_OTHER = 0x80000000,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS {
+ PastFrames: UINT,
+ FutureFrames: UINT,
+ ProcessorCaps: UINT,
+ ITelecineCaps: UINT,
+ CustomRateCount: UINT,
+}}
+FLAGS!{enum D3D11_CONTENT_PROTECTION_CAPS {
+ D3D11_CONTENT_PROTECTION_CAPS_SOFTWARE = 0x1,
+ D3D11_CONTENT_PROTECTION_CAPS_HARDWARE = 0x2,
+ D3D11_CONTENT_PROTECTION_CAPS_PROTECTION_ALWAYS_ON = 0x4,
+ D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION = 0x8,
+ D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY = 0x10,
+ D3D11_CONTENT_PROTECTION_CAPS_FRESHEN_SESSION_KEY = 0x20,
+ D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK = 0x40,
+ D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY = 0x80,
+ D3D11_CONTENT_PROTECTION_CAPS_SEQUENTIAL_CTR_IV = 0x100,
+ D3D11_CONTENT_PROTECTION_CAPS_ENCRYPT_SLICEDATA_ONLY = 0x200,
+ D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT = 0x400,
+ D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECT_UNCOMPRESSED = 0x800,
+ D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_PROTECTED_MEMORY_PAGEABLE = 0x1000,
+ D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_TEARDOWN = 0x2000,
+ D3D11_CONTENT_PROTECTION_CAPS_HARDWARE_DRM_COMMUNICATION = 0x4000,
+}}
+STRUCT!{struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS {
+ Caps: UINT,
+ KeyExchangeTypeCount: UINT,
+ BlockAlignmentSize: UINT,
+ ProtectedMemorySize: ULONGLONG,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE {
+ CustomRate: DXGI_RATIONAL,
+ OutputFrames: UINT,
+ InputInterlaced: BOOL,
+ InputFramesOrFields: UINT,
+}}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_FILTER {
+ D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0,
+ D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1,
+ D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2,
+ D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3,
+ D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4,
+ D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5,
+ D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
+ D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE {
+ Minimum: c_int,
+ Maximum: c_int,
+ Default: c_int,
+ Multiplier: c_float,
+}}
+ENUM!{enum D3D11_VIDEO_FRAME_FORMAT {
+ D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
+ D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
+ D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2,
+}}
+ENUM!{enum D3D11_VIDEO_USAGE {
+ D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
+ D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1,
+ D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC {
+ InputFrameFormat: D3D11_VIDEO_FRAME_FORMAT,
+ InputFrameRate: DXGI_RATIONAL,
+ InputWidth: UINT,
+ InputHeight: UINT,
+ OutputFrameRate: DXGI_RATIONAL,
+ OutputWidth: UINT,
+ OutputHeight: UINT,
+ Usage: D3D11_VIDEO_USAGE,
+}}
+RIDL!{interface ID3D11VideoProcessorEnumerator(ID3D11VideoProcessorEnumeratorVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetVideoProcessorContentDesc(
+ &mut self, pContentDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC
+ ) -> HRESULT,
+ fn CheckVideoProcessorFormat(&mut self, Format: DXGI_FORMAT, pFlags: *mut UINT) -> HRESULT,
+ fn GetVideoProcessorCaps(&mut self, pCaps: *mut D3D11_VIDEO_PROCESSOR_CAPS) -> HRESULT,
+ fn GetVideoProcessorRateConversionCaps(
+ &mut self, TypeIndex: UINT, pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS
+ ) -> HRESULT,
+ fn GetVideoProcessorCustomRate(
+ &mut self, TypeIndex: UINT, CustomRateIndex: UINT,
+ pRate: *mut D3D11_VIDEO_PROCESSOR_CUSTOM_RATE
+ ) -> HRESULT,
+ fn GetVideoProcessorFilterRange(
+ &mut self, Filter: D3D11_VIDEO_PROCESSOR_FILTER,
+ Range: *mut D3D11_VIDEO_PROCESSOR_FILTER_RANGE
+ ) -> HRESULT
+}}
+STRUCT!{struct D3D11_VIDEO_COLOR_RGBA {
+ R: c_float,
+ G: c_float,
+ B: c_float,
+ A: c_float,
+}}
+STRUCT!{struct D3D11_VIDEO_COLOR_YCbCrA {
+ Y: c_float,
+ Cb: c_float,
+ Cr: c_float,
+ A: c_float,
+}}
+STRUCT!{struct D3D11_VIDEO_COLOR {
+ u: [c_float; 4],
+}}
+UNION!{D3D11_VIDEO_COLOR, u, YCbCr, YCbCr_mut, D3D11_VIDEO_COLOR_YCbCrA}
+UNION!{D3D11_VIDEO_COLOR, u, RGBA, RGBA_mut, D3D11_VIDEO_COLOR_RGBA}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE {
+ D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_UNDEFINED = 0,
+ D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_16_235 = 1,
+ D3D11_VIDEO_PROCESSOR_NOMINAL_RANGE_0_255 = 2,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE {
+ bitfield: UINT,
+}}
+BITFIELD!{D3D11_VIDEO_PROCESSOR_COLOR_SPACE bitfield: UINT [
+ Usage set_Usage[0..1],
+ RGB_Range set_RGB_Range[1..2],
+ YCbCr_Matrix set_YCbCr_Matrix[2..3],
+ YCbCr_xvYCC set_YCbCr_xvYCC[3..4],
+ Nominal_Range set_Nominal_Range[4..6],
+]}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE {
+ D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
+ D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
+ D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
+ D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
+}}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE {
+ D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
+ D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
+ D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2,
+}}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT {
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
+ D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7,
+}}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE {
+ D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
+ D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
+ D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
+}}
+ENUM!{enum D3D11_VIDEO_PROCESSOR_ROTATION {
+ D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0,
+ D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1,
+ D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
+ D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_STREAM {
+ Enable: BOOL,
+ OutputIndex: UINT,
+ InputFrameOrField: UINT,
+ PastFrames: UINT,
+ FutureFrames: UINT,
+ ppPastSurfaces: *mut *mut ID3D11VideoProcessorInputView,
+ pInputSurface: *mut ID3D11VideoProcessorInputView,
+ ppFutureSurfaces: *mut *mut ID3D11VideoProcessorInputView,
+ ppPastSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
+ pInputSurfaceRight: *mut ID3D11VideoProcessorInputView,
+ ppFutureSurfacesRight: *mut *mut ID3D11VideoProcessorInputView,
+}}
+RIDL!{interface ID3D11VideoProcessor(ID3D11VideoProcessorVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetContentDesc(&mut self, pDesc: *mut D3D11_VIDEO_PROCESSOR_CONTENT_DESC) -> (),
+ fn GetRateConversionCaps(
+ &mut self, pCaps: *mut D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS
+ ) -> ()
+}}
+STRUCT!{struct D3D11_OMAC {
+ Omac: [BYTE; 16],
+}}
+ENUM!{enum D3D11_AUTHENTICATED_CHANNEL_TYPE {
+ D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
+ D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
+ D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3,
+}}
+RIDL!{interface ID3D11AuthenticatedChannel(ID3D11AuthenticatedChannelVtbl)
+ : ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetCertificateSize(&mut self, pCertificateSize: *mut UINT) -> HRESULT,
+ fn GetCertificate(&mut self, CertificateSize: UINT, pCertificate: *mut BYTE) -> HRESULT,
+ fn GetChannelHandle(&mut self, pChannelHandle: *mut HANDLE) -> ()
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_INPUT {
+ QueryType: GUID,
+ hChannel: HANDLE,
+ SequenceNumber: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT {
+ omac: D3D11_OMAC,
+ QueryType: GUID,
+ hChannel: HANDLE,
+ SequenceNumber: UINT,
+ ReturnCode: HRESULT,
+}}
+//FIXME bitfield
+STRUCT!{struct D3D11_AUTHENTICATED_PROTECTION_FLAGS {
+ u: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_PROTECTION_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ ProtectionFlags: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ DeviceHandle: HANDLE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_INPUT {
+ Input: D3D11_AUTHENTICATED_QUERY_INPUT,
+ DecoderHandle: HANDLE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ DecoderHandle: HANDLE,
+ CryptoSessionHandle: HANDLE,
+ DeviceHandle: HANDLE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ RestrictedSharedResourceProcessCount: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_INPUT {
+ Input: D3D11_AUTHENTICATED_QUERY_INPUT,
+ ProcessIndex: UINT,
+}}
+ENUM!{enum D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE {
+ DD3D11_PROCESSIDTYPE_UNKNOWN = 0,
+ DD3D11_PROCESSIDTYPE_DWM = 1,
+ DD3D11_PROCESSIDTYPE_HANDLE = 2,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ ProcessIndex: UINT,
+ ProcessIdentifier: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
+ ProcessHandle: HANDLE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ UnrestrictedProtectedSharedResourceCount: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_INPUT {
+ Input: D3D11_AUTHENTICATED_QUERY_INPUT,
+ DeviceHandle: HANDLE,
+ CryptoSessionHandle: HANDLE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ DeviceHandle: HANDLE,
+ CryptoSessionHandle: HANDLE,
+ OutputIDCount: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_INPUT {
+ Input: D3D11_AUTHENTICATED_QUERY_INPUT,
+ DeviceHandle: HANDLE,
+ CryptoSessionHandle: HANDLE,
+ OutputIDIndex: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ DeviceHandle: HANDLE,
+ CryptoSessionHandle: HANDLE,
+ OutputIDIndex: UINT,
+ OutputID: UINT64,
+}}
+ENUM!{enum D3D11_BUS_TYPE {
+ D3D11_BUS_TYPE_OTHER = 0,
+ D3D11_BUS_TYPE_PCI = 0x1,
+ D3D11_BUS_TYPE_PCIX = 0x2,
+ D3D11_BUS_TYPE_PCIEXPRESS = 0x3,
+ D3D11_BUS_TYPE_AGP = 0x4,
+ D3D11_BUS_IMPL_MODIFIER_INSIDE_OF_CHIPSET = 0x10000,
+ D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x20000,
+ D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x30000,
+ D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x40000,
+ D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x50000,
+ D3D11_BUS_IMPL_MODIFIER_NON_STANDARD = 0x80000000,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACESSIBILITY_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ BusType: D3D11_BUS_TYPE,
+ AccessibleInContiguousBlocks: BOOL,
+ AccessibleInNonContiguousBlocks: BOOL,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_COUNT_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ EncryptionGuidCount: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_INPUT {
+ Input: D3D11_AUTHENTICATED_QUERY_INPUT,
+ EncryptionGuidIndex: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ EncryptionGuidIndex: UINT,
+ EncryptionGuid: GUID,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_QUERY_CURRENT_ACCESSIBILITY_ENCRYPTION_OUTPUT {
+ Output: D3D11_AUTHENTICATED_QUERY_OUTPUT,
+ EncryptionGuid: GUID,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INPUT {
+ omac: D3D11_OMAC,
+ ConfigureType: GUID,
+ hChannel: HANDLE,
+ SequenceNumber: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT {
+ omac: D3D11_OMAC,
+ ConfigureType: GUID,
+ hChannel: HANDLE,
+ SequenceNumber: UINT,
+ ReturnCode: HRESULT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE_INPUT {
+ Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
+ StartSequenceQuery: UINT,
+ StartSequenceConfigure: UINT,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_PROTECTION_INPUT {
+ Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
+ Protections: D3D11_AUTHENTICATED_PROTECTION_FLAGS,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION_INPUT {
+ Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
+ DecoderHandle: HANDLE,
+ CryptoSessionHandle: HANDLE,
+ DeviceHandle: HANDLE,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE_INPUT {
+ Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
+ ProcessType: D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE,
+ ProcessHandle: HANDLE,
+ AllowAccess: BOOL,
+}}
+STRUCT!{struct D3D11_AUTHENTICATED_CONFIGURE_ACCESSIBLE_ENCRYPTION_INPUT {
+ Parameters: D3D11_AUTHENTICATED_CONFIGURE_INPUT,
+ EncryptionGuid: GUID,
+}}
+RIDL!{interface ID3D11CryptoSession(ID3D11CryptoSessionVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetCryptoType(&mut self, pCryptoType: *mut GUID) -> (),
+ fn GetDecoderProfile(&mut self, pDecoderProfile: *mut GUID) -> (),
+ fn GetCertificateSize(&mut self, pCertificateSize: *mut UINT) -> HRESULT,
+ fn GetCertificate(&mut self, CertificateSize: UINT, pCertificate: *mut BYTE) -> HRESULT,
+ fn GetCryptoSessionHandle(&mut self, pCertificate: *mut HANDLE) -> ()
+}}
+ENUM!{enum D3D11_VDOV_DIMENSION {
+ D3D11_VDOV_DIMENSION_UNKNOWN = 0,
+ D3D11_VDOV_DIMENSION_TEXTURE2D = 1,
+}}
+STRUCT!{struct D3D11_TEX2D_VDOV {
+ ArraySlice: UINT,
+}}
+STRUCT!{struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC {
+ DecodeProfile: GUID,
+ ViewDimension: D3D11_VDOV_DIMENSION,
+ Texture2D: D3D11_TEX2D_VDOV,
+}}
+RIDL!{interface ID3D11VideoDecoderOutputView(ID3D11VideoDecoderOutputViewVtbl)
+ : ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC) -> ()
+}}
+ENUM!{enum D3D11_VPIV_DIMENSION {
+ D3D11_VPIV_DIMENSION_UNKNOWN = 0,
+ D3D11_VPIV_DIMENSION_TEXTURE2D = 1,
+}}
+STRUCT!{struct D3D11_TEX2D_VPIV {
+ MipSlice: UINT,
+ ArraySlice: UINT,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC {
+ FourCC: UINT,
+ ViewDimension: D3D11_VPIV_DIMENSION,
+ Texture2D: D3D11_TEX2D_VPIV,
+}}
+RIDL!{interface ID3D11VideoProcessorInputView(ID3D11VideoProcessorInputViewVtbl)
+ : ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC) -> ()
+}}
+ENUM!{enum D3D11_VPOV_DIMENSION {
+ D3D11_VPOV_DIMENSION_UNKNOWN = 0,
+ D3D11_VPOV_DIMENSION_TEXTURE2D = 1,
+ D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2,
+}}
+STRUCT!{struct D3D11_TEX2D_VPOV {
+ MipSlice: UINT,
+}}
+STRUCT!{struct D3D11_TEX2D_ARRAY_VPOV {
+ MipSlice: UINT,
+ FirstArraySlice: UINT,
+ ArraySize: UINT,
+}}
+STRUCT!{struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC {
+ ViewDimension: D3D11_VPOV_DIMENSION,
+ u: [UINT; 3],
+}}
+UNION!{D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC, u, Texture2D, Texture2D_mut, D3D11_TEX2D_VPOV}
+UNION!{D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ D3D11_TEX2D_ARRAY_VPOV}
+RIDL!{interface ID3D11VideoProcessorOutputView(ID3D11VideoProcessorOutputViewVtbl)
+ : ID3D11View(ID3D11ViewVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC) -> ()
+}}
+RIDL!{interface ID3D11VideoContext(ID3D11VideoContextVtbl): ID3D11DeviceChild(ID3D11DeviceChildVtbl) {
+ fn GetDecoderBuffer(
+ &mut self, pDecoder: *mut ID3D11VideoDecoder, Type: D3D11_VIDEO_DECODER_BUFFER_TYPE,
+ pBufferSize: *mut UINT, ppBuffer: *mut *mut c_void
+ ) -> HRESULT,
+ fn ReleaseDecoderBuffer(
+ &mut self, pDecoder: *mut ID3D11VideoDecoder, Type: D3D11_VIDEO_DECODER_BUFFER_TYPE
+ ) -> HRESULT,
+ fn DecoderBeginFrame(
+ &mut self, pDecoder: *mut ID3D11VideoDecoder, pView: *mut ID3D11VideoDecoderOutputView,
+ ContentKeySize: UINT, pContentKey: *const c_void
+ ) -> HRESULT,
+ fn DecoderEndFrame(&mut self, pDecoder: *mut ID3D11VideoDecoder) -> HRESULT,
+ fn SubmitDecoderBuffers(
+ &mut self, pDecoder: *mut ID3D11VideoDecoder, NumBuffers: UINT,
+ pBufferDesc: *const D3D11_VIDEO_DECODER_BUFFER_DESC
+ ) -> HRESULT,
+ fn DecoderExtension(
+ &mut self, pDecoder: *mut ID3D11VideoDecoder,
+ pExtensionData: *const D3D11_VIDEO_DECODER_EXTENSION
+ ) -> HRESULT,
+ fn VideoProcessorSetOutputTargetRect(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enable: BOOL, pRect: *const RECT
+ ) -> (),
+ fn VideoProcessorSetOutputBackgroundColor(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, YCbCr: BOOL, pRect: *const RECT
+ ) -> (),
+ fn VideoProcessorSetOutputColorSpace(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
+ pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE
+ ) -> HRESULT,
+ fn VideoProcessorSetOutputAlphaFillMode(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
+ AlphaFillMode: D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE, StreamIndex: UINT
+ ) -> (),
+ fn VideoProcessorSetOutputConstriction(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enable: BOOL, Size: SIZE
+ ) -> (),
+ fn VideoProcessorSetOutputStereoMode(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enable: BOOL
+ ) -> (),
+ fn VideoProcessorSetOutputExtension(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pExtensionGuid: *const GUID,
+ DataSize: UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn VideoProcessorGetOutputTargetRect(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, Enabled: *mut BOOL, pRect: *mut RECT
+ ) -> (),
+ fn VideoProcessorGetOutputBackgroundColor(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pYCbCr: *mut BOOL,
+ pColor: *mut D3D11_VIDEO_COLOR
+ ) -> (),
+ fn VideoProcessorGetOutputColorSpace(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
+ pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE
+ ) -> (),
+ fn VideoProcessorGetOutputAlphaFillMode(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
+ pAlphaFillMode: *mut D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE, pStreamIndex: *mut UINT
+ ) -> (),
+ fn VideoProcessorGetOutputConstriction(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pEnabled: *mut BOOL,
+ pSize: *mut SIZE
+ ) -> (),
+ fn VideoProcessorGetOutputStereoMode(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pEnabled: *mut BOOL
+ ) -> (),
+ fn VideoProcessorGetOutputExtension(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, pExtensionGuid: *const GUID,
+ DataSize: UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn VideoProcessorSetStreamFrameFormat(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ FrameFormat: D3D11_VIDEO_FRAME_FORMAT
+ ) -> (),
+ fn VideoProcessorSetStreamColorSpace(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pColorSpace: *const D3D11_VIDEO_PROCESSOR_COLOR_SPACE
+ ) -> (),
+ fn VideoProcessorSetStreamOutputRate(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ OutputRate: D3D11_VIDEO_PROCESSOR_OUTPUT_RATE, RepeatFrame: BOOL,
+ pCustomRate: *const DXGI_RATIONAL
+ ) -> (),
+ fn VideoProcessorSetStreamSourceRect(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ pRect: *const RECT
+ ) -> (),
+ fn VideoProcessorSetStreamDestRect(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ pRect: *const RECT
+ ) -> (),
+ fn VideoProcessorSetStreamAlpha(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ Alpha: FLOAT
+ ) -> (),
+ fn VideoProcessorSetStreamPalette(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Count: UINT,
+ pEntries: *const UINT
+ ) -> (),
+ fn VideoProcessorSetStreamPixelAspectRatio(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ pSourceAspectRatio: *const DXGI_RATIONAL, pDestinationAspectRatio: *const DXGI_RATIONAL
+ ) -> (),
+ fn VideoProcessorSetStreamLumaKey(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ Lower: FLOAT, Upper: FLOAT
+ ) -> (),
+ fn VideoProcessorSetStreamStereoFormat(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ Format: D3D11_VIDEO_PROCESSOR_STEREO_FORMAT, LeftViewFrame0: BOOL, BaseViewFrame0: BOOL,
+ FlipMode: D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE
+ ) -> (),
+ fn VideoProcessorSetStreamAutoProcessingMode(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL
+ ) -> (),
+ fn VideoProcessorSetStreamFilter(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ Filter: D3D11_VIDEO_PROCESSOR_FILTER, Enable: BOOL, Level: c_int
+ ) -> (),
+ fn VideoProcessorSetStreamExtension(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pExtensionGuid: *const GUID, DataSize: UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn VideoProcessorGetStreamFrameFormat(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pFrameFormat: *mut D3D11_VIDEO_FRAME_FORMAT
+ ) -> (),
+ fn VideoProcessorGetStreamColorSpace(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pColorSpace: *mut D3D11_VIDEO_PROCESSOR_COLOR_SPACE
+ ) -> (),
+ fn VideoProcessorGetStreamOutputRate(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pOutputRate: *mut D3D11_VIDEO_PROCESSOR_OUTPUT_RATE, pRepeatFrame: *mut BOOL,
+ pCustomRate: *mut DXGI_RATIONAL
+ ) -> (),
+ fn VideoProcessorGetStreamSourceRect(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL, pRect: *mut RECT
+ ) -> (),
+ fn VideoProcessorGetStreamDestRect(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL, pRect: *mut RECT
+ ) -> (),
+ fn VideoProcessorGetStreamAlpha(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL, pAlpha: *mut FLOAT
+ ) -> (),
+ fn VideoProcessorGetStreamPalette(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Count: UINT,
+ pEntries: *mut UINT
+ ) -> (),
+ fn VideoProcessorGetStreamPixelAspectRatio(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL, pSourceAspectRatio: *mut DXGI_RATIONAL,
+ pDestinationAspectRatio: *mut DXGI_RATIONAL
+ ) -> (),
+ fn VideoProcessorGetStreamLumaKey(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL, pLower: *mut FLOAT, pUpper: *mut FLOAT
+ ) -> (),
+ fn VideoProcessorGetStreamStereoFormat(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL, pFormat: *mut D3D11_VIDEO_PROCESSOR_STEREO_FORMAT,
+ pLeftViewFrame0: *mut BOOL, pBaseViewFrame0: *mut BOOL,
+ pFlipMode: *mut D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE, MonoOffset: *mut c_int
+ ) -> (),
+ fn VideoProcessorGetStreamAutoProcessingMode(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnabled: *mut BOOL
+ ) -> (),
+ fn VideoProcessorGetStreamFilter(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ Filter: D3D11_VIDEO_PROCESSOR_FILTER, pEnabled: *mut BOOL, pLevel: *mut c_int
+ ) -> (),
+ fn VideoProcessorGetStreamExtension(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pExtensionGuid: *const GUID, DataSize: UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn VideoProcessorBlt(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor,
+ pView: *mut ID3D11VideoProcessorOutputView, OutputFrame: UINT, StreamCount: UINT,
+ pStreams: *const D3D11_VIDEO_PROCESSOR_STREAM
+ ) -> HRESULT,
+ fn NegotiateCryptoSessionKeyExchange(
+ &mut self, pCryptoSession: *mut ID3D11CryptoSession, DataSize: UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn EncryptionBlt(
+ &mut self, pCryptoSession: *mut ID3D11CryptoSession, pSrcSurface: *mut ID3D11Texture2D,
+ pDstSurface: *mut ID3D11Texture2D, IVSize: UINT, pIV: *mut c_void
+ ) -> HRESULT,
+ fn DecryptionBlt(
+ &mut self, pCryptoSession: *mut ID3D11CryptoSession, pSrcSurface: *mut ID3D11Texture2D,
+ pDstSurface: *mut ID3D11Texture2D, pEncryptedBlockInfo: *mut D3D11_ENCRYPTED_BLOCK_INFO,
+ ContentKeySize: UINT, pContentKey: *const c_void, IVSize: UINT, pIV: *mut c_void
+ ) -> HRESULT,
+ fn StartSessionKeyRefresh(
+ &mut self, pCryptoSession: *mut ID3D11CryptoSession, RandomNumberSize: UINT,
+ pRandomNumber: *mut c_void
+ ) -> HRESULT,
+ fn FinishSessionKeyRefresh(&mut self, pCryptoSession: *mut ID3D11CryptoSession) -> HRESULT,
+ fn GetEncryptionBltKey(
+ &mut self, pCryptoSession: *mut ID3D11CryptoSession, KeySize: UINT,
+ pReadbackKey: *mut c_void
+ ) -> HRESULT,
+ fn NegotiateAuthenticatedChannelKeyExchange(
+ &mut self, pChannel: *mut ID3D11AuthenticatedChannel, DataSize: UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn QueryAuthenticatedChannel(
+ &mut self, pChannel: *mut ID3D11AuthenticatedChannel, InputSize: UINT,
+ pInput: *const c_void, OutputSize: UINT, pOutput: *mut c_void
+ ) -> HRESULT,
+ fn ConfigureAuthenticatedChannel(
+ &mut self, pChannel: *mut ID3D11AuthenticatedChannel, InputSize: UINT,
+ pInput: *const c_void, pOutput: *mut D3D11_AUTHENTICATED_CONFIGURE_OUTPUT
+ ) -> HRESULT,
+ fn VideoProcessorSetStreamRotation(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT, Enable: BOOL,
+ Rotation: D3D11_VIDEO_PROCESSOR_ROTATION
+ ) -> HRESULT,
+ fn VideoProcessorGetStreamRotation(
+ &mut self, pVideoProcessor: *mut ID3D11VideoProcessor, StreamIndex: UINT,
+ pEnable: *mut BOOL, pRotation: *mut D3D11_VIDEO_PROCESSOR_ROTATION
+ ) -> HRESULT
+}}
+RIDL!{interface ID3D11VideoDevice(ID3D11VideoDeviceVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateVideoDecoder(
+ &mut self, pVideoDesc: *const D3D11_VIDEO_DECODER_DESC,
+ pConfig: *const D3D11_VIDEO_DECODER_CONFIG, ppDecoder: *mut *mut ID3D11VideoDecoder
+ ) -> HRESULT,
+ fn CreateVideoProcessor(
+ &mut self, pEnum: *mut ID3D11VideoProcessorEnumerator, RateConversionIndex: UINT,
+ ppVideoProcessor: *mut *mut ID3D11VideoProcessor
+ ) -> HRESULT,
+ fn CreateAuthenticatedChannel(
+ &mut self, ChannelType: D3D11_AUTHENTICATED_CHANNEL_TYPE,
+ ppAuthenticatedChannel: *mut *mut ID3D11AuthenticatedChannel
+ ) -> HRESULT,
+ fn CreateCryptoSession(
+ &mut self, pCryptoType: *const GUID, pDecoderProfile: *const GUID,
+ pKeyExchangeType: *const GUID, ppCryptoSession: *mut *mut ID3D11CryptoSession
+ ) -> HRESULT,
+ fn CreateVideoDecoderOutputView(
+ &mut self, pResource: *mut ID3D11Resource,
+ pDesc: *const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC,
+ ppVDOVView: *mut *mut ID3D11VideoDecoderOutputView
+ ) -> HRESULT,
+ fn CreateVideoProcessorInputView(
+ &mut self, pResource: *mut ID3D11Resource, pEnum: *mut ID3D11VideoProcessorEnumerator,
+ pDesc: *const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC,
+ ppVPIView: *mut *mut ID3D11VideoProcessorInputView
+ ) -> HRESULT,
+ fn CreateVideoProcessorOutputView(
+ &mut self, pResource: *mut ID3D11Resource, pEnum: *mut ID3D11VideoProcessorEnumerator,
+ pDesc: *const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC,
+ ppVPOView: *mut *mut ID3D11VideoProcessorOutputView
+ ) -> HRESULT,
+ fn CreateVideoProcessorEnumerator(
+ &mut self, pDesc: *const D3D11_VIDEO_PROCESSOR_CONTENT_DESC,
+ ppEnum: *mut *mut ID3D11VideoProcessorEnumerator
+ ) -> HRESULT,
+ fn GetVideoDecoderProfileCount(&mut self) -> UINT,
+ fn GetVideoDecoderProfile(&mut self, Index: UINT, pDecoderProfile: *mut GUID) -> HRESULT,
+ fn CheckVideoDecoderFormat(
+ &mut self, pDecoderProfile: *const GUID, Format: DXGI_FORMAT, pSupported: *mut BOOL
+ ) -> HRESULT,
+ fn GetVideoDecoderConfigCount(
+ &mut self, pDesc: *const D3D11_VIDEO_DECODER_DESC, pCount: *mut UINT
+ ) -> HRESULT,
+ fn GetVideoDecoderConfig(
+ &mut self, pDesc: *const D3D11_VIDEO_DECODER_DESC, Index: UINT,
+ pConfig: *mut D3D11_VIDEO_DECODER_CONFIG
+ ) -> HRESULT,
+ fn GetContentProtectionCaps(
+ &mut self, pCryptoType: *const GUID, pDecoderProfile: *const GUID,
+ pCaps: *mut D3D11_VIDEO_CONTENT_PROTECTION_CAPS
+ ) -> HRESULT,
+ fn CheckCryptoKeyExchange(
+ &mut self, pCryptoType: *const GUID, pDecoderProfile: *const GUID, Index: UINT,
+ pKeyExchangeType: *mut GUID
+ ) -> HRESULT,
+ fn SetPrivateData( &mut self, guid: REFGUID, DataSize: UINT, pData: *const c_void) -> HRESULT,
+ fn SetPrivateDataInterface(&mut self, guid: REFGUID, pData: *const IUnknown) -> HRESULT
+}}
+RIDL!{interface ID3D11Device(ID3D11DeviceVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateBuffer(
+ &mut self, pDesc: *const D3D11_BUFFER_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
+ ppBuffer: *mut *mut ID3D11Buffer
+ ) -> HRESULT,
+ fn CreateTexture1D(
+ &mut self, pDesc: *const D3D11_TEXTURE1D_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
+ ppTexture1D: *mut *mut ID3D11Texture1D
+ ) -> HRESULT,
+ fn CreateTexture2D(
+ &mut self, pDesc: *const D3D11_TEXTURE2D_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
+ ppTexture2D: *mut *mut ID3D11Texture2D
+ ) -> HRESULT,
+ fn CreateTexture3D(
+ &mut self, pDesc: *const D3D11_TEXTURE3D_DESC, pInitialData: *const D3D11_SUBRESOURCE_DATA,
+ ppTexture3D: *mut *mut ID3D11Texture3D
+ ) -> HRESULT,
+ fn CreateShaderResourceView(
+ &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_SHADER_RESOURCE_VIEW_DESC,
+ ppSRView: *mut *mut ID3D11ShaderResourceView
+ ) -> HRESULT,
+ fn CreateUnorderedAccessView(
+ &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_UNORDERED_ACCESS_VIEW_DESC,
+ ppUAView: *mut *mut ID3D11UnorderedAccessView
+ ) -> HRESULT,
+ fn CreateRenderTargetView(
+ &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_RENDER_TARGET_VIEW_DESC,
+ ppRTView: *mut *mut ID3D11RenderTargetView
+ ) -> HRESULT,
+ fn CreateDepthStencilView(
+ &mut self, pResource: *mut ID3D11Resource, pDesc: *const D3D11_DEPTH_STENCIL_VIEW_DESC,
+ ppDepthStencilView: *mut *mut ID3D11DepthStencilView
+ ) -> HRESULT,
+ fn CreateInputLayout(
+ &mut self, pInputElementDescs: *const D3D11_INPUT_ELEMENT_DESC, NumElements: UINT,
+ pShaderBytecodeWithInputSignature: *const c_void, BytecodeLength: SIZE_T,
+ ppInputLayout: *mut *mut ID3D11InputLayout
+ ) -> HRESULT,
+ fn CreateVertexShader(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppVertexShader: *mut *mut ID3D11VertexShader
+ ) -> HRESULT,
+ fn CreateGeometryShader(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppGeometryShader: *mut *mut ID3D11GeometryShader
+ ) -> HRESULT,
+ fn CreateGeometryShaderWithStreamOutput(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pSODeclaration: *const D3D11_SO_DECLARATION_ENTRY, NumEntries: UINT,
+ pBufferStrides: *const UINT, NumStrides: UINT, RasterizedStream: UINT,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppGeometryShader: *mut *mut ID3D11GeometryShader
+ ) -> HRESULT,
+ fn CreatePixelShader(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppPixelShader: *mut *mut ID3D11PixelShader
+ ) -> HRESULT,
+ fn CreateHullShader(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppHullShader: *mut *mut ID3D11HullShader
+ ) -> HRESULT,
+ fn CreateDomainShader(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppDomainShader: *mut *mut ID3D11DomainShader
+ ) -> HRESULT,
+ fn CreateComputeShader(
+ &mut self, pShaderBytecode: *const c_void, BytecodeLength: SIZE_T,
+ pClassLinkage: *mut ID3D11ClassLinkage, ppComputeShader: *mut *mut ID3D11ComputeShader
+ ) -> HRESULT,
+ fn CreateClassLinkage(&mut self, ppLinkage: *mut *mut ID3D11ClassLinkage) -> HRESULT,
+ fn CreateBlendState(
+ &mut self, pBlendStateDesc: *const D3D11_BLEND_DESC,
+ ppBlendState: *mut *mut ID3D11BlendState
+ ) -> HRESULT,
+ fn CreateDepthStencilState(
+ &mut self, pDepthStencilDesc: *const D3D11_DEPTH_STENCIL_DESC,
+ ppDepthStencilState: *mut *mut ID3D11DepthStencilState
+ ) -> HRESULT,
+ fn CreateRasterizerState(
+ &mut self, pRasterizerDesc: *const D3D11_RASTERIZER_DESC,
+ ppRasterizerState: *mut *mut ID3D11RasterizerState
+ ) -> HRESULT,
+ fn CreateSamplerState(
+ &mut self, pSamplerDesc: *const D3D11_SAMPLER_DESC,
+ ppSamplerState: *mut *mut ID3D11SamplerState
+ ) -> HRESULT,
+ fn CreateQuery(
+ &mut self, pQueryDesc: *const D3D11_QUERY_DESC, ppQuery: *mut *mut ID3D11Query
+ ) -> HRESULT,
+ fn CreatePredicate(
+ &mut self, pPredicateDesc: *const D3D11_QUERY_DESC, ppPredicate: *mut *mut ID3D11Predicate
+ ) -> HRESULT,
+ fn CreateCounter(
+ &mut self, pCounterDesc: *const D3D11_COUNTER_DESC, ppCounter: *mut *mut ID3D11Counter
+ ) -> HRESULT,
+ fn CreateDeferredContext(
+ &mut self, ContextFlags: UINT, ppDeferredContext: *mut *mut ID3D11DeviceContext
+ ) -> HRESULT,
+ fn OpenSharedResource(
+ &mut self, hResource: HANDLE, ReturnedInterface: REFIID, ppResource: *mut *mut c_void
+ ) -> HRESULT,
+ fn CheckFormatSupport(
+ &mut self, Format: DXGI_FORMAT, pFormatSupport: *mut UINT
+ ) -> HRESULT,
+ fn CheckMultisampleQualityLevels(
+ &mut self, Format: DXGI_FORMAT, SampleCount: UINT, pNumQualityLevels: *mut UINT
+ ) -> HRESULT,
+ fn CheckCounterInfo(&mut self, pCounterInfo: *mut D3D11_COUNTER_INFO) -> (),
+ fn CheckCounter(
+ &mut self, pDesc: *const D3D11_COUNTER_DESC, pType: *mut D3D11_COUNTER_TYPE,
+ pActiveCounters: *mut UINT, szName: LPSTR, pNameLength: *mut UINT, szUnits: LPSTR,
+ pUnitsLength: *mut UINT, szDescription: LPSTR, pDescriptionLength: *mut UINT
+ ) -> HRESULT,
+ fn CheckFeatureSupport(
+ &mut self, Feature: D3D11_FEATURE, pFeatureSupportData: *mut c_void,
+ FeatureSupportDataSize: UINT
+ ) -> HRESULT,
+ fn GetPrivateData(
+ &mut self, guid: REFGUID, pDataSize: *mut UINT, pData: *mut c_void
+ ) -> HRESULT,
+ fn SetPrivateData(
+ &mut self, guid: REFGUID, DataSize: UINT, pData: *const c_void
+ ) -> HRESULT,
+ fn SetPrivateDataInterface(&mut self, guid: REFGUID, pData: *const IUnknown) -> HRESULT,
+ fn GetFeatureLevel(&mut self) -> D3D_FEATURE_LEVEL,
+ fn GetCreationFlags(&mut self) -> UINT,
+ fn GetDeviceRemovedReason(&mut self) -> HRESULT,
+ fn GetImmediateContext(&mut self, ppImmediateContext: *mut *mut ID3D11DeviceContext) -> (),
+ fn SetExceptionMode(&mut self, RaiseFlags: UINT) -> HRESULT,
+ fn GetExceptionMode(&mut self) -> UINT
+}}
+FLAGS!{enum D3D11_CREATE_DEVICE_FLAG {
+ D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
+ D3D11_CREATE_DEVICE_DEBUG = 0x2,
+ D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x4,
+ D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x8,
+ D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x20,
+ D3D11_CREATE_DEVICE_DEBUGGABLE = 0x40,
+ D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x80,
+ D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
+ D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800,
+}}
+pub const D3D11_SDK_VERSION: DWORD = 7;
+
+pub fn D3D11CalcSubresource(MipSlice: ::UINT, ArraySlice: ::UINT, MipLevels: ::UINT) -> ::UINT {
+ MipSlice + ArraySlice * MipLevels
+}
diff --git a/third_party/rust/winapi-0.2.8/src/d3d11shader.rs b/third_party/rust/winapi-0.2.8/src/d3d11shader.rs
new file mode 100644
index 0000000000..8328abe82e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d11shader.rs
@@ -0,0 +1,320 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+ENUM!{enum D3D11_SHADER_VERSION_TYPE {
+ D3D11_SHVER_PIXEL_SHADER = 0,
+ D3D11_SHVER_VERTEX_SHADER = 1,
+ D3D11_SHVER_GEOMETRY_SHADER = 2,
+ D3D11_SHVER_HULL_SHADER = 3,
+ D3D11_SHVER_DOMAIN_SHADER = 4,
+ D3D11_SHVER_COMPUTE_SHADER = 5,
+ D3D11_SHVER_RESERVED0 = 0xFFF0,
+}}
+pub const D3D_RETURN_PARAMETER_INDEX: c_int = -1;
+pub type D3D11_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;
+pub type D3D11_CBUFFER_TYPE = D3D_CBUFFER_TYPE;
+STRUCT!{struct D3D11_SIGNATURE_PARAMETER_DESC {
+ SemanticName: LPCSTR,
+ SemanticIndex: UINT,
+ Register: UINT,
+ SystemValueType: D3D_NAME,
+ ComponentType: D3D_REGISTER_COMPONENT_TYPE,
+ Mask: BYTE,
+ ReadWriteMask: BYTE,
+ Stream: UINT,
+ MinPrecision: D3D_MIN_PRECISION,
+}}
+STRUCT!{struct D3D11_SHADER_BUFFER_DESC {
+ Name: LPCSTR,
+ Type: D3D_CBUFFER_TYPE,
+ Variables: UINT,
+ Size: UINT,
+ uFlags: UINT,
+}}
+STRUCT!{struct D3D11_SHADER_VARIABLE_DESC {
+ Name: LPCSTR,
+ StartOffset: UINT,
+ Size: UINT,
+ uFlags: UINT,
+ DefaultValue: LPVOID,
+ StartTexture: UINT,
+ TextureSize: UINT,
+ StartSampler: UINT,
+ SamplerSize: UINT,
+}}
+STRUCT!{struct D3D11_SHADER_TYPE_DESC {
+ Class: D3D_SHADER_VARIABLE_CLASS,
+ Type: D3D_SHADER_VARIABLE_TYPE,
+ Rows: UINT,
+ Columns: UINT,
+ Elements: UINT,
+ Members: UINT,
+ Offset: UINT,
+ Name: LPCSTR,
+}}
+pub type D3D11_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN;
+pub type D3D11_TESSELLATOR_PARTITIONING = D3D_TESSELLATOR_PARTITIONING;
+pub type D3D11_TESSELLATOR_OUTPUT_PRIMITIVE = D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
+STRUCT!{struct D3D11_SHADER_DESC {
+ Version: UINT,
+ Creator: LPCSTR,
+ Flags: UINT,
+ ConstantBuffers: UINT,
+ BoundResources: UINT,
+ InputParameters: UINT,
+ OutputParameters: UINT,
+ InstructionCount: UINT,
+ TempRegisterCount: UINT,
+ TempArrayCount: UINT,
+ DefCount: UINT,
+ DclCount: UINT,
+ TextureNormalInstructions: UINT,
+ TextureLoadInstructions: UINT,
+ TextureCompInstructions: UINT,
+ TextureBiasInstructions: UINT,
+ TextureGradientInstructions: UINT,
+ FloatInstructionCount: UINT,
+ IntInstructionCount: UINT,
+ UintInstructionCount: UINT,
+ StaticFlowControlCount: UINT,
+ DynamicFlowControlCount: UINT,
+ MacroInstructionCount: UINT,
+ ArrayInstructionCount: UINT,
+ CutInstructionCount: UINT,
+ EmitInstructionCount: UINT,
+ GSOutputTopology: D3D_PRIMITIVE_TOPOLOGY,
+ GSMaxOutputVertexCount: UINT,
+ InputPrimitive: D3D_PRIMITIVE,
+ PatchConstantParameters: UINT,
+ cGSInstanceCount: UINT,
+ cControlPoints: UINT,
+ HSOutputPrimitive: D3D_TESSELLATOR_OUTPUT_PRIMITIVE,
+ HSPartitioning: D3D_TESSELLATOR_PARTITIONING,
+ TessellatorDomain: D3D_TESSELLATOR_DOMAIN,
+ cBarrierInstructions: UINT,
+ cInterlockedInstructions: UINT,
+ cTextureStoreInstructions: UINT,
+}}
+STRUCT!{struct D3D11_SHADER_INPUT_BIND_DESC {
+ Name: LPCSTR,
+ Type: D3D_SHADER_INPUT_TYPE,
+ BindPoint: UINT,
+ BindCount: UINT,
+ uFlags: UINT,
+ ReturnType: D3D_RESOURCE_RETURN_TYPE,
+ Dimension: D3D_SRV_DIMENSION,
+ NumSamples: UINT,
+}}
+pub const D3D_SHADER_REQUIRES_DOUBLES: UINT64 = 0x00000001;
+pub const D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL: UINT64 = 0x00000002;
+pub const D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE: UINT64 = 0x00000004;
+pub const D3D_SHADER_REQUIRES_64_UAVS: UINT64 = 0x00000008;
+pub const D3D_SHADER_REQUIRES_MINIMUM_PRECISION: UINT64 = 0x00000010;
+pub const D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS: UINT64 = 0x00000020;
+pub const D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS: UINT64 = 0x00000040;
+pub const D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING: UINT64 = 0x00000080;
+pub const D3D_SHADER_REQUIRES_TILED_RESOURCES: UINT64 = 0x00000100;
+STRUCT!{struct D3D11_LIBRARY_DESC {
+ Creator: LPCSTR,
+ Flags: UINT,
+ FunctionCount: UINT,
+}}
+STRUCT!{struct D3D11_FUNCTION_DESC {
+ Version: UINT,
+ Creator: LPCSTR,
+ Flags: UINT,
+ ConstantBuffers: UINT,
+ BoundResources: UINT,
+ InstructionCount: UINT,
+ TempRegisterCount: UINT,
+ TempArrayCount: UINT,
+ DefCount: UINT,
+ DclCount: UINT,
+ TextureNormalInstructions: UINT,
+ TextureLoadInstructions: UINT,
+ TextureCompInstructions: UINT,
+ TextureBiasInstructions: UINT,
+ TextureGradientInstructions: UINT,
+ FloatInstructionCount: UINT,
+ IntInstructionCount: UINT,
+ UintInstructionCount: UINT,
+ StaticFlowControlCount: UINT,
+ DynamicFlowControlCount: UINT,
+ MacroInstructionCount: UINT,
+ ArrayInstructionCount: UINT,
+ MovInstructionCount: UINT,
+ MovcInstructionCount: UINT,
+ ConversionInstructionCount: UINT,
+ BitwiseInstructionCount: UINT,
+ MinFeatureLevel: D3D_FEATURE_LEVEL,
+ RequiredFeatureFlags: UINT64,
+ Name: LPCSTR,
+ FunctionParameterCount: INT,
+ HasReturn: BOOL,
+ Has10Level9VertexShader: BOOL,
+ Has10Level9PixelShader: BOOL,
+}}
+STRUCT!{struct D3D11_PARAMETER_DESC {
+ Name: LPCSTR,
+ SemanticName: LPCSTR,
+ Type: D3D_SHADER_VARIABLE_TYPE,
+ Class: D3D_SHADER_VARIABLE_CLASS,
+ Rows: UINT,
+ Columns: UINT,
+ InterpolationMode: D3D_INTERPOLATION_MODE,
+ Flags: D3D_PARAMETER_FLAGS,
+ FirstInRegister: UINT,
+ FirstInComponent: UINT,
+ FirstOutRegister: UINT,
+ FirstOutComponent: UINT,
+}}
+RIDL!{interface ID3D11ShaderReflectionType(ID3D11ShaderReflectionTypeVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_SHADER_TYPE_DESC) -> HRESULT,
+ fn GetMemberTypeByIndex(&mut self, Index: UINT) -> *mut ID3D11ShaderReflectionType,
+ fn GetMemberTypeByName(&mut self, Name: LPCSTR) -> *mut ID3D11ShaderReflectionType,
+ fn GetMemberTypeName(&mut self, Index: UINT) -> LPCSTR,
+ fn IsEqual(&mut self, pType: *mut ID3D11ShaderReflectionType) -> HRESULT,
+ fn GetSubType(&mut self) -> *mut ID3D11ShaderReflectionType,
+ fn GetBaseClass(&mut self) -> *mut ID3D11ShaderReflectionType,
+ fn GetNumInterfaces(&mut self) -> UINT,
+ fn GetInterfaceByIndex(&mut self, uIndex: UINT) -> *mut ID3D11ShaderReflectionType,
+ fn IsOfType(&mut self, pType: *mut ID3D11ShaderReflectionType) -> HRESULT,
+ fn ImplementsInterface(&mut self, pBase: *mut ID3D11ShaderReflectionType) -> HRESULT
+}}
+RIDL!{interface ID3D11ShaderReflectionVariable(ID3D11ShaderReflectionVariableVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_SHADER_VARIABLE_DESC) -> HRESULT,
+ fn GetType(&mut self) -> *mut ID3D11ShaderReflectionType,
+ fn GetBuffer(&mut self) -> *mut ID3D11ShaderReflectionConstantBuffer,
+ fn GetInterfaceSlot(&mut self, uArrayIndex: UINT) -> UINT
+}}
+RIDL!{interface ID3D11ShaderReflectionConstantBuffer(ID3D11ShaderReflectionConstantBufferVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_SHADER_BUFFER_DESC) -> HRESULT,
+ fn GetVariableByIndex(&mut self, Index: UINT) -> *mut ID3D11ShaderReflectionVariable,
+ fn GetVariableByName(&mut self, Name: LPCSTR) -> *mut ID3D11ShaderReflectionVariable
+}}
+RIDL!{interface ID3D11ShaderReflection(ID3D11ShaderReflectionVtbl): IUnknown(IUnknownVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_SHADER_DESC) -> HRESULT,
+ fn GetConstantBufferByIndex(
+ &mut self, Index: UINT
+ ) -> *mut ID3D11ShaderReflectionConstantBuffer,
+ fn GetConstantBufferByName(
+ &mut self, Name: LPCSTR
+ ) -> *mut ID3D11ShaderReflectionConstantBuffer,
+ fn GetResourceBindingDesc(
+ &mut self, ResourceIndex: UINT, pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC
+ ) -> HRESULT,
+ fn GetInputParameterDesc(
+ &mut self, ParameterIndex: UINT, pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC
+ ) -> HRESULT,
+ fn GetOutputParameterDesc(
+ &mut self, ParameterIndex: UINT, pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC
+ ) -> HRESULT,
+ fn GetPatchConstantParameterDesc(
+ &mut self, ParameterIndex: UINT, pDesc: *mut D3D11_SIGNATURE_PARAMETER_DESC
+ ) -> HRESULT,
+ fn GetVariableByName(&mut self, Name: LPCSTR) -> *mut ID3D11ShaderReflectionVariable,
+ fn GetResourceBindingDescByName(
+ &mut self, Name: LPCSTR, pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC
+ ) -> HRESULT,
+ fn GetMovInstructionCount(&mut self) -> UINT,
+ fn GetMovcInstructionCount(&mut self) -> UINT,
+ fn GetConversionInstructionCount(&mut self) -> UINT,
+ fn GetBitwiseInstructionCount(&mut self) -> UINT,
+ fn GetGSInputPrimitive(&mut self) -> D3D_PRIMITIVE,
+ fn IsSampleFrequencyShader(&mut self) -> BOOL,
+ fn GetNumInterfaceSlots(&mut self) -> UINT,
+ fn GetMinFeatureLevel(&mut self, pLevel: *mut D3D_FEATURE_LEVEL) -> HRESULT,
+ fn GetThreadGroupSize(
+ &mut self, pSizeX: *mut UINT, pSizeY: *mut UINT, pSizeZ: *mut UINT
+ ) -> UINT,
+ fn GetRequiresFlags(&mut self) -> UINT64
+}}
+RIDL!{interface ID3D11LibraryReflection(ID3D11LibraryReflectionVtbl): IUnknown(IUnknownVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_LIBRARY_DESC) -> HRESULT,
+ fn GetFunctionByIndex(&mut self, FunctionIndex: INT) -> *mut ID3D11FunctionReflection
+}}
+RIDL!{interface ID3D11FunctionReflection(ID3D11FunctionReflectionVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_FUNCTION_DESC) -> HRESULT,
+ fn GetConstantBufferByIndex(
+ &mut self, BufferIndex: UINT
+ ) -> *mut ID3D11ShaderReflectionConstantBuffer,
+ fn GetConstantBufferByName(
+ &mut self, Name: LPCSTR
+ ) -> *mut ID3D11ShaderReflectionConstantBuffer,
+ fn GetResourceBindingDesc(
+ &mut self, ResourceIndex: UINT, pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC
+ ) -> HRESULT,
+ fn GetVariableByName(&mut self, Name: LPCSTR) -> *mut ID3D11ShaderReflectionVariable,
+ fn GetResourceBindingDescByName(
+ &mut self, Name: LPCSTR, pDesc: *mut D3D11_SHADER_INPUT_BIND_DESC
+ ) -> HRESULT,
+ fn GetFunctionParameter(
+ &mut self, ParameterIndex: INT
+ ) -> *mut ID3D11FunctionParameterReflection
+}}
+RIDL!{interface ID3D11FunctionParameterReflection(ID3D11FunctionParameterReflectionVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut D3D11_PARAMETER_DESC) -> HRESULT
+}}
+RIDL!{interface ID3D11Module(ID3D11ModuleVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateInstance(
+ &mut self, pNamespace: LPCSTR, ppModuleInstance: *mut *mut ID3D11ModuleInstance
+ ) -> HRESULT
+}}
+RIDL!{interface ID3D11ModuleInstance(ID3D11ModuleInstanceVtbl): IUnknown(IUnknownVtbl) {
+ fn BindConstantBuffer(&mut self, uSrcSlot: UINT, uDstSlot: UINT, cbDstOffset: UINT) -> HRESULT,
+ fn BindConstantBufferByName(
+ &mut self, pName: LPCSTR, uDstSlot: UINT, cbDstOffset: UINT
+ ) -> HRESULT,
+ fn BindResource(&mut self, uSrcSlot: UINT, uDstSlot: UINT, uCount: UINT) -> HRESULT,
+ fn BindResourceByName(&mut self, pName: LPCSTR, uDstSlot: UINT, uCount: UINT) -> HRESULT,
+ fn BindSampler(&mut self, uSrcSlot: UINT, uDstSlot: UINT, uCount: UINT) -> HRESULT,
+ fn BindSamplerByName(&mut self, pName: LPCSTR, uDstSlot: UINT, uCount: UINT) -> HRESULT,
+ fn BindUnorderedAccessView(&mut self, uSrcSlot: UINT, uDstSlot: UINT, uCount: UINT) -> HRESULT,
+ fn BindUnorderedAccessViewByName(
+ &mut self, pName: LPCSTR, uDstSlot: UINT, uCount: UINT
+ ) -> HRESULT,
+ fn BindResourceAsUnorderedAccessView(
+ &mut self, uSrcSrvSlot: UINT, uDstUavSlot: UINT, uCount: UINT
+ ) -> HRESULT,
+ fn BindResourceAsUnorderedAccessViewByName(
+ &mut self, pSrvName: LPCSTR, uDstUavSlot: UINT, uCount: UINT
+ ) -> HRESULT
+}}
+RIDL!{interface ID3D11Linker(ID3D11LinkerVtbl): IUnknown(IUnknownVtbl) {
+ fn Link(
+ &mut self, pEntry: *mut ID3D11ModuleInstance, pEntryName: LPCSTR, pTargetName: LPCSTR,
+ uFlags: UINT, ppShaderBlob: *mut *mut ID3DBlob, ppErrorBuffer: *mut *mut ID3DBlob
+ ) -> HRESULT,
+ fn UseLibrary(&mut self, pLibraryMI: *mut ID3D11ModuleInstance) -> HRESULT,
+ fn AddClipPlaneFromCBuffer(&mut self, uCBufferSlot: UINT, uCBufferEntry: UINT) -> HRESULT
+}}
+RIDL!{interface ID3D11LinkingNode(ID3D11LinkingNodeVtbl): IUnknown(IUnknownVtbl) {}}
+RIDL!{interface ID3D11FunctionLinkingGraph(ID3D11FunctionLinkingGraphVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateModuleInstance(
+ &mut self, ppModuleInstance: *mut *mut ID3D11ModuleInstance,
+ ppErrorBuffer: *mut *mut ID3DBlob
+ ) -> HRESULT,
+ fn SetInputSignature(
+ &mut self, pInputParameters: *const D3D11_PARAMETER_DESC, cInputParameters: UINT,
+ ppInputNode: *mut *mut ID3D11LinkingNode
+ ) -> HRESULT,
+ fn SetOutputSignature(
+ &mut self, pOutputParameters: *const D3D11_PARAMETER_DESC, cOutputParameters: UINT,
+ ppOutputNode: *mut *mut ID3D11LinkingNode
+ ) -> HRESULT,
+ fn CallFunction(
+ &mut self, pModuleInstanceNamespace: LPCSTR,
+ pModuleWithFunctionPrototype: *mut ID3D11Module, pFunctionName: LPCSTR,
+ ppCallNode: *mut *mut ID3D11LinkingNode
+ ) -> HRESULT,
+ fn PassValue(
+ &mut self, pSrcNode: *mut ID3D11LinkingNode, SrcParameterIndex: INT,
+ pDstNode: *mut ID3D11LinkingNode, DstParameterIndex: INT
+ ) -> HRESULT,
+ fn PassValueWithSwizzle(
+ &mut self, pSrcNode: *mut ID3D11LinkingNode, SrcParameterIndex: INT, pSrcSwizzle: LPCSTR,
+ pDstNode: *mut ID3D11LinkingNode, DstParameterIndex: INT, pDstSwizzle: LPCSTR
+ ) -> HRESULT,
+ fn GetLastError(&mut self, ppErrorBuffer: *mut *mut ID3DBlob) -> HRESULT,
+ fn GenerateHlsl(&mut self, uFlags: UINT, ppBuffer: *mut *mut ID3DBlob) -> HRESULT
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/d3d12.rs b/third_party/rust/winapi-0.2.8/src/d3d12.rs
new file mode 100644
index 0000000000..ac6ae3bdd2
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d12.rs
@@ -0,0 +1,2324 @@
+// Copyright © 2015, Dmitry Roschin
+// Licensed under the MIT License <LICENSE.md>
+pub const D3D12_16BIT_INDEX_STRIP_CUT_VALUE: ::UINT = 0xffff;
+pub const D3D12_32BIT_INDEX_STRIP_CUT_VALUE: ::UINT = 0xffffffff;
+pub const D3D12_8BIT_INDEX_STRIP_CUT_VALUE: ::UINT = 0xff;
+pub const D3D12_ANISOTROPIC_FILTERING_BIT: ::UINT = 0x40;
+pub const D3D12_APPEND_ALIGNED_ELEMENT: ::UINT = 0xffffffff;
+pub const D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT: ::UINT = 9;
+pub const D3D12_CLIP_OR_CULL_DISTANCE_COUNT: ::UINT = 8;
+pub const D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT: ::UINT = 2;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT: ::UINT = 14;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS: ::UINT = 4;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT: ::UINT = 15;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT: ::UINT = 16;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT: ::UINT = 15;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST: ::UINT = 1;
+pub const D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT: ::UINT = 64;
+pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST: ::UINT = 1;
+pub const D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT: ::UINT = 128;
+pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST: ::UINT = 1;
+pub const D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT: ::UINT = 128;
+pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT: ::UINT = 16;
+pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST: ::UINT = 1;
+pub const D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT: ::UINT = 16;
+pub const D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT: ::UINT = 32;
+pub const D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_COMMONSHADER_TEMP_REGISTER_COUNT: ::UINT = 4096;
+pub const D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST: ::UINT = 3;
+pub const D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS: ::UINT = 3;
+pub const D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX: ::UINT = 10;
+pub const D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN: ::INT = -10;
+pub const D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE: ::INT = -8;
+pub const D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE: ::UINT = 7;
+pub const D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT: ::UINT = 256;
+pub const D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 256;
+pub const D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP: ::UINT = 64;
+pub const D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 240;
+pub const D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP: ::UINT = 68;
+pub const D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 224;
+pub const D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP: ::UINT = 72;
+pub const D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 208;
+pub const D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP: ::UINT = 76;
+pub const D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 192;
+pub const D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP: ::UINT = 84;
+pub const D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 176;
+pub const D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP: ::UINT = 92;
+pub const D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 160;
+pub const D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP: ::UINT = 100;
+pub const D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 144;
+pub const D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP: ::UINT = 112;
+pub const D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 128;
+pub const D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP: ::UINT = 128;
+pub const D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 112;
+pub const D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP: ::UINT = 144;
+pub const D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 96;
+pub const D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP: ::UINT = 168;
+pub const D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 80;
+pub const D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP: ::UINT = 204;
+pub const D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 64;
+pub const D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP: ::UINT = 256;
+pub const D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 48;
+pub const D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP: ::UINT = 340;
+pub const D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 32;
+pub const D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP: ::UINT = 512;
+pub const D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD: ::UINT = 16;
+pub const D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP: ::UINT = 768;
+pub const D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION: ::UINT = 1;
+pub const D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT: ::UINT = 256;
+pub const D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP: ::UINT = 768;
+pub const D3D12_CS_4_X_THREAD_GROUP_MAX_X: ::UINT = 768;
+pub const D3D12_CS_4_X_THREAD_GROUP_MAX_Y: ::UINT = 768;
+pub const D3D12_CS_4_X_UAV_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION: ::UINT = 65535;
+pub const D3D12_CS_TGSM_REGISTER_COUNT: ::UINT = 8192;
+pub const D3D12_CS_TGSM_REGISTER_READS_PER_INST: ::UINT = 1;
+pub const D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS: ::UINT = 3;
+pub const D3D12_CS_THREADGROUPID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS: ::UINT = 3;
+pub const D3D12_CS_THREADIDINGROUP_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_CS_THREADID_REGISTER_COMPONENTS: ::UINT = 3;
+pub const D3D12_CS_THREADID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP: ::UINT = 1024;
+pub const D3D12_CS_THREAD_GROUP_MAX_X: ::UINT = 1024;
+pub const D3D12_CS_THREAD_GROUP_MAX_Y: ::UINT = 1024;
+pub const D3D12_CS_THREAD_GROUP_MAX_Z: ::UINT = 64;
+pub const D3D12_CS_THREAD_GROUP_MIN_X: ::UINT = 1;
+pub const D3D12_CS_THREAD_GROUP_MIN_Y: ::UINT = 1;
+pub const D3D12_CS_THREAD_GROUP_MIN_Z: ::UINT = 1;
+pub const D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL: ::UINT = 16384;
+pub const D3D12_DEFAULT_BLEND_FACTOR_ALPHA: ::FLOAT = 1.0;
+pub const D3D12_DEFAULT_BLEND_FACTOR_BLUE: ::FLOAT = 1.0;
+pub const D3D12_DEFAULT_BLEND_FACTOR_GREEN: ::FLOAT = 1.0;
+pub const D3D12_DEFAULT_BLEND_FACTOR_RED: ::FLOAT = 1.0;
+pub const D3D12_DEFAULT_BORDER_COLOR_COMPONENT: ::FLOAT = 0.0;
+pub const D3D12_DEFAULT_DEPTH_BIAS: ::UINT = 0;
+pub const D3D12_DEFAULT_DEPTH_BIAS_CLAMP: ::FLOAT = 0.0;
+pub const D3D12_DEFAULT_MAX_ANISOTROPY: ::UINT = 16;
+pub const D3D12_DEFAULT_MIP_LOD_BIAS: ::FLOAT = 0.0;
+pub const D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 4194304;
+pub const D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX: ::UINT = 0;
+pub const D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 65536;
+pub const D3D12_DEFAULT_SAMPLE_MASK: ::UINT = 0xffffffff;
+pub const D3D12_DEFAULT_SCISSOR_ENDX: ::UINT = 0;
+pub const D3D12_DEFAULT_SCISSOR_ENDY: ::UINT = 0;
+pub const D3D12_DEFAULT_SCISSOR_STARTX: ::UINT = 0;
+pub const D3D12_DEFAULT_SCISSOR_STARTY: ::UINT = 0;
+pub const D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS: ::FLOAT = 0.0;
+pub const D3D12_DEFAULT_STENCIL_READ_MASK: ::UINT = 0xff;
+pub const D3D12_DEFAULT_STENCIL_REFERENCE: ::UINT = 0;
+pub const D3D12_DEFAULT_STENCIL_WRITE_MASK: ::UINT = 0xff;
+pub const D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX: ::UINT = 0;
+pub const D3D12_DEFAULT_VIEWPORT_HEIGHT: ::UINT = 0;
+pub const D3D12_DEFAULT_VIEWPORT_MAX_DEPTH: ::FLOAT = 0.0;
+pub const D3D12_DEFAULT_VIEWPORT_MIN_DEPTH: ::FLOAT = 0.0;
+pub const D3D12_DEFAULT_VIEWPORT_TOPLEFTX: ::UINT = 0;
+pub const D3D12_DEFAULT_VIEWPORT_TOPLEFTY: ::UINT = 0;
+pub const D3D12_DEFAULT_VIEWPORT_WIDTH: ::UINT = 0;
+pub const D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND: ::UINT = 0xffffffff;
+pub const D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END: ::UINT = 0xfffffff7;
+pub const D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START: ::UINT = 0xfffffff0;
+pub const D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: ::UINT = 3968;
+pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS: ::UINT = 3;
+pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_DS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_DS_OUTPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_FILTER_REDUCTION_TYPE_MASK: ::UINT = 0x3;
+pub const D3D12_FILTER_REDUCTION_TYPE_SHIFT: ::UINT = 7;
+pub const D3D12_FILTER_TYPE_MASK: ::UINT = 0x3;
+pub const D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP: ::DOUBLE = 0.6;
+pub const D3D12_FLOAT32_MAX: ::FLOAT = 3.402823466e+38;
+pub const D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP: ::FLOAT = 0.6;
+pub const D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR: ::FLOAT = 2.4;
+pub const D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR: ::FLOAT = 1.0;
+pub const D3D12_FLOAT_TO_SRGB_OFFSET: ::FLOAT = 0.055;
+pub const D3D12_FLOAT_TO_SRGB_SCALE_1: ::FLOAT = 12.92;
+pub const D3D12_FLOAT_TO_SRGB_SCALE_2: ::FLOAT = 1.055;
+pub const D3D12_FLOAT_TO_SRGB_THRESHOLD: ::FLOAT = 0.0031308;
+pub const D3D12_FTOI_INSTRUCTION_MAX_INPUT: ::FLOAT = 2147483647.999;
+pub const D3D12_FTOI_INSTRUCTION_MIN_INPUT: ::FLOAT = -2147483648.999;
+pub const D3D12_FTOU_INSTRUCTION_MAX_INPUT: ::FLOAT = 4294967295.999;
+pub const D3D12_FTOU_INSTRUCTION_MIN_INPUT: ::FLOAT = 0.0;
+pub const D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST: ::UINT = 2;
+pub const D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS: ::UINT = 1;
+pub const D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_GS_INPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_GS_INPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_GS_INPUT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_GS_INPUT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_GS_INPUT_REGISTER_VERTICES: ::UINT = 32;
+pub const D3D12_GS_MAX_INSTANCE_COUNT: ::UINT = 32;
+pub const D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES: ::UINT = 1024;
+pub const D3D12_GS_OUTPUT_ELEMENTS: ::UINT = 32;
+pub const D3D12_GS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_GS_OUTPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND: ::UINT = 0xffffffff;
+pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND: ::UINT = 0xffffffff;
+pub const D3D12_HS_MAXTESSFACTOR_LOWER_BOUND: ::FLOAT = 1.0;
+pub const D3D12_HS_MAXTESSFACTOR_UPPER_BOUND: ::FLOAT = 64.0;
+pub const D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS: ::UINT = 3968;
+pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS: ::UINT = 128;
+pub const D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES: ::UINT = 0;
+pub const D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY: ::UINT = 0;
+pub const D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES: ::UINT = 0;
+pub const D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT: ::UINT = 1;
+pub const D3D12_IA_INSTANCE_ID_BIT_COUNT: ::UINT = 32;
+pub const D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT: ::UINT = 32;
+pub const D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT: ::UINT = 32;
+pub const D3D12_IA_PRIMITIVE_ID_BIT_COUNT: ::UINT = 32;
+pub const D3D12_IA_VERTEX_ID_BIT_COUNT: ::UINT = 32;
+pub const D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT: ::UINT = 32;
+pub const D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS: ::UINT = 128;
+pub const D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT: ::UINT = 32;
+pub const D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT: ::UINT = 0xffffffff;
+pub const D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER: ::UINT = 0xffffffff;
+pub const D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL: ::UINT = 0xffffffff;
+pub const D3D12_KEEP_UNORDERED_ACCESS_VIEWS: ::UINT = 0xffffffff;
+pub const D3D12_LINEAR_GAMMA: ::FLOAT = 1.0;
+pub const D3D12_MAG_FILTER_SHIFT: ::UINT = 2;
+pub const D3D12_MAJOR_VERSION: ::UINT = 12;
+pub const D3D12_MAX_BORDER_COLOR_COMPONENT: ::FLOAT = 1.0;
+pub const D3D12_MAX_DEPTH: ::FLOAT = 1.0;
+pub const D3D12_MAX_LIVE_STATIC_SAMPLERS: ::UINT = 2032;
+pub const D3D12_MAX_MAXANISOTROPY: ::UINT = 16;
+pub const D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT: ::UINT = 32;
+pub const D3D12_MAX_POSITION_VALUE: ::FLOAT = 3.402823466e+34;
+pub const D3D12_MAX_ROOT_COST: ::UINT = 64;
+pub const D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1: ::UINT = 1000000;
+pub const D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2: ::UINT = 1000000;
+pub const D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE: ::UINT = 2048;
+pub const D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP: ::UINT = 17;
+pub const D3D12_MINOR_VERSION: ::UINT = 0;
+pub const D3D12_MIN_BORDER_COLOR_COMPONENT: ::FLOAT = 0.0;
+pub const D3D12_MIN_DEPTH: ::FLOAT = 0.0;
+pub const D3D12_MIN_FILTER_SHIFT: ::UINT = 4;
+pub const D3D12_MIN_MAXANISOTROPY: ::UINT = 0;
+pub const D3D12_MIP_FILTER_SHIFT: ::UINT = 0;
+pub const D3D12_MIP_LOD_BIAS_MAX: ::FLOAT = 15.99;
+pub const D3D12_MIP_LOD_BIAS_MIN: ::FLOAT = -16.0;
+pub const D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT: ::UINT = 8;
+pub const D3D12_MIP_LOD_RANGE_BIT_COUNT: ::UINT = 8;
+pub const D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH: ::FLOAT = 1.4;
+pub const D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT: ::UINT = 0;
+pub const D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END: ::UINT = 0xffffffff;
+pub const D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START: ::UINT = 0xfffffff8;
+pub const D3D12_PACKED_TILE: ::UINT = 0xffffffff;
+pub const D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT: ::UINT = 15;
+pub const D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT: ::UINT = 16;
+pub const D3D12_PS_CS_UAV_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_PS_CS_UAV_REGISTER_COUNT: ::UINT = 8;
+pub const D3D12_PS_CS_UAV_REGISTER_READS_PER_INST: ::UINT = 1;
+pub const D3D12_PS_CS_UAV_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_PS_FRONTFACING_DEFAULT_VALUE: ::UINT = 0xffffffff;
+pub const D3D12_PS_FRONTFACING_FALSE_VALUE: ::UINT = 0;
+pub const D3D12_PS_FRONTFACING_TRUE_VALUE: ::UINT = 0xffffffff;
+pub const D3D12_PS_INPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_PS_INPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_PS_INPUT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_PS_INPUT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT: ::FLOAT = 0.0;
+pub const D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS: ::UINT = 1;
+pub const D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_PS_OUTPUT_MASK_REGISTER_COUNT: ::UINT = 1;
+pub const D3D12_PS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_PS_OUTPUT_REGISTER_COUNT: ::UINT = 8;
+pub const D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT: ::FLOAT = 0.5;
+pub const D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT: ::UINT = 16;
+pub const D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
+pub const D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP: ::UINT = 27;
+pub const D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT: ::UINT = 4096;
+pub const D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
+pub const D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: ::UINT = 32;
+pub const D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP: ::UINT = 32;
+pub const D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION: ::UINT = 16384;
+pub const D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT: ::UINT = 1024;
+pub const D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT: ::UINT = 4096;
+pub const D3D12_REQ_MAXANISOTROPY: ::UINT = 16;
+pub const D3D12_REQ_MIP_LEVELS: ::UINT = 15;
+pub const D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES: ::UINT = 2048;
+pub const D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
+pub const D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH: ::UINT = 16384;
+pub const D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM: ::UINT = 128;
+pub const D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM: ::FLOAT = 0.25;
+pub const D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM: ::UINT = 2048;
+pub const D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP: ::UINT = 20;
+pub const D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE: ::UINT = 4096;
+pub const D3D12_REQ_SUBRESOURCES: ::UINT = 30720;
+pub const D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION: ::UINT = 2048;
+pub const D3D12_REQ_TEXTURE1D_U_DIMENSION: ::UINT = 16384;
+pub const D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION: ::UINT = 2048;
+pub const D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION: ::UINT = 16384;
+pub const D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION: ::UINT = 2048;
+pub const D3D12_REQ_TEXTURECUBE_DIMENSION: ::UINT = 16384;
+pub const D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: ::UINT = 0;
+pub const D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES: ::UINT = 0xffffffff;
+pub const D3D12_SHADER_COMPONENT_MAPPING_MASK: ::UINT = 0x7;
+pub const D3D12_SHADER_COMPONENT_MAPPING_SHIFT: ::UINT = 3;
+pub const D3D12_SHADER_MAJOR_VERSION: ::UINT = 5;
+pub const D3D12_SHADER_MAX_INSTANCES: ::UINT = 65535;
+pub const D3D12_SHADER_MAX_INTERFACES: ::UINT = 253;
+pub const D3D12_SHADER_MAX_INTERFACE_CALL_SITES: ::UINT = 4096;
+pub const D3D12_SHADER_MAX_TYPES: ::UINT = 65535;
+pub const D3D12_SHADER_MINOR_VERSION: ::UINT = 1;
+pub const D3D12_SHIFT_INSTRUCTION_PAD_VALUE: ::UINT = 0;
+pub const D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT: ::UINT = 5;
+pub const D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT: ::UINT = 8;
+pub const D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 65536;
+pub const D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT: ::UINT = 4096;
+pub const D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES: ::UINT = 2048;
+pub const D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES: ::UINT = 512;
+pub const D3D12_SO_BUFFER_SLOT_COUNT: ::UINT = 4;
+pub const D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP: ::UINT = 0xffffffff;
+pub const D3D12_SO_NO_RASTERIZED_STREAM: ::UINT = 0xffffffff;
+pub const D3D12_SO_OUTPUT_COMPONENT_COUNT: ::UINT = 128;
+pub const D3D12_SO_STREAM_COUNT: ::UINT = 4;
+pub const D3D12_SPEC_DATE_DAY: ::UINT = 14;
+pub const D3D12_SPEC_DATE_MONTH: ::UINT = 11;
+pub const D3D12_SPEC_DATE_YEAR: ::UINT = 2014;
+pub const D3D12_SPEC_VERSION: ::DOUBLE = 1.16;
+pub const D3D12_SRGB_GAMMA: ::FLOAT = 2.2;
+pub const D3D12_SRGB_TO_FLOAT_DENOMINATOR_1: ::FLOAT = 12.92;
+pub const D3D12_SRGB_TO_FLOAT_DENOMINATOR_2: ::FLOAT = 1.055;
+pub const D3D12_SRGB_TO_FLOAT_EXPONENT: ::FLOAT = 2.4;
+pub const D3D12_SRGB_TO_FLOAT_OFFSET: ::FLOAT = 0.055;
+pub const D3D12_SRGB_TO_FLOAT_THRESHOLD: ::FLOAT = 0.04045;
+pub const D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP: ::FLOAT = 0.5;
+pub const D3D12_STANDARD_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED: ::UINT = 64;
+pub const D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE: ::UINT = 4;
+pub const D3D12_STANDARD_PIXEL_COMPONENT_COUNT: ::UINT = 128;
+pub const D3D12_STANDARD_PIXEL_ELEMENT_COUNT: ::UINT = 32;
+pub const D3D12_STANDARD_VECTOR_SIZE: ::UINT = 4;
+pub const D3D12_STANDARD_VERTEX_ELEMENT_COUNT: ::UINT = 32;
+pub const D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT: ::UINT = 64;
+pub const D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT: ::UINT = 8;
+pub const D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT: ::UINT = 8;
+pub const D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END: ::UINT = 0xffffffff;
+pub const D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START: ::UINT = 0xfffffff0;
+pub const D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR: ::UINT = 64;
+pub const D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR: ::UINT = 64;
+pub const D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR: ::UINT = 63;
+pub const D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR: ::UINT = 64;
+pub const D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR: ::UINT = 2;
+pub const D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR: ::UINT = 1;
+pub const D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR: ::UINT = 1;
+pub const D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT: ::UINT = 16;
+pub const D3D12_TEXTURE_DATA_PITCH_ALIGNMENT: ::UINT = 256;
+pub const D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT: ::UINT = 512;
+pub const D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES: ::UINT = 65536;
+pub const D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT: ::UINT = 4096;
+pub const D3D12_UAV_SLOT_COUNT: ::UINT = 64;
+pub const D3D12_UNBOUND_MEMORY_ACCESS_RESULT: ::UINT = 0;
+pub const D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX: ::UINT = 15;
+pub const D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE: ::UINT = 16;
+pub const D3D12_VIEWPORT_BOUNDS_MAX: ::UINT = 32767;
+pub const D3D12_VIEWPORT_BOUNDS_MIN: ::INT = -32768;
+pub const D3D12_VS_INPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_VS_INPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_VS_INPUT_REGISTER_READS_PER_INST: ::UINT = 2;
+pub const D3D12_VS_INPUT_REGISTER_READ_PORTS: ::UINT = 1;
+pub const D3D12_VS_OUTPUT_REGISTER_COMPONENTS: ::UINT = 4;
+pub const D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT: ::UINT = 32;
+pub const D3D12_VS_OUTPUT_REGISTER_COUNT: ::UINT = 32;
+pub const D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: ::UINT = 10;
+pub const D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: ::UINT = 25;
+pub const D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: ::UINT = 25;
+pub type D3D12_GPU_VIRTUAL_ADDRESS = ::UINT64;
+ENUM!{enum D3D12_COMMAND_LIST_TYPE {
+ D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
+ D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
+ D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
+ D3D12_COMMAND_LIST_TYPE_COPY = 3,
+}}
+FLAGS!{enum D3D12_COMMAND_QUEUE_FLAGS {
+ D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
+ D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
+}}
+ENUM!{enum D3D12_COMMAND_QUEUE_PRIORITY {
+ D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
+ D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
+}}
+STRUCT!{struct D3D12_COMMAND_QUEUE_DESC {
+ Type: D3D12_COMMAND_LIST_TYPE,
+ Priority: ::INT,
+ Flags: D3D12_COMMAND_QUEUE_FLAGS,
+ NodeMask: ::UINT,
+}}
+ENUM!{enum D3D12_PRIMITIVE_TOPOLOGY_TYPE {
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4,
+}}
+ENUM!{enum D3D12_INPUT_CLASSIFICATION {
+ D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
+ D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1,
+}}
+STRUCT!{struct D3D12_INPUT_ELEMENT_DESC {
+ SemanticName: ::LPCSTR,
+ SemanticIndex: ::UINT,
+ Format: ::DXGI_FORMAT,
+ InputSlot: ::UINT,
+ AlignedByteOffset: ::UINT,
+ InputSlotClass: D3D12_INPUT_CLASSIFICATION,
+ InstanceDataStepRate: ::UINT,
+}}
+ENUM!{enum D3D12_FILL_MODE {
+ D3D12_FILL_MODE_WIREFRAME = 2,
+ D3D12_FILL_MODE_SOLID = 3,
+}}
+pub type D3D12_PRIMITIVE_TOPOLOGY = ::D3D_PRIMITIVE_TOPOLOGY;
+pub type D3D12_PRIMITIVE = ::D3D_PRIMITIVE;
+ENUM!{enum D3D12_CULL_MODE {
+ D3D12_CULL_MODE_NONE = 1,
+ D3D12_CULL_MODE_FRONT = 2,
+ D3D12_CULL_MODE_BACK = 3,
+}}
+STRUCT!{struct D3D12_SO_DECLARATION_ENTRY {
+ Stream: ::UINT,
+ SemanticName: ::LPCSTR,
+ SemanticIndex: ::UINT,
+ StartComponent: ::BYTE,
+ ComponentCount: ::BYTE,
+ OutputSlot: ::BYTE,
+}}
+STRUCT!{struct D3D12_VIEWPORT {
+ TopLeftX: ::FLOAT,
+ TopLeftY: ::FLOAT,
+ Width: ::FLOAT,
+ Height: ::FLOAT,
+ MinDepth: ::FLOAT,
+ MaxDepth: ::FLOAT,
+}}
+pub type D3D12_RECT = ::RECT;
+STRUCT!{struct D3D12_BOX {
+ left: ::UINT,
+ top: ::UINT,
+ front: ::UINT,
+ right: ::UINT,
+ bottom: ::UINT,
+ back: ::UINT,
+}}
+ENUM!{enum D3D12_COMPARISON_FUNC {
+ D3D12_COMPARISON_FUNC_NEVER = 1,
+ D3D12_COMPARISON_FUNC_LESS = 2,
+ D3D12_COMPARISON_FUNC_EQUAL = 3,
+ D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
+ D3D12_COMPARISON_FUNC_GREATER = 5,
+ D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
+ D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
+ D3D12_COMPARISON_FUNC_ALWAYS = 8,
+}}
+ENUM!{enum D3D12_DEPTH_WRITE_MASK {
+ D3D12_DEPTH_WRITE_MASK_ZERO = 0,
+ D3D12_DEPTH_WRITE_MASK_ALL = 1,
+}}
+ENUM!{enum D3D12_STENCIL_OP {
+ D3D12_STENCIL_OP_KEEP = 1,
+ D3D12_STENCIL_OP_ZERO = 2,
+ D3D12_STENCIL_OP_REPLACE = 3,
+ D3D12_STENCIL_OP_INCR_SAT = 4,
+ D3D12_STENCIL_OP_DECR_SAT = 5,
+ D3D12_STENCIL_OP_INVERT = 6,
+ D3D12_STENCIL_OP_INCR = 7,
+ D3D12_STENCIL_OP_DECR = 8,
+}}
+STRUCT!{struct D3D12_DEPTH_STENCILOP_DESC {
+ StencilFailOp: D3D12_STENCIL_OP,
+ StencilDepthFailOp: D3D12_STENCIL_OP,
+ StencilPassOp: D3D12_STENCIL_OP,
+ StencilFunc: D3D12_COMPARISON_FUNC,
+}}
+STRUCT!{struct D3D12_DEPTH_STENCIL_DESC {
+ DepthEnable: ::BOOL,
+ DepthWriteMask: D3D12_DEPTH_WRITE_MASK,
+ DepthFunc: D3D12_COMPARISON_FUNC,
+ StencilEnable: ::BOOL,
+ StencilReadMask: ::UINT8,
+ StencilWriteMask: ::UINT8,
+ FrontFace: D3D12_DEPTH_STENCILOP_DESC,
+ BackFace: D3D12_DEPTH_STENCILOP_DESC,
+}}
+ENUM!{enum D3D12_BLEND {
+ D3D12_BLEND_ZERO = 1,
+ D3D12_BLEND_ONE = 2,
+ D3D12_BLEND_SRC_COLOR = 3,
+ D3D12_BLEND_INV_SRC_COLOR = 4,
+ D3D12_BLEND_SRC_ALPHA = 5,
+ D3D12_BLEND_INV_SRC_ALPHA = 6,
+ D3D12_BLEND_DEST_ALPHA = 7,
+ D3D12_BLEND_INV_DEST_ALPHA = 8,
+ D3D12_BLEND_DEST_COLOR = 9,
+ D3D12_BLEND_INV_DEST_COLOR = 10,
+ D3D12_BLEND_SRC_ALPHA_SAT = 11,
+ D3D12_BLEND_BLEND_FACTOR = 14,
+ D3D12_BLEND_INV_BLEND_FACTOR = 15,
+ D3D12_BLEND_SRC1_COLOR = 16,
+ D3D12_BLEND_INV_SRC1_COLOR = 17,
+ D3D12_BLEND_SRC1_ALPHA = 18,
+ D3D12_BLEND_INV_SRC1_ALPHA = 19,
+}}
+ENUM!{enum D3D12_BLEND_OP {
+ D3D12_BLEND_OP_ADD = 1,
+ D3D12_BLEND_OP_SUBTRACT = 2,
+ D3D12_BLEND_OP_REV_SUBTRACT = 3,
+ D3D12_BLEND_OP_MIN = 4,
+ D3D12_BLEND_OP_MAX = 5,
+}}
+FLAGS!{enum D3D12_COLOR_WRITE_ENABLE {
+ D3D12_COLOR_WRITE_ENABLE_RED = 0x1,
+ D3D12_COLOR_WRITE_ENABLE_GREEN = 0x2,
+ D3D12_COLOR_WRITE_ENABLE_BLUE = 0x4,
+ D3D12_COLOR_WRITE_ENABLE_ALPHA = 0x8,
+ D3D12_COLOR_WRITE_ENABLE_ALL = 0xF,
+}}
+ENUM!{enum D3D12_LOGIC_OP {
+ D3D12_LOGIC_OP_CLEAR = 0,
+ D3D12_LOGIC_OP_SET = 1,
+ D3D12_LOGIC_OP_COPY = 2,
+ D3D12_LOGIC_OP_COPY_INVERTED = 3,
+ D3D12_LOGIC_OP_NOOP = 4,
+ D3D12_LOGIC_OP_INVERT = 5,
+ D3D12_LOGIC_OP_AND = 6,
+ D3D12_LOGIC_OP_NAND = 7,
+ D3D12_LOGIC_OP_OR = 8,
+ D3D12_LOGIC_OP_NOR = 9,
+ D3D12_LOGIC_OP_XOR = 10,
+ D3D12_LOGIC_OP_EQUIV = 11,
+ D3D12_LOGIC_OP_AND_REVERSE = 12,
+ D3D12_LOGIC_OP_AND_INVERTED = 13,
+ D3D12_LOGIC_OP_OR_REVERSE = 14,
+ D3D12_LOGIC_OP_OR_INVERTED = 15,
+}}
+STRUCT!{struct D3D12_RENDER_TARGET_BLEND_DESC {
+ BlendEnable: ::BOOL,
+ LogicOpEnable: ::BOOL,
+ SrcBlend: D3D12_BLEND,
+ DestBlend: D3D12_BLEND,
+ BlendOp: D3D12_BLEND_OP,
+ SrcBlendAlpha: D3D12_BLEND,
+ DestBlendAlpha: D3D12_BLEND,
+ BlendOpAlpha: D3D12_BLEND_OP,
+ LogicOp: D3D12_LOGIC_OP,
+ RenderTargetWriteMask: ::UINT8,
+}}
+STRUCT!{struct D3D12_BLEND_DESC {
+ AlphaToCoverageEnable: ::BOOL,
+ IndependentBlendEnable: ::BOOL,
+ RenderTarget: [D3D12_RENDER_TARGET_BLEND_DESC; 8],
+}}
+ENUM!{enum D3D12_CONSERVATIVE_RASTERIZATION_MODE {
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
+ D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
+}}
+STRUCT!{struct D3D12_RASTERIZER_DESC {
+ FillMode: D3D12_FILL_MODE,
+ CullMode: D3D12_CULL_MODE,
+ FrontCounterClockwise: ::BOOL,
+ DepthBias: ::INT,
+ DepthBiasClamp: ::FLOAT,
+ SlopeScaledDepthBias: ::FLOAT,
+ DepthClipEnable: ::BOOL,
+ MultisampleEnable: ::BOOL,
+ AntialiasedLineEnable: ::BOOL,
+ ForcedSampleCount: ::UINT,
+ ConservativeRaster: D3D12_CONSERVATIVE_RASTERIZATION_MODE,
+}}
+RIDL!{interface ID3D12Object(ID3D12ObjectVtbl): IUnknown(IUnknownVtbl) {
+ fn GetPrivateData(
+ &mut self, guid: ::REFGUID, pDataSize: *mut ::UINT, pData: *mut ::c_void
+ ) -> ::HRESULT,
+ fn SetPrivateData(
+ &mut self, guid: ::REFGUID, DataSize: ::UINT, pData: *const ::c_void
+ ) -> ::HRESULT,
+ fn SetPrivateDataInterface(
+ &mut self, guid: ::REFGUID, pData: *const ::IUnknown
+ ) -> ::HRESULT,
+ fn SetName(&mut self, Name: ::LPCWSTR) -> ::HRESULT
+}}
+RIDL!{interface ID3D12DeviceChild(ID3D12DeviceChildVtbl): ID3D12Object(ID3D12ObjectVtbl) {
+ fn GetDevice(
+ &mut self, riid: ::REFGUID, ppvDevice: *mut *mut ::c_void
+ ) -> ::HRESULT
+}}
+RIDL!{interface ID3D12RootSignature(ID3D12RootSignatureVtbl):
+ ID3D12DeviceChild(ID3D12DeviceChildVtbl) {
+}}
+STRUCT!{struct D3D12_SHADER_BYTECODE {
+ pShaderBytecode: *const ::c_void,
+ BytecodeLength: ::SIZE_T,
+}}
+STRUCT!{struct D3D12_STREAM_OUTPUT_DESC {
+ pSODeclaration: *const D3D12_SO_DECLARATION_ENTRY,
+ NumEntries: ::UINT,
+ pBufferStrides: *const ::UINT,
+ NumStrides: ::UINT,
+ RasterizedStream: ::UINT,
+}}
+STRUCT!{struct D3D12_INPUT_LAYOUT_DESC {
+ pInputElementDescs: *const D3D12_INPUT_ELEMENT_DESC,
+ NumElements: ::UINT,
+}}
+ENUM!{enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE {
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2,
+}}
+STRUCT!{struct D3D12_CACHED_PIPELINE_STATE {
+ pCachedBlob: *const ::c_void,
+ CachedBlobSizeInBytes: ::SIZE_T,
+}}
+FLAGS!{enum D3D12_PIPELINE_STATE_FLAGS {
+ D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
+ D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
+}}
+STRUCT!{struct D3D12_GRAPHICS_PIPELINE_STATE_DESC {
+ pRootSignature: *mut ID3D12RootSignature,
+ VS: D3D12_SHADER_BYTECODE,
+ PS: D3D12_SHADER_BYTECODE,
+ DS: D3D12_SHADER_BYTECODE,
+ HS: D3D12_SHADER_BYTECODE,
+ GS: D3D12_SHADER_BYTECODE,
+ StreamOutput: D3D12_STREAM_OUTPUT_DESC,
+ BlendState: D3D12_BLEND_DESC,
+ SampleMask: ::UINT,
+ RasterizerState: D3D12_RASTERIZER_DESC,
+ DepthStencilState: D3D12_DEPTH_STENCIL_DESC,
+ InputLayout: D3D12_INPUT_LAYOUT_DESC,
+ IBStripCutValue: D3D12_INDEX_BUFFER_STRIP_CUT_VALUE,
+ PrimitiveTopologyType: D3D12_PRIMITIVE_TOPOLOGY_TYPE,
+ NumRenderTargets: ::UINT,
+ RTVFormats: [::DXGI_FORMAT; 8],
+ DSVFormat: ::DXGI_FORMAT,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+ NodeMask: ::UINT,
+ CachedPSO: D3D12_CACHED_PIPELINE_STATE,
+ Flags: D3D12_PIPELINE_STATE_FLAGS,
+}}
+STRUCT!{struct D3D12_COMPUTE_PIPELINE_STATE_DESC {
+ pRootSignature: *mut ID3D12RootSignature,
+ CS: D3D12_SHADER_BYTECODE,
+ NodeMask: ::UINT,
+ CachedPSO: D3D12_CACHED_PIPELINE_STATE,
+ Flags: D3D12_PIPELINE_STATE_FLAGS,
+}}
+ENUM!{enum D3D12_FEATURE {
+ D3D12_FEATURE_D3D12_OPTIONS = 0,
+ D3D12_FEATURE_ARCHITECTURE = 1,
+ D3D12_FEATURE_FEATURE_LEVELS = 2,
+ D3D12_FEATURE_FORMAT_SUPPORT = 3,
+ D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
+ D3D12_FEATURE_FORMAT_INFO = 5,
+ D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
+}}
+FLAGS!{enum D3D12_SHADER_MIN_PRECISION_SUPPORT {
+ D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
+ D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
+ D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2,
+}}
+ENUM!{enum D3D12_TILED_RESOURCES_TIER {
+ D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
+ D3D12_TILED_RESOURCES_TIER_1 = 1,
+ D3D12_TILED_RESOURCES_TIER_2 = 2,
+ D3D12_TILED_RESOURCES_TIER_3 = 3,
+}}
+ENUM!{enum D3D12_RESOURCE_BINDING_TIER {
+ D3D12_RESOURCE_BINDING_TIER_1 = 1,
+ D3D12_RESOURCE_BINDING_TIER_2 = 2,
+ D3D12_RESOURCE_BINDING_TIER_3 = 3,
+}}
+ENUM!{enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
+ D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
+}}
+FLAGS!{enum D3D12_FORMAT_SUPPORT1 {
+ D3D12_FORMAT_SUPPORT1_NONE = 0x0,
+ D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
+ D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
+ D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
+ D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
+ D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
+ D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
+ D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
+ D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
+ D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
+ D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
+ D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
+ D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
+ D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
+ D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
+ D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
+ D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
+ D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
+ D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
+ D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
+ D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
+ D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
+ D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
+ D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
+ D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
+ D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
+ D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
+ D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
+ D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
+ D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
+}}
+FLAGS!{enum D3D12_FORMAT_SUPPORT2 {
+ D3D12_FORMAT_SUPPORT2_NONE = 0x0,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
+ D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
+ D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
+ D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
+ D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
+ D3D12_FORMAT_SUPPORT2_TILED = 0x200,
+ D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
+}}
+FLAGS!{enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS {
+ D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0x0,
+ D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1,
+}}
+ENUM!{enum D3D12_CROSS_NODE_SHARING_TIER {
+ D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
+ D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
+ D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
+ D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
+}}
+ENUM!{enum D3D12_RESOURCE_HEAP_TIER {
+ D3D12_RESOURCE_HEAP_TIER_1 = 1,
+ D3D12_RESOURCE_HEAP_TIER_2 = 2,
+}}
+STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS {
+ DoublePrecisionFloatShaderOps: ::BOOL,
+ OutputMergerLogicOp: ::BOOL,
+ MinPrecisionSupport: D3D12_SHADER_MIN_PRECISION_SUPPORT,
+ TiledResourcesTier: D3D12_TILED_RESOURCES_TIER,
+ ResourceBindingTier: D3D12_RESOURCE_BINDING_TIER,
+ PSSpecifiedStencilRefSupported: ::BOOL,
+ TypedUAVLoadAdditionalFormats: ::BOOL,
+ ROVsSupported: ::BOOL,
+ ConservativeRasterizationTier: D3D12_CONSERVATIVE_RASTERIZATION_TIER,
+ MaxGPUVirtualAddressBitsPerResource: ::UINT,
+ StandardSwizzle64KBSupported: ::BOOL,
+ CrossNodeSharingTier: D3D12_CROSS_NODE_SHARING_TIER,
+ CrossAdapterRowMajorTextureSupported: ::BOOL,
+ VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation: ::BOOL,
+ ResourceHeapTier: D3D12_RESOURCE_HEAP_TIER,
+}}
+
+
+
+
+
+
+
+
+
+FLAGS!{ enum D3D12_BUFFER_SRV_FLAGS {
+ D3D12_BUFFER_SRV_FLAG_NONE = 0x0,
+ D3D12_BUFFER_SRV_FLAG_RAW = 0x1,
+}}
+
+FLAGS!{ enum D3D12_BUFFER_UAV_FLAGS {
+ D3D12_BUFFER_UAV_FLAG_NONE = 0x0,
+ D3D12_BUFFER_UAV_FLAG_RAW = 0x1,
+}}
+
+FLAGS!{ enum D3D12_CLEAR_FLAGS {
+ D3D12_CLEAR_FLAG_DEPTH = 0x1,
+ D3D12_CLEAR_FLAG_STENCIL = 0x2,
+}}
+
+
+ENUM!{ enum D3D12_CPU_PAGE_PROPERTY {
+ D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
+ D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
+ D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
+ D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
+}}
+
+
+FLAGS!{ enum D3D12_DESCRIPTOR_HEAP_FLAGS {
+ D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
+ D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
+}}
+
+ENUM!{ enum D3D12_DESCRIPTOR_HEAP_TYPE {
+ D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
+ D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = 1,
+ D3D12_DESCRIPTOR_HEAP_TYPE_RTV = 2,
+ D3D12_DESCRIPTOR_HEAP_TYPE_DSV = 3,
+ D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = 4,
+}}
+
+ENUM!{ enum D3D12_DESCRIPTOR_RANGE_TYPE {
+ D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
+ D3D12_DESCRIPTOR_RANGE_TYPE_UAV = 1,
+ D3D12_DESCRIPTOR_RANGE_TYPE_CBV = 2,
+ D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = 3,
+}}
+
+ENUM!{ enum D3D12_DSV_DIMENSION {
+ D3D12_DSV_DIMENSION_UNKNOWN = 0,
+ D3D12_DSV_DIMENSION_TEXTURE1D = 1,
+ D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
+ D3D12_DSV_DIMENSION_TEXTURE2D = 3,
+ D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
+ D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
+ D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
+}}
+
+FLAGS!{ enum D3D12_DSV_FLAGS {
+ D3D12_DSV_FLAG_NONE = 0x0,
+ D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
+ D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
+}}
+
+
+
+FLAGS!{ enum D3D12_FENCE_FLAGS {
+ D3D12_FENCE_FLAG_NONE = 0x0,
+ D3D12_FENCE_FLAG_SHARED = 0x1,
+ D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
+}}
+
+
+
+ENUM!{ enum D3D12_FILTER {
+ D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
+ D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 1,
+ D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 4,
+ D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 5,
+ D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 16,
+ D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 17,
+ D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 20,
+ D3D12_FILTER_MIN_MAG_MIP_LINEAR = 21,
+ D3D12_FILTER_ANISOTROPIC = 85,
+ D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 128,
+ D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 129,
+ D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 132,
+ D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 133,
+ D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 144,
+ D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 145,
+ D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 148,
+ D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 149,
+ D3D12_FILTER_COMPARISON_ANISOTROPIC = 213,
+ D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 256,
+ D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 257,
+ D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 260,
+ D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 261,
+ D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 272,
+ D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 273,
+ D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 276,
+ D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 277,
+ D3D12_FILTER_MINIMUM_ANISOTROPIC = 341,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 384,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 385,
+ D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 388,
+ D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 389,
+ D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 400,
+ D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 401,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 404,
+ D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 405,
+ D3D12_FILTER_MAXIMUM_ANISOTROPIC = 469,
+}}
+
+ENUM!{ enum D3D12_FILTER_REDUCTION_TYPE {
+ D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
+ D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
+ D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
+ D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
+}}
+
+ENUM!{ enum D3D12_FILTER_TYPE {
+ D3D12_FILTER_TYPE_POINT = 0,
+ D3D12_FILTER_TYPE_LINEAR = 1,
+}}
+
+
+
+FLAGS!{ enum D3D12_HEAP_FLAGS {
+ D3D12_HEAP_FLAG_NONE = 0x0,
+ D3D12_HEAP_FLAG_SHARED = 0x1,
+ D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
+ D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
+ D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
+ D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
+ D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
+ D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
+ D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
+ D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
+ D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
+}}
+
+ENUM!{ enum D3D12_HEAP_TYPE {
+ D3D12_HEAP_TYPE_DEFAULT = 1,
+ D3D12_HEAP_TYPE_UPLOAD = 2,
+ D3D12_HEAP_TYPE_READBACK = 3,
+ D3D12_HEAP_TYPE_CUSTOM = 4,
+}}
+
+
+
+ENUM!{ enum D3D12_INDIRECT_ARGUMENT_TYPE {
+ D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
+ D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = 1,
+ D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = 2,
+ D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = 3,
+ D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = 4,
+ D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = 5,
+ D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = 6,
+ D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = 7,
+ D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = 8,
+}}
+
+
+
+
+
+ENUM!{ enum D3D12_MEMORY_POOL {
+ D3D12_MEMORY_POOL_UNKNOWN = 0,
+ D3D12_MEMORY_POOL_L0 = 1,
+ D3D12_MEMORY_POOL_L1 = 2,
+}}
+
+
+
+
+ENUM!{ enum D3D12_PREDICATION_OP {
+ D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
+ D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
+}}
+
+
+
+ENUM!{ enum D3D12_QUERY_HEAP_TYPE {
+ D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
+ D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
+ D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
+ D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
+}}
+
+ENUM!{ enum D3D12_QUERY_TYPE {
+ D3D12_QUERY_TYPE_OCCLUSION = 0,
+ D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
+ D3D12_QUERY_TYPE_TIMESTAMP = 2,
+ D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
+ D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
+}}
+
+FLAGS!{ enum D3D12_RESOURCE_BARRIER_FLAGS {
+ D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
+ D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
+ D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
+}}
+
+ENUM!{ enum D3D12_RESOURCE_BARRIER_TYPE {
+ D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
+ D3D12_RESOURCE_BARRIER_TYPE_ALIASING = 1,
+ D3D12_RESOURCE_BARRIER_TYPE_UAV = 2,
+}}
+
+
+ENUM!{ enum D3D12_RESOURCE_DIMENSION {
+ D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
+ D3D12_RESOURCE_DIMENSION_BUFFER = 1,
+ D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
+ D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
+ D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
+}}
+
+FLAGS!{ enum D3D12_RESOURCE_FLAGS {
+ D3D12_RESOURCE_FLAG_NONE = 0x0,
+ D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
+ D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
+ D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
+ D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
+ D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
+ D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
+}}
+
+
+FLAGS!{ enum D3D12_RESOURCE_STATES {
+ D3D12_RESOURCE_STATE_COMMON = 0x0,
+ D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
+ D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
+ D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
+ D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
+ D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
+ D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
+ D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
+ D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
+ D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
+ D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
+ D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
+ D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
+ D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
+ D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
+ D3D12_RESOURCE_STATE_GENERIC_READ = 0xAC3,
+ D3D12_RESOURCE_STATE_PRESENT = 0x0,
+ D3D12_RESOURCE_STATE_PREDICATION = 0x200,
+}}
+
+ENUM!{ enum D3D12_ROOT_PARAMETER_TYPE {
+ D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
+ D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 1,
+ D3D12_ROOT_PARAMETER_TYPE_CBV = 2,
+ D3D12_ROOT_PARAMETER_TYPE_SRV = 3,
+ D3D12_ROOT_PARAMETER_TYPE_UAV = 4,
+}}
+
+FLAGS!{ enum D3D12_ROOT_SIGNATURE_FLAGS {
+ D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
+ D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
+ D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
+ D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
+}}
+
+ENUM!{ enum D3D12_RTV_DIMENSION {
+ D3D12_RTV_DIMENSION_UNKNOWN = 0,
+ D3D12_RTV_DIMENSION_BUFFER = 1,
+ D3D12_RTV_DIMENSION_TEXTURE1D = 2,
+ D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D12_RTV_DIMENSION_TEXTURE2D = 4,
+ D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
+ D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D12_RTV_DIMENSION_TEXTURE3D = 8,
+}}
+
+ENUM!{ enum D3D12_SHADER_COMPONENT_MAPPING {
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
+ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
+ D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
+ D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
+}}
+
+
+ENUM!{ enum D3D12_SHADER_VISIBILITY {
+ D3D12_SHADER_VISIBILITY_ALL = 0,
+ D3D12_SHADER_VISIBILITY_VERTEX = 1,
+ D3D12_SHADER_VISIBILITY_HULL = 2,
+ D3D12_SHADER_VISIBILITY_DOMAIN = 3,
+ D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
+ D3D12_SHADER_VISIBILITY_PIXEL = 5,
+}}
+
+ENUM!{ enum D3D12_SRV_DIMENSION {
+ D3D12_SRV_DIMENSION_UNKNOWN = 0,
+ D3D12_SRV_DIMENSION_BUFFER = 1,
+ D3D12_SRV_DIMENSION_TEXTURE1D = 2,
+ D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D12_SRV_DIMENSION_TEXTURE2D = 4,
+ D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
+ D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D12_SRV_DIMENSION_TEXTURE3D = 8,
+ D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
+ D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
+}}
+
+ENUM!{ enum D3D12_STATIC_BORDER_COLOR {
+ D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
+ D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = 1,
+ D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = 2,
+}}
+
+
+
+ENUM!{ enum D3D12_TEXTURE_ADDRESS_MODE {
+ D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
+ D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
+ D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
+ D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
+ D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5,
+}}
+
+ENUM!{ enum D3D12_TEXTURE_COPY_TYPE {
+ D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
+ D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
+}}
+
+ENUM!{ enum D3D12_TEXTURE_LAYOUT {
+ D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
+ D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
+ D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
+ D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
+}}
+
+
+FLAGS!{ enum D3D12_TILE_COPY_FLAGS {
+ D3D12_TILE_COPY_FLAG_NONE = 0x0,
+ D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
+ D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
+ D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
+}}
+
+FLAGS!{ enum D3D12_TILE_MAPPING_FLAGS {
+ D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
+ D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
+}}
+
+FLAGS!{ enum D3D12_TILE_RANGE_FLAGS {
+ D3D12_TILE_RANGE_FLAG_NONE = 0x0,
+ D3D12_TILE_RANGE_FLAG_NULL = 0x1,
+ D3D12_TILE_RANGE_FLAG_SKIP = 0x2,
+ D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 0x4,
+}}
+
+ENUM!{ enum D3D12_UAV_DIMENSION {
+ D3D12_UAV_DIMENSION_UNKNOWN = 0,
+ D3D12_UAV_DIMENSION_BUFFER = 1,
+ D3D12_UAV_DIMENSION_TEXTURE1D = 2,
+ D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D12_UAV_DIMENSION_TEXTURE2D = 4,
+ D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D12_UAV_DIMENSION_TEXTURE3D = 8,
+}}
+
+ENUM!{ enum D3D_ROOT_SIGNATURE_VERSION {
+ D3D_ROOT_SIGNATURE_VERSION_1 = 1,
+}}
+
+
+
+
+
+STRUCT!{struct D3D12_BUFFER_RTV {
+ FirstElement: ::UINT64,
+ NumElements: ::UINT,
+}}
+
+STRUCT!{struct D3D12_BUFFER_SRV {
+ FirstElement: ::UINT64,
+ NumElements: ::UINT,
+ StructureByteStride: ::UINT,
+ Flags: ::D3D12_BUFFER_SRV_FLAGS,
+}}
+
+STRUCT!{struct D3D12_BUFFER_UAV {
+ FirstElement: ::UINT64,
+ NumElements: ::UINT,
+ StructureByteStride: ::UINT,
+ CounterOffsetInBytes: ::UINT64,
+ Flags: ::D3D12_BUFFER_UAV_FLAGS,
+}}
+
+
+
+STRUCT!{struct D3D12_CLEAR_VALUE {
+ Format: ::DXGI_FORMAT,
+ u: [::FLOAT; 4],
+}}
+
+UNION!(D3D12_CLEAR_VALUE, u, DepthStencil, DepthStencil_mut, ::D3D12_DEPTH_STENCIL_VALUE);
+UNION!(D3D12_CLEAR_VALUE, u, Color, Color_mut, [::FLOAT; 4]);
+
+
+
+STRUCT!{struct D3D12_COMMAND_SIGNATURE_DESC {
+ ByteStride: ::UINT,
+ NumArgumentDescs: ::UINT,
+ pArgumentDescs: *const ::D3D12_INDIRECT_ARGUMENT_DESC,
+ NodeMask: ::UINT,
+}}
+
+
+
+STRUCT!{struct D3D12_CONSTANT_BUFFER_VIEW_DESC {
+ BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
+ SizeInBytes: ::UINT,
+}}
+
+STRUCT!{struct D3D12_CPU_DESCRIPTOR_HANDLE {
+ ptr: ::SIZE_T,
+}}
+
+
+
+STRUCT!{struct D3D12_DEPTH_STENCIL_VALUE {
+ Depth: ::FLOAT,
+ Stencil: ::UINT8,
+}}
+
+STRUCT!{struct D3D12_DEPTH_STENCIL_VIEW_DESC {
+ Format: ::DXGI_FORMAT,
+ ViewDimension: ::D3D12_DSV_DIMENSION,
+ Flags: ::D3D12_DSV_FLAGS,
+ u: ::D3D12_TEX1D_ARRAY_DSV,
+}}
+
+UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
+ ::D3D12_TEX2DMS_ARRAY_DSV);
+UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, ::D3D12_TEX2DMS_DSV);
+UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ ::D3D12_TEX2D_ARRAY_DSV);
+UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_DSV);
+UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ ::D3D12_TEX1D_ARRAY_DSV);
+UNION!(D3D12_DEPTH_STENCIL_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_DSV);
+
+STRUCT!{struct D3D12_DESCRIPTOR_HEAP_DESC {
+ Type: ::D3D12_DESCRIPTOR_HEAP_TYPE,
+ NumDescriptors: ::UINT,
+ Flags: ::D3D12_DESCRIPTOR_HEAP_FLAGS,
+ NodeMask: ::UINT,
+}}
+
+STRUCT!{struct D3D12_DESCRIPTOR_RANGE {
+ RangeType: ::D3D12_DESCRIPTOR_RANGE_TYPE,
+ NumDescriptors: ::UINT,
+ BaseShaderRegister: ::UINT,
+ RegisterSpace: ::UINT,
+ OffsetInDescriptorsFromTableStart: ::UINT,
+}}
+
+STRUCT!{struct D3D12_DISCARD_REGION {
+ NumRects: ::UINT,
+ pRects: *const ::D3D12_RECT,
+ FirstSubresource: ::UINT,
+ NumSubresources: ::UINT,
+}}
+
+STRUCT!{struct D3D12_DISPATCH_ARGUMENTS {
+ ThreadGroupCountX: ::UINT,
+ ThreadGroupCountY: ::UINT,
+ ThreadGroupCountZ: ::UINT,
+}}
+
+STRUCT!{struct D3D12_DRAW_ARGUMENTS {
+ VertexCountPerInstance: ::UINT,
+ InstanceCount: ::UINT,
+ StartVertexLocation: ::UINT,
+ StartInstanceLocation: ::UINT,
+}}
+
+STRUCT!{struct D3D12_DRAW_INDEXED_ARGUMENTS {
+ IndexCountPerInstance: ::UINT,
+ InstanceCount: ::UINT,
+ StartIndexLocation: ::UINT,
+ BaseVertexLocation: ::INT,
+ StartInstanceLocation: ::UINT,
+}}
+
+STRUCT!{struct D3D12_FEATURE_DATA_ARCHITECTURE {
+ NodeIndex: ::UINT,
+ TileBasedRenderer: ::BOOL,
+ UMA: ::BOOL,
+ CacheCoherentUMA: ::BOOL,
+}}
+
+
+STRUCT!{struct D3D12_FEATURE_DATA_FEATURE_LEVELS {
+ NumFeatureLevels: ::UINT,
+ pFeatureLevelsRequested: *const ::D3D_FEATURE_LEVEL,
+ MaxSupportedFeatureLevel: ::D3D_FEATURE_LEVEL,
+}}
+
+STRUCT!{struct D3D12_FEATURE_DATA_FORMAT_INFO {
+ Format: ::DXGI_FORMAT,
+ PlaneCount: ::UINT8,
+}}
+
+STRUCT!{struct D3D12_FEATURE_DATA_FORMAT_SUPPORT {
+ Format: ::DXGI_FORMAT,
+ Support1: ::D3D12_FORMAT_SUPPORT1,
+ Support2: ::D3D12_FORMAT_SUPPORT2,
+}}
+
+STRUCT!{struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT {
+ MaxGPUVirtualAddressBitsPerResource: ::UINT,
+ MaxGPUVirtualAddressBitsPerProcess: ::UINT,
+}}
+
+STRUCT!{struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS {
+ Format: ::DXGI_FORMAT,
+ SampleCount: ::UINT,
+ Flags: ::D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS,
+ NumQualityLevels: ::UINT,
+}}
+
+STRUCT!{struct D3D12_GPU_DESCRIPTOR_HANDLE {
+ ptr: ::UINT64,
+}}
+
+
+
+STRUCT!{struct D3D12_HEAP_DESC {
+ SizeInBytes: ::UINT64,
+ Properties: ::D3D12_HEAP_PROPERTIES,
+ Alignment: ::UINT64,
+ Flags: ::D3D12_HEAP_FLAGS,
+}}
+
+STRUCT!{struct D3D12_HEAP_PROPERTIES {
+ Type: ::D3D12_HEAP_TYPE,
+ CPUPageProperty: ::D3D12_CPU_PAGE_PROPERTY,
+ MemoryPoolPreference: ::D3D12_MEMORY_POOL,
+ CreationNodeMask: ::UINT,
+ VisibleNodeMask: ::UINT,
+}}
+
+STRUCT!{struct D3D12_INDEX_BUFFER_VIEW {
+ BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
+ SizeInBytes: ::UINT,
+ Format: ::DXGI_FORMAT,
+}}
+
+STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer {
+ Slot: ::UINT,
+}}
+
+STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_Constant {
+ RootParameterIndex: ::UINT,
+ DestOffsetIn32BitValues: ::UINT,
+ Num32BitValuesToSet: ::UINT,
+}}
+
+STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_ConstantBufferView {
+ RootParameterIndex: ::UINT,
+}}
+
+STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView {
+ RootParameterIndex: ::UINT,
+}}
+
+STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView {
+ RootParameterIndex: ::UINT,
+}}
+
+STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC {
+ Type: ::D3D12_INDIRECT_ARGUMENT_TYPE,
+ u: ::D3D12_INDIRECT_ARGUMENT_DESC_Constant,
+}}
+
+UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, UnorderedAccessView, UnorderedAccessView_mut,
+ D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView);
+UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, ShaderResourceView, ShaderResourceView_mut,
+ D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView);
+UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, ConstantBufferView, ConstantBufferView_mut,
+ D3D12_INDIRECT_ARGUMENT_DESC_ConstantBufferView);
+UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, Constant, Constant_mut,
+ D3D12_INDIRECT_ARGUMENT_DESC_Constant);
+UNION!(D3D12_INDIRECT_ARGUMENT_DESC, u, VertexBuffer, VertexBuffer_mut,
+ D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer);
+
+
+
+
+STRUCT!{struct D3D12_MEMCPY_DEST {
+ pData: *mut ::c_void,
+ RowPitch: ::SIZE_T,
+ SlicePitch: ::SIZE_T,
+}}
+
+STRUCT!{struct D3D12_PACKED_MIP_INFO {
+ NumStandardMips: ::UINT8,
+ NumPackedMips: ::UINT8,
+ NumTilesForPackedMips: ::UINT,
+ StartTileIndexInOverallResource: ::UINT,
+}}
+
+STRUCT!{struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT {
+ Offset: ::UINT64,
+ Footprint: ::D3D12_SUBRESOURCE_FOOTPRINT,
+}}
+
+STRUCT!{struct D3D12_QUERY_DATA_PIPELINE_STATISTICS {
+ IAVertices: ::UINT64,
+ IAPrimitives: ::UINT64,
+ VSInvocations: ::UINT64,
+ GSInvocations: ::UINT64,
+ GSPrimitives: ::UINT64,
+ CInvocations: ::UINT64,
+ CPrimitives: ::UINT64,
+ PSInvocations: ::UINT64,
+ HSInvocations: ::UINT64,
+ DSInvocations: ::UINT64,
+ CSInvocations: ::UINT64,
+}}
+
+STRUCT!{struct D3D12_QUERY_DATA_SO_STATISTICS {
+ NumPrimitivesWritten: ::UINT64,
+ PrimitivesStorageNeeded: ::UINT64,
+}}
+
+STRUCT!{struct D3D12_QUERY_HEAP_DESC {
+ Type: ::D3D12_QUERY_HEAP_TYPE,
+ Count: ::UINT,
+ NodeMask: ::UINT,
+}}
+
+STRUCT!{struct D3D12_RANGE {
+ Begin: ::SIZE_T,
+ End: ::SIZE_T,
+}}
+
+
+
+STRUCT!{struct D3D12_RENDER_TARGET_VIEW_DESC {
+ Format: ::DXGI_FORMAT,
+ ViewDimension: ::D3D12_RTV_DIMENSION,
+ u: ::D3D12_BUFFER_RTV,
+}}
+
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture3D, Texture3D_mut, ::D3D12_TEX3D_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
+ ::D3D12_TEX2DMS_ARRAY_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, ::D3D12_TEX2DMS_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ ::D3D12_TEX2D_ARRAY_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ ::D3D12_TEX1D_ARRAY_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_RTV);
+UNION!(D3D12_RENDER_TARGET_VIEW_DESC, u, Buffer, Buffer_mut, ::D3D12_BUFFER_RTV);
+
+STRUCT!{struct D3D12_RESOURCE_ALIASING_BARRIER {
+ pResourceBefore: *mut ::ID3D12Resource,
+ pResourceAfter: *mut ::ID3D12Resource,
+}}
+
+STRUCT!{struct D3D12_RESOURCE_ALLOCATION_INFO {
+ SizeInBytes: ::UINT64,
+ Alignment: ::UINT64,
+}}
+
+STRUCT!{struct D3D12_RESOURCE_BARRIER {
+ Type: ::D3D12_RESOURCE_BARRIER_TYPE,
+ Flags: ::D3D12_RESOURCE_BARRIER_FLAGS,
+ u: ::D3D12_RESOURCE_TRANSITION_BARRIER,
+}}
+
+UNION!(D3D12_RESOURCE_BARRIER, u, UAV, UAV_mut, ::D3D12_RESOURCE_UAV_BARRIER);
+UNION!(D3D12_RESOURCE_BARRIER, u, Aliasing, Aliasing_mut, ::D3D12_RESOURCE_ALIASING_BARRIER);
+UNION!(D3D12_RESOURCE_BARRIER, u, Transition, Transition_mut, ::D3D12_RESOURCE_TRANSITION_BARRIER);
+
+STRUCT!{struct D3D12_RESOURCE_DESC {
+ Dimension: ::D3D12_RESOURCE_DIMENSION,
+ Alignment: ::UINT64,
+ Width: ::UINT64,
+ Height: ::UINT,
+ DepthOrArraySize: ::UINT16,
+ MipLevels: ::UINT16,
+ Format: ::DXGI_FORMAT,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+ Layout: ::D3D12_TEXTURE_LAYOUT,
+ Flags: ::D3D12_RESOURCE_FLAGS,
+}}
+
+STRUCT!{struct D3D12_RESOURCE_TRANSITION_BARRIER {
+ pResource: *mut ::ID3D12Resource,
+ Subresource: ::UINT,
+ StateBefore: ::D3D12_RESOURCE_STATES,
+ StateAfter: ::D3D12_RESOURCE_STATES,
+}}
+
+STRUCT!{struct D3D12_RESOURCE_UAV_BARRIER {
+ pResource: *mut ::ID3D12Resource,
+}}
+
+STRUCT!{struct D3D12_ROOT_CONSTANTS {
+ ShaderRegister: ::UINT,
+ RegisterSpace: ::UINT,
+ Num32BitValues: ::UINT,
+}}
+
+STRUCT!{struct D3D12_ROOT_DESCRIPTOR {
+ ShaderRegister: ::UINT,
+ RegisterSpace: ::UINT,
+}}
+
+STRUCT!{struct D3D12_ROOT_DESCRIPTOR_TABLE {
+ NumDescriptorRanges: ::UINT,
+ pDescriptorRanges: *const ::D3D12_DESCRIPTOR_RANGE,
+}}
+
+#[cfg(target_pointer_width = "64")]
+STRUCT!{struct D3D12_ROOT_PARAMETER {
+ ParameterType: ::D3D12_ROOT_PARAMETER_TYPE,
+ u: ::D3D12_ROOT_DESCRIPTOR_TABLE,
+ ShaderVisibility: ::D3D12_SHADER_VISIBILITY,
+}}
+
+#[cfg(target_pointer_width = "32")]
+STRUCT!{struct D3D12_ROOT_PARAMETER {
+ ParameterType: ::D3D12_ROOT_PARAMETER_TYPE,
+ u: ::D3D12_ROOT_CONSTANTS,
+ ShaderVisibility: ::D3D12_SHADER_VISIBILITY,
+}}
+
+UNION!(D3D12_ROOT_PARAMETER, u, Descriptor, Descriptor_mut, ::D3D12_ROOT_DESCRIPTOR);
+UNION!(D3D12_ROOT_PARAMETER, u, Constants, Constants_mut, ::D3D12_ROOT_CONSTANTS);
+UNION!(D3D12_ROOT_PARAMETER, u, DescriptorTable, DescriptorTable_mut,
+ ::D3D12_ROOT_DESCRIPTOR_TABLE);
+
+STRUCT!{struct D3D12_ROOT_SIGNATURE_DESC {
+ NumParameters: ::UINT,
+ pParameters: *const ::D3D12_ROOT_PARAMETER,
+ NumStaticSamplers: ::UINT,
+ pStaticSamplers: *const ::D3D12_STATIC_SAMPLER_DESC,
+ Flags: ::D3D12_ROOT_SIGNATURE_FLAGS,
+}}
+
+STRUCT!{struct D3D12_SAMPLER_DESC {
+ Filter: ::D3D12_FILTER,
+ AddressU: ::D3D12_TEXTURE_ADDRESS_MODE,
+ AddressV: ::D3D12_TEXTURE_ADDRESS_MODE,
+ AddressW: ::D3D12_TEXTURE_ADDRESS_MODE,
+ MipLODBias: ::FLOAT,
+ MaxAnisotropy: ::UINT,
+ ComparisonFunc: ::D3D12_COMPARISON_FUNC,
+ BorderColor: [::FLOAT; 4],
+ MinLOD: ::FLOAT,
+ MaxLOD: ::FLOAT,
+}}
+
+
+
+STRUCT!{struct D3D12_SHADER_RESOURCE_VIEW_DESC {
+ Format: ::DXGI_FORMAT,
+ ViewDimension: ::D3D12_SRV_DIMENSION,
+ Shader4ComponentMapping: ::UINT,
+ u: ::D3D12_BUFFER_SRV,
+}}
+
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, TextureCubeArray, TextureCubeArray_mut,
+ ::D3D12_TEXCUBE_ARRAY_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, TextureCube, TextureCube_mut, ::D3D12_TEXCUBE_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture3D, Texture3D_mut, ::D3D12_TEX3D_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMSArray, Texture2DMSArray_mut,
+ ::D3D12_TEX2DMS_ARRAY_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2DMS, Texture2DMS_mut, ::D3D12_TEX2DMS_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ ::D3D12_TEX2D_ARRAY_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ ::D3D12_TEX1D_ARRAY_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_SRV);
+UNION!(D3D12_SHADER_RESOURCE_VIEW_DESC, u, Buffer, Buffer_mut, ::D3D12_BUFFER_SRV);
+
+
+
+STRUCT!{struct D3D12_STATIC_SAMPLER_DESC {
+ Filter: ::D3D12_FILTER,
+ AddressU: ::D3D12_TEXTURE_ADDRESS_MODE,
+ AddressV: ::D3D12_TEXTURE_ADDRESS_MODE,
+ AddressW: ::D3D12_TEXTURE_ADDRESS_MODE,
+ MipLODBias: ::FLOAT,
+ MaxAnisotropy: ::UINT,
+ ComparisonFunc: ::D3D12_COMPARISON_FUNC,
+ BorderColor: ::D3D12_STATIC_BORDER_COLOR,
+ MinLOD: ::FLOAT,
+ MaxLOD: ::FLOAT,
+ ShaderRegister: ::UINT,
+ RegisterSpace: ::UINT,
+ ShaderVisibility: ::D3D12_SHADER_VISIBILITY,
+}}
+
+STRUCT!{struct D3D12_STREAM_OUTPUT_BUFFER_VIEW {
+ BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
+ SizeInBytes: ::UINT64,
+ BufferFilledSizeLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
+}}
+
+
+
+STRUCT!{struct D3D12_SUBRESOURCE_DATA {
+ pData: *const ::c_void,
+ RowPitch: ::LONG_PTR,
+ SlicePitch: ::LONG_PTR,
+}}
+
+STRUCT!{struct D3D12_SUBRESOURCE_FOOTPRINT {
+ Format: ::DXGI_FORMAT,
+ Width: ::UINT,
+ Height: ::UINT,
+ Depth: ::UINT,
+ RowPitch: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SUBRESOURCE_INFO {
+ Offset: ::UINT64,
+ RowPitch: ::UINT,
+ DepthPitch: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SUBRESOURCE_TILING {
+ WidthInTiles: ::UINT,
+ HeightInTiles: ::UINT16,
+ DepthInTiles: ::UINT16,
+ StartTileIndexInOverallResource: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_ARRAY_DSV {
+ MipSlice: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_ARRAY_RTV {
+ MipSlice: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_ARRAY_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_ARRAY_UAV {
+ MipSlice: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_DSV {
+ MipSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_RTV {
+ MipSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEX1D_UAV {
+ MipSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2DMS_ARRAY_DSV {
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2DMS_ARRAY_RTV {
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2DMS_ARRAY_SRV {
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2DMS_DSV {
+ UnusedField_NothingToDefine: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2DMS_RTV {
+ UnusedField_NothingToDefine: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2DMS_SRV {
+ UnusedField_NothingToDefine: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_ARRAY_DSV {
+ MipSlice: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_ARRAY_RTV {
+ MipSlice: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+ PlaneSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_ARRAY_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+ PlaneSlice: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_ARRAY_UAV {
+ MipSlice: ::UINT,
+ FirstArraySlice: ::UINT,
+ ArraySize: ::UINT,
+ PlaneSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_DSV {
+ MipSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_RTV {
+ MipSlice: ::UINT,
+ PlaneSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ PlaneSlice: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEX2D_UAV {
+ MipSlice: ::UINT,
+ PlaneSlice: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX3D_RTV {
+ MipSlice: ::UINT,
+ FirstWSlice: ::UINT,
+ WSize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEX3D_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEX3D_UAV {
+ MipSlice: ::UINT,
+ FirstWSlice: ::UINT,
+ WSize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TEXCUBE_ARRAY_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ First2DArrayFace: ::UINT,
+ NumCubes: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEXCUBE_SRV {
+ MostDetailedMip: ::UINT,
+ MipLevels: ::UINT,
+ ResourceMinLODClamp: ::FLOAT,
+}}
+
+STRUCT!{struct D3D12_TEXTURE_COPY_LOCATION {
+ pResource: *mut ::ID3D12Resource,
+ Type: ::D3D12_TEXTURE_COPY_TYPE,
+ u: ::D3D12_PLACED_SUBRESOURCE_FOOTPRINT,
+}}
+
+UNION!(D3D12_TEXTURE_COPY_LOCATION, u, SubresourceIndex, SubresourceIndex_mut, ::UINT);
+UNION!(D3D12_TEXTURE_COPY_LOCATION, u, PlacedFootprint, PlacedFootprint_mut,
+ ::D3D12_PLACED_SUBRESOURCE_FOOTPRINT);
+
+STRUCT!{struct D3D12_TILED_RESOURCE_COORDINATE {
+ X: ::UINT,
+ Y: ::UINT,
+ Z: ::UINT,
+ Subresource: ::UINT,
+}}
+
+STRUCT!{struct D3D12_TILE_REGION_SIZE {
+ NumTiles: ::UINT,
+ UseBox: ::BOOL,
+ Width: ::UINT,
+ Height: ::UINT16,
+ Depth: ::UINT16,
+}}
+
+STRUCT!{struct D3D12_TILE_SHAPE {
+ WidthInTexels: ::UINT,
+ HeightInTexels: ::UINT,
+ DepthInTexels: ::UINT,
+}}
+
+STRUCT!{struct D3D12_UNORDERED_ACCESS_VIEW_DESC {
+ Format: ::DXGI_FORMAT,
+ ViewDimension: ::D3D12_UAV_DIMENSION,
+ u: ::D3D12_BUFFER_UAV,
+}}
+
+UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture3D, Texture3D_mut, ::D3D12_TEX3D_UAV);
+UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture2DArray, Texture2DArray_mut,
+ ::D3D12_TEX2D_ARRAY_UAV);
+UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture2D, Texture2D_mut, ::D3D12_TEX2D_UAV);
+UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture1DArray, Texture1DArray_mut,
+ ::D3D12_TEX1D_ARRAY_UAV);
+UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Texture1D, Texture1D_mut, ::D3D12_TEX1D_UAV);
+UNION!(D3D12_UNORDERED_ACCESS_VIEW_DESC, u, Buffer, Buffer_mut, ::D3D12_BUFFER_UAV);
+
+STRUCT!{struct D3D12_VERTEX_BUFFER_VIEW {
+ BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS,
+ SizeInBytes: ::UINT,
+ StrideInBytes: ::UINT,
+}}
+
+
+
+RIDL!(
+interface ID3D12CommandAllocator(ID3D12CommandAllocatorVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn Reset(&mut self) -> ::HRESULT
+});
+
+RIDL!(
+interface ID3D12CommandList(ID3D12CommandListVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) {
+ fn GetType(&mut self) -> ::D3D12_COMMAND_LIST_TYPE
+});
+
+RIDL!(
+interface ID3D12CommandQueue(ID3D12CommandQueueVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn UpdateTileMappings(
+ &mut self, pResource: *mut ::ID3D12Resource, NumResourceRegions: ::UINT,
+ pResourceRegionStartCoordinates: *const ::D3D12_TILED_RESOURCE_COORDINATE,
+ pResourceRegionSizes: *const ::D3D12_TILE_REGION_SIZE, pHeap: *mut ::ID3D12Heap,
+ NumRanges: ::UINT, pRangeFlags: *const ::D3D12_TILE_RANGE_FLAGS,
+ pHeapRangeStartOffsets: *const ::UINT, pRangeTileCounts: *const ::UINT,
+ Flags: ::D3D12_TILE_MAPPING_FLAGS
+ ) -> (),
+ fn CopyTileMappings(
+ &mut self, pDstResource: *mut ::ID3D12Resource,
+ pDstRegionStartCoordinate: *const ::D3D12_TILED_RESOURCE_COORDINATE,
+ pSrcResource: *mut ::ID3D12Resource,
+ pSrcRegionStartCoordinate: *const ::D3D12_TILED_RESOURCE_COORDINATE,
+ pRegionSize: *const ::D3D12_TILE_REGION_SIZE, Flags: ::D3D12_TILE_MAPPING_FLAGS
+ ) -> (),
+ fn ExecuteCommandLists(
+ &mut self, NumCommandLists: ::UINT, ppCommandLists: *mut *mut ::ID3D12CommandList
+ ) -> (),
+ fn SetMarker(
+ &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
+ ) -> (),
+ fn BeginEvent(
+ &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
+ ) -> (),
+ fn EndEvent(&mut self) -> (),
+ fn Signal(
+ &mut self, pFence: *mut ::ID3D12Fence, Value: ::UINT64
+ ) -> ::HRESULT,
+ fn Wait(
+ &mut self, pFence: *mut ::ID3D12Fence, Value: ::UINT64
+ ) -> ::HRESULT,
+ fn GetTimestampFrequency(&mut self, pFrequency: *mut ::UINT64) -> ::HRESULT,
+ fn GetClockCalibration(
+ &mut self, pGpuTimestamp: *mut ::UINT64, pCpuTimestamp: *mut ::UINT64
+ ) -> ::HRESULT,
+ fn GetDesc(
+ &mut self, __ret_val: *mut ::D3D12_COMMAND_QUEUE_DESC
+ ) -> *mut ::D3D12_COMMAND_QUEUE_DESC
+});
+
+RIDL!(
+interface ID3D12CommandSignature(ID3D12CommandSignatureVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+});
+
+RIDL!(
+interface ID3D12DescriptorHeap(ID3D12DescriptorHeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn GetDesc(
+ &mut self, __ret_val: *mut ::D3D12_DESCRIPTOR_HEAP_DESC
+ ) -> *mut ::D3D12_DESCRIPTOR_HEAP_DESC,
+ fn GetCPUDescriptorHandleForHeapStart(
+ &mut self, __ret_val: *mut ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> *mut ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ fn GetGPUDescriptorHandleForHeapStart(
+ &mut self, __ret_val: *mut ::D3D12_GPU_DESCRIPTOR_HANDLE
+ ) -> *mut ::D3D12_GPU_DESCRIPTOR_HANDLE
+});
+
+
+
+RIDL!(
+interface ID3D12Device(ID3D12DeviceVtbl): ID3D12Object(ID3D12ObjectVtbl) {
+ fn GetNodeCount(&mut self) -> ::UINT,
+ fn CreateCommandQueue(
+ &mut self, pDesc: *const ::D3D12_COMMAND_QUEUE_DESC, riid: ::REFGUID,
+ ppCommandQueue: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateCommandAllocator(
+ &mut self, type_: ::D3D12_COMMAND_LIST_TYPE, riid: ::REFGUID,
+ ppCommandAllocator: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateGraphicsPipelineState(
+ &mut self, pDesc: *const ::D3D12_GRAPHICS_PIPELINE_STATE_DESC, riid: ::REFGUID,
+ ppPipelineState: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateComputePipelineState(
+ &mut self, pDesc: *const ::D3D12_COMPUTE_PIPELINE_STATE_DESC, riid: ::REFGUID,
+ ppPipelineState: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateCommandList(
+ &mut self, nodeMask: ::UINT, type_: ::D3D12_COMMAND_LIST_TYPE,
+ pCommandAllocator: *mut ::ID3D12CommandAllocator,
+ pInitialState: *mut ::ID3D12PipelineState, riid: ::REFGUID,
+ ppCommandList: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CheckFeatureSupport(
+ &mut self, Feature: ::D3D12_FEATURE, pFeatureSupportData: *mut ::c_void,
+ FeatureSupportDataSize: ::UINT
+ ) -> ::HRESULT,
+ fn CreateDescriptorHeap(
+ &mut self, pDescriptorHeapDesc: *const ::D3D12_DESCRIPTOR_HEAP_DESC, riid: ::REFGUID,
+ ppvHeap: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetDescriptorHandleIncrementSize(
+ &mut self, DescriptorHeapType: ::D3D12_DESCRIPTOR_HEAP_TYPE
+ ) -> ::UINT,
+ fn CreateRootSignature(
+ &mut self, nodeMask: ::UINT, pBlobWithRootSignature: *const ::c_void,
+ blobLengthInBytes: ::SIZE_T, riid: ::REFGUID, ppvRootSignature: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateConstantBufferView(
+ &mut self, pDesc: *const ::D3D12_CONSTANT_BUFFER_VIEW_DESC,
+ DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn CreateShaderResourceView(
+ &mut self, pResource: *mut ::ID3D12Resource,
+ pDesc: *const ::D3D12_SHADER_RESOURCE_VIEW_DESC,
+ DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn CreateUnorderedAccessView(
+ &mut self, pResource: *mut ::ID3D12Resource, pCounterResource: *mut ::ID3D12Resource,
+ pDesc: *const ::D3D12_UNORDERED_ACCESS_VIEW_DESC,
+ DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn CreateRenderTargetView(
+ &mut self, pResource: *mut ::ID3D12Resource, pDesc: *const ::D3D12_RENDER_TARGET_VIEW_DESC,
+ DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn CreateDepthStencilView(
+ &mut self, pResource: *mut ::ID3D12Resource, pDesc: *const ::D3D12_DEPTH_STENCIL_VIEW_DESC,
+ DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn CreateSampler(
+ &mut self, pDesc: *const ::D3D12_SAMPLER_DESC,
+ DestDescriptor: ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn CopyDescriptors(
+ &mut self, NumDestDescriptorRanges: ::UINT,
+ pDestDescriptorRangeStarts: *const ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ pDestDescriptorRangeSizes: *const ::UINT, NumSrcDescriptorRanges: ::UINT,
+ pSrcDescriptorRangeStarts: *const ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ pSrcDescriptorRangeSizes: *const ::UINT, DescriptorHeapsType: ::D3D12_DESCRIPTOR_HEAP_TYPE
+ ) -> (),
+ fn CopyDescriptorsSimple(
+ &mut self, NumDescriptors: ::UINT, DestDescriptorRangeStart: ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ SrcDescriptorRangeStart: ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ DescriptorHeapsType: ::D3D12_DESCRIPTOR_HEAP_TYPE
+ ) -> (),
+ fn GetResourceAllocationInfo(
+ &mut self, visibleMask: ::UINT, numResourceDescs: ::UINT,
+ pResourceDescs: *const ::D3D12_RESOURCE_DESC,
+ __ret_val: *mut ::D3D12_RESOURCE_ALLOCATION_INFO
+ ) -> *mut ::D3D12_RESOURCE_ALLOCATION_INFO,
+ fn GetCustomHeapProperties(
+ &mut self, nodeMask: ::UINT, heapType: ::D3D12_HEAP_TYPE,
+ __ret_val: *mut ::D3D12_HEAP_PROPERTIES
+ ) -> *mut ::D3D12_HEAP_PROPERTIES,
+ fn CreateCommittedResource(
+ &mut self, pHeapProperties: *const ::D3D12_HEAP_PROPERTIES, HeapFlags: ::D3D12_HEAP_FLAGS,
+ pResourceDesc: *const ::D3D12_RESOURCE_DESC, InitialResourceState: ::D3D12_RESOURCE_STATES,
+ pOptimizedClearValue: *const ::D3D12_CLEAR_VALUE, riidResource: ::REFGUID,
+ ppvResource: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateHeap(
+ &mut self, pDesc: *const ::D3D12_HEAP_DESC, riid: ::REFGUID, ppvHeap: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreatePlacedResource(
+ &mut self, pHeap: *mut ::ID3D12Heap, HeapOffset: ::UINT64,
+ pDesc: *const ::D3D12_RESOURCE_DESC, InitialState: ::D3D12_RESOURCE_STATES,
+ pOptimizedClearValue: *const ::D3D12_CLEAR_VALUE, riid: ::REFGUID,
+ ppvResource: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateReservedResource(
+ &mut self, pDesc: *const ::D3D12_RESOURCE_DESC, InitialState: ::D3D12_RESOURCE_STATES,
+ pOptimizedClearValue: *const ::D3D12_CLEAR_VALUE, riid: ::REFGUID,
+ ppvResource: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn CreateSharedHandle(
+ &mut self, pObject: *mut ::ID3D12DeviceChild, pAttributes: *const ::SECURITY_ATTRIBUTES,
+ Access: ::DWORD, Name: ::LPCWSTR, pHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn OpenSharedHandle(
+ &mut self, NTHandle: ::HANDLE, riid: ::REFGUID, ppvObj: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn OpenSharedHandleByName(
+ &mut self, Name: ::LPCWSTR, Access: ::DWORD, pNTHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn MakeResident(
+ &mut self, NumObjects: ::UINT, ppObjects: *mut *mut ::ID3D12Pageable
+ ) -> ::HRESULT,
+ fn Evict(
+ &mut self, NumObjects: ::UINT, ppObjects: *mut *mut ::ID3D12Pageable
+ ) -> ::HRESULT,
+ fn CreateFence(
+ &mut self, InitialValue: ::UINT64, Flags: ::D3D12_FENCE_FLAGS, riid: ::REFGUID,
+ ppFence: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetDeviceRemovedReason(&mut self) -> ::HRESULT,
+ fn GetCopyableFootprints(
+ &mut self, pResourceDesc: *const ::D3D12_RESOURCE_DESC, FirstSubresource: ::UINT,
+ NumSubresources: ::UINT, BaseOffset: ::UINT64,
+ pLayouts: *mut ::D3D12_PLACED_SUBRESOURCE_FOOTPRINT, pNumRows: *mut ::UINT,
+ pRowSizeInBytes: *mut ::UINT64, pTotalBytes: *mut ::UINT64
+ ) -> (),
+ fn CreateQueryHeap(
+ &mut self, pDesc: *const ::D3D12_QUERY_HEAP_DESC, riid: ::REFGUID,
+ ppvHeap: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn SetStablePowerState(&mut self, Enable: ::BOOL) -> ::HRESULT,
+ fn CreateCommandSignature(
+ &mut self, pDesc: *const ::D3D12_COMMAND_SIGNATURE_DESC,
+ pRootSignature: *mut ::ID3D12RootSignature, riid: ::REFGUID,
+ ppvCommandSignature: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetResourceTiling(
+ &mut self, pTiledResource: *mut ::ID3D12Resource, pNumTilesForEntireResource: *mut ::UINT,
+ pPackedMipDesc: *mut ::D3D12_PACKED_MIP_INFO,
+ pStandardTileShapeForNonPackedMips: *mut ::D3D12_TILE_SHAPE,
+ pNumSubresourceTilings: *mut ::UINT, FirstSubresourceTilingToGet: ::UINT,
+ pSubresourceTilingsForNonPackedMips: *mut ::D3D12_SUBRESOURCE_TILING
+ ) -> (),
+ fn GetAdapterLuid(&mut self, __ret_val: *mut ::LUID) -> *mut ::LUID
+});
+
+RIDL!(
+interface ID3D12Fence(ID3D12FenceVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn GetCompletedValue(&mut self) -> ::UINT64,
+ fn SetEventOnCompletion(
+ &mut self, Value: ::UINT64, hEvent: ::HANDLE
+ ) -> ::HRESULT,
+ fn Signal(&mut self, Value: ::UINT64) -> ::HRESULT
+});
+
+RIDL!(
+interface ID3D12GraphicsCommandList(ID3D12GraphicsCommandListVtbl): ID3D12CommandList(ID3D12CommandListVtbl) {
+ fn Close(&mut self) -> ::HRESULT,
+ fn Reset(
+ &mut self, pAllocator: *mut ::ID3D12CommandAllocator,
+ pInitialState: *mut ::ID3D12PipelineState
+ ) -> ::HRESULT,
+ fn ClearState(&mut self, pPipelineState: *mut ::ID3D12PipelineState) -> (),
+ fn DrawInstanced(
+ &mut self, VertexCountPerInstance: ::UINT, InstanceCount: ::UINT,
+ StartVertexLocation: ::UINT, StartInstanceLocation: ::UINT
+ ) -> (),
+ fn DrawIndexedInstanced(
+ &mut self, IndexCountPerInstance: ::UINT, InstanceCount: ::UINT,
+ StartIndexLocation: ::UINT, BaseVertexLocation: ::INT, StartInstanceLocation: ::UINT
+ ) -> (),
+ fn Dispatch(
+ &mut self, ThreadGroupCountX: ::UINT, ThreadGroupCountY: ::UINT, ThreadGroupCountZ: ::UINT
+ ) -> (),
+ fn CopyBufferRegion(
+ &mut self, pDstBuffer: *mut ::ID3D12Resource, DstOffset: ::UINT64,
+ pSrcBuffer: *mut ::ID3D12Resource, SrcOffset: ::UINT64, NumBytes: ::UINT64
+ ) -> (),
+ fn CopyTextureRegion(
+ &mut self, pDst: *const ::D3D12_TEXTURE_COPY_LOCATION, DstX: ::UINT, DstY: ::UINT,
+ DstZ: ::UINT, pSrc: *const ::D3D12_TEXTURE_COPY_LOCATION, pSrcBox: *const ::D3D12_BOX
+ ) -> (),
+ fn CopyResource(
+ &mut self, pDstResource: *mut ::ID3D12Resource, pSrcResource: *mut ::ID3D12Resource
+ ) -> (),
+ fn CopyTiles(
+ &mut self, pTiledResource: *mut ::ID3D12Resource,
+ pTileRegionStartCoordinate: *const ::D3D12_TILED_RESOURCE_COORDINATE,
+ pTileRegionSize: *const ::D3D12_TILE_REGION_SIZE, pBuffer: *mut ::ID3D12Resource,
+ BufferStartOffsetInBytes: ::UINT64, Flags: ::D3D12_TILE_COPY_FLAGS
+ ) -> (),
+ fn ResolveSubresource(
+ &mut self, pDstResource: *mut ::ID3D12Resource, DstSubresource: ::UINT,
+ pSrcResource: *mut ::ID3D12Resource, SrcSubresource: ::UINT, Format: ::DXGI_FORMAT
+ ) -> (),
+ fn IASetPrimitiveTopology(
+ &mut self, PrimitiveTopology: ::D3D12_PRIMITIVE_TOPOLOGY
+ ) -> (),
+ fn RSSetViewports(
+ &mut self, NumViewports: ::UINT, pViewports: *const ::D3D12_VIEWPORT
+ ) -> (),
+ fn RSSetScissorRects(
+ &mut self, NumRects: ::UINT, pRects: *const ::D3D12_RECT
+ ) -> (),
+ fn OMSetBlendFactor(&mut self, BlendFactor: *const [::FLOAT; 4]) -> (),
+ fn OMSetStencilRef(&mut self, StencilRef: ::UINT) -> (),
+ fn SetPipelineState(
+ &mut self, pPipelineState: *mut ::ID3D12PipelineState
+ ) -> (),
+ fn ResourceBarrier(
+ &mut self, NumBarriers: ::UINT, pBarriers: *const ::D3D12_RESOURCE_BARRIER
+ ) -> (),
+ fn ExecuteBundle(
+ &mut self, pCommandList: *mut ::ID3D12GraphicsCommandList
+ ) -> (),
+ fn SetDescriptorHeaps(
+ &mut self, NumDescriptorHeaps: ::UINT, ppDescriptorHeaps: *mut *mut ::ID3D12DescriptorHeap
+ ) -> (),
+ fn SetComputeRootSignature(
+ &mut self, pRootSignature: *mut ::ID3D12RootSignature
+ ) -> (),
+ fn SetGraphicsRootSignature(
+ &mut self, pRootSignature: *mut ::ID3D12RootSignature
+ ) -> (),
+ fn SetComputeRootDescriptorTable(
+ &mut self, RootParameterIndex: ::UINT, BaseDescriptor: ::D3D12_GPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn SetGraphicsRootDescriptorTable(
+ &mut self, RootParameterIndex: ::UINT, BaseDescriptor: ::D3D12_GPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn SetComputeRoot32BitConstant(
+ &mut self, RootParameterIndex: ::UINT, SrcData: ::UINT, DestOffsetIn32BitValues: ::UINT
+ ) -> (),
+ fn SetGraphicsRoot32BitConstant(
+ &mut self, RootParameterIndex: ::UINT, SrcData: ::UINT, DestOffsetIn32BitValues: ::UINT
+ ) -> (),
+ fn SetComputeRoot32BitConstants(
+ &mut self, RootParameterIndex: ::UINT, Num32BitValuesToSet: ::UINT,
+ pSrcData: *const ::c_void, DestOffsetIn32BitValues: ::UINT
+ ) -> (),
+ fn SetGraphicsRoot32BitConstants(
+ &mut self, RootParameterIndex: ::UINT, Num32BitValuesToSet: ::UINT,
+ pSrcData: *const ::c_void, DestOffsetIn32BitValues: ::UINT
+ ) -> (),
+ fn SetComputeRootConstantBufferView(
+ &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
+ ) -> (),
+ fn SetGraphicsRootConstantBufferView(
+ &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
+ ) -> (),
+ fn SetComputeRootShaderResourceView(
+ &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
+ ) -> (),
+ fn SetGraphicsRootShaderResourceView(
+ &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
+ ) -> (),
+ fn SetComputeRootUnorderedAccessView(
+ &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
+ ) -> (),
+ fn SetGraphicsRootUnorderedAccessView(
+ &mut self, RootParameterIndex: ::UINT, BufferLocation: ::D3D12_GPU_VIRTUAL_ADDRESS
+ ) -> (),
+ fn IASetIndexBuffer(
+ &mut self, pView: *const ::D3D12_INDEX_BUFFER_VIEW
+ ) -> (),
+ fn IASetVertexBuffers(
+ &mut self, StartSlot: ::UINT, NumViews: ::UINT, pViews: *const ::D3D12_VERTEX_BUFFER_VIEW
+ ) -> (),
+ fn SOSetTargets(
+ &mut self, StartSlot: ::UINT, NumViews: ::UINT,
+ pViews: *const ::D3D12_STREAM_OUTPUT_BUFFER_VIEW
+ ) -> (),
+ fn OMSetRenderTargets(
+ &mut self, NumRenderTargetDescriptors: ::UINT,
+ pRenderTargetDescriptors: *const ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ RTsSingleHandleToDescriptorRange: ::BOOL,
+ pDepthStencilDescriptor: *const ::D3D12_CPU_DESCRIPTOR_HANDLE
+ ) -> (),
+ fn ClearDepthStencilView(
+ &mut self, DepthStencilView: ::D3D12_CPU_DESCRIPTOR_HANDLE,
+ ClearFlags: ::D3D12_CLEAR_FLAGS, Depth: ::FLOAT, Stencil: ::UINT8, NumRects: ::UINT,
+ pRects: *const ::D3D12_RECT
+ ) -> (),
+ fn ClearRenderTargetView(
+ &mut self, RenderTargetView: ::D3D12_CPU_DESCRIPTOR_HANDLE, ColorRGBA: *const [::FLOAT; 4],
+ NumRects: ::UINT, pRects: *const ::D3D12_RECT
+ ) -> (),
+ fn ClearUnorderedAccessViewUint(
+ &mut self, ViewGPUHandleInCurrentHeap: ::D3D12_GPU_DESCRIPTOR_HANDLE,
+ ViewCPUHandle: ::D3D12_CPU_DESCRIPTOR_HANDLE, pResource: *mut ::ID3D12Resource,
+ Values: *const [::UINT; 4], NumRects: ::UINT, pRects: *const ::D3D12_RECT
+ ) -> (),
+ fn ClearUnorderedAccessViewFloat(
+ &mut self, ViewGPUHandleInCurrentHeap: ::D3D12_GPU_DESCRIPTOR_HANDLE,
+ ViewCPUHandle: ::D3D12_CPU_DESCRIPTOR_HANDLE, pResource: *mut ::ID3D12Resource,
+ Values: *const [::FLOAT; 4], NumRects: ::UINT, pRects: *const ::D3D12_RECT
+ ) -> (),
+ fn DiscardResource(
+ &mut self, pResource: *mut ::ID3D12Resource, pRegion: *const ::D3D12_DISCARD_REGION
+ ) -> (),
+ fn BeginQuery(
+ &mut self, pQueryHeap: *mut ::ID3D12QueryHeap, Type: ::D3D12_QUERY_TYPE, Index: ::UINT
+ ) -> (),
+ fn EndQuery(
+ &mut self, pQueryHeap: *mut ::ID3D12QueryHeap, Type: ::D3D12_QUERY_TYPE, Index: ::UINT
+ ) -> (),
+ fn ResolveQueryData(
+ &mut self, pQueryHeap: *mut ::ID3D12QueryHeap, Type: ::D3D12_QUERY_TYPE,
+ StartIndex: ::UINT, NumQueries: ::UINT, pDestinationBuffer: *mut ::ID3D12Resource,
+ AlignedDestinationBufferOffset: ::UINT64
+ ) -> (),
+ fn SetPredication(
+ &mut self, pBuffer: *mut ::ID3D12Resource, AlignedBufferOffset: ::UINT64,
+ Operation: ::D3D12_PREDICATION_OP
+ ) -> (),
+ fn SetMarker(
+ &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
+ ) -> (),
+ fn BeginEvent(
+ &mut self, Metadata: ::UINT, pData: *const ::c_void, Size: ::UINT
+ ) -> (),
+ fn EndEvent(&mut self) -> (),
+ fn ExecuteIndirect(
+ &mut self, pCommandSignature: *mut ::ID3D12CommandSignature, MaxCommandCount: ::UINT,
+ pArgumentBuffer: *mut ::ID3D12Resource, ArgumentBufferOffset: ::UINT64,
+ pCountBuffer: *mut ::ID3D12Resource, CountBufferOffset: ::UINT64
+ ) -> ()
+});
+
+RIDL!(
+interface ID3D12Heap(ID3D12HeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn GetDesc(
+ &mut self, __ret_val: *mut ::D3D12_HEAP_DESC
+ ) -> *mut ::D3D12_HEAP_DESC
+});
+
+
+
+RIDL!(
+interface ID3D12Pageable(ID3D12PageableVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) {
+});
+
+RIDL!(
+interface ID3D12PipelineState(ID3D12PipelineStateVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn GetCachedBlob(&mut self, ppBlob: *mut *mut ::ID3DBlob) -> ::HRESULT
+});
+
+RIDL!(
+interface ID3D12QueryHeap(ID3D12QueryHeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+});
+
+RIDL!(
+interface ID3D12Resource(ID3D12ResourceVtbl): ID3D12Pageable(ID3D12PageableVtbl) {
+ fn Map(
+ &mut self, Subresource: ::UINT, pReadRange: *const ::D3D12_RANGE,
+ ppData: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn Unmap(
+ &mut self, Subresource: ::UINT, pWrittenRange: *const ::D3D12_RANGE
+ ) -> (),
+ fn GetDesc(
+ &mut self, __ret_val: *mut ::D3D12_RESOURCE_DESC
+ ) -> *mut ::D3D12_RESOURCE_DESC,
+ fn GetGPUVirtualAddress(&mut self) -> ::D3D12_GPU_VIRTUAL_ADDRESS,
+ fn WriteToSubresource(
+ &mut self, DstSubresource: ::UINT, pDstBox: *const ::D3D12_BOX, pSrcData: *const ::c_void,
+ SrcRowPitch: ::UINT, SrcDepthPitch: ::UINT
+ ) -> ::HRESULT,
+ fn ReadFromSubresource(
+ &mut self, pDstData: *mut ::c_void, DstRowPitch: ::UINT, DstDepthPitch: ::UINT,
+ SrcSubresource: ::UINT, pSrcBox: *const ::D3D12_BOX
+ ) -> ::HRESULT,
+ fn GetHeapProperties(
+ &mut self, pHeapProperties: *mut ::D3D12_HEAP_PROPERTIES,
+ pHeapFlags: *mut ::D3D12_HEAP_FLAGS
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface ID3D12RootSignatureDeserializer(ID3D12RootSignatureDeserializerVtbl): IUnknown(IUnknownVtbl) {
+ fn GetRootSignatureDesc(&mut self) -> *const ::D3D12_ROOT_SIGNATURE_DESC
+});
+
+
+
+pub type PFN_D3D12_CREATE_DEVICE = extern "system" fn (_ : *mut ::IUnknown, _ : ::D3D_FEATURE_LEVEL, _ : ::REFGUID, _ : *mut *mut ::c_void) -> ::HRESULT;
+pub type PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER = extern "system" fn (pSrcData: ::LPCVOID, SrcDataSizeInBytes: ::SIZE_T, pRootSignatureDeserializerInterface: ::REFGUID, ppRootSignatureDeserializer: *mut *mut ::c_void) -> ::HRESULT;
+pub type PFN_D3D12_GET_DEBUG_INTERFACE = extern "system" fn (_ : ::REFGUID, _ : *mut *mut ::c_void) -> ::HRESULT;
+pub type PFN_D3D12_SERIALIZE_ROOT_SIGNATURE = extern "system" fn (pRootSignature: *const ::D3D12_ROOT_SIGNATURE_DESC, Version: ::D3D_ROOT_SIGNATURE_VERSION, ppBlob: *mut *mut ::ID3DBlob, ppErrorBlob: *mut *mut ::ID3DBlob) -> ::HRESULT;
diff --git a/third_party/rust/winapi-0.2.8/src/d3d12sdklayers.rs b/third_party/rust/winapi-0.2.8/src/d3d12sdklayers.rs
new file mode 100644
index 0000000000..f1598867ed
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d12sdklayers.rs
@@ -0,0 +1,1063 @@
+// Copyright © 2015, Dmitry Roschin
+// Licensed under the MIT License <LICENSE.md>
+RIDL!{interface ID3D12Debug(ID3D12DebugVtbl): IUnknown(IUnknownVtbl) {
+ fn EnableDebugLayer(&mut self) -> ()
+}}
+FLAGS!{enum D3D12_DEBUG_FEATURE {
+ D3D12_DEBUG_FEATURE_NONE = 0,
+ D3D12_DEBUG_FEATURE_TREAT_BUNDLE_AS_DRAW = 0x1,
+ D3D12_DEBUG_FEATURE_TREAT_BUNDLE_AS_DISPATCH = 0x2,
+}}
+FLAGS!{enum D3D12_RLDO_FLAGS {
+ D3D12_RLDO_NONE = 0x0,
+ D3D12_RLDO_SUMMARY = 0x1,
+ D3D12_RLDO_DETAIL = 0x2,
+ D3D12_RLDO_IGNORE_INTERNAL = 0x4,
+}}
+RIDL!{interface ID3D12DebugDevice(ID3D12DebugDeviceVtbl): IUnknown(IUnknownVtbl) {
+ fn SetFeatureMask(&mut self, Mask: ::D3D12_DEBUG_FEATURE) -> ::HRESULT,
+ fn GetFeatureMask(&mut self) -> ::D3D12_DEBUG_FEATURE,
+ fn ReportLiveDeviceObjects(&mut self, Flags: ::D3D12_RLDO_FLAGS) -> ::HRESULT
+}}
+RIDL!{interface ID3D12DebugCommandQueue(ID3D12DebugCommandQueueVtbl): IUnknown(IUnknownVtbl) {
+ fn AssertResourceState(
+ &mut self, pResource: *mut ::ID3D12Resource, Subresource: ::UINT, State: ::UINT
+ ) -> ::BOOL
+}}
+RIDL!{interface ID3D12DebugCommandList(ID3D12DebugCommandListVtbl): IUnknown(IUnknownVtbl) {
+ fn AssertResourceState(
+ &mut self, pResource: *mut ::ID3D12Resource, Subresource: ::UINT, State: ::UINT
+ ) -> ::BOOL,
+ fn SetFeatureMask(&mut self, Mask: ::D3D12_DEBUG_FEATURE) -> ::HRESULT,
+ fn GetFeatureMask(&mut self) -> ::D3D12_DEBUG_FEATURE
+}}
+ENUM!{enum D3D12_MESSAGE_CATEGORY {
+ D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
+ D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = 1,
+ D3D12_MESSAGE_CATEGORY_INITIALIZATION = 2,
+ D3D12_MESSAGE_CATEGORY_CLEANUP = 3,
+ D3D12_MESSAGE_CATEGORY_COMPILATION = 4,
+ D3D12_MESSAGE_CATEGORY_STATE_CREATION = 5,
+ D3D12_MESSAGE_CATEGORY_STATE_SETTING = 6,
+ D3D12_MESSAGE_CATEGORY_STATE_GETTING = 7,
+ D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = 8,
+ D3D12_MESSAGE_CATEGORY_EXECUTION = 9,
+ D3D12_MESSAGE_CATEGORY_SHADER = 10,
+}}
+ENUM!{enum D3D12_MESSAGE_SEVERITY {
+ D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
+ D3D12_MESSAGE_SEVERITY_ERROR = 1,
+ D3D12_MESSAGE_SEVERITY_WARNING = 2,
+ D3D12_MESSAGE_SEVERITY_INFO = 3,
+ D3D12_MESSAGE_SEVERITY_MESSAGE = 4,
+}}
+ENUM!{enum D3D12_MESSAGE_ID {
+ D3D12_MESSAGE_ID_UNKNOWN = 0,
+ D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
+ D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
+ D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
+ D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
+ D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN = 22,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS = 23,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN = 33,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN = 34,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN = 43,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN = 44,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN = 50,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN = 51,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL = 77,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL = 78,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC = 99,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC = 110,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC = 118,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER = 119,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU = 120,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV = 121,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW = 122,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS = 123,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY = 124,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC = 125,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD = 126,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD = 127,
+ D3D12_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC = 128,
+ D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED = 129,
+ D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED = 130,
+ D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT = 131,
+ D3D12_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR = 132,
+ D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH = 133,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH = 134,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE = 136,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE = 137,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE = 138,
+ D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE = 139,
+ D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX = 140,
+ D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE = 141,
+ D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID = 142,
+ D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID = 143,
+ D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID = 144,
+ D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID = 145,
+ D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID = 146,
+ D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE = 147,
+ D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS = 148,
+ D3D12_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED = 149,
+ D3D12_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN = 150,
+ D3D12_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED = 151,
+ D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE = 152,
+ D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE = 153,
+ D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS = 154,
+ D3D12_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED = 155,
+ D3D12_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN = 156,
+ D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE = 157,
+ D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED = 158,
+ D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE = 159,
+ D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE = 160,
+ D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS = 161,
+ D3D12_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED = 162,
+ D3D12_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN = 163,
+ D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE = 164,
+ D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED = 165,
+ D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE = 166,
+ D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE = 167,
+ D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS = 168,
+ D3D12_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED = 169,
+ D3D12_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN = 170,
+ D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE = 171,
+ D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED = 172,
+ D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED = 173,
+ D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED = 174,
+ D3D12_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS = 175,
+ D3D12_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN = 176,
+ D3D12_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN = 177,
+ D3D12_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE = 178,
+ D3D12_MESSAGE_ID_REF_THREADING_MODE = 179,
+ D3D12_MESSAGE_ID_REF_UMDRIVER_EXCEPTION = 180,
+ D3D12_MESSAGE_ID_REF_KMDRIVER_EXCEPTION = 181,
+ D3D12_MESSAGE_ID_REF_HARDWARE_EXCEPTION = 182,
+ D3D12_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE = 183,
+ D3D12_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER = 184,
+ D3D12_MESSAGE_ID_REF_OUT_OF_MEMORY = 185,
+ D3D12_MESSAGE_ID_REF_INFO = 186,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW = 187,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW = 188,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW = 189,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW = 190,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW = 191,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW = 192,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET = 193,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 194,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX = 195,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE = 196,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK = 197,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE = 198,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 199,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INPUTLAYOUT_NOT_SET = 203,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_NOT_SET = 204,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_TOO_SMALL = 205,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SAMPLER_NOT_SET = 206,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SHADERRESOURCEVIEW_NOT_SET = 207,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VIEW_DIMENSION_MISMATCH = 208,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_GS_INPUT_PRIMITIVE_MISMATCH = 214,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_RETURN_TYPE_MISMATCH = 215,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_POSITION_NOT_PRESENT = 216,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_NOT_SET = 217,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_BOUND_RESOURCE_MAPPED = 218,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_OFFSET_UNALIGNED = 220,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED = 223,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED = 224,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED = 225,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED = 226,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED = 227,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE = 228,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_STRIDE_LARGER_THAN_BUFFER = 229,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 230,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 231,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
+ D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN = 235,
+ D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN = 236,
+ D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN = 237,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET = 238,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
+ D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH = 241,
+ D3D12_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW = 242,
+ D3D12_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS = 243,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH = 244,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
+ D3D12_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY = 246,
+ D3D12_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY = 247,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH = 248,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED = 249,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 250,
+ D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE = 251,
+ D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE = 252,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH = 254,
+ D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
+ D3D12_MESSAGE_ID_LIVE_BUFFER = 256,
+ D3D12_MESSAGE_ID_LIVE_TEXTURE1D = 257,
+ D3D12_MESSAGE_ID_LIVE_TEXTURE2D = 258,
+ D3D12_MESSAGE_ID_LIVE_TEXTURE3D = 259,
+ D3D12_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW = 260,
+ D3D12_MESSAGE_ID_LIVE_RENDERTARGETVIEW = 261,
+ D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW = 262,
+ D3D12_MESSAGE_ID_LIVE_VERTEXSHADER = 263,
+ D3D12_MESSAGE_ID_LIVE_GEOMETRYSHADER = 264,
+ D3D12_MESSAGE_ID_LIVE_PIXELSHADER = 265,
+ D3D12_MESSAGE_ID_LIVE_INPUTLAYOUT = 266,
+ D3D12_MESSAGE_ID_LIVE_SAMPLER = 267,
+ D3D12_MESSAGE_ID_LIVE_BLENDSTATE = 268,
+ D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE = 269,
+ D3D12_MESSAGE_ID_LIVE_RASTERIZERSTATE = 270,
+ D3D12_MESSAGE_ID_LIVE_QUERY = 271,
+ D3D12_MESSAGE_ID_LIVE_PREDICATE = 272,
+ D3D12_MESSAGE_ID_LIVE_COUNTER = 273,
+ D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
+ D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS = 279,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS = 281,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE = 282,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL = 288,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL = 293,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH = 298,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER = 299,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED = 300,
+ D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW = 301,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE = 302,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE = 303,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS = 304,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED = 305,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN = 306,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN = 307,
+ D3D12_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD = 308,
+ D3D12_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE = 309,
+ D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS = 311,
+ D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED = 312,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH = 313,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 314,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 315,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 316,
+ D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE = 317,
+ D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
+ D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN = 319,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL = 320,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
+ D3D12_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY = 324,
+ D3D12_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER = 325,
+ D3D12_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY = 326,
+ D3D12_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY = 327,
+ D3D12_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY = 328,
+ D3D12_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY = 329,
+ D3D12_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY = 330,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
+ D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE = 338,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS = 339,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
+ D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS = 347,
+ D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP = 348,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN = 349,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN = 350,
+ D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH = 351,
+ D3D12_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY = 352,
+ D3D12_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY = 353,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER = 355,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED = 356,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW = 357,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY = 358,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY = 359,
+ D3D12_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED = 360,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH = 361,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET = 362,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP = 363,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH = 364,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED = 365,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED = 366,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH = 367,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH = 368,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED = 369,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED = 370,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED = 371,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED = 372,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED = 373,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED = 374,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED = 375,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED = 376,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED = 377,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED = 378,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW = 379,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO = 380,
+ D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH = 381,
+ D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH = 382,
+ D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED = 383,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED = 384,
+ D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED = 385,
+ D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET = 386,
+ D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET = 387,
+ D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE = 388,
+ D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE = 389,
+ D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED = 390,
+ D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT = 391,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED = 392,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_PIXEL_SHADER_WITHOUT_RTV_OR_DSV = 393,
+ D3D12_MESSAGE_ID_SHADER_ABORT = 394,
+ D3D12_MESSAGE_ID_SHADER_MESSAGE = 395,
+ D3D12_MESSAGE_ID_SHADER_ERROR = 396,
+ D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDRESOURCE = 397,
+ D3D12_MESSAGE_ID_ENQUEUESETEVENT_INVALIDARG_RETURN = 398,
+ D3D12_MESSAGE_ID_ENQUEUESETEVENT_OUTOFMEMORY_RETURN = 399,
+ D3D12_MESSAGE_ID_ENQUEUESETEVENT_ACCESSDENIED_RETURN = 400,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 402,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDARRAYWITHDECODER = 404,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDARRAYWITHDECODER = 405,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDARRAYWITHDECODER = 406,
+ D3D12_MESSAGE_ID_DEVICE_LOCKEDOUT_INTERFACE = 407,
+ D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDPRIORITY = 408,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDVIEW = 409,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_SHADEREXTENSIONSNOTSUPPORTED = 411,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_SHADEREXTENSIONSNOTSUPPORTED = 413,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_SHADEREXTENSIONSNOTSUPPORTED = 415,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_SHADEREXTENSIONSNOTSUPPORTED = 417,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_SHADEREXTENSIONSNOTSUPPORTED = 419,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_SHADEREXTENSIONSNOTSUPPORTED = 421,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_SHADEREXTENSIONSNOTSUPPORTED = 423,
+ D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_MINPRECISION = 424,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
+ D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_INVALIDOFFSET = 432,
+ D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_TOOMANYVIEWS = 433,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_NOTSUPPORTED = 434,
+ D3D12_MESSAGE_ID_SWAPDEVICECONTEXTSTATE_NOTSUPPORTED = 435,
+ D3D12_MESSAGE_ID_UPDATESUBRESOURCE_PREFERUPDATESUBRESOURCE1 = 436,
+ D3D12_MESSAGE_ID_GETDC_INACCESSIBLE = 437,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDRECT = 438,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLE_MASK_IGNORED_ON_FL9 = 439,
+ D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE1_NOT_SUPPORTED = 440,
+ D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BY_NAME_NOT_SUPPORTED = 441,
+ D3D12_MESSAGE_ID_ENQUEUESETEVENT_NOT_SUPPORTED = 442,
+ D3D12_MESSAGE_ID_OFFERRELEASE_NOT_SUPPORTED = 443,
+ D3D12_MESSAGE_ID_OFFERRESOURCES_INACCESSIBLE = 444,
+ D3D12_MESSAGE_ID_CREATEVIDEOPROCESSORINPUTVIEW_INVALIDMSAA = 445,
+ D3D12_MESSAGE_ID_CREATEVIDEOPROCESSOROUTPUTVIEW_INVALIDMSAA = 446,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
+ D3D12_MESSAGE_ID_UPDATESUBRESOURCE_EMPTYDESTBOX = 449,
+ D3D12_MESSAGE_ID_COPYSUBRESOURCEREGION_EMPTYSOURCEBOX = 450,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 451,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_DEPTHSTENCILVIEW_NOT_SET = 452,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET = 453,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET_DUE_TO_FLIP_PRESENT = 454,
+ D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET_DUE_TO_FLIP_PRESENT = 455,
+ D3D12_MESSAGE_ID_GETDATAFORNEWHARDWAREKEY_NULLPARAM = 456,
+ D3D12_MESSAGE_ID_CHECKCRYPTOSESSIONSTATUS_NULLPARAM = 457,
+ D3D12_MESSAGE_ID_SETEVENTONHARDWARECONTENTPROTECTIONTILT_NULLPARAM = 458,
+ D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_NULLPARAM = 459,
+ D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_ZEROWIDTHHEIGHT = 460,
+ D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_NULLPARAM = 461,
+ D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE = 462,
+ D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT = 463,
+ D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_NULLPARAM = 464,
+ D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_UNSUPPORTED = 465,
+ D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_NULLPARAM = 466,
+ D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_UNSUPPORTED = 467,
+ D3D12_MESSAGE_ID_CHECKVIDEOPROCESSORFORMATCONVERSION_NULLPARAM = 468,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTCOLORSPACE1_NULLPARAM = 469,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTCOLORSPACE1_NULLPARAM = 470,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_NULLPARAM = 471,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_INVALIDSTREAM = 472,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_NULLPARAM = 473,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_INVALIDSTREAM = 474,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_UNSUPPORTED = 475,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMCOLORSPACE1_NULLPARAM = 476,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMMIRROR_NULLPARAM = 477,
+ D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_NULLPARAM = 478,
+ D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE = 479,
+ D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT = 480,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTSHADERUSAGE_NULLPARAM = 481,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTSHADERUSAGE_NULLPARAM = 482,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_NULLPARAM = 483,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSTREAMCOUNT = 484,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_TARGETRECT = 485,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSOURCERECT = 486,
+ D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDDESTRECT = 487,
+ D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDUSAGE = 488,
+ D3D12_MESSAGE_ID_CREATETEXTURE1D_INVALIDUSAGE = 489,
+ D3D12_MESSAGE_ID_CREATETEXTURE2D_INVALIDUSAGE = 490,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_STEPRATE_NOT_1 = 491,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_INSTANCING_NOT_SUPPORTED = 492,
+ D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
+ D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
+ D3D12_MESSAGE_ID_COPYTILES_INVALID_PARAMETER = 495,
+ D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_WARNING = 496,
+ D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_ERROR = 497,
+ D3D12_MESSAGE_ID_DIRTY_TILE_MAPPING_ACCESS = 498,
+ D3D12_MESSAGE_ID_DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA = 499,
+ D3D12_MESSAGE_ID_TILE_MAPPINGS_IN_COVERED_AREA_DUPLICATED_OUTSIDE = 500,
+ D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INCOMPATIBLE_RESOURCES = 501,
+ D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INPUT_AND_OUTPUT = 502,
+ D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_INVALIDFLAGS = 503,
+ D3D12_MESSAGE_ID_GETRESOURCETILING_NONTILED_RESOURCE = 504,
+ D3D12_MESSAGE_ID_NEED_TO_CALL_TILEDRESOURCEBARRIER = 505,
+ D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
+ D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
+ D3D12_MESSAGE_ID_TILED_RESOURCE_TIER_1_BUFFER_TEXTURE_MISMATCH = 508,
+ D3D12_MESSAGE_ID_CREATE_CRYPTOSESSION = 509,
+ D3D12_MESSAGE_ID_CREATE_AUTHENTICATEDCHANNEL = 510,
+ D3D12_MESSAGE_ID_LIVE_CRYPTOSESSION = 511,
+ D3D12_MESSAGE_ID_LIVE_AUTHENTICATEDCHANNEL = 512,
+ D3D12_MESSAGE_ID_DESTROY_CRYPTOSESSION = 513,
+ D3D12_MESSAGE_ID_DESTROY_AUTHENTICATEDCHANNEL = 514,
+ D3D12_MESSAGE_ID_MAP_INVALID_SUBRESOURCE = 515,
+ D3D12_MESSAGE_ID_MAP_INVALID_TYPE = 516,
+ D3D12_MESSAGE_ID_MAP_UNSUPPORTED_TYPE = 517,
+ D3D12_MESSAGE_ID_UNMAP_INVALID_SUBRESOURCE = 518,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
+ D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
+ D3D12_MESSAGE_ID_INEFFICIENT_PRESENT = 539,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
+ D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
+ D3D12_MESSAGE_ID_QUERY_STATE_MISMATCH = 545,
+ D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
+ D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
+ D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED_WITH_INVALID_RESOURCE = 548,
+ D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
+ D3D12_MESSAGE_ID_INVALID_INDIRECT_ARGUMENT_BUFFER = 550,
+ D3D12_MESSAGE_ID_COMPUTE_AND_GRAPHICS_PIPELINE = 551,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
+ D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
+ D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_IMAGE_NOT_SUPPORTED = 555,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_IMAGE_NOT_SUPPORTED = 556,
+ D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
+ D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
+ D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
+ D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
+ D3D12_MESSAGE_ID_CREATE_IMAGECOMMANDLIST = 561,
+ D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
+ D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
+ D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
+ D3D12_MESSAGE_ID_CREATE_HEAP = 566,
+ D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
+ D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
+ D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
+ D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
+ D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
+ D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
+ D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
+ D3D12_MESSAGE_ID_LIVE_IMAGECOMMANDLIST = 574,
+ D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
+ D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
+ D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
+ D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
+ D3D12_MESSAGE_ID_LIVE_HEAP = 579,
+ D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
+ D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
+ D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
+ D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
+ D3D12_MESSAGE_ID_DESTROY_IMAGECOMMANDLIST = 587,
+ D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
+ D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
+ D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
+ D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
+ D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
+ D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
+ D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDHEAPTYPE = 596,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDMISCFLAGS = 598,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
+ D3D12_MESSAGE_ID_CREATERESOURCE_LARGEALLOCATION = 600,
+ D3D12_MESSAGE_ID_CREATERESOURCE_SMALLALLOCATION = 601,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
+ D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
+ D3D12_MESSAGE_ID_RESOURCE_HAS_PENDING_INITIAL_DATA = 606,
+ D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
+ D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
+ D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
+ D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
+ D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
+ D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_PIPELINE_STATE = 612,
+ D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
+ D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
+ D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_BUNDLE_PIPELINE_STATE = 617,
+ D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE = 618,
+ D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE = 619,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE = 620,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE = 621,
+ D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
+ D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
+ D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
+ D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
+ D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
+ D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
+ D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_SYSTEMVALUE = 648,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_LARGE_OFFSET = 651,
+ D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
+ D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
+ D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
+ D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
+ D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
+ D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
+ D3D12_MESSAGE_ID_MAKERESIDENT_INVALIDOBJECT = 704,
+ D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
+ D3D12_MESSAGE_ID_EVICT_INVALIDOBJECT = 706,
+ D3D12_MESSAGE_ID_HEAPS_UNSUPPORTED = 707,
+ D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
+ D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
+ D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
+ D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
+ D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_LARGE_OFFSET = 714,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_LARGE_OFFSET = 716,
+ D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
+ D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
+ D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_JPEG_NOT_SUPPORTED = 730,
+ D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
+ D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
+ D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
+ D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
+ D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
+ D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
+ D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
+ D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
+ D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
+ D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
+ D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
+ D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
+ D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
+ D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
+ D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANEINDEX = 749,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANEINDEX = 750,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_AMBIGUOUSVIDEOPLANEINDEX = 751,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANEINDEX = 752,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANEINDEX = 753,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_AMBIGUOUSVIDEOPLANEINDEX = 754,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANEINDEX = 755,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANEINDEX = 756,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_AMBIGUOUSVIDEOPLANEINDEX = 757,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSCANDATAOFFSET = 758,
+ D3D12_MESSAGE_ID_JPEGDECODE_NOTSUPPORTED = 759,
+ D3D12_MESSAGE_ID_JPEGDECODE_DIMENSIONSTOOLARGE = 760,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOMPONENTS = 761,
+ D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDCOMPONENTS = 762,
+ D3D12_MESSAGE_ID_JPEGDECODE_DESTINATIONNOT2D = 763,
+ D3D12_MESSAGE_ID_JPEGDECODE_TILEDRESOURCESUNSUPPORTED = 764,
+ D3D12_MESSAGE_ID_JPEGDECODE_GUARDRECTSUNSUPPORTED = 765,
+ D3D12_MESSAGE_ID_JPEGDECODE_FORMATUNSUPPORTED = 766,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSUBRESOURCE = 767,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDMIPLEVEL = 768,
+ D3D12_MESSAGE_ID_JPEGDECODE_EMPTYDESTBOX = 769,
+ D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOT2D = 770,
+ D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOTSUB = 771,
+ D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXESINTERSECT = 772,
+ D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEMISMATCH = 773,
+ D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEMISMATCH = 774,
+ D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEODD = 775,
+ D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEODD = 776,
+ D3D12_MESSAGE_ID_JPEGDECODE_UPSCALEUNSUPPORTED = 777,
+ D3D12_MESSAGE_ID_JPEGDECODE_TIER4DOWNSCALETOLARGE = 778,
+ D3D12_MESSAGE_ID_JPEGDECODE_TIER3DOWNSCALEUNSUPPORTED = 779,
+ D3D12_MESSAGE_ID_JPEGDECODE_CHROMASIZEMISMATCH = 780,
+ D3D12_MESSAGE_ID_JPEGDECODE_LUMACHROMASIZEMISMATCH = 781,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDNUMDESTINATIONS = 782,
+ D3D12_MESSAGE_ID_JPEGDECODE_SUBBOXUNSUPPORTED = 783,
+ D3D12_MESSAGE_ID_JPEGDECODE_1DESTUNSUPPORTEDFORMAT = 784,
+ D3D12_MESSAGE_ID_JPEGDECODE_3DESTUNSUPPORTEDFORMAT = 785,
+ D3D12_MESSAGE_ID_JPEGDECODE_SCALEUNSUPPORTED = 786,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSOURCESIZE = 787,
+ D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOPYFLAGS = 788,
+ D3D12_MESSAGE_ID_JPEGDECODE_HAZARD = 789,
+ D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERUSAGE = 790,
+ D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERMISCFLAGS = 791,
+ D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDDSTTEXTUREUSAGE = 792,
+ D3D12_MESSAGE_ID_JPEGDECODE_BACKBUFFERNOTSUPPORTED = 793,
+ D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPRTEDCOPYFLAGS = 794,
+ D3D12_MESSAGE_ID_JPEGENCODE_NOTSUPPORTED = 795,
+ D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSCANDATAOFFSET = 796,
+ D3D12_MESSAGE_ID_JPEGENCODE_INVALIDCOMPONENTS = 797,
+ D3D12_MESSAGE_ID_JPEGENCODE_SOURCENOT2D = 798,
+ D3D12_MESSAGE_ID_JPEGENCODE_TILEDRESOURCESUNSUPPORTED = 799,
+ D3D12_MESSAGE_ID_JPEGENCODE_GUARDRECTSUNSUPPORTED = 800,
+ D3D12_MESSAGE_ID_JPEGENCODE_XSUBSAMPLEMISMATCH = 801,
+ D3D12_MESSAGE_ID_JPEGENCODE_YSUBSAMPLEMISMATCH = 802,
+ D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDCOMPONENTS = 803,
+ D3D12_MESSAGE_ID_JPEGENCODE_FORMATUNSUPPORTED = 804,
+ D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSUBRESOURCE = 805,
+ D3D12_MESSAGE_ID_JPEGENCODE_INVALIDMIPLEVEL = 806,
+ D3D12_MESSAGE_ID_JPEGENCODE_DIMENSIONSTOOLARGE = 807,
+ D3D12_MESSAGE_ID_JPEGENCODE_HAZARD = 808,
+ D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERUSAGE = 809,
+ D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERMISCFLAGS = 810,
+ D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDSRCTEXTUREUSAGE = 811,
+ D3D12_MESSAGE_ID_JPEGENCODE_BACKBUFFERNOTSUPPORTED = 812,
+ D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_UNSUPPORTEDCONTEXTTTYPEFORQUERY = 813,
+ D3D12_MESSAGE_ID_FLUSH1_INVALIDCONTEXTTYPE = 814,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
+ D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALIDDEPTH = 819,
+ D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
+ D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
+ D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
+ D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
+ D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
+ D3D12_MESSAGE_ID_MAP_NULLRANGE = 830,
+ D3D12_MESSAGE_ID_UNMAP_NULLRANGE = 831,
+ D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
+ D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
+ D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
+ D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
+ D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
+ D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
+ D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
+ D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
+ D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
+ D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
+ D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
+ D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
+ D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
+ D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
+ D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
+ D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
+ D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
+ D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
+ D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_NEEDED = 928,
+ D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
+ D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
+ D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
+ D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
+ D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
+ D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 934,
+}}
+STRUCT!{struct D3D12_MESSAGE {
+ Category: D3D12_MESSAGE_CATEGORY,
+ Severity: D3D12_MESSAGE_SEVERITY,
+ ID: D3D12_MESSAGE_ID,
+ pDescription: *const ::c_char,
+ DescriptionByteLength: ::SIZE_T,
+}}
+STRUCT!{struct D3D12_INFO_QUEUE_FILTER_DESC {
+ NumCategories: ::UINT,
+ pCategoryList: *mut D3D12_MESSAGE_CATEGORY,
+ NumSeverities: ::UINT,
+ pSeverityList: *mut D3D12_MESSAGE_SEVERITY,
+ NumIDs: ::UINT,
+ pIDList: *mut D3D12_MESSAGE_ID,
+}}
+STRUCT!{struct D3D12_INFO_QUEUE_FILTER {
+ AllowList: D3D12_INFO_QUEUE_FILTER_DESC,
+ DenyList: D3D12_INFO_QUEUE_FILTER_DESC,
+}}
+pub const D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT: ::UINT = 1024;
+RIDL!{interface ID3D12InfoQueue(ID3D12InfoQueueVtbl): IUnknown(IUnknownVtbl) {
+ fn SetMessageCountLimit(&mut self, MessageCountLimit: ::UINT64) -> ::HRESULT,
+ fn ClearStoredMessages(&mut self) -> (),
+ fn GetMessage(
+ &mut self, MessageIndex: ::UINT64, pMessage: *mut ::D3D12_MESSAGE,
+ pMessageByteLength: *mut ::SIZE_T
+ ) -> ::HRESULT,
+ fn GetNumMessagesAllowedByStorageFilter(&mut self) -> ::UINT64,
+ fn GetNumMessagesDeniedByStorageFilter(&mut self) -> ::UINT64,
+ fn GetNumStoredMessages(&mut self) -> ::UINT64,
+ fn GetNumStoredMessagesAllowedByRetrievalFilter(&mut self) -> ::UINT64,
+ fn GetNumMessagesDiscardedByMessageCountLimit(&mut self) -> ::UINT64,
+ fn GetMessageCountLimit(&mut self) -> ::UINT64,
+ fn AddStorageFilterEntries(&mut self, pFilter: *mut ::D3D12_INFO_QUEUE_FILTER) -> ::HRESULT,
+ fn GetStorageFilter(
+ &mut self, pFilter: *mut ::D3D12_INFO_QUEUE_FILTER, pFilterByteLength: *mut ::SIZE_T
+ ) -> ::HRESULT,
+ fn ClearStorageFilter(&mut self) -> (),
+ fn PushEmptyStorageFilter(&mut self) -> ::HRESULT,
+ fn PushCopyOfStorageFilter(&mut self) -> ::HRESULT,
+ fn PushStorageFilter(&mut self, pFilter: *mut ::D3D12_INFO_QUEUE_FILTER) -> ::HRESULT,
+ fn PopStorageFilter(&mut self) -> (),
+ fn GetStorageFilterStackSize(&mut self) -> ::UINT,
+ fn AddRetrievalFilterEntries(&mut self, pFilter: *mut ::D3D12_INFO_QUEUE_FILTER) -> ::HRESULT,
+ fn GetRetrievalFilter(
+ &mut self, pFilter: *mut ::D3D12_INFO_QUEUE_FILTER, pFilterByteLength: *mut ::SIZE_T
+ ) -> ::HRESULT,
+ fn ClearRetrievalFilter(&mut self) -> (),
+ fn PushEmptyRetrievalFilter(&mut self) -> ::HRESULT,
+ fn PushCopyOfRetrievalFilter(&mut self) -> ::HRESULT,
+ fn PushRetrievalFilter(&mut self, pFilter: *mut ::D3D12_INFO_QUEUE_FILTER) -> ::HRESULT,
+ fn PopRetrievalFilter(&mut self) -> (),
+ fn GetRetrievalFilterStackSize(&mut self) -> ::UINT,
+ fn AddMessage(
+ &mut self, Category: ::D3D12_MESSAGE_CATEGORY, Severity: ::D3D12_MESSAGE_SEVERITY,
+ ID: ::D3D12_MESSAGE_ID, pDescription: ::LPCSTR
+ ) -> ::HRESULT,
+ fn AddApplicationMessage(
+ &mut self, Severity: ::D3D12_MESSAGE_SEVERITY, pDescription: ::LPCSTR
+ ) -> ::HRESULT,
+ fn SetBreakOnCategory(
+ &mut self, Category: ::D3D12_MESSAGE_CATEGORY, bEnable: ::BOOL
+ ) -> ::HRESULT,
+ fn SetBreakOnSeverity(
+ &mut self, Severity: ::D3D12_MESSAGE_SEVERITY, bEnable: ::BOOL
+ ) -> ::HRESULT,
+ fn SetBreakOnID(&mut self, ID: ::D3D12_MESSAGE_ID, bEnable: ::BOOL) -> ::HRESULT,
+ fn GetBreakOnCategory(&mut self, Category: ::D3D12_MESSAGE_CATEGORY) -> ::BOOL,
+ fn GetBreakOnSeverity(&mut self, Severity: ::D3D12_MESSAGE_SEVERITY) -> ::BOOL,
+ fn GetBreakOnID(&mut self, ID: ::D3D12_MESSAGE_ID) -> ::BOOL,
+ fn SetMuteDebugOutput(&mut self, bMute: ::BOOL) -> (),
+ fn GetMuteDebugOutput(&mut self) -> ::BOOL
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/d3d12shader.rs b/third_party/rust/winapi-0.2.8/src/d3d12shader.rs
new file mode 100644
index 0000000000..bd210b25d4
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d12shader.rs
@@ -0,0 +1,320 @@
+// Copyright © 2016; Dmitry Roschin
+// Licensed under the MIT License <LICENSE.md>
+FLAGS!{ enum D3D12_SHADER_VERSION_TYPE {
+ D3D12_SHVER_PIXEL_SHADER = 0x0,
+ D3D12_SHVER_VERTEX_SHADER = 0x1,
+ D3D12_SHVER_GEOMETRY_SHADER = 0x2,
+ D3D12_SHVER_HULL_SHADER = 0x3,
+ D3D12_SHVER_DOMAIN_SHADER = 0x4,
+ D3D12_SHVER_COMPUTE_SHADER = 0x5,
+ D3D12_SHVER_RESERVED0 = 0xFFF0,
+}}
+
+STRUCT!{struct D3D12_FUNCTION_DESC {
+ Version: ::UINT,
+ Creator: ::LPCSTR,
+ Flags: ::UINT,
+ ConstantBuffers: ::UINT,
+ BoundResources: ::UINT,
+ InstructionCount: ::UINT,
+ TempRegisterCount: ::UINT,
+ TempArrayCount: ::UINT,
+ DefCount: ::UINT,
+ DclCount: ::UINT,
+ TextureNormalInstructions: ::UINT,
+ TextureLoadInstructions: ::UINT,
+ TextureCompInstructions: ::UINT,
+ TextureBiasInstructions: ::UINT,
+ TextureGradientInstructions: ::UINT,
+ FloatInstructionCount: ::UINT,
+ IntInstructionCount: ::UINT,
+ UintInstructionCount: ::UINT,
+ StaticFlowControlCount: ::UINT,
+ DynamicFlowControlCount: ::UINT,
+ MacroInstructionCount: ::UINT,
+ ArrayInstructionCount: ::UINT,
+ MovInstructionCount: ::UINT,
+ MovcInstructionCount: ::UINT,
+ ConversionInstructionCount: ::UINT,
+ BitwiseInstructionCount: ::UINT,
+ MinFeatureLevel: ::D3D_FEATURE_LEVEL,
+ RequiredFeatureFlags: ::UINT64,
+ Name: ::LPCSTR,
+ FunctionParameterCount: ::INT,
+ HasReturn: ::BOOL,
+ Has10Level9VertexShader: ::BOOL,
+ Has10Level9PixelShader: ::BOOL,
+}}
+
+STRUCT!{struct D3D12_LIBRARY_DESC {
+ Creator: ::LPCSTR,
+ Flags: ::UINT,
+ FunctionCount: ::UINT,
+}}
+
+STRUCT!{struct D3D12_PARAMETER_DESC {
+ Name: ::LPCSTR,
+ SemanticName: ::LPCSTR,
+ Type: ::D3D_SHADER_VARIABLE_TYPE,
+ Class: ::D3D_SHADER_VARIABLE_CLASS,
+ Rows: ::UINT,
+ Columns: ::UINT,
+ InterpolationMode: ::D3D_INTERPOLATION_MODE,
+ Flags: ::D3D_PARAMETER_FLAGS,
+ FirstInRegister: ::UINT,
+ FirstInComponent: ::UINT,
+ FirstOutRegister: ::UINT,
+ FirstOutComponent: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SHADER_BUFFER_DESC {
+ Name: ::LPCSTR,
+ Type: ::D3D_CBUFFER_TYPE,
+ Variables: ::UINT,
+ Size: ::UINT,
+ uFlags: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SHADER_DESC {
+ Version: ::UINT,
+ Creator: ::LPCSTR,
+ Flags: ::UINT,
+ ConstantBuffers: ::UINT,
+ BoundResources: ::UINT,
+ InputParameters: ::UINT,
+ OutputParameters: ::UINT,
+ InstructionCount: ::UINT,
+ TempRegisterCount: ::UINT,
+ TempArrayCount: ::UINT,
+ DefCount: ::UINT,
+ DclCount: ::UINT,
+ TextureNormalInstructions: ::UINT,
+ TextureLoadInstructions: ::UINT,
+ TextureCompInstructions: ::UINT,
+ TextureBiasInstructions: ::UINT,
+ TextureGradientInstructions: ::UINT,
+ FloatInstructionCount: ::UINT,
+ IntInstructionCount: ::UINT,
+ UintInstructionCount: ::UINT,
+ StaticFlowControlCount: ::UINT,
+ DynamicFlowControlCount: ::UINT,
+ MacroInstructionCount: ::UINT,
+ ArrayInstructionCount: ::UINT,
+ CutInstructionCount: ::UINT,
+ EmitInstructionCount: ::UINT,
+ GSOutputTopology: ::D3D_PRIMITIVE_TOPOLOGY,
+ GSMaxOutputVertexCount: ::UINT,
+ InputPrimitive: ::D3D_PRIMITIVE,
+ PatchConstantParameters: ::UINT,
+ cGSInstanceCount: ::UINT,
+ cControlPoints: ::UINT,
+ HSOutputPrimitive: ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE,
+ HSPartitioning: ::D3D_TESSELLATOR_PARTITIONING,
+ TessellatorDomain: ::D3D_TESSELLATOR_DOMAIN,
+ cBarrierInstructions: ::UINT,
+ cInterlockedInstructions: ::UINT,
+ cTextureStoreInstructions: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SHADER_INPUT_BIND_DESC {
+ Name: ::LPCSTR,
+ Type: ::D3D_SHADER_INPUT_TYPE,
+ BindPoint: ::UINT,
+ BindCount: ::UINT,
+ uFlags: ::UINT,
+ ReturnType: ::D3D_RESOURCE_RETURN_TYPE,
+ Dimension: ::D3D_SRV_DIMENSION,
+ NumSamples: ::UINT,
+ Space: ::UINT,
+ uID: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SHADER_TYPE_DESC {
+ Class: ::D3D_SHADER_VARIABLE_CLASS,
+ Type: ::D3D_SHADER_VARIABLE_TYPE,
+ Rows: ::UINT,
+ Columns: ::UINT,
+ Elements: ::UINT,
+ Members: ::UINT,
+ Offset: ::UINT,
+ Name: ::LPCSTR,
+}}
+
+STRUCT!{struct D3D12_SHADER_VARIABLE_DESC {
+ Name: ::LPCSTR,
+ StartOffset: ::UINT,
+ Size: ::UINT,
+ uFlags: ::UINT,
+ DefaultValue: ::LPVOID,
+ StartTexture: ::UINT,
+ TextureSize: ::UINT,
+ StartSampler: ::UINT,
+ SamplerSize: ::UINT,
+}}
+
+STRUCT!{struct D3D12_SIGNATURE_PARAMETER_DESC {
+ SemanticName: ::LPCSTR,
+ SemanticIndex: ::UINT,
+ Register: ::UINT,
+ SystemValueType: ::D3D_NAME,
+ ComponentType: ::D3D_REGISTER_COMPONENT_TYPE,
+ Mask: ::BYTE,
+ ReadWriteMask: ::BYTE,
+ Stream: ::UINT,
+ MinPrecision: ::D3D_MIN_PRECISION,
+}}
+
+RIDL!(
+interface ID3D12FunctionParameterReflection(ID3D12FunctionParameterReflectionVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut ::D3D12_PARAMETER_DESC) -> ::HRESULT
+});
+
+RIDL!(
+interface ID3D12FunctionReflection(ID3D12FunctionReflectionVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut ::D3D12_FUNCTION_DESC) -> ::HRESULT,
+ fn GetConstantBufferByIndex(
+ &mut self, BufferIndex: ::UINT
+ ) -> *mut ::ID3D12ShaderReflectionConstantBuffer,
+ fn GetConstantBufferByName(
+ &mut self, Name: ::LPCSTR
+ ) -> *mut ::ID3D12ShaderReflectionConstantBuffer,
+ fn GetResourceBindingDesc(
+ &mut self, ResourceIndex: ::UINT, pDesc: *mut ::D3D12_SHADER_INPUT_BIND_DESC
+ ) -> ::HRESULT,
+ fn GetVariableByName(
+ &mut self, Name: ::LPCSTR
+ ) -> *mut ::ID3D12ShaderReflectionVariable,
+ fn GetResourceBindingDescByName(
+ &mut self, Name: ::LPCSTR, pDesc: *mut ::D3D12_SHADER_INPUT_BIND_DESC
+ ) -> ::HRESULT,
+ fn GetFunctionParameter(
+ &mut self, ParameterIndex: ::INT
+ ) -> *mut ::ID3D12FunctionParameterReflection
+});
+
+RIDL!(
+interface ID3D12LibraryReflection(ID3D12LibraryReflectionVtbl): IUnknown(IUnknownVtbl) {
+ fn QueryInterface(
+ &mut self, iid: *const ::IID, ppv: *mut ::LPVOID
+ ) -> ::HRESULT,
+ fn AddRef(&mut self) -> ::ULONG,
+ fn Release(&mut self) -> ::ULONG,
+ fn GetDesc(&mut self, pDesc: *mut ::D3D12_LIBRARY_DESC) -> ::HRESULT,
+ fn GetFunctionByIndex(
+ &mut self, FunctionIndex: ::INT
+ ) -> *mut ::ID3D12FunctionReflection
+});
+
+RIDL!(
+interface ID3D12ShaderReflectionConstantBuffer(ID3D12ShaderReflectionConstantBufferVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut ::D3D12_SHADER_BUFFER_DESC) -> ::HRESULT,
+ fn GetVariableByIndex(
+ &mut self, Index: ::UINT
+ ) -> *mut ::ID3D12ShaderReflectionVariable,
+ fn GetVariableByName(
+ &mut self, Name: ::LPCSTR
+ ) -> *mut ::ID3D12ShaderReflectionVariable
+});
+
+RIDL!(
+interface ID3D12ShaderReflectionType(ID3D12ShaderReflectionTypeVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut ::D3D12_SHADER_TYPE_DESC) -> ::HRESULT,
+ fn GetMemberTypeByIndex(
+ &mut self, Index: ::UINT
+ ) -> *mut ::ID3D12ShaderReflectionType,
+ fn GetMemberTypeByName(
+ &mut self, Name: ::LPCSTR
+ ) -> *mut ::ID3D12ShaderReflectionType,
+ fn GetMemberTypeName(&mut self, Index: ::UINT) -> ::LPCSTR,
+ fn IsEqual(
+ &mut self, pType: *mut ::ID3D12ShaderReflectionType
+ ) -> ::HRESULT,
+ fn GetSubType(&mut self) -> *mut ::ID3D12ShaderReflectionType,
+ fn GetBaseClass(&mut self) -> *mut ::ID3D12ShaderReflectionType,
+ fn GetNumInterfaces(&mut self) -> ::UINT,
+ fn GetInterfaceByIndex(
+ &mut self, uIndex: ::UINT
+ ) -> *mut ::ID3D12ShaderReflectionType,
+ fn IsOfType(
+ &mut self, pType: *mut ::ID3D12ShaderReflectionType
+ ) -> ::HRESULT,
+ fn ImplementsInterface(
+ &mut self, pBase: *mut ::ID3D12ShaderReflectionType
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface ID3D12ShaderReflectionVariable(ID3D12ShaderReflectionVariableVtbl) {
+ fn GetDesc(
+ &mut self, pDesc: *mut ::D3D12_SHADER_VARIABLE_DESC
+ ) -> ::HRESULT,
+ fn GetType(&mut self) -> *mut ::ID3D12ShaderReflectionType,
+ fn GetBuffer(&mut self) -> *mut ::ID3D12ShaderReflectionConstantBuffer,
+ fn GetInterfaceSlot(&mut self, uArrayIndex: ::UINT) -> ::UINT
+});
+
+RIDL!(
+interface ID3D12ShaderReflection(ID3D12ShaderReflectionVtbl): IUnknown(IUnknownVtbl) {
+ fn QueryInterface(
+ &mut self, iid: *const ::IID, ppv: *mut ::LPVOID
+ ) -> ::HRESULT,
+ fn AddRef(&mut self) -> ::ULONG,
+ fn Release(&mut self) -> ::ULONG,
+ fn GetDesc(&mut self, pDesc: *mut ::D3D12_SHADER_DESC) -> ::HRESULT,
+ fn GetConstantBufferByIndex(
+ &mut self, Index: ::UINT
+ ) -> *mut ::ID3D12ShaderReflectionConstantBuffer,
+ fn GetConstantBufferByName(
+ &mut self, Name: ::LPCSTR
+ ) -> *mut ::ID3D12ShaderReflectionConstantBuffer,
+ fn GetResourceBindingDesc(
+ &mut self, ResourceIndex: ::UINT, pDesc: *mut ::D3D12_SHADER_INPUT_BIND_DESC
+ ) -> ::HRESULT,
+ fn GetInputParameterDesc(
+ &mut self, ParameterIndex: ::UINT, pDesc: *mut ::D3D12_SIGNATURE_PARAMETER_DESC
+ ) -> ::HRESULT,
+ fn GetOutputParameterDesc(
+ &mut self, ParameterIndex: ::UINT, pDesc: *mut ::D3D12_SIGNATURE_PARAMETER_DESC
+ ) -> ::HRESULT,
+ fn GetPatchConstantParameterDesc(
+ &mut self, ParameterIndex: ::UINT, pDesc: *mut ::D3D12_SIGNATURE_PARAMETER_DESC
+ ) -> ::HRESULT,
+ fn GetVariableByName(
+ &mut self, Name: ::LPCSTR
+ ) -> *mut ::ID3D12ShaderReflectionVariable,
+ fn GetResourceBindingDescByName(
+ &mut self, Name: ::LPCSTR, pDesc: *mut ::D3D12_SHADER_INPUT_BIND_DESC
+ ) -> ::HRESULT,
+ fn GetMovInstructionCount(&mut self) -> ::UINT,
+ fn GetMovcInstructionCount(&mut self) -> ::UINT,
+ fn GetConversionInstructionCount(&mut self) -> ::UINT,
+ fn GetBitwiseInstructionCount(&mut self) -> ::UINT,
+ fn GetGSInputPrimitive(&mut self) -> ::D3D_PRIMITIVE,
+ fn IsSampleFrequencyShader(&mut self) -> ::BOOL,
+ fn GetNumInterfaceSlots(&mut self) -> ::UINT,
+ fn GetMinFeatureLevel(
+ &mut self, pLevel: *mut ::D3D_FEATURE_LEVEL
+ ) -> ::HRESULT,
+ fn GetThreadGroupSize(
+ &mut self, pSizeX: *mut ::UINT, pSizeY: *mut ::UINT, pSizeZ: *mut ::UINT
+ ) -> ::UINT,
+ fn GetRequiresFlags(&mut self) -> ::UINT64
+});
+
+pub type D3D12_CBUFFER_TYPE = ::D3D_CBUFFER_TYPE;
+pub type D3D12_RESOURCE_RETURN_TYPE = ::D3D_RESOURCE_RETURN_TYPE;
+pub type D3D12_TESSELLATOR_DOMAIN = ::D3D_TESSELLATOR_DOMAIN;
+pub type D3D12_TESSELLATOR_OUTPUT_PRIMITIVE = ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
+pub type D3D12_TESSELLATOR_PARTITIONING = ::D3D_TESSELLATOR_PARTITIONING;
+pub type LPD3D12FUNCTIONPARAMETERREFLECTION = *mut ::ID3D12FunctionParameterReflection;
+pub type LPD3D12FUNCTIONREFLECTION = *mut ::ID3D12FunctionReflection;
+pub type LPD3D12LIBRARYREFLECTION = *mut ::ID3D12LibraryReflection;
+pub type LPD3D12SHADERREFLECTION = *mut ::ID3D12ShaderReflection;
+pub type LPD3D12SHADERREFLECTIONCONSTANTBUFFER = *mut ::ID3D12ShaderReflectionConstantBuffer;
+pub type LPD3D12SHADERREFLECTIONTYPE = *mut ::ID3D12ShaderReflectionType;
+pub type LPD3D12SHADERREFLECTIONVARIABLE = *mut ::ID3D12ShaderReflectionVariable;
+pub const D3D_SHADER_REQUIRES_INNER_COVERAGE: ::UINT64 = 0x00000400;
+pub const D3D_SHADER_REQUIRES_ROVS: ::UINT64 = 0x00001000;
+pub const D3D_SHADER_REQUIRES_STENCIL_REF: ::UINT64 = 0x00000200;
+pub const D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS: ::UINT64 = 0x00000800;
+pub const D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER: ::UINT64 = 0x00002000;
diff --git a/third_party/rust/winapi-0.2.8/src/d3d9.rs b/third_party/rust/winapi-0.2.8/src/d3d9.rs
new file mode 100644
index 0000000000..26f9031d06
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d9.rs
@@ -0,0 +1,713 @@
+// Copyright © 2015, Corey Richardson
+// Licensed under the MIT License <LICENSE.md>
+//! Direct3D include file
+pub const D3D_SDK_VERSION: ::DWORD = 32;
+pub const D3D9b_SDK_VERSION: ::DWORD = 31;
+RIDL!(
+interface IDirect3D9(IDirect3D9Vtbl): IUnknown(IUnknownVtbl) {
+ fn RegisterSoftwareDevice(&mut self, pInitializeFunction: *mut ::VOID) -> ::HRESULT,
+ fn GetAdapterCount(&mut self) -> ::UINT,
+ fn GetAdapterIdentifier(
+ &mut self, Adapter: ::UINT, Flags: ::DWORD, pIdentifier: *mut ::D3DADAPTER_IDENTIFIER9
+ ) -> ::HRESULT,
+ fn GetAdapterModeCount(&mut self, Adapter: ::UINT, Format: ::D3DFORMAT) -> ::UINT,
+ fn EnumAdapterModes(
+ &mut self, Adapter: ::UINT, Format: ::D3DFORMAT, Mode: ::UINT, pMode: *mut ::D3DDISPLAYMODE
+ ) -> ::HRESULT,
+ fn GetAdapterDisplayMode(
+ &mut self, Adapter: ::UINT, pMode: *mut ::D3DDISPLAYMODE
+ ) -> ::HRESULT,
+ fn CheckDeviceType(
+ &mut self, Adapter: ::UINT, DevType: ::D3DDEVTYPE, AdapterFormat: ::D3DFORMAT,
+ BackBufferFormat: ::D3DFORMAT, bWindowed: ::BOOL
+ ) -> ::HRESULT,
+ fn CheckDeviceFormat(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, AdapterFormat: ::D3DFORMAT,
+ Usage: ::DWORD, RType: ::D3DRESOURCETYPE, CheckFormat: ::D3DFORMAT
+ ) -> ::HRESULT,
+ fn CheckDeviceMultiSampleType(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, SurfaceFormat: ::D3DFORMAT,
+ Windowed: ::BOOL, MultiSampleType: ::D3DMULTISAMPLE_TYPE, pQualityLevels: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn CheckDepthStencilMatch(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, AdapterFormat: ::D3DFORMAT,
+ RenderTargetFormat: ::D3DFORMAT, DepthStencilFormat: ::D3DFORMAT
+ ) -> ::HRESULT,
+ fn CheckDeviceFormatConversion(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, SourceFormat: ::D3DFORMAT,
+ TargetFormat: ::D3DFORMAT
+ ) -> ::HRESULT,
+ fn GetDeviceCaps(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, pCaps: *mut ::D3DCAPS9
+ ) -> ::HRESULT,
+ fn GetAdapterMonitor(&mut self, Adapter: ::UINT) -> ::HMONITOR,
+ fn CreateDevice(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, hFocusWindow: ::HWND,
+ BehaviorFlags: ::DWORD, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS,
+ ppReturnedDeviceInterface: *mut *mut IDirect3DDevice9
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3D9 = *mut IDirect3D9;
+pub type PDIRECT3D9 = *mut IDirect3D9;
+RIDL!(
+interface IDirect3DDevice9(IDirect3DDevice9Vtbl): IUnknown(IUnknownVtbl) {
+ fn TestCooperativeLevel(&mut self) -> ::HRESULT,
+ fn GetAvailableTextureMem(&mut self) -> ::UINT,
+ fn EvictManagedResources(&mut self) -> ::HRESULT,
+ fn GetDirect3D(&mut self, ppD3D9: *mut *mut IDirect3D9) -> ::HRESULT,
+ fn GetDeviceCaps(&mut self, pCaps: *mut ::D3DCAPS9) -> ::HRESULT,
+ fn GetDisplayMode(&mut self, iSwapChain: ::UINT, pMode: *mut ::D3DDISPLAYMODE) -> ::HRESULT,
+ fn GetCreationParameters(
+ &mut self, pParameters: *mut ::D3DDEVICE_CREATION_PARAMETERS
+ ) -> ::HRESULT,
+ fn SetCursorProperties(
+ &mut self, XHotSpot: ::UINT, YHotSpot: ::UINT, pCursorBitmap: *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn SetCursorPosition(&mut self, X: ::INT, Y: ::INT, Flags: ::DWORD) -> (),
+ fn ShowCursor(&mut self, bShow: ::BOOL) -> ::BOOL,
+ fn CreateAdditionalSwapChain(
+ &mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS,
+ pSwapChain: *mut *mut IDirect3DSwapChain9
+ ) -> ::HRESULT,
+ fn GetSwapChain(
+ &mut self, iSwapChain: ::UINT, pSwapChain: *mut *mut IDirect3DSwapChain9
+ ) -> ::HRESULT,
+ fn GetNumberOfSwapChains(&mut self) -> ::UINT,
+ fn Reset(&mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS) -> ::HRESULT,
+ fn Present(
+ &mut self, pSourceRect: *const ::RECT, pDestRect: *const ::RECT,
+ hDestWindowOverride: ::HWND, pDirtyRegion: *const ::RGNDATA
+ ) -> ::HRESULT,
+ fn GetBackBuffer(
+ &mut self, iSwapChain: ::UINT, iBackBuffer: ::UINT, Type: ::D3DBACKBUFFER_TYPE,
+ ppBackBuffer: *mut *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn GetRasterStatus(
+ &mut self, iSwapChain: ::UINT, pRasterStatus: *mut ::D3DRASTER_STATUS
+ ) -> ::HRESULT,
+ fn SetDialogBoxMode(&mut self, bEnableDialogs: ::BOOL) -> ::HRESULT,
+ fn SetGammaRamp(
+ &mut self, iSwapChain: ::UINT, Flags: ::DWORD, pRamp: *const ::D3DGAMMARAMP
+ ) -> (),
+ fn GetGammaRamp(&mut self, iSwapChain: ::UINT, pRamp: *mut ::D3DGAMMARAMP) -> (),
+ fn CreateTexture(
+ &mut self, Width: ::UINT, Height: ::UINT, Levels: ::UINT, Usage: ::DWORD,
+ Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppTexture: *mut *mut IDirect3DTexture9,
+ pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateVolumeTexture(
+ &mut self, Width: ::UINT, Height: ::UINT, Depth: ::UINT, Levels: ::UINT, Usage: ::DWORD,
+ Format: ::D3DFORMAT, Pool: ::D3DPOOL, ppVolumeTexture: *mut *mut IDirect3DVolumeTexture9,
+ pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateCubeTexture(
+ &mut self, EdgeLength: ::UINT, Levels: ::UINT, Usage: ::DWORD, Format: ::D3DFORMAT,
+ Pool: ::D3DPOOL, ppCubeTexture: *mut *mut IDirect3DCubeTexture9,
+ pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateVertexBuffer(
+ &mut self, Length: ::UINT, Usage: ::DWORD, FVF: ::DWORD, Pool: ::D3DPOOL,
+ ppVertexBuffer: *mut *mut IDirect3DVertexBuffer9, pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateIndexBuffer(
+ &mut self, Length: ::UINT, Usage: ::DWORD, Format: ::D3DFORMAT, Pool: ::D3DPOOL,
+ ppIndexBuffer: *mut *mut IDirect3DIndexBuffer9, pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateRenderTarget(
+ &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT,
+ MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Lockable: ::BOOL,
+ ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateDepthStencilSurface(
+ &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT,
+ MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Discard: ::BOOL,
+ ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn UpdateSurface(
+ &mut self, pSourceSurface: *mut IDirect3DSurface9, pSourceRect: *const ::RECT,
+ pDestinationSurface: *mut IDirect3DSurface9, pDestPoint: *const ::POINT
+ ) -> ::HRESULT,
+ fn UpdateTexture(
+ &mut self, pSourceTexture: *mut IDirect3DBaseTexture9,
+ pDestinationTexture: *mut IDirect3DBaseTexture9
+ ) -> ::HRESULT,
+ fn GetRenderTargetData(
+ &mut self, pRenderTarget: *mut IDirect3DSurface9, pDestSurface: *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn GetFrontBufferData(
+ &mut self, iSwapChain: ::UINT, pDestSurface: *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn StretchRect(
+ &mut self, pSourceSurface: *mut IDirect3DSurface9, pSourceRect: *const ::RECT,
+ pDestSurface: *mut IDirect3DSurface9, pDestRect: *const ::RECT,
+ Filter: ::D3DTEXTUREFILTERTYPE
+ ) -> ::HRESULT,
+ fn ColorFill(
+ &mut self, pSurface: *mut IDirect3DSurface9, pRect: *const ::RECT, color: ::D3DCOLOR
+ ) -> ::HRESULT,
+ fn CreateOffscreenPlainSurface(
+ &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, Pool: ::D3DPOOL,
+ ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn SetRenderTarget(
+ &mut self, RenderTargetIndex: ::DWORD, pRenderTarget: *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn GetRenderTarget(
+ &mut self, RenderTargetIndex: ::DWORD, ppRenderTarget: *mut *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn SetDepthStencilSurface(&mut self, pNewZStencil: *mut IDirect3DSurface9) -> ::HRESULT,
+ fn GetDepthStencilSurface(
+ &mut self, ppZStencilSurface: *mut *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn BeginScene(&mut self) -> ::HRESULT,
+ fn EndScene(&mut self) -> ::HRESULT,
+ fn Clear(
+ &mut self, Count: ::DWORD, pRects: *const ::D3DRECT, Flags: ::DWORD, Color: ::D3DCOLOR,
+ Z: ::FLOAT, Stencil: ::DWORD
+ ) -> ::HRESULT,
+ fn SetTransform(
+ &mut self, State: ::D3DTRANSFORMSTATETYPE, pMatrix: *const ::D3DMATRIX
+ ) -> ::HRESULT,
+ fn GetTransform(
+ &mut self, State: ::D3DTRANSFORMSTATETYPE, pMatrix: *mut ::D3DMATRIX
+ ) -> ::HRESULT,
+ fn MultiplyTransform(
+ &mut self, arg1: ::D3DTRANSFORMSTATETYPE, arg2: *const ::D3DMATRIX
+ ) -> ::HRESULT,
+ fn SetViewport(&mut self, pViewport: *const ::D3DVIEWPORT9) -> ::HRESULT,
+ fn GetViewport(&mut self, pViewport: *mut ::D3DVIEWPORT9) -> ::HRESULT,
+ fn SetMaterial(&mut self, pMaterial: *const ::D3DMATERIAL9) -> ::HRESULT,
+ fn GetMaterial(&mut self, pMaterial: *mut ::D3DMATERIAL9) -> ::HRESULT,
+ fn SetLight(&mut self, Index: ::DWORD, arg1: *const ::D3DLIGHT9) -> ::HRESULT,
+ fn GetLight(&mut self, Index: ::DWORD, arg1: *mut ::D3DLIGHT9) -> ::HRESULT,
+ fn LightEnable(&mut self, Index: ::DWORD, Enable: ::BOOL) -> ::HRESULT,
+ fn GetLightEnable(&mut self, Index: ::DWORD, pEnable: *mut ::BOOL) -> ::HRESULT,
+ fn SetClipPlane(&mut self, Index: ::DWORD, pPlane: *const ::FLOAT) -> ::HRESULT,
+ fn GetClipPlane(&mut self, Index: ::DWORD, pPlane: *mut ::FLOAT) -> ::HRESULT,
+ fn SetRenderState(&mut self, State: ::D3DRENDERSTATETYPE, Value: ::DWORD) -> ::HRESULT,
+ fn GetRenderState(&mut self, State: ::D3DRENDERSTATETYPE, pValue: *mut ::DWORD) -> ::HRESULT,
+ fn CreateStateBlock(
+ &mut self, Type: ::D3DSTATEBLOCKTYPE, ppSB: *mut *mut IDirect3DStateBlock9
+ ) -> ::HRESULT,
+ fn BeginStateBlock(&mut self) -> ::HRESULT,
+ fn EndStateBlock(&mut self, ppSB: *mut *mut IDirect3DStateBlock9) -> ::HRESULT,
+ fn SetClipStatus(&mut self, pClipStatus: *const ::D3DCLIPSTATUS9) -> ::HRESULT,
+ fn GetClipStatus(&mut self, pClipStatus: *mut ::D3DCLIPSTATUS9) -> ::HRESULT,
+ fn GetTexture(
+ &mut self, Stage: ::DWORD, ppTexture: *mut *mut IDirect3DBaseTexture9
+ ) -> ::HRESULT,
+ fn SetTexture(&mut self, Stage: ::DWORD, pTexture: *mut IDirect3DBaseTexture9) -> ::HRESULT,
+ fn GetTextureStageState(
+ &mut self, Stage: ::DWORD, Type: ::D3DTEXTURESTAGESTATETYPE, pValue: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn SetTextureStageState(
+ &mut self, Stage: ::DWORD, Type: ::D3DTEXTURESTAGESTATETYPE, Value: ::DWORD
+ ) -> ::HRESULT,
+ fn GetSamplerState(
+ &mut self, Sampler: ::DWORD, Type: ::D3DSAMPLERSTATETYPE, pValue: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn SetSamplerState(
+ &mut self, Sampler: ::DWORD, Type: ::D3DSAMPLERSTATETYPE, Value: ::DWORD
+ ) -> ::HRESULT,
+ fn ValidateDevice(&mut self, pNumPasses: *mut ::DWORD) -> ::HRESULT,
+ fn SetPaletteEntries(
+ &mut self, PaletteNumber: ::UINT, pEntries: *const ::PALETTEENTRY
+ ) -> ::HRESULT,
+ fn GetPaletteEntries(
+ &mut self, PaletteNumber: ::UINT, pEntries: *mut ::PALETTEENTRY
+ ) -> ::HRESULT,
+ fn SetCurrentTexturePalette(&mut self, PaletteNumber: ::UINT) -> ::HRESULT,
+ fn GetCurrentTexturePalette(&mut self, PaletteNumber: *mut ::UINT) -> ::HRESULT,
+ fn SetScissorRect(&mut self, pRect: *const ::RECT) -> ::HRESULT,
+ fn GetScissorRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT,
+ fn SetSoftwareVertexProcessing(&mut self, bSoftware: ::BOOL) -> ::HRESULT,
+ fn GetSoftwareVertexProcessing(&mut self) -> ::BOOL,
+ fn SetNPatchMode(&mut self, nSegments: ::FLOAT) -> ::HRESULT,
+ fn GetNPatchMode(&mut self) -> ::FLOAT,
+ fn DrawPrimitive(
+ &mut self, PrimitiveType: ::D3DPRIMITIVETYPE, StartVertex: ::UINT, PrimitiveCount: ::UINT
+ ) -> ::HRESULT,
+ fn DrawIndexedPrimitive(
+ &mut self, arg1: ::D3DPRIMITIVETYPE, BaseVertexIndex: ::INT, MinVertexIndex: ::UINT,
+ NumVertices: ::UINT, startIndex: ::UINT, primCount: ::UINT
+ ) -> ::HRESULT,
+ fn DrawPrimitiveUP(
+ &mut self, PrimitiveType: ::D3DPRIMITIVETYPE, PrimitiveCount: ::UINT,
+ pVertexStreamZeroData: *const ::VOID, VertexStreamZeroStride: ::UINT
+ ) -> ::HRESULT,
+ fn DrawIndexedPrimitiveUP(
+ &mut self, PrimitiveType: ::D3DPRIMITIVETYPE, MinVertexIndex: ::UINT, NumVertices: ::UINT,
+ PrimitiveCount: ::UINT, pIndexData: *const ::VOID, IndexDataFormat: ::D3DFORMAT,
+ pVertexStreamZeroData: *const ::VOID, VertexStreamZeroStride: ::UINT
+ ) -> ::HRESULT,
+ fn ProcessVertices(
+ &mut self, SrcStartIndex: ::UINT, DestIndex: ::UINT, VertexCount: ::UINT,
+ pDestBuffer: *mut IDirect3DVertexBuffer9, pVertexDecl: *mut IDirect3DVertexDeclaration9,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn CreateVertexDeclaration(
+ &mut self, pVertexElements: *const ::D3DVERTEXELEMENT9,
+ ppDecl: *mut *mut IDirect3DVertexDeclaration9
+ ) -> ::HRESULT,
+ fn SetVertexDeclaration(&mut self, pDecl: *mut IDirect3DVertexDeclaration9) -> ::HRESULT,
+ fn GetVertexDeclaration(&mut self, ppDecl: *mut *mut IDirect3DVertexDeclaration9) -> ::HRESULT,
+ fn SetFVF(&mut self, FVF: ::DWORD) -> ::HRESULT,
+ fn GetFVF(&mut self, pFVF: *mut ::DWORD) -> ::HRESULT,
+ fn CreateVertexShader(
+ &mut self, pFunction: *const ::DWORD, ppShader: *mut *mut IDirect3DVertexShader9
+ ) -> ::HRESULT,
+ fn SetVertexShader(&mut self, pShader: *mut IDirect3DVertexShader9) -> ::HRESULT,
+ fn GetVertexShader(&mut self, ppShader: *mut *mut IDirect3DVertexShader9) -> ::HRESULT,
+ fn SetVertexShaderConstantF(
+ &mut self, StartRegister: ::UINT, pConstantData: *const ::FLOAT, Vector4fCount: ::UINT
+ ) -> ::HRESULT,
+ fn GetVertexShaderConstantF(
+ &mut self, StartRegister: ::UINT, pConstantData: *mut ::FLOAT, Vector4fCount: ::UINT
+ ) -> ::HRESULT,
+ fn SetVertexShaderConstantI(
+ &mut self, StartRegister: ::UINT, pConstantData: *const ::INT, Vector4iCount: ::UINT
+ ) -> ::HRESULT,
+ fn GetVertexShaderConstantI(
+ &mut self, StartRegister: ::UINT, pConstantData: *mut ::INT, Vector4iCount: ::UINT
+ ) -> ::HRESULT,
+ fn SetVertexShaderConstantB(
+ &mut self, StartRegister: ::UINT, pConstantData: *const ::BOOL, BoolCount: ::UINT
+ ) -> ::HRESULT,
+ fn GetVertexShaderConstantB(
+ &mut self, StartRegister: ::UINT, pConstantData: *mut ::BOOL, BoolCount: ::UINT
+ ) -> ::HRESULT,
+ fn SetStreamSource(
+ &mut self, StreamNumber: ::UINT, pStreamData: *mut IDirect3DVertexBuffer9,
+ OffsetInBytes: ::UINT, Stride: ::UINT
+ ) -> ::HRESULT,
+ fn GetStreamSource(
+ &mut self, StreamNumber: ::UINT, ppStreamData: *mut *mut IDirect3DVertexBuffer9,
+ pOffsetInBytes: *mut ::UINT, pStride: *mut ::UINT
+ ) -> ::HRESULT,
+ fn SetStreamSourceFreq(&mut self, StreamNumber: ::UINT, Setting: ::UINT) -> ::HRESULT,
+ fn GetStreamSourceFreq(&mut self, StreamNumber: ::UINT, pSetting: *mut ::UINT) -> ::HRESULT,
+ fn SetIndices(&mut self, pIndexData: *mut IDirect3DIndexBuffer9) -> ::HRESULT,
+ fn GetIndices(&mut self, ppIndexData: *mut *mut IDirect3DIndexBuffer9) -> ::HRESULT,
+ fn CreatePixelShader(
+ &mut self, pFunction: *const ::DWORD, ppShader: *mut *mut IDirect3DPixelShader9
+ ) -> ::HRESULT,
+ fn SetPixelShader(&mut self, pShader: *mut IDirect3DPixelShader9) -> ::HRESULT,
+ fn GetPixelShader(&mut self, ppShader: *mut *mut IDirect3DPixelShader9) -> ::HRESULT,
+ fn SetPixelShaderConstantF(
+ &mut self, StartRegister: ::UINT, pConstantData: *const ::FLOAT, Vector4fCount: ::UINT
+ ) -> ::HRESULT,
+ fn GetPixelShaderConstantF(
+ &mut self, StartRegister: ::UINT, pConstantData: *mut ::FLOAT, Vector4fCount: ::UINT
+ ) -> ::HRESULT,
+ fn SetPixelShaderConstantI(
+ &mut self, StartRegister: ::UINT, pConstantData: *const ::INT, Vector4iCount: ::UINT
+ ) -> ::HRESULT,
+ fn GetPixelShaderConstantI(
+ &mut self, StartRegister: ::UINT, pConstantData: *mut ::INT, Vector4iCount: ::UINT
+ ) -> ::HRESULT,
+ fn SetPixelShaderConstantB(
+ &mut self, StartRegister: ::UINT, pConstantData: *const ::BOOL, BoolCount: ::UINT
+ ) -> ::HRESULT,
+ fn GetPixelShaderConstantB(
+ &mut self, StartRegister: ::UINT, pConstantData: *mut ::BOOL, BoolCount: ::UINT
+ ) -> ::HRESULT,
+ fn DrawRectPatch(
+ &mut self, Handle: ::UINT, pNumSegs: *const ::FLOAT,
+ pRectPatchInfo: *const ::D3DRECTPATCH_INFO
+ ) -> ::HRESULT,
+ fn DrawTriPatch(
+ &mut self, Handle: ::UINT, pNumSegs: *const ::FLOAT,
+ pTriPatchInfo: *const ::D3DTRIPATCH_INFO
+ ) -> ::HRESULT,
+ fn DeletePatch(&mut self, Handle: ::UINT) -> ::HRESULT,
+ fn CreateQuery(
+ &mut self, Type: ::D3DQUERYTYPE, ppQuery: *mut *mut IDirect3DQuery9
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DDEVICE9 = *mut IDirect3DDevice9;
+pub type PDIRECT3DDEVICE9 = *mut IDirect3DDevice9;
+RIDL!(
+interface IDirect3DStateBlock9(IDirect3DStateBlock9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn Capture(&mut self) -> ::HRESULT,
+ fn Apply(&mut self) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9;
+pub type PDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9;
+RIDL!(
+interface IDirect3DSwapChain9(IDirect3DSwapChain9Vtbl): IUnknown(IUnknownVtbl) {
+ fn Present(
+ &mut self, pSourceRect: *const ::RECT, pDestRect: *const ::RECT,
+ hDestWindowOverride: ::HWND, pDirtyRegion: *const ::RGNDATA, dwFlags: ::DWORD
+ ) -> ::HRESULT,
+ fn GetFrontBufferData(&mut self, pDestSurface: *mut IDirect3DSurface9) -> ::HRESULT,
+ fn GetBackBuffer(
+ &mut self, iBackBuffer: ::UINT, Type: ::D3DBACKBUFFER_TYPE,
+ ppBackBuffer: *mut *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn GetRasterStatus(&mut self, pRasterStatus: *mut ::D3DRASTER_STATUS) -> ::HRESULT,
+ fn GetDisplayMode(&mut self, pMode: *mut ::D3DDISPLAYMODE) -> ::HRESULT,
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn GetPresentParameters(
+ &mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9;
+pub type PDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9;
+RIDL!(
+interface IDirect3DResource9(IDirect3DResource9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn SetPrivateData(
+ &mut self, refguid: *const ::GUID, pData: *const ::VOID, SizeOfData: ::DWORD,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn GetPrivateData(
+ &mut self, refguid: *const ::GUID, pData: *mut ::VOID, pSizeOfData: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn FreePrivateData(&mut self, refguid: *const ::GUID) -> ::HRESULT,
+ fn SetPriority(&mut self, PriorityNew: ::DWORD) -> ::DWORD,
+ fn GetPriority(&mut self) -> ::DWORD,
+ fn PreLoad(&mut self) -> (),
+ fn GetType(&mut self) -> ::D3DRESOURCETYPE
+}
+);
+pub type LPDIRECT3DRESOURCE9 = *mut IDirect3DResource9;
+pub type PDIRECT3DRESOURCE9 = *mut IDirect3DResource9;
+RIDL!(
+interface IDirect3DVertexDeclaration9(IDirect3DVertexDeclaration9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn GetDeclaration(
+ &mut self, pElement: *mut ::D3DVERTEXELEMENT9, pNumElements: *mut ::UINT
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9;
+pub type PDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9;
+RIDL!(
+interface IDirect3DVertexShader9(IDirect3DVertexShader9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn GetFunction(&mut self, arg1: *mut ::VOID, pSizeOfData: *mut ::UINT) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9;
+pub type PDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9;
+RIDL!(
+interface IDirect3DPixelShader9(IDirect3DPixelShader9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn GetFunction(&mut self, arg1: *mut ::VOID, pSizeOfData: *mut ::UINT) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9;
+pub type PDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9;
+RIDL!(
+interface IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) {
+ fn SetLOD(&mut self, LODNew: ::DWORD) -> ::DWORD,
+ fn GetLOD(&mut self) -> ::DWORD,
+ fn GetLevelCount(&mut self) -> ::DWORD,
+ fn SetAutoGenFilterType(&mut self, FilterType: ::D3DTEXTUREFILTERTYPE) -> ::HRESULT,
+ fn GetAutoGenFilterType(&mut self) -> ::D3DTEXTUREFILTERTYPE,
+ fn GenerateMipSubLevels(&mut self) -> ()
+}
+);
+pub type LPDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9;
+pub type PDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9;
+RIDL!(
+interface IDirect3DTexture9(IDirect3DTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) {
+ fn GetLevelDesc(&mut self, Level: ::UINT, pDesc: *mut ::D3DSURFACE_DESC) -> ::HRESULT,
+ fn GetSurfaceLevel(
+ &mut self, Level: ::UINT, ppSurfaceLevel: *mut *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn LockRect(
+ &mut self, Level: ::UINT, pLockedRect: *mut ::D3DLOCKED_RECT, pRect: *const ::RECT,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn UnlockRect(&mut self, Level: ::UINT) -> ::HRESULT,
+ fn AddDirtyRect(&mut self, pDirtyRect: *const ::RECT) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DTEXTURE9 = *mut IDirect3DTexture9;
+pub type PDIRECT3DTEXTURE9 = *mut IDirect3DTexture9;
+RIDL!(
+interface IDirect3DVolumeTexture9(IDirect3DVolumeTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) {
+ fn GetLevelDesc(&mut self, Level: ::UINT, pDesc: *mut ::D3DVOLUME_DESC) -> ::HRESULT,
+ fn GetVolumeLevel(
+ &mut self, Level: ::UINT, ppVolumeLevel: *mut *mut IDirect3DVolume9
+ ) -> ::HRESULT,
+ fn LockBox(
+ &mut self, Level: ::UINT, pLockedVolume: *mut ::D3DLOCKED_BOX, pBox: *const ::D3DBOX,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn UnlockBox(&mut self, Level: ::UINT) -> ::HRESULT,
+ fn AddDirtyBox(&mut self, pDirtyBox: *const ::D3DBOX) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9;
+pub type PDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9;
+RIDL!(
+interface IDirect3DCubeTexture9(IDirect3DCubeTexture9Vtbl): IDirect3DBaseTexture9(IDirect3DBaseTexture9Vtbl) {
+ fn GetLevelDesc(&mut self, Level: ::UINT, pDesc: *mut ::D3DSURFACE_DESC) -> ::HRESULT,
+ fn GetCubeMapSurface(
+ &mut self, FaceType: ::D3DCUBEMAP_FACES, Level: ::UINT,
+ ppCubeMapSurface: *mut *mut IDirect3DSurface9
+ ) -> ::HRESULT,
+ fn LockRect(
+ &mut self, FaceType: ::D3DCUBEMAP_FACES, Level: ::UINT, pLockedRect: *mut ::D3DLOCKED_RECT,
+ pRect: *const ::RECT, Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn UnlockRect(&mut self, FaceType: ::D3DCUBEMAP_FACES, Level: ::UINT) -> ::HRESULT,
+ fn AddDirtyRect(
+ &mut self, FaceType: ::D3DCUBEMAP_FACES, pDirtyRect: *const ::RECT
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9;
+pub type PDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9;
+RIDL!(
+interface IDirect3DVertexBuffer9(IDirect3DVertexBuffer9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) {
+ fn Lock(
+ &mut self, OffsetToLock: ::UINT, SizeToLock: ::UINT, ppbData: *mut *mut ::VOID,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn Unlock(&mut self) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut ::D3DVERTEXBUFFER_DESC) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9;
+pub type PDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9;
+RIDL!(
+interface IDirect3DIndexBuffer9(IDirect3DIndexBuffer9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) {
+ fn Lock(
+ &mut self, OffsetToLock: ::UINT, SizeToLock: ::UINT, ppbData: *mut *mut ::VOID,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn Unlock(&mut self) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut ::D3DINDEXBUFFER_DESC) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9;
+pub type PDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9;
+RIDL!(
+interface IDirect3DSurface9(IDirect3DSurface9Vtbl): IDirect3DResource9(IDirect3DResource9Vtbl) {
+ fn GetContainer(&mut self, riid: *const ::IID, ppContainer: *mut *mut ::VOID) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut ::D3DSURFACE_DESC) -> ::HRESULT,
+ fn LockRect(
+ &mut self, pLockedRect: *mut ::D3DLOCKED_RECT, pRect: *const ::RECT, Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn UnlockRect(&mut self) -> ::HRESULT,
+ fn GetDC(&mut self, phdc: *mut ::HDC) -> ::HRESULT,
+ fn ReleaseDC(&mut self, hdc: ::HDC) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DSURFACE9 = *mut IDirect3DSurface9;
+pub type PDIRECT3DSURFACE9 = *mut IDirect3DSurface9;
+RIDL!(
+interface IDirect3DVolume9(IDirect3DVolume9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn SetPrivateData(
+ &mut self, refguid: *const ::GUID, pData: *const ::VOID, SizeOfData: ::DWORD,
+ Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn GetPrivateData(
+ &mut self, refguid: *const ::GUID, pData: *mut ::VOID, pSizeOfData: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn FreePrivateData(&mut self, refguid: *const ::GUID) -> ::HRESULT,
+ fn GetContainer(&mut self, riid: *const ::IID, ppContainer: *mut *mut ::VOID) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut ::D3DVOLUME_DESC) -> ::HRESULT,
+ fn LockBox(
+ &mut self, pLockedVolume: *mut ::D3DLOCKED_BOX, pBox: *const ::D3DBOX, Flags: ::DWORD
+ ) -> ::HRESULT,
+ fn UnlockBox(&mut self) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DVOLUME9 = *mut IDirect3DVolume9;
+pub type PDIRECT3DVOLUME9 = *mut IDirect3DVolume9;
+RIDL!(
+interface IDirect3DQuery9(IDirect3DQuery9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetDevice(&mut self, ppDevice: *mut *mut IDirect3DDevice9) -> ::HRESULT,
+ fn GetType(&mut self) -> ::D3DRESOURCETYPE,
+ fn GetDataSize(&mut self) -> ::DWORD,
+ fn Issue(&mut self, dwIssueFlags: ::DWORD) -> ::HRESULT,
+ fn GetData(
+ &mut self, pData: *mut ::VOID, dwSize: ::DWORD, dwGetDataFlags: ::DWORD
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DQUERY9 = *mut IDirect3DQuery9;
+pub type PDIRECT3DQUERY9 = *mut IDirect3DQuery9;
+pub const D3DCREATE_FPU_PRESERVE: ::DWORD = 0x2;
+pub const D3DCREATE_MULTITHREADED: ::DWORD = 0x4;
+pub const D3DCREATE_PUREDEVICE: ::DWORD = 0x10;
+pub const D3DCREATE_SOFTWARE_VERTEXPROCESSING: ::DWORD = 0x20;
+pub const D3DCREATE_HARDWARE_VERTEXPROCESSING: ::DWORD = 0x40;
+pub const D3DCREATE_MIXED_VERTEXPROCESSING: ::DWORD = 0x80;
+pub const D3DCREATE_DISABLE_DRIVER_MANAGEMENT: ::DWORD = 0x100;
+pub const D3DCREATE_ADAPTERGROUP_DEVICE: ::DWORD = 0x200;
+pub const D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX: ::DWORD = 0x400;
+pub const D3DCREATE_NOWINDOWCHANGES: ::DWORD = 0x800;
+pub const D3DCREATE_DISABLE_PSGP_THREADING: ::DWORD = 0x2000;
+pub const D3DCREATE_ENABLE_PRESENTSTATS: ::DWORD = 0x4000;
+pub const D3DCREATE_DISABLE_PRESENTSTATS: ::DWORD = 0x8000;
+pub const D3DCREATE_SCREENSAVER: ::DWORD = 0x10000000;
+pub const D3DADAPTER_DEFAULT: ::DWORD = 0;
+RIDL!(
+interface IDirect3D9Ex(IDirect3D9ExVtbl): IDirect3D9(IDirect3D9Vtbl) {
+ fn GetAdapterModeCountEx(
+ &mut self, Adapter: ::UINT, pFilter: *const ::D3DDISPLAYMODEFILTER
+ ) -> ::UINT,
+ fn EnumAdapterModesEx(
+ &mut self, Adapter: ::UINT, pFilter: *const ::D3DDISPLAYMODEFILTER, Mode: ::UINT,
+ pMode: *mut ::D3DDISPLAYMODEEX
+ ) -> ::HRESULT,
+ fn GetAdapterDisplayModeEx(
+ &mut self, Adapter: ::UINT, pMode: *mut ::D3DDISPLAYMODEEX,
+ pRotation: *mut ::D3DDISPLAYROTATION
+ ) -> ::HRESULT,
+ fn CreateDeviceEx(
+ &mut self, Adapter: ::UINT, DeviceType: ::D3DDEVTYPE, hFocusWindow: ::HWND,
+ BehaviorFlags: ::DWORD, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS,
+ pFullscreenDisplayMode: *mut ::D3DDISPLAYMODEEX,
+ ppReturnedDeviceInterface: *mut *mut IDirect3DDevice9Ex
+ ) -> ::HRESULT,
+ fn GetAdapterLUID(&mut self, Adapter: ::UINT, pLUID: *mut ::LUID) -> ::HRESULT
+}
+);
+pub type LPDIRECT3D9EX = *mut IDirect3D9Ex;
+pub type PDIRECT3D9EX = *mut IDirect3D9Ex;
+RIDL!(
+interface IDirect3DDevice9Ex(IDirect3DDevice9ExVtbl): IDirect3DDevice9(IDirect3DDevice9Vtbl) {
+ fn SetConvolutionMonoKernel(
+ &mut self, width: ::UINT, height: ::UINT, rows: *mut ::FLOAT, columns: *mut ::FLOAT
+ ) -> ::HRESULT,
+ fn ComposeRects(
+ &mut self, pSrc: *mut IDirect3DSurface9, pDst: *mut IDirect3DSurface9,
+ pSrcRectDescs: *mut IDirect3DVertexBuffer9, NumRects: ::UINT,
+ pDstRectDescs: *mut IDirect3DVertexBuffer9, Operation: ::D3DCOMPOSERECTSOP, Xoffset: ::INT,
+ Yoffset: ::INT
+ ) -> ::HRESULT,
+ fn PresentEx(
+ &mut self, pSourceRect: *const ::RECT, pDestRect: *const ::RECT,
+ hDestWindowOverride: ::HWND, pDirtyRegion: *const ::RGNDATA, dwFlags: ::DWORD
+ ) -> ::HRESULT,
+ fn GetGPUThreadPriority(&mut self, pPriority: *mut ::INT) -> ::HRESULT,
+ fn SetGPUThreadPriority(&mut self, Priority: ::INT) -> ::HRESULT,
+ fn WaitForVBlank(&mut self, iSwapChain: ::UINT) -> ::HRESULT,
+ fn CheckResourceResidency(
+ &mut self, pResourceArray: *mut *mut IDirect3DResource9, NumResources: ::UINT32
+ ) -> ::HRESULT,
+ fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT,
+ fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT,
+ fn CheckDeviceState(&mut self, hDestinationWindow: ::HWND) -> ::HRESULT,
+ fn CreateRenderTargetEx(
+ &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT,
+ MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Lockable: ::BOOL,
+ ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE, Usage: ::DWORD
+ ) -> ::HRESULT,
+ fn CreateOffscreenPlainSurfaceEx(
+ &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT, Pool: ::D3DPOOL,
+ ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE, Usage: ::DWORD
+ ) -> ::HRESULT,
+ fn CreateDepthStencilSurfaceEx(
+ &mut self, Width: ::UINT, Height: ::UINT, Format: ::D3DFORMAT,
+ MultiSample: ::D3DMULTISAMPLE_TYPE, MultisampleQuality: ::DWORD, Discard: ::BOOL,
+ ppSurface: *mut *mut IDirect3DSurface9, pSharedHandle: *mut ::HANDLE, Usage: ::DWORD
+ ) -> ::HRESULT,
+ fn ResetEx(
+ &mut self, pPresentationParameters: *mut ::D3DPRESENT_PARAMETERS,
+ pFullscreenDisplayMode: *mut ::D3DDISPLAYMODEEX
+ ) -> ::HRESULT,
+ fn GetDisplayModeEx(
+ &mut self, iSwapChain: ::UINT, pMode: *mut ::D3DDISPLAYMODEEX,
+ pRotation: *mut ::D3DDISPLAYROTATION
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex;
+pub type PDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex;
+RIDL!(
+interface IDirect3DSwapChain9Ex(IDirect3DSwapChain9ExVtbl): IDirect3DSwapChain9(IDirect3DSwapChain9Vtbl) {
+ fn GetLastPresentCount(&mut self, pLastPresentCount: *mut ::UINT) -> ::HRESULT,
+ fn GetPresentStats(&mut self, pPresentationStatistics: *mut ::D3DPRESENTSTATS) -> ::HRESULT,
+ fn GetDisplayModeEx(
+ &mut self, pMode: *mut ::D3DDISPLAYMODEEX, pRotation: *mut ::D3DDISPLAYROTATION
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex;
+pub type PDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex;
+RIDL!(
+interface IDirect3D9ExOverlayExtension(IDirect3D9ExOverlayExtensionVtbl): IUnknown(IUnknownVtbl) {
+ fn CheckDeviceOverlayType(
+ &mut self, Adapter: ::UINT, DevType: ::D3DDEVTYPE, OverlayWidth: ::UINT,
+ OverlayHeight: ::UINT, OverlayFormat: ::D3DFORMAT, pDisplayMode: *mut ::D3DDISPLAYMODEEX,
+ DisplayRotation: ::D3DDISPLAYROTATION, pOverlayCaps: *mut ::D3DOVERLAYCAPS
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3D9EXOVERLAYEXTENSION = *mut IDirect3D9ExOverlayExtension;
+pub type PDIRECT3D9EXOVERLAYEXTENSION = *mut IDirect3D9ExOverlayExtension;
+RIDL!(
+interface IDirect3DDevice9Video(IDirect3DDevice9VideoVtbl): IUnknown(IUnknownVtbl) {
+ fn GetContentProtectionCaps(
+ &mut self, pCryptoType: *const ::GUID, pDecodeProfile: *const ::GUID,
+ pCaps: *mut ::D3DCONTENTPROTECTIONCAPS
+ ) -> ::HRESULT,
+ fn CreateAuthenticatedChannel(
+ &mut self, ChannelType: ::D3DAUTHENTICATEDCHANNELTYPE,
+ ppAuthenticatedChannel: *mut *mut IDirect3DAuthenticatedChannel9,
+ pChannelHandle: *mut ::HANDLE
+ ) -> ::HRESULT,
+ fn CreateCryptoSession(
+ &mut self, pCryptoType: *const ::GUID, pDecodeProfile: *const ::GUID,
+ ppCryptoSession: *mut *mut IDirect3DCryptoSession9, pCryptoHandle: *mut ::HANDLE
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DDEVICE9VIDEO = *mut IDirect3DDevice9Video;
+pub type PDIRECT3DDEVICE9VIDEO = *mut IDirect3DDevice9Video;
+RIDL!(
+interface IDirect3DAuthenticatedChannel9(IDirect3DAuthenticatedChannel9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetCertificateSize(&mut self, pCertificateSize: *mut ::UINT) -> ::HRESULT,
+ fn GetCertificate(&mut self, CertifacteSize: ::UINT, ppCertificate: *mut ::BYTE) -> ::HRESULT,
+ fn NegotiateKeyExchange(&mut self, DataSize: ::UINT, pData: *mut ::VOID) -> ::HRESULT,
+ fn Query(
+ &mut self, InputSize: ::UINT, pInput: *const ::VOID, OutputSize: ::UINT,
+ pOutput: *mut ::VOID
+ ) -> ::HRESULT,
+ fn Configure(
+ &mut self, InputSize: ::UINT, pInput: *const ::VOID,
+ pOutput: *mut ::D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT
+ ) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9;
+pub type PDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9;
+RIDL!(
+interface IDirect3DCryptoSession9(IDirect3DCryptoSession9Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetCertificateSize(&mut self, pCertificateSize: *mut ::UINT) -> ::HRESULT,
+ fn GetCertificate(&mut self, CertifacteSize: ::UINT, ppCertificate: *mut ::BYTE) -> ::HRESULT,
+ fn NegotiateKeyExchange(&mut self, DataSize: ::UINT, pData: *mut ::VOID) -> ::HRESULT,
+ fn EncryptionBlt(
+ &mut self, pSrcSurface: *mut IDirect3DSurface9, pDstSurface: *mut IDirect3DSurface9,
+ DstSurfaceSize: ::UINT, pIV: *mut ::VOID
+ ) -> ::HRESULT,
+ fn DecryptionBlt(
+ &mut self, pSrcSurface: *mut IDirect3DSurface9, pDstSurface: *mut IDirect3DSurface9,
+ SrcSurfaceSize: ::UINT, pEncryptedBlockInfo: *mut ::D3DENCRYPTED_BLOCK_INFO,
+ pContentKey: *mut ::VOID, pIV: *mut ::VOID
+ ) -> ::HRESULT,
+ fn GetSurfacePitch(
+ &mut self, pSrcSurface: *mut IDirect3DSurface9, pSurfacePitch: *mut ::UINT
+ ) -> ::HRESULT,
+ fn StartSessionKeyRefresh(
+ &mut self, pRandomNumber: *mut ::VOID, RandomNumberSize: ::UINT
+ ) -> ::HRESULT,
+ fn FinishSessionKeyRefresh(&mut self) -> ::HRESULT,
+ fn GetEncryptionBltKey(&mut self, pReadbackKey: *mut ::VOID, KeySize: ::UINT) -> ::HRESULT
+}
+);
+pub type LPDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9;
+pub type PDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9;
diff --git a/third_party/rust/winapi-0.2.8/src/d3d9caps.rs b/third_party/rust/winapi-0.2.8/src/d3d9caps.rs
new file mode 100644
index 0000000000..74c877d7b6
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d9caps.rs
@@ -0,0 +1,349 @@
+// Copyright © 2015, Corey Richardson
+// Licensed under the MIT License <LICENSE.md>
+//! Direct3D capabilities include file
+STRUCT!{struct D3DVSHADERCAPS2_0 {
+ Caps: ::DWORD,
+ DynamicFlowControlDepth: ::INT,
+ NumTemps: ::INT,
+ StaticFlowControlDepth: ::INT,
+}}
+pub const D3DVS20CAPS_PREDICATION: ::DWORD = 1 << 0;
+pub const D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH: ::DWORD = 24;
+pub const D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH: ::DWORD = 0;
+pub const D3DVS20_MAX_NUMTEMPS: ::DWORD = 32;
+pub const D3DVS20_MIN_NUMTEMPS: ::DWORD = 12;
+pub const D3DVS20_MAX_STATICFLOWCONTROLDEPTH: ::DWORD = 4;
+pub const D3DVS20_MIN_STATICFLOWCONTROLDEPTH: ::DWORD = 1;
+STRUCT!{struct D3DPSHADERCAPS2_0 {
+ Caps: ::DWORD,
+ DynamicFlowControlDepth: ::INT,
+ NumTemps: ::INT,
+ StaticFlowControlDepth: ::INT,
+ NumInstructionSlots: ::INT,
+}}
+pub const D3DPS20CAPS_ARBITRARYSWIZZLE: ::DWORD = 1 << 0;
+pub const D3DPS20CAPS_GRADIENTINSTRUCTIONS: ::DWORD = 1 << 1;
+pub const D3DPS20CAPS_PREDICATION: ::DWORD = 1 << 2;
+pub const D3DPS20CAPS_NODEPENDENTREADLIMIT: ::DWORD = 1 << 3;
+pub const D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT: ::DWORD = 1 << 4;
+pub const D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH: ::DWORD = 24;
+pub const D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH: ::DWORD = 0;
+pub const D3DPS20_MAX_NUMTEMPS: ::DWORD = 32;
+pub const D3DPS20_MIN_NUMTEMPS: ::DWORD = 12;
+pub const D3DPS20_MAX_STATICFLOWCONTROLDEPTH: ::DWORD = 4;
+pub const D3DPS20_MIN_STATICFLOWCONTROLDEPTH: ::DWORD = 0;
+pub const D3DPS20_MAX_NUMINSTRUCTIONSLOTS: ::DWORD = 512;
+pub const D3DPS20_MIN_NUMINSTRUCTIONSLOTS: ::DWORD = 96;
+pub const D3DMIN30SHADERINSTRUCTIONS: ::DWORD = 512;
+pub const D3DMAX30SHADERINSTRUCTIONS: ::DWORD = 32768;
+STRUCT!{struct D3DOVERLAYCAPS {
+ Caps: ::UINT,
+ MaxOverlayDisplayWidth: ::UINT,
+ MaxOverlayDisplayHeight: ::UINT,
+}}
+pub const D3DOVERLAYCAPS_FULLRANGERGB: ::DWORD = 0x00000001;
+pub const D3DOVERLAYCAPS_LIMITEDRANGERGB: ::DWORD = 0x00000002;
+pub const D3DOVERLAYCAPS_YCbCr_BT601: ::DWORD = 0x00000004;
+pub const D3DOVERLAYCAPS_YCbCr_BT709: ::DWORD = 0x00000008;
+pub const D3DOVERLAYCAPS_YCbCr_BT601_xvYCC: ::DWORD = 0x00000010;
+pub const D3DOVERLAYCAPS_YCbCr_BT709_xvYCC: ::DWORD = 0x00000020;
+pub const D3DOVERLAYCAPS_STRETCHX: ::DWORD = 0x00000040;
+pub const D3DOVERLAYCAPS_STRETCHY: ::DWORD = 0x00000080;
+STRUCT!{struct D3DCONTENTPROTECTIONCAPS {
+ Caps: ::DWORD,
+ KeyExchangeType: ::GUID,
+ BufferAlignmentStart: ::UINT,
+ BlockAlignmentSize: ::UINT,
+ ProtectedMemorySize: ::ULONGLONG,
+}}
+pub const D3DCPCAPS_SOFTWARE: ::DWORD = 0x00000001;
+pub const D3DCPCAPS_HARDWARE: ::DWORD = 0x00000002;
+pub const D3DCPCAPS_PROTECTIONALWAYSON: ::DWORD = 0x00000004;
+pub const D3DCPCAPS_PARTIALDECRYPTION: ::DWORD = 0x00000008;
+pub const D3DCPCAPS_CONTENTKEY: ::DWORD = 0x00000010;
+pub const D3DCPCAPS_FRESHENSESSIONKEY: ::DWORD = 0x00000020;
+pub const D3DCPCAPS_ENCRYPTEDREADBACK: ::DWORD = 0x00000040;
+pub const D3DCPCAPS_ENCRYPTEDREADBACKKEY: ::DWORD = 0x00000080;
+pub const D3DCPCAPS_SEQUENTIAL_CTR_IV: ::DWORD = 0x00000100;
+pub const D3DCPCAPS_ENCRYPTSLICEDATAONLY: ::DWORD = 0x00000200;
+STRUCT!{struct D3DCAPS9 {
+ DeviceType: ::D3DDEVTYPE,
+ AdapterOrdinal: ::UINT,
+ Caps: ::DWORD,
+ Caps2: ::DWORD,
+ Caps3: ::DWORD,
+ PresentationIntervals: ::DWORD,
+ CursorCaps: ::DWORD,
+ DevCaps: ::DWORD,
+ PrimitiveMiscCaps: ::DWORD,
+ RasterCaps: ::DWORD,
+ ZCmpCaps: ::DWORD,
+ SrcBlendCaps: ::DWORD,
+ DestBlendCaps: ::DWORD,
+ AlphaCmpCaps: ::DWORD,
+ ShadeCaps: ::DWORD,
+ TextureCaps: ::DWORD,
+ TextureFilterCaps: ::DWORD,
+ CubeTextureFilterCaps: ::DWORD,
+ VolumeTextureFilterCaps: ::DWORD,
+ TextureAddressCaps: ::DWORD,
+ VolumeTextureAddressCaps: ::DWORD,
+ LineCaps: ::DWORD,
+ MaxTextureWidth: ::DWORD,
+ MaxTextureHeight: ::DWORD,
+ MaxVolumeExtent: ::DWORD,
+ MaxTextureRepeat: ::DWORD,
+ MaxTextureAspectRatio: ::DWORD,
+ MaxAnisotropy: ::DWORD,
+ MaxVertexW: ::c_float,
+ GuardBandLeft: ::c_float,
+ GuardBandTop: ::c_float,
+ GuardBandRight: ::c_float,
+ GuardBandBottom: ::c_float,
+ ExtentsAdjust: ::c_float,
+ StencilCaps: ::DWORD,
+ FVFCaps: ::DWORD,
+ TextureOpCaps: ::DWORD,
+ MaxTextureBlendStages: ::DWORD,
+ MaxSimultaneousTextures: ::DWORD,
+ VertexProcessingCaps: ::DWORD,
+ MaxActiveLights: ::DWORD,
+ MaxUserClipPlanes: ::DWORD,
+ MaxVertexBlendMatrices: ::DWORD,
+ MaxVertexBlendMatrixIndex: ::DWORD,
+ MaxPointSize: ::c_float,
+ MaxPrimitiveCount: ::DWORD,
+ MaxVertexIndex: ::DWORD,
+ MaxStreams: ::DWORD,
+ MaxStreamStride: ::DWORD,
+ VertexShaderVersion: ::DWORD,
+ MaxVertexShaderConst: ::DWORD,
+ PixelShaderVersion: ::DWORD,
+ PixelShader1xMaxValue: ::c_float,
+ DevCaps2: ::DWORD,
+ MaxNpatchTessellationLevel: ::c_float,
+ Reserved5: ::DWORD,
+ MasterAdapterOrdinal: ::UINT,
+ AdapterOrdinalInGroup: ::UINT,
+ NumberOfAdaptersInGroup: ::UINT,
+ DeclTypes: ::DWORD,
+ NumSimultaneousRTs: ::DWORD,
+ StretchRectFilterCaps: ::DWORD,
+ VS20Caps: ::D3DVSHADERCAPS2_0,
+ PS20Caps: ::D3DPSHADERCAPS2_0,
+ VertexTextureFilterCaps: ::DWORD,
+ MaxVShaderInstructionsExecuted: ::DWORD,
+ MaxPShaderInstructionsExecuted: ::DWORD,
+ MaxVertexShader30InstructionSlots: ::DWORD,
+ MaxPixelShader30InstructionSlots: ::DWORD,
+}}
+pub const D3DCAPS_OVERLAY: ::DWORD = 0x00000800;
+pub const D3DCAPS_READ_SCANLINE: ::DWORD = 0x00020000;
+pub const D3DCAPS2_FULLSCREENGAMMA: ::DWORD = 0x00020000;
+pub const D3DCAPS2_CANCALIBRATEGAMMA: ::DWORD = 0x00100000;
+pub const D3DCAPS2_RESERVED: ::DWORD = 0x02000000;
+pub const D3DCAPS2_CANMANAGERESOURCE: ::DWORD = 0x10000000;
+pub const D3DCAPS2_DYNAMICTEXTURES: ::DWORD = 0x20000000;
+pub const D3DCAPS2_CANAUTOGENMIPMAP: ::DWORD = 0x40000000;
+pub const D3DCAPS2_CANSHARERESOURCE: ::DWORD = 0x80000000;
+pub const D3DCAPS3_RESERVED: ::DWORD = 0x8000001f;
+pub const D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD: ::DWORD = 0x00000020;
+pub const D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION: ::DWORD = 0x00000080;
+pub const D3DCAPS3_COPY_TO_VIDMEM: ::DWORD = 0x00000100;
+pub const D3DCAPS3_COPY_TO_SYSTEMMEM: ::DWORD = 0x00000200;
+pub const D3DCAPS3_DXVAHD: ::DWORD = 0x00000400;
+pub const D3DCAPS3_DXVAHD_LIMITED: ::DWORD = 0x00000800;
+pub const D3DPRESENT_INTERVAL_DEFAULT: ::DWORD = 0x00000000;
+pub const D3DPRESENT_INTERVAL_ONE: ::DWORD = 0x00000001;
+pub const D3DPRESENT_INTERVAL_TWO: ::DWORD = 0x00000002;
+pub const D3DPRESENT_INTERVAL_THREE: ::DWORD = 0x00000004;
+pub const D3DPRESENT_INTERVAL_FOUR: ::DWORD = 0x00000008;
+pub const D3DPRESENT_INTERVAL_IMMEDIATE: ::DWORD = 0x80000000;
+pub const D3DCURSORCAPS_COLOR: ::DWORD = 0x00000001;
+pub const D3DCURSORCAPS_LOWRES: ::DWORD = 0x00000002;
+pub const D3DDEVCAPS_EXECUTESYSTEMMEMORY: ::DWORD = 0x00000010;
+pub const D3DDEVCAPS_EXECUTEVIDEOMEMORY: ::DWORD = 0x00000020;
+pub const D3DDEVCAPS_TLVERTEXSYSTEMMEMORY: ::DWORD = 0x00000040;
+pub const D3DDEVCAPS_TLVERTEXVIDEOMEMORY: ::DWORD = 0x00000080;
+pub const D3DDEVCAPS_TEXTURESYSTEMMEMORY: ::DWORD = 0x00000100;
+pub const D3DDEVCAPS_TEXTUREVIDEOMEMORY: ::DWORD = 0x00000200;
+pub const D3DDEVCAPS_DRAWPRIMTLVERTEX: ::DWORD = 0x00000400;
+pub const D3DDEVCAPS_CANRENDERAFTERFLIP: ::DWORD = 0x00000800;
+pub const D3DDEVCAPS_TEXTURENONLOCALVIDMEM: ::DWORD = 0x00001000;
+pub const D3DDEVCAPS_DRAWPRIMITIVES2: ::DWORD = 0x00002000;
+pub const D3DDEVCAPS_SEPARATETEXTUREMEMORIES: ::DWORD = 0x00004000;
+pub const D3DDEVCAPS_DRAWPRIMITIVES2EX: ::DWORD = 0x00008000;
+pub const D3DDEVCAPS_HWTRANSFORMANDLIGHT: ::DWORD = 0x00010000;
+pub const D3DDEVCAPS_CANBLTSYSTONONLOCAL: ::DWORD = 0x00020000;
+pub const D3DDEVCAPS_HWRASTERIZATION: ::DWORD = 0x00080000;
+pub const D3DDEVCAPS_PUREDEVICE: ::DWORD = 0x00100000;
+pub const D3DDEVCAPS_QUINTICRTPATCHES: ::DWORD = 0x00200000;
+pub const D3DDEVCAPS_RTPATCHES: ::DWORD = 0x00400000;
+pub const D3DDEVCAPS_RTPATCHHANDLEZERO: ::DWORD = 0x00800000;
+pub const D3DDEVCAPS_NPATCHES: ::DWORD = 0x01000000;
+pub const D3DPMISCCAPS_MASKZ: ::DWORD = 0x00000002;
+pub const D3DPMISCCAPS_CULLNONE: ::DWORD = 0x00000010;
+pub const D3DPMISCCAPS_CULLCW: ::DWORD = 0x00000020;
+pub const D3DPMISCCAPS_CULLCCW: ::DWORD = 0x00000040;
+pub const D3DPMISCCAPS_COLORWRITEENABLE: ::DWORD = 0x00000080;
+pub const D3DPMISCCAPS_CLIPPLANESCALEDPOINTS: ::DWORD = 0x00000100;
+pub const D3DPMISCCAPS_CLIPTLVERTS: ::DWORD = 0x00000200;
+pub const D3DPMISCCAPS_TSSARGTEMP: ::DWORD = 0x00000400;
+pub const D3DPMISCCAPS_BLENDOP: ::DWORD = 0x00000800;
+pub const D3DPMISCCAPS_NULLREFERENCE: ::DWORD = 0x00001000;
+pub const D3DPMISCCAPS_INDEPENDENTWRITEMASKS: ::DWORD = 0x00004000;
+pub const D3DPMISCCAPS_PERSTAGECONSTANT: ::DWORD = 0x00008000;
+pub const D3DPMISCCAPS_FOGANDSPECULARALPHA: ::DWORD = 0x00010000;
+pub const D3DPMISCCAPS_SEPARATEALPHABLEND: ::DWORD = 0x00020000;
+pub const D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS: ::DWORD = 0x00040000;
+pub const D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING: ::DWORD = 0x00080000;
+pub const D3DPMISCCAPS_FOGVERTEXCLAMPED: ::DWORD = 0x00100000;
+pub const D3DPMISCCAPS_POSTBLENDSRGBCONVERT: ::DWORD = 0x00200000;
+pub const D3DLINECAPS_TEXTURE: ::DWORD = 0x00000001;
+pub const D3DLINECAPS_ZTEST: ::DWORD = 0x00000002;
+pub const D3DLINECAPS_BLEND: ::DWORD = 0x00000004;
+pub const D3DLINECAPS_ALPHACMP: ::DWORD = 0x00000008;
+pub const D3DLINECAPS_FOG: ::DWORD = 0x00000010;
+pub const D3DLINECAPS_ANTIALIAS: ::DWORD = 0x00000020;
+pub const D3DPRASTERCAPS_DITHER: ::DWORD = 0x00000001;
+pub const D3DPRASTERCAPS_ZTEST: ::DWORD = 0x00000010;
+pub const D3DPRASTERCAPS_FOGVERTEX: ::DWORD = 0x00000080;
+pub const D3DPRASTERCAPS_FOGTABLE: ::DWORD = 0x00000100;
+pub const D3DPRASTERCAPS_MIPMAPLODBIAS: ::DWORD = 0x00002000;
+pub const D3DPRASTERCAPS_ZBUFFERLESSHSR: ::DWORD = 0x00008000;
+pub const D3DPRASTERCAPS_FOGRANGE: ::DWORD = 0x00010000;
+pub const D3DPRASTERCAPS_ANISOTROPY: ::DWORD = 0x00020000;
+pub const D3DPRASTERCAPS_WBUFFER: ::DWORD = 0x00040000;
+pub const D3DPRASTERCAPS_WFOG: ::DWORD = 0x00100000;
+pub const D3DPRASTERCAPS_ZFOG: ::DWORD = 0x00200000;
+pub const D3DPRASTERCAPS_COLORPERSPECTIVE: ::DWORD = 0x00400000;
+pub const D3DPRASTERCAPS_SCISSORTEST: ::DWORD = 0x01000000;
+pub const D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS: ::DWORD = 0x02000000;
+pub const D3DPRASTERCAPS_DEPTHBIAS: ::DWORD = 0x04000000;
+pub const D3DPRASTERCAPS_MULTISAMPLE_TOGGLE: ::DWORD = 0x08000000;
+pub const D3DPCMPCAPS_NEVER: ::DWORD = 0x00000001;
+pub const D3DPCMPCAPS_LESS: ::DWORD = 0x00000002;
+pub const D3DPCMPCAPS_EQUAL: ::DWORD = 0x00000004;
+pub const D3DPCMPCAPS_LESSEQUAL: ::DWORD = 0x00000008;
+pub const D3DPCMPCAPS_GREATER: ::DWORD = 0x00000010;
+pub const D3DPCMPCAPS_NOTEQUAL: ::DWORD = 0x00000020;
+pub const D3DPCMPCAPS_GREATEREQUAL: ::DWORD = 0x00000040;
+pub const D3DPCMPCAPS_ALWAYS: ::DWORD = 0x00000080;
+pub const D3DPBLENDCAPS_ZERO: ::DWORD = 0x00000001;
+pub const D3DPBLENDCAPS_ONE: ::DWORD = 0x00000002;
+pub const D3DPBLENDCAPS_SRCCOLOR: ::DWORD = 0x00000004;
+pub const D3DPBLENDCAPS_INVSRCCOLOR: ::DWORD = 0x00000008;
+pub const D3DPBLENDCAPS_SRCALPHA: ::DWORD = 0x00000010;
+pub const D3DPBLENDCAPS_INVSRCALPHA: ::DWORD = 0x00000020;
+pub const D3DPBLENDCAPS_DESTALPHA: ::DWORD = 0x00000040;
+pub const D3DPBLENDCAPS_INVDESTALPHA: ::DWORD = 0x00000080;
+pub const D3DPBLENDCAPS_DESTCOLOR: ::DWORD = 0x00000100;
+pub const D3DPBLENDCAPS_INVDESTCOLOR: ::DWORD = 0x00000200;
+pub const D3DPBLENDCAPS_SRCALPHASAT: ::DWORD = 0x00000400;
+pub const D3DPBLENDCAPS_BOTHSRCALPHA: ::DWORD = 0x00000800;
+pub const D3DPBLENDCAPS_BOTHINVSRCALPHA: ::DWORD = 0x00001000;
+pub const D3DPBLENDCAPS_BLENDFACTOR: ::DWORD = 0x00002000;
+pub const D3DPBLENDCAPS_SRCCOLOR2: ::DWORD = 0x00004000;
+pub const D3DPBLENDCAPS_INVSRCCOLOR2: ::DWORD = 0x00008000;
+pub const D3DPSHADECAPS_COLORGOURAUDRGB: ::DWORD = 0x00000008;
+pub const D3DPSHADECAPS_SPECULARGOURAUDRGB: ::DWORD = 0x00000200;
+pub const D3DPSHADECAPS_ALPHAGOURAUDBLEND: ::DWORD = 0x00004000;
+pub const D3DPSHADECAPS_FOGGOURAUD: ::DWORD = 0x00080000;
+pub const D3DPTEXTURECAPS_PERSPECTIVE: ::DWORD = 0x00000001;
+pub const D3DPTEXTURECAPS_POW2: ::DWORD = 0x00000002;
+pub const D3DPTEXTURECAPS_ALPHA: ::DWORD = 0x00000004;
+pub const D3DPTEXTURECAPS_SQUAREONLY: ::DWORD = 0x00000020;
+pub const D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE: ::DWORD = 0x00000040;
+pub const D3DPTEXTURECAPS_ALPHAPALETTE: ::DWORD = 0x00000080;
+pub const D3DPTEXTURECAPS_NONPOW2CONDITIONAL: ::DWORD = 0x00000100;
+pub const D3DPTEXTURECAPS_PROJECTED: ::DWORD = 0x00000400;
+pub const D3DPTEXTURECAPS_CUBEMAP: ::DWORD = 0x00000800;
+pub const D3DPTEXTURECAPS_VOLUMEMAP: ::DWORD = 0x00002000;
+pub const D3DPTEXTURECAPS_MIPMAP: ::DWORD = 0x00004000;
+pub const D3DPTEXTURECAPS_MIPVOLUMEMAP: ::DWORD = 0x00008000;
+pub const D3DPTEXTURECAPS_MIPCUBEMAP: ::DWORD = 0x00010000;
+pub const D3DPTEXTURECAPS_CUBEMAP_POW2: ::DWORD = 0x00020000;
+pub const D3DPTEXTURECAPS_VOLUMEMAP_POW2: ::DWORD = 0x00040000;
+pub const D3DPTEXTURECAPS_NOPROJECTEDBUMPENV: ::DWORD = 0x00200000;
+pub const D3DPTFILTERCAPS_MINFPOINT: ::DWORD = 0x00000100;
+pub const D3DPTFILTERCAPS_MINFLINEAR: ::DWORD = 0x00000200;
+pub const D3DPTFILTERCAPS_MINFANISOTROPIC: ::DWORD = 0x00000400;
+pub const D3DPTFILTERCAPS_MINFPYRAMIDALQUAD: ::DWORD = 0x00000800;
+pub const D3DPTFILTERCAPS_MINFGAUSSIANQUAD: ::DWORD = 0x00001000;
+pub const D3DPTFILTERCAPS_MIPFPOINT: ::DWORD = 0x00010000;
+pub const D3DPTFILTERCAPS_MIPFLINEAR: ::DWORD = 0x00020000;
+pub const D3DPTFILTERCAPS_CONVOLUTIONMONO: ::DWORD = 0x00040000;
+pub const D3DPTFILTERCAPS_MAGFPOINT: ::DWORD = 0x01000000;
+pub const D3DPTFILTERCAPS_MAGFLINEAR: ::DWORD = 0x02000000;
+pub const D3DPTFILTERCAPS_MAGFANISOTROPIC: ::DWORD = 0x04000000;
+pub const D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD: ::DWORD = 0x08000000;
+pub const D3DPTFILTERCAPS_MAGFGAUSSIANQUAD: ::DWORD = 0x10000000;
+pub const D3DPTADDRESSCAPS_WRAP: ::DWORD = 0x00000001;
+pub const D3DPTADDRESSCAPS_MIRROR: ::DWORD = 0x00000002;
+pub const D3DPTADDRESSCAPS_CLAMP: ::DWORD = 0x00000004;
+pub const D3DPTADDRESSCAPS_BORDER: ::DWORD = 0x00000008;
+pub const D3DPTADDRESSCAPS_INDEPENDENTUV: ::DWORD = 0x00000010;
+pub const D3DPTADDRESSCAPS_MIRRORONCE: ::DWORD = 0x00000020;
+pub const D3DSTENCILCAPS_KEEP: ::DWORD = 0x00000001;
+pub const D3DSTENCILCAPS_ZERO: ::DWORD = 0x00000002;
+pub const D3DSTENCILCAPS_REPLACE: ::DWORD = 0x00000004;
+pub const D3DSTENCILCAPS_INCRSAT: ::DWORD = 0x00000008;
+pub const D3DSTENCILCAPS_DECRSAT: ::DWORD = 0x00000010;
+pub const D3DSTENCILCAPS_INVERT: ::DWORD = 0x00000020;
+pub const D3DSTENCILCAPS_INCR: ::DWORD = 0x00000040;
+pub const D3DSTENCILCAPS_DECR: ::DWORD = 0x00000080;
+pub const D3DSTENCILCAPS_TWOSIDED: ::DWORD = 0x00000100;
+pub const D3DTEXOPCAPS_DISABLE: ::DWORD = 0x00000001;
+pub const D3DTEXOPCAPS_SELECTARG1: ::DWORD = 0x00000002;
+pub const D3DTEXOPCAPS_SELECTARG2: ::DWORD = 0x00000004;
+pub const D3DTEXOPCAPS_MODULATE: ::DWORD = 0x00000008;
+pub const D3DTEXOPCAPS_MODULATE2X: ::DWORD = 0x00000010;
+pub const D3DTEXOPCAPS_MODULATE4X: ::DWORD = 0x00000020;
+pub const D3DTEXOPCAPS_ADD: ::DWORD = 0x00000040;
+pub const D3DTEXOPCAPS_ADDSIGNED: ::DWORD = 0x00000080;
+pub const D3DTEXOPCAPS_ADDSIGNED2X: ::DWORD = 0x00000100;
+pub const D3DTEXOPCAPS_SUBTRACT: ::DWORD = 0x00000200;
+pub const D3DTEXOPCAPS_ADDSMOOTH: ::DWORD = 0x00000400;
+pub const D3DTEXOPCAPS_BLENDDIFFUSEALPHA: ::DWORD = 0x00000800;
+pub const D3DTEXOPCAPS_BLENDTEXTUREALPHA: ::DWORD = 0x00001000;
+pub const D3DTEXOPCAPS_BLENDFACTORALPHA: ::DWORD = 0x00002000;
+pub const D3DTEXOPCAPS_BLENDTEXTUREALPHAPM: ::DWORD = 0x00004000;
+pub const D3DTEXOPCAPS_BLENDCURRENTALPHA: ::DWORD = 0x00008000;
+pub const D3DTEXOPCAPS_PREMODULATE: ::DWORD = 0x00010000;
+pub const D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR: ::DWORD = 0x00020000;
+pub const D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA: ::DWORD = 0x00040000;
+pub const D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR: ::DWORD = 0x00080000;
+pub const D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA: ::DWORD = 0x00100000;
+pub const D3DTEXOPCAPS_BUMPENVMAP: ::DWORD = 0x00200000;
+pub const D3DTEXOPCAPS_BUMPENVMAPLUMINANCE: ::DWORD = 0x00400000;
+pub const D3DTEXOPCAPS_DOTPRODUCT3: ::DWORD = 0x00800000;
+pub const D3DTEXOPCAPS_MULTIPLYADD: ::DWORD = 0x01000000;
+pub const D3DTEXOPCAPS_LERP: ::DWORD = 0x02000000;
+pub const D3DFVFCAPS_TEXCOORDCOUNTMASK: ::DWORD = 0x0000ffff;
+pub const D3DFVFCAPS_DONOTSTRIPELEMENTS: ::DWORD = 0x00080000;
+pub const D3DFVFCAPS_PSIZE: ::DWORD = 0x00100000;
+pub const D3DVTXPCAPS_TEXGEN: ::DWORD = 0x00000001;
+pub const D3DVTXPCAPS_MATERIALSOURCE7: ::DWORD = 0x00000002;
+pub const D3DVTXPCAPS_DIRECTIONALLIGHTS: ::DWORD = 0x00000008;
+pub const D3DVTXPCAPS_POSITIONALLIGHTS: ::DWORD = 0x00000010;
+pub const D3DVTXPCAPS_LOCALVIEWER: ::DWORD = 0x00000020;
+pub const D3DVTXPCAPS_TWEENING: ::DWORD = 0x00000040;
+pub const D3DVTXPCAPS_TEXGEN_SPHEREMAP: ::DWORD = 0x00000100;
+pub const D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER: ::DWORD = 0x00000200;
+pub const D3DDEVCAPS2_STREAMOFFSET: ::DWORD = 0x00000001;
+pub const D3DDEVCAPS2_DMAPNPATCH: ::DWORD = 0x00000002;
+pub const D3DDEVCAPS2_ADAPTIVETESSRTPATCH: ::DWORD = 0x00000004;
+pub const D3DDEVCAPS2_ADAPTIVETESSNPATCH: ::DWORD = 0x00000008;
+pub const D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES: ::DWORD = 0x00000010;
+pub const D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH: ::DWORD = 0x00000020;
+pub const D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET: ::DWORD = 0x00000040;
+pub const D3DDTCAPS_UBYTE4: ::DWORD = 0x00000001;
+pub const D3DDTCAPS_UBYTE4N: ::DWORD = 0x00000002;
+pub const D3DDTCAPS_SHORT2N: ::DWORD = 0x00000004;
+pub const D3DDTCAPS_SHORT4N: ::DWORD = 0x00000008;
+pub const D3DDTCAPS_USHORT2N: ::DWORD = 0x00000010;
+pub const D3DDTCAPS_USHORT4N: ::DWORD = 0x00000020;
+pub const D3DDTCAPS_UDEC3: ::DWORD = 0x00000040;
+pub const D3DDTCAPS_DEC3N: ::DWORD = 0x00000080;
+pub const D3DDTCAPS_FLOAT16_2: ::DWORD = 0x00000100;
+pub const D3DDTCAPS_FLOAT16_4: ::DWORD = 0x00000200;
diff --git a/third_party/rust/winapi-0.2.8/src/d3d9types.rs b/third_party/rust/winapi-0.2.8/src/d3d9types.rs
new file mode 100644
index 0000000000..28d0bedfca
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3d9types.rs
@@ -0,0 +1,1397 @@
+// Copyright © 2015, Corey Richardson
+// Licensed under the MIT License <LICENSE.md>
+//! Direct3D capabilities include file
+pub type D3DCOLOR = ::DWORD;
+STRUCT!{struct D3DVECTOR {
+ x: ::c_float,
+ y: ::c_float,
+ z: ::c_float,
+}}
+STRUCT!{struct D3DCOLORVALUE {
+ r: ::c_float,
+ g: ::c_float,
+ b: ::c_float,
+ a: ::c_float,
+}}
+STRUCT!{struct D3DRECT {
+ x1: ::LONG,
+ y1: ::LONG,
+ x2: ::LONG,
+ y2: ::LONG,
+}}
+STRUCT!{struct D3DMATRIX {
+ m: [[::c_float; 4]; 4],
+}}
+STRUCT!{struct D3DVIEWPORT9 {
+ X: ::DWORD,
+ Y: ::DWORD,
+ Width: ::DWORD,
+ Height: ::DWORD,
+ MinZ: ::c_float,
+ MaxZ: ::c_float,
+}}
+pub const D3DMAXUSERCLIPPLANES: ::DWORD = 32;
+pub const D3DCLIPPLANE0: ::DWORD = (1 << 0);
+pub const D3DCLIPPLANE1: ::DWORD = (1 << 1);
+pub const D3DCLIPPLANE2: ::DWORD = (1 << 2);
+pub const D3DCLIPPLANE3: ::DWORD = (1 << 3);
+pub const D3DCLIPPLANE4: ::DWORD = (1 << 4);
+pub const D3DCLIPPLANE5: ::DWORD = (1 << 5);
+pub const D3DCS_LEFT: ::DWORD = 0x00000001;
+pub const D3DCS_RIGHT: ::DWORD = 0x00000002;
+pub const D3DCS_TOP: ::DWORD = 0x00000004;
+pub const D3DCS_BOTTOM: ::DWORD = 0x00000008;
+pub const D3DCS_FRONT: ::DWORD = 0x00000010;
+pub const D3DCS_BACK: ::DWORD = 0x00000020;
+pub const D3DCS_PLANE0: ::DWORD = 0x00000040;
+pub const D3DCS_PLANE1: ::DWORD = 0x00000080;
+pub const D3DCS_PLANE2: ::DWORD = 0x00000100;
+pub const D3DCS_PLANE3: ::DWORD = 0x00000200;
+pub const D3DCS_PLANE4: ::DWORD = 0x00000400;
+pub const D3DCS_PLANE5: ::DWORD = 0x00000800;
+pub const D3DCS_ALL: ::DWORD = D3DCS_LEFT | D3DCS_RIGHT | D3DCS_TOP | D3DCS_BOTTOM | D3DCS_FRONT
+ | D3DCS_BACK | D3DCS_PLANE0 | D3DCS_PLANE1 | D3DCS_PLANE2 | D3DCS_PLANE3 | D3DCS_PLANE4
+ | D3DCS_PLANE5;
+STRUCT!{struct D3DCLIPSTATUS9 {
+ ClipUnion: ::DWORD,
+ ClipIntersection: ::DWORD,
+}}
+STRUCT!{struct D3DMATERIAL9 {
+ Diffuse: D3DCOLORVALUE,
+ Ambient: D3DCOLORVALUE,
+ Specular: D3DCOLORVALUE,
+ Emissive: D3DCOLORVALUE,
+ Power: ::c_float,
+}}
+ENUM!{enum D3DLIGHTTYPE {
+ D3DLIGHT_POINT = 1,
+ D3DLIGHT_SPOT = 2,
+ D3DLIGHT_DIRECTIONAL = 3,
+}}
+STRUCT!{struct D3DLIGHT9 {
+ Type: D3DLIGHTTYPE,
+ Diffuse: D3DCOLORVALUE,
+ Specular: D3DCOLORVALUE,
+ Ambient: D3DCOLORVALUE,
+ Position: D3DVECTOR,
+ Direction: D3DVECTOR,
+ Range: ::c_float,
+ Falloff: ::c_float,
+ Attenuation0: ::c_float,
+ Attenuation1: ::c_float,
+ Attenuation2: ::c_float,
+ Theta: ::c_float,
+ Phi: ::c_float,
+}}
+pub const D3DCLEAR_TARGET: ::DWORD = 0x1;
+pub const D3DCLEAR_ZBUFFER: ::DWORD = 0x2;
+pub const D3DCLEAR_STENCIL: ::DWORD = 0x4;
+ENUM!{enum D3DSHADEMODE {
+ D3DSHADE_FLAT = 1,
+ D3DSHADE_GOURAUD = 2,
+ D3DSHADE_PHONG = 3,
+}}
+ENUM!{enum D3DFILLMODE {
+ D3DFILL_POINT = 1,
+ D3DFILL_WIREFRAME = 2,
+ D3DFILL_SOLID = 3,
+}}
+ENUM!{enum D3DBLEND {
+ D3DBLEND_ZERO = 1,
+ D3DBLEND_ONE = 2,
+ D3DBLEND_SRCCOLOR = 3,
+ D3DBLEND_INVSRCCOLOR = 4,
+ D3DBLEND_SRCALPHA = 5,
+ D3DBLEND_INVSRCALPHA = 6,
+ D3DBLEND_DESTALPHA = 7,
+ D3DBLEND_INVDESTALPHA = 8,
+ D3DBLEND_DESTCOLOR = 9,
+ D3DBLEND_INVDESTCOLOR = 10,
+ D3DBLEND_SRCALPHASAT = 11,
+ D3DBLEND_BOTHSRCALPHA = 12,
+ D3DBLEND_BOTHINVSRCALPHA = 13,
+ D3DBLEND_BLENDFACTOR = 14,
+ D3DBLEND_INVBLENDFACTOR = 15,
+}}
+ENUM!{enum D3DBLENDOP {
+ D3DBLENDOP_ADD = 1,
+ D3DBLENDOP_SUBTRACT = 2,
+ D3DBLENDOP_REVSUBTRACT = 3,
+ D3DBLENDOP_MIN = 4,
+ D3DBLENDOP_MAX = 5,
+}}
+ENUM!{enum D3DTEXTUREADDRESS {
+ D3DTADDRESS_WRAP = 1,
+ D3DTADDRESS_MIRROR = 2,
+ D3DTADDRESS_CLAMP = 3,
+ D3DTADDRESS_BORDER = 4,
+ D3DTADDRESS_MIRRORONCE = 5,
+}}
+ENUM!{enum D3DCULL {
+ D3DCULL_NONE = 1,
+ D3DCULL_CW = 2,
+ D3DCULL_CCW = 3,
+}}
+ENUM!{enum D3DCMPFUNC {
+ D3DCMP_NEVER = 1,
+ D3DCMP_LESS = 2,
+ D3DCMP_EQUAL = 3,
+ D3DCMP_LESSEQUAL = 4,
+ D3DCMP_GREATER = 5,
+ D3DCMP_NOTEQUAL = 6,
+ D3DCMP_GREATEREQUAL = 7,
+ D3DCMP_ALWAYS = 8,
+}}
+ENUM!{enum D3DSTENCILOP {
+ D3DSTENCILOP_KEEP = 1,
+ D3DSTENCILOP_ZERO = 2,
+ D3DSTENCILOP_REPLACE = 3,
+ D3DSTENCILOP_INCRSAT = 4,
+ D3DSTENCILOP_DECRSAT = 5,
+ D3DSTENCILOP_INVERT = 6,
+ D3DSTENCILOP_INCR = 7,
+ D3DSTENCILOP_DECR = 8,
+}}
+ENUM!{enum D3DFOGMODE {
+ D3DFOG_NONE = 0,
+ D3DFOG_EXP = 1,
+ D3DFOG_EXP2 = 2,
+ D3DFOG_LINEAR = 3,
+}}
+ENUM!{enum D3DZBUFFERTYPE {
+ D3DZB_FALSE = 0,
+ D3DZB_TRUE = 1,
+ D3DZB_USEW = 2,
+}}
+ENUM!{enum D3DPRIMITIVETYPE {
+ D3DPT_POINTLIST = 1,
+ D3DPT_LINELIST = 2,
+ D3DPT_LINESTRIP = 3,
+ D3DPT_TRIANGLELIST = 4,
+ D3DPT_TRIANGLESTRIP = 5,
+ D3DPT_TRIANGLEFAN = 6,
+}}
+ENUM!{enum D3DTRANSFORMSTATETYPE {
+ D3DTS_VIEW = 2,
+ D3DTS_PROJECTION = 3,
+ D3DTS_TEXTURE0 = 16,
+ D3DTS_TEXTURE1 = 17,
+ D3DTS_TEXTURE2 = 18,
+ D3DTS_TEXTURE3 = 19,
+ D3DTS_TEXTURE4 = 20,
+ D3DTS_TEXTURE5 = 21,
+ D3DTS_TEXTURE6 = 22,
+ D3DTS_TEXTURE7 = 23,
+}}
+ENUM!{enum D3DRENDERSTATETYPE {
+ D3DRS_ZENABLE = 7,
+ D3DRS_FILLMODE = 8,
+ D3DRS_SHADEMODE = 9,
+ D3DRS_ZWRITEENABLE = 14,
+ D3DRS_ALPHATESTENABLE = 15,
+ D3DRS_LASTPIXEL = 16,
+ D3DRS_SRCBLEND = 19,
+ D3DRS_DESTBLEND = 20,
+ D3DRS_CULLMODE = 22,
+ D3DRS_ZFUNC = 23,
+ D3DRS_ALPHAREF = 24,
+ D3DRS_ALPHAFUNC = 25,
+ D3DRS_DITHERENABLE = 26,
+ D3DRS_ALPHABLENDENABLE = 27,
+ D3DRS_FOGENABLE = 28,
+ D3DRS_SPECULARENABLE = 29,
+ D3DRS_FOGCOLOR = 34,
+ D3DRS_FOGTABLEMODE = 35,
+ D3DRS_FOGSTART = 36,
+ D3DRS_FOGEND = 37,
+ D3DRS_FOGDENSITY = 38,
+ D3DRS_RANGEFOGENABLE = 48,
+ D3DRS_STENCILENABLE = 52,
+ D3DRS_STENCILFAIL = 53,
+ D3DRS_STENCILZFAIL = 54,
+ D3DRS_STENCILPASS = 55,
+ D3DRS_STENCILFUNC = 56,
+ D3DRS_STENCILREF = 57,
+ D3DRS_STENCILMASK = 58,
+ D3DRS_STENCILWRITEMASK = 59,
+ D3DRS_TEXTUREFACTOR = 60,
+ D3DRS_WRAP0 = 128,
+ D3DRS_WRAP1 = 129,
+ D3DRS_WRAP2 = 130,
+ D3DRS_WRAP3 = 131,
+ D3DRS_WRAP4 = 132,
+ D3DRS_WRAP5 = 133,
+ D3DRS_WRAP6 = 134,
+ D3DRS_WRAP7 = 135,
+ D3DRS_CLIPPING = 136,
+ D3DRS_LIGHTING = 137,
+ D3DRS_AMBIENT = 139,
+ D3DRS_FOGVERTEXMODE = 140,
+ D3DRS_COLORVERTEX = 141,
+ D3DRS_LOCALVIEWER = 142,
+ D3DRS_NORMALIZENORMALS = 143,
+ D3DRS_DIFFUSEMATERIALSOURCE = 145,
+ D3DRS_SPECULARMATERIALSOURCE = 146,
+ D3DRS_AMBIENTMATERIALSOURCE = 147,
+ D3DRS_EMISSIVEMATERIALSOURCE = 148,
+ D3DRS_VERTEXBLEND = 151,
+ D3DRS_CLIPPLANEENABLE = 152,
+ D3DRS_POINTSIZE = 154,
+ D3DRS_POINTSIZE_MIN = 155,
+ D3DRS_POINTSPRITEENABLE = 156,
+ D3DRS_POINTSCALEENABLE = 157,
+ D3DRS_POINTSCALE_A = 158,
+ D3DRS_POINTSCALE_B = 159,
+ D3DRS_POINTSCALE_C = 160,
+ D3DRS_MULTISAMPLEANTIALIAS = 161,
+ D3DRS_MULTISAMPLEMASK = 162,
+ D3DRS_PATCHEDGESTYLE = 163,
+ D3DRS_DEBUGMONITORTOKEN = 165,
+ D3DRS_POINTSIZE_MAX = 166,
+ D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
+ D3DRS_COLORWRITEENABLE = 168,
+ D3DRS_TWEENFACTOR = 170,
+ D3DRS_BLENDOP = 171,
+ D3DRS_POSITIONDEGREE = 172,
+ D3DRS_NORMALDEGREE = 173,
+ D3DRS_SCISSORTESTENABLE = 174,
+ D3DRS_SLOPESCALEDEPTHBIAS = 175,
+ D3DRS_ANTIALIASEDLINEENABLE = 176,
+ D3DRS_MINTESSELLATIONLEVEL = 178,
+ D3DRS_MAXTESSELLATIONLEVEL = 179,
+ D3DRS_ADAPTIVETESS_X = 180,
+ D3DRS_ADAPTIVETESS_Y = 181,
+ D3DRS_ADAPTIVETESS_Z = 182,
+ D3DRS_ADAPTIVETESS_W = 183,
+ D3DRS_ENABLEADAPTIVETESSELLATION = 184,
+ D3DRS_TWOSIDEDSTENCILMODE = 185,
+ D3DRS_CCW_STENCILFAIL = 186,
+ D3DRS_CCW_STENCILZFAIL = 187,
+ D3DRS_CCW_STENCILPASS = 188,
+ D3DRS_CCW_STENCILFUNC = 189,
+ D3DRS_COLORWRITEENABLE1 = 190,
+ D3DRS_COLORWRITEENABLE2 = 191,
+ D3DRS_COLORWRITEENABLE3 = 192,
+ D3DRS_BLENDFACTOR = 193,
+ D3DRS_SRGBWRITEENABLE = 194,
+ D3DRS_DEPTHBIAS = 195,
+ D3DRS_WRAP8 = 198,
+ D3DRS_WRAP9 = 199,
+ D3DRS_WRAP10 = 200,
+ D3DRS_WRAP11 = 201,
+ D3DRS_WRAP12 = 202,
+ D3DRS_WRAP13 = 203,
+ D3DRS_WRAP14 = 204,
+ D3DRS_WRAP15 = 205,
+ D3DRS_SEPARATEALPHABLENDENABLE = 206,
+ D3DRS_SRCBLENDALPHA = 207,
+ D3DRS_DESTBLENDALPHA = 208,
+ D3DRS_BLENDOPALPHA = 209,
+}}
+pub const D3D_MAX_SIMULTANEOUS_RENDERTARGETS: ::DWORD = 4;
+ENUM!{enum D3DMATERIALCOLORSOURCE {
+ D3DMCS_MATERIAL = 0,
+ D3DMCS_COLOR1 = 1,
+ D3DMCS_COLOR2 = 2,
+}}
+pub const D3DRENDERSTATE_WRAPBIAS: ::DWORD = 128;
+pub const D3DWRAP_U: ::DWORD = 0x00000001;
+pub const D3DWRAP_V: ::DWORD = 0x00000002;
+pub const D3DWRAP_W: ::DWORD = 0x00000004;
+pub const D3DWRAPCOORD_0: ::DWORD = 0x00000001;
+pub const D3DWRAPCOORD_1: ::DWORD = 0x00000002;
+pub const D3DWRAPCOORD_2: ::DWORD = 0x00000004;
+pub const D3DWRAPCOORD_3: ::DWORD = 0x00000008;
+pub const D3DCOLORWRITEENABLE_RED: ::DWORD = 1 << 0;
+pub const D3DCOLORWRITEENABLE_GREEN: ::DWORD = 1 << 1;
+pub const D3DCOLORWRITEENABLE_BLUE: ::DWORD = 1 << 2;
+pub const D3DCOLORWRITEENABLE_ALPHA: ::DWORD = 1 << 3;
+ENUM!{enum D3DTEXTURESTAGESTATETYPE {
+ D3DTSS_COLOROP = 1,
+ D3DTSS_COLORARG1 = 2,
+ D3DTSS_COLORARG2 = 3,
+ D3DTSS_ALPHAOP = 4,
+ D3DTSS_ALPHAARG1 = 5,
+ D3DTSS_ALPHAARG2 = 6,
+ D3DTSS_BUMPENVMAT00 = 7,
+ D3DTSS_BUMPENVMAT01 = 8,
+ D3DTSS_BUMPENVMAT10 = 9,
+ D3DTSS_BUMPENVMAT11 = 10,
+ D3DTSS_TEXCOORDINDEX = 11,
+ D3DTSS_BUMPENVLSCALE = 22,
+ D3DTSS_BUMPENVLOFFSET = 23,
+ D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+ D3DTSS_COLORARG0 = 26,
+ D3DTSS_ALPHAARG0 = 27,
+ D3DTSS_RESULTARG = 28,
+ D3DTSS_CONSTANT = 32,
+}}
+ENUM!{enum D3DSAMPLERSTATETYPE {
+ D3DSAMP_ADDRESSU = 1,
+ D3DSAMP_ADDRESSV = 2,
+ D3DSAMP_ADDRESSW = 3,
+ D3DSAMP_BORDERCOLOR = 4,
+ D3DSAMP_MAGFILTER = 5,
+ D3DSAMP_MINFILTER = 6,
+ D3DSAMP_MIPFILTER = 7,
+ D3DSAMP_MIPMAPLODBIAS = 8,
+ D3DSAMP_MAXMIPLEVEL = 9,
+ D3DSAMP_MAXANISOTROPY = 10,
+ D3DSAMP_SRGBTEXTURE = 11,
+ D3DSAMP_ELEMENTINDEX = 12,
+ D3DSAMP_DMAPOFFSET = 13,
+}}
+pub const D3DDMAPSAMPLER: ::DWORD = 256;
+pub const D3DVERTEXTEXTURESAMPLER0: ::DWORD = D3DDMAPSAMPLER + 1;
+pub const D3DVERTEXTEXTURESAMPLER1: ::DWORD = D3DDMAPSAMPLER + 2;
+pub const D3DVERTEXTEXTURESAMPLER2: ::DWORD = D3DDMAPSAMPLER + 3;
+pub const D3DVERTEXTEXTURESAMPLER3: ::DWORD = D3DDMAPSAMPLER + 4;
+pub const D3DTSS_TCI_PASSTHRU: ::DWORD = 0x00000000;
+pub const D3DTSS_TCI_CAMERASPACENORMAL: ::DWORD = 0x00010000;
+pub const D3DTSS_TCI_CAMERASPACEPOSITION: ::DWORD = 0x00020000;
+pub const D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR: ::DWORD = 0x00030000;
+pub const D3DTSS_TCI_SPHEREMAP: ::DWORD = 0x00040000;
+ENUM!{enum D3DTEXTUREOP {
+ D3DTOP_DISABLE = 1,
+ D3DTOP_SELECTARG1 = 2,
+ D3DTOP_SELECTARG2 = 3,
+ D3DTOP_MODULATE = 4,
+ D3DTOP_MODULATE2X = 5,
+ D3DTOP_MODULATE4X = 6,
+ D3DTOP_ADD = 7,
+ D3DTOP_ADDSIGNED = 8,
+ D3DTOP_ADDSIGNED2X = 9,
+ D3DTOP_SUBTRACT = 10,
+ D3DTOP_ADDSMOOTH = 11,
+ D3DTOP_BLENDDIFFUSEALPHA = 12,
+ D3DTOP_BLENDTEXTUREALPHA = 13,
+ D3DTOP_BLENDFACTORALPHA = 14,
+ D3DTOP_BLENDTEXTUREALPHAPM = 15,
+ D3DTOP_BLENDCURRENTALPHA = 16,
+ D3DTOP_PREMODULATE = 17,
+ D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
+ D3DTOP_MODULATECOLOR_ADDALPHA = 19,
+ D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+ D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+ D3DTOP_BUMPENVMAP = 22,
+ D3DTOP_BUMPENVMAPLUMINANCE = 23,
+ D3DTOP_DOTPRODUCT3 = 24,
+ D3DTOP_MULTIPLYADD = 25,
+ D3DTOP_LERP = 26,
+}}
+pub const D3DTA_SELECTMASK: ::DWORD = 0x0000000f;
+pub const D3DTA_DIFFUSE: ::DWORD = 0x00000000;
+pub const D3DTA_CURRENT: ::DWORD = 0x00000001;
+pub const D3DTA_TEXTURE: ::DWORD = 0x00000002;
+pub const D3DTA_TFACTOR: ::DWORD = 0x00000003;
+pub const D3DTA_SPECULAR: ::DWORD = 0x00000004;
+pub const D3DTA_TEMP: ::DWORD = 0x00000005;
+pub const D3DTA_CONSTANT: ::DWORD = 0x00000006;
+pub const D3DTA_COMPLEMENT: ::DWORD = 0x00000010;
+pub const D3DTA_ALPHAREPLICATE: ::DWORD = 0x00000020;
+ENUM!{enum D3DTEXTUREFILTERTYPE {
+ D3DTEXF_NONE = 0,
+ D3DTEXF_POINT = 1,
+ D3DTEXF_LINEAR = 2,
+ D3DTEXF_ANISOTROPIC = 3,
+ D3DTEXF_PYRAMIDALQUAD = 6,
+ D3DTEXF_GAUSSIANQUAD = 7,
+ D3DTEXF_CONVOLUTIONMONO = 8,
+}}
+pub const D3DPV_DONOTCOPYDATA: ::DWORD = 1 << 0;
+pub const D3DFVF_RESERVED0: ::DWORD = 0x001;
+pub const D3DFVF_POSITION_MASK: ::DWORD = 0x400E;
+pub const D3DFVF_XYZ: ::DWORD = 0x002;
+pub const D3DFVF_XYZRHW: ::DWORD = 0x004;
+pub const D3DFVF_XYZB1: ::DWORD = 0x006;
+pub const D3DFVF_XYZB2: ::DWORD = 0x008;
+pub const D3DFVF_XYZB3: ::DWORD = 0x00a;
+pub const D3DFVF_XYZB4: ::DWORD = 0x00c;
+pub const D3DFVF_XYZB5: ::DWORD = 0x00e;
+pub const D3DFVF_XYZW: ::DWORD = 0x4002;
+pub const D3DFVF_NORMAL: ::DWORD = 0x010;
+pub const D3DFVF_PSIZE: ::DWORD = 0x020;
+pub const D3DFVF_DIFFUSE: ::DWORD = 0x040;
+pub const D3DFVF_SPECULAR: ::DWORD = 0x080;
+pub const D3DFVF_TEXCOUNT_MASK: ::DWORD = 0xf00;
+pub const D3DFVF_TEXCOUNT_SHIFT: ::DWORD = 8;
+pub const D3DFVF_TEX0: ::DWORD = 0x000;
+pub const D3DFVF_TEX1: ::DWORD = 0x100;
+pub const D3DFVF_TEX2: ::DWORD = 0x200;
+pub const D3DFVF_TEX3: ::DWORD = 0x300;
+pub const D3DFVF_TEX4: ::DWORD = 0x400;
+pub const D3DFVF_TEX5: ::DWORD = 0x500;
+pub const D3DFVF_TEX6: ::DWORD = 0x600;
+pub const D3DFVF_TEX7: ::DWORD = 0x700;
+pub const D3DFVF_TEX8: ::DWORD = 0x800;
+pub const D3DFVF_LASTBETA_UBYTE4: ::DWORD = 0x1000;
+pub const D3DFVF_LASTBETA_D3DCOLOR: ::DWORD = 0x8000;
+pub const D3DFVF_RESERVED2: ::DWORD = 0x6000;
+ENUM!{enum D3DDECLUSAGE {
+ D3DDECLUSAGE_POSITION = 0,
+ D3DDECLUSAGE_BLENDWEIGHT,
+ D3DDECLUSAGE_BLENDINDICES,
+ D3DDECLUSAGE_NORMAL,
+ D3DDECLUSAGE_PSIZE,
+ D3DDECLUSAGE_TEXCOORD,
+ D3DDECLUSAGE_TANGENT,
+ D3DDECLUSAGE_BINORMAL,
+ D3DDECLUSAGE_TESSFACTOR,
+ D3DDECLUSAGE_POSITIONT,
+ D3DDECLUSAGE_COLOR,
+ D3DDECLUSAGE_FOG,
+ D3DDECLUSAGE_DEPTH,
+ D3DDECLUSAGE_SAMPLE,
+}}
+pub const MAXD3DDECLUSAGE: D3DDECLUSAGE = D3DDECLUSAGE_SAMPLE;
+pub const MAXD3DDECLUSAGEINDEX: ::DWORD = 15;
+pub const MAXD3DDECLLENGTH: ::DWORD = 64;
+ENUM!{enum D3DDECLMETHOD {
+ D3DDECLMETHOD_DEFAULT = 0,
+ D3DDECLMETHOD_PARTIALU,
+ D3DDECLMETHOD_PARTIALV,
+ D3DDECLMETHOD_CROSSUV,
+ D3DDECLMETHOD_UV,
+ D3DDECLMETHOD_LOOKUP,
+ D3DDECLMETHOD_LOOKUPPRESAMPLED,
+}}
+pub const MAXD3DDECLMETHOD: D3DDECLMETHOD = D3DDECLMETHOD_LOOKUPPRESAMPLED;
+ENUM!{enum D3DDECLTYPE {
+ D3DDECLTYPE_FLOAT1 = 0,
+ D3DDECLTYPE_FLOAT2 = 1,
+ D3DDECLTYPE_FLOAT3 = 2,
+ D3DDECLTYPE_FLOAT4 = 3,
+ D3DDECLTYPE_D3DCOLOR = 4,
+ D3DDECLTYPE_UBYTE4 = 5,
+ D3DDECLTYPE_SHORT2 = 6,
+ D3DDECLTYPE_SHORT4 = 7,
+ D3DDECLTYPE_UBYTE4N = 8,
+ D3DDECLTYPE_SHORT2N = 9,
+ D3DDECLTYPE_SHORT4N = 10,
+ D3DDECLTYPE_USHORT2N = 11,
+ D3DDECLTYPE_USHORT4N = 12,
+ D3DDECLTYPE_UDEC3 = 13,
+ D3DDECLTYPE_DEC3N = 14,
+ D3DDECLTYPE_FLOAT16_2 = 15,
+ D3DDECLTYPE_FLOAT16_4 = 16,
+ D3DDECLTYPE_UNUSED = 17,
+}}
+pub const MAXD3DDECLTYPE: D3DDECLTYPE = D3DDECLTYPE_UNUSED;
+STRUCT!{struct D3DVERTEXELEMENT9 {
+ Stream: ::WORD,
+ Offset: ::WORD,
+ Type: ::BYTE,
+ Method: ::BYTE,
+ Usage: ::BYTE,
+ UsageIndex: ::BYTE,
+}}
+pub type LPD3DVERTEXELEMENT9 = *mut D3DVERTEXELEMENT9;
+pub const D3DDECL_END: D3DVERTEXELEMENT9 = D3DVERTEXELEMENT9 {
+ Stream: 0xFF,
+ Offset: 0,
+ Type: D3DDECLTYPE_UNUSED.0 as ::BYTE,
+ Method: 0,
+ Usage: 0,
+ UsageIndex: 0,
+};
+pub const D3DDP_MAXTEXCOORD: ::DWORD = 8;
+pub const D3DSTREAMSOURCE_INDEXEDDATA: ::DWORD = 1 << 30;
+pub const D3DSTREAMSOURCE_INSTANCEDATA: ::DWORD = 2 << 30;
+pub const D3DSI_OPCODE_MASK: ::DWORD = 0x0000FFFF;
+pub const D3DSI_INSTLENGTH_MASK: ::DWORD = 0x0F000000;
+pub const D3DSI_INSTLENGTH_SHIFT: ::DWORD = 24;
+ENUM!{enum D3DSHADER_INSTRUCTION_OPCODE_TYPE {
+ D3DSIO_NOP = 0,
+ D3DSIO_MOV = 1,
+ D3DSIO_ADD = 2,
+ D3DSIO_SUB = 3,
+ D3DSIO_MAD = 4,
+ D3DSIO_MUL = 5,
+ D3DSIO_RCP = 6,
+ D3DSIO_RSQ = 7,
+ D3DSIO_DP3 = 8,
+ D3DSIO_DP4 = 9,
+ D3DSIO_MIN = 10,
+ D3DSIO_MAX = 11,
+ D3DSIO_SLT = 12,
+ D3DSIO_SGE = 13,
+ D3DSIO_EXP = 14,
+ D3DSIO_LOG = 15,
+ D3DSIO_LIT = 16,
+ D3DSIO_DST = 17,
+ D3DSIO_LRP = 18,
+ D3DSIO_FRC = 18,
+ D3DSIO_M4x4 = 20,
+ D3DSIO_M4x3 = 21,
+ D3DSIO_M3x4 = 22,
+ D3DSIO_M3x3 = 23,
+ D3DSIO_M3x2 = 24,
+ D3DSIO_CALL = 25,
+ D3DSIO_CALLNZ = 26,
+ D3DSIO_LOOP = 27,
+ D3DSIO_RET = 28,
+ D3DSIO_ENDLOOP = 29,
+ D3DSIO_LABEL = 30,
+ D3DSIO_DCL = 31,
+ D3DSIO_POW = 32,
+ D3DSIO_CRS = 33,
+ D3DSIO_SGN = 34,
+ D3DSIO_ABS = 35,
+ D3DSIO_NRM = 36,
+ D3DSIO_SINCOS = 37,
+ D3DSIO_REP = 38,
+ D3DSIO_ENDREP = 39,
+ D3DSIO_IF = 40,
+ D3DSIO_IFC = 41,
+ D3DSIO_ELSE = 42,
+ D3DSIO_ENDIF = 43,
+ D3DSIO_BREAK = 44,
+ D3DSIO_BREAKC = 45,
+ D3DSIO_MOVA = 46,
+ D3DSIO_DEFB = 47,
+ D3DSIO_DEFI = 48,
+ D3DSIO_TEXCOORD = 64,
+ D3DSIO_TEXKILL = 65,
+ D3DSIO_TEX = 66,
+ D3DSIO_TEXBEM = 67,
+ D3DSIO_TEXBEML = 68,
+ D3DSIO_TEXREG2AR = 69,
+ D3DSIO_TEXREG2GB = 70,
+ D3DSIO_TEXM3x2PAD = 71,
+ D3DSIO_TEXM3x2TEX = 72,
+ D3DSIO_TEXM3x3PAD = 73,
+ D3DSIO_TEXM3x3TEX = 74,
+ D3DSIO_RESERVED0 = 75,
+ D3DSIO_TEXM3x3SPEC = 76,
+ D3DSIO_TEXM3x3VSPEC = 77,
+ D3DSIO_EXPP = 78,
+ D3DSIO_LOGP = 79,
+ D3DSIO_CND = 80,
+ D3DSIO_DEF = 81,
+ D3DSIO_TEXREG2RGB = 82,
+ D3DSIO_TEXDP3TEX = 83,
+ D3DSIO_TEXM3x2DEPTH = 84,
+ D3DSIO_TEXDP3 = 85,
+ D3DSIO_TEXM3x3 = 86,
+ D3DSIO_TEXDEPTH = 87,
+ D3DSIO_CMP = 88,
+ D3DSIO_BEM = 89,
+ D3DSIO_DP2ADD = 90,
+ D3DSIO_DSX = 91,
+ D3DSIO_DSY = 92,
+ D3DSIO_TEXLDD = 93,
+ D3DSIO_SETP = 94,
+ D3DSIO_TEXLDL = 95,
+ D3DSIO_BREAKP = 96,
+ D3DSIO_PHASE = 0xFFFD,
+ D3DSIO_COMMENT = 0xFFFE,
+ D3DSIO_END = 0xFFFF,
+}}
+pub const D3DSI_COISSUE: ::DWORD = 0x40000000;
+pub const D3DSP_OPCODESPECIFICCONTROL_MASK: ::DWORD = 0x00ff0000;
+pub const D3DSP_OPCODESPECIFICCONTROL_SHIFT: ::DWORD = 16;
+pub const D3DSI_TEXLD_PROJECT: ::DWORD = 0x01 << D3DSP_OPCODESPECIFICCONTROL_SHIFT;
+pub const D3DSI_TEXLD_BIAS: ::DWORD = 0x02 << D3DSP_OPCODESPECIFICCONTROL_SHIFT;
+ENUM!{enum D3DSHADER_COMPARISON {
+ D3DSPC_RESERVED0 = 0,
+ D3DSPC_GT = 1,
+ D3DSPC_EQ = 2,
+ D3DSPC_GE = 3,
+ D3DSPC_LT = 4,
+ D3DSPC_NE = 5,
+ D3DSPC_LE = 6,
+ D3DSPC_RESERVED1 = 7,
+}}
+pub const D3DSHADER_COMPARISON_SHIFT: ::DWORD = D3DSP_OPCODESPECIFICCONTROL_SHIFT;
+pub const D3DSHADER_COMPARISON_MASK: ::DWORD = 0x7 << D3DSHADER_COMPARISON_SHIFT;
+pub const D3DSHADER_INSTRUCTION_PREDICATED: ::DWORD = 0x1 << 28;
+pub const D3DSP_DCL_USAGE_SHIFT: ::DWORD = 0;
+pub const D3DSP_DCL_USAGE_MASK: ::DWORD = 0x0000000f;
+pub const D3DSP_DCL_USAGEINDEX_SHIFT: ::DWORD = 16;
+pub const D3DSP_DCL_USAGEINDEX_MASK: ::DWORD = 0x000f0000;
+pub const D3DSP_TEXTURETYPE_SHIFT: ::DWORD = 27;
+pub const D3DSP_TEXTURETYPE_MASK: ::DWORD = 0x78000000;
+ENUM!{enum D3DSAMPLER_TEXTURE_TYPE {
+ D3DSTT_UNKNOWN = 0 << D3DSP_TEXTURETYPE_SHIFT,
+ D3DSTT_2D = 2 << D3DSP_TEXTURETYPE_SHIFT,
+ D3DSTT_CUBE = 3 << D3DSP_TEXTURETYPE_SHIFT,
+ D3DSTT_VOLUME = 4 << D3DSP_TEXTURETYPE_SHIFT,
+}}
+pub const D3DSP_REGNUM_MASK: ::DWORD = 0x000007FF;
+pub const D3DSP_WRITEMASK_0: ::DWORD = 0x00010000;
+pub const D3DSP_WRITEMASK_1: ::DWORD = 0x00020000;
+pub const D3DSP_WRITEMASK_2: ::DWORD = 0x00040000;
+pub const D3DSP_WRITEMASK_3: ::DWORD = 0x00080000;
+pub const D3DSP_WRITEMASK_ALL: ::DWORD = 0x000F0000;
+pub const D3DSP_DSTMOD_SHIFT: ::DWORD = 20;
+pub const D3DSP_DSTMOD_MASK: ::DWORD = 0x00F00000;
+pub const D3DSPDM_NONE: ::DWORD = 0 << D3DSP_DSTMOD_SHIFT;
+pub const D3DSPDM_SATURATE: ::DWORD = 1 << D3DSP_DSTMOD_SHIFT;
+pub const D3DSPDM_PARTIALPRECISION: ::DWORD = 2 << D3DSP_DSTMOD_SHIFT;
+pub const D3DSPDM_MSAMPCENTROID: ::DWORD = 4 << D3DSP_DSTMOD_SHIFT;
+pub const D3DSP_DSTSHIFT_SHIFT: ::DWORD = 24;
+pub const D3DSP_DSTSHIFT_MASK: ::DWORD = 0x0F000000;
+pub const D3DSP_REGTYPE_SHIFT: ::DWORD = 28;
+pub const D3DSP_REGTYPE_SHIFT2: ::DWORD = 8;
+pub const D3DSP_REGTYPE_MASK: ::DWORD = 0x70000000;
+pub const D3DSP_REGTYPE_MASK2: ::DWORD = 0x00001800;
+ENUM!{enum D3DSHADER_PARAM_REGISTER_TYPE {
+ D3DSPR_TEMP = 0,
+ D3DSPR_INPUT = 1,
+ D3DSPR_CONST = 2,
+ D3DSPR_ADDR = 3,
+ D3DSPR_TEXTURE = 3,
+ D3DSPR_RASTOUT = 4,
+ D3DSPR_ATTROUT = 5,
+ D3DSPR_TEXCRDOUT = 6,
+ D3DSPR_OUTPUT = 6,
+ D3DSPR_CONSTINT = 7,
+ D3DSPR_COLOROUT = 8,
+ D3DSPR_DEPTHOUT = 9,
+ D3DSPR_SAMPLER = 10,
+ D3DSPR_CONST2 = 11,
+ D3DSPR_CONST3 = 12,
+ D3DSPR_CONST4 = 13,
+ D3DSPR_CONSTBOOL = 14,
+ D3DSPR_LOOP = 15,
+ D3DSPR_TEMPFLOAT16 = 16,
+ D3DSPR_MISCTYPE = 17,
+ D3DSPR_LABEL = 18,
+ D3DSPR_PREDICATE = 19,
+}}
+ENUM!{enum D3DSHADER_MISCTYPE_OFFSETS {
+ D3DSMO_POSITION = 0,
+ D3DSMO_FACE = 1,
+}}
+ENUM!{enum D3DVS_RASTOUT_OFFSETS {
+ D3DSRO_POSITION = 0,
+ D3DSRO_FOG,
+ D3DSRO_POINT_SIZE,
+}}
+pub const D3DVS_ADDRESSMODE_SHIFT: ::DWORD = 13;
+pub const D3DVS_ADDRESSMODE_MASK: ::DWORD = 1 << D3DVS_ADDRESSMODE_SHIFT;
+ENUM!{enum D3DVS_ADDRESSMODE_TYPE {
+ D3DVS_ADDRMODE_ABSOLUTE = 0 << D3DVS_ADDRESSMODE_SHIFT,
+ D3DVS_ADDRMODE_RELATIVE = 1 << D3DVS_ADDRESSMODE_SHIFT,
+}}
+pub const D3DSHADER_ADDRESSMODE_SHIFT: ::DWORD = 13;
+pub const D3DSHADER_ADDRESSMODE_MASK: ::DWORD = 1 << D3DSHADER_ADDRESSMODE_SHIFT;
+ENUM!{enum D3DSHADER_ADDRESSMODE_TYPE {
+ D3DSHADER_ADDRMODE_ABSOLUTE = 0 << D3DSHADER_ADDRESSMODE_SHIFT,
+ D3DSHADER_ADDRMODE_RELATIVE = 1 << D3DSHADER_ADDRESSMODE_SHIFT,
+}}
+pub const D3DVS_SWIZZLE_SHIFT: ::DWORD = 16;
+pub const D3DVS_SWIZZLE_MASK: ::DWORD = 0x00FF0000;
+pub const D3DVS_X_X: ::DWORD = 0 << D3DVS_SWIZZLE_SHIFT;
+pub const D3DVS_X_Y: ::DWORD = 1 << D3DVS_SWIZZLE_SHIFT;
+pub const D3DVS_X_Z: ::DWORD = 2 << D3DVS_SWIZZLE_SHIFT;
+pub const D3DVS_X_W: ::DWORD = 3 << D3DVS_SWIZZLE_SHIFT;
+pub const D3DVS_Y_X: ::DWORD = 0 << (D3DVS_SWIZZLE_SHIFT + 2);
+pub const D3DVS_Y_Y: ::DWORD = 1 << (D3DVS_SWIZZLE_SHIFT + 2);
+pub const D3DVS_Y_Z: ::DWORD = 2 << (D3DVS_SWIZZLE_SHIFT + 2);
+pub const D3DVS_Y_W: ::DWORD = 3 << (D3DVS_SWIZZLE_SHIFT + 2);
+pub const D3DVS_Z_X: ::DWORD = 0 << (D3DVS_SWIZZLE_SHIFT + 4);
+pub const D3DVS_Z_Y: ::DWORD = 1 << (D3DVS_SWIZZLE_SHIFT + 4);
+pub const D3DVS_Z_Z: ::DWORD = 2 << (D3DVS_SWIZZLE_SHIFT + 4);
+pub const D3DVS_Z_W: ::DWORD = 3 << (D3DVS_SWIZZLE_SHIFT + 4);
+pub const D3DVS_W_X: ::DWORD = 0 << (D3DVS_SWIZZLE_SHIFT + 6);
+pub const D3DVS_W_Y: ::DWORD = 1 << (D3DVS_SWIZZLE_SHIFT + 6);
+pub const D3DVS_W_Z: ::DWORD = 2 << (D3DVS_SWIZZLE_SHIFT + 6);
+pub const D3DVS_W_W: ::DWORD = 3 << (D3DVS_SWIZZLE_SHIFT + 6);
+pub const D3DVS_NOSWIZZLE: ::DWORD = D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W;
+pub const D3DSP_SWIZZLE_SHIFT: ::DWORD = 16;
+pub const D3DSP_SWIZZLE_MASK: ::DWORD = 0x00FF0000;
+pub const D3DSP_NOSWIZZLE: ::DWORD = (0 << (D3DSP_SWIZZLE_SHIFT + 0))
+ | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4))
+ | (3 << (D3DSP_SWIZZLE_SHIFT + 6));
+pub const D3DSP_REPLICATERED: ::DWORD = (0 << (D3DSP_SWIZZLE_SHIFT + 0))
+ | (0 << (D3DSP_SWIZZLE_SHIFT + 2)) | (0 << (D3DSP_SWIZZLE_SHIFT + 4))
+ | (0 << (D3DSP_SWIZZLE_SHIFT + 6));
+pub const D3DSP_REPLICATEGREEN: ::DWORD = (1 << (D3DSP_SWIZZLE_SHIFT + 0))
+ | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (1 << (D3DSP_SWIZZLE_SHIFT + 4))
+ | (1 << (D3DSP_SWIZZLE_SHIFT + 6));
+pub const D3DSP_REPLICATEBLUE: ::DWORD = (2 << (D3DSP_SWIZZLE_SHIFT + 0))
+ | (2 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4))
+ | (2 << (D3DSP_SWIZZLE_SHIFT + 6));
+pub const D3DSP_REPLICATEALPHA: ::DWORD = (3 << (D3DSP_SWIZZLE_SHIFT + 0))
+ | (3 << (D3DSP_SWIZZLE_SHIFT + 2)) | (3 << (D3DSP_SWIZZLE_SHIFT + 4))
+ | (3 << (D3DSP_SWIZZLE_SHIFT + 6));
+pub const D3DSP_SRCMOD_SHIFT: ::DWORD = 24;
+pub const D3DSP_SRCMOD_MASK: ::DWORD = 0x0F000000;
+ENUM!{enum D3DSHADER_PARAM_SRCMOD_TYPE {
+ D3DSPSM_NONE = 0 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_NEG = 1 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_BIAS = 2 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_BIASNEG = 3 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_SIGN = 4 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_SIGNNEG = 5 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_COMP = 6 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_X2 = 7 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_X2NEG = 8 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_DZ = 9 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_DW = 10 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_ABS = 11 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_ABSNEG = 12 << D3DSP_SRCMOD_SHIFT,
+ D3DSPSM_NOT = 13 << D3DSP_SRCMOD_SHIFT,
+}}
+pub const D3DSP_MIN_PRECISION_SHIFT: ::DWORD = 14;
+pub const D3DSP_MIN_PRECISION_MASK: ::DWORD = 0x0000C000;
+ENUM!{enum D3DSHADER_MIN_PRECISION {
+ D3DMP_DEFAULT = 0,
+ D3DMP_16 = 1,
+ D3DMP_2_8 = 2,
+}}
+pub const D3DSI_COMMENTSIZE_SHIFT: ::DWORD = 16;
+pub const D3DSI_COMMENTSIZE_MASK: ::DWORD = 0x7FFF0000;
+pub const D3DPS_END: ::DWORD = 0x0000FFFF;
+pub const D3DVS_END: ::DWORD = 0x0000FFFF;
+ENUM!{enum D3DBASISTYPE {
+ D3DBASIS_BEZIER = 0,
+ D3DBASIS_BSPLINE = 1,
+ D3DBASIS_CATMULL_ROM = 2,
+}}
+ENUM!{enum D3DDEGREETYPE {
+ D3DDEGREE_LINEAR = 1,
+ D3DDEGREE_QUADRATIC = 2,
+ D3DDEGREE_CUBIC = 3,
+ D3DDEGREE_QUINTIC = 5,
+}}
+ENUM!{enum D3DPATCHEDGESTYLE {
+ D3DPATCHEDGE_DISCRETE = 0,
+ D3DPATCHEDGE_CONTINUOUS = 1,
+}}
+ENUM!{enum D3DSTATEBLOCKTYPE {
+ D3DSBT_ALL = 1,
+ D3DSBT_PIXELSTATE = 2,
+ D3DSBT_VERTEXSTATE = 3,
+}}
+FLAGS!{enum D3DVERTEXBLENDFLAGS {
+ D3DVBF_DISABLE = 0,
+ D3DVBF_1WEIGHTS = 1,
+ D3DVBF_2WEIGHTS = 2,
+ D3DVBF_3WEIGHTS = 3,
+ D3DVBF_TWEENING = 255,
+ D3DVBF_0WEIGHTS = 256,
+}}
+ENUM!{enum D3DTEXTURETRANSFORMFLAGS {
+ D3DTTFF_DISABLE = 0,
+ D3DTTFF_COUNT1 = 1,
+ D3DTTFF_COUNT2 = 2,
+ D3DTTFF_COUNT3 = 3,
+ D3DTTFF_COUNT4 = 4,
+ D3DTTFF_PROJECTED = 256,
+}}
+pub const D3DFVF_TEXTUREFORMAT2: ::DWORD = 0;
+pub const D3DFVF_TEXTUREFORMAT1: ::DWORD = 3;
+pub const D3DFVF_TEXTUREFORMAT3: ::DWORD = 1;
+pub const D3DFVF_TEXTUREFORMAT4: ::DWORD = 2;
+ENUM!{enum D3DDEVTYPE {
+ D3DDEVTYPE_HAL = 1,
+ D3DDEVTYPE_REF = 2,
+ D3DDEVTYPE_SW = 3,
+ D3DDEVTYPE_NULLREF = 4,
+}}
+ENUM!{enum D3DMULTISAMPLE_TYPE {
+ D3DMULTISAMPLE_NONE = 0,
+ D3DMULTISAMPLE_NONMASKABLE = 1,
+ D3DMULTISAMPLE_2_SAMPLES = 2,
+ D3DMULTISAMPLE_3_SAMPLES = 3,
+ D3DMULTISAMPLE_4_SAMPLES = 4,
+ D3DMULTISAMPLE_5_SAMPLES = 5,
+ D3DMULTISAMPLE_6_SAMPLES = 6,
+ D3DMULTISAMPLE_7_SAMPLES = 7,
+ D3DMULTISAMPLE_8_SAMPLES = 8,
+ D3DMULTISAMPLE_9_SAMPLES = 9,
+ D3DMULTISAMPLE_10_SAMPLES = 10,
+ D3DMULTISAMPLE_11_SAMPLES = 11,
+ D3DMULTISAMPLE_12_SAMPLES = 12,
+ D3DMULTISAMPLE_13_SAMPLES = 13,
+ D3DMULTISAMPLE_14_SAMPLES = 14,
+ D3DMULTISAMPLE_15_SAMPLES = 15,
+ D3DMULTISAMPLE_16_SAMPLES = 16,
+}}
+ENUM!{enum D3DFORMAT {
+ D3DFMT_UNKNOWN = 0,
+ D3DFMT_R8G8B8 = 20,
+ D3DFMT_A8R8G8B8 = 21,
+ D3DFMT_X8R8G8B8 = 22,
+ D3DFMT_R5G6B5 = 23,
+ D3DFMT_X1R5G5B5 = 24,
+ D3DFMT_A1R5G5B5 = 25,
+ D3DFMT_A4R4G4B4 = 26,
+ D3DFMT_R3G3B2 = 27,
+ D3DFMT_A8 = 28,
+ D3DFMT_A8R3G3B2 = 29,
+ D3DFMT_X4R4G4B4 = 30,
+ D3DFMT_A2B10G10R10 = 31,
+ D3DFMT_A8B8G8R8 = 32,
+ D3DFMT_X8B8G8R8 = 33,
+ D3DFMT_G16R16 = 34,
+ D3DFMT_A2R10G10B10 = 35,
+ D3DFMT_A16B16G16R16 = 36,
+ D3DFMT_A8P8 = 40,
+ D3DFMT_P8 = 41,
+ D3DFMT_L8 = 50,
+ D3DFMT_A8L8 = 51,
+ D3DFMT_A4L4 = 52,
+ D3DFMT_V8U8 = 60,
+ D3DFMT_L6V5U5 = 61,
+ D3DFMT_X8L8V8U8 = 62,
+ D3DFMT_Q8W8V8U8 = 63,
+ D3DFMT_V16U16 = 64,
+ D3DFMT_A2W10V10U10 = 67,
+ D3DFMT_UYVY = MAKEFOURCC!(b'U', b'Y', b'V', b'Y') as u32,
+ D3DFMT_R8G8_B8G8 = MAKEFOURCC!(b'R', b'G', b'B', b'G') as u32,
+ D3DFMT_YUY2 = MAKEFOURCC!(b'Y', b'U', b'Y', b'2') as u32,
+ D3DFMT_G8R8_G8B8 = MAKEFOURCC!(b'G', b'R', b'G', b'B') as u32,
+ D3DFMT_DXT1 = MAKEFOURCC!(b'D', b'X', b'T', b'1') as u32,
+ D3DFMT_DXT2 = MAKEFOURCC!(b'D', b'X', b'T', b'2') as u32,
+ D3DFMT_DXT3 = MAKEFOURCC!(b'D', b'X', b'T', b'3') as u32,
+ D3DFMT_DXT4 = MAKEFOURCC!(b'D', b'X', b'T', b'4') as u32,
+ D3DFMT_DXT5 = MAKEFOURCC!(b'D', b'X', b'T', b'5') as u32,
+ D3DFMT_D16_LOCKABLE = 70,
+ D3DFMT_D32 = 71,
+ D3DFMT_D15S1 = 73,
+ D3DFMT_D24S8 = 75,
+ D3DFMT_D24X8 = 77,
+ D3DFMT_D24X4S4 = 79,
+ D3DFMT_D16 = 80,
+ D3DFMT_D32F_LOCKABLE = 82,
+ D3DFMT_D24FS8 = 83,
+ D3DFMT_D32_LOCKABLE = 84,
+ D3DFMT_S8_LOCKABLE = 85,
+ D3DFMT_L16 = 81,
+ D3DFMT_VERTEXDATA = 100,
+ D3DFMT_INDEX16 = 101,
+ D3DFMT_INDEX32 = 102,
+ D3DFMT_Q16W16V16U16 = 110,
+ D3DFMT_MULTI2_ARGB8 = MAKEFOURCC!(b'M', b'E', b'T', b'1') as u32,
+ D3DFMT_R16F = 111,
+ D3DFMT_G16R16F = 112,
+ D3DFMT_A16B16G16R16F = 113,
+ D3DFMT_R32F = 114,
+ D3DFMT_G32R32F = 115,
+ D3DFMT_A32B32G32R32F = 116,
+ D3DFMT_CxV8U8 = 117,
+ D3DFMT_A1 = 118,
+ D3DFMT_A2B10G10R10_XR_BIAS = 119,
+ D3DFMT_BINARYBUFFER = 199,
+}}
+STRUCT!{struct D3DDISPLAYMODE {
+ Width: ::UINT,
+ Height: ::UINT,
+ RefreshRate: ::UINT,
+ Format: D3DFORMAT,
+}}
+STRUCT!{struct D3DDEVICE_CREATION_PARAMETERS {
+ AdapterOrdinal: ::UINT,
+ DeviceType: D3DDEVTYPE,
+ hFocusWindow: ::HWND,
+ BehaviorFlags: ::DWORD,
+}}
+ENUM!{enum D3DSWAPEFFECT {
+ D3DSWAPEFFECT_DISCARD = 1,
+ D3DSWAPEFFECT_FLIP = 2,
+ D3DSWAPEFFECT_COPY = 3,
+ D3DSWAPEFFECT_OVERLAY = 4,
+ D3DSWAPEFFECT_FLIPEX = 5,
+}}
+ENUM!{enum D3DPOOL {
+ D3DPOOL_DEFAULT = 0,
+ D3DPOOL_MANAGED = 1,
+ D3DPOOL_SYSTEMMEM = 2,
+ D3DPOOL_SCRATCH = 3,
+}}
+pub const D3DPRESENT_RATE_DEFAULT: ::DWORD = 0x00000000;
+STRUCT!{struct D3DPRESENT_PARAMETERS {
+ BackBufferWidth: ::UINT,
+ BackBufferHeight: ::UINT,
+ BackBufferFormat: D3DFORMAT,
+ BackBufferCount: ::UINT,
+ MultiSampleType: D3DMULTISAMPLE_TYPE,
+ MultiSampleQuality: ::DWORD,
+ SwapEffect: D3DSWAPEFFECT,
+ hDeviceWindow: ::HWND,
+ Windowed: ::BOOL,
+ EnableAutoDepthStencil: ::BOOL,
+ AutoDepthStencilFormat: D3DFORMAT,
+ Flags: ::DWORD,
+ FullScreen_RefreshRateInHz: ::UINT,
+ PresentationInterval: ::UINT,
+}}
+pub const D3DPRESENTFLAG_LOCKABLE_BACKBUFFER: ::DWORD = 0x00000001;
+pub const D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL: ::DWORD = 0x00000002;
+pub const D3DPRESENTFLAG_DEVICECLIP: ::DWORD = 0x00000004;
+pub const D3DPRESENTFLAG_VIDEO: ::DWORD = 0x00000010;
+pub const D3DPRESENTFLAG_NOAUTOROTATE: ::DWORD = 0x00000020;
+pub const D3DPRESENTFLAG_UNPRUNEDMODE: ::DWORD = 0x00000040;
+pub const D3DPRESENTFLAG_OVERLAY_LIMITEDRGB: ::DWORD = 0x00000080;
+pub const D3DPRESENTFLAG_OVERLAY_YCbCr_BT709: ::DWORD = 0x00000100;
+pub const D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC: ::DWORD = 0x00000200;
+pub const D3DPRESENTFLAG_RESTRICTED_CONTENT: ::DWORD = 0x00000400;
+pub const D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER: ::DWORD = 0x00000800;
+STRUCT!{nodebug struct D3DGAMMARAMP {
+ red: [::WORD; 256],
+ green: [::WORD; 256],
+ blue: [::WORD; 256],
+}}
+ENUM!{enum D3DBACKBUFFER_TYPE {
+ D3DBACKBUFFER_TYPE_MONO = 0,
+ D3DBACKBUFFER_TYPE_LEFT = 1,
+ D3DBACKBUFFER_TYPE_RIGHT = 2,
+}}
+ENUM!{enum D3DRESOURCETYPE {
+ D3DRTYPE_SURFACE = 1,
+ D3DRTYPE_VOLUME = 2,
+ D3DRTYPE_TEXTURE = 3,
+ D3DRTYPE_VOLUMETEXTURE = 4,
+ D3DRTYPE_CUBETEXTURE = 5,
+ D3DRTYPE_VERTEXBUFFER = 6,
+ D3DRTYPE_INDEXBUFFER = 7,
+}}
+pub const D3DUSAGE_RENDERTARGET: ::DWORD = 0x00000001;
+pub const D3DUSAGE_DEPTHSTENCIL: ::DWORD = 0x00000002;
+pub const D3DUSAGE_DYNAMIC: ::DWORD = 0x00000200;
+pub const D3DUSAGE_NONSECURE: ::DWORD = 0x00800000;
+pub const D3DUSAGE_AUTOGENMIPMAP: ::DWORD = 0x00000400;
+pub const D3DUSAGE_DMAP: ::DWORD = 0x00004000;
+pub const D3DUSAGE_QUERY_LEGACYBUMPMAP: ::DWORD = 0x00008000;
+pub const D3DUSAGE_QUERY_SRGBREAD: ::DWORD = 0x00010000;
+pub const D3DUSAGE_QUERY_FILTER: ::DWORD = 0x00020000;
+pub const D3DUSAGE_QUERY_SRGBWRITE: ::DWORD = 0x00040000;
+pub const D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING: ::DWORD = 0x00080000;
+pub const D3DUSAGE_QUERY_VERTEXTEXTURE: ::DWORD = 0x00100000;
+pub const D3DUSAGE_QUERY_WRAPANDMIP: ::DWORD = 0x00200000;
+pub const D3DUSAGE_WRITEONLY: ::DWORD = 0x00000008;
+pub const D3DUSAGE_SOFTWAREPROCESSING: ::DWORD = 0x00000010;
+pub const D3DUSAGE_DONOTCLIP: ::DWORD = 0x00000020;
+pub const D3DUSAGE_POINTS: ::DWORD = 0x00000040;
+pub const D3DUSAGE_RTPATCHES: ::DWORD = 0x00000080;
+pub const D3DUSAGE_NPATCHES: ::DWORD = 0x00000100;
+pub const D3DUSAGE_TEXTAPI: ::DWORD = 0x10000000;
+pub const D3DUSAGE_RESTRICTED_CONTENT: ::DWORD = 0x00000800;
+pub const D3DUSAGE_RESTRICT_SHARED_RESOURCE: ::DWORD = 0x00002000;
+pub const D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER: ::DWORD = 0x00001000;
+ENUM!{enum D3DCUBEMAP_FACES {
+ D3DCUBEMAP_FACE_POSITIVE_X = 0,
+ D3DCUBEMAP_FACE_NEGATIVE_X = 1,
+ D3DCUBEMAP_FACE_POSITIVE_Y = 2,
+ D3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+ D3DCUBEMAP_FACE_POSITIVE_Z = 4,
+ D3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+}}
+pub const D3DLOCK_READONLY: ::DWORD = 0x00000010;
+pub const D3DLOCK_DISCARD: ::DWORD = 0x00002000;
+pub const D3DLOCK_NOOVERWRITE: ::DWORD = 0x00001000;
+pub const D3DLOCK_NOSYSLOCK: ::DWORD = 0x00000800;
+pub const D3DLOCK_DONOTWAIT: ::DWORD = 0x00004000;
+pub const D3DLOCK_NO_DIRTY_UPDATE: ::DWORD = 0x00008000;
+STRUCT!{struct D3DVERTEXBUFFER_DESC {
+ Format: D3DFORMAT,
+ Type: D3DRESOURCETYPE,
+ Usage: ::DWORD,
+ Pool: D3DPOOL,
+ Size: ::UINT,
+ FVF: ::DWORD,
+}}
+STRUCT!{struct D3DINDEXBUFFER_DESC {
+ Format: D3DFORMAT,
+ Type: D3DRESOURCETYPE,
+ Usage: ::DWORD,
+ Pool: D3DPOOL,
+ Size: ::UINT,
+}}
+STRUCT!{struct D3DSURFACE_DESC {
+ Format: D3DFORMAT,
+ Type: D3DRESOURCETYPE,
+ Usage: ::DWORD,
+ Pool: D3DPOOL,
+ MultiSampleType: D3DMULTISAMPLE_TYPE,
+ MultiSampleQuality: ::DWORD,
+ Width: ::UINT,
+ Height: ::UINT,
+}}
+STRUCT!{struct D3DVOLUME_DESC {
+ Format: D3DFORMAT,
+ Type: D3DRESOURCETYPE,
+ Usage: ::DWORD,
+ Pool: D3DPOOL,
+ Width: ::UINT,
+ Height: ::UINT,
+ Depth: ::UINT,
+}}
+STRUCT!{struct D3DLOCKED_RECT {
+ Pitch: ::INT,
+ pBits: *mut ::c_void,
+}}
+STRUCT!{struct D3DBOX {
+ Left: ::UINT,
+ Top: ::UINT,
+ Right: ::UINT,
+ Bottom: ::UINT,
+ Front: ::UINT,
+ Back: ::UINT,
+}}
+STRUCT!{struct D3DLOCKED_BOX {
+ RowPitch: ::INT,
+ SlicePitch: ::INT,
+ pBits: *mut ::c_void,
+}}
+STRUCT!{struct D3DRANGE {
+ Offset: ::UINT,
+ Size: ::UINT,
+}}
+STRUCT!{struct D3DRECTPATCH_INFO {
+ StartVertexOffsetWidth: ::UINT,
+ StartVertexOffsetHeight: ::UINT,
+ Width: ::UINT,
+ Height: ::UINT,
+ Stride: ::UINT,
+ Basis: D3DBASISTYPE,
+ Degree: D3DDEGREETYPE,
+}}
+STRUCT!{struct D3DTRIPATCH_INFO {
+ StartVertexOffset: ::UINT,
+ NumVertices: ::UINT,
+ Basis: D3DBASISTYPE,
+ Degree: D3DDEGREETYPE,
+}}
+pub const MAX_DEVICE_IDENTIFIER_STRING: usize = 512;
+STRUCT!{nodebug struct D3DADAPTER_IDENTIFIER9 {
+ Driver: [::c_char; MAX_DEVICE_IDENTIFIER_STRING],
+ Description: [::c_char; MAX_DEVICE_IDENTIFIER_STRING],
+ DeviceName: [::c_char; 32],
+ DriverVersion: ::LARGE_INTEGER,
+ VendorId: ::DWORD,
+ DeviceId: ::DWORD,
+ SubSysId: ::DWORD,
+ Revision: ::DWORD,
+ DeviceIdentifier: ::GUID,
+ WHQLLevel: ::DWORD,
+}}
+STRUCT!{struct D3DRASTER_STATUS {
+ InVBlank: ::BOOL,
+ ScanLine: ::UINT,
+}}
+ENUM!{enum D3DDEBUGMONITORTOKENS {
+ D3DDMT_ENABLE = 0,
+ D3DDMT_DISABLE = 1,
+}}
+ENUM!{enum D3DQUERYTYPE {
+ D3DQUERYTYPE_VCACHE = 4,
+ D3DQUERYTYPE_RESOURCEMANAGER = 5,
+ D3DQUERYTYPE_VERTEXSTATS = 6,
+ D3DQUERYTYPE_EVENT = 8,
+ D3DQUERYTYPE_OCCLUSION = 9,
+ D3DQUERYTYPE_TIMESTAMP = 10,
+ D3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
+ D3DQUERYTYPE_TIMESTAMPFREQ = 12,
+ D3DQUERYTYPE_PIPELINETIMINGS = 13,
+ D3DQUERYTYPE_INTERFACETIMINGS = 14,
+ D3DQUERYTYPE_VERTEXTIMINGS = 15,
+ D3DQUERYTYPE_PIXELTIMINGS = 16,
+ D3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
+ D3DQUERYTYPE_CACHEUTILIZATION = 18,
+ D3DQUERYTYPE_MEMORYPRESSURE = 19,
+}}
+pub const D3DISSUE_END: ::DWORD = 1 << 0;
+pub const D3DISSUE_BEGIN: ::DWORD = 1 << 1;
+pub const D3DGETDATA_FLUSH: ::DWORD = 1 << 0;
+STRUCT!{struct D3DRESOURCESTATS {
+ bThrashing: ::BOOL,
+ ApproxBytesDownloaded: ::DWORD,
+ NumEvicts: ::DWORD,
+ NumVidCreates: ::DWORD,
+ LastPri: ::DWORD,
+ NumUsed: ::DWORD,
+ NumUsedInVidMem: ::DWORD,
+ WorkingSet: ::DWORD,
+ WorkingSetBytes: ::DWORD,
+ TotalManaged: ::DWORD,
+ TotalBytes: ::DWORD,
+}}
+pub const D3DRTYPECOUNT: usize = 8;
+STRUCT!{struct D3DDEVINFO_RESOURCEMANAGER {
+ stats: [D3DRESOURCESTATS; 8 /*D3DRTYPECOUNT, rust bug?*/],
+}}
+pub type LPD3DDEVINFO_RESOURCEMANAGER = *mut D3DDEVINFO_RESOURCEMANAGER;
+STRUCT!{struct D3DDEVINFO_D3DVERTEXSTATS {
+ NumRenderedTriangles: ::DWORD,
+ NumExtraClippingTriangles: ::DWORD,
+}}
+pub type LPD3DDEVINFO_D3DVERTEXSTATS = *mut D3DDEVINFO_D3DVERTEXSTATS;
+STRUCT!{struct D3DDEVINFO_VCACHE {
+ Pattern: ::DWORD,
+ OptMethod: ::DWORD,
+ CacheSize: ::DWORD,
+ MagicNumber: ::DWORD,
+}}
+pub type LPD3DDEVINFO_VCACHE = *mut D3DDEVINFO_VCACHE;
+STRUCT!{struct D3DDEVINFO_D3D9PIPELINETIMINGS {
+ VertexProcessingTimePercent: ::FLOAT,
+ PixelProcessingTimePercent: ::FLOAT,
+ OtherGPUProcessingTimePercent: ::FLOAT,
+ GPUIdleTimePercent: ::FLOAT,
+}}
+STRUCT!{struct D3DDEVINFO_D3D9INTERFACETIMINGS {
+ WaitingForGPUToUseApplicationResourceTimePercent: ::FLOAT,
+ WaitingForGPUToAcceptMoreCommandsTimePercent: ::FLOAT,
+ WaitingForGPUToStayWithinLatencyTimePercent: ::FLOAT,
+ WaitingForGPUExclusiveResourceTimePercent: ::FLOAT,
+ WaitingForGPUOtherTimePercent: ::FLOAT,
+}}
+STRUCT!{struct D3DDEVINFO_D3D9STAGETIMINGS {
+ MemoryProcessingPercent: ::FLOAT,
+ ComputationProcessingPercent: ::FLOAT,
+}}
+STRUCT!{struct D3DDEVINFO_D3D9BANDWIDTHTIMINGS {
+ MaxBandwidthUtilized: ::FLOAT,
+ FrontEndUploadMemoryUtilizedPercent: ::FLOAT,
+ VertexRateUtilizedPercent: ::FLOAT,
+ TriangleSetupRateUtilizedPercent: ::FLOAT,
+ FillRateUtilizedPercent: ::FLOAT,
+}}
+STRUCT!{struct D3DDEVINFO_D3D9CACHEUTILIZATION {
+ TextureCacheHitRate: ::FLOAT,
+ PostTransformVertexCacheHitRate: ::FLOAT,
+}}
+STRUCT!{struct D3DMEMORYPRESSURE {
+ BytesEvictedFromProcess: ::UINT64,
+ SizeOfInefficientAllocation: ::UINT64,
+ LevelOfEfficiency: ::DWORD,
+}}
+ENUM!{enum D3DCOMPOSERECTSOP {
+ D3DCOMPOSERECTS_COPY = 1,
+ D3DCOMPOSERECTS_OR = 2,
+ D3DCOMPOSERECTS_AND = 3,
+ D3DCOMPOSERECTS_NEG = 4,
+}}
+STRUCT!{struct D3DCOMPOSERECTDESC {
+ X: ::USHORT,
+ Y: ::USHORT,
+ Width: ::USHORT,
+ Height: ::USHORT,
+}}
+STRUCT!{struct D3DCOMPOSERECTDESTINATION {
+ SrcRectIndex: ::USHORT,
+ Reserved: ::USHORT,
+ X: ::SHORT,
+ Y: ::SHORT,
+}}
+pub const D3DCOMPOSERECTS_MAXNUMRECTS: ::DWORD = 0xFFFF;
+pub const D3DCONVOLUTIONMONO_MAXWIDTH: ::DWORD = 7;
+pub const D3DCONVOLUTIONMONO_MAXHEIGHT: ::DWORD = D3DCONVOLUTIONMONO_MAXWIDTH;
+pub const D3DFMT_A1_SURFACE_MAXWIDTH: ::DWORD = 8192;
+pub const D3DFMT_A1_SURFACE_MAXHEIGHT: ::DWORD = 2048;
+STRUCT!{struct D3DPRESENTSTATS {
+ PresentCount: ::UINT,
+ PresentRefreshCount: ::UINT,
+ SyncRefreshCount: ::UINT,
+ SyncQPCTime: ::LARGE_INTEGER,
+ SyncGPUTime: ::LARGE_INTEGER,
+}}
+ENUM!{enum D3DSCANLINEORDERING {
+ D3DSCANLINEORDERING_UNKNOWN = 0,
+ D3DSCANLINEORDERING_PROGRESSIVE = 1,
+ D3DSCANLINEORDERING_INTERLACED = 2,
+}}
+STRUCT!{struct D3DDISPLAYMODEEX {
+ Size: ::UINT,
+ Width: ::UINT,
+ Height: ::UINT,
+ RefreshRate: ::UINT,
+ Format: D3DFORMAT,
+ ScanLineOrdering: D3DSCANLINEORDERING,
+}}
+STRUCT!{struct D3DDISPLAYMODEFILTER {
+ Size: ::UINT,
+ Format: D3DFORMAT,
+ ScanLineOrdering: D3DSCANLINEORDERING,
+}}
+ENUM!{enum D3DDISPLAYROTATION {
+ D3DDISPLAYROTATION_IDENTITY = 1,
+ D3DDISPLAYROTATION_90 = 2,
+ D3DDISPLAYROTATION_180 = 3,
+ D3DDISPLAYROTATION_270 = 4,
+}}
+pub const D3D9_RESOURCE_PRIORITY_MINIMUM: ::DWORD = 0x28000000;
+pub const D3D9_RESOURCE_PRIORITY_LOW: ::DWORD = 0x50000000;
+pub const D3D9_RESOURCE_PRIORITY_NORMAL: ::DWORD = 0x78000000;
+pub const D3D9_RESOURCE_PRIORITY_HIGH: ::DWORD = 0xa0000000;
+pub const D3D9_RESOURCE_PRIORITY_MAXIMUM: ::DWORD = 0xc8000000;
+pub const D3D_OMAC_SIZE: usize = 16;
+STRUCT!{struct D3D_OMAC {
+ Omac: [::BYTE; D3D_OMAC_SIZE],
+}}
+ENUM!{enum D3DAUTHENTICATEDCHANNELTYPE {
+ D3DAUTHENTICATEDCHANNEL_D3D9 = 1,
+ D3DAUTHENTICATEDCHANNEL_DRIVER_SOFTWARE = 2,
+ D3DAUTHENTICATEDCHANNEL_DRIVER_HARDWARE = 3,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERY_INPUT {
+ QueryType: ::GUID,
+ hChannel: ::HANDLE,
+ SequenceNumber: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT {
+ omac: D3D_OMAC,
+ QueryType: ::GUID,
+ hChannel: ::HANDLE,
+ SequenceNumber: ::UINT,
+ ReturnCode: ::HRESULT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS {
+ Value: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYPROTECTION_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ ProtectionFlags: D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYCHANNELTYPE_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ ChannelType: D3DAUTHENTICATEDCHANNELTYPE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYDEVICEHANDLE_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ DeviceHandle: ::HANDLE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYCRYPTOSESSION_INPUT {
+ Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT,
+ DXVA2DecodeHandle: ::HANDLE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYCRYPTOSESSION_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ DXVA2DecodeHandle: ::HANDLE,
+ CryptoSessionHandle: ::HANDLE,
+ DeviceHandle: ::HANDLE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESSCOUNT_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ NumRestrictedSharedResourceProcesses: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESS_INPUT {
+ Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT,
+ ProcessIndex: ::UINT,
+}}
+ENUM!{enum D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE {
+ PROCESSIDTYPE_UNKNOWN = 0,
+ PROCESSIDTYPE_DWM = 1,
+ PROCESSIDTYPE_HANDLE = 2,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYRESTRICTEDSHAREDRESOURCEPROCESS_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ ProcessIndex: ::UINT,
+ ProcessIdentifer: D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE,
+ ProcessHandle: ::HANDLE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYUNRESTRICTEDPROTECTEDSHAREDRESOURCECOUNT_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ NumUnrestrictedProtectedSharedResources: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTIDCOUNT_INPUT {
+ Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT,
+ DeviceHandle: ::HANDLE,
+ CryptoSessionHandle: ::HANDLE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTIDCOUNT_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ DeviceHandle: ::HANDLE,
+ CryptoSessionHandle: ::HANDLE,
+ NumOutputIDs: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTID_INPUT {
+ Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT,
+ DeviceHandle: ::HANDLE,
+ CryptoSessionHandle: ::HANDLE,
+ OutputIDIndex: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYOUTPUTID_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ DeviceHandle: ::HANDLE,
+ CryptoSessionHandle: ::HANDLE,
+ OutputIDIndex: ::UINT,
+ OutputID: ::UINT64,
+}}
+FLAGS!{enum D3DBUSTYPE {
+ D3DBUSTYPE_OTHER = 0x00000000,
+ D3DBUSTYPE_PCI = 0x00000001,
+ D3DBUSTYPE_PCIX = 0x00000002,
+ D3DBUSTYPE_PCIEXPRESS = 0x00000003,
+ D3DBUSTYPE_AGP = 0x00000004,
+ D3DBUSIMPL_MODIFIER_INSIDE_OF_CHIPSET = 0x00010000,
+ MD3DBUSIMPL_ODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP = 0x00020000,
+ D3DBUSIMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET = 0x00030000,
+ D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR = 0x00040000,
+ D3DBUSIMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE = 0x00050000,
+ D3DBUSIMPL_MODIFIER_NON_STANDARD = 0x80000000,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYINFOBUSTYPE_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ BusType: D3DBUSTYPE,
+ bAccessibleInContiguousBlocks: ::BOOL,
+ bAccessibleInNonContiguousBlocks: ::BOOL,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUIDCOUNT_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ NumEncryptionGuids: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUID_INPUT {
+ Input: D3DAUTHENTICATEDCHANNEL_QUERY_INPUT,
+ EncryptionGuidIndex: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYEVICTIONENCRYPTIONGUID_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ EncryptionGuidIndex: ::UINT,
+ EncryptionGuid: ::GUID,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_QUERYUNCOMPRESSEDENCRYPTIONLEVEL_OUTPUT {
+ Output: D3DAUTHENTICATEDCHANNEL_QUERY_OUTPUT,
+ EncryptionGuid: ::GUID,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT {
+ omac: D3D_OMAC,
+ ConfigureType: ::GUID,
+ hChannel: ::HANDLE,
+ SequenceNumber: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURE_OUTPUT {
+ omac: D3D_OMAC,
+ ConfigureType: ::GUID,
+ hChannel: ::HANDLE,
+ SequenceNumber: ::UINT,
+ ReturnCode: ::HRESULT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGUREINITIALIZE {
+ Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT,
+ StartSequenceQuery: ::UINT,
+ StartSequenceConfigure: ::UINT,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGUREPROTECTION {
+ Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT,
+ Protections: D3DAUTHENTICATEDCHANNEL_PROTECTION_FLAGS,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURECRYPTOSESSION {
+ Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT,
+ DXVA2DecodeHandle: ::HANDLE,
+ CryptoSessionHandle: ::HANDLE,
+ DeviceHandle: ::HANDLE,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGURESHAREDRESOURCE {
+ Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT,
+ ProcessIdentiferType: D3DAUTHENTICATEDCHANNEL_PROCESSIDENTIFIERTYPE,
+ ProcessHandle: ::HANDLE,
+ AllowAccess: ::BOOL,
+}}
+STRUCT!{struct D3DAUTHENTICATEDCHANNEL_CONFIGUREUNCOMPRESSEDENCRYPTION {
+ Parameters: D3DAUTHENTICATEDCHANNEL_CONFIGURE_INPUT,
+ EncryptionGuid: ::GUID,
+}}
+STRUCT!{struct D3DENCRYPTED_BLOCK_INFO {
+ NumEncryptedBytesAtBeginning: ::UINT,
+ NumBytesInSkipPattern: ::UINT,
+ NumBytesInEncryptPattern: ::UINT,
+}}
+STRUCT!{struct D3DAES_CTR_IV {
+ IV: ::UINT64,
+ Count: ::UINT64,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/d3dcommon.rs b/third_party/rust/winapi-0.2.8/src/d3dcommon.rs
new file mode 100644
index 0000000000..51a1b4e8ed
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3dcommon.rs
@@ -0,0 +1,753 @@
+// Copyright © 2015; Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of d3dcommon.h
+ENUM!{enum D3D_DRIVER_TYPE {
+ D3D_DRIVER_TYPE_UNKNOWN,
+ D3D_DRIVER_TYPE_HARDWARE,
+ D3D_DRIVER_TYPE_REFERENCE,
+ D3D_DRIVER_TYPE_NULL,
+ D3D_DRIVER_TYPE_SOFTWARE,
+ D3D_DRIVER_TYPE_WARP,
+}}
+ENUM!{enum D3D_FEATURE_LEVEL {
+ D3D_FEATURE_LEVEL_9_1 = 0x9100,
+ D3D_FEATURE_LEVEL_9_2 = 0x9200,
+ D3D_FEATURE_LEVEL_9_3 = 0x9300,
+ D3D_FEATURE_LEVEL_10_0 = 0xa000,
+ D3D_FEATURE_LEVEL_10_1 = 0xa100,
+ D3D_FEATURE_LEVEL_11_0 = 0xb000,
+ D3D_FEATURE_LEVEL_11_1 = 0xb100,
+ D3D_FEATURE_LEVEL_12_0 = 0xc000,
+ D3D_FEATURE_LEVEL_12_1 = 0xc100,
+}}
+ENUM!{enum D3D_PRIMITIVE_TOPOLOGY {
+ D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
+ D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
+ D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
+ D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
+ D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
+ D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
+ D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
+ D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
+ D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
+ D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
+ D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
+ D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
+ D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
+ D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
+ D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
+ D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
+ D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
+ D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
+ D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
+ D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
+ D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
+ D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
+ D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
+ D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
+ D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
+ D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
+ D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
+ D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
+ D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
+ D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
+ D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
+ D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
+ D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
+ D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
+}}
+pub const D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
+pub const D3D10_PRIMITIVE_TOPOLOGY_POINTLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
+pub const D3D10_PRIMITIVE_TOPOLOGY_LINELIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST;
+pub const D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;
+pub const D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
+pub const D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;
+pub const D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
+pub const D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ;
+pub const D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ;
+pub const D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ;
+pub const D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
+pub const D3D11_PRIMITIVE_TOPOLOGY_POINTLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_LINELIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;
+pub const D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;
+pub const D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
+pub const D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ;
+pub const D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ;
+pub const D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ;
+pub const D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST;
+pub const D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST: ::D3D_PRIMITIVE_TOPOLOGY =
+ D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST;
+ENUM!{enum D3D_PRIMITIVE {
+ D3D_PRIMITIVE_UNDEFINED = 0,
+ D3D_PRIMITIVE_POINT = 1,
+ D3D_PRIMITIVE_LINE = 2,
+ D3D_PRIMITIVE_TRIANGLE = 3,
+ D3D_PRIMITIVE_LINE_ADJ = 6,
+ D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
+ D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
+ D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
+ D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
+ D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
+ D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
+ D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
+ D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
+ D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
+ D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
+ D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
+ D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
+ D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
+ D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
+ D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
+ D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
+ D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
+ 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,
+}}
+pub const D3D10_PRIMITIVE_UNDEFINED: ::D3D_PRIMITIVE = D3D_PRIMITIVE_UNDEFINED;
+pub const D3D10_PRIMITIVE_POINT: ::D3D_PRIMITIVE = D3D_PRIMITIVE_POINT;
+pub const D3D10_PRIMITIVE_LINE: ::D3D_PRIMITIVE = D3D_PRIMITIVE_LINE;
+pub const D3D10_PRIMITIVE_TRIANGLE: ::D3D_PRIMITIVE = D3D_PRIMITIVE_TRIANGLE;
+pub const D3D10_PRIMITIVE_LINE_ADJ: ::D3D_PRIMITIVE = D3D_PRIMITIVE_LINE_ADJ;
+pub const D3D10_PRIMITIVE_TRIANGLE_ADJ: ::D3D_PRIMITIVE = D3D_PRIMITIVE_TRIANGLE_ADJ;
+pub const D3D11_PRIMITIVE_UNDEFINED: ::D3D_PRIMITIVE = D3D_PRIMITIVE_UNDEFINED;
+pub const D3D11_PRIMITIVE_POINT: ::D3D_PRIMITIVE = D3D_PRIMITIVE_POINT;
+pub const D3D11_PRIMITIVE_LINE: ::D3D_PRIMITIVE = D3D_PRIMITIVE_LINE;
+pub const D3D11_PRIMITIVE_TRIANGLE: ::D3D_PRIMITIVE = D3D_PRIMITIVE_TRIANGLE;
+pub const D3D11_PRIMITIVE_LINE_ADJ: ::D3D_PRIMITIVE = D3D_PRIMITIVE_LINE_ADJ;
+pub const D3D11_PRIMITIVE_TRIANGLE_ADJ: ::D3D_PRIMITIVE = D3D_PRIMITIVE_TRIANGLE_ADJ;
+pub const D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_1_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_2_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_3_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_4_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_5_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_6_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_7_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_8_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_9_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_10_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_11_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_12_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_13_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_14_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_15_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_16_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_17_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_18_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_19_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_20_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_21_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_22_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_23_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_24_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_25_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_26_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_27_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_28_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_29_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_30_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_31_CONTROL_POINT_PATCH;
+pub const D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH: ::D3D_PRIMITIVE =
+ D3D_PRIMITIVE_32_CONTROL_POINT_PATCH;
+ENUM!{enum D3D_SRV_DIMENSION {
+ D3D_SRV_DIMENSION_UNKNOWN = 0,
+ D3D_SRV_DIMENSION_BUFFER = 1,
+ D3D_SRV_DIMENSION_TEXTURE1D = 2,
+ D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
+ D3D_SRV_DIMENSION_TEXTURE2D = 4,
+ D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
+ D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
+ D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
+ D3D_SRV_DIMENSION_TEXTURE3D = 8,
+ D3D_SRV_DIMENSION_TEXTURECUBE = 9,
+ D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
+ D3D_SRV_DIMENSION_BUFFEREX = 11,
+}}
+pub const D3D10_SRV_DIMENSION_UNKNOWN: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_UNKNOWN;
+pub const D3D10_SRV_DIMENSION_BUFFER: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_BUFFER;
+pub const D3D10_SRV_DIMENSION_TEXTURE1D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE1D;
+pub const D3D10_SRV_DIMENSION_TEXTURE1DARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE1DARRAY;
+pub const D3D10_SRV_DIMENSION_TEXTURE2D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2D;
+pub const D3D10_SRV_DIMENSION_TEXTURE2DARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DARRAY;
+pub const D3D10_SRV_DIMENSION_TEXTURE2DMS: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DMS;
+pub const D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DMSARRAY;
+pub const D3D10_SRV_DIMENSION_TEXTURE3D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE3D;
+pub const D3D10_SRV_DIMENSION_TEXTURECUBE: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURECUBE;
+pub const D3D10_1_SRV_DIMENSION_UNKNOWN: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_UNKNOWN;
+pub const D3D10_1_SRV_DIMENSION_BUFFER: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_BUFFER;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE1D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE1D;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE1DARRAY;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE2D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2D;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DARRAY;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE2DMS: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DMS;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DMSARRAY;
+pub const D3D10_1_SRV_DIMENSION_TEXTURE3D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE3D;
+pub const D3D10_1_SRV_DIMENSION_TEXTURECUBE: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURECUBE;
+pub const D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURECUBEARRAY;
+pub const D3D11_SRV_DIMENSION_UNKNOWN: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_UNKNOWN;
+pub const D3D11_SRV_DIMENSION_BUFFER: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_BUFFER;
+pub const D3D11_SRV_DIMENSION_TEXTURE1D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE1D;
+pub const D3D11_SRV_DIMENSION_TEXTURE1DARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE1DARRAY;
+pub const D3D11_SRV_DIMENSION_TEXTURE2D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2D;
+pub const D3D11_SRV_DIMENSION_TEXTURE2DARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DARRAY;
+pub const D3D11_SRV_DIMENSION_TEXTURE2DMS: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DMS;
+pub const D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE2DMSARRAY;
+pub const D3D11_SRV_DIMENSION_TEXTURE3D: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURE3D;
+pub const D3D11_SRV_DIMENSION_TEXTURECUBE: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURECUBE;
+pub const D3D11_SRV_DIMENSION_TEXTURECUBEARRAY: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_TEXTURECUBEARRAY;
+pub const D3D11_SRV_DIMENSION_BUFFEREX: ::D3D_SRV_DIMENSION =
+ D3D_SRV_DIMENSION_BUFFEREX;
+STRUCT!{struct D3D_SHADER_MACRO {
+ Name: ::LPCSTR,
+ Definition: ::LPCSTR,
+}}
+pub type LPD3D_SHADER_MACRO = *mut D3D_SHADER_MACRO;
+RIDL!(
+interface ID3D10Blob(ID3D10BlobVtbl): IUnknown(IUnknownVtbl) {
+ fn GetBufferPointer(&mut self) -> ::LPVOID,
+ fn GetBufferSize(&mut self) -> ::SIZE_T
+}
+);
+pub type LPD3D10BLOB = *mut ID3D10Blob;
+pub type ID3DBlob = ID3D10Blob;
+pub type LPD3DBLOB = *mut ID3DBlob;
+ENUM!{enum D3D_INCLUDE_TYPE {
+ D3D_INCLUDE_LOCAL = 0,
+ D3D_INCLUDE_SYSTEM,
+}}
+pub const D3D10_INCLUDE_LOCAL: ::D3D_INCLUDE_TYPE = D3D_INCLUDE_LOCAL;
+pub const D3D10_INCLUDE_SYSTEM: ::D3D_INCLUDE_TYPE = D3D_INCLUDE_SYSTEM;
+RIDL!(
+interface ID3DInclude(ID3DIncludeVtbl) {
+ fn Open(
+ &mut self, IncludeType: D3D_INCLUDE_TYPE, pFileName: ::LPCSTR, pParentData: ::LPCVOID,
+ ppData: *mut ::LPCVOID, pBytes: *mut ::UINT
+ ) -> ::HRESULT,
+ fn Close(&mut self, pData: ::LPCVOID) -> ::HRESULT
+}
+);
+pub type LPD3DINCLUDE = *mut ID3DInclude;
+ENUM!{enum D3D_SHADER_VARIABLE_CLASS {
+ D3D_SVC_SCALAR = 0,
+ D3D_SVC_VECTOR,
+ D3D_SVC_MATRIX_ROWS,
+ D3D_SVC_MATRIX_COLUMNS,
+ D3D_SVC_OBJECT,
+ D3D_SVC_STRUCT,
+ D3D_SVC_INTERFACE_CLASS,
+ D3D_SVC_INTERFACE_POINTER,
+}}
+pub const D3D10_SVC_SCALAR: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_SCALAR;
+pub const D3D10_SVC_VECTOR: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_VECTOR;
+pub const D3D10_SVC_MATRIX_ROWS: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_MATRIX_ROWS;
+pub const D3D10_SVC_MATRIX_COLUMNS: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_MATRIX_COLUMNS;
+pub const D3D10_SVC_OBJECT: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_OBJECT;
+pub const D3D10_SVC_STRUCT: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_STRUCT;
+pub const D3D11_SVC_INTERFACE_CLASS: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_INTERFACE_CLASS;
+pub const D3D11_SVC_INTERFACE_POINTER: ::D3D_SHADER_VARIABLE_CLASS = D3D_SVC_INTERFACE_POINTER;
+FLAGS!{enum D3D_SHADER_VARIABLE_FLAGS {
+ D3D_SVF_USERPACKED = 1,
+ D3D_SVF_USED = 2,
+ D3D_SVF_INTERFACE_POINTER = 4,
+ D3D_SVF_INTERFACE_PARAMETER = 8,
+}}
+pub const D3D10_SVF_USERPACKED: ::D3D_SHADER_VARIABLE_FLAGS = D3D_SVF_USERPACKED;
+pub const D3D10_SVF_USED: ::D3D_SHADER_VARIABLE_FLAGS = D3D_SVF_USED;
+pub const D3D11_SVF_INTERFACE_POINTER: ::D3D_SHADER_VARIABLE_FLAGS = D3D_SVF_INTERFACE_POINTER;
+pub const D3D11_SVF_INTERFACE_PARAMETER: ::D3D_SHADER_VARIABLE_FLAGS = D3D_SVF_INTERFACE_PARAMETER;
+ENUM!{enum D3D_SHADER_VARIABLE_TYPE {
+ D3D_SVT_VOID = 0,
+ D3D_SVT_BOOL = 1,
+ D3D_SVT_INT = 2,
+ D3D_SVT_FLOAT = 3,
+ D3D_SVT_STRING = 4,
+ D3D_SVT_TEXTURE = 5,
+ D3D_SVT_TEXTURE1D = 6,
+ D3D_SVT_TEXTURE2D = 7,
+ D3D_SVT_TEXTURE3D = 8,
+ D3D_SVT_TEXTURECUBE = 9,
+ D3D_SVT_SAMPLER = 10,
+ D3D_SVT_SAMPLER1D = 11,
+ D3D_SVT_SAMPLER2D = 12,
+ D3D_SVT_SAMPLER3D = 13,
+ D3D_SVT_SAMPLERCUBE = 14,
+ D3D_SVT_PIXELSHADER = 15,
+ D3D_SVT_VERTEXSHADER = 16,
+ D3D_SVT_PIXELFRAGMENT = 17,
+ D3D_SVT_VERTEXFRAGMENT = 18,
+ D3D_SVT_UINT = 19,
+ D3D_SVT_UINT8 = 20,
+ D3D_SVT_GEOMETRYSHADER = 21,
+ D3D_SVT_RASTERIZER = 22,
+ D3D_SVT_DEPTHSTENCIL = 23,
+ D3D_SVT_BLEND = 24,
+ D3D_SVT_BUFFER = 25,
+ D3D_SVT_CBUFFER = 26,
+ D3D_SVT_TBUFFER = 27,
+ D3D_SVT_TEXTURE1DARRAY = 28,
+ D3D_SVT_TEXTURE2DARRAY = 29,
+ D3D_SVT_RENDERTARGETVIEW = 30,
+ D3D_SVT_DEPTHSTENCILVIEW = 31,
+ D3D_SVT_TEXTURE2DMS = 32,
+ D3D_SVT_TEXTURE2DMSARRAY = 33,
+ D3D_SVT_TEXTURECUBEARRAY = 34,
+ D3D_SVT_HULLSHADER = 35,
+ D3D_SVT_DOMAINSHADER = 36,
+ D3D_SVT_INTERFACE_POINTER = 37,
+ D3D_SVT_COMPUTESHADER = 38,
+ D3D_SVT_DOUBLE = 39,
+ D3D_SVT_RWTEXTURE1D = 40,
+ D3D_SVT_RWTEXTURE1DARRAY = 41,
+ D3D_SVT_RWTEXTURE2D = 42,
+ D3D_SVT_RWTEXTURE2DARRAY = 43,
+ D3D_SVT_RWTEXTURE3D = 44,
+ D3D_SVT_RWBUFFER = 45,
+ D3D_SVT_BYTEADDRESS_BUFFER = 46,
+ D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
+ D3D_SVT_STRUCTURED_BUFFER = 48,
+ D3D_SVT_RWSTRUCTURED_BUFFER = 49,
+ D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
+ D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
+ D3D_SVT_MIN8FLOAT = 52,
+ D3D_SVT_MIN10FLOAT = 53,
+ D3D_SVT_MIN16FLOAT = 54,
+ D3D_SVT_MIN12INT = 55,
+ D3D_SVT_MIN16INT = 56,
+ D3D_SVT_MIN16UINT = 57,
+}}
+pub const D3D10_SVT_VOID: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_VOID;
+pub const D3D10_SVT_BOOL: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_BOOL;
+pub const D3D10_SVT_INT: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_INT;
+pub const D3D10_SVT_FLOAT: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_FLOAT;
+pub const D3D10_SVT_STRING: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_STRING;
+pub const D3D10_SVT_TEXTURE: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE;
+pub const D3D10_SVT_TEXTURE1D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE1D;
+pub const D3D10_SVT_TEXTURE2D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE2D;
+pub const D3D10_SVT_TEXTURE3D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE3D;
+pub const D3D10_SVT_TEXTURECUBE: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURECUBE;
+pub const D3D10_SVT_SAMPLER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_SAMPLER;
+pub const D3D10_SVT_SAMPLER1D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_SAMPLER1D;
+pub const D3D10_SVT_SAMPLER2D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_SAMPLER2D;
+pub const D3D10_SVT_SAMPLER3D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_SAMPLER3D;
+pub const D3D10_SVT_SAMPLERCUBE: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_SAMPLERCUBE;
+pub const D3D10_SVT_PIXELSHADER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_PIXELSHADER;
+pub const D3D10_SVT_VERTEXSHADER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_VERTEXSHADER;
+pub const D3D10_SVT_PIXELFRAGMENT: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_PIXELFRAGMENT;
+pub const D3D10_SVT_VERTEXFRAGMENT: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_VERTEXFRAGMENT;
+pub const D3D10_SVT_UINT: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_UINT;
+pub const D3D10_SVT_UINT8: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_UINT8;
+pub const D3D10_SVT_GEOMETRYSHADER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_GEOMETRYSHADER;
+pub const D3D10_SVT_RASTERIZER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RASTERIZER;
+pub const D3D10_SVT_DEPTHSTENCIL: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_DEPTHSTENCIL;
+pub const D3D10_SVT_BLEND: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_BLEND;
+pub const D3D10_SVT_BUFFER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_BUFFER;
+pub const D3D10_SVT_CBUFFER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_CBUFFER;
+pub const D3D10_SVT_TBUFFER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TBUFFER;
+pub const D3D10_SVT_TEXTURE1DARRAY: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE1DARRAY;
+pub const D3D10_SVT_TEXTURE2DARRAY: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE2DARRAY;
+pub const D3D10_SVT_RENDERTARGETVIEW: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RENDERTARGETVIEW;
+pub const D3D10_SVT_DEPTHSTENCILVIEW: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_DEPTHSTENCILVIEW;
+pub const D3D10_SVT_TEXTURE2DMS: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE2DMS;
+pub const D3D10_SVT_TEXTURE2DMSARRAY: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURE2DMSARRAY;
+pub const D3D10_SVT_TEXTURECUBEARRAY: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_TEXTURECUBEARRAY;
+pub const D3D11_SVT_HULLSHADER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_HULLSHADER;
+pub const D3D11_SVT_DOMAINSHADER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_DOMAINSHADER;
+pub const D3D11_SVT_INTERFACE_POINTER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_INTERFACE_POINTER;
+pub const D3D11_SVT_COMPUTESHADER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_COMPUTESHADER;
+pub const D3D11_SVT_DOUBLE: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_DOUBLE;
+pub const D3D11_SVT_RWTEXTURE1D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RWTEXTURE1D;
+pub const D3D11_SVT_RWTEXTURE1DARRAY: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RWTEXTURE1DARRAY;
+pub const D3D11_SVT_RWTEXTURE2D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RWTEXTURE2D;
+pub const D3D11_SVT_RWTEXTURE2DARRAY: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RWTEXTURE2DARRAY;
+pub const D3D11_SVT_RWTEXTURE3D: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RWTEXTURE3D;
+pub const D3D11_SVT_RWBUFFER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_RWBUFFER;
+pub const D3D11_SVT_BYTEADDRESS_BUFFER: ::D3D_SHADER_VARIABLE_TYPE = D3D_SVT_BYTEADDRESS_BUFFER;
+pub const D3D11_SVT_RWBYTEADDRESS_BUFFER: ::D3D_SHADER_VARIABLE_TYPE =
+ D3D_SVT_RWBYTEADDRESS_BUFFER;
+pub const D3D11_SVT_STRUCTURED_BUFFER: ::D3D_SHADER_VARIABLE_TYPE =
+ D3D_SVT_STRUCTURED_BUFFER;
+pub const D3D11_SVT_RWSTRUCTURED_BUFFER: ::D3D_SHADER_VARIABLE_TYPE =
+ D3D_SVT_RWSTRUCTURED_BUFFER;
+pub const D3D11_SVT_APPEND_STRUCTURED_BUFFER: ::D3D_SHADER_VARIABLE_TYPE =
+ D3D_SVT_APPEND_STRUCTURED_BUFFER;
+pub const D3D11_SVT_CONSUME_STRUCTURED_BUFFER: ::D3D_SHADER_VARIABLE_TYPE =
+ D3D_SVT_CONSUME_STRUCTURED_BUFFER;
+FLAGS!{enum D3D_SHADER_INPUT_FLAGS {
+ D3D_SIF_USERPACKED = 0x1,
+ D3D_SIF_COMPARISON_SAMPLER = 0x2,
+ D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
+ D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
+ D3D_SIF_TEXTURE_COMPONENTS = 0xc,
+ D3D_SIF_UNUSED = 0x10,
+}}
+pub const D3D10_SIF_USERPACKED: ::D3D_SHADER_INPUT_FLAGS = D3D_SIF_USERPACKED;
+pub const D3D10_SIF_COMPARISON_SAMPLER: ::D3D_SHADER_INPUT_FLAGS = D3D_SIF_COMPARISON_SAMPLER;
+pub const D3D10_SIF_TEXTURE_COMPONENT_0: ::D3D_SHADER_INPUT_FLAGS = D3D_SIF_TEXTURE_COMPONENT_0;
+pub const D3D10_SIF_TEXTURE_COMPONENT_1: ::D3D_SHADER_INPUT_FLAGS = D3D_SIF_TEXTURE_COMPONENT_1;
+pub const D3D10_SIF_TEXTURE_COMPONENTS: ::D3D_SHADER_INPUT_FLAGS = D3D_SIF_TEXTURE_COMPONENTS;
+ENUM!{enum D3D_SHADER_INPUT_TYPE {
+ D3D_SIT_CBUFFER,
+ D3D_SIT_TBUFFER,
+ D3D_SIT_TEXTURE,
+ D3D_SIT_SAMPLER,
+ D3D_SIT_UAV_RWTYPED,
+ D3D_SIT_STRUCTURED,
+ D3D_SIT_UAV_RWSTRUCTURED,
+ D3D_SIT_BYTEADDRESS,
+ D3D_SIT_UAV_RWBYTEADDRESS,
+ D3D_SIT_UAV_APPEND_STRUCTURED,
+ D3D_SIT_UAV_CONSUME_STRUCTURED,
+ D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
+}}
+pub const D3D10_SIT_CBUFFER: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_CBUFFER;
+pub const D3D10_SIT_TBUFFER: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_TBUFFER;
+pub const D3D10_SIT_TEXTURE: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_TEXTURE;
+pub const D3D10_SIT_SAMPLER: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_SAMPLER;
+pub const D3D11_SIT_UAV_RWTYPED: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_UAV_RWTYPED;
+pub const D3D11_SIT_STRUCTURED: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_STRUCTURED;
+pub const D3D11_SIT_UAV_RWSTRUCTURED: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_UAV_RWSTRUCTURED;
+pub const D3D11_SIT_BYTEADDRESS: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_BYTEADDRESS;
+pub const D3D11_SIT_UAV_RWBYTEADDRESS: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_UAV_RWBYTEADDRESS;
+pub const D3D11_SIT_UAV_APPEND_STRUCTURED: ::D3D_SHADER_INPUT_TYPE = D3D_SIT_UAV_APPEND_STRUCTURED;
+pub const D3D11_SIT_UAV_CONSUME_STRUCTURED: ::D3D_SHADER_INPUT_TYPE =
+ D3D_SIT_UAV_CONSUME_STRUCTURED;
+pub const D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER: ::D3D_SHADER_INPUT_TYPE =
+ D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER;
+FLAGS!{enum D3D_SHADER_CBUFFER_FLAGS {
+ D3D_CBF_USERPACKED = 1,
+}}
+pub const D3D10_CBF_USERPACKED: ::D3D_SHADER_CBUFFER_FLAGS = D3D_CBF_USERPACKED;
+ENUM!{enum D3D_CBUFFER_TYPE {
+ D3D_CT_CBUFFER,
+ D3D_CT_TBUFFER,
+ D3D_CT_INTERFACE_POINTERS,
+ D3D_CT_RESOURCE_BIND_INFO,
+}}
+pub const D3D10_CT_CBUFFER: ::D3D_CBUFFER_TYPE = D3D_CT_CBUFFER;
+pub const D3D10_CT_TBUFFER: ::D3D_CBUFFER_TYPE = D3D_CT_TBUFFER;
+pub const D3D11_CT_CBUFFER: ::D3D_CBUFFER_TYPE = D3D_CT_CBUFFER;
+pub const D3D11_CT_TBUFFER: ::D3D_CBUFFER_TYPE = D3D_CT_TBUFFER;
+pub const D3D11_CT_INTERFACE_POINTERS: ::D3D_CBUFFER_TYPE = D3D_CT_INTERFACE_POINTERS;
+pub const D3D11_CT_RESOURCE_BIND_INFO: ::D3D_CBUFFER_TYPE = D3D_CT_RESOURCE_BIND_INFO;
+ENUM!{enum D3D_NAME {
+ D3D_NAME_UNDEFINED = 0,
+ D3D_NAME_POSITION = 1,
+ D3D_NAME_CLIP_DISTANCE = 2,
+ D3D_NAME_CULL_DISTANCE = 3,
+ D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
+ D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
+ D3D_NAME_VERTEX_ID = 6,
+ D3D_NAME_PRIMITIVE_ID = 7,
+ D3D_NAME_INSTANCE_ID = 8,
+ D3D_NAME_IS_FRONT_FACE = 9,
+ D3D_NAME_SAMPLE_INDEX = 10,
+ D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
+ D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
+ D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
+ D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
+ D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
+ D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
+ D3D_NAME_TARGET = 64,
+ D3D_NAME_DEPTH = 65,
+ D3D_NAME_COVERAGE = 66,
+ D3D_NAME_DEPTH_GREATER_EQUAL = 67,
+ D3D_NAME_DEPTH_LESS_EQUAL = 68,
+}}
+pub const D3D10_NAME_UNDEFINED: D3D_NAME = D3D_NAME_UNDEFINED;
+pub const D3D10_NAME_POSITION: D3D_NAME = D3D_NAME_POSITION;
+pub const D3D10_NAME_CLIP_DISTANCE: D3D_NAME = D3D_NAME_CLIP_DISTANCE;
+pub const D3D10_NAME_CULL_DISTANCE: D3D_NAME = D3D_NAME_CULL_DISTANCE;
+pub const D3D10_NAME_RENDER_TARGET_ARRAY_INDEX: D3D_NAME = D3D_NAME_RENDER_TARGET_ARRAY_INDEX;
+pub const D3D10_NAME_VIEWPORT_ARRAY_INDEX: D3D_NAME = D3D_NAME_VIEWPORT_ARRAY_INDEX;
+pub const D3D10_NAME_VERTEX_ID: D3D_NAME = D3D_NAME_VERTEX_ID;
+pub const D3D10_NAME_PRIMITIVE_ID: D3D_NAME = D3D_NAME_PRIMITIVE_ID;
+pub const D3D10_NAME_INSTANCE_ID: D3D_NAME = D3D_NAME_INSTANCE_ID;
+pub const D3D10_NAME_IS_FRONT_FACE: D3D_NAME = D3D_NAME_IS_FRONT_FACE;
+pub const D3D10_NAME_SAMPLE_INDEX: D3D_NAME = D3D_NAME_SAMPLE_INDEX;
+pub const D3D10_NAME_TARGET: D3D_NAME = D3D_NAME_TARGET;
+pub const D3D10_NAME_DEPTH: D3D_NAME = D3D_NAME_DEPTH;
+pub const D3D10_NAME_COVERAGE: D3D_NAME = D3D_NAME_COVERAGE;
+pub const D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR: D3D_NAME = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR;
+pub const D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR: D3D_NAME = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR;
+pub const D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR: D3D_NAME = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR;
+pub const D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR: D3D_NAME = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR;
+pub const D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR: D3D_NAME = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR;
+pub const D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR: D3D_NAME = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR;
+pub const D3D11_NAME_DEPTH_GREATER_EQUAL: D3D_NAME = D3D_NAME_DEPTH_GREATER_EQUAL;
+pub const D3D11_NAME_DEPTH_LESS_EQUAL: D3D_NAME = D3D_NAME_DEPTH_LESS_EQUAL;
+ENUM!{enum D3D_RESOURCE_RETURN_TYPE {
+ D3D_RETURN_TYPE_UNORM = 1,
+ D3D_RETURN_TYPE_SNORM = 2,
+ D3D_RETURN_TYPE_SINT = 3,
+ D3D_RETURN_TYPE_UINT = 4,
+ D3D_RETURN_TYPE_FLOAT = 5,
+ D3D_RETURN_TYPE_MIXED = 6,
+ D3D_RETURN_TYPE_DOUBLE = 7,
+ D3D_RETURN_TYPE_CONTINUED = 8,
+}}
+pub const D3D10_RETURN_TYPE_UNORM: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_UNORM;
+pub const D3D10_RETURN_TYPE_SNORM: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_SNORM;
+pub const D3D10_RETURN_TYPE_SINT: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_SINT;
+pub const D3D10_RETURN_TYPE_UINT: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_UINT;
+pub const D3D10_RETURN_TYPE_FLOAT: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_FLOAT;
+pub const D3D10_RETURN_TYPE_MIXED: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_MIXED;
+pub const D3D11_RETURN_TYPE_UNORM: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_UNORM;
+pub const D3D11_RETURN_TYPE_SNORM: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_SNORM;
+pub const D3D11_RETURN_TYPE_SINT: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_SINT;
+pub const D3D11_RETURN_TYPE_UINT: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_UINT;
+pub const D3D11_RETURN_TYPE_FLOAT: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_FLOAT;
+pub const D3D11_RETURN_TYPE_MIXED: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_MIXED;
+pub const D3D11_RETURN_TYPE_DOUBLE: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_DOUBLE;
+pub const D3D11_RETURN_TYPE_CONTINUED: ::D3D_RESOURCE_RETURN_TYPE = D3D_RETURN_TYPE_CONTINUED;
+ENUM!{enum D3D_REGISTER_COMPONENT_TYPE {
+ D3D_REGISTER_COMPONENT_UNKNOWN = 0,
+ D3D_REGISTER_COMPONENT_UINT32 = 1,
+ D3D_REGISTER_COMPONENT_SINT32 = 2,
+ D3D_REGISTER_COMPONENT_FLOAT32 = 3,
+}}
+pub const D3D10_REGISTER_COMPONENT_UNKNOWN: ::D3D_REGISTER_COMPONENT_TYPE =
+ D3D_REGISTER_COMPONENT_UNKNOWN;
+pub const D3D10_REGISTER_COMPONENT_UINT32: ::D3D_REGISTER_COMPONENT_TYPE =
+ D3D_REGISTER_COMPONENT_UINT32;
+pub const D3D10_REGISTER_COMPONENT_SINT32: ::D3D_REGISTER_COMPONENT_TYPE =
+ D3D_REGISTER_COMPONENT_SINT32;
+pub const D3D10_REGISTER_COMPONENT_FLOAT32: ::D3D_REGISTER_COMPONENT_TYPE =
+ D3D_REGISTER_COMPONENT_FLOAT32;
+ENUM!{enum D3D_TESSELLATOR_DOMAIN {
+ D3D_TESSELLATOR_DOMAIN_UNDEFINED,
+ D3D_TESSELLATOR_DOMAIN_ISOLINE,
+ D3D_TESSELLATOR_DOMAIN_TRI,
+ D3D_TESSELLATOR_DOMAIN_QUAD,
+}}
+pub const D3D11_TESSELLATOR_DOMAIN_UNDEFINED: ::D3D_TESSELLATOR_DOMAIN =
+ D3D_TESSELLATOR_DOMAIN_UNDEFINED;
+pub const D3D11_TESSELLATOR_DOMAIN_ISOLINE: ::D3D_TESSELLATOR_DOMAIN =
+ D3D_TESSELLATOR_DOMAIN_ISOLINE;
+pub const D3D11_TESSELLATOR_DOMAIN_TRI: ::D3D_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN_TRI;
+pub const D3D11_TESSELLATOR_DOMAIN_QUAD: ::D3D_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN_QUAD;
+ENUM!{enum D3D_TESSELLATOR_PARTITIONING {
+ D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
+ D3D_TESSELLATOR_PARTITIONING_INTEGER,
+ D3D_TESSELLATOR_PARTITIONING_POW2,
+ D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
+ D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
+}}
+pub const D3D11_TESSELLATOR_PARTITIONING_UNDEFINED: ::D3D_TESSELLATOR_PARTITIONING =
+ D3D_TESSELLATOR_PARTITIONING_UNDEFINED;
+pub const D3D11_TESSELLATOR_PARTITIONING_INTEGER: ::D3D_TESSELLATOR_PARTITIONING =
+ D3D_TESSELLATOR_PARTITIONING_INTEGER;
+pub const D3D11_TESSELLATOR_PARTITIONING_POW2: ::D3D_TESSELLATOR_PARTITIONING =
+ D3D_TESSELLATOR_PARTITIONING_POW2;
+pub const D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD: ::D3D_TESSELLATOR_PARTITIONING =
+ D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD;
+pub const D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN: ::D3D_TESSELLATOR_PARTITIONING =
+ D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN;
+ENUM!{enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE {
+ D3D_TESSELLATOR_OUTPUT_UNDEFINED,
+ D3D_TESSELLATOR_OUTPUT_POINT,
+ D3D_TESSELLATOR_OUTPUT_LINE,
+ D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
+ D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
+}}
+pub const D3D11_TESSELLATOR_OUTPUT_UNDEFINED: ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE =
+ D3D_TESSELLATOR_OUTPUT_UNDEFINED;
+pub const D3D11_TESSELLATOR_OUTPUT_POINT: ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE =
+ D3D_TESSELLATOR_OUTPUT_POINT;
+pub const D3D11_TESSELLATOR_OUTPUT_LINE: ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE =
+ D3D_TESSELLATOR_OUTPUT_LINE;
+pub const D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW: ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE =
+ D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW;
+pub const D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW: ::D3D_TESSELLATOR_OUTPUT_PRIMITIVE =
+ D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW;
+ENUM!{enum D3D_MIN_PRECISION {
+ D3D_MIN_PRECISION_DEFAULT,
+ D3D_MIN_PRECISION_FLOAT_16,
+ D3D_MIN_PRECISION_FLOAT_2_8,
+ D3D_MIN_PRECISION_RESERVED,
+ D3D_MIN_PRECISION_SINT_16,
+ D3D_MIN_PRECISION_UINT_16,
+ D3D_MIN_PRECISION_ANY_16 = 0xf0,
+ D3D_MIN_PRECISION_ANY_10 = 0xf1,
+}}
+ENUM!{enum D3D_INTERPOLATION_MODE {
+ D3D_INTERPOLATION_UNDEFINED,
+ D3D_INTERPOLATION_CONSTANT,
+ D3D_INTERPOLATION_LINEAR,
+ D3D_INTERPOLATION_LINEAR_CENTROID,
+ D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE,
+ D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID,
+ D3D_INTERPOLATION_LINEAR_SAMPLE,
+ D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE,
+}}
+FLAGS!{enum D3D_PARAMETER_FLAGS {
+ D3D_PF_NONE = 0,
+ D3D_PF_IN = 0x1,
+ D3D_PF_OUT = 0x2,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/d3dcompiler.rs b/third_party/rust/winapi-0.2.8/src/d3dcompiler.rs
new file mode 100644
index 0000000000..6918888f6a
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/d3dcompiler.rs
@@ -0,0 +1,74 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub const D3DCOMPILER_DLL: &'static str = "d3dcompiler_47.dll";
+pub const D3D_COMPILER_VERSION: DWORD = 47;
+pub const D3DCOMPILE_DEBUG: DWORD = 1 << 0;
+pub const D3DCOMPILE_SKIP_VALIDATION: DWORD = 1 << 1;
+pub const D3DCOMPILE_SKIP_OPTIMIZATION: DWORD = 1 << 2;
+pub const D3DCOMPILE_PACK_MATRIX_ROW_MAJOR: DWORD = 1 << 3;
+pub const D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR: DWORD = 1 << 4;
+pub const D3DCOMPILE_PARTIAL_PRECISION: DWORD = 1 << 5;
+pub const D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT: DWORD = 1 << 6;
+pub const D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT: DWORD = 1 << 7;
+pub const D3DCOMPILE_NO_PRESHADER: DWORD = 1 << 8;
+pub const D3DCOMPILE_AVOID_FLOW_CONTROL: DWORD = 1 << 9;
+pub const D3DCOMPILE_PREFER_FLOW_CONTROL: DWORD = 1 << 10;
+pub const D3DCOMPILE_ENABLE_STRICTNESS: DWORD = 1 << 11;
+pub const D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY: DWORD = 1 << 12;
+pub const D3DCOMPILE_IEEE_STRICTNESS: DWORD = 1 << 13;
+pub const D3DCOMPILE_OPTIMIZATION_LEVEL0: DWORD = 1 << 14;
+pub const D3DCOMPILE_OPTIMIZATION_LEVEL1: DWORD = 0;
+pub const D3DCOMPILE_OPTIMIZATION_LEVEL2: DWORD = (1 << 14) | (1 << 15);
+pub const D3DCOMPILE_OPTIMIZATION_LEVEL3: DWORD = 1 << 15;
+pub const D3DCOMPILE_RESERVED16: DWORD = 1 << 16;
+pub const D3DCOMPILE_RESERVED17: DWORD = 1 << 17;
+pub const D3DCOMPILE_WARNINGS_ARE_ERRORS: DWORD = 1 << 18;
+pub const D3DCOMPILE_RESOURCES_MAY_ALIAS: DWORD = 1 << 19;
+pub const D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES: DWORD = 1 << 20;
+pub const D3DCOMPILE_ALL_RESOURCES_BOUND: DWORD = 1 << 21;
+pub const D3DCOMPILE_EFFECT_CHILD_EFFECT: DWORD = 1 << 0;
+pub const D3DCOMPILE_EFFECT_ALLOW_SLOW_OPS: DWORD = 1 << 1;
+pub const D3D_COMPILE_STANDARD_FILE_INCLUDE: *mut ID3DInclude = 1 as *mut ID3DInclude;
+pub const D3DCOMPILE_SECDATA_MERGE_UAV_SLOTS: DWORD = 0x00000001;
+pub const D3DCOMPILE_SECDATA_PRESERVE_TEMPLATE_SLOTS: DWORD = 0x00000002;
+pub const D3DCOMPILE_SECDATA_REQUIRE_TEMPLATE_MATCH: DWORD = 0x00000004;
+pub const D3D_DISASM_ENABLE_COLOR_CODE: DWORD = 0x00000001;
+pub const D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS: DWORD = 0x00000002;
+pub const D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING: DWORD = 0x00000004;
+pub const D3D_DISASM_ENABLE_INSTRUCTION_CYCLE: DWORD = 0x00000008;
+pub const D3D_DISASM_DISABLE_DEBUG_INFO: DWORD = 0x00000010;
+pub const D3D_DISASM_ENABLE_INSTRUCTION_OFFSET: DWORD = 0x00000020;
+pub const D3D_DISASM_INSTRUCTION_ONLY: DWORD = 0x00000040;
+pub const D3D_DISASM_PRINT_HEX_LITERALS: DWORD = 0x00000080;
+pub const D3D_GET_INST_OFFSETS_INCLUDE_NON_EXECUTABLE: DWORD = 0x00000001;
+FLAGS!{enum D3DCOMPILER_STRIP_FLAGS {
+ D3DCOMPILER_STRIP_REFLECTION_DATA = 0x00000001,
+ D3DCOMPILER_STRIP_DEBUG_INFO = 0x00000002,
+ D3DCOMPILER_STRIP_TEST_BLOBS = 0x00000004,
+ D3DCOMPILER_STRIP_PRIVATE_DATA = 0x00000008,
+ D3DCOMPILER_STRIP_ROOT_SIGNATURE = 0x00000010,
+ D3DCOMPILER_STRIP_FORCE_DWORD = 0x7fffffff,
+}}
+ENUM!{enum D3D_BLOB_PART {
+ D3D_BLOB_INPUT_SIGNATURE_BLOB,
+ D3D_BLOB_OUTPUT_SIGNATURE_BLOB,
+ D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB,
+ D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB,
+ D3D_BLOB_ALL_SIGNATURE_BLOB,
+ D3D_BLOB_DEBUG_INFO,
+ D3D_BLOB_LEGACY_SHADER,
+ D3D_BLOB_XNA_PREPASS_SHADER,
+ D3D_BLOB_XNA_SHADER,
+ D3D_BLOB_PDB,
+ D3D_BLOB_PRIVATE_DATA,
+ D3D_BLOB_ROOT_SIGNATURE,
+ D3D_BLOB_TEST_ALTERNATE_SHADER = 0x8000,
+ D3D_BLOB_TEST_COMPILE_DETAILS,
+ D3D_BLOB_TEST_COMPILE_PERF,
+ D3D_BLOB_TEST_COMPILE_REPORT,
+}}
+STRUCT!{struct D3D_SHADER_DATA {
+ pBytecode: LPCVOID,
+ BytecodeLength: SIZE_T,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/dbghelp.rs b/third_party/rust/winapi-0.2.8/src/dbghelp.rs
new file mode 100644
index 0000000000..8c20d72bf0
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dbghelp.rs
@@ -0,0 +1,340 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! DbgHelp include file
+#[cfg(target_arch = "x86_64")]
+STRUCT!{struct LOADED_IMAGE {
+ ModuleName: ::PSTR,
+ hFile: ::HANDLE,
+ MappedAddress: ::PUCHAR,
+ FileHeader: ::PIMAGE_NT_HEADERS64,
+ LastRvaSection: ::PIMAGE_SECTION_HEADER,
+ NumberOfSections: ::ULONG,
+ Sections: ::PIMAGE_SECTION_HEADER,
+ Characteristics: ::ULONG,
+ fSystemImage: ::BOOLEAN,
+ fDOSImage: ::BOOLEAN,
+ fReadOnly: ::BOOLEAN,
+ Version: ::UCHAR,
+ Links: ::LIST_ENTRY,
+ SizeOfImage: ::ULONG,
+}}
+#[cfg(target_arch = "x86")]
+STRUCT!{struct LOADED_IMAGE {
+ ModuleName: ::PSTR,
+ hFile: ::HANDLE,
+ MappedAddress: ::PUCHAR,
+ FileHeader: ::PIMAGE_NT_HEADERS32,
+ LastRvaSection: ::PIMAGE_SECTION_HEADER,
+ NumberOfSections: ::ULONG,
+ Sections: ::PIMAGE_SECTION_HEADER,
+ Characteristics: ::ULONG,
+ fSystemImage: ::BOOLEAN,
+ fDOSImage: ::BOOLEAN,
+ fReadOnly: ::BOOLEAN,
+ Version: ::UCHAR,
+ Links: ::LIST_ENTRY,
+ SizeOfImage: ::ULONG,
+}}
+pub const MAX_SYM_NAME: usize = 2000;
+pub const ERROR_IMAGE_NOT_STRIPPED: ::DWORD = 0x8800;
+pub const ERROR_NO_DBG_POINTER: ::DWORD = 0x8801;
+pub const ERROR_NO_PDB_POINTER: ::DWORD = 0x8802;
+pub type PFIND_DEBUG_FILE_CALLBACK = Option<unsafe extern "system" fn(
+ FileHandle: ::HANDLE, FileName: ::PCSTR, CallerData: ::PVOID,
+) -> ::BOOL>;
+pub type PFIND_DEBUG_FILE_CALLBACKW = Option<unsafe extern "system" fn(
+ FileHandle: ::HANDLE, FileName: ::PCWSTR, CallerData: ::PVOID,
+) -> ::BOOL>;
+pub type PFINDFILEINPATHCALLBACK = Option<unsafe extern "system" fn(
+ filename: ::PCSTR, context: ::PVOID,
+) -> ::BOOL>;
+pub type PFINDFILEINPATHCALLBACKW = Option<unsafe extern "system" fn(
+ filename: ::PCWSTR, context: ::PVOID,
+) -> ::BOOL>;
+pub type PFIND_EXE_FILE_CALLBACK = Option<unsafe extern "system" fn(
+ FileHandle: ::HANDLE, FileName: ::PCSTR, CallerData: ::PVOID,
+) -> ::BOOL>;
+pub type PFIND_EXE_FILE_CALLBACKW = Option<unsafe extern "system" fn(
+ FileHandle: ::HANDLE, FileName: ::PCWSTR, CallerData: ::PVOID,
+) -> ::BOOL>;
+#[cfg(target_arch = "x86")]
+STRUCT!{struct IMAGE_DEBUG_INFORMATION {
+ List: ::LIST_ENTRY,
+ ReservedSize: ::DWORD,
+ ReservedMappedBase: ::PVOID,
+ ReservedMachine: ::USHORT,
+ ReservedCharacteristics: ::USHORT,
+ ReservedCheckSum: ::DWORD,
+ ImageBase: ::DWORD,
+ SizeOfImage: ::DWORD,
+ ReservedNumberOfSections: ::DWORD,
+ ReservedSections: ::PIMAGE_SECTION_HEADER,
+ ReservedExportedNamesSize: ::DWORD,
+ ReservedExportedNames: ::PSTR,
+ ReservedNumberOfFunctionTableEntries: ::DWORD,
+ ReservedFunctionTableEntries: ::PIMAGE_FUNCTION_ENTRY,
+ ReservedLowestFunctionStartingAddress: ::DWORD,
+ ReservedHighestFunctionEndingAddress: ::DWORD,
+ ReservedNumberOfFpoTableEntries: ::DWORD,
+ ReservedFpoTableEntries: ::PFPO_DATA,
+ SizeOfCoffSymbols: ::DWORD,
+ CoffSymbols: ::PIMAGE_COFF_SYMBOLS_HEADER,
+ ReservedSizeOfCodeViewSymbols: ::DWORD,
+ ReservedCodeViewSymbols: ::PVOID,
+ ImageFilePath: ::PSTR,
+ ImageFileName: ::PSTR,
+ ReservedDebugFilePath: ::PSTR,
+ ReservedTimeDateStamp: ::DWORD,
+ ReservedRomImage: ::BOOL,
+ ReservedDebugDirectory: ::PIMAGE_DEBUG_DIRECTORY,
+ ReservedNumberOfDebugDirectories: ::DWORD,
+ ReservedOriginalFunctionTableBaseAddress: ::DWORD,
+ Reserved: [::DWORD; 2],
+}}
+#[cfg(target_arch = "x86")]
+pub type PIMAGE_DEBUG_INFORMATION = *mut IMAGE_DEBUG_INFORMATION;
+pub type PENUMDIRTREE_CALLBACK = Option<unsafe extern "system" fn(
+ FilePath: ::PCSTR, CallerData: ::PVOID,
+) -> ::BOOL>;
+pub type PENUMDIRTREE_CALLBACKW = Option<unsafe extern "system" fn(
+ FilePath: ::PCWSTR, CallerData: ::PVOID,
+) -> ::BOOL>;
+pub const UNDNAME_COMPLETE: ::DWORD = 0x0000;
+pub const UNDNAME_NO_LEADING_UNDERSCORES: ::DWORD = 0x0001;
+pub const UNDNAME_NO_MS_KEYWORDS: ::DWORD = 0x0002;
+pub const UNDNAME_NO_FUNCTION_RETURNS: ::DWORD = 0x0004;
+pub const UNDNAME_NO_ALLOCATION_MODEL: ::DWORD = 0x0008;
+pub const UNDNAME_NO_ALLOCATION_LANGUAGE: ::DWORD = 0x0010;
+pub const UNDNAME_NO_MS_THISTYPE: ::DWORD = 0x0020;
+pub const UNDNAME_NO_CV_THISTYPE: ::DWORD = 0x0040;
+pub const UNDNAME_NO_THISTYPE: ::DWORD = 0x0060;
+pub const UNDNAME_NO_ACCESS_SPECIFIERS: ::DWORD = 0x0080;
+pub const UNDNAME_NO_THROW_SIGNATURES: ::DWORD = 0x0100;
+pub const UNDNAME_NO_MEMBER_TYPE: ::DWORD = 0x0200;
+pub const UNDNAME_NO_RETURN_UDT_MODEL: ::DWORD = 0x0400;
+pub const UNDNAME_32_BIT_DECODE: ::DWORD = 0x0800;
+pub const UNDNAME_NAME_ONLY: ::DWORD = 0x1000;
+pub const UNDNAME_NO_ARGUMENTS: ::DWORD = 0x2000;
+pub const UNDNAME_NO_SPECIAL_SYMS: ::DWORD = 0x4000;
+pub const DBHHEADER_DEBUGDIRS: ::DWORD = 0x1;
+pub const DBHHEADER_CVMISC: ::DWORD = 0x2;
+pub const DBHHEADER_PDBGUID: ::DWORD = 0x3;
+STRUCT!{struct MODLOAD_DATA {
+ ssize: ::DWORD,
+ ssig: ::DWORD,
+ data: ::PVOID,
+ size: ::DWORD,
+ flags: ::DWORD,
+}}
+pub type PMODLOAD_DATA = *mut MODLOAD_DATA;
+STRUCT!{struct MODLOAD_CVMISC {
+ oCV: ::DWORD,
+ cCV: ::size_t,
+ oMisc: ::DWORD,
+ cMisc: ::size_t,
+ dtImage: ::DWORD,
+ cImage: ::DWORD,
+}}
+pub type PMODLOAD_CVMISC = *mut MODLOAD_CVMISC;
+STRUCT!{struct MODLOAD_PDBGUID_PDBAGE {
+ PdbGuid: ::GUID,
+ PdbAge: ::DWORD,
+}}
+pub type PMODLOAD_PDBGUID_PDBAGE = *mut MODLOAD_PDBGUID_PDBAGE;
+ENUM!{enum ADDRESS_MODE {
+ AddrMode1616,
+ AddrMode1632,
+ AddrModeReal,
+ AddrModeFlat,
+}}
+STRUCT!{struct ADDRESS64 {
+ Offset: ::DWORD64,
+ Segment: ::WORD,
+ Mode: ::ADDRESS_MODE,
+}}
+pub type LPADDRESS64 = *mut ADDRESS64;
+#[cfg(target_arch = "x86_64")]
+pub type ADDRESS = ADDRESS64;
+#[cfg(target_arch = "x86_64")]
+pub type LPADDRESS = LPADDRESS64;
+#[cfg(target_arch = "x86")]
+STRUCT!{struct ADDRESS {
+ Offset: ::DWORD,
+ Segment: ::WORD,
+ Mode: ::ADDRESS_MODE,
+}}
+#[cfg(target_arch = "x86")]
+pub type LPADDRESS = *mut ADDRESS;
+STRUCT!{struct KDHELP64 {
+ Thread: ::DWORD64,
+ ThCallbackStack: ::DWORD,
+ ThCallbackBStore: ::DWORD,
+ NextCallback: ::DWORD,
+ FramePointer: ::DWORD,
+ KiCallUserMode: ::DWORD64,
+ KeUserCallbackDispatcher: ::DWORD64,
+ SystemRangeStart: ::DWORD64,
+ KiUserExceptionDispatcher: ::DWORD64,
+ StackBase: ::DWORD64,
+ StackLimit: ::DWORD64,
+ BuildVersion: ::DWORD,
+ Reserved0: ::DWORD,
+ Reserved1: [::DWORD64; 4],
+}}
+pub type PKDHELP64 = *mut KDHELP64;
+#[cfg(target_arch = "x86_64")]
+pub type KDHELP = KDHELP64;
+#[cfg(target_arch = "x86_64")]
+pub type PKDHELP = PKDHELP64;
+#[cfg(target_arch = "x86")]
+STRUCT!{struct KDHELP {
+ Thread: ::DWORD,
+ ThCallbackStack: ::DWORD,
+ NextCallback: ::DWORD,
+ FramePointer: ::DWORD,
+ KiCallUserMode: ::DWORD,
+ KeUserCallbackDispatcher: ::DWORD,
+ SystemRangeStart: ::DWORD,
+ ThCallbackBStore: ::DWORD,
+ KiUserExceptionDispatcher: ::DWORD,
+ StackBase: ::DWORD,
+ StackLimit: ::DWORD,
+ Reserved: [::DWORD; 5],
+}}
+#[cfg(target_arch = "x86")]
+pub type PKDHELP = *mut KDHELP;
+STRUCT!{struct STACKFRAME64 {
+ AddrPC: ::ADDRESS64,
+ AddrReturn: ::ADDRESS64,
+ AddrFrame: ::ADDRESS64,
+ AddrStack: ::ADDRESS64,
+ AddrBStore: ::ADDRESS64,
+ FuncTableEntry: ::PVOID,
+ Params: [::DWORD64; 4],
+ Far: ::BOOL,
+ Virtual: ::BOOL,
+ Reserved: [::DWORD64; 3],
+ KdHelp: ::KDHELP64,
+}}
+pub type LPSTACKFRAME64 = *mut STACKFRAME64;
+pub const INLINE_FRAME_CONTEXT_INIT: ::DWORD = 0;
+pub const INLINE_FRAME_CONTEXT_IGNORE: ::DWORD = 0xFFFFFFFF;
+STRUCT!{struct STACKFRAME_EX {
+ AddrPC: ::ADDRESS64,
+ AddrReturn: ::ADDRESS64,
+ AddrFrame: ::ADDRESS64,
+ AddrStack: ::ADDRESS64,
+ AddrBStore: ::ADDRESS64,
+ FuncTableEntry: ::PVOID,
+ Params: [::DWORD64; 4],
+ Far: ::BOOL,
+ Virtual: ::BOOL,
+ Reserved: [::DWORD64; 3],
+ KdHelp: ::KDHELP64,
+ StackFrameSize: ::DWORD,
+ InlineFrameContext: ::DWORD,
+}}
+pub type LPSTACKFRAME_EX = *mut STACKFRAME_EX;
+#[cfg(target_arch = "x86_64")]
+pub type STACKFRAME = STACKFRAME64;
+#[cfg(target_arch = "x86_64")]
+pub type LPSTACKFRAME = LPSTACKFRAME64;
+#[cfg(target_arch = "x86")]
+STRUCT!{struct STACKFRAME {
+ AddrPC: ::ADDRESS,
+ AddrReturn: ::ADDRESS,
+ AddrFrame: ::ADDRESS,
+ AddrStack: ::ADDRESS,
+ FuncTableEntry: ::PVOID,
+ Params: [::DWORD; 4],
+ Far: ::BOOL,
+ Virtual: ::BOOL,
+ Reserved: [::DWORD; 3],
+ KdHelp: ::KDHELP,
+ AddrBStore: ::ADDRESS,
+}}
+#[cfg(target_arch = "x86")]
+pub type LPSTACKFRAME = *mut STACKFRAME;
+pub type PREAD_PROCESS_MEMORY_ROUTINE64 = Option<unsafe extern "system" fn(
+ hProcess: ::HANDLE, qwBaseAddress: ::DWORD64, lpBuffer: ::PVOID, nSize: ::DWORD,
+ lpNumberOfBytesRead: ::LPDWORD,
+) -> ::BOOL>;
+pub type PFUNCTION_TABLE_ACCESS_ROUTINE64 = Option<unsafe extern "system" fn(
+ ahProcess: ::HANDLE, AddrBase: ::DWORD64,
+) -> ::PVOID>;
+pub type PGET_MODULE_BASE_ROUTINE64 = Option<unsafe extern "system" fn(
+ hProcess: ::HANDLE, Address: ::DWORD64,
+) -> ::DWORD64>;
+pub type PTRANSLATE_ADDRESS_ROUTINE64 = Option<unsafe extern "system" fn(
+ hProcess: ::HANDLE, hThread: ::HANDLE, lpaddr: LPADDRESS64,
+) -> ::DWORD64>;
+pub const SYM_STKWALK_DEFAULT: ::DWORD = 0x00000000;
+pub const SYM_STKWALK_FORCE_FRAMEPTR: ::DWORD = 0x00000001;
+#[cfg(target_arch = "x86_64")]
+pub type PREAD_PROCESS_MEMORY_ROUTINE = PREAD_PROCESS_MEMORY_ROUTINE64;
+#[cfg(target_arch = "x86_64")]
+pub type PFUNCTION_TABLE_ACCESS_ROUTINE = PFUNCTION_TABLE_ACCESS_ROUTINE64;
+#[cfg(target_arch = "x86_64")]
+pub type PGET_MODULE_BASE_ROUTINE = PGET_MODULE_BASE_ROUTINE64;
+#[cfg(target_arch = "x86_64")]
+pub type PTRANSLATE_ADDRESS_ROUTINE = PTRANSLATE_ADDRESS_ROUTINE64;
+#[cfg(target_arch = "x86")]
+pub type PREAD_PROCESS_MEMORY_ROUTINE = Option<unsafe extern "system" fn(
+ hProcess: ::HANDLE, qwBaseAddress: ::DWORD, lpBuffer: ::PVOID, nSize: ::DWORD,
+ lpNumberOfBytesRead: ::PDWORD,
+) -> ::BOOL>;
+#[cfg(target_arch = "x86")]
+pub type PFUNCTION_TABLE_ACCESS_ROUTINE = Option<unsafe extern "system" fn(
+ ahProcess: ::HANDLE, AddrBase: ::DWORD,
+) -> ::PVOID>;
+#[cfg(target_arch = "x86")]
+pub type PGET_MODULE_BASE_ROUTINE = Option<unsafe extern "system" fn(
+ hProcess: ::HANDLE, Address: ::DWORD,
+) -> ::DWORD>;
+#[cfg(target_arch = "x86")]
+pub type PTRANSLATE_ADDRESS_ROUTINE = Option<unsafe extern "system" fn(
+ hProcess: ::HANDLE, hThread: ::HANDLE, lpaddr: LPADDRESS,
+) -> ::DWORD>;
+pub const API_VERSION_NUMBER: ::USHORT = 12;
+STRUCT!{struct API_VERSION {
+ MajorVersion: ::USHORT,
+ MinorVersion: ::USHORT,
+ Revision: ::USHORT,
+ Reserved: ::USHORT,
+}}
+pub type LPAPI_VERSION = *mut API_VERSION;
+STRUCT!{struct SYMBOL_INFOW {
+ SizeOfStruct: ::ULONG,
+ TypeIndex: ::ULONG,
+ Reserved: [::ULONG64; 2],
+ Index: ::ULONG,
+ Size: ::ULONG,
+ ModBase: ::ULONG64,
+ Flags: ::ULONG,
+ Value: ::ULONG64,
+ Address: ::ULONG64,
+ Register: ::ULONG,
+ Scope: ::ULONG,
+ Tag: ::ULONG,
+ NameLen: ::ULONG,
+ MaxNameLen: ::ULONG,
+ Name: [::WCHAR; 1],
+}}
+pub type PSYMBOL_INFOW = *mut SYMBOL_INFOW;
+STRUCT!{struct IMAGEHLP_SYMBOL64 {
+ SizeOfStruct: ::DWORD,
+ Address: ::DWORD64,
+ Size: ::DWORD,
+ Flags: ::DWORD,
+ MaxNameLength: ::DWORD,
+ Name: [::CHAR; 1],
+}}
+pub type PIMAGEHLP_SYMBOL64 = *mut IMAGEHLP_SYMBOL64;
+STRUCT!{struct IMAGEHLP_LINEW64 {
+ SizeOfStruct: ::DWORD,
+ Key: ::PVOID,
+ LineNumber: ::DWORD,
+ FileName: ::PWSTR,
+ Address: ::DWORD64,
+}}
+pub type PIMAGEHLP_LINEW64 = *mut IMAGEHLP_LINEW64;
diff --git a/third_party/rust/winapi-0.2.8/src/dcommon.rs b/third_party/rust/winapi-0.2.8/src/dcommon.rs
new file mode 100644
index 0000000000..2c220e351a
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dcommon.rs
@@ -0,0 +1,18 @@
+// Copyright © 2015; Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dcommon.h
+ENUM!{enum DWRITE_MEASURING_MODE {
+ DWRITE_MEASURING_MODE_NATURAL = 0,
+ DWRITE_MEASURING_MODE_GDI_CLASSIC = 1,
+ DWRITE_MEASURING_MODE_GDI_NATURAL = 2,
+}}
+ENUM!{enum D2D1_ALPHA_MODE {
+ D2D1_ALPHA_MODE_UNKNOWN = 0,
+ D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
+ D2D1_ALPHA_MODE_STRAIGHT = 2,
+ D2D1_ALPHA_MODE_IGNORE = 3,
+}}
+STRUCT!{struct D2D1_PIXEL_FORMAT {
+ format: ::DXGI_FORMAT,
+ alphaMode: D2D1_ALPHA_MODE,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/devpropdef.rs b/third_party/rust/winapi-0.2.8/src/devpropdef.rs
new file mode 100644
index 0000000000..3deca43e30
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/devpropdef.rs
@@ -0,0 +1,71 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Defines property types and keys for the Plug and Play Device Property API
+pub type DEVPROPTYPE = ::ULONG;
+pub type PDEVPROPTYPE = *mut ::ULONG;
+pub const DEVPROP_TYPEMOD_ARRAY: DEVPROPTYPE = 0x00001000;
+pub const DEVPROP_TYPEMOD_LIST: DEVPROPTYPE = 0x00002000;
+pub const DEVPROP_TYPE_EMPTY: DEVPROPTYPE = 0x00000000;
+pub const DEVPROP_TYPE_NULL: DEVPROPTYPE = 0x00000001;
+pub const DEVPROP_TYPE_SBYTE: DEVPROPTYPE = 0x00000002;
+pub const DEVPROP_TYPE_BYTE: DEVPROPTYPE = 0x00000003;
+pub const DEVPROP_TYPE_INT16: DEVPROPTYPE = 0x00000004;
+pub const DEVPROP_TYPE_UINT16: DEVPROPTYPE = 0x00000005;
+pub const DEVPROP_TYPE_INT32: DEVPROPTYPE = 0x00000006;
+pub const DEVPROP_TYPE_UINT32: DEVPROPTYPE = 0x00000007;
+pub const DEVPROP_TYPE_INT64: DEVPROPTYPE = 0x00000008;
+pub const DEVPROP_TYPE_UINT64: DEVPROPTYPE = 0x00000009;
+pub const DEVPROP_TYPE_FLOAT: DEVPROPTYPE = 0x0000000A;
+pub const DEVPROP_TYPE_DOUBLE: DEVPROPTYPE = 0x0000000B;
+pub const DEVPROP_TYPE_DECIMAL: DEVPROPTYPE = 0x0000000C;
+pub const DEVPROP_TYPE_GUID: DEVPROPTYPE = 0x0000000D;
+pub const DEVPROP_TYPE_CURRENCY: DEVPROPTYPE = 0x0000000E;
+pub const DEVPROP_TYPE_DATE: DEVPROPTYPE = 0x0000000F;
+pub const DEVPROP_TYPE_FILETIME: DEVPROPTYPE = 0x00000010;
+pub const DEVPROP_TYPE_BOOLEAN: DEVPROPTYPE = 0x00000011;
+pub const DEVPROP_TYPE_STRING: DEVPROPTYPE = 0x00000012;
+pub const DEVPROP_TYPE_STRING_LIST: DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST;
+pub const DEVPROP_TYPE_SECURITY_DESCRIPTOR: DEVPROPTYPE = 0x00000013;
+pub const DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING: DEVPROPTYPE = 0x00000014;
+pub const DEVPROP_TYPE_DEVPROPKEY: DEVPROPTYPE = 0x00000015;
+pub const DEVPROP_TYPE_DEVPROPTYPE: DEVPROPTYPE = 0x00000016;
+pub const DEVPROP_TYPE_BINARY: DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY;
+pub const DEVPROP_TYPE_ERROR: DEVPROPTYPE = 0x00000017;
+pub const DEVPROP_TYPE_NTSTATUS: DEVPROPTYPE = 0x00000018;
+pub const DEVPROP_TYPE_STRING_INDIRECT: DEVPROPTYPE = 0x00000019;
+pub const MAX_DEVPROP_TYPE: DEVPROPTYPE = 0x00000019;
+pub const MAX_DEVPROP_TYPEMOD: DEVPROPTYPE = 0x00002000;
+pub const DEVPROP_MASK_TYPE: DEVPROPTYPE = 0x00000FFF;
+pub const DEVPROP_MASK_TYPEMOD: DEVPROPTYPE = 0x0000F000;
+pub type DEVPROP_BOOLEAN = ::CHAR;
+pub type PDEVPROP_BOOLEAN = *mut ::CHAR;
+pub const DEVPROP_TRUE: DEVPROP_BOOLEAN = -1;
+pub const DEVPROP_FALSE: DEVPROP_BOOLEAN = 0;
+pub type DEVPROPGUID = ::GUID;
+pub type PDEVPROPGUID = *mut ::GUID;
+pub type DEVPROPID = ::ULONG;
+pub type PDEVPROPID = *mut ::ULONG;
+STRUCT!{struct DEVPROPKEY {
+ fmtid: DEVPROPGUID,
+ pid: DEVPROPID,
+}}
+pub type PDEVPROPKEY = *mut DEVPROPKEY;
+ENUM!{enum DEVPROPSTORE {
+ DEVPROP_STORE_SYSTEM,
+ DEVPROP_STORE_USER,
+}}
+pub type PDEVPROPSTORE = *mut DEVPROPSTORE;
+STRUCT!{struct DEVPROPCOMPKEY {
+ Key: DEVPROPKEY,
+ Store: DEVPROPSTORE,
+ LocaleName: ::PCWSTR,
+}}
+pub type PDEVPROPCOMPKEY = *mut DEVPROPCOMPKEY;
+STRUCT!{struct DEVPROPERTY {
+ CompKey: DEVPROPCOMPKEY,
+ Type: DEVPROPTYPE,
+ BufferSize: ::ULONG,
+ Buffer: ::PVOID,
+}}
+pub type PDEVPROPERTY = *mut DEVPROPERTY;
+pub const DEVPROPID_FIRST_USABLE: DEVPROPID = 2;
diff --git a/third_party/rust/winapi-0.2.8/src/docobj.rs b/third_party/rust/winapi-0.2.8/src/docobj.rs
new file mode 100644
index 0000000000..3d5f9044d9
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/docobj.rs
@@ -0,0 +1,22 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+STRUCT!{struct OLECMD {
+ cmdID: ::ULONG,
+ cmdf: ::DWORD,
+}}
+STRUCT!{struct OLECMDTEXT {
+ cmdtextf: ::DWORD,
+ cwActual: ::ULONG,
+ cwBuf: ::ULONG,
+ rgwz: [::wchar_t; 0],
+}}
+RIDL!{interface IOleCommandTarget(IOleCommandTargetVtbl): IUnknown(IUnknownVtbl) {
+ fn QueryStatus(
+ &mut self, pguidCmdGroup: *const ::GUID, cCmds: ::ULONG, prgCmds: *mut OLECMD,
+ pCmdText: *mut OLECMDTEXT
+ ) -> ::HRESULT,
+ fn Exec(
+ &mut self, pguidCmdGroup: *const :: GUID, nCmdID: ::DWORD, nCmdexecopt: ::DWORD,
+ pvaIn: *mut ::VARIANT, pvaOut: *mut ::VARIANT
+ ) -> ::HRESULT
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/dpapi.rs b/third_party/rust/winapi-0.2.8/src/dpapi.rs
new file mode 100644
index 0000000000..c62e56f3aa
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dpapi.rs
@@ -0,0 +1,11 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Data Protection API Prototypes and Definitions
+pub const szFORCE_KEY_PROTECTION: &'static str = "ForceKeyProtection";
+STRUCT!{struct CRYPTPROTECT_PROMPTSTRUCT {
+ cbSize: ::DWORD,
+ dwPromptFlags: ::DWORD,
+ hwndApp: ::HWND,
+ szPrompt: ::LPCWSTR,
+}}
+pub type PCRYPTPROTECT_PROMPTSTRUCT = *mut CRYPTPROTECT_PROMPTSTRUCT;
diff --git a/third_party/rust/winapi-0.2.8/src/dsgetdc.rs b/third_party/rust/winapi-0.2.8/src/dsgetdc.rs
new file mode 100644
index 0000000000..09c81c0fdb
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dsgetdc.rs
@@ -0,0 +1,113 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! This file contains structures, function prototypes, and definitions for the DsGetDcName API.
+pub const DS_FORCE_REDISCOVERY: ::ULONG = 0x00000001;
+pub const DS_DIRECTORY_SERVICE_REQUIRED: ::ULONG = 0x00000010;
+pub const DS_DIRECTORY_SERVICE_PREFERRED: ::ULONG = 0x00000020;
+pub const DS_GC_SERVER_REQUIRED: ::ULONG = 0x00000040;
+pub const DS_PDC_REQUIRED: ::ULONG = 0x00000080;
+pub const DS_BACKGROUND_ONLY: ::ULONG = 0x00000100;
+pub const DS_IP_REQUIRED: ::ULONG = 0x00000200;
+pub const DS_KDC_REQUIRED: ::ULONG = 0x00000400;
+pub const DS_TIMESERV_REQUIRED: ::ULONG = 0x00000800;
+pub const DS_WRITABLE_REQUIRED: ::ULONG = 0x00001000;
+pub const DS_GOOD_TIMESERV_PREFERRED: ::ULONG = 0x00002000;
+pub const DS_AVOID_SELF: ::ULONG = 0x00004000;
+pub const DS_ONLY_LDAP_NEEDED: ::ULONG = 0x00008000;
+pub const DS_IS_FLAT_NAME: ::ULONG = 0x00010000;
+pub const DS_IS_DNS_NAME: ::ULONG = 0x00020000;
+pub const DS_TRY_NEXTCLOSEST_SITE: ::ULONG = 0x00040000;
+pub const DS_DIRECTORY_SERVICE_6_REQUIRED: ::ULONG = 0x00080000;
+pub const DS_WEB_SERVICE_REQUIRED: ::ULONG = 0x00100000;
+pub const DS_DIRECTORY_SERVICE_8_REQUIRED: ::ULONG = 0x00200000;
+pub const DS_DIRECTORY_SERVICE_9_REQUIRED: ::ULONG = 0x00400000;
+pub const DS_RETURN_DNS_NAME: ::ULONG = 0x40000000;
+pub const DS_RETURN_FLAT_NAME: ::ULONG = 0x80000000;
+pub const DSGETDC_VALID_FLAGS: ::ULONG = DS_FORCE_REDISCOVERY | DS_DIRECTORY_SERVICE_REQUIRED
+ | DS_DIRECTORY_SERVICE_PREFERRED | DS_GC_SERVER_REQUIRED | DS_PDC_REQUIRED | DS_BACKGROUND_ONLY
+ | DS_IP_REQUIRED | DS_KDC_REQUIRED | DS_TIMESERV_REQUIRED | DS_WRITABLE_REQUIRED
+ | DS_GOOD_TIMESERV_PREFERRED | DS_AVOID_SELF | DS_ONLY_LDAP_NEEDED | DS_IS_FLAT_NAME
+ | DS_IS_DNS_NAME | DS_TRY_NEXTCLOSEST_SITE | DS_DIRECTORY_SERVICE_6_REQUIRED
+ | DS_DIRECTORY_SERVICE_8_REQUIRED | DS_DIRECTORY_SERVICE_9_REQUIRED | DS_WEB_SERVICE_REQUIRED
+ | DS_RETURN_FLAT_NAME | DS_RETURN_DNS_NAME;
+STRUCT!{struct DOMAIN_CONTROLLER_INFOA {
+ DomainControllerName: ::LPSTR,
+ DomainControllerAddress: ::LPSTR,
+ DomainControllerAddressType: ::ULONG,
+ DomainGuid: ::GUID,
+ DomainName: ::LPSTR,
+ DnsForestName: ::LPSTR,
+ Flags: ::ULONG,
+ DcSiteName: ::LPSTR,
+ ClientSiteName: ::LPSTR,
+}}
+pub type PDOMAIN_CONTROLLER_INFOA = *mut DOMAIN_CONTROLLER_INFOA;
+STRUCT!{struct DOMAIN_CONTROLLER_INFOW {
+ DomainControllerName: ::LPWSTR,
+ DomainControllerAddress: ::LPWSTR,
+ DomainControllerAddressType: ::ULONG,
+ DomainGuid: ::GUID,
+ DomainName: ::LPWSTR,
+ DnsForestName: ::LPWSTR,
+ Flags: ::ULONG,
+ DcSiteName: ::LPWSTR,
+ ClientSiteName: ::LPWSTR,
+}}
+pub type PDOMAIN_CONTROLLER_INFOW = *mut DOMAIN_CONTROLLER_INFOW;
+pub const DS_INET_ADDRESS: ::ULONG = 1;
+pub const DS_NETBIOS_ADDRESS: ::ULONG = 2;
+pub const DS_PDC_FLAG: ::ULONG = 0x00000001;
+pub const DS_GC_FLAG: ::ULONG = 0x00000004;
+pub const DS_LDAP_FLAG: ::ULONG = 0x00000008;
+pub const DS_DS_FLAG: ::ULONG = 0x00000010;
+pub const DS_KDC_FLAG: ::ULONG = 0x00000020;
+pub const DS_TIMESERV_FLAG: ::ULONG = 0x00000040;
+pub const DS_CLOSEST_FLAG: ::ULONG = 0x00000080;
+pub const DS_WRITABLE_FLAG: ::ULONG = 0x00000100;
+pub const DS_GOOD_TIMESERV_FLAG: ::ULONG = 0x00000200;
+pub const DS_NDNC_FLAG: ::ULONG = 0x00000400;
+pub const DS_SELECT_SECRET_DOMAIN_6_FLAG: ::ULONG = 0x00000800;
+pub const DS_FULL_SECRET_DOMAIN_6_FLAG: ::ULONG = 0x00001000;
+pub const DS_WS_FLAG: ::ULONG = 0x00002000;
+pub const DS_DS_8_FLAG: ::ULONG = 0x00004000;
+pub const DS_DS_9_FLAG: ::ULONG = 0x00008000;
+pub const DS_PING_FLAGS: ::ULONG = 0x000FFFFF;
+pub const DS_DNS_CONTROLLER_FLAG: ::ULONG = 0x20000000;
+pub const DS_DNS_DOMAIN_FLAG: ::ULONG = 0x40000000;
+pub const DS_DNS_FOREST_FLAG: ::ULONG = 0x80000000;
+pub const DS_DOMAIN_IN_FOREST: ::ULONG = 0x0001;
+pub const DS_DOMAIN_DIRECT_OUTBOUND: ::ULONG = 0x0002;
+pub const DS_DOMAIN_TREE_ROOT: ::ULONG = 0x0004;
+pub const DS_DOMAIN_PRIMARY: ::ULONG = 0x0008;
+pub const DS_DOMAIN_NATIVE_MODE: ::ULONG = 0x0010;
+pub const DS_DOMAIN_DIRECT_INBOUND: ::ULONG = 0x0020;
+pub const DS_DOMAIN_VALID_FLAGS: ::ULONG = DS_DOMAIN_IN_FOREST | DS_DOMAIN_DIRECT_OUTBOUND
+ | DS_DOMAIN_TREE_ROOT | DS_DOMAIN_PRIMARY | DS_DOMAIN_NATIVE_MODE | DS_DOMAIN_DIRECT_INBOUND;
+STRUCT!{struct DS_DOMAIN_TRUSTSW {
+ NetbiosDomainName: ::LPWSTR,
+ DnsDomainName: ::LPWSTR,
+ Flags: ::ULONG,
+ ParentIndex: ::ULONG,
+ TrustType: ::ULONG,
+ TrustAttributes: ::ULONG,
+ DomainSid: ::PSID,
+ DomainGuid: ::GUID,
+}}
+pub type PDS_DOMAIN_TRUSTSW = *mut DS_DOMAIN_TRUSTSW;
+STRUCT!{struct DS_DOMAIN_TRUSTSA {
+ NetbiosDomainName: ::LPSTR,
+ DnsDomainName: ::LPSTR,
+ Flags: ::ULONG,
+ ParentIndex: ::ULONG,
+ TrustType: ::ULONG,
+ TrustAttributes: ::ULONG,
+ DomainSid: ::PSID,
+ DomainGuid: ::GUID,
+}}
+pub type PDS_DOMAIN_TRUSTSA = *mut DS_DOMAIN_TRUSTSA;
+pub const DS_ONLY_DO_SITE_NAME: ::ULONG = 0x01;
+pub const DS_NOTIFY_AFTER_SITE_RECORDS: ::ULONG = 0x02;
+pub const DS_OPEN_VALID_OPTION_FLAGS: ::ULONG = DS_ONLY_DO_SITE_NAME
+ | DS_NOTIFY_AFTER_SITE_RECORDS;
+pub const DS_OPEN_VALID_FLAGS: ::ULONG = DS_FORCE_REDISCOVERY | DS_ONLY_LDAP_NEEDED
+ | DS_KDC_REQUIRED | DS_PDC_REQUIRED | DS_GC_SERVER_REQUIRED | DS_WRITABLE_REQUIRED;
diff --git a/third_party/rust/winapi-0.2.8/src/dsound.rs b/third_party/rust/winapi-0.2.8/src/dsound.rs
new file mode 100644
index 0000000000..e8f167fab7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dsound.rs
@@ -0,0 +1,132 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! DSound procedure declarations, constant definitions and macros
+STRUCT!{struct DSCAPS {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ dwMinSecondarySampleRate: ::DWORD,
+ dwMaxSecondarySampleRate: ::DWORD,
+ dwPrimaryBuffers: ::DWORD,
+ dwMaxHwMixingAllBuffers: ::DWORD,
+ dwMaxHwMixingStaticBuffers: ::DWORD,
+ dwMaxHwMixingStreamingBuffers: ::DWORD,
+ dwFreeHwMixingAllBuffers: ::DWORD,
+ dwFreeHwMixingStaticBuffers: ::DWORD,
+ dwFreeHwMixingStreamingBuffers: ::DWORD,
+ dwMaxHw3DAllBuffers: ::DWORD,
+ dwMaxHw3DStaticBuffers: ::DWORD,
+ dwMaxHw3DStreamingBuffers: ::DWORD,
+ dwFreeHw3DAllBuffers: ::DWORD,
+ dwFreeHw3DStaticBuffers: ::DWORD,
+ dwFreeHw3DStreamingBuffers: ::DWORD,
+ dwTotalHwMemBytes: ::DWORD,
+ dwFreeHwMemBytes: ::DWORD,
+ dwMaxContigFreeHwMemBytes: ::DWORD,
+ dwUnlockTransferRateHwBuffers: ::DWORD,
+ dwPlayCpuOverheadSwBuffers: ::DWORD,
+ dwReserved1: ::DWORD,
+ dwReserved2: ::DWORD,
+}}
+pub type LPDSCAPS = *mut DSCAPS;
+STRUCT!{struct DSBCAPS {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ dwBufferBytes: ::DWORD,
+ dwUnlockTransferRate: ::DWORD,
+ dwPlayCpuOverhead: ::DWORD,
+}}
+pub type LPDSBCAPS = *mut DSBCAPS;
+STRUCT!{struct DSBUFFERDESC {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ dwBufferBytes: ::DWORD,
+ dwReserved: ::DWORD,
+ lpwfxFormat: ::LPWAVEFORMATEX,
+ guid3DAlgorithm: ::GUID,
+}}
+pub type LPCDSBUFFERDESC = *const DSBUFFERDESC;
+RIDL!(
+interface IDirectSoundBuffer(IDirectSoundBufferVtbl): IUnknown(IUnknownVtbl) {
+ fn GetCaps(&mut self, pDSBufferCaps: ::LPDSBCAPS) -> ::HRESULT,
+ fn GetCurrentPosition(
+ &mut self, pdwCurrentPlayCursor: ::LPDWORD, pdwCurrentWriteCursor: ::LPDWORD
+ ) -> ::HRESULT,
+ fn GetFormat(
+ &mut self, pwfxFormat: ::LPWAVEFORMATEX, dwSizeAllocated: ::DWORD,
+ pdwSizeWritten: ::LPDWORD
+ ) -> ::HRESULT,
+ fn GetVolume(&mut self, plVolume: ::LPLONG) -> ::HRESULT,
+ fn GetPan(&mut self, plPan: ::LPLONG) -> ::HRESULT,
+ fn GetFrequency(&mut self, pdwFrequency: ::LPDWORD) -> ::HRESULT,
+ fn GetStatus(&mut self, pdwStatus: ::LPDWORD) -> ::HRESULT,
+ fn Initialize(
+ &mut self, pDirectSound: ::LPDIRECTSOUND, pcDSBufferDesc: ::LPCDSBUFFERDESC
+ ) -> ::HRESULT,
+ fn Lock(
+ &mut self, dwOffset: ::DWORD, dwBytes: ::DWORD, ppvAudioPtr1: *mut ::LPVOID,
+ pdwAudioBytes1: ::LPDWORD, ppvAudioPtr2: *mut ::LPVOID, pdwAudioBytes2: ::LPDWORD,
+ dwFlags: ::DWORD
+ ) -> ::HRESULT,
+ fn Play(&mut self, dwReserved1: ::DWORD, dwPriority: ::DWORD, dwFlags: ::DWORD) -> ::HRESULT,
+ fn SetCurrentPosition(&mut self, dwNewPosition: ::DWORD) -> ::HRESULT,
+ fn SetFormat(&mut self, pcfxFormat: ::LPCWAVEFORMATEX) -> ::HRESULT,
+ fn SetVolume(&mut self, lVolume: ::LONG) -> ::HRESULT,
+ fn SetPan(&mut self, lPan: ::LONG) -> ::HRESULT,
+ fn SetFrequency(&mut self, dwFrequency: ::DWORD) -> ::HRESULT,
+ fn Stop(&mut self) -> ::HRESULT,
+ fn Unlock(
+ &mut self, pvAudioPtr1: ::LPVOID, dwAudioBytes1: ::DWORD, pvAudioPtr2: ::LPVOID,
+ dwAudioBytes2: ::DWORD
+ ) -> ::HRESULT,
+ fn Restore(&mut self) -> ::HRESULT
+}
+);
+pub type LPDIRECTSOUNDBUFFER = *mut IDirectSoundBuffer;
+RIDL!(
+interface IDirectSound(IDirectSoundVtbl): IUnknown(IUnknownVtbl)
+{
+ fn CreateSoundBuffer(
+ &mut self, pcDSBufferDesc: ::LPCDSBUFFERDESC, ppDSBuffer: *mut ::LPDIRECTSOUNDBUFFER,
+ pUnkOuter: ::LPUNKNOWN
+ ) -> ::HRESULT,
+ fn GetCaps(&mut self, pDSCaps: ::LPDSCAPS) -> ::HRESULT,
+ fn DuplicateSoundBuffer(
+ &mut self, pDSBufferOriginal: LPDIRECTSOUNDBUFFER,
+ ppDSBufferDuplicate: *mut ::LPDIRECTSOUNDBUFFER
+ ) -> ::HRESULT,
+ fn SetCooperativeLevel(&mut self, hWnd: ::HWND, dwLevel: ::DWORD) -> ::HRESULT,
+ fn Compact(&mut self) -> ::HRESULT,
+ fn GetSpeakerConfig(&mut self, pdwSpeakerConfig: ::LPDWORD) -> ::HRESULT,
+ fn SetSpeakerConfig(&mut self, dwSpeakerConfig: ::DWORD) -> ::HRESULT,
+ fn Initialize(&mut self, pcGuidDevice: ::LPCGUID) -> ::HRESULT
+}
+);
+pub type LPDIRECTSOUND = *mut IDirectSound;
+pub const DS_OK: ::HRESULT = ::S_OK;
+pub const DSERR_GENERIC: ::HRESULT = ::E_FAIL;
+pub const DSSCL_NORMAL: ::DWORD = 0x00000001;
+pub const DSSCL_PRIORITY: ::DWORD = 0x00000002;
+pub const DSSCL_EXCLUSIVE: ::DWORD = 0x00000003;
+pub const DSSCL_WRITEPRIMARY: ::DWORD = 0x00000004;
+pub const DSBCAPS_PRIMARYBUFFER: ::DWORD = 0x00000001;
+pub const DSBCAPS_STATIC: ::DWORD = 0x00000002;
+pub const DSBCAPS_LOCHARDWARE: ::DWORD = 0x00000004;
+pub const DSBCAPS_LOCSOFTWARE: ::DWORD = 0x00000008;
+pub const DSBCAPS_CTRL3D: ::DWORD = 0x00000010;
+pub const DSBCAPS_CTRLFREQUENCY: ::DWORD = 0x00000020;
+pub const DSBCAPS_CTRLPAN: ::DWORD = 0x00000040;
+pub const DSBCAPS_CTRLVOLUME: ::DWORD = 0x00000080;
+pub const DSBCAPS_CTRLPOSITIONNOTIFY: ::DWORD = 0x00000100;
+pub const DSBCAPS_CTRLFX: ::DWORD = 0x00000200;
+pub const DSBCAPS_STICKYFOCUS: ::DWORD = 0x00004000;
+pub const DSBCAPS_GLOBALFOCUS: ::DWORD = 0x00008000;
+pub const DSBCAPS_GETCURRENTPOSITION2: ::DWORD = 0x00010000;
+pub const DSBCAPS_MUTE3DATMAXDISTANCE: ::DWORD = 0x00020000;
+pub const DSBCAPS_LOCDEFER: ::DWORD = 0x00040000;
+pub const DSBCAPS_TRUEPLAYPOSITION: ::DWORD = 0x00080000;
+pub const DSBPLAY_LOOPING: ::DWORD = 0x00000001;
+pub const DSBPLAY_LOCHARDWARE: ::DWORD = 0x00000002;
+pub const DSBPLAY_LOCSOFTWARE: ::DWORD = 0x00000004;
+pub const DSBPLAY_TERMINATEBY_TIME: ::DWORD = 0x00000008;
+pub const DSBPLAY_TERMINATEBY_DISTANCE: ::DWORD = 0x000000010;
+pub const DSBPLAY_TERMINATEBY_PRIORITY: ::DWORD = 0x000000020;
diff --git a/third_party/rust/winapi-0.2.8/src/dsrole.rs b/third_party/rust/winapi-0.2.8/src/dsrole.rs
new file mode 100644
index 0000000000..f9cf81c892
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dsrole.rs
@@ -0,0 +1,50 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Contains public interfaces to query the network roles of workstations, servers, and DCs
+ENUM!{enum DSROLE_MACHINE_ROLE {
+ DsRole_RoleStandaloneWorkstation,
+ DsRole_RoleMemberWorkstation,
+ DsRole_RoleStandaloneServer,
+ DsRole_RoleMemberServer,
+ DsRole_RoleBackupDomainController,
+ DsRole_RolePrimaryDomainController,
+}}
+ENUM!{enum DSROLE_SERVER_STATE {
+ DsRoleServerUnknown = 0,
+ DsRoleServerPrimary,
+ DsRoleServerBackup,
+}}
+pub type PDSROLE_SERVER_STATE = *mut DSROLE_SERVER_STATE;
+ENUM!{enum DSROLE_PRIMARY_DOMAIN_INFO_LEVEL {
+ DsRolePrimaryDomainInfoBasic = 1,
+ DsRoleUpgradeStatus,
+ DsRoleOperationState,
+}}
+pub const DSROLE_PRIMARY_DS_RUNNING: ::ULONG = 0x00000001;
+pub const DSROLE_PRIMARY_DS_MIXED_MODE: ::ULONG = 0x00000002;
+pub const DSROLE_UPGRADE_IN_PROGRESS: ::ULONG = 0x00000004;
+pub const DSROLE_PRIMARY_DS_READONLY: ::ULONG = 0x00000008;
+pub const DSROLE_PRIMARY_DOMAIN_GUID_PRESENT: ::ULONG = 0x01000000;
+STRUCT!{struct DSROLE_PRIMARY_DOMAIN_INFO_BASIC {
+ MachineRole: DSROLE_MACHINE_ROLE,
+ Flags: ::ULONG,
+ DomainNameFlat: ::LPWSTR,
+ DomainNameDns: ::LPWSTR,
+ DomainForestName: ::LPWSTR,
+ DomainGuid: ::GUID,
+}}
+pub type PDSROLE_PRIMARY_DOMAIN_INFO_BASIC = *mut DSROLE_PRIMARY_DOMAIN_INFO_BASIC;
+STRUCT!{struct DSROLE_UPGRADE_STATUS_INFO {
+ OperationState: ::ULONG,
+ PreviousServerState: DSROLE_SERVER_STATE,
+}}
+pub type PDSROLE_UPGRADE_STATUS_INFO = *mut DSROLE_UPGRADE_STATUS_INFO;
+ENUM!{enum DSROLE_OPERATION_STATE {
+ DsRoleOperationIdle = 0,
+ DsRoleOperationActive,
+ DsRoleOperationNeedReboot,
+}}
+STRUCT!{struct DSROLE_OPERATION_STATE_INFO {
+ OperationState: DSROLE_OPERATION_STATE,
+}}
+pub type PDSROLE_OPERATION_STATE_INFO = *mut DSROLE_OPERATION_STATE_INFO;
diff --git a/third_party/rust/winapi-0.2.8/src/dwmapi.rs b/third_party/rust/winapi-0.2.8/src/dwmapi.rs
new file mode 100644
index 0000000000..f95e8f1d70
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dwmapi.rs
@@ -0,0 +1,9 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Procedure declarations, constant definitions, and macros for the NLS component.
+STRUCT!{struct DWM_BLURBEHIND {
+ dwFlags: ::DWORD,
+ fEnable: ::BOOL,
+ hRgnBlur: ::HRGN,
+ fTransitionOnMaximized: ::BOOL,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/dwrite.rs b/third_party/rust/winapi-0.2.8/src/dwrite.rs
new file mode 100644
index 0000000000..09bbf0d935
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dwrite.rs
@@ -0,0 +1,1038 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! DirectX Typography Services public API definitions.
+ENUM!{enum DWRITE_FONT_FILE_TYPE {
+ DWRITE_FONT_FILE_TYPE_UNKNOWN,
+ DWRITE_FONT_FILE_TYPE_CFF,
+ DWRITE_FONT_FILE_TYPE_TRUETYPE,
+ DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION,
+ DWRITE_FONT_FILE_TYPE_TYPE1_PFM,
+ DWRITE_FONT_FILE_TYPE_TYPE1_PFB,
+ DWRITE_FONT_FILE_TYPE_VECTOR,
+ DWRITE_FONT_FILE_TYPE_BITMAP,
+}}
+ENUM!{enum DWRITE_FONT_FACE_TYPE {
+ DWRITE_FONT_FACE_TYPE_CFF,
+ DWRITE_FONT_FACE_TYPE_TRUETYPE,
+ DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION,
+ DWRITE_FONT_FACE_TYPE_TYPE1,
+ DWRITE_FONT_FACE_TYPE_VECTOR,
+ DWRITE_FONT_FACE_TYPE_BITMAP,
+ DWRITE_FONT_FACE_TYPE_UNKNOWN,
+ DWRITE_FONT_FACE_TYPE_RAW_CFF,
+}}
+FLAGS!{enum DWRITE_FONT_SIMULATIONS {
+ DWRITE_FONT_SIMULATIONS_NONE = 0x0000,
+ DWRITE_FONT_SIMULATIONS_BOLD = 0x0001,
+ DWRITE_FONT_SIMULATIONS_OBLIQUE = 0x0002,
+}}
+ENUM!{enum DWRITE_FONT_WEIGHT {
+ DWRITE_FONT_WEIGHT_THIN = 100,
+ DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200,
+ DWRITE_FONT_WEIGHT_ULTRA_LIGHT = 200,
+ DWRITE_FONT_WEIGHT_LIGHT = 300,
+ DWRITE_FONT_WEIGHT_SEMI_LIGHT = 350,
+ DWRITE_FONT_WEIGHT_NORMAL = 400,
+ DWRITE_FONT_WEIGHT_REGULAR = 400,
+ DWRITE_FONT_WEIGHT_MEDIUM = 500,
+ DWRITE_FONT_WEIGHT_DEMI_BOLD = 600,
+ DWRITE_FONT_WEIGHT_SEMI_BOLD = 600,
+ DWRITE_FONT_WEIGHT_BOLD = 700,
+ DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800,
+ DWRITE_FONT_WEIGHT_ULTRA_BOLD = 800,
+ DWRITE_FONT_WEIGHT_BLACK = 900,
+ DWRITE_FONT_WEIGHT_HEAVY = 900,
+ DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950,
+ DWRITE_FONT_WEIGHT_ULTRA_BLACK = 950,
+}}
+ENUM!{enum DWRITE_FONT_STRETCH {
+ DWRITE_FONT_STRETCH_UNDEFINED = 0,
+ DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1,
+ DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2,
+ DWRITE_FONT_STRETCH_CONDENSED = 3,
+ DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4,
+ DWRITE_FONT_STRETCH_NORMAL = 5,
+ DWRITE_FONT_STRETCH_MEDIUM = 5,
+ DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6,
+ DWRITE_FONT_STRETCH_EXPANDED = 7,
+ DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8,
+ DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9,
+}}
+ENUM!{enum DWRITE_FONT_STYLE {
+ DWRITE_FONT_STYLE_NORMAL,
+ DWRITE_FONT_STYLE_OBLIQUE,
+ DWRITE_FONT_STYLE_ITALIC,
+}}
+ENUM!{enum DWRITE_INFORMATIONAL_STRING_ID {
+ DWRITE_INFORMATIONAL_STRING_NONE,
+ DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE,
+ DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS,
+ DWRITE_INFORMATIONAL_STRING_TRADEMARK,
+ DWRITE_INFORMATIONAL_STRING_MANUFACTURER,
+ DWRITE_INFORMATIONAL_STRING_DESIGNER,
+ DWRITE_INFORMATIONAL_STRING_DESIGNER_URL,
+ DWRITE_INFORMATIONAL_STRING_DESCRIPTION,
+ DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL,
+ DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION,
+ DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL,
+ DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES,
+ DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES,
+ DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES,
+ DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES,
+ DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT,
+ DWRITE_INFORMATIONAL_STRING_FULL_NAME,
+ DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME,
+ DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME,
+ DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAME,
+ DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG,
+ DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG,
+}}
+STRUCT!{struct DWRITE_FONT_METRICS {
+ designUnitsPerEm: ::UINT16,
+ ascent: ::UINT16,
+ descent: ::UINT16,
+ lineGap: ::INT16,
+ capHeight: ::UINT16,
+ xHeight: ::UINT16,
+ underlinePosition: ::INT16,
+ underlineThickness: ::UINT16,
+ strikethroughPosition: ::INT16,
+ strikethroughThickness: ::UINT16,
+}}
+STRUCT!{struct DWRITE_GLYPH_METRICS {
+ leftSideBearing: ::INT32,
+ advanceWidth: ::UINT32,
+ rightSideBearing: ::INT32,
+ topSideBearing: ::INT32,
+ advanceHeight: ::UINT32,
+ bottomSideBearing: ::INT32,
+ verticalOriginY: ::INT32,
+}}
+STRUCT!{struct DWRITE_GLYPH_OFFSET {
+ advanceOffset: ::FLOAT,
+ ascenderOffset: ::FLOAT,
+}}
+ENUM!{enum DWRITE_FACTORY_TYPE {
+ DWRITE_FACTORY_TYPE_SHARED,
+ DWRITE_FACTORY_TYPE_ISOLATED,
+}}
+#[inline]
+pub fn DWRITE_MAKE_OPENTYPE_TAG(a: u8, b: u8, c: u8, d: u8) -> u32 {
+ ((d as u32) << 24) | ((c as u32) << 16) | ((b as u32) << 8) | (a as u32)
+}
+RIDL!{interface IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateStreamFromKey(
+ &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
+ fontFileStream: *mut *mut IDWriteFontFileStream
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteLocalFontFileLoader(IDWriteLocalFontFileLoaderVtbl):
+ IDWriteFontFileLoader(IDWriteFontFileLoaderVtbl) {
+ fn GetFilePathLengthFromKey(
+ &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
+ filePathLength: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn GetFilePathFromKey(
+ &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
+ filePath: *mut ::WCHAR,
+ filePathSize: ::UINT32
+ ) -> ::HRESULT,
+ fn GetLastWriteTimeFromKey(
+ &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
+ lastWriteTime: *mut ::FILETIME
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontFileStream(IDWriteFontFileStreamVtbl): IUnknown(IUnknownVtbl) {
+ fn ReadFileFragment(
+ &mut self, fragmentStart: *mut *const ::c_void, fileOffset: ::UINT64,
+ fragmentSize: ::UINT64, fragmentContext: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn ReleaseFileFragment(&mut self, fragmentContext: *mut ::c_void) -> (),
+ fn GetFileSize(&mut self, fileSize: *mut ::UINT64) -> ::HRESULT,
+ fn GetLastWriteTime(&mut self, lastWriteTime: *mut ::UINT64) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontFile(IDWriteFontFileVtbl): IUnknown(IUnknownVtbl) {
+ fn GetReferenceKey(
+ &mut self, fontFileReferenceKey: *mut *const ::c_void,
+ fontFileReferenceKeySize: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn GetLoader(&mut self, fontFileLoader: *mut *mut IDWriteFontFileLoader) -> ::HRESULT,
+ fn Analyze(
+ &mut self, isSupportedFontType: *mut ::BOOL, fontFileType: *mut DWRITE_FONT_FILE_TYPE,
+ fontFaceType: *mut DWRITE_FONT_FACE_TYPE, numberOfFaces: *mut ::UINT32
+ ) -> ::HRESULT
+}}
+ENUM!{enum DWRITE_PIXEL_GEOMETRY {
+ DWRITE_PIXEL_GEOMETRY_FLAT,
+ DWRITE_PIXEL_GEOMETRY_RGB,
+ DWRITE_PIXEL_GEOMETRY_BGR,
+}}
+ENUM!{enum DWRITE_RENDERING_MODE {
+ DWRITE_RENDERING_MODE_DEFAULT,
+ DWRITE_RENDERING_MODE_ALIASED,
+ DWRITE_RENDERING_MODE_GDI_CLASSIC,
+ DWRITE_RENDERING_MODE_GDI_NATURAL,
+ DWRITE_RENDERING_MODE_NATURAL,
+ DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC,
+ DWRITE_RENDERING_MODE_OUTLINE,
+ DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC.0,
+ DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL.0,
+ DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = DWRITE_RENDERING_MODE_NATURAL.0,
+ DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC.0,
+}}
+STRUCT!{struct DWRITE_MATRIX {
+ m11: ::FLOAT,
+ m12: ::FLOAT,
+ m21: ::FLOAT,
+ m22: ::FLOAT,
+ dx: ::FLOAT,
+ dy: ::FLOAT,
+}}
+RIDL!{interface IDWriteRenderingParams(IDWriteRenderingParamsVtbl): IUnknown(IUnknownVtbl) {
+ fn GetGamma(&mut self) -> ::FLOAT,
+ fn GetEnhancedContrast(&mut self) -> ::FLOAT,
+ fn GetClearTypeLevel(&mut self) -> ::FLOAT,
+ fn GetPixelGeometry(&mut self) -> DWRITE_PIXEL_GEOMETRY,
+ fn GetRenderingMode(&mut self) -> DWRITE_RENDERING_MODE
+}}
+pub type IDWriteGeometrySink = ::ID2D1SimplifiedGeometrySink;
+RIDL!{interface IDWriteFontFace(IDWriteFontFaceVtbl): IUnknown(IUnknownVtbl) {
+ fn GetType(&mut self) -> DWRITE_FONT_FACE_TYPE,
+ fn GetFiles(
+ &mut self, numberOfFiles: *mut ::UINT32, fontFiles: *mut *mut IDWriteFontFile
+ ) -> ::HRESULT,
+ fn GetIndex(&mut self) -> ::UINT32,
+ fn GetSimulations(&mut self) -> DWRITE_FONT_SIMULATIONS,
+ fn IsSymbolFont(&mut self) -> ::BOOL,
+ fn GetMetrics(&mut self, fontFaceMetrics: *mut DWRITE_FONT_METRICS) -> (),
+ fn GetGlyphCount(&mut self) -> ::UINT16,
+ fn GetDesignGlyphMetrics(
+ &mut self, glyphIndices: *const ::UINT16, glyphCount: ::UINT32,
+ glyphMetrics: *mut DWRITE_GLYPH_METRICS, isSideways: ::BOOL
+ ) -> ::HRESULT,
+ fn GetGlyphIndices(
+ &mut self, codePoints: *const ::UINT32, codePointCount: ::UINT32,
+ glyphIndices: *mut ::UINT16
+ ) -> ::HRESULT,
+ fn TryGetFontTable(
+ &mut self, openTypeTableTag: ::UINT32, tableData: *mut *const ::c_void,
+ tableSize: *mut ::UINT32, tableContext: *mut *mut ::c_void, exists: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn ReleaseFontTable(
+ &mut self, tableContext: *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetGlyphRunOutline(
+ &mut self, emSize: ::FLOAT, glyphIndices: *const ::UINT16, glyphAdvances: *const ::FLOAT,
+ glyphOffsets: *const DWRITE_GLYPH_OFFSET, glyphCount: ::UINT32, isSideways: ::BOOL,
+ isRightToLeft: ::BOOL, geometrySink: *mut IDWriteGeometrySink
+ ) -> ::HRESULT,
+ fn GetRecommendedRenderingMode(
+ &mut self, emSize: ::FLOAT, pixelsPerDip: ::FLOAT, measuringMode: ::DWRITE_MEASURING_MODE,
+ renderingParams: *mut IDWriteRenderingParams, renderingMode: *mut DWRITE_RENDERING_MODE
+ ) -> ::HRESULT,
+ fn GetGdiCompatibleMetrics(
+ &mut self, emSize: ::FLOAT, pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX,
+ fontFaceMetrics: *mut DWRITE_FONT_METRICS
+ ) -> ::HRESULT,
+ fn GetGdiCompatibleGlyphMetrics(
+ &mut self, enSize: ::FLOAT, pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX,
+ useGdiNatrual: ::BOOL, glyphIndices: *const ::UINT16, glyphCount: ::UINT32,
+ glyphMetrics: *mut DWRITE_GLYPH_METRICS, isSideways: ::BOOL
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontCollectionLoader(IDWriteFontCollectionLoaderVtbl):
+ IUnknown(IUnknownVtbl) {
+ fn CreateEnumeratorFromKey(
+ &mut self, factory: *mut IDWriteFactory, collectionKey: *const ::c_void,
+ collectionKeySize: ::UINT32, fontFileEnumerator: *mut *mut IDWriteFontFileEnumerator
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontFileEnumerator(IDWriteFontFileEnumeratorVtbl): IUnknown(IUnknownVtbl) {
+ fn MoveNext(&mut self, hasCurrentFile: *mut ::BOOL) -> ::HRESULT,
+ fn GetCurrentFontFile(&mut self, fontFile: *mut *mut IDWriteFontFile) -> ::HRESULT
+}}
+RIDL!{interface IDWriteLocalizedStrings(IDWriteLocalizedStringsVtbl): IUnknown(IUnknownVtbl) {
+ fn GetCount(&mut self) -> ::UINT32,
+ fn FindLocaleName(
+ &mut self, localeName: *const ::WCHAR, index: *mut ::UINT32, exists: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn GetLocaleNameLength(&mut self, index: ::UINT32, length: *mut ::UINT32) -> ::HRESULT,
+ fn GetLocaleName(
+ &mut self, index: ::UINT32, localeName: *mut ::WCHAR, size: ::UINT32
+ ) -> ::HRESULT,
+ fn GetStringLength(&mut self, index: ::UINT32, length: *mut ::UINT32) -> ::HRESULT,
+ fn GetString(
+ &mut self, index: ::UINT32, stringBuffer: *mut ::WCHAR, size: ::UINT32
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontCollection(IDWriteFontCollectionVtbl): IUnknown(IUnknownVtbl) {
+ fn GetFontFamilyCount(&mut self) -> ::UINT32,
+ fn GetFontFamily(
+ &mut self, index: ::UINT32, fontFamily: *mut *mut IDWriteFontFamily
+ ) -> ::HRESULT,
+ fn FindFamilyName(
+ &mut self, familyName: *const ::WCHAR, index: *mut ::UINT32, exists: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn GetFontFromFontFace(
+ &mut self, fontFace: *mut IDWriteFontFace, font: *mut *mut IDWriteFont
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontList(IDWriteFontListVtbl): IUnknown(IUnknownVtbl) {
+ fn GetFontCollection(&mut self, fontCollection: *mut *mut IDWriteFontCollection) -> ::HRESULT,
+ fn GetFontCount(&mut self) -> ::UINT32,
+ fn GetFont(&mut self, index: ::UINT32, font: *mut *mut IDWriteFont) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFontFamily(IDWriteFontFamilyVtbl): IDWriteFontList(IDWriteFontListVtbl) {
+ fn GetFamilyNames(&mut self, names: *mut *mut IDWriteLocalizedStrings) -> ::HRESULT,
+ fn GetFirstMatchingFont(
+ &mut self, weight: DWRITE_FONT_WEIGHT, stretch: DWRITE_FONT_STRETCH,
+ style: DWRITE_FONT_STYLE, matchingFont: *mut *mut IDWriteFont
+ ) -> ::HRESULT,
+ fn GetMatchingFonts(
+ &mut self, weight: DWRITE_FONT_WEIGHT, stretch: DWRITE_FONT_STRETCH,
+ style: DWRITE_FONT_STYLE, matchingFonts: *mut *mut IDWriteFontList
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFont(IDWriteFontVtbl): IUnknown(IUnknownVtbl) {
+ fn GetFontFamily(&mut self, fontFamily: *mut *mut IDWriteFontFamily) -> ::HRESULT,
+ fn GetWeight(&mut self) -> DWRITE_FONT_WEIGHT,
+ fn GetStretch(&mut self) -> DWRITE_FONT_STRETCH,
+ fn GetStyle(&mut self) -> DWRITE_FONT_STYLE,
+ fn IsSymbolFont(&mut self) -> ::BOOL,
+ fn GetFaceNames(&mut self, names: *mut *mut IDWriteLocalizedStrings) -> ::HRESULT,
+ fn GetInformationalStrings(
+ &mut self, informationalStringId: DWRITE_INFORMATIONAL_STRING_ID,
+ informationalStrings: *mut *mut IDWriteLocalizedStrings, exists: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn GetSimulations(&mut self) -> DWRITE_FONT_SIMULATIONS,
+ fn GetMetrics(&mut self, fontMetrics: *mut DWRITE_FONT_METRICS) -> (),
+ fn HasCharacter(&mut self, unicodeValue: ::UINT32, exists: *mut ::BOOL) -> ::HRESULT,
+ fn CreateFontFace(&mut self, fontFace: *mut *mut IDWriteFontFace) -> ::HRESULT
+}}
+ENUM!{enum DWRITE_READING_DIRECTION {
+ DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0,
+ DWRITE_READING_DIRECTION_RIGHT_TO_LEFT = 1,
+ DWRITE_READING_DIRECTION_TOP_TO_BOTTOM = 2,
+ DWRITE_READING_DIRECTION_BOTTOM_TO_TOP = 3,
+}}
+ENUM!{enum DWRITE_FLOW_DIRECTION {
+ DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM = 0,
+ DWRITE_FLOW_DIRECTION_BOTTOM_TO_TOP = 1,
+ DWRITE_FLOW_DIRECTION_LEFT_TO_RIGHT = 2,
+ DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT = 3,
+}}
+ENUM!{enum DWRITE_TEXT_ALIGNMENT {
+ DWRITE_TEXT_ALIGNMENT_LEADING,
+ DWRITE_TEXT_ALIGNMENT_TRAILING,
+ DWRITE_TEXT_ALIGNMENT_CENTER,
+ DWRITE_TEXT_ALIGNMENT_JUSTIFIED,
+}}
+ENUM!{enum DWRITE_PARAGRAPH_ALIGNMENT {
+ DWRITE_PARAGRAPH_ALIGNMENT_NEAR,
+ DWRITE_PARAGRAPH_ALIGNMENT_FAR,
+ DWRITE_PARAGRAPH_ALIGNMENT_CENTER,
+}}
+ENUM!{enum DWRITE_WORD_WRAPPING {
+ DWRITE_WORD_WRAPPING_WRAP = 0,
+ DWRITE_WORD_WRAPPING_NO_WRAP = 1,
+ DWRITE_WORD_WRAPPING_EMERGENCY_BREAK = 2,
+ DWRITE_WORD_WRAPPING_WHOLE_WORD = 3,
+ DWRITE_WORD_WRAPPING_CHARACTER = 4,
+}}
+ENUM!{enum DWRITE_LINE_SPACING_METHOD {
+ DWRITE_LINE_SPACING_METHOD_DEFAULT,
+ DWRITE_LINE_SPACING_METHOD_UNIFORM,
+ DWRITE_LINE_SPACING_METHOD_PROPORTIONAL,
+}}
+ENUM!{enum DWRITE_TRIMMING_GRANULARITY {
+ DWRITE_TRIMMING_GRANULARITY_NONE,
+ DWRITE_TRIMMING_GRANULARITY_CHARACTER,
+ DWRITE_TRIMMING_GRANULARITY_WORD,
+}}
+ENUM!{enum DWRITE_FONT_FEATURE_TAG {
+ DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS = 0x63726661, // 'afrc'
+ DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS = 0x63703263, // 'c2pc'
+ DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS = 0x63733263, // 'c2sc'
+ DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES = 0x746c6163, // 'calt'
+ DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS = 0x65736163, // 'case'
+ DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363, // 'ccmp'
+ DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES = 0x67696c63, // 'clig'
+ DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING = 0x70737063, // 'cpsp'
+ DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH = 0x68777363, // 'cswh'
+ DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING = 0x73727563, // 'curs'
+ DWRITE_FONT_FEATURE_TAG_DEFAULT = 0x746c6664, // 'dflt'
+ DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES = 0x67696c64, // 'dlig'
+ DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS = 0x74707865, // 'expt'
+ DWRITE_FONT_FEATURE_TAG_FRACTIONS = 0x63617266, // 'frac'
+ DWRITE_FONT_FEATURE_TAG_FULL_WIDTH = 0x64697766, // 'fwid'
+ DWRITE_FONT_FEATURE_TAG_HALF_FORMS = 0x666c6168, // 'half'
+ DWRITE_FONT_FEATURE_TAG_HALANT_FORMS = 0x6e6c6168, // 'haln'
+ DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH = 0x746c6168, // 'halt'
+ DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS = 0x74736968, // 'hist'
+ DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES = 0x616e6b68, // 'hkna'
+ DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES = 0x67696c68, // 'hlig'
+ DWRITE_FONT_FEATURE_TAG_HALF_WIDTH = 0x64697768, // 'hwid'
+ DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS = 0x6f6a6f68, // 'hojo'
+ DWRITE_FONT_FEATURE_TAG_JIS04_FORMS = 0x3430706a, // 'jp04'
+ DWRITE_FONT_FEATURE_TAG_JIS78_FORMS = 0x3837706a, // 'jp78'
+ DWRITE_FONT_FEATURE_TAG_JIS83_FORMS = 0x3338706a, // 'jp83'
+ DWRITE_FONT_FEATURE_TAG_JIS90_FORMS = 0x3039706a, // 'jp90'
+ DWRITE_FONT_FEATURE_TAG_KERNING = 0x6e72656b, // 'kern'
+ DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES = 0x6167696c, // 'liga'
+ DWRITE_FONT_FEATURE_TAG_LINING_FIGURES = 0x6d756e6c, // 'lnum'
+ DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS = 0x6c636f6c, // 'locl'
+ DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING = 0x6b72616d, // 'mark'
+ DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK = 0x6b72676d, // 'mgrk'
+ DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING = 0x6b6d6b6d, // 'mkmk'
+ DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS = 0x746c616e, // 'nalt'
+ DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS = 0x6b636c6e, // 'nlck'
+ DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES = 0x6d756e6f, // 'onum'
+ DWRITE_FONT_FEATURE_TAG_ORDINALS = 0x6e64726f, // 'ordn'
+ DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170, // 'palt'
+ DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS = 0x70616370, // 'pcap'
+ DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES = 0x6d756e70, // 'pnum'
+ DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS = 0x64697770, // 'pwid'
+ DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS = 0x64697771, // 'qwid'
+ DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES = 0x67696c72, // 'rlig'
+ DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS = 0x79627572, // 'ruby'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES = 0x746c6173, // 'salt'
+ DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS = 0x666e6973, // 'sinf'
+ DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS = 0x70636d73, // 'smcp'
+ DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS = 0x6c706d73, // 'smpl'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1 = 0x31307373, // 'ss01'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2 = 0x32307373, // 'ss02'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3 = 0x33307373, // 'ss03'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4 = 0x34307373, // 'ss04'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5 = 0x35307373, // 'ss05'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6 = 0x36307373, // 'ss06'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 = 0x37307373, // 'ss07'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8 = 0x38307373, // 'ss08'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9 = 0x39307373, // 'ss09'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10 = 0x30317373, // 'ss10'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11 = 0x31317373, // 'ss11'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12 = 0x32317373, // 'ss12'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13 = 0x33317373, // 'ss13'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14 = 0x34317373, // 'ss14'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15 = 0x35317373, // 'ss15'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16 = 0x36317373, // 'ss16'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17 = 0x37317373, // 'ss17'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18 = 0x38317373, // 'ss18'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19 = 0x39317373, // 'ss19'
+ DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20 = 0x30327373, // 'ss20'
+ DWRITE_FONT_FEATURE_TAG_SUBSCRIPT = 0x73627573, // 'subs'
+ DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT = 0x73707573, // 'sups'
+ DWRITE_FONT_FEATURE_TAG_SWASH = 0x68737773, // 'swsh'
+ DWRITE_FONT_FEATURE_TAG_TITLING = 0x6c746974, // 'titl'
+ DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS = 0x6d616e74, // 'tnam'
+ DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES = 0x6d756e74, // 'tnum'
+ DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS = 0x64617274, // 'trad'
+ DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS = 0x64697774, // 'twid'
+ DWRITE_FONT_FEATURE_TAG_UNICASE = 0x63696e75, // 'unic'
+ DWRITE_FONT_FEATURE_TAG_VERTICAL_WRITING = 0x74726576, // 'vert'
+ DWRITE_FONT_FEATURE_TAG_VERTICAL_ALTERNATES_AND_ROTATION = 0x32747276, // 'vrt2'
+ DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a, // 'zero'
+}}
+STRUCT!{struct DWRITE_TEXT_RANGE {
+ startPosition: ::UINT32,
+ length: ::UINT32,
+}}
+STRUCT!{struct DWRITE_FONT_FEATURE {
+ nameTag: DWRITE_FONT_FEATURE_TAG,
+ parameter: ::UINT32,
+}}
+STRUCT!{struct DWRITE_TYPOGRAPHIC_FEATURES {
+ features: *mut DWRITE_FONT_FEATURE,
+ featureCount: ::UINT32,
+}}
+STRUCT!{struct DWRITE_TRIMMING {
+ granularity: DWRITE_TRIMMING_GRANULARITY,
+ delimiter: ::UINT32,
+ delimiterCount: ::UINT32,
+}}
+RIDL!{interface IDWriteTextFormat(IDWriteTextFormatVtbl): IUnknown(IUnknownVtbl) {
+ fn SetTextAlignment(&mut self, textAlignment: DWRITE_TEXT_ALIGNMENT) -> ::HRESULT,
+ fn SetParagraphAlignment(
+ &mut self, paragraphAlignment: DWRITE_PARAGRAPH_ALIGNMENT
+ ) -> ::HRESULT,
+ fn SetWordWrapping(&mut self, wordWrapping: DWRITE_WORD_WRAPPING) -> ::HRESULT,
+ fn SetReadingDirection(&mut self, readingDirection: DWRITE_READING_DIRECTION) -> ::HRESULT,
+ fn SetFlowDirection(&mut self, flowDirection: DWRITE_FLOW_DIRECTION) -> ::HRESULT,
+ fn SetIncrementalTabStop(&mut self, incrementalTabStop: ::FLOAT) -> ::HRESULT,
+ fn SetTrimming(
+ &mut self, trimmingOptions: *const DWRITE_TRIMMING, trimmingSign: *mut IDWriteInlineObject
+ ) -> ::HRESULT,
+ fn SetLineSpacing(
+ &mut self, lineSpacingMethod: DWRITE_LINE_SPACING_METHOD, lineSpacing: ::FLOAT,
+ baseLine: ::FLOAT
+ ) -> ::HRESULT,
+ fn GetTextAlignment(&mut self) -> DWRITE_TEXT_ALIGNMENT,
+ fn GetParagraphAlignment(&mut self) -> DWRITE_PARAGRAPH_ALIGNMENT,
+ fn GetWordWrapping(&mut self) -> DWRITE_WORD_WRAPPING,
+ fn GetReadingDirection(&mut self) -> DWRITE_READING_DIRECTION,
+ fn GetFlowDirection(&mut self) -> DWRITE_FLOW_DIRECTION,
+ fn GetIncrementalTabStop(&mut self) -> ::FLOAT,
+ fn GetTrimming(
+ &mut self, trimmingOptions: *mut DWRITE_TRIMMING,
+ trimmingSign: *mut *mut IDWriteInlineObject
+ ) -> ::HRESULT,
+ fn GetLineSpacing(
+ &mut self, lineSpacingMethod: *mut DWRITE_LINE_SPACING_METHOD, lineSpacing: *mut ::FLOAT,
+ baseline: *mut ::FLOAT
+ ) -> ::HRESULT,
+ fn GetFontCollection(&mut self, fontCollection: *mut *mut IDWriteFontCollection) -> ::HRESULT,
+ fn GetFontFamilyNameLength(&mut self) -> ::UINT32,
+ fn GetFontFamilyName(&mut self, fontFamilyName: *mut ::WCHAR, nameSize: ::UINT32) -> ::HRESULT,
+ fn GetFontWeight(&mut self) -> DWRITE_FONT_WEIGHT,
+ fn GetFontStyle(&mut self) -> DWRITE_FONT_STYLE,
+ fn GetFontStretch(&mut self) -> DWRITE_FONT_STRETCH,
+ fn GetFontSize(&mut self) -> ::FLOAT,
+ fn GetLocaleNameLength(&mut self) -> ::UINT32,
+ fn GetLocaleName(&mut self, localeName: *mut ::WCHAR, nameSize: ::UINT32) -> ::HRESULT
+}}
+RIDL!{interface IDWriteTypography(IDWriteTypographyVtbl): IUnknown(IUnknownVtbl) {
+ fn AddFontFeature(&mut self, fontFeature: DWRITE_FONT_FEATURE) -> ::HRESULT,
+ fn GetFontFeatureCount(&mut self) -> ::UINT32,
+ fn GetFontFeature(
+ &mut self, fontFeatureIndex: ::UINT32, fontFeature: *mut DWRITE_FONT_FEATURE
+ ) -> ::HRESULT
+}}
+FLAGS!{enum DWRITE_SCRIPT_SHAPES {
+ DWRITE_SCRIPT_SHAPES_DEFAULT = 0,
+ DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1,
+}}
+STRUCT!{struct DWRITE_SCRIPT_ANALYSIS {
+ script: ::UINT16,
+ shapes: DWRITE_SCRIPT_SHAPES,
+}}
+ENUM!{enum DWRITE_BREAK_CONDITION {
+ DWRITE_BREAK_CONDITION_NEUTRAL,
+ DWRITE_BREAK_CONDITION_CAN_BREAK,
+ DWRITE_BREAK_CONDITION_MAY_NOT_BREAK,
+ DWRITE_BREAK_CONDITION_MUST_BREAK,
+}}
+STRUCT!{struct DWRITE_LINE_BREAKPOINT {
+ bit_fields: ::UINT8,
+}}
+BITFIELD!{DWRITE_LINE_BREAKPOINT bit_fields: ::UINT8 [
+ breakConditionBefore set_breakConditionBefore[0..2],
+ breakConditionAfter set_breakConditionAfter[2..4],
+ isWhitespace set_isWhitespace[4..5],
+ isSoftHyphen set_isSoftHyphen[5..6],
+ padding set_padding[6..8],
+]}
+ENUM!{enum DWRITE_NUMBER_SUBSTITUTION_METHOD {
+ DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE,
+ DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL,
+ DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE,
+ DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL,
+ DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL,
+}}
+RIDL!{interface IDWriteNumberSubstitution(IDWriteNumberSubstitutionVtbl): IUnknown(IUnknownVtbl) {
+}}
+STRUCT!{struct DWRITE_SHAPING_TEXT_PROPERTIES {
+ bit_fields: ::UINT16,
+}}
+BITFIELD!{DWRITE_SHAPING_TEXT_PROPERTIES bit_fields: ::UINT16 [
+ isShapedAlone set_isShapedAlone[0..1],
+ reserved set_reserved[1..16],
+]}
+STRUCT!{struct DWRITE_SHAPING_GLYPH_PROPERTIES {
+ bit_fields: ::UINT16,
+}}
+BITFIELD!{DWRITE_SHAPING_GLYPH_PROPERTIES bit_fields: ::UINT16 [
+ justification set_justification[0..4],
+ isClusterStart set_isClusterStart[4..5],
+ isDiacritic set_isDiacritic[5..6],
+ isZeroWidthSpace set_isZeroWidthSpace[6..7],
+ reserved set_reserved[7..16],
+]}
+RIDL!{interface IDWriteTextAnalysisSource(IDWriteTextAnalysisSourceVtbl): IUnknown(IUnknownVtbl) {
+ fn GetTextAtPosition(
+ &mut self, textPosition: ::UINT32, textString: *mut *const ::WCHAR,
+ textLength: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn GetTextBeforePosition(
+ &mut self, textPosition: ::UINT32, textString: *mut *const ::WCHAR,
+ textLength: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn GetParagraphReadingDirection(&mut self) -> DWRITE_READING_DIRECTION,
+ fn GetLocaleName(
+ &mut self, textPosition: ::UINT32, textLength: *mut ::UINT32,
+ localeName: *mut *const ::WCHAR
+ ) -> ::HRESULT,
+ fn GetNumberSubstitution(
+ &mut self, textPosition: ::UINT32, textLength: *mut ::UINT32,
+ numberSubstitution: *mut *mut IDWriteNumberSubstitution
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteTextAnalysisSink(IDWriteTextAnalysisSinkVtbl): IUnknown(IUnknownVtbl) {
+ fn SetScriptAnalysis(
+ &mut self, textPosition: ::UINT32, textLength: ::UINT32,
+ scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS
+ ) -> ::HRESULT,
+ fn SetLineBreakpoints(
+ &mut self, textPosition: ::UINT32, textLength: ::UINT32,
+ lineBreakpoints: *const DWRITE_LINE_BREAKPOINT
+ ) -> ::HRESULT,
+ fn SetBidiLevel(
+ &mut self, textPosition: ::UINT32, textLength: ::UINT32, explicitLevel: ::UINT8,
+ resolvedLevel: ::UINT8
+ ) -> ::HRESULT,
+ fn SetNumberSubstitution(
+ &mut self, textPosition: ::UINT32, textLength: ::UINT32,
+ numberSubstitution: *mut IDWriteNumberSubstitution
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteTextAnalyzer(IDWriteTextAnalyzerVtbl): IUnknown(IUnknownVtbl) {
+ fn AnalyzeScript(
+ &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
+ textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
+ ) -> ::HRESULT,
+ fn AnalyzeBidi(
+ &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
+ textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
+ ) -> ::HRESULT,
+ fn AnalyzeNumberSubstitution(
+ &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
+ textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
+ ) -> ::HRESULT,
+ fn AnalyzeLineBreakpoints(
+ &mut self, analysisSource: *mut IDWriteTextAnalysisSource, textPosition: ::UINT32,
+ textLength: ::UINT32, analysisSink: *mut IDWriteTextAnalysisSink
+ ) -> ::HRESULT,
+ fn GetGlyphs(
+ &mut self, textString: *const ::WCHAR, textLength: ::UINT32,
+ fontFace: *mut IDWriteFontFace, isSideways: ::BOOL, isRightToLeft: ::BOOL,
+ scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS, localeName: *const ::WCHAR,
+ numberSubstitution: *mut IDWriteNumberSubstitution,
+ features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES, featureRangeLengths: *const ::UINT32,
+ featureRanges: ::UINT32, maxGlyphCount: ::UINT32, clusterMap: *mut ::UINT16,
+ textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, glyphIndices: *mut ::UINT16,
+ glyphProps: *mut DWRITE_SHAPING_GLYPH_PROPERTIES, actualGlyphCount: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn GetGlyphPlacements(
+ &mut self, textString: *const ::WCHAR, clusterMap: *const ::UINT16,
+ textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, textLength: ::UINT32,
+ glyphIndices: *const ::UINT16, glyphProps: *const DWRITE_SHAPING_GLYPH_PROPERTIES,
+ glyphCount: ::UINT32, fontFace: *mut IDWriteFontFace, fontEmSize: ::FLOAT,
+ isSideways: ::BOOL, isRightToLeft: ::BOOL, scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS,
+ localeName: *const ::WCHAR, features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES,
+ featureRangeLengths: *const ::UINT32, featureRanges: ::UINT32, glyphAdvances: *mut ::FLOAT,
+ glyphOffsets: *mut DWRITE_GLYPH_OFFSET
+ ) -> ::HRESULT,
+ fn GetGdiCompatibleGlyphPlacements(
+ &mut self, textString: *const ::WCHAR, clusterMap: *const ::UINT16,
+ textProps: *mut DWRITE_SHAPING_TEXT_PROPERTIES, textLength: ::UINT32,
+ glyphIndices: *const ::UINT16, glyphProps: *const DWRITE_SHAPING_GLYPH_PROPERTIES,
+ glyphCount: ::UINT32, fontFace: *mut IDWriteFontFace, fontEmSize: ::FLOAT,
+ pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX, useGdiNatrual: ::BOOL,
+ isSideways: ::BOOL, isRightToLeft: ::BOOL, scriptAnalysis: *const DWRITE_SCRIPT_ANALYSIS,
+ localeName: *const ::WCHAR, features: *mut *const DWRITE_TYPOGRAPHIC_FEATURES,
+ featureRangeLengths: *const ::UINT32, featureRanges: ::UINT32, glyphAdvances: *mut ::FLOAT,
+ glyphOffsets: *mut DWRITE_GLYPH_OFFSET
+ ) -> ::HRESULT
+}}
+STRUCT!{struct DWRITE_GLYPH_RUN {
+ fontFace: *mut IDWriteFontFace,
+ fontEmSize: ::FLOAT,
+ glyphCount: ::UINT32,
+ glyphIndices: *const ::UINT16,
+ glyphAdvances: *const ::FLOAT,
+ glyphOffsets: *const DWRITE_GLYPH_OFFSET,
+ isSideways: ::BOOL,
+ bidiLevel: ::UINT32,
+}}
+STRUCT!{struct DWRITE_GLYPH_RUN_DESCRIPTION {
+ localeName: *const ::WCHAR,
+ string: *const ::WCHAR,
+ stringLength: ::UINT32,
+ clusterMap: *const ::UINT16,
+ textPosition: ::UINT32,
+}}
+STRUCT!{struct DWRITE_UNDERLINE {
+ width: ::FLOAT,
+ thickness: ::FLOAT,
+ offset: ::FLOAT,
+ runHeight: ::FLOAT,
+ readingDirection: DWRITE_READING_DIRECTION,
+ flowDirection: DWRITE_FLOW_DIRECTION,
+ localeName: *const ::WCHAR,
+ measuringMode: ::DWRITE_MEASURING_MODE,
+}}
+STRUCT!{struct DWRITE_STRIKETHROUGH {
+ width: ::FLOAT,
+ thickness: ::FLOAT,
+ offset: ::FLOAT,
+ readingDirection: DWRITE_READING_DIRECTION,
+ flowDirection: DWRITE_FLOW_DIRECTION,
+ localeName: *const ::WCHAR,
+ measuringMode: ::DWRITE_MEASURING_MODE,
+}}
+STRUCT!{struct DWRITE_LINE_METRICS {
+ length: ::UINT32,
+ trailingWhitespaceLength: ::UINT32,
+ newlineLength: ::UINT32,
+ height: ::FLOAT,
+ baseline: ::FLOAT,
+ isTrimmed: ::BOOL,
+}}
+STRUCT!{struct DWRITE_CLUSTER_METRICS {
+ width: ::FLOAT,
+ length: ::UINT16,
+ bit_fields: ::UINT16,
+}}
+BITFIELD!{DWRITE_CLUSTER_METRICS bit_fields: ::UINT16 [
+ canWrapLineAfter set_canWrapLineAfter[0..1],
+ isWhitespace set_isWhitespace[1..2],
+ isNewline set_isNewline[2..3],
+ isSoftHyphen set_isSoftHyphen[3..4],
+ isRightToLeft set_isRightToLeft[4..5],
+ padding set_padding[5..16],
+]}
+STRUCT!{struct DWRITE_TEXT_METRICS {
+ left: ::FLOAT,
+ top: ::FLOAT,
+ width: ::FLOAT,
+ widthIncludingTrailingWhitespace: ::FLOAT,
+ height: ::FLOAT,
+ layoutWidth: ::FLOAT,
+ layoutHeight: ::FLOAT,
+ maxBidiReorderingDepth: ::UINT32,
+ lineCount: ::UINT32,
+}}
+STRUCT!{struct DWRITE_INLINE_OBJECT_METRICS {
+ width: ::FLOAT,
+ height: ::FLOAT,
+ baseline: ::FLOAT,
+ supportsSideways: ::BOOL,
+}}
+STRUCT!{struct DWRITE_OVERHANG_METRICS {
+ left: ::FLOAT,
+ top: ::FLOAT,
+ right: ::FLOAT,
+ bottom: ::FLOAT,
+}}
+STRUCT!{struct DWRITE_HIT_TEST_METRICS {
+ textPosition: ::UINT32,
+ length: ::UINT32,
+ left: ::FLOAT,
+ top: ::FLOAT,
+ width: ::FLOAT,
+ height: ::FLOAT,
+ bidiLevel: ::UINT32,
+ isText: ::BOOL,
+ isTrimmed: ::BOOL,
+}}
+RIDL!{interface IDWriteInlineObject(IDWriteInlineObjectVtbl): IUnknown(IUnknownVtbl) {
+ fn Draw(
+ &mut self, clientDrawingContext: *mut ::c_void, renderer: *mut IDWriteTextRenderer,
+ originX: ::FLOAT, originY: ::FLOAT, isSideways: ::BOOL, isRightToLeft: ::BOOL,
+ clientDrawingEffect: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn GetMetrics(&mut self, metrics: *mut DWRITE_INLINE_OBJECT_METRICS) -> ::HRESULT,
+ fn GetOverhangMetrics(&mut self, overhangs: *mut DWRITE_OVERHANG_METRICS) -> ::HRESULT,
+ fn GetBreakConditions(
+ &mut self, breakConditionBefore: *mut DWRITE_BREAK_CONDITION,
+ breakConditionAfter: *mut DWRITE_BREAK_CONDITION
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWritePixelSnapping(IDWritePixelSnappingVtbl): IUnknown(IUnknownVtbl) {
+ fn IsPixelSnappingDisabled(
+ &mut self, clientDrawingContext: *mut ::c_void, isDisabled: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn GetCurrentTransform(
+ &mut self, clientDrawingContext: *mut ::c_void, transform: *mut DWRITE_MATRIX
+ ) -> ::HRESULT,
+ fn GetPixelsPerDip(
+ &mut self, clientDrawingContext: *mut ::c_void, pixelsPerDip: *mut ::FLOAT
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteTextRenderer(IDWriteTextRendererVtbl):
+ IDWritePixelSnapping(IDWritePixelSnappingVtbl) {
+ fn DrawGlyphRun(
+ &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
+ baselineOriginY: ::FLOAT, measuringMode: ::DWRITE_MEASURING_MODE,
+ glyphRun: *const DWRITE_GLYPH_RUN,
+ glyphRunDescription: *const DWRITE_GLYPH_RUN_DESCRIPTION,
+ clientDrawingEffect: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn DrawUnderline(
+ &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
+ baselineOriginY: ::FLOAT, underline: *const DWRITE_UNDERLINE,
+ clientDrawingEffect: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn DrawStrikethrough(
+ &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
+ baselineOriginY: ::FLOAT, strikethrough: *const DWRITE_STRIKETHROUGH,
+ clientDrawingEffect: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn DrawInlineObject(
+ &mut self, clientDrawingContext: *mut ::c_void, baselineOriginX: ::FLOAT,
+ baselineOriginY: ::FLOAT, inlineObject: *mut IDWriteInlineObject,
+ isSideways: ::BOOL, isRightToLeft: ::BOOL, clientDrawingEffect: *mut ::IUnknown
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteTextLayout(IDWriteTextLayoutVtbl):
+ IDWriteTextFormat(IDWriteTextFormatVtbl) {
+ fn SetMaxWidth(&mut self, maxWidth: ::FLOAT) -> ::HRESULT,
+ fn SetMaxHeight(&mut self, maxHeight: ::FLOAT) -> ::HRESULT,
+ fn SetFontCollection(
+ &mut self, fontCollection: *mut IDWriteFontCollection, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetFontFamilyName(
+ &mut self, fontFamilyName: *const ::WCHAR, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetFontWeight(
+ &mut self, fontWeight: DWRITE_FONT_WEIGHT, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetFontStyle(
+ &mut self, fontStyle: DWRITE_FONT_STYLE, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetFontStretch(
+ &mut self, fontStretch: DWRITE_FONT_STRETCH, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetFontSize(&mut self, fontSize: ::FLOAT, textRange: DWRITE_TEXT_RANGE) -> ::HRESULT,
+ fn SetUnderline(&mut self, hasUnderline: ::BOOL, textRange: DWRITE_TEXT_RANGE) -> ::HRESULT,
+ fn SetStrikethrough(
+ &mut self, hasStrikethrough: ::BOOL, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetDrawingEffect(
+ &mut self, drawingEffect: *mut ::IUnknown, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetInlineObject(
+ &mut self, inlineObject: *mut IDWriteInlineObject, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetTypography(
+ &mut self, typography: *mut IDWriteTypography, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn SetLocaleName(
+ &mut self, localeName: *const ::WCHAR, textRange: DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetMaxWidth(&mut self) -> ::FLOAT,
+ fn GetMaxHeight(&mut self) -> ::FLOAT,
+ fn GetFontCollection(
+ &mut self, currentPosition: ::UINT32, fontCollection: *mut *mut IDWriteFontCollection,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetFontFamilyNameLength(
+ &mut self, currentPosition: ::UINT32, nameLength: *mut ::UINT32,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetFontFamilyName(
+ &mut self, currentPosition: ::UINT32, fontFamilyName: *mut ::WCHAR,
+ nameSize: ::UINT32, textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetFontWeight(
+ &mut self, currentPosition: ::UINT32, fontWeight: *mut DWRITE_FONT_WEIGHT,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetFontStyle(
+ &mut self, currentPosition: ::UINT32, fontStyle: *mut DWRITE_FONT_STYLE,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetFontStretch(
+ &mut self, currentPosition: ::UINT32, fontStretch: *mut DWRITE_FONT_STRETCH,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetFontSize(
+ &mut self, currentPosition: ::UINT32, fontSize: *mut ::FLOAT,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetUnderline(
+ &mut self, currentPosition: ::UINT32, hasUnderline: *mut ::BOOL,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetStrikethrough(
+ &mut self, currentPosition: ::UINT32, hasStrikethrough: *mut ::BOOL,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetDrawingEffect(
+ &mut self, currentPosition: ::UINT32, drawingEffect: *mut *mut ::IUnknown,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetInlineObject(
+ &mut self, currentPosition: ::UINT32, inlineObject: *mut *mut IDWriteInlineObject,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetTypography(
+ &mut self, currentPosition: ::UINT32, typography: *mut *mut IDWriteTypography,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetLocaleNameLength(
+ &mut self, currentPosition: ::UINT32, nameLength: *mut ::UINT32,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn GetLocaleName(
+ &mut self, currentPosition: ::UINT32, localeName: *mut ::WCHAR, nameSize: ::UINT32,
+ textRange: *mut DWRITE_TEXT_RANGE
+ ) -> ::HRESULT,
+ fn Draw(
+ &mut self, clientDrawingContext: *mut ::c_void, renderer: *mut IDWriteTextRenderer,
+ originX: ::FLOAT, originY: ::FLOAT
+ ) -> ::HRESULT,
+ fn GetLineMetrics(
+ &mut self, lineMetrics: *mut DWRITE_LINE_METRICS, maxLineCount: ::UINT32,
+ actualLineCount: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn GetMetrics(&mut self, textMetrics: *mut DWRITE_TEXT_METRICS) -> ::HRESULT,
+ fn GetOverhangMetrics(&mut self, overhangs: *mut DWRITE_OVERHANG_METRICS) -> ::HRESULT,
+ fn GetClusterMetrics(
+ &mut self, clusterMetrics: *mut DWRITE_CLUSTER_METRICS, maxClusterCount: ::UINT32,
+ actualClusterCount: *mut ::UINT32
+ ) -> ::HRESULT,
+ fn DetermineMinWidth(&mut self, minWidth: *mut ::FLOAT) -> ::HRESULT,
+ fn HitTestPoint(
+ &mut self, pointX: ::FLOAT, pointY: ::FLOAT, isTrailingHit: *mut ::BOOL,
+ isInside: *mut ::BOOL, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS
+ ) -> ::HRESULT,
+ fn HitTestTextPosition(
+ &mut self, textPosition: ::UINT32, isTrailingHit: ::BOOL, pointX: *mut ::FLOAT,
+ pointY: *mut ::FLOAT, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS
+ ) -> ::HRESULT,
+ fn HitTestTextRange(
+ &mut self, textPosition: ::UINT32, textLength: ::UINT32, originX: ::FLOAT,
+ originY: ::FLOAT, hitTestMetrics: *mut DWRITE_HIT_TEST_METRICS,
+ maxHitTestMetricsCount: ::UINT32, actualHitTestMetricsCount: *mut ::UINT32
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl): IUnknown(IUnknownVtbl) {
+ fn DrawGlyphRun(
+ &mut self, baselineOriginX: ::FLOAT, baselineOriginY: ::FLOAT,
+ measuringMode: ::DWRITE_MEASURING_MODE, glyphRun: *const ::DWRITE_GLYPH_RUN,
+ renderingParams: *mut IDWriteRenderingParams, textColor: ::COLORREF,
+ blackBoxRect: *mut ::RECT
+ ) -> ::HRESULT,
+ fn GetMemoryDC(&mut self) -> ::HDC,
+ fn GetPixelsPerDip(&mut self) -> ::FLOAT,
+ fn SetPixelsPerDip(&mut self, pixelsPerDip: ::FLOAT) -> ::HRESULT,
+ fn GetCurrentTransform(&mut self, transform: *mut DWRITE_MATRIX) -> ::HRESULT,
+ fn SetCurrentTransform(&mut self, transform: *const DWRITE_MATRIX) -> ::HRESULT,
+ fn GetSize(&mut self, size: *mut ::SIZE) -> ::HRESULT,
+ fn Resize(&mut self, width: ::UINT32, height: ::UINT32) -> ::HRESULT
+}}
+RIDL!{interface IDWriteGdiInterop(IDWriteGdiInteropVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateFontFromLOGFONT(
+ &mut self, logFont: *const ::LOGFONTW, font: *mut *mut IDWriteFont
+ ) -> ::HRESULT,
+ fn ConvertFontToLOGFONT(
+ &mut self, font: *mut IDWriteFont, logFont: *mut ::LOGFONTW, isSystemFont: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn ConvertFontFaceToLOGFONT(
+ &mut self, font: *mut IDWriteFontFace, logFont: *mut ::LOGFONTW
+ ) -> ::HRESULT,
+ fn CreateFontFaceFromHdc(
+ &mut self, hdc: ::HDC, fontFace: *mut *mut IDWriteFontFace
+ ) -> ::HRESULT,
+ fn CreateBitmapRenderTarget(
+ &mut self, hdc: ::HDC, width: ::UINT32, height: ::UINT32,
+ renderTarget: *mut *mut IDWriteBitmapRenderTarget
+ ) -> ::HRESULT
+}}
+ENUM!{enum DWRITE_TEXTURE_TYPE {
+ DWRITE_TEXTURE_ALIASED_1x1 = 0,
+ DWRITE_TEXTURE_CLEARTYPE_3x1 = 1,
+}}
+pub const DWRITE_ALPHA_MAX: ::BYTE = 255;
+RIDL!{interface IDWriteGlyphRunAnalysis(IDWriteGlyphRunAnalysisVtbl): IUnknown(IUnknownVtbl) {
+ fn GetAlphaTextureBounds(
+ &mut self, textureType: DWRITE_TEXTURE_TYPE, textureBounds: *mut ::RECT
+ ) -> ::HRESULT,
+ fn CreateAlphaTexture(
+ &mut self, textureType: DWRITE_TEXTURE_TYPE, textureBounds: *const ::RECT,
+ alphaValues: *mut ::BYTE, bufferSize: ::UINT32
+ ) -> ::HRESULT,
+ fn GetAlphaBlendParams(
+ &mut self, renderingParams: *mut IDWriteRenderingParams, blendGamma: *mut ::FLOAT,
+ blendEnhancedContrast: *mut ::FLOAT, blendClearTypeLevel: *mut ::FLOAT
+ ) -> ::HRESULT
+}}
+RIDL!{interface IDWriteFactory(IDWriteFactoryVtbl): IUnknown(IUnknownVtbl) {
+ fn GetSystemFontCollection(
+ &mut self, fontCollection: *mut *mut IDWriteFontCollection, checkForUpdates: ::BOOL
+ ) -> ::HRESULT,
+ fn CreateCustomFontCollection(
+ &mut self, collectionLoader: *mut IDWriteFontCollectionLoader,
+ collectionKey: *const ::c_void, collectionKeySize: ::UINT32,
+ fontCollection: *mut *mut IDWriteFontCollection
+ ) -> ::HRESULT,
+ fn RegisterFontCollectionLoader(
+ &mut self, fontCollectionLoader: *mut IDWriteFontCollectionLoader
+ ) -> ::HRESULT,
+ fn UnregisterFontCollectionLoader(
+ &mut self, fontCollectionLoader: *mut IDWriteFontCollectionLoader
+ ) -> ::HRESULT,
+ fn CreateFontFileReference(
+ &mut self, filePath: *const ::WCHAR, lastWriteTime: *const ::FILETIME,
+ fontFile: *mut *mut IDWriteFontFile
+ ) -> ::HRESULT,
+ fn CreateCustomFontFileReference(
+ &mut self, fontFileReferenceKey: *const ::c_void, fontFileReferenceKeySize: ::UINT32,
+ fontFileLoader: *mut IDWriteFontFileLoader, fontFile: *mut *mut IDWriteFontFile
+ ) -> ::HRESULT,
+ fn CreateFontFace(
+ &mut self, fontFaceType: DWRITE_FONT_FACE_TYPE, numberOfFiles: ::UINT32,
+ fontFiles: *const *mut IDWriteFontFile, faceIndex: ::UINT32,
+ fontFaceSimulationFlags: DWRITE_FONT_SIMULATIONS, fontFace: *mut *mut IDWriteFontFace
+ ) -> ::HRESULT,
+ fn CreateRenderingParams(
+ &mut self, renderingParams: *mut *mut IDWriteRenderingParams
+ ) -> ::HRESULT,
+ fn CreateMonitorRenderingParams(
+ &mut self, monitor: ::HMONITOR, renderingParams: *mut *mut IDWriteRenderingParams
+ ) -> ::HRESULT,
+ fn CreateCustomRenderingParams(
+ &mut self, gamma: ::FLOAT, enhancedContrast: ::FLOAT, clearTypeLevel: ::FLOAT,
+ pixelGeometry: DWRITE_PIXEL_GEOMETRY, renderingMode: DWRITE_RENDERING_MODE,
+ renderingParams: *mut *mut IDWriteRenderingParams
+ ) -> ::HRESULT,
+ fn RegisterFontFileLoader(
+ &mut self, fontFileLoader: *mut IDWriteFontFileLoader
+ ) -> ::HRESULT,
+ fn UnregisterFontFileLoader(
+ &mut self, fontFileLoader: *mut IDWriteFontFileLoader
+ ) -> ::HRESULT,
+ fn CreateTextFormat(
+ &mut self, fontFamilyName: *const ::WCHAR, fontCollection: *mut IDWriteFontCollection,
+ fontWeight: DWRITE_FONT_WEIGHT, fontStyle: DWRITE_FONT_STYLE,
+ fontStretch: DWRITE_FONT_STRETCH, fontSize: ::FLOAT, localeName: *const ::WCHAR,
+ textFormat: *mut *mut IDWriteTextFormat
+ ) -> ::HRESULT,
+ fn CreateTypography(&mut self, typography: *mut *mut IDWriteTypography) -> ::HRESULT,
+ fn GetGdiInterop(&mut self, gdiInterop: *mut *mut IDWriteGdiInterop) -> ::HRESULT,
+ fn CreateTextLayout(
+ &mut self, string: *const ::WCHAR, stringLength: ::UINT32,
+ textFormat: *mut IDWriteTextFormat, maxWidth: ::FLOAT, maxHeight: ::FLOAT,
+ textLayout: *mut *mut IDWriteTextLayout
+ ) -> ::HRESULT,
+ fn CreateGdiCompatibleTextLayout(
+ &mut self, string: *const ::WCHAR, stringLength: ::UINT32,
+ textFormat: *mut IDWriteTextFormat, layoutWidth: ::FLOAT, layoutHeight: ::FLOAT,
+ pixelsPerDip: ::FLOAT, transform: *const DWRITE_MATRIX, useGdiNatrual: ::BOOL,
+ textLayout: *mut *mut IDWriteTextLayout
+ ) -> ::HRESULT,
+ fn CreateEllipsisTrimmingSign(
+ &mut self, textFormat: *mut IDWriteTextFormat, trimmingSign: *mut *mut IDWriteInlineObject
+ ) -> ::HRESULT,
+ fn CreateTextAnalyzer(&mut self, textAnalyzer: *mut *mut IDWriteTextAnalyzer) -> ::HRESULT,
+ fn CreateNumberSubstitution(
+ &mut self, substitutionMethod: DWRITE_NUMBER_SUBSTITUTION_METHOD,
+ localeName: *const ::WCHAR, ignoreUserOverride: ::BOOL,
+ numberSubstitution: *mut *mut IDWriteNumberSubstitution
+ ) -> ::HRESULT,
+ fn CreateGlyphRunAnalysis(
+ &mut self, glyphRun: *const DWRITE_GLYPH_RUN, pixelsPerDip: ::FLOAT,
+ transform: *const DWRITE_MATRIX, renderingMode: DWRITE_RENDERING_MODE,
+ measuringMode: ::DWRITE_MEASURING_MODE, baselineOriginX: ::FLOAT,
+ baselineOriginY: ::FLOAT, glyphRunAnalysis: *mut *mut IDWriteGlyphRunAnalysis
+ ) -> ::HRESULT
+}}
+pub const FACILITY_DWRITE: ::HRESULT = 0x898;
+pub const DWRITE_ERR_BASE: ::HRESULT = 0x5000;
+#[inline]
+pub fn MAKE_DWRITE_HR(severity: ::HRESULT, code: ::HRESULT) -> ::HRESULT {
+ ::MAKE_HRESULT(severity, FACILITY_DWRITE, DWRITE_ERR_BASE + code)
+}
+#[inline]
+pub fn MAKE_DWRITE_HR_ERR(code: ::HRESULT) -> ::HRESULT {
+ MAKE_DWRITE_HR(::SEVERITY_ERROR, code)
+}
diff --git a/third_party/rust/winapi-0.2.8/src/dxgi.rs b/third_party/rust/winapi-0.2.8/src/dxgi.rs
new file mode 100644
index 0000000000..c81821504c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgi.rs
@@ -0,0 +1,240 @@
+// Copyright © 2015; Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgi.h
+STRUCT!{struct DXGI_FRAME_STATISTICS {
+ PresentCount: ::UINT,
+ PresentRefreshCount: ::UINT,
+ SyncRefreshCount: ::UINT,
+ SyncQPCTime: ::LARGE_INTEGER,
+ SyncGPUTime: ::LARGE_INTEGER,
+}}
+STRUCT!{struct DXGI_MAPPED_RECT {
+ Pitch: ::INT,
+ pBits: *mut ::BYTE,
+}}
+STRUCT!{nodebug struct DXGI_ADAPTER_DESC {
+ Description: [::WCHAR; 128],
+ VectorId: ::UINT,
+ DeviceId: ::UINT,
+ SubSysId: ::UINT,
+ Revision: ::UINT,
+ DedicatedVideoMemory: ::SIZE_T,
+ DedicatedSystemMemory: ::SIZE_T,
+ SharedSystemMemory: ::SIZE_T,
+ AdapterLuid: ::LUID,
+}}
+STRUCT!{nodebug struct DXGI_OUTPUT_DESC {
+ DeviceName: [::WCHAR; 32],
+ DesktopCoordinates: ::RECT,
+ AttachedToDesktop: ::BOOL,
+ Rotation: ::DXGI_MODE_ROTATION,
+ Monitor: ::HMONITOR,
+}}
+STRUCT!{struct DXGI_SHARED_RESOURCE {
+ Handle: ::HANDLE,
+}}
+pub const DXGI_RESOURCE_PRIORITY_MINIMUM: ::DWORD = 0x28000000;
+pub const DXGI_RESOURCE_PRIORITY_LOW: ::DWORD = 0x50000000;
+pub const DXGI_RESOURCE_PRIORITY_NORMAL: ::DWORD = 0x78000000;
+pub const DXGI_RESOURCE_PRIORITY_HIGH: ::DWORD = 0xa0000000;
+pub const DXGI_RESOURCE_PRIORITY_MAXIMUM: ::DWORD = 0xc8000000;
+ENUM!{enum DXGI_RESIDENCY {
+ DXGI_RESIDENCY_FULLY_RESIDENT = 1,
+ DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2,
+ DXGI_RESIDENCY_EVICTED_TO_DISK = 3,
+}}
+STRUCT!{struct DXGI_SURFACE_DESC {
+ Width: ::UINT,
+ Height: ::UINT,
+ Format: ::DXGI_FORMAT,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+}}
+ENUM!{enum DXGI_SWAP_EFFECT {
+ DXGI_SWAP_EFFECT_DISCARD = 0,
+ DXGI_SWAP_EFFECT_SEQUENTIAL = 1,
+ DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL = 3,
+}}
+FLAGS!{enum DXGI_SWAP_CHAIN_FLAG {
+ DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1,
+ DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2,
+ DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE = 4,
+ DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT = 8,
+ DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER = 16,
+ DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY = 32,
+ DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT = 64,
+ DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER = 128,
+ DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO = 256,
+ DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO = 512,
+}}
+STRUCT!{struct DXGI_SWAP_CHAIN_DESC {
+ BufferDesc: ::DXGI_MODE_DESC,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+ BufferUsage: ::DXGI_USAGE,
+ BufferCount: ::UINT,
+ OutputWindow: ::HWND,
+ Windowed: ::BOOL,
+ SwapEffect: DXGI_SWAP_EFFECT,
+ Flags: ::UINT,
+}}
+RIDL!(
+interface IDXGIObject(IDXGIObjectVtbl): IUnknown(IUnknownVtbl) {
+ fn SetPrivateData(
+ &mut self, Name: ::REFGUID, DataSize: ::UINT, pData: *const ::c_void
+ ) -> ::HRESULT,
+ fn SetPrivateDataInterface(&mut self, Name: ::REFGUID, pUnknown: *const ::IUnknown) -> ::HRESULT,
+ fn GetPrivateData(
+ &mut self, Name: ::REFGUID, pDataSize: *mut ::UINT, pData: *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetParent(
+ &mut self, riid: ::REFIID, ppParent: *mut *mut ::c_void
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetDevice(&mut self, riid: ::REFIID, ppDevice: *mut *mut ::c_void) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIResource(IDXGIResourceVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn GetSharedHandle(&mut self, pSharedHandle: *mut ::HANDLE) -> ::HRESULT,
+ fn GetUsage(&mut self, pUsage: *mut ::DXGI_USAGE) -> ::HRESULT,
+ fn SetEvictionPriority(&mut self, EvictionPriority: ::UINT) -> ::HRESULT,
+ fn GetEvictionPriority(&mut self, pEvictionPriority: *mut ::UINT) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIKeyedMutex(IDXGIKeyedMutexVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn AcquireSync(&mut self, Key: ::UINT64, dwMilliseconds: ::DWORD) -> ::HRESULT,
+ fn ReleaseSync(&mut self, Key: ::UINT64) -> ::HRESULT
+});
+RIDL!(
+interface IDXGISurface(IDXGISurfaceVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut DXGI_SURFACE_DESC) -> ::HRESULT,
+ fn Map(&mut self, pLockedRect: *mut DXGI_MAPPED_RECT, MapFlags: ::UINT) -> ::HRESULT,
+ fn Unmap(&mut self) -> ::HRESULT
+});
+RIDL!(
+interface IDXGISurface1(IDXGISurface1Vtbl): IDXGISurface(IDXGISurfaceVtbl) {
+ fn GetDC(&mut self, Discard: ::BOOL, phdc: *mut ::HDC) -> ::HRESULT,
+ fn ReleaseDC(&mut self, pDirtyRect: *mut ::RECT) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIAdapter(IDXGIAdapterVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn EnumOutputs(&mut self, Output: ::UINT, ppOutput: *mut *mut IDXGIOutput) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut DXGI_ADAPTER_DESC) -> ::HRESULT,
+ fn CheckInterfaceSupport(
+ &mut self, InterfaceName: ::REFGUID, pUMDVersion: *mut ::LARGE_INTEGER
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIOutput(IDXGIOutputVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut DXGI_OUTPUT_DESC) -> ::HRESULT,
+ fn GetDisplayModeList(
+ &mut self, EnumFormat: ::DXGI_FORMAT, Flags: ::UINT, pNumModes: *mut ::UINT,
+ pDesc: *mut ::DXGI_MODE_DESC
+ ) -> ::HRESULT,
+ fn FindClosestMatchingMode(
+ &mut self, pModeToMatch: *const ::DXGI_MODE_DESC, pClosestMatch: *mut ::DXGI_MODE_DESC,
+ pConcernedDevice: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn WaitForVBlank(&mut self) -> ::HRESULT,
+ fn TakeOwnership(&mut self, pDevice: *mut ::IUnknown, Exclusive: ::BOOL) -> ::HRESULT,
+ fn ReleaseOwnership(&mut self) -> (),
+ fn GetGammaControlCapabilities(
+ &mut self, pGammaCaps: *mut ::DXGI_GAMMA_CONTROL_CAPABILITIES
+ ) -> ::HRESULT,
+ fn SetGammaControl(&mut self, pArray: *const ::DXGI_GAMMA_CONTROL) -> ::HRESULT,
+ fn GetGammaControl(&mut self, pArray: *mut ::DXGI_GAMMA_CONTROL) -> ::HRESULT,
+ fn SetDisplaySurface(&mut self, pScanoutSurface: *mut IDXGISurface) -> ::HRESULT,
+ fn GetDisplaySurfaceData(&mut self, pDestination: *mut IDXGISurface) -> ::HRESULT,
+ fn GetFrameStatistics(&mut self, pStats: *mut DXGI_FRAME_STATISTICS) -> ::HRESULT
+});
+pub const DXGI_MAX_SWAP_CHAIN_BUFFERS: ::DWORD = 16;
+pub const DXGI_PRESENT_TEST: ::DWORD = 0x00000001;
+pub const DXGI_PRESENT_DO_NOT_SEQUENCE: ::DWORD = 0x00000002;
+pub const DXGI_PRESENT_RESTART: ::DWORD = 0x00000004;
+pub const DXGI_PRESENT_DO_NOT_WAIT: ::DWORD = 0x00000008;
+pub const DXGI_PRESENT_STEREO_PREFER_RIGHT: ::DWORD = 0x00000010;
+pub const DXGI_PRESENT_STEREO_TEMPORARY_MONO: ::DWORD = 0x00000020;
+pub const DXGI_PRESENT_RESTRICT_TO_OUTPUT: ::DWORD = 0x00000040;
+pub const DXGI_PRESENT_USE_DURATION: ::DWORD = 0x00000100;
+RIDL!(
+interface IDXGISwapChain(IDXGISwapChainVtbl): IDXGIDeviceSubObject(IDXGIDeviceSubObjectVtbl) {
+ fn Present(&mut self, SyncInterval: ::UINT, Flags: ::UINT) -> ::HRESULT,
+ fn GetBuffer(
+ &mut self, Buffer: ::UINT, riid: ::REFIID, ppSurface: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn SetFullscreenState(&mut self, Fullscreen: ::BOOL, pTarget: *mut IDXGIOutput) -> ::HRESULT,
+ fn GetFullscreenState(
+ &mut self, pFullscreen: *mut ::BOOL, ppTarget: *mut *mut IDXGIOutput
+ ) -> ::HRESULT,
+ fn GetDesc(&mut self, pDesc: *mut DXGI_SWAP_CHAIN_DESC) -> ::HRESULT,
+ fn ResizeBuffers(
+ &mut self, BufferCount: ::UINT, Width: ::UINT, Height: ::UINT, NewFormat: ::DXGI_FORMAT,
+ SwapChainFlags: ::UINT
+ ) -> ::HRESULT,
+ fn ResizeTarget(&mut self, pNewTargetParameters: *const ::DXGI_MODE_DESC) -> ::HRESULT,
+ fn GetContainingOutput(&mut self, ppOutput: *mut *mut IDXGIOutput) -> ::HRESULT,
+ fn GetFrameStatistics(&mut self, pStats: *mut DXGI_FRAME_STATISTICS) -> ::HRESULT,
+ fn GetLastPresentCount(&mut self, pLastPresentCount: *mut ::UINT) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIFactory(IDXGIFactoryVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn EnumAdapters(&mut self, Adapter: ::UINT, ppAdapter: *mut *mut IDXGIAdapter) -> ::HRESULT,
+ fn MakeWindowAssociation(&mut self, WindowHandle: ::HWND, Flags: ::UINT) -> ::HRESULT,
+ fn GetWindowAssociation(&mut self, pWindowHandle: *mut ::HWND) -> ::HRESULT,
+ fn CreateSwapChain(
+ &mut self, pDevice: *mut ::IUnknown, pDesc: *mut DXGI_SWAP_CHAIN_DESC,
+ ppSwapChain: *mut *mut IDXGISwapChain
+ ) -> ::HRESULT,
+ fn CreateSoftwareAdapter(
+ &mut self, Module: ::HMODULE, ppAdapter: *mut *mut IDXGIAdapter
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIDevice(IDXGIDeviceVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetAdapter(&mut self, pAdapter: *mut *mut IDXGIAdapter) -> ::HRESULT,
+ fn CreateSurface(
+ &mut self, pDesc: *const DXGI_SURFACE_DESC, NumSurfaces: ::UINT, Usage: ::DXGI_USAGE,
+ pSharedResource: *const DXGI_SHARED_RESOURCE, ppSurface: *mut *mut IDXGISurface
+ ) -> ::HRESULT,
+ fn QueryResourceResidency(
+ &mut self, ppResources: *const *mut ::IUnknown, pResidencyStatus: *mut DXGI_RESIDENCY,
+ NumResources: ::UINT
+ ) -> ::HRESULT,
+ fn SetGPUThreadPriority(&mut self, Priority: ::INT) -> ::HRESULT,
+ fn GetGPUThreadPriority(&mut self, pPriority: *mut ::INT) -> ::HRESULT
+});
+ENUM!{enum DXGI_ADAPTER_FLAG {
+ DXGI_ADAPTER_FLAG_NONE,
+ DXGI_ADAPTER_FLAG_REMOTE,
+ DXGI_ADAPTER_FLAG_SOFTWARE,
+}}
+STRUCT!{nodebug struct DXGI_ADAPTER_DESC1 {
+ Description: [::WCHAR; 128],
+ VendorId: ::UINT,
+ DeviceId: ::UINT,
+ SubSysId: ::UINT,
+ Revision: ::UINT,
+ DedicatedVideoMemory: ::SIZE_T,
+ DedicatedSystemMemory: ::SIZE_T,
+ SharedSystemMemory: ::SIZE_T,
+ AdapterLuid: ::LUID,
+ Flags: ::UINT,
+}}
+STRUCT!{struct DXGI_DISPLAY_COLOR_SPACE {
+ PrimaryCoordinates: [[::FLOAT; 2]; 8],
+ WhitePoints: [[::FLOAT; 2]; 16],
+}}
+RIDL!(
+interface IDXGIFactory1(IDXGIFactory1Vtbl): IDXGIFactory(IDXGIFactoryVtbl) {
+ fn EnumAdapters1(&mut self, Adapter: ::UINT, ppAdapter: *mut *mut IDXGIAdapter1) -> ::HRESULT,
+ fn IsCurrent(&mut self) -> ::BOOL
+});
+RIDL!(
+interface IDXGIAdapter1(IDXGIAdapter1Vtbl): IDXGIAdapter(IDXGIAdapterVtbl) {
+ fn GetDesc1(&mut self, pDesc: *mut DXGI_ADAPTER_DESC1) -> ::HRESULT
+});
+RIDL!(
+interface IDXGIDevice1(IDXGIDevice1Vtbl): IDXGIDevice(IDXGIDeviceVtbl) {
+ fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT,
+ fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT
+});
diff --git a/third_party/rust/winapi-0.2.8/src/dxgi1_2.rs b/third_party/rust/winapi-0.2.8/src/dxgi1_2.rs
new file mode 100644
index 0000000000..42082747c2
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgi1_2.rs
@@ -0,0 +1,288 @@
+// Copyright © 2015; Dmitry Roschin
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgi1_2.h
+
+ENUM!{ enum DXGI_ALPHA_MODE {
+ DXGI_ALPHA_MODE_UNSPECIFIED = 0,
+ DXGI_ALPHA_MODE_PREMULTIPLIED = 1,
+ DXGI_ALPHA_MODE_STRAIGHT = 2,
+ DXGI_ALPHA_MODE_IGNORE = 3,
+ DXGI_ALPHA_MODE_FORCE_DWORD = 0xFFFFFFFF,
+}}
+
+ENUM!{ enum DXGI_COMPUTE_PREEMPTION_GRANULARITY {
+ DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
+ DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY = 1,
+ DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY = 2,
+ DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY = 3,
+ DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY = 4,
+}}
+
+ENUM!{ enum DXGI_GRAPHICS_PREEMPTION_GRANULARITY {
+ DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0,
+ DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1,
+ DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2,
+ DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3,
+ DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4,
+}}
+
+ENUM!{ enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE {
+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 1,
+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 2,
+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 4,
+}}
+
+ENUM!{ enum DXGI_SCALING {
+ DXGI_SCALING_STRETCH = 0,
+ DXGI_SCALING_NONE = 1,
+ DXGI_SCALING_ASPECT_RATIO_STRETCH = 2,
+}}
+
+ENUM!{ enum _DXGI_OFFER_RESOURCE_PRIORITY {
+ DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1,
+ DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2,
+ DXGI_OFFER_RESOURCE_PRIORITY_HIGH = 3,
+}}
+
+STRUCT!{nodebug struct DXGI_ADAPTER_DESC2 {
+ Description: [::WCHAR; 128],
+ VendorId: ::UINT,
+ DeviceId: ::UINT,
+ SubSysId: ::UINT,
+ Revision: ::UINT,
+ DedicatedVideoMemory: ::SIZE_T,
+ DedicatedSystemMemory: ::SIZE_T,
+ SharedSystemMemory: ::SIZE_T,
+ AdapterLuid: ::LUID,
+ Flags: ::UINT,
+ GraphicsPreemptionGranularity: ::DXGI_GRAPHICS_PREEMPTION_GRANULARITY,
+ ComputePreemptionGranularity: ::DXGI_COMPUTE_PREEMPTION_GRANULARITY,
+}}
+
+STRUCT!{struct DXGI_MODE_DESC1 {
+ Width: ::UINT,
+ Height: ::UINT,
+ RefreshRate: ::DXGI_RATIONAL,
+ Format: ::DXGI_FORMAT,
+ ScanlineOrdering: ::DXGI_MODE_SCANLINE_ORDER,
+ Scaling: ::DXGI_MODE_SCALING,
+ Stereo: ::BOOL,
+}}
+
+STRUCT!{struct DXGI_OUTDUPL_DESC {
+ ModeDesc: ::DXGI_MODE_DESC,
+ Rotation: ::DXGI_MODE_ROTATION,
+ DesktopImageInSystemMemory: ::BOOL,
+}}
+
+STRUCT!{struct DXGI_OUTDUPL_FRAME_INFO {
+ LastPresentTime: ::LARGE_INTEGER,
+ LastMouseUpdateTime: ::LARGE_INTEGER,
+ AccumulatedFrames: ::UINT,
+ RectsCoalesced: ::BOOL,
+ ProtectedContentMaskedOut: ::BOOL,
+ PointerPosition: ::DXGI_OUTDUPL_POINTER_POSITION,
+ TotalMetadataBufferSize: ::UINT,
+ PointerShapeBufferSize: ::UINT,
+}}
+
+STRUCT!{struct DXGI_OUTDUPL_MOVE_RECT {
+ SourcePoint: ::POINT,
+ DestinationRect: ::RECT,
+}}
+
+STRUCT!{struct DXGI_OUTDUPL_POINTER_POSITION {
+ Position: ::POINT,
+ Visible: ::BOOL,
+}}
+
+STRUCT!{struct DXGI_OUTDUPL_POINTER_SHAPE_INFO {
+ Type: ::UINT,
+ Width: ::UINT,
+ Height: ::UINT,
+ Pitch: ::UINT,
+ HotSpot: ::POINT,
+}}
+
+STRUCT!{struct DXGI_PRESENT_PARAMETERS {
+ DirtyRectsCount: ::UINT,
+ pDirtyRects: *mut ::RECT,
+ pScrollRect: *mut ::RECT,
+ pScrollOffset: *mut ::POINT,
+}}
+
+STRUCT!{struct DXGI_SWAP_CHAIN_DESC1 {
+ Width: ::UINT,
+ Height: ::UINT,
+ Format: ::DXGI_FORMAT,
+ Stereo: ::BOOL,
+ SampleDesc: ::DXGI_SAMPLE_DESC,
+ BufferUsage: ::DXGI_USAGE,
+ BufferCount: ::UINT,
+ Scaling: ::DXGI_SCALING,
+ SwapEffect: ::DXGI_SWAP_EFFECT,
+ AlphaMode: ::DXGI_ALPHA_MODE,
+ Flags: ::UINT,
+}}
+
+STRUCT!{struct DXGI_SWAP_CHAIN_FULLSCREEN_DESC {
+ RefreshRate: ::DXGI_RATIONAL,
+ ScanlineOrdering: ::DXGI_MODE_SCANLINE_ORDER,
+ Scaling: ::DXGI_MODE_SCALING,
+ Windowed: ::BOOL,
+}}
+
+RIDL!(
+interface IDXGIAdapter2(IDXGIAdapter2Vtbl): IDXGIAdapter1(IDXGIAdapter1Vtbl) {
+ fn GetDesc2(&mut self, pDesc: *mut ::DXGI_ADAPTER_DESC2) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIDevice2(IDXGIDevice2Vtbl): IDXGIDevice1(IDXGIDevice1Vtbl) {
+ fn OfferResources(
+ &mut self, NumResources: ::UINT, ppResources: *mut *mut ::IDXGIResource,
+ Priority: ::DXGI_OFFER_RESOURCE_PRIORITY
+ ) -> ::HRESULT,
+ fn ReclaimResources(
+ &mut self, NumResources: ::UINT, ppResources: *mut *mut ::IDXGIResource,
+ pDiscarded: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn EnqueueSetEvent(&mut self, hEvent: ::HANDLE) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIDisplayControl(IDXGIDisplayControlVtbl): IUnknown(IUnknownVtbl) {
+ fn IsStereoEnabled(&mut self) -> ::BOOL,
+ fn SetStereoEnabled(&mut self, enabled: ::BOOL) -> ()
+});
+
+RIDL!(
+interface IDXGIFactory2(IDXGIFactory2Vtbl): IDXGIFactory1(IDXGIFactory1Vtbl) {
+ fn IsWindowedStereoEnabled(&mut self) -> ::BOOL,
+ fn CreateSwapChainForHwnd(
+ &mut self, pDevice: *mut ::IUnknown, hWnd: ::HWND, pDesc: *const ::DXGI_SWAP_CHAIN_DESC1,
+ pFullscreenDesc: *const ::DXGI_SWAP_CHAIN_FULLSCREEN_DESC,
+ pRestrictToOutput: *mut ::IDXGIOutput, ppSwapChain: *mut *mut ::IDXGISwapChain1
+ ) -> ::HRESULT,
+ fn CreateSwapChainForCoreWindow(
+ &mut self, pDevice: *mut ::IUnknown, pWindow: *mut ::IUnknown,
+ pDesc: *const ::DXGI_SWAP_CHAIN_DESC1, pRestrictToOutput: *mut ::IDXGIOutput,
+ ppSwapChain: *mut *mut ::IDXGISwapChain1
+ ) -> ::HRESULT,
+ fn GetSharedResourceAdapterLuid(
+ &mut self, hResource: ::HANDLE, pLuid: *mut ::LUID
+ ) -> ::HRESULT,
+ fn RegisterStereoStatusWindow(
+ &mut self, WindowHandle: ::HWND, wMsg: ::UINT, pdwCookie: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn RegisterStereoStatusEvent(
+ &mut self, hEvent: ::HANDLE, pdwCookie: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn UnregisterStereoStatus(&mut self, dwCookie: ::DWORD) -> (),
+ fn RegisterOcclusionStatusWindow(
+ &mut self, WindowHandle: ::HWND, wMsg: ::UINT, pdwCookie: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn RegisterOcclusionStatusEvent(
+ &mut self, hEvent: ::HANDLE, pdwCookie: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn UnregisterOcclusionStatus(&mut self, dwCookie: ::DWORD) -> (),
+ fn CreateSwapChainForComposition(
+ &mut self, pDevice: *mut ::IUnknown, pDesc: *const ::DXGI_SWAP_CHAIN_DESC1,
+ pRestrictToOutput: *mut ::IDXGIOutput, ppSwapChain: *mut *mut ::IDXGISwapChain1
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIOutput1(IDXGIOutput1Vtbl): IDXGIOutput(IDXGIOutputVtbl) {
+ fn GetDisplayModeList1(
+ &mut self, EnumFormat: ::DXGI_FORMAT, Flags: ::UINT, pNumModes: *mut ::UINT,
+ pDesc: *mut ::DXGI_MODE_DESC1
+ ) -> ::HRESULT,
+ fn FindClosestMatchingMode1(
+ &mut self, pModeToMatch: *const ::DXGI_MODE_DESC1, pClosestMatch: *mut ::DXGI_MODE_DESC1,
+ pConcernedDevice: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn GetDisplaySurfaceData1(
+ &mut self, pDestination: *mut ::IDXGIResource
+ ) -> ::HRESULT,
+ fn DuplicateOutput(
+ &mut self, pDevice: *mut ::IUnknown,
+ ppOutputDuplication: *mut *mut ::IDXGIOutputDuplication
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIOutputDuplication(IDXGIOutputDuplicationVtbl): IDXGIObject(IDXGIObjectVtbl) {
+ fn GetDesc(&mut self, pDesc: *mut ::DXGI_OUTDUPL_DESC) -> (),
+ fn AcquireNextFrame(
+ &mut self, TimeoutInMilliseconds: ::UINT, pFrameInfo: *mut ::DXGI_OUTDUPL_FRAME_INFO,
+ ppDesktopResource: *mut *mut ::IDXGIResource
+ ) -> ::HRESULT,
+ fn GetFrameDirtyRects(
+ &mut self, DirtyRectsBufferSize: ::UINT, pDirtyRectsBuffer: *mut ::RECT,
+ pDirtyRectsBufferSizeRequired: *mut ::UINT
+ ) -> ::HRESULT,
+ fn GetFrameMoveRects(
+ &mut self, MoveRectsBufferSize: ::UINT, pMoveRectBuffer: *mut ::DXGI_OUTDUPL_MOVE_RECT,
+ pMoveRectsBufferSizeRequired: *mut ::UINT
+ ) -> ::HRESULT,
+ fn GetFramePointerShape(
+ &mut self, PointerShapeBufferSize: ::UINT, pPointerShapeBuffer: *mut ::c_void,
+ pPointerShapeBufferSizeRequired: *mut ::UINT,
+ pPointerShapeInfo: *mut ::DXGI_OUTDUPL_POINTER_SHAPE_INFO
+ ) -> ::HRESULT,
+ fn MapDesktopSurface(
+ &mut self, pLockedRect: *mut ::DXGI_MAPPED_RECT
+ ) -> ::HRESULT,
+ fn UnMapDesktopSurface(&mut self) -> ::HRESULT,
+ fn ReleaseFrame(&mut self) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIResource1(IDXGIResource1Vtbl): IDXGIResource(IDXGIResourceVtbl) {
+ fn CreateSubresourceSurface(
+ &mut self, index: ::UINT, ppSurface: *mut *mut ::IDXGISurface2
+ ) -> ::HRESULT,
+ fn CreateSharedHandle(
+ &mut self, pAttributes: *const ::SECURITY_ATTRIBUTES, dwAccess: ::DWORD, lpName: ::LPCWSTR,
+ pHandle: *mut ::HANDLE
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGISurface2(IDXGISurface2Vtbl): IDXGISurface1(IDXGISurface1Vtbl) {
+ fn GetResource(
+ &mut self, riid: ::REFGUID, ppParentResource: *mut *mut ::c_void,
+ pSubresourceIndex: *mut ::UINT
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGISwapChain1(IDXGISwapChain1Vtbl): IDXGISwapChain(IDXGISwapChainVtbl) {
+ fn GetDesc1(&mut self, pDesc: *mut ::DXGI_SWAP_CHAIN_DESC1) -> ::HRESULT,
+ fn GetFullscreenDesc(
+ &mut self, pDesc: *mut ::DXGI_SWAP_CHAIN_FULLSCREEN_DESC
+ ) -> ::HRESULT,
+ fn GetHwnd(&mut self, pHwnd: *mut ::HWND) -> ::HRESULT,
+ fn GetCoreWindow(
+ &mut self, refiid: ::REFGUID, ppUnk: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn Present1(
+ &mut self, SyncInterval: ::UINT, PresentFlags: ::UINT,
+ pPresentParameters: *const ::DXGI_PRESENT_PARAMETERS
+ ) -> ::HRESULT,
+ fn IsTemporaryMonoSupported(&mut self) -> ::BOOL,
+ fn GetRestrictToOutput(
+ &mut self, ppRestrictToOutput: *mut *mut ::IDXGIOutput
+ ) -> ::HRESULT,
+ fn SetBackgroundColor(&mut self, pColor: *const ::DXGI_RGBA) -> ::HRESULT,
+ fn GetBackgroundColor(&mut self, pColor: *mut ::DXGI_RGBA) -> ::HRESULT,
+ fn SetRotation(&mut self, Rotation: ::DXGI_MODE_ROTATION) -> ::HRESULT,
+ fn GetRotation(&mut self, pRotation: *mut ::DXGI_MODE_ROTATION) -> ::HRESULT
+});
+
+pub type DXGI_OFFER_RESOURCE_PRIORITY = ::_DXGI_OFFER_RESOURCE_PRIORITY;
+pub const DXGI_ENUM_MODES_DISABLED_STEREO: ::UINT = 8;
+pub const DXGI_ENUM_MODES_STEREO: ::UINT = 4;
+pub const DXGI_SHARED_RESOURCE_READ: ::UINT = 0x80000000;
+pub const DXGI_SHARED_RESOURCE_WRITE: ::UINT = 1;
diff --git a/third_party/rust/winapi-0.2.8/src/dxgi1_3.rs b/third_party/rust/winapi-0.2.8/src/dxgi1_3.rs
new file mode 100644
index 0000000000..71acf98c7c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgi1_3.rs
@@ -0,0 +1,131 @@
+// Copyright © 2015; Dmitry Roschin
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgi1_3.h
+
+ENUM!{ enum DXGI_FRAME_PRESENTATION_MODE {
+ DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0,
+ DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1,
+ DXGI_FRAME_PRESENTATION_MODE_NONE = 2,
+ DXGI_FRAME_PRESENTATION_MODE_COMPOSITION_FAILURE = 3,
+}}
+
+FLAGS!{ enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS {
+ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1,
+ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2,
+ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4,
+}}
+
+FLAGS!{ enum DXGI_OVERLAY_SUPPORT_FLAG {
+ DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1,
+ DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2,
+}}
+
+STRUCT!{struct DXGI_DECODE_SWAP_CHAIN_DESC {
+ Flags: ::UINT,
+}}
+
+STRUCT!{struct DXGI_FRAME_STATISTICS_MEDIA {
+ PresentCount: ::UINT,
+ PresentRefreshCount: ::UINT,
+ SyncRefreshCount: ::UINT,
+ SyncQPCTime: ::LARGE_INTEGER,
+ SyncGPUTime: ::LARGE_INTEGER,
+ CompositionMode: ::DXGI_FRAME_PRESENTATION_MODE,
+ ApprovedPresentDuration: ::UINT,
+}}
+
+STRUCT!{struct DXGI_MATRIX_3X2_F {
+ _11: ::FLOAT,
+ _12: ::FLOAT,
+ _21: ::FLOAT,
+ _22: ::FLOAT,
+ _31: ::FLOAT,
+ _32: ::FLOAT,
+}}
+
+RIDL!(
+interface IDXGIDecodeSwapChain(IDXGIDecodeSwapChainVtbl): IUnknown(IUnknownVtbl) {
+ fn PresentBuffer(
+ &mut self, BufferToPresent: ::UINT, SyncInterval: ::UINT, Flags: ::UINT
+ ) -> ::HRESULT,
+ fn SetSourceRect(&mut self, pRect: *const ::RECT) -> ::HRESULT,
+ fn SetTargetRect(&mut self, pRect: *const ::RECT) -> ::HRESULT,
+ fn SetDestSize(&mut self, Width: ::UINT, Height: ::UINT) -> ::HRESULT,
+ fn GetSourceRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT,
+ fn GetTargetRect(&mut self, pRect: *mut ::RECT) -> ::HRESULT,
+ fn GetDestSize(
+ &mut self, pWidth: *mut ::UINT, pHeight: *mut ::UINT
+ ) -> ::HRESULT,
+ fn SetColorSpace(
+ &mut self, ColorSpace: ::DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS
+ ) -> ::HRESULT,
+ fn GetColorSpace(&mut self) -> ::DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS
+});
+
+RIDL!(
+interface IDXGIDevice3(IDXGIDevice3Vtbl): IDXGIDevice2(IDXGIDevice2Vtbl) {
+ fn Trim(&mut self) -> ()
+});
+
+RIDL!(
+interface IDXGIFactory3(IDXGIFactory3Vtbl): IDXGIFactory2(IDXGIFactory2Vtbl) {
+ fn GetCreationFlags(&mut self) -> ::UINT
+});
+
+RIDL!(
+interface IDXGIFactoryMedia(IDXGIFactoryMediaVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateSwapChainForCompositionSurfaceHandle(
+ &mut self, pDevice: *mut ::IUnknown, hSurface: ::HANDLE,
+ pDesc: *const ::DXGI_SWAP_CHAIN_DESC1, pRestrictToOutput: *mut ::IDXGIOutput,
+ ppSwapChain: *mut *mut ::IDXGISwapChain1
+ ) -> ::HRESULT,
+ fn CreateDecodeSwapChainForCompositionSurfaceHandle(
+ &mut self, pDevice: *mut ::IUnknown, hSurface: ::HANDLE,
+ pDesc: *mut ::DXGI_DECODE_SWAP_CHAIN_DESC, pYuvDecodeBuffers: *mut ::IDXGIResource,
+ pRestrictToOutput: *mut ::IDXGIOutput, ppSwapChain: *mut *mut ::IDXGIDecodeSwapChain
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIOutput2(IDXGIOutput2Vtbl): IDXGIOutput1(IDXGIOutput1Vtbl) {
+ fn SupportsOverlays(&mut self) -> ::BOOL
+});
+
+RIDL!(
+interface IDXGIOutput3(IDXGIOutput3Vtbl): IDXGIOutput2(IDXGIOutput2Vtbl) {
+ fn CheckOverlaySupport(
+ &mut self, EnumFormat: ::DXGI_FORMAT, pConcernedDevice: *mut ::IUnknown,
+ pFlags: *mut ::UINT
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGISwapChain2(IDXGISwapChain2Vtbl): IDXGISwapChain1(IDXGISwapChain1Vtbl) {
+ fn SetSourceSize(&mut self, Width: ::UINT, Height: ::UINT) -> ::HRESULT,
+ fn GetSourceSize(
+ &mut self, pWidth: *mut ::UINT, pHeight: *mut ::UINT
+ ) -> ::HRESULT,
+ fn SetMaximumFrameLatency(&mut self, MaxLatency: ::UINT) -> ::HRESULT,
+ fn GetMaximumFrameLatency(&mut self, pMaxLatency: *mut ::UINT) -> ::HRESULT,
+ fn GetFrameLatencyWaitableObject(&mut self) -> ::HANDLE,
+ fn SetMatrixTransform(
+ &mut self, pMatrix: *const ::DXGI_MATRIX_3X2_F
+ ) -> ::HRESULT,
+ fn GetMatrixTransform(
+ &mut self, pMatrix: *mut ::DXGI_MATRIX_3X2_F
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGISwapChainMedia(IDXGISwapChainMediaVtbl): IUnknown(IUnknownVtbl) {
+ fn GetFrameStatisticsMedia(
+ &mut self, pStats: *mut ::DXGI_FRAME_STATISTICS_MEDIA
+ ) -> ::HRESULT,
+ fn SetPresentDuration(&mut self, Duration: ::UINT) -> ::HRESULT,
+ fn CheckPresentDurationSupport(
+ &mut self, DesiredPresentDuration: ::UINT, pClosestSmallerPresentDuration: *mut ::UINT,
+ pClosestLargerPresentDuration: *mut ::UINT
+ ) -> ::HRESULT
+});
+
+pub const DXGI_CREATE_FACTORY_DEBUG: ::UINT = 0x1;
diff --git a/third_party/rust/winapi-0.2.8/src/dxgi1_4.rs b/third_party/rust/winapi-0.2.8/src/dxgi1_4.rs
new file mode 100644
index 0000000000..cbca18f186
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgi1_4.rs
@@ -0,0 +1,82 @@
+// Copyright © 2015; Dmitry Roschin
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgi1_4.h
+
+ENUM!{ enum DXGI_MEMORY_SEGMENT_GROUP {
+ DXGI_MEMORY_SEGMENT_GROUP_LOCAL = 0,
+ DXGI_MEMORY_SEGMENT_GROUP_NON_LOCAL = 1,
+}}
+
+FLAGS!{ enum DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG {
+ DXGI_OVERLAY_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1,
+}}
+
+FLAGS!{ enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG {
+ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1,
+ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 0x2,
+}}
+
+STRUCT!{struct DXGI_QUERY_VIDEO_MEMORY_INFO {
+ Budget: ::UINT64,
+ CurrentUsage: ::UINT64,
+ AvailableForReservation: ::UINT64,
+ CurrentReservation: ::UINT64,
+}}
+
+RIDL!(
+interface IDXGIAdapter3(IDXGIAdapter3Vtbl): IDXGIAdapter2(IDXGIAdapter2Vtbl) {
+ fn RegisterHardwareContentProtectionTeardownStatusEvent(
+ &mut self, hEvent: ::HANDLE, pdwCookie: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn UnregisterHardwareContentProtectionTeardownStatus(
+ &mut self, dwCookie: ::DWORD
+ ) -> (),
+ fn QueryVideoMemoryInfo(
+ &mut self, NodeIndex: ::UINT, MemorySegmentGroup: ::DXGI_MEMORY_SEGMENT_GROUP,
+ pVideoMemoryInfo: *mut ::DXGI_QUERY_VIDEO_MEMORY_INFO
+ ) -> ::HRESULT,
+ fn SetVideoMemoryReservation(
+ &mut self, NodeIndex: ::UINT, MemorySegmentGroup: ::DXGI_MEMORY_SEGMENT_GROUP,
+ Reservation: ::UINT64
+ ) -> ::HRESULT,
+ fn RegisterVideoMemoryBudgetChangeNotificationEvent(
+ &mut self, hEvent: ::HANDLE, pdwCookie: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn UnregisterVideoMemoryBudgetChangeNotification(
+ &mut self, dwCookie: ::DWORD
+ ) -> ()
+});
+
+RIDL!(
+interface IDXGIFactory4(IDXGIFactory4Vtbl): IDXGIFactory3(IDXGIFactory3Vtbl) {
+ fn EnumAdapterByLuid(
+ &mut self, AdapterLuid: ::LUID, riid: ::REFGUID, ppvAdapter: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn EnumWarpAdapter(
+ &mut self, riid: ::REFGUID, ppvAdapter: *mut *mut ::c_void
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGIOutput4(IDXGIOutput4Vtbl): IDXGIOutput3(IDXGIOutput3Vtbl) {
+ fn CheckOverlayColorSpaceSupport(
+ &mut self, Format: ::DXGI_FORMAT, ColorSpace: ::DXGI_COLOR_SPACE_TYPE,
+ pConcernedDevice: *mut ::IUnknown, pFlags: *mut ::UINT
+ ) -> ::HRESULT
+});
+
+RIDL!(
+interface IDXGISwapChain3(IDXGISwapChain3Vtbl): IDXGISwapChain2(IDXGISwapChain2Vtbl) {
+ fn GetCurrentBackBufferIndex(&mut self) -> ::UINT,
+ fn CheckColorSpaceSupport(
+ &mut self, ColorSpace: ::DXGI_COLOR_SPACE_TYPE, pColorSpaceSupport: *mut ::UINT
+ ) -> ::HRESULT,
+ fn SetColorSpace1(
+ &mut self, ColorSpace: ::DXGI_COLOR_SPACE_TYPE
+ ) -> ::HRESULT,
+ fn ResizeBuffers1(
+ &mut self, BufferCount: ::UINT, Width: ::UINT, Height: ::UINT, Format: ::DXGI_FORMAT,
+ SwapChainFlags: ::UINT, pCreationNodeMask: *const ::UINT,
+ ppPresentQueue: *mut *mut ::IUnknown
+ ) -> ::HRESULT
+});
diff --git a/third_party/rust/winapi-0.2.8/src/dxgiformat.rs b/third_party/rust/winapi-0.2.8/src/dxgiformat.rs
new file mode 100644
index 0000000000..3e46fc2eda
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgiformat.rs
@@ -0,0 +1,124 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgiformat.h
+ENUM!{enum DXGI_FORMAT {
+ DXGI_FORMAT_UNKNOWN = 0,
+ DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
+ DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
+ DXGI_FORMAT_R32G32B32A32_UINT = 3,
+ DXGI_FORMAT_R32G32B32A32_SINT = 4,
+ DXGI_FORMAT_R32G32B32_TYPELESS = 5,
+ DXGI_FORMAT_R32G32B32_FLOAT = 6,
+ DXGI_FORMAT_R32G32B32_UINT = 7,
+ DXGI_FORMAT_R32G32B32_SINT = 8,
+ DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
+ DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
+ DXGI_FORMAT_R16G16B16A16_UNORM = 11,
+ DXGI_FORMAT_R16G16B16A16_UINT = 12,
+ DXGI_FORMAT_R16G16B16A16_SNORM = 13,
+ DXGI_FORMAT_R16G16B16A16_SINT = 14,
+ DXGI_FORMAT_R32G32_TYPELESS = 15,
+ DXGI_FORMAT_R32G32_FLOAT = 16,
+ DXGI_FORMAT_R32G32_UINT = 17,
+ DXGI_FORMAT_R32G32_SINT = 18,
+ DXGI_FORMAT_R32G8X24_TYPELESS = 19,
+ DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
+ DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
+ DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
+ DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
+ DXGI_FORMAT_R10G10B10A2_UNORM = 24,
+ DXGI_FORMAT_R10G10B10A2_UINT = 25,
+ DXGI_FORMAT_R11G11B10_FLOAT = 26,
+ DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
+ DXGI_FORMAT_R8G8B8A8_UNORM = 28,
+ DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
+ DXGI_FORMAT_R8G8B8A8_UINT = 30,
+ DXGI_FORMAT_R8G8B8A8_SNORM = 31,
+ DXGI_FORMAT_R8G8B8A8_SINT = 32,
+ DXGI_FORMAT_R16G16_TYPELESS = 33,
+ DXGI_FORMAT_R16G16_FLOAT = 34,
+ DXGI_FORMAT_R16G16_UNORM = 35,
+ DXGI_FORMAT_R16G16_UINT = 36,
+ DXGI_FORMAT_R16G16_SNORM = 37,
+ DXGI_FORMAT_R16G16_SINT = 38,
+ DXGI_FORMAT_R32_TYPELESS = 39,
+ DXGI_FORMAT_D32_FLOAT = 40,
+ DXGI_FORMAT_R32_FLOAT = 41,
+ DXGI_FORMAT_R32_UINT = 42,
+ DXGI_FORMAT_R32_SINT = 43,
+ DXGI_FORMAT_R24G8_TYPELESS = 44,
+ DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
+ DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
+ DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
+ DXGI_FORMAT_R8G8_TYPELESS = 48,
+ DXGI_FORMAT_R8G8_UNORM = 49,
+ DXGI_FORMAT_R8G8_UINT = 50,
+ DXGI_FORMAT_R8G8_SNORM = 51,
+ DXGI_FORMAT_R8G8_SINT = 52,
+ DXGI_FORMAT_R16_TYPELESS = 53,
+ DXGI_FORMAT_R16_FLOAT = 54,
+ DXGI_FORMAT_D16_UNORM = 55,
+ DXGI_FORMAT_R16_UNORM = 56,
+ DXGI_FORMAT_R16_UINT = 57,
+ DXGI_FORMAT_R16_SNORM = 58,
+ DXGI_FORMAT_R16_SINT = 59,
+ DXGI_FORMAT_R8_TYPELESS = 60,
+ DXGI_FORMAT_R8_UNORM = 61,
+ DXGI_FORMAT_R8_UINT = 62,
+ DXGI_FORMAT_R8_SNORM = 63,
+ DXGI_FORMAT_R8_SINT = 64,
+ DXGI_FORMAT_A8_UNORM = 65,
+ DXGI_FORMAT_R1_UNORM = 66,
+ DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
+ DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
+ DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
+ DXGI_FORMAT_BC1_TYPELESS = 70,
+ DXGI_FORMAT_BC1_UNORM = 71,
+ DXGI_FORMAT_BC1_UNORM_SRGB = 72,
+ DXGI_FORMAT_BC2_TYPELESS = 73,
+ DXGI_FORMAT_BC2_UNORM = 74,
+ DXGI_FORMAT_BC2_UNORM_SRGB = 75,
+ DXGI_FORMAT_BC3_TYPELESS = 76,
+ DXGI_FORMAT_BC3_UNORM = 77,
+ DXGI_FORMAT_BC3_UNORM_SRGB = 78,
+ DXGI_FORMAT_BC4_TYPELESS = 79,
+ DXGI_FORMAT_BC4_UNORM = 80,
+ DXGI_FORMAT_BC4_SNORM = 81,
+ DXGI_FORMAT_BC5_TYPELESS = 82,
+ DXGI_FORMAT_BC5_UNORM = 83,
+ DXGI_FORMAT_BC5_SNORM = 84,
+ DXGI_FORMAT_B5G6R5_UNORM = 85,
+ DXGI_FORMAT_B5G5R5A1_UNORM = 86,
+ DXGI_FORMAT_B8G8R8A8_UNORM = 87,
+ DXGI_FORMAT_B8G8R8X8_UNORM = 88,
+ DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
+ DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
+ DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
+ DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
+ DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
+ DXGI_FORMAT_BC6H_TYPELESS = 94,
+ DXGI_FORMAT_BC6H_UF16 = 95,
+ DXGI_FORMAT_BC6H_SF16 = 96,
+ DXGI_FORMAT_BC7_TYPELESS = 97,
+ DXGI_FORMAT_BC7_UNORM = 98,
+ DXGI_FORMAT_BC7_UNORM_SRGB = 99,
+ DXGI_FORMAT_AYUV = 100,
+ DXGI_FORMAT_Y410 = 101,
+ DXGI_FORMAT_Y416 = 102,
+ DXGI_FORMAT_NV12 = 103,
+ DXGI_FORMAT_P010 = 104,
+ DXGI_FORMAT_P016 = 105,
+ DXGI_FORMAT_420_OPAQUE = 106,
+ DXGI_FORMAT_YUY2 = 107,
+ DXGI_FORMAT_Y210 = 108,
+ DXGI_FORMAT_Y216 = 109,
+ DXGI_FORMAT_NV11 = 110,
+ DXGI_FORMAT_AI44 = 111,
+ DXGI_FORMAT_IA44 = 112,
+ DXGI_FORMAT_P8 = 113,
+ DXGI_FORMAT_A8P8 = 114,
+ DXGI_FORMAT_B4G4R4A4_UNORM = 115,
+ DXGI_FORMAT_P208 = 130,
+ DXGI_FORMAT_V208 = 131,
+ DXGI_FORMAT_V408 = 132,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/dxgitype.rs b/third_party/rust/winapi-0.2.8/src/dxgitype.rs
new file mode 100644
index 0000000000..6c9a2f5a71
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/dxgitype.rs
@@ -0,0 +1,86 @@
+// Copyright © 2015; Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of dxgitype.h
+pub const DXGI_CPU_ACCESS_NONE: ::DWORD = 0;
+pub const DXGI_CPU_ACCESS_DYNAMIC: ::DWORD = 1;
+pub const DXGI_CPU_ACCESS_READ_WRITE: ::DWORD = 2;
+pub const DXGI_CPU_ACCESS_SCRATCH: ::DWORD = 3;
+pub const DXGI_CPU_ACCESS_FIELD: ::DWORD = 15;
+FLAGS!{enum DXGI_USAGE {
+ DXGI_USAGE_SHADER_INPUT = 1 << (0 + 4),
+ DXGI_USAGE_RENDER_TARGET_OUTPUT = 1 << (1 + 4),
+ DXGI_USAGE_BACK_BUFFER = 1 << (2 + 4),
+ DXGI_USAGE_SHARED = 1 << (3 + 4),
+ DXGI_USAGE_READ_ONLY = 1 << (4 + 4),
+ DXGI_USAGE_DISCARD_ON_PRESENT = 1 << (5 + 4),
+ DXGI_USAGE_UNORDERED_ACCESS = 1 << (6 + 4),
+}}
+STRUCT!{struct DXGI_RGB {
+ Red: f32,
+ Green: f32,
+ Blue: f32,
+}}
+pub type DXGI_RGBA = ::D3DCOLORVALUE;
+STRUCT!{nodebug struct DXGI_GAMMA_CONTROL {
+ Scale: DXGI_RGB,
+ Offset: DXGI_RGB,
+ GammaCurve: [DXGI_RGB; 1025],
+}}
+STRUCT!{nodebug struct DXGI_GAMMA_CONTROL_CAPABILITIES {
+ ScaleAndOffsetSupported: ::BOOL,
+ MaxConvertedValue: f32,
+ MinConvertedValue: f32,
+ NumGammaControlPoints: ::UINT,
+ ControlPointPositions: [f32; 1025],
+}}
+STRUCT!{struct DXGI_RATIONAL {
+ Numerator: ::UINT,
+ Denominator: ::UINT,
+}}
+ENUM!{enum DXGI_MODE_SCANLINE_ORDER {
+ DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED,
+ DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE,
+ DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST,
+ DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST,
+}}
+ENUM!{enum DXGI_MODE_SCALING {
+ DXGI_MODE_SCALING_UNSPECIFIED,
+ DXGI_MODE_SCALING_CENTERED,
+ DXGI_MODE_SCALING_STRETCHED,
+}}
+ENUM!{enum DXGI_MODE_ROTATION {
+ DXGI_MODE_ROTATION_UNSPECIFIED,
+ DXGI_MODE_ROTATION_IDENTITY,
+ DXGI_MODE_ROTATION_ROTATE90,
+ DXGI_MODE_ROTATION_ROTATE180,
+ DXGI_MODE_ROTATION_ROTATE270,
+}}
+STRUCT!{struct DXGI_MODE_DESC {
+ Width: ::UINT,
+ Height: ::UINT,
+ RefreshRate: DXGI_RATIONAL,
+ Format: ::DXGI_FORMAT,
+ ScanlineOrdering: DXGI_MODE_SCANLINE_ORDER,
+ Scaling: DXGI_MODE_SCALING,
+}}
+STRUCT!{struct DXGI_SAMPLE_DESC {
+ Count: ::UINT,
+ Quality: ::UINT,
+}}
+ENUM!{enum DXGI_COLOR_SPACE_TYPE {
+ DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0x0,
+ DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 0x1,
+ DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 0x2,
+ DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 0x3,
+ DXGI_COLOR_SPACE_RESERVED = 0x4,
+ DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 0x5,
+ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 0x6,
+ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 0x7,
+ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 0x8,
+ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 0x9,
+ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 0xA,
+ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 0xB,
+ DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF,
+}}
+pub const DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN: ::UINT = 0xfffffffe;
+pub const DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN: ::UINT = 0xffffffff;
diff --git a/third_party/rust/winapi-0.2.8/src/errhandlingapi.rs b/third_party/rust/winapi-0.2.8/src/errhandlingapi.rs
new file mode 100644
index 0000000000..fbdde40afa
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/errhandlingapi.rs
@@ -0,0 +1,7 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-errorhandling-l1
+pub type PTOP_LEVEL_EXCEPTION_FILTER = Option<unsafe extern "system" fn(
+ ExceptionInfo: *mut ::EXCEPTION_POINTERS,
+) -> ::LONG>;
+pub type LPTOP_LEVEL_EXCEPTION_FILTER = PTOP_LEVEL_EXCEPTION_FILTER;
diff --git a/third_party/rust/winapi-0.2.8/src/excpt.rs b/third_party/rust/winapi-0.2.8/src/excpt.rs
new file mode 100644
index 0000000000..53ea3ffc5c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/excpt.rs
@@ -0,0 +1,14 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+ENUM!{enum EXCEPTION_DISPOSITION {
+ ExceptionContinueExecution = 0,
+ ExceptionContinueSearch = 1,
+ ExceptionNestedException = 2,
+ ExceptionCollidedUnwind = 3,
+}}
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct _EXCEPTION_RECORD;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct _CONTEXT;
+#[cfg(target_arch = "x86_64")] #[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct _DISPATCHER_CONTEXT;
diff --git a/third_party/rust/winapi-0.2.8/src/fileapi.rs b/third_party/rust/winapi-0.2.8/src/fileapi.rs
new file mode 100644
index 0000000000..764a7f65e4
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/fileapi.rs
@@ -0,0 +1,152 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-file-l1
+pub const CREATE_NEW: ::DWORD = 1;
+pub const CREATE_ALWAYS: ::DWORD = 2;
+pub const OPEN_EXISTING: ::DWORD = 3;
+pub const OPEN_ALWAYS: ::DWORD = 4;
+pub const TRUNCATE_EXISTING: ::DWORD = 5;
+pub const INVALID_FILE_SIZE: ::DWORD = 0xFFFFFFFF;
+pub const INVALID_SET_FILE_POINTER: ::DWORD = 0xFFFFFFFF;
+pub const INVALID_FILE_ATTRIBUTES: ::DWORD = 0xFFFFFFFF;
+STRUCT!{struct WIN32_FILE_ATTRIBUTE_DATA {
+ dwFileAttributes: ::DWORD,
+ ftCreationTime: ::FILETIME,
+ ftLastAccessTime: ::FILETIME,
+ ftLastWriteTime: ::FILETIME,
+ nFileSizeHigh: ::DWORD,
+ nFileSizeLow: ::DWORD,
+}}
+pub type LPWIN32_FILE_ATTRIBUTE_DATA = *mut WIN32_FILE_ATTRIBUTE_DATA;
+STRUCT!{struct BY_HANDLE_FILE_INFORMATION {
+ dwFileAttributes: ::DWORD,
+ ftCreationTime: ::FILETIME,
+ ftLastAccessTime: ::FILETIME,
+ ftLastWriteTime: ::FILETIME,
+ dwVolumeSerialNumber: ::DWORD,
+ nFileSizeHigh: ::DWORD,
+ nFileSizeLow: ::DWORD,
+ nNumberOfLinks: ::DWORD,
+ nFileIndexHigh: ::DWORD,
+ nFileIndexLow: ::DWORD,
+}}
+pub type PBY_HANDLE_FILE_INFORMATION = *mut BY_HANDLE_FILE_INFORMATION;
+pub type LPBY_HANDLE_FILE_INFORMATION = *mut BY_HANDLE_FILE_INFORMATION;
+STRUCT!{struct CREATEFILE2_EXTENDED_PARAMETERS {
+ dwSize: ::DWORD,
+ dwFileAttributes: ::DWORD,
+ dwFileFlags: ::DWORD,
+ dwSecurityQosFlags: ::DWORD,
+ lpSecurityAttributes: ::LPSECURITY_ATTRIBUTES,
+ hTemplateFile: ::HANDLE,
+}}
+pub type PCREATEFILE2_EXTENDED_PARAMETERS = *mut CREATEFILE2_EXTENDED_PARAMETERS;
+pub type LPCREATEFILE2_EXTENDED_PARAMETERS = *mut CREATEFILE2_EXTENDED_PARAMETERS;
+ENUM!{enum PRIORITY_HINT {
+ IoPriorityHintVeryLow = 0,
+ IoPriorityHintLow = 1,
+ IoPriorityHintNormal = 2,
+ MaximumIoPriorityHintType = 3,
+}}
+STRUCT!{struct FILE_BASIC_INFO {
+ CreationTime: ::LARGE_INTEGER,
+ LastAccessTime: ::LARGE_INTEGER,
+ LastWriteTime: ::LARGE_INTEGER,
+ ChangeTime: ::LARGE_INTEGER,
+ FileAttributes: ::DWORD,
+}}
+STRUCT!{struct FILE_STANDARD_INFO {
+ AllocationSize: ::LARGE_INTEGER,
+ EndOfFile: ::LARGE_INTEGER,
+ NumberOfLinks: ::DWORD,
+ DeletePending: ::BOOLEAN,
+ Directory: ::BOOLEAN,
+}}
+STRUCT!{struct FILE_NAME_INFO {
+ FileNameLength: ::DWORD,
+ FileName: [::WCHAR; 0],
+}}
+STRUCT!{struct FILE_RENAME_INFO {
+ ReplaceIfExists: ::BOOL,
+ RootDirectory: ::HANDLE,
+ FileNameLength: ::DWORD,
+ FileName: [::WCHAR; 0],
+}}
+STRUCT!{struct FILE_DISPOSITION_INFO {
+ DeleteFile: ::BOOL,
+}}
+STRUCT!{struct FILE_ALLOCATION_INFO {
+ AllocationSize: ::LARGE_INTEGER,
+}}
+STRUCT!{struct FILE_END_OF_FILE_INFO {
+ EndOfFile: ::LARGE_INTEGER,
+}}
+STRUCT!{struct FILE_STREAM_INFO {
+ NextEntryOffset: ::DWORD,
+ StreamNameLength: ::DWORD,
+ StreamSize: ::DWORD,
+ StreamAllocationSize: ::DWORD,
+ StreamName: [::WCHAR; 0],
+}}
+STRUCT!{struct FILE_COMPRESSION_INFO {
+ CompressedFileSize: ::LARGE_INTEGER,
+ CompressionFormat: ::WORD,
+ CompressionUnitShift: ::UCHAR,
+ ChunkShift: ::UCHAR,
+ ClusterShift: ::UCHAR,
+ Reserved: [::UCHAR; 3],
+}}
+STRUCT!{struct FILE_ATTRIBUTE_TAG_INFO {
+ NextEntryOffset: ::DWORD,
+ ReparseTag: ::DWORD,
+}}
+STRUCT!{struct FILE_ID_BOTH_DIR_INFO {
+ NextEntryOffset: ::DWORD,
+ FileIndex: ::DWORD,
+ CreationTime: ::LARGE_INTEGER,
+ LastAccessTime: ::LARGE_INTEGER,
+ LastWriteTime: ::LARGE_INTEGER,
+ ChangeTime: ::LARGE_INTEGER,
+ EndOfFile: ::LARGE_INTEGER,
+ AllocationSize: ::LARGE_INTEGER,
+ FileAttributes: ::DWORD,
+ FileNameLength: ::DWORD,
+ EaSize: ::DWORD,
+ ShortNameLength: ::CCHAR,
+ ShortName: [::WCHAR; 12],
+ FileId: ::LARGE_INTEGER,
+ FileName: [::WCHAR; 0],
+}}
+STRUCT!{struct FILE_IO_PRIORITY_HINT_INFO {
+ PriorityHint: ::PRIORITY_HINT,
+}}
+STRUCT!{struct FILE_FULL_DIR_INFO {
+ NextEntryOffset: ::ULONG,
+ FileIndex: ::ULONG,
+ CreationTime: ::LARGE_INTEGER,
+ LastAccessTime: ::LARGE_INTEGER,
+ LastWriteTime: ::LARGE_INTEGER,
+ ChangeTime: ::LARGE_INTEGER,
+ EndOfFile: ::LARGE_INTEGER,
+ AllocationSize: ::LARGE_INTEGER,
+ FileAttributes: ::ULONG,
+ FileNameLength: ::ULONG,
+ EaSize: ::ULONG,
+ FileName: [::WCHAR; 0],
+}}
+STRUCT!{struct FILE_STORAGE_INFO {
+ LogicalBytesPerSector: ::ULONG,
+ PhysicalBytesPerSectorForAtomicity: ::ULONG,
+ PhysicalBytesPerSectorForPerformance: ::ULONG,
+ FileSystemEffectivePhysicalBytesPerSectorForAtomicity: ::ULONG,
+ Flags: ::ULONG,
+ ByteOffsetForSectorAlignment: ::ULONG,
+ ByteOffsetForPartitionAlignment: ::ULONG,
+}}
+STRUCT!{struct FILE_ALIGNMENT_INFO {
+ AlignmentRequirement: ::ULONG,
+}}
+STRUCT!{struct FILE_ID_INFO {
+ VolumeSerialNumber: ::ULONGLONG,
+ FileId: ::FILE_ID_128,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/gl.rs b/third_party/rust/winapi-0.2.8/src/gl.rs
new file mode 100644
index 0000000000..006c37e417
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/gl.rs
@@ -0,0 +1,35 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//48
+pub type GLenum = ::c_uint;
+pub type GLboolean = ::c_uchar;
+pub type GLbitfield = ::c_uint;
+pub type GLbyte = ::c_schar;
+pub type GLshort = ::c_short;
+pub type GLint = ::c_int;
+pub type GLsizei = ::c_int;
+pub type GLubyte = ::c_uchar;
+pub type GLushort = ::c_ushort;
+pub type GLuint = ::c_uint;
+pub type GLfloat = ::c_float;
+pub type GLclampf = ::c_float;
+pub type GLdouble = ::c_double;
+pub type GLclampd = ::c_double;
+pub type GLvoid = ::c_void;
+//63
+//68
+//AccumOp
+pub const GL_ACCUM: GLenum = 0x0100;
+pub const GL_LOAD: GLenum = 0x0101;
+pub const GL_RETURN: GLenum = 0x0102;
+pub const GL_MULT: GLenum = 0x0103;
+pub const GL_ADD: GLenum = 0x0104;
+//AlphaFunction
+pub const GL_NEVER: GLenum = 0x0200;
+pub const GL_LESS: GLenum = 0x0201;
+pub const GL_EQUAL: GLenum = 0x0202;
+pub const GL_LEQUAL: GLenum = 0x0203;
+pub const GL_GREATER: GLenum = 0x0204;
+pub const GL_NOTEQUAL: GLenum = 0x0205;
+pub const GL_GEQUAL: GLenum = 0x0206;
+pub const GL_ALWAYS: GLenum = 0x0207;
diff --git a/third_party/rust/winapi-0.2.8/src/guiddef.rs b/third_party/rust/winapi-0.2.8/src/guiddef.rs
new file mode 100644
index 0000000000..8b436cdda5
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/guiddef.rs
@@ -0,0 +1,20 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+STRUCT!{struct GUID {
+ Data1: ::c_ulong,
+ Data2: ::c_ushort,
+ Data3: ::c_ushort,
+ Data4: [::c_uchar; 8],
+}}
+pub type LPGUID = *mut GUID;
+pub type LPCGUID = *const GUID;
+pub type IID = GUID;
+pub type LPIID = *mut IID;
+pub type CLSID = GUID;
+pub type LPCLSID = *mut CLSID;
+pub type FMTID = GUID;
+pub type LPFMTID = *mut FMTID;
+pub type REFGUID = *const GUID;
+pub type REFIID = *const IID;
+pub type REFCLSID = *const IID;
+pub type REFFMTID = *const IID;
diff --git a/third_party/rust/winapi-0.2.8/src/heapapi.rs b/third_party/rust/winapi-0.2.8/src/heapapi.rs
new file mode 100644
index 0000000000..6f631c515a
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/heapapi.rs
@@ -0,0 +1,12 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-heap-l1
+STRUCT!{struct HEAP_SUMMARY {
+ cb: ::DWORD,
+ cbAllocated: ::SIZE_T,
+ cbCommitted: ::SIZE_T,
+ cbReserved: ::SIZE_T,
+ cbMaxReserve: ::SIZE_T,
+}}
+pub type PHEAP_SUMMARY = *mut HEAP_SUMMARY;
+pub type LPHEAP_SUMMARY = PHEAP_SUMMARY;
diff --git a/third_party/rust/winapi-0.2.8/src/hidclass.rs b/third_party/rust/winapi-0.2.8/src/hidclass.rs
new file mode 100644
index 0000000000..0851d5febb
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/hidclass.rs
@@ -0,0 +1,56 @@
+// Copyright © 2015, Peter Atashian and Alex Daniel Jones
+// Licensed under the MIT License <LICENSE.md>
+DEFINE_GUID!{GUID_DEVINTERFACE_HID, 0x4D1E55B2, 0xF16F, 0x11CF,
+ 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}
+pub const GUID_CLASS_INPUT: ::GUID = GUID_DEVINTERFACE_HID;
+DEFINE_GUID!{GUID_HID_INTERFACE_NOTIFY, 0x2c4e2e88, 0x25e6, 0x4c33, 0x88, 0x2f, 0x3d, 0x82, 0xe6, 0x07, 0x36, 0x81}
+DEFINE_GUID!{GUID_HID_INTERFACE_HIDPARSE, 0xf5c315a5, 0x69ac, 0x4bc2, 0x92, 0x79, 0xd0, 0xb6, 0x45, 0x76, 0xf4, 0x4b}
+// FIXME devpropkey stuff
+pub const HID_REVISION: ::DWORD = 0x00000001;
+pub const IOCTL_HID_GET_DRIVER_CONFIG: ::DWORD = HID_BUFFER_CTL_CODE!(100);
+pub const IOCTL_HID_SET_DRIVER_CONFIG: ::DWORD = HID_BUFFER_CTL_CODE!(101);
+pub const IOCTL_HID_GET_POLL_FREQUENCY_MSEC: ::DWORD = HID_BUFFER_CTL_CODE!(102);
+pub const IOCTL_HID_SET_POLL_FREQUENCY_MSEC: ::DWORD = HID_BUFFER_CTL_CODE!(103);
+pub const IOCTL_GET_NUM_DEVICE_INPUT_BUFFERS: ::DWORD = HID_BUFFER_CTL_CODE!(104);
+pub const IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS: ::DWORD = HID_BUFFER_CTL_CODE!(105);
+pub const IOCTL_HID_GET_COLLECTION_INFORMATION: ::DWORD = HID_BUFFER_CTL_CODE!(106);
+pub const IOCTL_HID_ENABLE_WAKE_ON_SX: ::DWORD = HID_BUFFER_CTL_CODE!(107);
+pub const IOCTL_HID_SET_S0_IDLE_TIMEOUT: ::DWORD = HID_BUFFER_CTL_CODE!(108);
+pub const IOCTL_HID_GET_COLLECTION_DESCRIPTOR: ::DWORD = HID_CTL_CODE!(100);
+pub const IOCTL_HID_FLUSH_QUEUE: ::DWORD = HID_CTL_CODE!(101);
+pub const IOCTL_HID_SET_FEATURE: ::DWORD = HID_IN_CTL_CODE!(100);
+pub const IOCTL_HID_SET_OUTPUT_REPORT: ::DWORD = HID_IN_CTL_CODE!(101);
+pub const IOCTL_HID_GET_FEATURE: ::DWORD = HID_OUT_CTL_CODE!(100);
+pub const IOCTL_GET_PHYSICAL_DESCRIPTOR: ::DWORD = HID_OUT_CTL_CODE!(102);
+pub const IOCTL_HID_GET_HARDWARE_ID: ::DWORD = HID_OUT_CTL_CODE!(103);
+pub const IOCTL_HID_GET_INPUT_REPORT: ::DWORD = HID_OUT_CTL_CODE!(104);
+pub const IOCTL_HID_GET_OUTPUT_REPORT: ::DWORD = HID_OUT_CTL_CODE!(105);
+pub const IOCTL_HID_GET_MANUFACTURER_STRING: ::DWORD = HID_OUT_CTL_CODE!(110);
+pub const IOCTL_HID_GET_PRODUCT_STRING: ::DWORD = HID_OUT_CTL_CODE!(111);
+pub const IOCTL_HID_GET_SERIALNUMBER_STRING: ::DWORD = HID_OUT_CTL_CODE!(112);
+pub const IOCTL_HID_GET_INDEXED_STRING: ::DWORD = HID_OUT_CTL_CODE!(120);
+pub const IOCTL_HID_GET_MS_GENRE_DESCRIPTOR: ::DWORD = HID_OUT_CTL_CODE!(121);
+pub const IOCTL_HID_ENABLE_SECURE_READ: ::DWORD = HID_CTL_CODE!(130);
+pub const IOCTL_HID_DISABLE_SECURE_READ: ::DWORD = HID_CTL_CODE!(131);
+pub const IOCTL_HID_DEVICERESET_NOTIFICATION: ::DWORD = HID_CTL_CODE!(140);
+STRUCT!{struct HID_XFER_PACKET {
+ reportBuffer: ::PUCHAR,
+ reportBufferLen: ::ULONG,
+ reportId: ::UCHAR,
+}}
+pub type PHID_XFER_PACKET = *mut HID_XFER_PACKET;
+//FIXME Stuff for NT_INCLUDED
+STRUCT!{struct HID_COLLECTION_INFORMATION {
+ DescriptorSize: ::ULONG,
+ Polled: ::BOOLEAN,
+ Reserved1: [::UCHAR; 1],
+ VendorID: ::USHORT,
+ ProductID: ::USHORT,
+ VersionNumber: ::USHORT,
+}}
+pub type PHID_COLLECTION_INFORMATION = *mut HID_COLLECTION_INFORMATION;
+STRUCT!{struct HID_DRIVER_CONFIG {
+ Size: ::ULONG,
+ RingBufferSize: ::ULONG,
+}}
+pub type PHID_DRIVER_CONFIG = *mut HID_DRIVER_CONFIG;
diff --git a/third_party/rust/winapi-0.2.8/src/hidpi.rs b/third_party/rust/winapi-0.2.8/src/hidpi.rs
new file mode 100644
index 0000000000..b2321ea9e9
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/hidpi.rs
@@ -0,0 +1,182 @@
+// Copyright © 2015, Peter Atashian and Alex Daniel Jones
+// Licensed under the MIT License <LICENSE.md>
+pub const HIDP_LINK_COLLECTION_ROOT: ::USHORT = -1i16 as u16;
+pub const HIDP_LINK_COLLECTION_UNSPECIFIED: ::USHORT = 0;
+ENUM!{enum HIDP_REPORT_TYPE {
+ HidP_Input,
+ HidP_Output,
+ HidP_Feature,
+}}
+STRUCT!{struct USAGE_AND_PAGE {
+ Usage: ::USAGE,
+ UsagePage: ::USAGE,
+}}
+pub type PUSAGE_AND_PAGE = *mut USAGE_AND_PAGE;
+STRUCT!{struct HIDP_BUTTON_CAPS {
+ UsagePage: ::USAGE,
+ ReportID: ::UCHAR,
+ IsAlias: ::BOOLEAN,
+ BitField: ::USHORT,
+ LinkCollection: ::USHORT,
+ LinkUsage: ::USAGE,
+ LinkUsagePage: ::USAGE,
+ IsRange: ::BOOLEAN,
+ IsStringRange: ::BOOLEAN,
+ IsDesignatorRange: ::BOOLEAN,
+ IsAbsolute: ::BOOLEAN,
+ Reserved: [::ULONG; 10],
+ S_un: [u16; 8],
+}}
+UNION!{HIDP_BUTTON_CAPS, S_un, Range, Range_mut, HIDP_RANGE_STRUCT}
+UNION!{HIDP_BUTTON_CAPS, S_un, NotRange, NotRange_mut, HIDP_NOTRANGE_STRUCT}
+pub type PHIDP_BUTTON_CAPS = *mut HIDP_BUTTON_CAPS;
+STRUCT!{struct HIDP_RANGE_STRUCT {
+ UsageMin: ::USAGE,
+ UsageMax: ::USAGE,
+ StringMin: ::USHORT,
+ StringMax: ::USHORT,
+ DesignatorMin: ::USHORT,
+ DesignatorMax: ::USHORT,
+ DataIndexMin: ::USHORT,
+ DataIndexMax: ::USHORT,
+}}
+STRUCT!{struct HIDP_NOTRANGE_STRUCT {
+ Usage: ::USAGE,
+ Reserved1: ::USAGE,
+ StringIndex: ::USHORT,
+ Reserved2: ::USHORT,
+ DesignatorIndex: ::USHORT,
+ Reserved3: ::USHORT,
+ DataIndex: ::USHORT,
+ Reserved4: ::USHORT,
+}}
+STRUCT!{struct HIDP_VALUE_CAPS {
+ UsagePage: ::USAGE,
+ ReportID: ::UCHAR,
+ IsAlias: ::BOOLEAN,
+ BitField: ::USHORT,
+ LinkCollection: ::USHORT,
+ LinkUsage: ::USAGE,
+ LinkUsagePage: ::USAGE,
+ IsRange: ::BOOLEAN,
+ IsStringRange: ::BOOLEAN,
+ IsDesignatorRange: ::BOOLEAN,
+ IsAbsolute: ::BOOLEAN,
+ HasNull: ::BOOLEAN,
+ Reserved: ::UCHAR,
+ BitSize: ::USHORT,
+ ReportCount: ::USHORT,
+ Reserved2: [::USHORT; 5],
+ UnitsExp: ::ULONG,
+ Units: ::ULONG,
+ LogicalMin: ::LONG,
+ LogicalMax: ::LONG,
+ PhysicalMin: ::LONG,
+ PhysicalMax: ::LONG,
+ S_un: [u16; 8],
+}}
+UNION!{HIDP_VALUE_CAPS, S_un, Range, Range_mut, HIDP_RANGE_STRUCT}
+UNION!{HIDP_VALUE_CAPS, S_un, NotRange, NotRange_mut, HIDP_NOTRANGE_STRUCT}
+pub type PHIDP_VALUE_CAPS = *mut HIDP_VALUE_CAPS;
+STRUCT!{struct HIDP_LINK_COLLECTION_NODE {
+ LinkUsage: ::USAGE,
+ LinkUsagePage: ::USAGE,
+ Parent: ::USHORT,
+ NumberOfChildren: ::USHORT,
+ NextSibling: ::USHORT,
+ FirstChild: ::USHORT,
+ bit_fields: ::ULONG,
+ UserContext: ::PVOID,
+}}
+BITFIELD!{HIDP_LINK_COLLECTION_NODE bit_fields: ::ULONG [
+ CollectionType set_CollectionType[0..8],
+ IsAlias set_IsAlias[8..9],
+]}
+pub type PHIDP_LINK_COLLECTION_NODE = *mut HIDP_LINK_COLLECTION_NODE;
+pub type PHIDP_REPORT_DESCRIPTOR = ::PUCHAR;
+pub enum HIDP_PREPARSED_DATA{}
+pub type PHIDP_PREPARSED_DATA = *mut HIDP_PREPARSED_DATA;
+STRUCT!{struct HIDP_CAPS {
+ Usage: ::USAGE,
+ UsagePage: ::USAGE,
+ InputReportByteLength: ::USHORT,
+ OutputReportByteLength: ::USHORT,
+ FeatureReportByteLength: ::USHORT,
+ Reserved: [::USHORT; 17],
+ NumberLinkCollectionNodes: ::USHORT,
+ NumberInputButtonCaps: ::USHORT,
+ NumberInputValueCaps: ::USHORT,
+ NumberInputDataIndices: ::USHORT,
+ NumberOutputButtonCaps: ::USHORT,
+ NumberOutputValueCaps: ::USHORT,
+ NumberOutputDataIndices: ::USHORT,
+ NumberFeatureButtonCaps: ::USHORT,
+ NumberFeatureValueCaps: ::USHORT,
+ NumberFeatureDataIndices: ::USHORT,
+}}
+pub type PHIDP_CAPS = *mut HIDP_CAPS;
+STRUCT!{struct HIDP_DATA {
+ DataIndex: ::USHORT,
+ Reserved: ::USHORT,
+ S_un: [u32; 1],
+}}
+UNION!{HIDP_DATA, S_un, RawValue, RawValue_mut, ::ULONG}
+UNION!{HIDP_DATA, S_un, On, On_mut, ::BOOLEAN}
+pub type PHIDP_DATA = *mut HIDP_DATA;
+STRUCT!{struct HIDP_UNKNOWN_TOKEN {
+ Token: ::UCHAR,
+ Reserved: [::UCHAR; 3],
+ BitField: ::ULONG,
+}}
+pub type PHIDP_UNKNOWN_TOKEN = *mut HIDP_UNKNOWN_TOKEN;
+STRUCT!{struct HIDP_EXTENDED_ATTRIBUTES {
+ NumGlobalUnknowns: ::UCHAR,
+ Reserved: [::UCHAR; 3],
+ GlobalUnknowns: PHIDP_UNKNOWN_TOKEN,
+ Data: [::ULONG; 1],
+}}
+pub type PHIDP_EXTENDED_ATTRIBUTES = *mut HIDP_EXTENDED_ATTRIBUTES;
+ENUM!{enum HIDP_KEYBOARD_DIRECTION {
+ HidP_Keyboard_Break,
+ HidP_Keyboard_Make,
+}}
+STRUCT!{struct HIDP_KEYBOARD_MODIFIER_STATE {
+ ul: ::ULONG,
+}}
+BITFIELD!{HIDP_KEYBOARD_MODIFIER_STATE ul: ::ULONG [
+ LeftControl set_LeftControl[0..1],
+ LeftShift set_LeftShift[1..2],
+ LeftAlt set_LeftAlt[2..3],
+ LeftGUI set_LeftGUI[3..4],
+ RightControl set_RightControl[4..5],
+ RightShift set_RightShift[5..6],
+ RightAlt set_RightAlt[6..7],
+ RigthGUI set_RigthGUI[7..8],
+ CapsLock set_CapsLock[8..9],
+ ScollLock set_ScollLock[9..10],
+ NumLock set_NumLock[10..11],
+]}
+pub type PHIDP_KEYBOARD_MODIFIER_STATE = *mut HIDP_KEYBOARD_MODIFIER_STATE;
+pub type PHIDP_INSERT_SCANCODES = Option<unsafe extern "C" fn(
+ Context: ::PVOID, NewScanCodes: ::PCHAR, Length: ::ULONG,
+) -> ::BOOLEAN>;
+pub const HIDP_STATUS_SUCCESS: ::NTSTATUS = HIDP_ERROR_CODES!(0x0, 0);
+pub const HIDP_STATUS_NULL: ::NTSTATUS = HIDP_ERROR_CODES!(0x8, 1);
+pub const HIDP_STATUS_INVALID_PREPARSED_DATA: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 1);
+pub const HIDP_STATUS_INVALID_REPORT_TYPE: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 2);
+pub const HIDP_STATUS_INVALID_REPORT_LENGTH: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 3);
+pub const HIDP_STATUS_USAGE_NOT_FOUND: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 4);
+pub const HIDP_STATUS_VALUE_OUT_OF_RANGE: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 5);
+pub const HIDP_STATUS_BAD_LOG_PHY_VALUES: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 6);
+pub const HIDP_STATUS_BUFFER_TOO_SMALL: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 7);
+pub const HIDP_STATUS_INTERNAL_ERROR: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 8);
+pub const HIDP_STATUS_I8042_TRANS_UNKNOWN: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 9);
+pub const HIDP_STATUS_INCOMPATIBLE_REPORT_ID: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xA);
+pub const HIDP_STATUS_NOT_VALUE_ARRAY: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xB);
+pub const HIDP_STATUS_IS_VALUE_ARRAY: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xC);
+pub const HIDP_STATUS_DATA_INDEX_NOT_FOUND: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xD);
+pub const HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xE);
+pub const HIDP_STATUS_BUTTON_NOT_PRESSED: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0xF);
+pub const HIDP_STATUS_REPORT_DOES_NOT_EXIST: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0x10);
+pub const HIDP_STATUS_NOT_IMPLEMENTED: ::NTSTATUS = HIDP_ERROR_CODES!(0xC, 0x20);
+pub const HIDP_STATUS_I8242_TRANS_UNKNOWN: ::NTSTATUS = HIDP_STATUS_I8042_TRANS_UNKNOWN;
diff --git a/third_party/rust/winapi-0.2.8/src/hidsdi.rs b/third_party/rust/winapi-0.2.8/src/hidsdi.rs
new file mode 100644
index 0000000000..1b421f038a
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/hidsdi.rs
@@ -0,0 +1,15 @@
+// Copyright © 2015, Peter Atashian and Alex Daniel Jones
+// Licensed under the MIT License <LICENSE.md>
+STRUCT!{struct HIDD_CONFIGURATION {
+ cookie: ::PVOID,
+ size: ::ULONG,
+ RingBufferSize: ::ULONG,
+}}
+pub type PHIDD_CONFIGURATION = *mut HIDD_CONFIGURATION;
+STRUCT!{struct HIDD_ATTRIBUTES {
+ Size: ::ULONG,
+ VendorID: ::USHORT,
+ ProductID: ::USHORT,
+ VersionNumber: ::USHORT,
+}}
+pub type PHIDD_ATTRIBUTES = *mut HIDD_ATTRIBUTES;
diff --git a/third_party/rust/winapi-0.2.8/src/hidusage.rs b/third_party/rust/winapi-0.2.8/src/hidusage.rs
new file mode 100644
index 0000000000..4d76509ece
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/hidusage.rs
@@ -0,0 +1,270 @@
+// Copyright © 2015, Peter Atashian and Alex Daniel Jones
+// Licensed under the MIT License <LICENSE.md>
+pub type USAGE = ::USHORT;
+pub type PUSAGE = *mut USAGE;
+pub const HID_USAGE_PAGE_UNDEFINED: ::USAGE = 0x00;
+pub const HID_USAGE_PAGE_GENERIC: ::USAGE = 0x01;
+pub const HID_USAGE_PAGE_SIMULATION: ::USAGE = 0x02;
+pub const HID_USAGE_PAGE_VR: ::USAGE = 0x03;
+pub const HID_USAGE_PAGE_SPORT: ::USAGE = 0x04;
+pub const HID_USAGE_PAGE_GAME: ::USAGE = 0x05;
+pub const HID_USAGE_PAGE_KEYBOARD: ::USAGE = 0x07;
+pub const HID_USAGE_PAGE_LED: ::USAGE = 0x08;
+pub const HID_USAGE_PAGE_BUTTON: ::USAGE = 0x09;
+pub const HID_USAGE_PAGE_ORDINAL: ::USAGE = 0x0A;
+pub const HID_USAGE_PAGE_TELEPHONY: ::USAGE = 0x0B;
+pub const HID_USAGE_PAGE_CONSUMER: ::USAGE = 0x0C;
+pub const HID_USAGE_PAGE_DIGITIZER: ::USAGE = 0x0D;
+pub const HID_USAGE_PAGE_UNICODE: ::USAGE = 0x10;
+pub const HID_USAGE_PAGE_ALPHANUMERIC: ::USAGE = 0x14;
+pub const HID_USAGE_PAGE_SENSOR: ::USAGE = 0x20;
+pub const HID_USAGE_PAGE_BARCODE_SCANNER: ::USAGE = 0x8C;
+pub const HID_USAGE_PAGE_WEIGHING_DEVICE: ::USAGE = 0x8D;
+pub const HID_USAGE_PAGE_MAGNETIC_STRIPE_READER: ::USAGE = 0x8E;
+pub const HID_USAGE_PAGE_CAMERA_CONTROL: ::USAGE = 0x90;
+pub const HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE: ::USAGE = 0xFFF3;
+pub const HID_USAGE_PAGE_VENDOR_DEFINED_BEGIN: ::USAGE = 0xFF00;
+pub const HID_USAGE_PAGE_VENDOR_DEFINED_END: ::USAGE = 0xFFFF;
+pub const HID_USAGE_GENERIC_POINTER: ::USAGE = 0x01;
+pub const HID_USAGE_GENERIC_MOUSE: ::USAGE = 0x02;
+pub const HID_USAGE_GENERIC_JOYSTICK: ::USAGE = 0x04;
+pub const HID_USAGE_GENERIC_GAMEPAD: ::USAGE = 0x05;
+pub const HID_USAGE_GENERIC_KEYBOARD: ::USAGE = 0x06;
+pub const HID_USAGE_GENERIC_KEYPAD: ::USAGE = 0x07;
+pub const HID_USAGE_GENERIC_PORTABLE_DEVICE_CONTROL: ::USAGE = 0x0D;
+pub const HID_USAGE_GENERIC_SYSTEM_CTL: ::USAGE = 0x80;
+pub const HID_USAGE_GENERIC_X: ::USAGE = 0x30;
+pub const HID_USAGE_GENERIC_Y: ::USAGE = 0x31;
+pub const HID_USAGE_GENERIC_Z: ::USAGE = 0x32;
+pub const HID_USAGE_GENERIC_RX: ::USAGE = 0x33;
+pub const HID_USAGE_GENERIC_RY: ::USAGE = 0x34;
+pub const HID_USAGE_GENERIC_RZ: ::USAGE = 0x35;
+pub const HID_USAGE_GENERIC_SLIDER: ::USAGE = 0x36;
+pub const HID_USAGE_GENERIC_DIAL: ::USAGE = 0x37;
+pub const HID_USAGE_GENERIC_WHEEL: ::USAGE = 0x38;
+pub const HID_USAGE_GENERIC_HATSWITCH: ::USAGE = 0x39;
+pub const HID_USAGE_GENERIC_COUNTED_BUFFER: ::USAGE = 0x3A;
+pub const HID_USAGE_GENERIC_BYTE_COUNT: ::USAGE = 0x3B;
+pub const HID_USAGE_GENERIC_MOTION_WAKEUP: ::USAGE = 0x3C;
+pub const HID_USAGE_GENERIC_VX: ::USAGE = 0x40;
+pub const HID_USAGE_GENERIC_VY: ::USAGE = 0x41;
+pub const HID_USAGE_GENERIC_VZ: ::USAGE = 0x42;
+pub const HID_USAGE_GENERIC_VBRX: ::USAGE = 0x43;
+pub const HID_USAGE_GENERIC_VBRY: ::USAGE = 0x44;
+pub const HID_USAGE_GENERIC_VBRZ: ::USAGE = 0x45;
+pub const HID_USAGE_GENERIC_VNO: ::USAGE = 0x46;
+pub const HID_USAGE_GENERIC_RESOLUTION_MULTIPLIER: ::USAGE = 0x48;
+pub const HID_USAGE_GENERIC_SYSCTL_POWER: ::USAGE = 0x81;
+pub const HID_USAGE_GENERIC_SYSCTL_SLEEP: ::USAGE = 0x82;
+pub const HID_USAGE_GENERIC_SYSCTL_WAKE: ::USAGE = 0x83;
+pub const HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU: ::USAGE = 0x84;
+pub const HID_USAGE_GENERIC_SYSCTL_MAIN_MENU: ::USAGE = 0x85;
+pub const HID_USAGE_GENERIC_SYSCTL_APP_MENU: ::USAGE = 0x86;
+pub const HID_USAGE_GENERIC_SYSCTL_HELP_MENU: ::USAGE = 0x87;
+pub const HID_USAGE_GENERIC_SYSCTL_MENU_EXIT: ::USAGE = 0x88;
+pub const HID_USAGE_GENERIC_SYSCTL_MENU_SELECT: ::USAGE = 0x89;
+pub const HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT: ::USAGE = 0x8A;
+pub const HID_USAGE_GENERIC_SYSCTL_MENU_LEFT: ::USAGE = 0x8B;
+pub const HID_USAGE_GENERIC_SYSCTL_MENU_UP: ::USAGE = 0x8C;
+pub const HID_USAGE_GENERIC_SYSCTL_MENU_DOWN: ::USAGE = 0x8D;
+pub const HID_USAGE_GENERIC_SYSTEM_DISPLAY_ROTATION_LOCK_BUTTON: ::USAGE = 0xC9;
+pub const HID_USAGE_GENERIC_SYSTEM_DISPLAY_ROTATION_LOCK_SLIDER_SWITCH: ::USAGE = 0xCA;
+pub const HID_USAGE_GENERIC_CONTROL_ENABLE: ::USAGE = 0xCB;
+pub const HID_USAGE_SIMULATION_RUDDER: ::USAGE = 0xBA;
+pub const HID_USAGE_SIMULATION_THROTTLE: ::USAGE = 0xBB;
+pub const HID_USAGE_KEYBOARD_NOEVENT: ::USAGE = 0x00;
+pub const HID_USAGE_KEYBOARD_ROLLOVER: ::USAGE = 0x01;
+pub const HID_USAGE_KEYBOARD_POSTFAIL: ::USAGE = 0x02;
+pub const HID_USAGE_KEYBOARD_UNDEFINED: ::USAGE = 0x03;
+pub const HID_USAGE_KEYBOARD_aA: ::USAGE = 0x04;
+pub const HID_USAGE_KEYBOARD_zZ: ::USAGE = 0x1D;
+pub const HID_USAGE_KEYBOARD_ONE: ::USAGE = 0x1E;
+pub const HID_USAGE_KEYBOARD_ZERO: ::USAGE = 0x27;
+pub const HID_USAGE_KEYBOARD_LCTRL: ::USAGE = 0xE0;
+pub const HID_USAGE_KEYBOARD_LSHFT: ::USAGE = 0xE1;
+pub const HID_USAGE_KEYBOARD_LALT: ::USAGE = 0xE2;
+pub const HID_USAGE_KEYBOARD_LGUI: ::USAGE = 0xE3;
+pub const HID_USAGE_KEYBOARD_RCTRL: ::USAGE = 0xE4;
+pub const HID_USAGE_KEYBOARD_RSHFT: ::USAGE = 0xE5;
+pub const HID_USAGE_KEYBOARD_RALT: ::USAGE = 0xE6;
+pub const HID_USAGE_KEYBOARD_RGUI: ::USAGE = 0xE7;
+pub const HID_USAGE_KEYBOARD_SCROLL_LOCK: ::USAGE = 0x47;
+pub const HID_USAGE_KEYBOARD_NUM_LOCK: ::USAGE = 0x53;
+pub const HID_USAGE_KEYBOARD_CAPS_LOCK: ::USAGE = 0x39;
+pub const HID_USAGE_KEYBOARD_F1: ::USAGE = 0x3A;
+pub const HID_USAGE_KEYBOARD_F2: ::USAGE = 0x3B;
+pub const HID_USAGE_KEYBOARD_F3: ::USAGE = 0x3C;
+pub const HID_USAGE_KEYBOARD_F4: ::USAGE = 0x3D;
+pub const HID_USAGE_KEYBOARD_F5: ::USAGE = 0x3E;
+pub const HID_USAGE_KEYBOARD_F6: ::USAGE = 0x3F;
+pub const HID_USAGE_KEYBOARD_F7: ::USAGE = 0x40;
+pub const HID_USAGE_KEYBOARD_F8: ::USAGE = 0x41;
+pub const HID_USAGE_KEYBOARD_F9: ::USAGE = 0x42;
+pub const HID_USAGE_KEYBOARD_F10: ::USAGE = 0x43;
+pub const HID_USAGE_KEYBOARD_F11: ::USAGE = 0x44;
+pub const HID_USAGE_KEYBOARD_F12: ::USAGE = 0x45;
+pub const HID_USAGE_KEYBOARD_F13: ::USAGE = 0x68;
+pub const HID_USAGE_KEYBOARD_F14: ::USAGE = 0x69;
+pub const HID_USAGE_KEYBOARD_F15: ::USAGE = 0x6A;
+pub const HID_USAGE_KEYBOARD_F16: ::USAGE = 0x6B;
+pub const HID_USAGE_KEYBOARD_F17: ::USAGE = 0x6C;
+pub const HID_USAGE_KEYBOARD_F18: ::USAGE = 0x6D;
+pub const HID_USAGE_KEYBOARD_F19: ::USAGE = 0x6E;
+pub const HID_USAGE_KEYBOARD_F20: ::USAGE = 0x6F;
+pub const HID_USAGE_KEYBOARD_F21: ::USAGE = 0x70;
+pub const HID_USAGE_KEYBOARD_F22: ::USAGE = 0x71;
+pub const HID_USAGE_KEYBOARD_F23: ::USAGE = 0x72;
+pub const HID_USAGE_KEYBOARD_F24: ::USAGE = 0x73;
+pub const HID_USAGE_KEYBOARD_RETURN: ::USAGE = 0x28;
+pub const HID_USAGE_KEYBOARD_ESCAPE: ::USAGE = 0x29;
+pub const HID_USAGE_KEYBOARD_DELETE: ::USAGE = 0x2A;
+pub const HID_USAGE_KEYBOARD_PRINT_SCREEN: ::USAGE = 0x46;
+pub const HID_USAGE_KEYBOARD_DELETE_FORWARD: ::USAGE = 0x4C;
+pub const HID_USAGE_LED_NUM_LOCK: ::USAGE = 0x01;
+pub const HID_USAGE_LED_CAPS_LOCK: ::USAGE = 0x02;
+pub const HID_USAGE_LED_SCROLL_LOCK: ::USAGE = 0x03;
+pub const HID_USAGE_LED_COMPOSE: ::USAGE = 0x04;
+pub const HID_USAGE_LED_KANA: ::USAGE = 0x05;
+pub const HID_USAGE_LED_POWER: ::USAGE = 0x06;
+pub const HID_USAGE_LED_SHIFT: ::USAGE = 0x07;
+pub const HID_USAGE_LED_DO_NOT_DISTURB: ::USAGE = 0x08;
+pub const HID_USAGE_LED_MUTE: ::USAGE = 0x09;
+pub const HID_USAGE_LED_TONE_ENABLE: ::USAGE = 0x0A;
+pub const HID_USAGE_LED_HIGH_CUT_FILTER: ::USAGE = 0x0B;
+pub const HID_USAGE_LED_LOW_CUT_FILTER: ::USAGE = 0x0C;
+pub const HID_USAGE_LED_EQUALIZER_ENABLE: ::USAGE = 0x0D;
+pub const HID_USAGE_LED_SOUND_FIELD_ON: ::USAGE = 0x0E;
+pub const HID_USAGE_LED_SURROUND_FIELD_ON: ::USAGE = 0x0F;
+pub const HID_USAGE_LED_REPEAT: ::USAGE = 0x10;
+pub const HID_USAGE_LED_STEREO: ::USAGE = 0x11;
+pub const HID_USAGE_LED_SAMPLING_RATE_DETECT: ::USAGE = 0x12;
+pub const HID_USAGE_LED_SPINNING: ::USAGE = 0x13;
+pub const HID_USAGE_LED_CAV: ::USAGE = 0x14;
+pub const HID_USAGE_LED_CLV: ::USAGE = 0x15;
+pub const HID_USAGE_LED_RECORDING_FORMAT_DET: ::USAGE = 0x16;
+pub const HID_USAGE_LED_OFF_HOOK: ::USAGE = 0x17;
+pub const HID_USAGE_LED_RING: ::USAGE = 0x18;
+pub const HID_USAGE_LED_MESSAGE_WAITING: ::USAGE = 0x19;
+pub const HID_USAGE_LED_DATA_MODE: ::USAGE = 0x1A;
+pub const HID_USAGE_LED_BATTERY_OPERATION: ::USAGE = 0x1B;
+pub const HID_USAGE_LED_BATTERY_OK: ::USAGE = 0x1C;
+pub const HID_USAGE_LED_BATTERY_LOW: ::USAGE = 0x1D;
+pub const HID_USAGE_LED_SPEAKER: ::USAGE = 0x1E;
+pub const HID_USAGE_LED_HEAD_SET: ::USAGE = 0x1F;
+pub const HID_USAGE_LED_HOLD: ::USAGE = 0x20;
+pub const HID_USAGE_LED_MICROPHONE: ::USAGE = 0x21;
+pub const HID_USAGE_LED_COVERAGE: ::USAGE = 0x22;
+pub const HID_USAGE_LED_NIGHT_MODE: ::USAGE = 0x23;
+pub const HID_USAGE_LED_SEND_CALLS: ::USAGE = 0x24;
+pub const HID_USAGE_LED_CALL_PICKUP: ::USAGE = 0x25;
+pub const HID_USAGE_LED_CONFERENCE: ::USAGE = 0x26;
+pub const HID_USAGE_LED_STAND_BY: ::USAGE = 0x27;
+pub const HID_USAGE_LED_CAMERA_ON: ::USAGE = 0x28;
+pub const HID_USAGE_LED_CAMERA_OFF: ::USAGE = 0x29;
+pub const HID_USAGE_LED_ON_LINE: ::USAGE = 0x2A;
+pub const HID_USAGE_LED_OFF_LINE: ::USAGE = 0x2B;
+pub const HID_USAGE_LED_BUSY: ::USAGE = 0x2C;
+pub const HID_USAGE_LED_READY: ::USAGE = 0x2D;
+pub const HID_USAGE_LED_PAPER_OUT: ::USAGE = 0x2E;
+pub const HID_USAGE_LED_PAPER_JAM: ::USAGE = 0x2F;
+pub const HID_USAGE_LED_REMOTE: ::USAGE = 0x30;
+pub const HID_USAGE_LED_FORWARD: ::USAGE = 0x31;
+pub const HID_USAGE_LED_REVERSE: ::USAGE = 0x32;
+pub const HID_USAGE_LED_STOP: ::USAGE = 0x33;
+pub const HID_USAGE_LED_REWIND: ::USAGE = 0x34;
+pub const HID_USAGE_LED_FAST_FORWARD: ::USAGE = 0x35;
+pub const HID_USAGE_LED_PLAY: ::USAGE = 0x36;
+pub const HID_USAGE_LED_PAUSE: ::USAGE = 0x37;
+pub const HID_USAGE_LED_RECORD: ::USAGE = 0x38;
+pub const HID_USAGE_LED_ERROR: ::USAGE = 0x39;
+pub const HID_USAGE_LED_SELECTED_INDICATOR: ::USAGE = 0x3A;
+pub const HID_USAGE_LED_IN_USE_INDICATOR: ::USAGE = 0x3B;
+pub const HID_USAGE_LED_MULTI_MODE_INDICATOR: ::USAGE = 0x3C;
+pub const HID_USAGE_LED_INDICATOR_ON: ::USAGE = 0x3D;
+pub const HID_USAGE_LED_INDICATOR_FLASH: ::USAGE = 0x3E;
+pub const HID_USAGE_LED_INDICATOR_SLOW_BLINK: ::USAGE = 0x3F;
+pub const HID_USAGE_LED_INDICATOR_FAST_BLINK: ::USAGE = 0x40;
+pub const HID_USAGE_LED_INDICATOR_OFF: ::USAGE = 0x41;
+pub const HID_USAGE_LED_FLASH_ON_TIME: ::USAGE = 0x42;
+pub const HID_USAGE_LED_SLOW_BLINK_ON_TIME: ::USAGE = 0x43;
+pub const HID_USAGE_LED_SLOW_BLINK_OFF_TIME: ::USAGE = 0x44;
+pub const HID_USAGE_LED_FAST_BLINK_ON_TIME: ::USAGE = 0x45;
+pub const HID_USAGE_LED_FAST_BLINK_OFF_TIME: ::USAGE = 0x46;
+pub const HID_USAGE_LED_INDICATOR_COLOR: ::USAGE = 0x47;
+pub const HID_USAGE_LED_RED: ::USAGE = 0x48;
+pub const HID_USAGE_LED_GREEN: ::USAGE = 0x49;
+pub const HID_USAGE_LED_AMBER: ::USAGE = 0x4A;
+pub const HID_USAGE_LED_GENERIC_INDICATOR: ::USAGE = 0x4B;
+pub const HID_USAGE_TELEPHONY_PHONE: ::USAGE = 0x01;
+pub const HID_USAGE_TELEPHONY_ANSWERING_MACHINE: ::USAGE = 0x02;
+pub const HID_USAGE_TELEPHONY_MESSAGE_CONTROLS: ::USAGE = 0x03;
+pub const HID_USAGE_TELEPHONY_HANDSET: ::USAGE = 0x04;
+pub const HID_USAGE_TELEPHONY_HEADSET: ::USAGE = 0x05;
+pub const HID_USAGE_TELEPHONY_KEYPAD: ::USAGE = 0x06;
+pub const HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON: ::USAGE = 0x07;
+pub const HID_USAGE_TELEPHONY_REDIAL: ::USAGE = 0x24;
+pub const HID_USAGE_TELEPHONY_TRANSFER: ::USAGE = 0x25;
+pub const HID_USAGE_TELEPHONY_DROP: ::USAGE = 0x26;
+pub const HID_USAGE_TELEPHONY_LINE: ::USAGE = 0x2A;
+pub const HID_USAGE_TELEPHONY_RING_ENABLE: ::USAGE = 0x2D;
+pub const HID_USAGE_TELEPHONY_SEND: ::USAGE = 0x31;
+pub const HID_USAGE_TELEPHONY_KEYPAD_0: ::USAGE = 0xB0;
+pub const HID_USAGE_TELEPHONY_KEYPAD_D: ::USAGE = 0xBF;
+pub const HID_USAGE_TELEPHONY_HOST_AVAILABLE: ::USAGE = 0xF1;
+pub const HID_USAGE_CONSUMERCTRL: ::USAGE = 0x01;
+pub const HID_USAGE_CONSUMER_CHANNEL_INCREMENT: ::USAGE = 0x9C;
+pub const HID_USAGE_CONSUMER_CHANNEL_DECREMENT: ::USAGE = 0x9D;
+pub const HID_USAGE_CONSUMER_PLAY: ::USAGE = 0xB0;
+pub const HID_USAGE_CONSUMER_PAUSE: ::USAGE = 0xB1;
+pub const HID_USAGE_CONSUMER_RECORD: ::USAGE = 0xB2;
+pub const HID_USAGE_CONSUMER_FAST_FORWARD: ::USAGE = 0xB3;
+pub const HID_USAGE_CONSUMER_REWIND: ::USAGE = 0xB4;
+pub const HID_USAGE_CONSUMER_SCAN_NEXT_TRACK: ::USAGE = 0xB5;
+pub const HID_USAGE_CONSUMER_SCAN_PREV_TRACK: ::USAGE = 0xB6;
+pub const HID_USAGE_CONSUMER_STOP: ::USAGE = 0xB7;
+pub const HID_USAGE_CONSUMER_PLAY_PAUSE: ::USAGE = 0xCD;
+pub const HID_USAGE_CONSUMER_VOLUME: ::USAGE = 0xE0;
+pub const HID_USAGE_CONSUMER_BALANCE: ::USAGE = 0xE1;
+pub const HID_USAGE_CONSUMER_MUTE: ::USAGE = 0xE2;
+pub const HID_USAGE_CONSUMER_BASS: ::USAGE = 0xE3;
+pub const HID_USAGE_CONSUMER_TREBLE: ::USAGE = 0xE4;
+pub const HID_USAGE_CONSUMER_BASS_BOOST: ::USAGE = 0xE5;
+pub const HID_USAGE_CONSUMER_SURROUND_MODE: ::USAGE = 0xE6;
+pub const HID_USAGE_CONSUMER_LOUDNESS: ::USAGE = 0xE7;
+pub const HID_USAGE_CONSUMER_MPX: ::USAGE = 0xE8;
+pub const HID_USAGE_CONSUMER_VOLUME_INCREMENT: ::USAGE = 0xE9;
+pub const HID_USAGE_CONSUMER_VOLUME_DECREMENT: ::USAGE = 0xEA;
+pub const HID_USAGE_CONSUMER_BASS_INCREMENT: ::USAGE = 0x152;
+pub const HID_USAGE_CONSUMER_BASS_DECREMENT: ::USAGE = 0x153;
+pub const HID_USAGE_CONSUMER_TREBLE_INCREMENT: ::USAGE = 0x154;
+pub const HID_USAGE_CONSUMER_TREBLE_DECREMENT: ::USAGE = 0x155;
+pub const HID_USAGE_CONSUMER_AL_CONFIGURATION: ::USAGE = 0x183;
+pub const HID_USAGE_CONSUMER_AL_EMAIL: ::USAGE = 0x18A;
+pub const HID_USAGE_CONSUMER_AL_CALCULATOR: ::USAGE = 0x192;
+pub const HID_USAGE_CONSUMER_AL_BROWSER: ::USAGE = 0x194;
+pub const HID_USAGE_CONSUMER_AC_SEARCH: ::USAGE = 0x221;
+pub const HID_USAGE_CONSUMER_AC_GOTO: ::USAGE = 0x222;
+pub const HID_USAGE_CONSUMER_AC_HOME: ::USAGE = 0x223;
+pub const HID_USAGE_CONSUMER_AC_BACK: ::USAGE = 0x224;
+pub const HID_USAGE_CONSUMER_AC_FORWARD: ::USAGE = 0x225;
+pub const HID_USAGE_CONSUMER_AC_STOP: ::USAGE = 0x226;
+pub const HID_USAGE_CONSUMER_AC_REFRESH: ::USAGE = 0x227;
+pub const HID_USAGE_CONSUMER_AC_PREVIOUS: ::USAGE = 0x228;
+pub const HID_USAGE_CONSUMER_AC_NEXT: ::USAGE = 0x229;
+pub const HID_USAGE_CONSUMER_AC_BOOKMARKS: ::USAGE = 0x22A;
+pub const HID_USAGE_CONSUMER_AC_PAN: ::USAGE = 0x238;
+pub const HID_USAGE_CONSUMER_EXTENDED_KEYBOARD_ATTRIBUTES_COLLECTION: ::USAGE = 0x2C0;
+pub const HID_USAGE_CONSUMER_KEYBOARD_FORM_FACTOR: ::USAGE = 0x2C1;
+pub const HID_USAGE_CONSUMER_KEYBOARD_KEY_TYPE: ::USAGE = 0x2C2;
+pub const HID_USAGE_CONSUMER_KEYBOARD_PHYSICAL_LAYOUT: ::USAGE = 0x2C3;
+pub const HID_USAGE_CONSUMER_VENDOR_SPECIFIC_KEYBOARD_PHYSICAL_LAYOUT: ::USAGE = 0x2C4;
+pub const HID_USAGE_CONSUMER_KEYBOARD_IETF_LANGUAGE_TAG_INDEX: ::USAGE = 0x2C5;
+pub const HID_USAGE_CONSUMER_IMPLEMENTED_KEYBOARD_INPUT_ASSIST_CONTROLS: ::USAGE = 0x2C6;
+pub const HID_USAGE_DIGITIZER_PEN: ::USAGE = 0x02;
+pub const HID_USAGE_DIGITIZER_IN_RANGE: ::USAGE = 0x32;
+pub const HID_USAGE_DIGITIZER_TIP_SWITCH: ::USAGE = 0x42;
+pub const HID_USAGE_DIGITIZER_BARREL_SWITCH: ::USAGE = 0x44;
+pub const HID_USAGE_CAMERA_AUTO_FOCUS: ::USAGE = 0x20;
+pub const HID_USAGE_CAMERA_SHUTTER: ::USAGE = 0x21;
+pub const HID_USAGE_MS_BTH_HF_DIALNUMBER: ::USAGE = 0x21;
+pub const HID_USAGE_MS_BTH_HF_DIALMEMORY: ::USAGE = 0x22;
diff --git a/third_party/rust/winapi-0.2.8/src/hstring.rs b/third_party/rust/winapi-0.2.8/src/hstring.rs
new file mode 100644
index 0000000000..01cfc6d302
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/hstring.rs
@@ -0,0 +1,16 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This interface definition contains typedefs for Windows Runtime data types.
+DECLARE_HANDLE!(HSTRING, HSTRING__);
+#[cfg(target_arch = "x86_64")]
+STRUCT!{struct HSTRING_HEADER {
+ Reserved: [::PVOID; 0], // For alignment
+ Reserved2: [::c_char; 24],
+}}
+#[cfg(target_arch = "x86")]
+STRUCT!{struct HSTRING_HEADER {
+ Reserved: [::PVOID; 0], // For alignment
+ Reserved2: [::c_char; 20],
+}}
+UNION!(HSTRING_HEADER, Reserved2, Reserved1, Reserved1_mut, ::PVOID);
+DECLARE_HANDLE!(HSTRING_BUFFER, HSTRING_BUFFER__);
diff --git a/third_party/rust/winapi-0.2.8/src/http.rs b/third_party/rust/winapi-0.2.8/src/http.rs
new file mode 100644
index 0000000000..b0020f9cab
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/http.rs
@@ -0,0 +1,828 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! HTTP API specification
+pub const HTTP_INITIALIZE_SERVER: ::ULONG = 0x00000001;
+pub const HTTP_INITIALIZE_CONFIG: ::ULONG = 0x00000002;
+pub const HTTP_DEMAND_CBT: ::ULONG = 0x00000004;
+ENUM!{enum HTTP_SERVER_PROPERTY {
+ HttpServerAuthenticationProperty,
+ HttpServerLoggingProperty,
+ HttpServerQosProperty,
+ HttpServerTimeoutsProperty,
+ HttpServerQueueLengthProperty,
+ HttpServerStateProperty,
+ HttpServer503VerbosityProperty,
+ HttpServerBindingProperty,
+ HttpServerExtendedAuthenticationProperty,
+ HttpServerListenEndpointProperty,
+ HttpServerChannelBindProperty,
+ HttpServerProtectionLevelProperty,
+}}
+pub type PHTTP_SERVER_PROPERTY = *mut HTTP_SERVER_PROPERTY;
+STRUCT!{struct HTTP_PROPERTY_FLAGS {
+ BitFields: ::ULONG,
+}}
+BITFIELD!(HTTP_PROPERTY_FLAGS BitFields: ::ULONG [
+ Present set_Present[0..1],
+]);
+pub type PHTTP_PROPERTY_FLAGS = *mut HTTP_PROPERTY_FLAGS;
+ENUM!{enum HTTP_ENABLED_STATE {
+ HttpEnabledStateActive,
+ HttpEnabledStateInactive,
+}}
+pub type PHTTP_ENABLED_STATE = *mut HTTP_ENABLED_STATE;
+STRUCT!{struct HTTP_STATE_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ State: HTTP_ENABLED_STATE,
+}}
+pub type PHTTP_STATE_INFO = *mut HTTP_STATE_INFO;
+ENUM!{enum HTTP_503_RESPONSE_VERBOSITY {
+ Http503ResponseVerbosityBasic,
+ Http503ResponseVerbosityLimited,
+ Http503ResponseVerbosityFull,
+}}
+pub type PHTTP_503_RESPONSE_VERBOSITY = *mut HTTP_503_RESPONSE_VERBOSITY;
+ENUM!{enum HTTP_QOS_SETTING_TYPE {
+ HttpQosSettingTypeBandwidth,
+ HttpQosSettingTypeConnectionLimit,
+ HttpQosSettingTypeFlowRate,
+}}
+pub type PHTTP_QOS_SETTING_TYPE = *mut HTTP_QOS_SETTING_TYPE;
+STRUCT!{struct HTTP_QOS_SETTING_INFO {
+ QosType: HTTP_QOS_SETTING_TYPE,
+ QosSetting: ::PVOID,
+}}
+pub type PHTTP_QOS_SETTING_INFO = *mut HTTP_QOS_SETTING_INFO;
+STRUCT!{struct HTTP_CONNECTION_LIMIT_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ MaxConnections: ::ULONG,
+}}
+pub type PHTTP_CONNECTION_LIMIT_INFO = *mut HTTP_CONNECTION_LIMIT_INFO;
+STRUCT!{struct HTTP_BANDWIDTH_LIMIT_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ MaxBandwidth: ::ULONG,
+}}
+pub type PHTTP_BANDWIDTH_LIMIT_INFO = *mut HTTP_BANDWIDTH_LIMIT_INFO;
+STRUCT!{struct HTTP_FLOWRATE_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ MaxBandwidth: ::ULONG,
+ MaxPeakBandwidth: ::ULONG,
+ BurstSize: ::ULONG,
+}}
+pub type PHTTP_FLOWRATE_INFO = *mut HTTP_FLOWRATE_INFO;
+pub const HTTP_MIN_ALLOWED_BANDWIDTH_THROTTLING_RATE: ::ULONG = 1024;
+pub const HTTP_LIMIT_INFINITE: ::ULONG = !0;
+ENUM!{enum HTTP_SERVICE_CONFIG_TIMEOUT_KEY {
+ IdleConnectionTimeout = 0,
+ HeaderWaitTimeout,
+}}
+pub type PHTTP_SERVICE_CONFIG_TIMEOUT_KEY = *mut HTTP_SERVICE_CONFIG_TIMEOUT_KEY;
+pub type HTTP_SERVICE_CONFIG_TIMEOUT_PARAM = ::USHORT;
+pub type PHTTP_SERVICE_CONFIG_TIMEOUT_PARAM = *mut ::USHORT;
+STRUCT!{struct HTTP_SERVICE_CONFIG_TIMEOUT_SET {
+ KeyDesc: HTTP_SERVICE_CONFIG_TIMEOUT_KEY,
+ ParamDesc: HTTP_SERVICE_CONFIG_TIMEOUT_PARAM,
+}}
+pub type PHTTP_SERVICE_CONFIG_TIMEOUT_SET = *mut HTTP_SERVICE_CONFIG_TIMEOUT_SET;
+STRUCT!{struct HTTP_TIMEOUT_LIMIT_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ EntityBody: ::USHORT,
+ DrainEntityBody: ::USHORT,
+ RequestQueue: ::USHORT,
+ IdleConnection: ::USHORT,
+ HeaderWait: ::USHORT,
+ MinSendRate: ::ULONG,
+}}
+pub type PHTTP_TIMEOUT_LIMIT_INFO = *mut HTTP_TIMEOUT_LIMIT_INFO;
+STRUCT!{struct HTTP_LISTEN_ENDPOINT_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ EnableSharing: ::BOOLEAN,
+}}
+pub type PHTTP_LISTEN_ENDPOINT_INFO = *mut HTTP_LISTEN_ENDPOINT_INFO;
+STRUCT!{struct HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS {
+ DomainNameLength: ::USHORT,
+ DomainName: ::PWSTR,
+ RealmLength: ::USHORT,
+ Realm: ::PWSTR,
+}}
+pub type PHTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS = *mut HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS;
+STRUCT!{struct HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS {
+ RealmLength: ::USHORT,
+ Realm: ::PWSTR,
+}}
+pub type PHTTP_SERVER_AUTHENTICATION_BASIC_PARAMS = *mut HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS;
+pub const HTTP_AUTH_ENABLE_BASIC: ::ULONG = 0x00000001;
+pub const HTTP_AUTH_ENABLE_DIGEST: ::ULONG = 0x00000002;
+pub const HTTP_AUTH_ENABLE_NTLM: ::ULONG = 0x00000004;
+pub const HTTP_AUTH_ENABLE_NEGOTIATE: ::ULONG = 0x00000008;
+pub const HTTP_AUTH_ENABLE_KERBEROS: ::ULONG = 0x00000010;
+pub const HTTP_AUTH_ENABLE_ALL: ::ULONG = HTTP_AUTH_ENABLE_BASIC | HTTP_AUTH_ENABLE_DIGEST |
+ HTTP_AUTH_ENABLE_NTLM | HTTP_AUTH_ENABLE_NEGOTIATE | HTTP_AUTH_ENABLE_KERBEROS;
+pub const HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHING: ::UCHAR = 0x01;
+pub const HTTP_AUTH_EX_FLAG_CAPTURE_CREDENTIAL: ::UCHAR = 0x02;
+STRUCT!{struct HTTP_SERVER_AUTHENTICATION_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ AuthSchemes: ::ULONG,
+ ReceiveMutualAuth: ::BOOLEAN,
+ ReceiveContextHandle: ::BOOLEAN,
+ DisableNTLMCredentialCaching: ::BOOLEAN,
+ ExFlags: ::UCHAR,
+ DigestParams: HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS,
+ BasicParams: HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS,
+}}
+pub type PHTTP_SERVER_AUTHENTICATION_INFO = *mut HTTP_SERVER_AUTHENTICATION_INFO;
+ENUM!{enum HTTP_SERVICE_BINDING_TYPE {
+ HttpServiceBindingTypeNone = 0,
+ HttpServiceBindingTypeW,
+ HttpServiceBindingTypeA,
+}}
+STRUCT!{struct HTTP_SERVICE_BINDING_BASE {
+ Type: HTTP_SERVICE_BINDING_TYPE,
+}}
+pub type PHTTP_SERVICE_BINDING_BASE = *mut HTTP_SERVICE_BINDING_BASE;
+STRUCT!{struct HTTP_SERVICE_BINDING_A {
+ Base: HTTP_SERVICE_BINDING_BASE,
+ Buffer: ::PCHAR,
+ BufferSize: ::ULONG,
+}}
+pub type PHTTP_SERVICE_BINDING_A = *mut HTTP_SERVICE_BINDING_A;
+STRUCT!{struct HTTP_SERVICE_BINDING_W {
+ Base: HTTP_SERVICE_BINDING_BASE,
+ Buffer: ::PWCHAR,
+ BufferSize: ::ULONG,
+}}
+pub type PHTTP_SERVICE_BINDING_W = *mut HTTP_SERVICE_BINDING_W;
+ENUM!{enum HTTP_AUTHENTICATION_HARDENING_LEVELS {
+ HttpAuthenticationHardeningLegacy = 0,
+ HttpAuthenticationHardeningMedium,
+ HttpAuthenticationHardeningStrict,
+}}
+pub const HTTP_CHANNEL_BIND_PROXY: ::ULONG = 0x1;
+pub const HTTP_CHANNEL_BIND_PROXY_COHOSTING: ::ULONG = 0x20;
+pub const HTTP_CHANNEL_BIND_NO_SERVICE_NAME_CHECK: ::ULONG = 0x2;
+pub const HTTP_CHANNEL_BIND_DOTLESS_SERVICE: ::ULONG = 0x4;
+pub const HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN: ::ULONG = 0x8;
+pub const HTTP_CHANNEL_BIND_CLIENT_SERVICE: ::ULONG = 0x10;
+STRUCT!{struct HTTP_CHANNEL_BIND_INFO {
+ Hardening: HTTP_AUTHENTICATION_HARDENING_LEVELS,
+ Flags: ::ULONG,
+ ServiceNames: *mut PHTTP_SERVICE_BINDING_BASE,
+ NumberOfServiceNames: ::ULONG,
+}}
+pub type PHTTP_CHANNEL_BIND_INFO = *mut HTTP_CHANNEL_BIND_INFO;
+STRUCT!{struct HTTP_REQUEST_CHANNEL_BIND_STATUS {
+ ServiceName: PHTTP_SERVICE_BINDING_BASE,
+ ChannelToken: ::PUCHAR,
+ ChannelTokenSize: ::ULONG,
+ Flags: ::ULONG,
+}}
+pub type PHTTP_REQUEST_CHANNEL_BIND_STATUS = *mut HTTP_REQUEST_CHANNEL_BIND_STATUS;
+pub const HTTP_LOG_FIELD_DATE: ::ULONG = 0x00000001;
+pub const HTTP_LOG_FIELD_TIME: ::ULONG = 0x00000002;
+pub const HTTP_LOG_FIELD_CLIENT_IP: ::ULONG = 0x00000004;
+pub const HTTP_LOG_FIELD_USER_NAME: ::ULONG = 0x00000008;
+pub const HTTP_LOG_FIELD_SITE_NAME: ::ULONG = 0x00000010;
+pub const HTTP_LOG_FIELD_COMPUTER_NAME: ::ULONG = 0x00000020;
+pub const HTTP_LOG_FIELD_SERVER_IP: ::ULONG = 0x00000040;
+pub const HTTP_LOG_FIELD_METHOD: ::ULONG = 0x00000080;
+pub const HTTP_LOG_FIELD_URI_STEM: ::ULONG = 0x00000100;
+pub const HTTP_LOG_FIELD_URI_QUERY: ::ULONG = 0x00000200;
+pub const HTTP_LOG_FIELD_STATUS: ::ULONG = 0x00000400;
+pub const HTTP_LOG_FIELD_WIN32_STATUS: ::ULONG = 0x00000800;
+pub const HTTP_LOG_FIELD_BYTES_SENT: ::ULONG = 0x00001000;
+pub const HTTP_LOG_FIELD_BYTES_RECV: ::ULONG = 0x00002000;
+pub const HTTP_LOG_FIELD_TIME_TAKEN: ::ULONG = 0x00004000;
+pub const HTTP_LOG_FIELD_SERVER_PORT: ::ULONG = 0x00008000;
+pub const HTTP_LOG_FIELD_USER_AGENT: ::ULONG = 0x00010000;
+pub const HTTP_LOG_FIELD_COOKIE: ::ULONG = 0x00020000;
+pub const HTTP_LOG_FIELD_REFERER: ::ULONG = 0x00040000;
+pub const HTTP_LOG_FIELD_VERSION: ::ULONG = 0x00080000;
+pub const HTTP_LOG_FIELD_HOST: ::ULONG = 0x00100000;
+pub const HTTP_LOG_FIELD_SUB_STATUS: ::ULONG = 0x00200000;
+pub const HTTP_LOG_FIELD_CLIENT_PORT: ::ULONG = 0x00400000;
+pub const HTTP_LOG_FIELD_URI: ::ULONG = 0x00800000;
+pub const HTTP_LOG_FIELD_SITE_ID: ::ULONG = 0x01000000;
+pub const HTTP_LOG_FIELD_REASON: ::ULONG = 0x02000000;
+pub const HTTP_LOG_FIELD_QUEUE_NAME: ::ULONG = 0x04000000;
+ENUM!{enum HTTP_LOGGING_TYPE {
+ HttpLoggingTypeW3C,
+ HttpLoggingTypeIIS,
+ HttpLoggingTypeNCSA,
+ HttpLoggingTypeRaw,
+}}
+ENUM!{enum HTTP_LOGGING_ROLLOVER_TYPE {
+ HttpLoggingRolloverSize,
+ HttpLoggingRolloverDaily,
+ HttpLoggingRolloverWeekly,
+ HttpLoggingRolloverMonthly,
+ HttpLoggingRolloverHourly,
+}}
+pub const HTTP_MIN_ALLOWED_LOG_FILE_ROLLOVER_SIZE: ::ULONG = (1 * 1024 * 1024) as ::ULONG;
+pub const HTTP_LOGGING_FLAG_LOCAL_TIME_ROLLOVER: ::ULONG = 0x00000001;
+pub const HTTP_LOGGING_FLAG_USE_UTF8_CONVERSION: ::ULONG = 0x00000002;
+pub const HTTP_LOGGING_FLAG_LOG_ERRORS_ONLY: ::ULONG = 0x00000004;
+pub const HTTP_LOGGING_FLAG_LOG_SUCCESS_ONLY: ::ULONG = 0x00000008;
+STRUCT!{struct HTTP_LOGGING_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ LoggingFlags: ::ULONG,
+ SoftwareName: ::PCWSTR,
+ SoftwareNameLength: ::USHORT,
+ DirectoryNameLength: ::USHORT,
+ DirectoryName: ::PCWSTR,
+ Format: HTTP_LOGGING_TYPE,
+ Fields: ::ULONG,
+ pExtFields: ::PVOID,
+ NumOfExtFields: ::USHORT,
+ MaxRecordSize: ::USHORT,
+ RolloverType: HTTP_LOGGING_ROLLOVER_TYPE,
+ RolloverSize: ::ULONG,
+ pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
+}}
+pub type PHTTP_LOGGING_INFO = *mut HTTP_LOGGING_INFO;
+STRUCT!{struct HTTP_BINDING_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ RequestQueueHandle: ::HANDLE,
+}}
+pub type PHTTP_BINDING_INFO = *mut HTTP_BINDING_INFO;
+ENUM!{enum HTTP_PROTECTION_LEVEL_TYPE {
+ HttpProtectionLevelUnrestricted,
+ HttpProtectionLevelEdgeRestricted,
+ HttpProtectionLevelRestricted,
+}}
+pub type PHTTP_PROTECTION_LEVEL_TYPE = *mut HTTP_PROTECTION_LEVEL_TYPE;
+STRUCT!{struct HTTP_PROTECTION_LEVEL_INFO {
+ Flags: HTTP_PROPERTY_FLAGS,
+ Level: HTTP_PROTECTION_LEVEL_TYPE,
+}}
+pub type PHTTP_PROTECTION_LEVEL_INFO = *mut HTTP_PROTECTION_LEVEL_INFO;
+pub const HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING: ::ULONG = 0x00000001;
+pub const HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER: ::ULONG = 0x00000002;
+pub const HTTP_RECEIVE_REQUEST_FLAG_COPY_BODY: ::ULONG = 0x00000001;
+pub const HTTP_RECEIVE_REQUEST_FLAG_FLUSH_BODY: ::ULONG = 0x00000002;
+pub const HTTP_RECEIVE_REQUEST_ENTITY_BODY_FLAG_FILL_BUFFER: ::ULONG = 0x00000001;
+pub const HTTP_SEND_RESPONSE_FLAG_DISCONNECT: ::ULONG = 0x00000001;
+pub const HTTP_SEND_RESPONSE_FLAG_MORE_DATA: ::ULONG = 0x00000002;
+pub const HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA: ::ULONG = 0x00000004;
+pub const HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING: ::ULONG = 0x00000008;
+pub const HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES: ::ULONG = 0x00000020;
+pub const HTTP_SEND_RESPONSE_FLAG_OPAQUE: ::ULONG = 0x00000040;
+pub const HTTP_FLUSH_RESPONSE_FLAG_RECURSIVE: ::ULONG = 0x00000001;
+pub type HTTP_OPAQUE_ID = ::ULONGLONG;
+pub type PHTTP_OPAQUE_ID = *mut ::ULONGLONG;
+pub type HTTP_REQUEST_ID = HTTP_OPAQUE_ID;
+pub type PHTTP_REQUEST_ID = *mut HTTP_OPAQUE_ID;
+pub type HTTP_CONNECTION_ID = HTTP_OPAQUE_ID;
+pub type PHTTP_CONNECTION_ID = *mut HTTP_OPAQUE_ID;
+pub type HTTP_RAW_CONNECTION_ID = HTTP_OPAQUE_ID;
+pub type PHTTP_RAW_CONNECTION_ID = *mut HTTP_OPAQUE_ID;
+pub type HTTP_URL_GROUP_ID = HTTP_OPAQUE_ID;
+pub type PHTTP_URL_GROUP_ID = *mut HTTP_OPAQUE_ID;
+pub type HTTP_SERVER_SESSION_ID = HTTP_OPAQUE_ID;
+pub type PHTTP_SERVER_SESSION_ID = *mut HTTP_OPAQUE_ID;
+pub const HTTP_BYTE_RANGE_TO_EOF: ::ULONGLONG = !0;
+STRUCT!{struct HTTP_BYTE_RANGE {
+ StartingOffset: ::ULARGE_INTEGER,
+ Length: ::ULARGE_INTEGER,
+}}
+pub type PHTTP_BYTE_RANGE = *mut HTTP_BYTE_RANGE;
+STRUCT!{struct HTTP_VERSION {
+ MajorVersion: ::USHORT,
+ MinorVersion: ::USHORT,
+}}
+pub type PHTTP_VERSION = *mut HTTP_VERSION;
+pub const HTTP_VERSION_UNKNOWN: HTTP_VERSION = HTTP_VERSION { MajorVersion: 0, MinorVersion: 0 };
+pub const HTTP_VERSION_0_9: HTTP_VERSION = HTTP_VERSION { MajorVersion: 0, MinorVersion: 9 };
+pub const HTTP_VERSION_1_0: HTTP_VERSION = HTTP_VERSION { MajorVersion: 1, MinorVersion: 0 };
+pub const HTTP_VERSION_1_1: HTTP_VERSION = HTTP_VERSION { MajorVersion: 1, MinorVersion: 1 };
+#[inline] #[allow(dead_code)]
+pub fn HTTP_SET_VERSION(mut version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) {
+ version.MajorVersion = major;
+ version.MinorVersion = minor;
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTP_EQUAL_VERSION(version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ version.MajorVersion == major && version.MinorVersion == minor
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTP_GREATER_VERSION(version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ version.MajorVersion > major || (version.MajorVersion == major && version.MinorVersion > minor)
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTP_LESS_VERSION(version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ version.MajorVersion < major || (version.MajorVersion == major && version.MinorVersion < minor)
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTP_NOT_EQUAL_VERSION(version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ !HTTP_EQUAL_VERSION(version, major, minor)
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTP_GREATER_EQUAL_VERSION(version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ !HTTP_LESS_VERSION(version, major, minor)
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTP_LESS_EQUAL_VERSION(version: HTTP_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ !HTTP_GREATER_VERSION(version, major, minor)
+}
+ENUM!{enum HTTP_VERB {
+ HttpVerbUnparsed,
+ HttpVerbUnknown,
+ HttpVerbInvalid,
+ HttpVerbOPTIONS,
+ HttpVerbGET,
+ HttpVerbHEAD,
+ HttpVerbPOST,
+ HttpVerbPUT,
+ HttpVerbDELETE,
+ HttpVerbTRACE,
+ HttpVerbCONNECT,
+ HttpVerbTRACK,
+ HttpVerbMOVE,
+ HttpVerbCOPY,
+ HttpVerbPROPFIND,
+ HttpVerbPROPPATCH,
+ HttpVerbMKCOL,
+ HttpVerbLOCK,
+ HttpVerbUNLOCK,
+ HttpVerbSEARCH,
+ HttpVerbMaximum,
+}}
+pub type PHTTP_VERB = *mut HTTP_VERB;
+ENUM!{enum HTTP_HEADER_ID {
+ HttpHeaderCacheControl = 0,
+ HttpHeaderConnection = 1,
+ HttpHeaderDate = 2,
+ HttpHeaderKeepAlive = 3,
+ HttpHeaderPragma = 4,
+ HttpHeaderTrailer = 5,
+ HttpHeaderTransferEncoding = 6,
+ HttpHeaderUpgrade = 7,
+ HttpHeaderVia = 8,
+ HttpHeaderWarning = 9,
+ HttpHeaderAllow = 10,
+ HttpHeaderContentLength = 11,
+ HttpHeaderContentType = 12,
+ HttpHeaderContentEncoding = 13,
+ HttpHeaderContentLanguage = 14,
+ HttpHeaderContentLocation = 15,
+ HttpHeaderContentMd5 = 16,
+ HttpHeaderContentRange = 17,
+ HttpHeaderExpires = 18,
+ HttpHeaderLastModified = 19,
+ HttpHeaderAccept = 20,
+ HttpHeaderAcceptCharset = 21,
+ HttpHeaderAcceptEncoding = 22,
+ HttpHeaderAcceptLanguage = 23,
+ HttpHeaderAuthorization = 24,
+ HttpHeaderCookie = 25,
+ HttpHeaderExpect = 26,
+ HttpHeaderFrom = 27,
+ HttpHeaderHost = 28,
+ HttpHeaderIfMatch = 29,
+ HttpHeaderIfModifiedSince = 30,
+ HttpHeaderIfNoneMatch = 31,
+ HttpHeaderIfRange = 32,
+ HttpHeaderIfUnmodifiedSince = 33,
+ HttpHeaderMaxForwards = 34,
+ HttpHeaderProxyAuthorization = 35,
+ HttpHeaderReferer = 36,
+ HttpHeaderRange = 37,
+ HttpHeaderTe = 38,
+ HttpHeaderTranslate = 39,
+ HttpHeaderUserAgent = 40,
+ HttpHeaderRequestMaximum = 41,
+ HttpHeaderAcceptRanges = 20,
+ HttpHeaderAge = 21,
+ HttpHeaderEtag = 22,
+ HttpHeaderLocation = 23,
+ HttpHeaderProxyAuthenticate = 24,
+ HttpHeaderRetryAfter = 25,
+ HttpHeaderServer = 26,
+ HttpHeaderSetCookie = 27,
+ HttpHeaderVary = 28,
+ HttpHeaderWwwAuthenticate = 29,
+ HttpHeaderResponseMaximum = 30,
+ HttpHeaderMaximum = 41,
+}}
+pub type PHTTP_HEADER_ID = *mut HTTP_HEADER_ID;
+STRUCT!{struct HTTP_KNOWN_HEADER {
+ RawValueLength: ::USHORT,
+ pRawValue: ::PCSTR,
+}}
+pub type PHTTP_KNOWN_HEADER = *mut HTTP_KNOWN_HEADER;
+STRUCT!{struct HTTP_UNKNOWN_HEADER {
+ NameLength: ::USHORT,
+ RawValueLength: ::USHORT,
+ pName: ::PCSTR,
+ pRawValue: ::PCSTR,
+}}
+pub type PHTTP_UNKNOWN_HEADER = *mut HTTP_UNKNOWN_HEADER;
+ENUM!{enum HTTP_LOG_DATA_TYPE {
+ HttpLogDataTypeFields = 0,
+}}
+pub type PHTTP_LOG_DATA_TYPE = *mut HTTP_LOG_DATA_TYPE;
+STRUCT!{struct HTTP_LOG_DATA {
+ Type: HTTP_LOG_DATA_TYPE,
+}}
+pub type PHTTP_LOG_DATA = *mut HTTP_LOG_DATA;
+STRUCT!{struct HTTP_LOG_FIELDS_DATA {
+ Base: HTTP_LOG_DATA,
+ UserNameLength: ::USHORT,
+ UriStemLength: ::USHORT,
+ ClientIpLength: ::USHORT,
+ ServerNameLength: ::USHORT,
+ ServiceNameLength: ::USHORT,
+ ServerIpLength: ::USHORT,
+ MethodLength: ::USHORT,
+ UriQueryLength: ::USHORT,
+ HostLength: ::USHORT,
+ UserAgentLength: ::USHORT,
+ CookieLength: ::USHORT,
+ ReferrerLength: ::USHORT,
+ UserName: ::PWCHAR,
+ UriStem: ::PWCHAR,
+ ClientIp: ::PCHAR,
+ ServerName: ::PCHAR,
+ ServiceName: ::PCHAR,
+ ServerIp: ::PCHAR,
+ Method: ::PCHAR,
+ UriQuery: ::PCHAR,
+ Host: ::PCHAR,
+ UserAgent: ::PCHAR,
+ Cookie: ::PCHAR,
+ Referrer: ::PCHAR,
+ ServerPort: ::USHORT,
+ ProtocolStatus: ::USHORT,
+ Win32Status: ::ULONG,
+ MethodNum: HTTP_VERB,
+ SubStatus: ::USHORT,
+}}
+pub type PHTTP_LOG_FIELDS_DATA = *mut HTTP_LOG_FIELDS_DATA;
+ENUM!{enum HTTP_DATA_CHUNK_TYPE {
+ HttpDataChunkFromMemory,
+ HttpDataChunkFromFileHandle,
+ HttpDataChunkFromFragmentCache,
+ HttpDataChunkFromFragmentCacheEx,
+ HttpDataChunkMaximum,
+}}
+pub type PHTTP_DATA_CHUNK_TYPE = *mut HTTP_DATA_CHUNK_TYPE;
+STRUCT!{struct HTTP_DATA_CHUNK_FromMemory {
+ pBuffer: ::PVOID,
+ BufferLength: ::ULONG,
+}}
+STRUCT!{struct HTTP_DATA_CHUNK_FromFileHandle {
+ ByteRange: HTTP_BYTE_RANGE,
+ FileHandle: ::HANDLE,
+}}
+STRUCT!{struct HTTP_DATA_CHUNK_FromFragmentCache {
+ FragmentNameLength: ::USHORT,
+ pFragmentName: ::PCWSTR,
+}}
+STRUCT!{struct HTTP_DATA_CHUNK_FromFragmentCacheEx {
+ ByteRange: HTTP_BYTE_RANGE,
+ pFragmentName: ::PCWSTR,
+}}
+STRUCT!{struct HTTP_DATA_CHUNK {
+ DataChunkType: HTTP_DATA_CHUNK_TYPE,
+ FromFileHandle: HTTP_DATA_CHUNK_FromFileHandle,
+}}
+UNION!(HTTP_DATA_CHUNK, FromFileHandle, FromMemory, FromMemory_mut, HTTP_DATA_CHUNK_FromMemory);
+UNION!(
+ HTTP_DATA_CHUNK, FromFileHandle, FromFragmentCache, FromFragmentCache_mut,
+ HTTP_DATA_CHUNK_FromFragmentCache
+);
+UNION!(
+ HTTP_DATA_CHUNK, FromFileHandle, FromFragmentCacheEx, FromFragmentCacheEx_mut,
+ HTTP_DATA_CHUNK_FromFragmentCacheEx
+);
+pub type PHTTP_DATA_CHUNK = *mut HTTP_DATA_CHUNK;
+STRUCT!{nodebug struct HTTP_REQUEST_HEADERS {
+ UnknownHeaderCount: ::USHORT,
+ pUnknownHeaders: PHTTP_UNKNOWN_HEADER,
+ TrailerCount: ::USHORT,
+ pTrailers: PHTTP_UNKNOWN_HEADER,
+ KnownHeaders: [HTTP_KNOWN_HEADER; 41], // FIXME HttpHeaderRequestMaximum
+}}
+pub type PHTTP_REQUEST_HEADERS = *mut HTTP_REQUEST_HEADERS;
+STRUCT!{nodebug struct HTTP_RESPONSE_HEADERS {
+ UnknownHeaderCount: ::USHORT,
+ pUnknownHeaders: PHTTP_UNKNOWN_HEADER,
+ TrailerCount: ::USHORT,
+ pTrailers: PHTTP_UNKNOWN_HEADER,
+ KnownHeaders: [HTTP_KNOWN_HEADER; 30], // FIXME HttpHeaderResponseMaximum
+}}
+pub type PHTTP_RESPONSE_HEADERS = *mut HTTP_RESPONSE_HEADERS;
+STRUCT!{struct HTTP_TRANSPORT_ADDRESS {
+ pRemoteAddress: ::PSOCKADDR,
+ pLocalAddress: ::PSOCKADDR,
+}}
+pub type PHTTP_TRANSPORT_ADDRESS = *mut HTTP_TRANSPORT_ADDRESS;
+STRUCT!{struct HTTP_COOKED_URL {
+ FullUrlLength: ::USHORT,
+ HostLength: ::USHORT,
+ AbsPathLength: ::USHORT,
+ QueryStringLength: ::USHORT,
+ pFullUrl: ::PCWSTR,
+ pHost: ::PCWSTR,
+ pAbsPath: ::PCWSTR,
+ pQueryString: ::PCWSTR,
+}}
+pub type PHTTP_COOKED_URL = *mut HTTP_COOKED_URL;
+pub type HTTP_URL_CONTEXT = ::ULONGLONG;
+pub const HTTP_URL_FLAG_REMOVE_ALL: ::ULONG = 0x00000001;
+ENUM!{enum HTTP_AUTH_STATUS {
+ HttpAuthStatusSuccess,
+ HttpAuthStatusNotAuthenticated,
+ HttpAuthStatusFailure,
+}}
+pub type PHTTP_AUTH_STATUS = *mut HTTP_AUTH_STATUS;
+ENUM!{enum HTTP_REQUEST_AUTH_TYPE {
+ HttpRequestAuthTypeNone = 0,
+ HttpRequestAuthTypeBasic,
+ HttpRequestAuthTypeDigest,
+ HttpRequestAuthTypeNTLM,
+ HttpRequestAuthTypeNegotiate,
+ HttpRequestAuthTypeKerberos,
+}}
+pub type PHTTP_REQUEST_AUTH_TYPE = *mut HTTP_REQUEST_AUTH_TYPE;
+STRUCT!{struct HTTP_SSL_CLIENT_CERT_INFO {
+ CertFlags: ::ULONG,
+ CertEncodedSize: ::ULONG,
+ pCertEncoded: ::PUCHAR,
+ Token: ::HANDLE,
+ CertDeniedByMapper: ::BOOLEAN,
+}}
+pub type PHTTP_SSL_CLIENT_CERT_INFO = *mut HTTP_SSL_CLIENT_CERT_INFO;
+pub const HTTP_RECEIVE_SECURE_CHANNEL_TOKEN: ::ULONG = 0x1;
+STRUCT!{struct HTTP_SSL_INFO {
+ ServerCertKeySize: ::USHORT,
+ ConnectionKeySize: ::USHORT,
+ ServerCertIssuerSize: ::ULONG,
+ ServerCertSubjectSize: ::ULONG,
+ pServerCertIssuer: ::PCSTR,
+ pServerCertSubject: ::PCSTR,
+ pClientCertInfo: PHTTP_SSL_CLIENT_CERT_INFO,
+ SslClientCertNegotiated: ::ULONG,
+}}
+pub type PHTTP_SSL_INFO = *mut HTTP_SSL_INFO;
+ENUM!{enum HTTP_REQUEST_INFO_TYPE {
+ HttpRequestInfoTypeAuth,
+ HttpRequestInfoTypeChannelBind,
+}}
+STRUCT!{struct HTTP_REQUEST_INFO {
+ InfoType: HTTP_REQUEST_INFO_TYPE,
+ InfoLength: ::ULONG,
+ pInfo: ::PVOID,
+}}
+pub type PHTTP_REQUEST_INFO = *mut HTTP_REQUEST_INFO;
+pub const HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED: ::ULONG = 0x00000001;
+STRUCT!{struct HTTP_REQUEST_AUTH_INFO {
+ AuthStatus: HTTP_AUTH_STATUS,
+ SecStatus: ::SECURITY_STATUS,
+ Flags: ::ULONG,
+ AuthType: HTTP_REQUEST_AUTH_TYPE,
+ AccessToken: ::HANDLE,
+ ContextAttributes: ::ULONG,
+ PackedContextLength: ::ULONG,
+ PackedContextType: ::ULONG,
+ PackedContext: ::PVOID,
+ MutualAuthDataLength: ::ULONG,
+ pMutualAuthData: ::PCHAR,
+ PackageNameLength: ::USHORT,
+ pPackageName: ::PWSTR,
+}}
+pub type PHTTP_REQUEST_AUTH_INFO = *mut HTTP_REQUEST_AUTH_INFO;
+STRUCT!{nodebug struct HTTP_REQUEST_V1 {
+ Flags: ::ULONG,
+ ConnectionId: HTTP_CONNECTION_ID,
+ RequestId: HTTP_REQUEST_ID,
+ UrlContext: HTTP_URL_CONTEXT,
+ Version: HTTP_VERSION,
+ Verb: HTTP_VERB,
+ UnknownVerbLength: ::USHORT,
+ RawUrlLength: ::USHORT,
+ pUnknownVerb: ::PCSTR,
+ pRawUrl: ::PCSTR,
+ CookedUrl: HTTP_COOKED_URL,
+ Address: HTTP_TRANSPORT_ADDRESS,
+ Headers: HTTP_REQUEST_HEADERS,
+ BytesReceived: ::ULONGLONG,
+ EntityChunkCount: ::USHORT,
+ pEntityChunks: PHTTP_DATA_CHUNK,
+ RawConnectionId: HTTP_RAW_CONNECTION_ID,
+ pSslInfo: PHTTP_SSL_INFO,
+}}
+pub type PHTTP_REQUEST_V1 = *mut HTTP_REQUEST_V1;
+STRUCT!{nodebug struct HTTP_REQUEST_V2 {
+ Base: HTTP_REQUEST_V1,
+ RequestInfoCount: ::USHORT,
+ pRequestInfo: PHTTP_REQUEST_INFO,
+}}
+pub type PHTTP_REQUEST_V2 = *mut HTTP_REQUEST_V2;
+pub type HTTP_REQUEST = HTTP_REQUEST_V2;
+pub type PHTTP_REQUEST = *mut HTTP_REQUEST;
+pub const HTTP_REQUEST_FLAG_MORE_ENTITY_BODY_EXISTS: ::ULONG = 0x00000001;
+pub const HTTP_REQUEST_FLAG_IP_ROUTED: ::ULONG = 0x00000002;
+STRUCT!{nodebug struct HTTP_RESPONSE_V1 {
+ Flags: ::ULONG,
+ Version: HTTP_VERSION,
+ StatusCode: ::USHORT,
+ ReasonLength: ::USHORT,
+ pReason: ::PCSTR,
+ Headers: HTTP_RESPONSE_HEADERS,
+ EntityChunkCount: ::USHORT,
+ pEntityChunks: PHTTP_DATA_CHUNK,
+}}
+pub type PHTTP_RESPONSE_V1 = *mut HTTP_RESPONSE_V1;
+pub const HTTP_RESPONSE_FLAG_MULTIPLE_ENCODINGS_AVAILABLE: ::ULONG = 0x00000001;
+ENUM!{enum HTTP_RESPONSE_INFO_TYPE {
+ HttpResponseInfoTypeMultipleKnownHeaders,
+ HttpResponseInfoTypeAuthenticationProperty,
+ HttpResponseInfoTypeQoSProperty,
+ HttpResponseInfoTypeChannelBind,
+}}
+pub type PHTTP_RESPONSE_INFO_TYPE = *mut HTTP_RESPONSE_INFO_TYPE;
+STRUCT!{struct HTTP_RESPONSE_INFO {
+ Type: HTTP_RESPONSE_INFO_TYPE,
+ Length: ::ULONG,
+ pInfo: ::PVOID,
+}}
+pub type PHTTP_RESPONSE_INFO = *mut HTTP_RESPONSE_INFO;
+pub const HTTP_RESPONSE_INFO_FLAGS_PRESERVE_ORDER: ::ULONG = 0x00000001;
+STRUCT!{struct HTTP_MULTIPLE_KNOWN_HEADERS {
+ HeaderId: HTTP_HEADER_ID,
+ Flags: ::ULONG,
+ KnownHeaderCount: ::USHORT,
+ KnownHeaders: PHTTP_KNOWN_HEADER,
+}}
+pub type PHTTP_MULTIPLE_KNOWN_HEADERS = *mut HTTP_MULTIPLE_KNOWN_HEADERS;
+STRUCT!{nodebug struct HTTP_RESPONSE_V2 {
+ Base: HTTP_RESPONSE_V1,
+ ResponseInfoCount: ::USHORT,
+ pResponseInfo: PHTTP_RESPONSE_INFO,
+}}
+pub type PHTTP_RESPONSE_V2 = *mut HTTP_RESPONSE_V2;
+pub type HTTP_RESPONSE = HTTP_RESPONSE_V2;
+pub type PHTTP_RESPONSE = *mut HTTP_RESPONSE;
+STRUCT!{struct HTTPAPI_VERSION {
+ HttpApiMajorVersion: ::USHORT,
+ HttpApiMinorVersion: ::USHORT,
+}}
+pub type PHTTPAPI_VERSION = *mut HTTPAPI_VERSION;
+pub const HTTPAPI_VERSION_2: HTTPAPI_VERSION = HTTPAPI_VERSION {
+ HttpApiMajorVersion: 2, HttpApiMinorVersion: 0,
+};
+pub const HTTPAPI_VERSION_1: HTTPAPI_VERSION = HTTPAPI_VERSION {
+ HttpApiMajorVersion: 1, HttpApiMinorVersion: 0,
+};
+#[inline] #[allow(dead_code)]
+pub fn HTTPAPI_EQUAL_VERSION(version: HTTPAPI_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ version.HttpApiMajorVersion == major && version.HttpApiMinorVersion == minor
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTPAPI_GREATER_VERSION(version: HTTPAPI_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ version.HttpApiMajorVersion > major ||
+ (version.HttpApiMajorVersion == major && version.HttpApiMinorVersion > minor)
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTPAPI_LESS_VERSION(version: HTTPAPI_VERSION, major: ::USHORT, minor: ::USHORT) -> bool {
+ version.HttpApiMajorVersion < major ||
+ (version.HttpApiMajorVersion == major && version.HttpApiMinorVersion < minor)
+}
+#[inline] #[allow(dead_code)]
+pub fn HTTPAPI_VERSION_GREATER_OR_EQUAL(
+ version: HTTPAPI_VERSION, major: ::USHORT, minor: ::USHORT
+) -> bool {
+ !HTTPAPI_LESS_VERSION(version, major, minor)
+}
+ENUM!{enum HTTP_CACHE_POLICY_TYPE {
+ HttpCachePolicyNocache,
+ HttpCachePolicyUserInvalidates,
+ HttpCachePolicyTimeToLive,
+ HttpCachePolicyMaximum,
+}}
+pub type PHTTP_CACHE_POLICY_TYPE = *mut HTTP_CACHE_POLICY_TYPE;
+STRUCT!{struct HTTP_CACHE_POLICY {
+ Policy: HTTP_CACHE_POLICY_TYPE,
+ SecondsToLive: ::ULONG,
+}}
+pub type PHTTP_CACHE_POLICY = *mut HTTP_CACHE_POLICY;
+ENUM!{enum HTTP_SERVICE_CONFIG_ID {
+ HttpServiceConfigIPListenList,
+ HttpServiceConfigSSLCertInfo,
+ HttpServiceConfigUrlAclInfo,
+ HttpServiceConfigTimeout,
+ HttpServiceConfigCache,
+ HttpServiceConfigSslSniCertInfo,
+ HttpServiceConfigSslCcsCertInfo,
+ HttpServiceConfigMax,
+}}
+pub type PHTTP_SERVICE_CONFIG_ID = *mut HTTP_SERVICE_CONFIG_ID;
+ENUM!{enum HTTP_SERVICE_CONFIG_QUERY_TYPE {
+ HttpServiceConfigQueryExact,
+ HttpServiceConfigQueryNext,
+ HttpServiceConfigQueryMax,
+}}
+pub type PHTTP_SERVICE_CONFIG_QUERY_TYPE = *mut HTTP_SERVICE_CONFIG_QUERY_TYPE;
+STRUCT!{struct HTTP_SERVICE_CONFIG_SSL_KEY {
+ pIpPort: ::PSOCKADDR,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_KEY = *mut HTTP_SERVICE_CONFIG_SSL_KEY;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_SSL_SNI_KEY {
+ IpPort: ::SOCKADDR_STORAGE,
+ Host: ::PWSTR,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_SNI_KEY = *mut HTTP_SERVICE_CONFIG_SSL_SNI_KEY;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_SSL_CCS_KEY {
+ LocalAddress: ::SOCKADDR_STORAGE,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_CCS_KEY = *mut HTTP_SERVICE_CONFIG_SSL_CCS_KEY;
+STRUCT!{struct HTTP_SERVICE_CONFIG_SSL_PARAM {
+ SslHashLength: ::ULONG,
+ pSslHash: ::PVOID,
+ AppId: ::GUID,
+ pSslCertStoreName: ::PWSTR,
+ DefaultCertCheckMode: ::DWORD,
+ DefaultRevocationFreshnessTime: ::DWORD,
+ DefaultRevocationUrlRetrievalTimeout: ::DWORD,
+ pDefaultSslCtlIdentifier: ::PWSTR,
+ pDefaultSslCtlStoreName: ::PWSTR,
+ DefaultFlags: ::DWORD,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_PARAM = *mut HTTP_SERVICE_CONFIG_SSL_PARAM;
+pub const HTTP_SERVICE_CONFIG_SSL_FLAG_USE_DS_MAPPER: ::DWORD = 0x00000001;
+pub const HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT: ::DWORD = 0x00000002;
+pub const HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER: ::DWORD = 0x00000004;
+STRUCT!{struct HTTP_SERVICE_CONFIG_SSL_SET {
+ KeyDesc: HTTP_SERVICE_CONFIG_SSL_KEY,
+ ParamDesc: HTTP_SERVICE_CONFIG_SSL_PARAM,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_SET = *mut HTTP_SERVICE_CONFIG_SSL_SET;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_SSL_SNI_SET {
+ KeyDesc: HTTP_SERVICE_CONFIG_SSL_SNI_KEY,
+ ParamDesc: HTTP_SERVICE_CONFIG_SSL_PARAM,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_SNI_SET = *mut HTTP_SERVICE_CONFIG_SSL_SNI_SET;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_SSL_CCS_SET {
+ KeyDesc: HTTP_SERVICE_CONFIG_SSL_CCS_KEY,
+ ParamDesc: HTTP_SERVICE_CONFIG_SSL_PARAM,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_CCS_SET = *mut HTTP_SERVICE_CONFIG_SSL_CCS_SET;
+STRUCT!{struct HTTP_SERVICE_CONFIG_SSL_QUERY {
+ QueryDesc: HTTP_SERVICE_CONFIG_QUERY_TYPE,
+ KeyDesc: HTTP_SERVICE_CONFIG_SSL_KEY,
+ dwToken: ::DWORD,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_QUERY = *mut HTTP_SERVICE_CONFIG_SSL_QUERY;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_SSL_SNI_QUERY {
+ QueryDesc: HTTP_SERVICE_CONFIG_QUERY_TYPE,
+ KeyDesc: HTTP_SERVICE_CONFIG_SSL_SNI_KEY,
+ dwToken: ::DWORD,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_SNI_QUERY = *mut HTTP_SERVICE_CONFIG_SSL_SNI_QUERY;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_SSL_CCS_QUERY {
+ QueryDesc: HTTP_SERVICE_CONFIG_QUERY_TYPE,
+ KeyDesc: HTTP_SERVICE_CONFIG_SSL_CCS_KEY,
+ dwToken: ::DWORD,
+}}
+pub type PHTTP_SERVICE_CONFIG_SSL_CCS_QUERY = *mut HTTP_SERVICE_CONFIG_SSL_CCS_QUERY;
+STRUCT!{struct HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM {
+ AddrLength: ::USHORT,
+ pAddress: ::PSOCKADDR,
+}}
+pub type PHTTP_SERVICE_CONFIG_IP_LISTEN_PARAM = *mut HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM;
+STRUCT!{nodebug struct HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY {
+ AddrCount: ::ULONG,
+ AddrList: [::SOCKADDR_STORAGE; ::ANYSIZE_ARRAY],
+}}
+pub type PHTTP_SERVICE_CONFIG_IP_LISTEN_QUERY = *mut HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY;
+STRUCT!{struct HTTP_SERVICE_CONFIG_URLACL_KEY {
+ pUrlPrefix: ::PWSTR,
+}}
+pub type PHTTP_SERVICE_CONFIG_URLACL_KEY = *mut HTTP_SERVICE_CONFIG_URLACL_KEY;
+STRUCT!{struct HTTP_SERVICE_CONFIG_URLACL_PARAM {
+ pStringSecurityDescriptor: ::PWSTR,
+}}
+pub type PHTTP_SERVICE_CONFIG_URLACL_PARAM = *mut HTTP_SERVICE_CONFIG_URLACL_PARAM;
+STRUCT!{struct HTTP_SERVICE_CONFIG_URLACL_SET {
+ KeyDesc: HTTP_SERVICE_CONFIG_URLACL_KEY,
+ ParamDesc: HTTP_SERVICE_CONFIG_URLACL_PARAM,
+}}
+pub type PHTTP_SERVICE_CONFIG_URLACL_SET = *mut HTTP_SERVICE_CONFIG_URLACL_SET;
+STRUCT!{struct HTTP_SERVICE_CONFIG_URLACL_QUERY {
+ QueryDesc: HTTP_SERVICE_CONFIG_QUERY_TYPE,
+ KeyDesc: HTTP_SERVICE_CONFIG_URLACL_KEY,
+ dwToken: ::DWORD,
+}}
+pub type PHTTP_SERVICE_CONFIG_URLACL_QUERY = *mut HTTP_SERVICE_CONFIG_URLACL_QUERY;
+ENUM!{enum HTTP_SERVICE_CONFIG_CACHE_KEY {
+ MaxCacheResponseSize = 0,
+ CacheRangeChunkSize,
+}}
+pub type PHTTP_SERVICE_CONFIG_CACHE_KEY = *mut HTTP_SERVICE_CONFIG_CACHE_KEY;
+pub type HTTP_SERVICE_CONFIG_CACHE_PARAM = ::ULONG;
+pub type PHTTP_SERVICE_CONFIG_CACHE_PARAM = *mut ::ULONG;
+STRUCT!{struct HTTP_SERVICE_CONFIG_CACHE_SET {
+ KeyDesc: HTTP_SERVICE_CONFIG_CACHE_KEY,
+ ParamDesc: HTTP_SERVICE_CONFIG_CACHE_PARAM,
+}}
+pub type PHTTP_SERVICE_CONFIG_CACHE_SET = *mut HTTP_SERVICE_CONFIG_CACHE_SET;
diff --git a/third_party/rust/winapi-0.2.8/src/imm.rs b/third_party/rust/winapi-0.2.8/src/imm.rs
new file mode 100644
index 0000000000..cadf6cf7ff
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/imm.rs
@@ -0,0 +1,3 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub type LPUINT = *mut ::c_uint;
diff --git a/third_party/rust/winapi-0.2.8/src/inaddr.rs b/third_party/rust/winapi-0.2.8/src/inaddr.rs
new file mode 100644
index 0000000000..f89e9babe6
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/inaddr.rs
@@ -0,0 +1,22 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! IPv4 Internet address
+STRUCT!{struct in_addr_S_un_b {
+ s_b1: ::UCHAR,
+ s_b2: ::UCHAR,
+ s_b3: ::UCHAR,
+ s_b4: ::UCHAR,
+}}
+STRUCT!{struct in_addr_S_un_w {
+ s_w1: ::USHORT,
+ s_w2: ::USHORT,
+}}
+STRUCT!{struct in_addr {
+ S_un: ::ULONG,
+}}
+UNION!(in_addr, S_un, S_un_b, S_un_b_mut, in_addr_S_un_b);
+UNION!(in_addr, S_un, S_un_w, S_un_w_mut, in_addr_S_un_w);
+UNION!(in_addr, S_un, S_addr, S_addr_mut, ::ULONG);
+pub type IN_ADDR = in_addr;
+pub type PIN_ADDR = *mut in_addr;
+pub type LPIN_ADDR = *mut in_addr;
diff --git a/third_party/rust/winapi-0.2.8/src/inspectable.rs b/third_party/rust/winapi-0.2.8/src/inspectable.rs
new file mode 100644
index 0000000000..36575e1e50
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/inspectable.rs
@@ -0,0 +1,15 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub type LPINSPECTABLE = *mut IInspectable;
+ENUM!{enum TrustLevel {
+ BaseTrust = 0,
+ PartialTrust,
+ FullTrust,
+}}
+RIDL!(
+interface IInspectable(IInspectableVtbl): IUnknown(IUnknownVtbl) {
+ fn GetIids(&mut self, iidCount: *mut ::ULONG, iids: *mut *mut ::IID) -> ::HRESULT,
+ fn GetRuntimeClassName(&mut self, className: *mut ::HSTRING) -> ::HRESULT,
+ fn GetTrustLevel(&mut self, trustLevel: *mut TrustLevel) -> ::HRESULT
+}
+);
diff --git a/third_party/rust/winapi-0.2.8/src/ksmedia.rs b/third_party/rust/winapi-0.2.8/src/ksmedia.rs
new file mode 100644
index 0000000000..8ef2700716
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ksmedia.rs
@@ -0,0 +1,18 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_ANALOG, 0x6DBA3190, 0x67BD, 0x11CF,
+ 0xA0, 0xF7, 0x00, 0x20, 0xAF, 0xD1, 0x56, 0xE4);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_PCM, 0x00000001, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, 0x00000003, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_DRM, 0x00000009, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_ALAW, 0x00000006, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_MULAW, 0x00000007, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_ADPCM, 0x00000002, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
+DEFINE_GUID!(KSDATAFORMAT_SUBTYPE_MPEG, 0x00000050, 0x0000, 0x0010,
+ 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);
diff --git a/third_party/rust/winapi-0.2.8/src/lib.rs b/third_party/rust/winapi-0.2.8/src/lib.rs
new file mode 100644
index 0000000000..0e99f815a8
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lib.rs
@@ -0,0 +1,368 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Types and constants for WinAPI bindings.
+#![allow(bad_style)]
+#![warn(trivial_casts, trivial_numeric_casts)]
+#![warn(unused_qualifications, unused)]
+#![cfg(windows)]
+//-------------------------------------------------------------------------------------------------
+// Imports
+//-------------------------------------------------------------------------------------------------
+pub use std::os::raw::{
+ c_void,
+ c_char,
+ c_schar,
+ c_uchar,
+ c_short,
+ c_ushort,
+ c_int,
+ c_uint,
+ c_long,
+ c_ulong,
+ c_longlong,
+ c_ulonglong,
+ c_float,
+ c_double,
+};
+pub use activation::*;
+pub use audioclient::*;
+pub use audiosessiontypes::*;
+pub use basetsd::*;
+pub use bcrypt::*;
+pub use cfg::*;
+pub use cfgmgr32::*;
+pub use combaseapi::*;
+pub use commctrl::*;
+pub use commdlg::*;
+pub use corsym::*;
+pub use d2d1::*;
+pub use d2dbasetypes::*;
+pub use d3d9::*;
+pub use d3d9caps::*;
+pub use d3d9types::*;
+pub use d3d11::*;
+pub use d3d10shader::*;
+pub use d3d11shader::*;
+pub use d3d12::*;
+pub use d3d12sdklayers::*;
+pub use d3d12shader::*;
+pub use d3dcommon::*;
+pub use d3dcompiler::*;
+pub use dbghelp::*;
+pub use dcommon::*;
+pub use devpropdef::*;
+pub use docobj::*;
+pub use dpapi::*;
+pub use dsgetdc::*;
+pub use dsound::*;
+pub use dsrole::*;
+pub use dwmapi::*;
+pub use dwrite::*;
+pub use dxgi::*;
+pub use dxgi1_2::*;
+pub use dxgi1_3::*;
+pub use dxgi1_4::*;
+pub use dxgiformat::*;
+pub use dxgitype::*;
+pub use errhandlingapi::*;
+pub use excpt::*;
+pub use fileapi::*;
+pub use gl::*;
+pub use guiddef::*;
+pub use heapapi::*;
+pub use hidclass::*;
+pub use hidpi::*;
+pub use hidsdi::*;
+pub use hidusage::*;
+pub use hstring::*;
+pub use http::*;
+pub use imm::*;
+pub use inaddr::*;
+pub use inspectable::*;
+pub use ksmedia::*;
+pub use libloaderapi::*;
+pub use lmaccess::*;
+pub use lmcons::*;
+pub use lmdfs::*;
+pub use lmerrlog::*;
+pub use lmjoin::*;
+pub use lsalookup::*;
+pub use memoryapi::*;
+pub use minschannel::*;
+pub use minwinbase::*;
+pub use minwindef::*;
+pub use mmdeviceapi::*;
+pub use mmreg::*;
+pub use mmsystem::*;
+pub use mscat::*;
+pub use mssip::*;
+pub use nb30::*;
+pub use ncrypt::*;
+pub use ntdef::*;
+pub use ntsecapi::*;
+pub use ntstatus::*;
+pub use oaidl::*;
+pub use objbase::*;
+pub use objidl::*;
+pub use objidlbase::*;
+pub use olectl::*;
+pub use pdh::*;
+pub use playsoundapi::*;
+pub use processsnapshot::*;
+pub use processthreadsapi::*;
+pub use propidl::*;
+pub use propsys::*;
+pub use prsht::*;
+pub use psapi::*;
+pub use qos::*;
+pub use reason::*;
+pub use restrictederrorinfo::*;
+pub use roapi::*;
+pub use roerrorapi::*;
+pub use rpc::*;
+pub use rpcdce::*;
+pub use sapi::*;
+pub use schannel::*;
+pub use servprov::*;
+pub use setupapi::*;
+pub use shellapi::*;
+pub use shellscalingapi::*;
+pub use shlguid::*;
+pub use shlobj::*;
+pub use shobjidl::*;
+pub use shtypes::*;
+pub use spapidef::*;
+pub use sqltypes::*;
+pub use sspi::*;
+pub use strmif::*;
+pub use subauth::*;
+pub use synchapi::*;
+pub use sysinfoapi::*;
+pub use threadpoolapi::*;
+pub use timezoneapi::*;
+pub use tlhelp32::*;
+pub use unknwnbase::*;
+pub use urlhist::*;
+pub use urlmon::*;
+pub use usb::*;
+pub use usbspec::*;
+pub use usp10::*;
+pub use vadefs::*;
+pub use vsbackup::*;
+pub use vss::*;
+pub use vsserror::*;
+pub use vswriter::*;
+pub use werapi::*;
+pub use winbase::*;
+pub use wincon::*;
+pub use wincred::*;
+pub use wincrypt::*;
+pub use windowsx::*;
+pub use windef::*;
+pub use windowscodecs::*;
+pub use winerror::*;
+pub use winevt::*;
+pub use wingdi::*;
+pub use winhttp::*;
+pub use winioctl::*;
+pub use winnetwk::*;
+pub use winnls::*;
+pub use winnt::*;
+pub use winreg::*;
+pub use winscard::*;
+pub use winsmcrd::*;
+pub use winsock2::*;
+pub use winspool::*;
+pub use winstring::*;
+pub use winsvc::*;
+pub use winusb::*;
+pub use winusbio::*;
+pub use winuser::*;
+pub use ws2def::*;
+pub use ws2ipdef::*;
+pub use ws2spi::*;
+pub use ws2tcpip::*;
+pub use wtypes::*;
+pub use wtypesbase::*;
+pub use xinput::*;
+//-------------------------------------------------------------------------------------------------
+// Modules
+//-------------------------------------------------------------------------------------------------
+#[macro_use] mod macros;
+pub mod activation;
+pub mod audioclient;
+pub mod audiosessiontypes;
+pub mod basetsd;
+pub mod bcrypt;
+pub mod cfg;
+pub mod cfgmgr32;
+pub mod combaseapi;
+pub mod commctrl;
+pub mod commdlg;
+pub mod corsym;
+pub mod d2d1;
+pub mod d2dbasetypes;
+pub mod d3d9;
+pub mod d3d9caps;
+pub mod d3d9types;
+pub mod d3d11;
+pub mod d3d10shader;
+pub mod d3d11shader;
+pub mod d3d12;
+pub mod d3d12sdklayers;
+pub mod d3d12shader;
+pub mod d3dcommon;
+pub mod d3dcompiler;
+pub mod dbghelp;
+pub mod dcommon;
+pub mod devpropdef;
+pub mod docobj;
+pub mod dpapi;
+pub mod dsgetdc;
+pub mod dsound;
+pub mod dsrole;
+pub mod dwmapi;
+pub mod dwrite;
+pub mod dxgi;
+pub mod dxgi1_2;
+pub mod dxgi1_3;
+pub mod dxgi1_4;
+pub mod dxgiformat;
+pub mod dxgitype;
+pub mod errhandlingapi;
+pub mod excpt;
+pub mod fileapi;
+pub mod gl;
+pub mod guiddef;
+pub mod heapapi;
+pub mod hidclass;
+pub mod hidpi;
+pub mod hidsdi;
+pub mod hidusage;
+pub mod hstring;
+pub mod http;
+pub mod imm;
+pub mod inaddr;
+pub mod inspectable;
+pub mod ksmedia;
+pub mod libloaderapi;
+pub mod lmaccess;
+pub mod lmcons;
+pub mod lmdfs;
+pub mod lmerrlog;
+pub mod lmjoin;
+pub mod lsalookup;
+pub mod memoryapi;
+pub mod minschannel;
+pub mod minwinbase;
+pub mod minwindef;
+pub mod mmdeviceapi;
+pub mod mmreg;
+pub mod mmsystem;
+pub mod mscat;
+pub mod mssip;
+pub mod nb30;
+pub mod ncrypt;
+pub mod ntdef;
+pub mod ntsecapi;
+pub mod ntstatus;
+pub mod oaidl;
+pub mod objbase;
+pub mod objidl;
+pub mod objidlbase;
+pub mod olectl;
+pub mod pdh;
+pub mod playsoundapi;
+pub mod processsnapshot;
+pub mod processthreadsapi;
+pub mod propidl;
+pub mod propsys;
+pub mod prsht;
+pub mod psapi;
+pub mod qos;
+pub mod reason;
+pub mod restrictederrorinfo;
+pub mod roapi;
+pub mod roerrorapi;
+pub mod rpc;
+pub mod rpcdce;
+pub mod sapi;
+pub mod schannel;
+pub mod servprov;
+pub mod setupapi;
+pub mod shellapi;
+pub mod shellscalingapi;
+pub mod shlguid;
+pub mod shlobj;
+pub mod shobjidl;
+pub mod shtypes;
+pub mod spapidef;
+pub mod sqltypes;
+pub mod sspi;
+pub mod strmif;
+pub mod subauth;
+pub mod synchapi;
+pub mod sysinfoapi;
+pub mod threadpoolapi;
+pub mod timezoneapi;
+pub mod tlhelp32;
+pub mod unknwnbase;
+pub mod urlhist;
+pub mod urlmon;
+pub mod usb;
+pub mod usbspec;
+pub mod usp10;
+pub mod vadefs;
+pub mod vsbackup;
+pub mod vss;
+pub mod vsserror;
+pub mod vswriter;
+pub mod werapi;
+pub mod winbase;
+pub mod wincon;
+pub mod wincred;
+pub mod wincrypt;
+pub mod windef;
+pub mod windowscodecs;
+pub mod windowsx;
+pub mod winerror;
+pub mod winevt;
+pub mod wingdi;
+pub mod winhttp;
+pub mod winioctl;
+pub mod winnetwk;
+pub mod winnls;
+pub mod winnt;
+pub mod winreg;
+pub mod winscard;
+pub mod winsmcrd;
+pub mod winsock2;
+pub mod winspool;
+pub mod winstring;
+pub mod winsvc;
+pub mod winusb;
+pub mod winusbio;
+pub mod winuser;
+pub mod ws2def;
+pub mod ws2ipdef;
+pub mod ws2spi;
+pub mod ws2tcpip;
+pub mod wtypes;
+pub mod wtypesbase;
+pub mod xinput;
+//-------------------------------------------------------------------------------------------------
+// Primitive types not provided by std
+//-------------------------------------------------------------------------------------------------
+pub type __int8 = i8;
+pub type __uint8 = u8;
+pub type __int16 = i16;
+pub type __uint16 = u16;
+pub type __int32 = i32;
+pub type __uint32 = u32;
+pub type __int64 = i64;
+pub type __uint64 = u64;
+pub type wchar_t = c_ushort;
+#[cfg(target_arch = "x86")]
+pub type size_t = c_uint;
+#[cfg(target_arch = "x86_64")]
+pub type size_t = __uint64;
diff --git a/third_party/rust/winapi-0.2.8/src/libloaderapi.rs b/third_party/rust/winapi-0.2.8/src/libloaderapi.rs
new file mode 100644
index 0000000000..9b47b0af88
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/libloaderapi.rs
@@ -0,0 +1,23 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-libraryloader-l1
+pub type DLL_DIRECTORY_COOKIE = ::PVOID;
+pub type PDLL_DIRECTORY_COOKIE = *mut ::PVOID;
+pub type ENUMRESLANGPROCA = Option<unsafe extern "system" fn(
+ hModule: ::HMODULE, lpType: ::LPCSTR, lpName: ::LPCSTR, wLanguage: ::WORD, lParam: ::LONG_PTR,
+) -> ::BOOL>;
+pub type ENUMRESLANGPROCW = Option<unsafe extern "system" fn(
+ hModule: ::HMODULE, lpType: ::LPCWSTR, lpName: ::LPCWSTR, wLanguage: ::WORD, lParam: ::LONG_PTR,
+) -> ::BOOL>;
+pub type ENUMRESNAMEPROCA = Option<unsafe extern "system" fn(
+ hModule: ::HMODULE, lpType: ::LPCSTR, lpName: ::LPSTR, lParam: ::LONG_PTR,
+) -> ::BOOL>;
+pub type ENUMRESNAMEPROCW = Option<unsafe extern "system" fn(
+ hModule: ::HMODULE, lpType: ::LPCWSTR, lpName: ::LPWSTR, lParam: ::LONG_PTR,
+) -> ::BOOL>;
+pub type ENUMRESTYPEPROCA = Option<unsafe extern "system" fn(
+ hModule: ::HMODULE, lpType: ::LPSTR, lParam: ::LONG_PTR,
+) -> ::BOOL>;
+pub type ENUMRESTYPEPROCW = Option<unsafe extern "system" fn(
+ hModule: ::HMODULE, lpType: ::LPWSTR, lParam: ::LONG_PTR,
+) -> ::BOOL>;
diff --git a/third_party/rust/winapi-0.2.8/src/lmaccess.rs b/third_party/rust/winapi-0.2.8/src/lmaccess.rs
new file mode 100644
index 0000000000..2768f8c32e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lmaccess.rs
@@ -0,0 +1,853 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+// This file contains structures, function prototypes, and definitions
+// for the NetUser, NetUserModals, NetGroup, NetAccess, and NetLogon API.
+STRUCT!{struct USER_INFO_0 {
+ usri0_name: ::LPWSTR,
+}}
+pub type PUSER_INFO_0 = *mut USER_INFO_0;
+pub type LPUSER_INFO_0 = *mut USER_INFO_0;
+STRUCT!{struct USER_INFO_1 {
+ usri1_name: ::LPWSTR,
+ usri1_password: ::LPWSTR,
+ usri1_password_age: ::DWORD,
+ usri1_priv: ::DWORD,
+ usri1_home_dir: ::LPWSTR,
+ usri1_comment: ::LPWSTR,
+ usri1_flags: ::DWORD,
+ usri1_script_path: ::LPWSTR,
+}}
+pub type PUSER_INFO_1 = *mut USER_INFO_1;
+pub type LPUSER_INFO_1 = *mut USER_INFO_1;
+STRUCT!{struct USER_INFO_2 {
+ usri2_name: ::LPWSTR,
+ usri2_password: ::LPWSTR,
+ usri2_password_age: ::DWORD,
+ usri2_priv: ::DWORD,
+ usri2_home_dir: ::LPWSTR,
+ usri2_comment: ::LPWSTR,
+ usri2_flags: ::DWORD,
+ usri2_script_path: ::LPWSTR,
+ usri2_auth_flags: ::DWORD,
+ usri2_full_name: ::LPWSTR,
+ usri2_usr_comment: ::LPWSTR,
+ usri2_parms: ::LPWSTR,
+ usri2_workstations: ::LPWSTR,
+ usri2_last_logon: ::DWORD,
+ usri2_last_logoff: ::DWORD,
+ usri2_acct_expires: ::DWORD,
+ usri2_max_storage: ::DWORD,
+ usri2_units_per_week: ::DWORD,
+ usri2_logon_hours: ::PBYTE,
+ usri2_bad_pw_count: ::DWORD,
+ usri2_num_logons: ::DWORD,
+ usri2_logon_server: ::LPWSTR,
+ usri2_country_code: ::DWORD,
+ usri2_code_page: ::DWORD,
+}}
+pub type PUSER_INFO_2 = *mut USER_INFO_2;
+pub type LPUSER_INFO_2 = *mut USER_INFO_2;
+STRUCT!{struct USER_INFO_3 {
+ usri3_name: ::LPWSTR,
+ usri3_password: ::LPWSTR,
+ usri3_password_age: ::DWORD,
+ usri3_priv: ::DWORD,
+ usri3_home_dir: ::LPWSTR,
+ usri3_comment: ::LPWSTR,
+ usri3_flags: ::DWORD,
+ usri3_script_path: ::LPWSTR,
+ usri3_auth_flags: ::DWORD,
+ usri3_full_name: ::LPWSTR,
+ usri3_usr_comment: ::LPWSTR,
+ usri3_parms: ::LPWSTR,
+ usri3_workstations: ::LPWSTR,
+ usri3_last_logon: ::DWORD,
+ usri3_last_logoff: ::DWORD,
+ usri3_acct_expires: ::DWORD,
+ usri3_max_storage: ::DWORD,
+ usri3_units_per_week: ::DWORD,
+ usri3_logon_hours: ::PBYTE,
+ usri3_bad_pw_count: ::DWORD,
+ usri3_num_logons: ::DWORD,
+ usri3_logon_server: ::LPWSTR,
+ usri3_country_code: ::DWORD,
+ usri3_code_page: ::DWORD,
+ usri3_user_id: ::DWORD,
+ usri3_primary_group_id: ::DWORD,
+ usri3_profile: ::LPWSTR,
+ usri3_home_dir_drive: ::LPWSTR,
+ usri3_password_expired: ::DWORD,
+}}
+pub type PUSER_INFO_3 = *mut USER_INFO_3;
+pub type LPUSER_INFO_3 = *mut USER_INFO_3;
+STRUCT!{struct USER_INFO_4 {
+ usri4_name: ::LPWSTR,
+ usri4_password: ::LPWSTR,
+ usri4_password_age: ::DWORD,
+ usri4_priv: ::DWORD,
+ usri4_home_dir: ::LPWSTR,
+ usri4_comment: ::LPWSTR,
+ usri4_flags: ::DWORD,
+ usri4_script_path: ::LPWSTR,
+ usri4_auth_flags: ::DWORD,
+ usri4_full_name: ::LPWSTR,
+ usri4_usr_comment: ::LPWSTR,
+ usri4_parms: ::LPWSTR,
+ usri4_workstations: ::LPWSTR,
+ usri4_last_logon: ::DWORD,
+ usri4_last_logoff: ::DWORD,
+ usri4_acct_expires: ::DWORD,
+ usri4_max_storage: ::DWORD,
+ usri4_units_per_week: ::DWORD,
+ usri4_logon_hours: ::PBYTE,
+ usri4_bad_pw_count: ::DWORD,
+ usri4_num_logons: ::DWORD,
+ usri4_logon_server: ::LPWSTR,
+ usri4_country_code: ::DWORD,
+ usri4_code_page: ::DWORD,
+ usri4_user_sid: ::PSID,
+ usri4_primary_group_id: ::DWORD,
+ usri4_profile: ::LPWSTR,
+ usri4_home_dir_drive: ::LPWSTR,
+ usri4_password_expired: ::DWORD,
+}}
+pub type PUSER_INFO_4 = *mut USER_INFO_4;
+pub type LPUSER_INFO_4 = *mut USER_INFO_4;
+STRUCT!{struct USER_INFO_10 {
+ usri10_name: ::LPWSTR,
+ usri10_comment: ::LPWSTR,
+ usri10_usr_comment: ::LPWSTR,
+ usri10_full_name: ::LPWSTR,
+}}
+pub type PUSER_INFO_10 = *mut USER_INFO_10;
+pub type LPUSER_INFO_10 = *mut USER_INFO_10;
+STRUCT!{struct USER_INFO_11 {
+ usri11_name: ::LPWSTR,
+ usri11_comment: ::LPWSTR,
+ usri11_usr_comment: ::LPWSTR,
+ usri11_full_name: ::LPWSTR,
+ usri11_priv: ::DWORD,
+ usri11_auth_flags: ::DWORD,
+ usri11_password_age: ::DWORD,
+ usri11_home_dir: ::LPWSTR,
+ usri11_parms: ::LPWSTR,
+ usri11_last_logon: ::DWORD,
+ usri11_last_logoff: ::DWORD,
+ usri11_bad_pw_count: ::DWORD,
+ usri11_num_logons: ::DWORD,
+ usri11_logon_server: ::LPWSTR,
+ usri11_country_code: ::DWORD,
+ usri11_workstations: ::LPWSTR,
+ usri11_max_storage: ::DWORD,
+ usri11_units_per_week: ::DWORD,
+ usri11_logon_hours: ::PBYTE,
+ usri11_code_page: ::DWORD,
+}}
+pub type PUSER_INFO_11 = *mut USER_INFO_11;
+pub type LPUSER_INFO_11 = *mut USER_INFO_11;
+STRUCT!{struct USER_INFO_20 {
+ usri20_name: ::LPWSTR,
+ usri20_full_name: ::LPWSTR,
+ usri20_comment: ::LPWSTR,
+ usri20_flags: ::DWORD,
+ usri20_user_id: ::DWORD,
+}}
+pub type PUSER_INFO_20 = *mut USER_INFO_20;
+pub type LPUSER_INFO_20 = *mut USER_INFO_20;
+STRUCT!{struct USER_INFO_21 {
+ usri21_password: [::BYTE; ::ENCRYPTED_PWLEN],
+}}
+pub type PUSER_INFO_21 = *mut USER_INFO_21;
+pub type LPUSER_INFO_21 = *mut USER_INFO_21;
+STRUCT!{struct USER_INFO_22 {
+ usri22_name: ::LPWSTR,
+ usri22_password: [::BYTE; ::ENCRYPTED_PWLEN],
+ usri22_password_age: ::DWORD,
+ usri22_priv: ::DWORD,
+ usri22_home_dir: ::LPWSTR,
+ usri22_comment: ::LPWSTR,
+ usri22_flags: ::DWORD,
+ usri22_script_path: ::LPWSTR,
+ usri22_auth_flags: ::DWORD,
+ usri22_full_name: ::LPWSTR,
+ usri22_usr_comment: ::LPWSTR,
+ usri22_parms: ::LPWSTR,
+ usri22_workstations: ::LPWSTR,
+ usri22_last_logon: ::DWORD,
+ usri22_last_logoff: ::DWORD,
+ usri22_acct_expires: ::DWORD,
+ usri22_max_storage: ::DWORD,
+ usri22_units_per_week: ::DWORD,
+ usri22_logon_hours: ::PBYTE,
+ usri22_bad_pw_count: ::DWORD,
+ usri22_num_logons: ::DWORD,
+ usri22_logon_server: ::LPWSTR,
+ usri22_country_code: ::DWORD,
+ usri22_code_page: ::DWORD,
+}}
+pub type PUSER_INFO_22 = *mut USER_INFO_22;
+pub type LPUSER_INFO_22 = *mut USER_INFO_22;
+STRUCT!{struct USER_INFO_23 {
+ usri23_name: ::LPWSTR,
+ usri23_full_name: ::LPWSTR,
+ usri23_comment: ::LPWSTR,
+ usri23_flags: ::DWORD,
+ usri23_user_sid: ::PSID,
+}}
+pub type PUSER_INFO_23 = *mut USER_INFO_23;
+pub type LPUSER_INFO_23 = *mut USER_INFO_23;
+STRUCT!{struct USER_INFO_24 {
+ usri24_internet_identity: ::BOOL,
+ usri24_flags: ::DWORD,
+ usri24_internet_provider_name: ::LPWSTR,
+ usri24_internet_principal_name: ::LPWSTR,
+ usri24_user_sid: ::PSID,
+}}
+pub type PUSER_INFO_24 = *mut USER_INFO_24;
+pub type LPUSER_INFO_24 = *mut USER_INFO_24;
+STRUCT!{struct USER_INFO_1003 {
+ usri1003_password: ::LPWSTR,
+}}
+pub type PUSER_INFO_1003 = *mut USER_INFO_1003;
+pub type LPUSER_INFO_1003 = *mut USER_INFO_1003;
+STRUCT!{struct USER_INFO_1005 {
+ usri1005_priv: ::DWORD,
+}}
+pub type PUSER_INFO_1005 = *mut USER_INFO_1005;
+pub type LPUSER_INFO_1005 = *mut USER_INFO_1005;
+STRUCT!{struct USER_INFO_1006 {
+ usri1006_home_dir: ::LPWSTR,
+}}
+pub type PUSER_INFO_1006 = *mut USER_INFO_1006;
+pub type LPUSER_INFO_1006 = *mut USER_INFO_1006;
+STRUCT!{struct USER_INFO_1007 {
+ usri1007_comment: ::LPWSTR,
+}}
+pub type PUSER_INFO_1007 = *mut USER_INFO_1007;
+pub type LPUSER_INFO_1007 = *mut USER_INFO_1007;
+STRUCT!{struct USER_INFO_1008 {
+ usri1008_flags: ::DWORD,
+}}
+pub type PUSER_INFO_1008 = *mut USER_INFO_1008;
+pub type LPUSER_INFO_1008 = *mut USER_INFO_1008;
+STRUCT!{struct USER_INFO_1009 {
+ usri1009_script_path: ::LPWSTR,
+}}
+pub type PUSER_INFO_1009 = *mut USER_INFO_1009;
+pub type LPUSER_INFO_1009 = *mut USER_INFO_1009;
+STRUCT!{struct USER_INFO_1010 {
+ usri1010_auth_flags: ::DWORD,
+}}
+pub type PUSER_INFO_1010 = *mut USER_INFO_1010;
+pub type LPUSER_INFO_1010 = *mut USER_INFO_1010;
+STRUCT!{struct USER_INFO_1011 {
+ usri1011_full_name: ::LPWSTR,
+}}
+pub type PUSER_INFO_1011 = *mut USER_INFO_1011;
+pub type LPUSER_INFO_1011 = *mut USER_INFO_1011;
+STRUCT!{struct USER_INFO_1012 {
+ usri1012_usr_comment: ::LPWSTR,
+}}
+pub type PUSER_INFO_1012 = *mut USER_INFO_1012;
+pub type LPUSER_INFO_1012 = *mut USER_INFO_1012;
+STRUCT!{struct USER_INFO_1013 {
+ usri1013_parms: ::LPWSTR,
+}}
+pub type PUSER_INFO_1013 = *mut USER_INFO_1013;
+pub type LPUSER_INFO_1013 = *mut USER_INFO_1013;
+STRUCT!{struct USER_INFO_1014 {
+ usri1014_workstations: ::LPWSTR,
+}}
+pub type PUSER_INFO_1014 = *mut USER_INFO_1014;
+pub type LPUSER_INFO_1014 = *mut USER_INFO_1014;
+STRUCT!{struct USER_INFO_1017 {
+ usri1017_acct_expires: ::DWORD,
+}}
+pub type PUSER_INFO_1017 = *mut USER_INFO_1017;
+pub type LPUSER_INFO_1017 = *mut USER_INFO_1017;
+STRUCT!{struct USER_INFO_1018 {
+ usri1018_max_storage: ::DWORD,
+}}
+pub type PUSER_INFO_1018 = *mut USER_INFO_1018;
+pub type LPUSER_INFO_1018 = *mut USER_INFO_1018;
+STRUCT!{struct USER_INFO_1020 {
+ usri1020_units_per_week: ::DWORD,
+ usri1020_logon_hours: ::LPBYTE,
+}}
+pub type PUSER_INFO_1020 = *mut USER_INFO_1020;
+pub type LPUSER_INFO_1020 = *mut USER_INFO_1020;
+STRUCT!{struct USER_INFO_1023 {
+ usri1023_logon_server: ::LPWSTR,
+}}
+pub type PUSER_INFO_1023 = *mut USER_INFO_1023;
+pub type LPUSER_INFO_1023 = *mut USER_INFO_1023;
+STRUCT!{struct USER_INFO_1024 {
+ usri1024_country_code: ::DWORD,
+}}
+pub type PUSER_INFO_1024 = *mut USER_INFO_1024;
+pub type LPUSER_INFO_1024 = *mut USER_INFO_1024;
+STRUCT!{struct USER_INFO_1025 {
+ usri1025_code_page: ::DWORD,
+}}
+pub type PUSER_INFO_1025 = *mut USER_INFO_1025;
+pub type LPUSER_INFO_1025 = *mut USER_INFO_1025;
+STRUCT!{struct USER_INFO_1051 {
+ usri1051_primary_group_id: ::DWORD,
+}}
+pub type PUSER_INFO_1051 = *mut USER_INFO_1051;
+pub type LPUSER_INFO_1051 = *mut USER_INFO_1051;
+STRUCT!{struct USER_INFO_1052 {
+ usri1052_profile: ::LPWSTR,
+}}
+pub type PUSER_INFO_1052 = *mut USER_INFO_1052;
+pub type LPUSER_INFO_1052 = *mut USER_INFO_1052;
+STRUCT!{struct USER_INFO_1053 {
+ usri1053_home_dir_drive: ::LPWSTR,
+}}
+pub type PUSER_INFO_1053 = *mut USER_INFO_1053;
+pub type LPUSER_INFO_1053 = *mut USER_INFO_1053;
+STRUCT!{struct USER_MODALS_INFO_0 {
+ usrmod0_min_passwd_len: ::DWORD,
+ usrmod0_max_passwd_age: ::DWORD,
+ usrmod0_min_passwd_age: ::DWORD,
+ usrmod0_force_logoff: ::DWORD,
+ usrmod0_password_hist_len: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_0 = *mut USER_MODALS_INFO_0;
+pub type LPUSER_MODALS_INFO_0 = *mut USER_MODALS_INFO_0;
+STRUCT!{struct USER_MODALS_INFO_1 {
+ usrmod1_role: ::DWORD,
+ usrmod1_primary: ::LPWSTR,
+}}
+pub type PUSER_MODALS_INFO_1 = *mut USER_MODALS_INFO_1;
+pub type LPUSER_MODALS_INFO_1 = *mut USER_MODALS_INFO_1;
+STRUCT!{struct USER_MODALS_INFO_2 {
+ usrmod2_domain_name: ::LPWSTR,
+ usrmod2_domain_id: ::PSID,
+}}
+pub type PUSER_MODALS_INFO_2 = *mut USER_MODALS_INFO_2;
+pub type LPUSER_MODALS_INFO_2 = *mut USER_MODALS_INFO_2;
+STRUCT!{struct USER_MODALS_INFO_3 {
+ usrmod3_lockout_duration: ::DWORD,
+ usrmod3_lockout_observation_window: ::DWORD,
+ usrmod3_lockout_threshold: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_3 = *mut USER_MODALS_INFO_3;
+pub type LPUSER_MODALS_INFO_3 = *mut USER_MODALS_INFO_3;
+STRUCT!{struct USER_MODALS_INFO_1001 {
+ usrmod1001_min_passwd_len: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_1001 = *mut USER_MODALS_INFO_1001;
+pub type LPUSER_MODALS_INFO_1001 = *mut USER_MODALS_INFO_1001;
+STRUCT!{struct USER_MODALS_INFO_1002 {
+ usrmod1002_max_passwd_age: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_1002 = *mut USER_MODALS_INFO_1002;
+pub type LPUSER_MODALS_INFO_1002 = *mut USER_MODALS_INFO_1002;
+STRUCT!{struct USER_MODALS_INFO_1003 {
+ usrmod1003_min_passwd_age: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_1003 = *mut USER_MODALS_INFO_1003;
+pub type LPUSER_MODALS_INFO_1003 = *mut USER_MODALS_INFO_1003;
+STRUCT!{struct USER_MODALS_INFO_1004 {
+ usrmod1004_force_logoff: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_1004 = *mut USER_MODALS_INFO_1004;
+pub type LPUSER_MODALS_INFO_1004 = *mut USER_MODALS_INFO_1004;
+STRUCT!{struct USER_MODALS_INFO_1005 {
+ usrmod1005_password_hist_len: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_1005 = *mut USER_MODALS_INFO_1005;
+pub type LPUSER_MODALS_INFO_1005 = *mut USER_MODALS_INFO_1005;
+STRUCT!{struct USER_MODALS_INFO_1006 {
+ usrmod1006_role: ::DWORD,
+}}
+pub type PUSER_MODALS_INFO_1006 = *mut USER_MODALS_INFO_1006;
+pub type LPUSER_MODALS_INFO_1006 = *mut USER_MODALS_INFO_1006;
+STRUCT!{struct USER_MODALS_INFO_1007 {
+ usrmod1007_primary: ::LPWSTR,
+}}
+pub type PUSER_MODALS_INFO_1007 = *mut USER_MODALS_INFO_1007;
+pub type LPUSER_MODALS_INFO_1007 = *mut USER_MODALS_INFO_1007;
+pub const UF_SCRIPT: ::DWORD = 0x0001;
+pub const UF_ACCOUNTDISABLE: ::DWORD = 0x0002;
+pub const UF_HOMEDIR_REQUIRED: ::DWORD = 0x0008;
+pub const UF_LOCKOUT: ::DWORD = 0x0010;
+pub const UF_PASSWD_NOTREQD: ::DWORD = 0x0020;
+pub const UF_PASSWD_CANT_CHANGE: ::DWORD = 0x0040;
+pub const UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED: ::DWORD = 0x0080;
+pub const UF_TEMP_DUPLICATE_ACCOUNT: ::DWORD = 0x0100;
+pub const UF_NORMAL_ACCOUNT: ::DWORD = 0x0200;
+pub const UF_INTERDOMAIN_TRUST_ACCOUNT: ::DWORD = 0x0800;
+pub const UF_WORKSTATION_TRUST_ACCOUNT: ::DWORD = 0x1000;
+pub const UF_SERVER_TRUST_ACCOUNT: ::DWORD = 0x2000;
+pub const UF_MACHINE_ACCOUNT_MASK: ::DWORD = UF_INTERDOMAIN_TRUST_ACCOUNT
+ | UF_WORKSTATION_TRUST_ACCOUNT | UF_SERVER_TRUST_ACCOUNT;
+pub const UF_ACCOUNT_TYPE_MASK: ::DWORD = UF_TEMP_DUPLICATE_ACCOUNT | UF_NORMAL_ACCOUNT
+ | UF_INTERDOMAIN_TRUST_ACCOUNT | UF_WORKSTATION_TRUST_ACCOUNT | UF_SERVER_TRUST_ACCOUNT;
+pub const UF_DONT_EXPIRE_PASSWD: ::DWORD = 0x10000;
+pub const UF_MNS_LOGON_ACCOUNT: ::DWORD = 0x20000;
+pub const UF_SMARTCARD_REQUIRED: ::DWORD = 0x40000;
+pub const UF_TRUSTED_FOR_DELEGATION: ::DWORD = 0x80000;
+pub const UF_NOT_DELEGATED: ::DWORD = 0x100000;
+pub const UF_USE_DES_KEY_ONLY: ::DWORD = 0x200000;
+pub const UF_DONT_REQUIRE_PREAUTH: ::DWORD = 0x400000;
+pub const UF_PASSWORD_EXPIRED: ::DWORD = 0x800000;
+pub const UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION: ::DWORD = 0x1000000;
+pub const UF_NO_AUTH_DATA_REQUIRED: ::DWORD = 0x2000000;
+pub const UF_PARTIAL_SECRETS_ACCOUNT: ::DWORD = 0x4000000;
+pub const UF_USE_AES_KEYS: ::DWORD = 0x8000000;
+pub const UF_SETTABLE_BITS: ::DWORD = UF_SCRIPT | UF_ACCOUNTDISABLE | UF_LOCKOUT
+ | UF_HOMEDIR_REQUIRED | UF_PASSWD_NOTREQD | UF_PASSWD_CANT_CHANGE | UF_ACCOUNT_TYPE_MASK
+ | UF_DONT_EXPIRE_PASSWD | UF_MNS_LOGON_ACCOUNT | UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED
+ | UF_SMARTCARD_REQUIRED | UF_TRUSTED_FOR_DELEGATION | UF_NOT_DELEGATED | UF_USE_DES_KEY_ONLY
+ | UF_DONT_REQUIRE_PREAUTH | UF_PASSWORD_EXPIRED | UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
+ | UF_NO_AUTH_DATA_REQUIRED | UF_USE_AES_KEYS | UF_PARTIAL_SECRETS_ACCOUNT;
+pub const FILTER_TEMP_DUPLICATE_ACCOUNT: ::DWORD = 0x0001;
+pub const FILTER_NORMAL_ACCOUNT: ::DWORD = 0x0002;
+pub const FILTER_INTERDOMAIN_TRUST_ACCOUNT: ::DWORD = 0x0008;
+pub const FILTER_WORKSTATION_TRUST_ACCOUNT: ::DWORD = 0x0010;
+pub const FILTER_SERVER_TRUST_ACCOUNT: ::DWORD = 0x0020;
+pub const LG_INCLUDE_INDIRECT: ::DWORD = 0x0001;
+pub const AF_OP_PRINT: ::DWORD = 0x1;
+pub const AF_OP_COMM: ::DWORD = 0x2;
+pub const AF_OP_SERVER: ::DWORD = 0x4;
+pub const AF_OP_ACCOUNTS: ::DWORD = 0x8;
+pub const AF_SETTABLE_BITS: ::DWORD = AF_OP_PRINT | AF_OP_COMM | AF_OP_SERVER | AF_OP_ACCOUNTS;
+pub const UAS_ROLE_STANDALONE: ::DWORD = 0;
+pub const UAS_ROLE_MEMBER: ::DWORD = 1;
+pub const UAS_ROLE_BACKUP: ::DWORD = 2;
+pub const UAS_ROLE_PRIMARY: ::DWORD = 3;
+pub const USER_NAME_PARMNUM: ::DWORD = 1;
+pub const USER_PASSWORD_PARMNUM: ::DWORD = 3;
+pub const USER_PASSWORD_AGE_PARMNUM: ::DWORD = 4;
+pub const USER_PRIV_PARMNUM: ::DWORD = 5;
+pub const USER_HOME_DIR_PARMNUM: ::DWORD = 6;
+pub const USER_COMMENT_PARMNUM: ::DWORD = 7;
+pub const USER_FLAGS_PARMNUM: ::DWORD = 8;
+pub const USER_SCRIPT_PATH_PARMNUM: ::DWORD = 9;
+pub const USER_AUTH_FLAGS_PARMNUM: ::DWORD = 10;
+pub const USER_FULL_NAME_PARMNUM: ::DWORD = 11;
+pub const USER_USR_COMMENT_PARMNUM: ::DWORD = 12;
+pub const USER_PARMS_PARMNUM: ::DWORD = 13;
+pub const USER_WORKSTATIONS_PARMNUM: ::DWORD = 14;
+pub const USER_LAST_LOGON_PARMNUM: ::DWORD = 15;
+pub const USER_LAST_LOGOFF_PARMNUM: ::DWORD = 16;
+pub const USER_ACCT_EXPIRES_PARMNUM: ::DWORD = 17;
+pub const USER_MAX_STORAGE_PARMNUM: ::DWORD = 18;
+pub const USER_UNITS_PER_WEEK_PARMNUM: ::DWORD = 19;
+pub const USER_LOGON_HOURS_PARMNUM: ::DWORD = 20;
+pub const USER_PAD_PW_COUNT_PARMNUM: ::DWORD = 21;
+pub const USER_NUM_LOGONS_PARMNUM: ::DWORD = 22;
+pub const USER_LOGON_SERVER_PARMNUM: ::DWORD = 23;
+pub const USER_COUNTRY_CODE_PARMNUM: ::DWORD = 24;
+pub const USER_CODE_PAGE_PARMNUM: ::DWORD = 25;
+pub const USER_PRIMARY_GROUP_PARMNUM: ::DWORD = 51;
+pub const USER_PROFILE: ::DWORD = 52;
+pub const USER_PROFILE_PARMNUM: ::DWORD = 52;
+pub const USER_HOME_DIR_DRIVE_PARMNUM: ::DWORD = 53;
+pub const USER_NAME_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM;
+pub const USER_PASSWORD_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM;
+pub const USER_PASSWORD_AGE_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM;
+pub const USER_PRIV_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM;
+pub const USER_HOME_DIR_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM;
+pub const USER_COMMENT_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM;
+pub const USER_FLAGS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM;
+pub const USER_SCRIPT_PATH_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM;
+pub const USER_AUTH_FLAGS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM;
+pub const USER_FULL_NAME_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM;
+pub const USER_USR_COMMENT_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM;
+pub const USER_PARMS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM;
+pub const USER_WORKSTATIONS_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM;
+pub const USER_LAST_LOGON_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM;
+pub const USER_LAST_LOGOFF_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM;
+pub const USER_ACCT_EXPIRES_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM;
+pub const USER_MAX_STORAGE_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM;
+pub const USER_UNITS_PER_WEEK_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM;
+pub const USER_LOGON_HOURS_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM;
+pub const USER_PAD_PW_COUNT_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM;
+pub const USER_NUM_LOGONS_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM;
+pub const USER_LOGON_SERVER_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM;
+pub const USER_COUNTRY_CODE_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM;
+pub const USER_CODE_PAGE_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM;
+pub const USER_PRIMARY_GROUP_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM;
+pub const USER_HOME_DIR_DRIVE_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM;
+pub const TIMEQ_FOREVER: ::DWORD = -1i32 as ::DWORD;
+pub const USER_MAXSTORAGE_UNLIMITED: ::DWORD = -1i32 as ::DWORD;
+pub const USER_NO_LOGOFF: ::DWORD = -1i32 as ::DWORD;
+pub const UNITS_PER_DAY: ::DWORD = 24;
+pub const UNITS_PER_WEEK: ::DWORD = UNITS_PER_DAY * 7;
+pub const USER_PRIV_MASK: ::DWORD = 0x3;
+pub const USER_PRIV_GUEST: ::DWORD = 0;
+pub const USER_PRIV_USER: ::DWORD = 1;
+pub const USER_PRIV_ADMIN: ::DWORD = 2;
+pub const MAX_PASSWD_LEN: ::DWORD = ::PWLEN;
+pub const DEF_MIN_PWLEN: ::DWORD = 6;
+pub const DEF_PWUNIQUENESS: ::DWORD = 5;
+pub const DEF_MAX_PWHIST: ::DWORD = 8;
+pub const DEF_MAX_PWAGE: ::DWORD = TIMEQ_FOREVER;
+pub const DEF_MIN_PWAGE: ::DWORD = 0;
+pub const DEF_FORCE_LOGOFF: ::DWORD = 0xffffffff;
+pub const DEF_MAX_BADPW: ::DWORD = 0;
+pub const ONE_DAY: ::DWORD = 1 * 24 * 3600;
+pub const VALIDATED_LOGON: ::DWORD = 0;
+pub const PASSWORD_EXPIRED: ::DWORD = 2;
+pub const NON_VALIDATED_LOGON: ::DWORD = 3;
+pub const VALID_LOGOFF: ::DWORD = 1;
+pub const MODALS_MIN_PASSWD_LEN_PARMNUM: ::DWORD = 1;
+pub const MODALS_MAX_PASSWD_AGE_PARMNUM: ::DWORD = 2;
+pub const MODALS_MIN_PASSWD_AGE_PARMNUM: ::DWORD = 3;
+pub const MODALS_FORCE_LOGOFF_PARMNUM: ::DWORD = 4;
+pub const MODALS_PASSWD_HIST_LEN_PARMNUM: ::DWORD = 5;
+pub const MODALS_ROLE_PARMNUM: ::DWORD = 6;
+pub const MODALS_PRIMARY_PARMNUM: ::DWORD = 7;
+pub const MODALS_DOMAIN_NAME_PARMNUM: ::DWORD = 8;
+pub const MODALS_DOMAIN_ID_PARMNUM: ::DWORD = 9;
+pub const MODALS_LOCKOUT_DURATION_PARMNUM: ::DWORD = 10;
+pub const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM: ::DWORD = 11;
+pub const MODALS_LOCKOUT_THRESHOLD_PARMNUM: ::DWORD = 12;
+pub const MODALS_MIN_PASSWD_LEN_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM;
+pub const MODALS_MAX_PASSWD_AGE_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM;
+pub const MODALS_MIN_PASSWD_AGE_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM;
+pub const MODALS_FORCE_LOGOFF_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM;
+pub const MODALS_PASSWD_HIST_LEN_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM;
+pub const MODALS_ROLE_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM;
+pub const MODALS_PRIMARY_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM;
+pub const MODALS_DOMAIN_NAME_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM;
+pub const MODALS_DOMAIN_ID_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM;
+STRUCT!{struct GROUP_INFO_0 {
+ grpi0_name: ::LPWSTR,
+}}
+pub type PGROUP_INFO_0 = *mut GROUP_INFO_0;
+pub type LPGROUP_INFO_0 = *mut GROUP_INFO_0;
+STRUCT!{struct GROUP_INFO_1 {
+ grpi1_name: ::LPWSTR,
+ grpi1_comment: ::LPWSTR,
+}}
+pub type PGROUP_INFO_1 = *mut GROUP_INFO_1;
+pub type LPGROUP_INFO_1 = *mut GROUP_INFO_1;
+STRUCT!{struct GROUP_INFO_2 {
+ grpi2_name: ::LPWSTR,
+ grpi2_comment: ::LPWSTR,
+ grpi2_group_id: ::DWORD,
+ grpi2_attributes: ::DWORD,
+}}
+pub type PGROUP_INFO_2 = *mut GROUP_INFO_2;
+STRUCT!{struct GROUP_INFO_3 {
+ grpi3_name: ::LPWSTR,
+ grpi3_comment: ::LPWSTR,
+ grpi3_group_sid: ::PSID,
+ grpi3_attributes: ::DWORD,
+}}
+pub type PGROUP_INFO_3 = *mut GROUP_INFO_3;
+STRUCT!{struct GROUP_INFO_1002 {
+ grpi1002_comment: ::LPWSTR,
+}}
+pub type PGROUP_INFO_1002 = *mut GROUP_INFO_1002;
+pub type LPGROUP_INFO_1002 = *mut GROUP_INFO_1002;
+STRUCT!{struct GROUP_INFO_1005 {
+ grpi1005_attributes: ::DWORD,
+}}
+pub type PGROUP_INFO_1005 = *mut GROUP_INFO_1005;
+pub type LPGROUP_INFO_1005 = *mut GROUP_INFO_1005;
+STRUCT!{struct GROUP_USERS_INFO_0 {
+ grui0_name: ::LPWSTR,
+}}
+pub type PGROUP_USERS_INFO_0 = *mut GROUP_USERS_INFO_0;
+pub type LPGROUP_USERS_INFO_0 = *mut GROUP_USERS_INFO_0;
+STRUCT!{struct GROUP_USERS_INFO_1 {
+ grui1_name: ::LPWSTR,
+ grui1_attributes: ::DWORD,
+}}
+pub type PGROUP_USERS_INFO_1 = *mut GROUP_USERS_INFO_1;
+pub type LPGROUP_USERS_INFO_1 = *mut GROUP_USERS_INFO_1;
+pub const GROUPIDMASK: ::DWORD = 0x8000;
+pub const GROUP_SPECIALGRP_USERS: &'static str = "USERS";
+pub const GROUP_SPECIALGRP_ADMINS: &'static str = "ADMINS";
+pub const GROUP_SPECIALGRP_GUESTS: &'static str = "GUESTS";
+pub const GROUP_SPECIALGRP_LOCAL: &'static str = "LOCAL";
+pub const GROUP_ALL_PARMNUM: ::DWORD = 0;
+pub const GROUP_NAME_PARMNUM: ::DWORD = 1;
+pub const GROUP_COMMENT_PARMNUM: ::DWORD = 2;
+pub const GROUP_ATTRIBUTES_PARMNUM: ::DWORD = 3;
+pub const GROUP_ALL_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM;
+pub const GROUP_NAME_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM;
+pub const GROUP_COMMENT_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM;
+pub const GROUP_ATTRIBUTES_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM;
+STRUCT!{struct LOCALGROUP_INFO_0 {
+ lgrpi0_name: ::LPWSTR,
+}}
+pub type PLOCALGROUP_INFO_0 = *mut LOCALGROUP_INFO_0;
+pub type LPLOCALGROUP_INFO_0 = *mut LOCALGROUP_INFO_0;
+STRUCT!{struct LOCALGROUP_INFO_1 {
+ lgrpi1_name: ::LPWSTR,
+ lgrpi1_comment: ::LPWSTR,
+}}
+pub type PLOCALGROUP_INFO_1 = *mut LOCALGROUP_INFO_1;
+pub type LPLOCALGROUP_INFO_1 = *mut LOCALGROUP_INFO_1;
+STRUCT!{struct LOCALGROUP_INFO_1002 {
+ lgrpi1002_comment: ::LPWSTR,
+}}
+pub type PLOCALGROUP_INFO_1002 = *mut LOCALGROUP_INFO_1002;
+pub type LPLOCALGROUP_INFO_1002 = *mut LOCALGROUP_INFO_1002;
+STRUCT!{struct LOCALGROUP_MEMBERS_INFO_0 {
+ lgrmi0_sid: ::PSID,
+}}
+pub type PLOCALGROUP_MEMBERS_INFO_0 = *mut LOCALGROUP_MEMBERS_INFO_0;
+pub type LPLOCALGROUP_MEMBERS_INFO_0 = *mut LOCALGROUP_MEMBERS_INFO_0;
+STRUCT!{struct LOCALGROUP_MEMBERS_INFO_1 {
+ lgrmi1_sid: ::PSID,
+ lgrmi1_sidusage: ::SID_NAME_USE,
+ lgrmi1_name: ::LPWSTR,
+}}
+pub type PLOCALGROUP_MEMBERS_INFO_1 = *mut LOCALGROUP_MEMBERS_INFO_1;
+pub type LPLOCALGROUP_MEMBERS_INFO_1 = *mut LOCALGROUP_MEMBERS_INFO_1;
+STRUCT!{struct LOCALGROUP_MEMBERS_INFO_2 {
+ lgrmi2_sid: ::PSID,
+ lgrmi2_sidusage: ::SID_NAME_USE,
+ lgrmi2_domainandname: ::LPWSTR,
+}}
+pub type PLOCALGROUP_MEMBERS_INFO_2 = *mut LOCALGROUP_MEMBERS_INFO_2;
+pub type LPLOCALGROUP_MEMBERS_INFO_2 = *mut LOCALGROUP_MEMBERS_INFO_2;
+STRUCT!{struct LOCALGROUP_MEMBERS_INFO_3 {
+ lgrmi3_domainandname: ::LPWSTR,
+}}
+pub type PLOCALGROUP_MEMBERS_INFO_3 = *mut LOCALGROUP_MEMBERS_INFO_3;
+pub type LPLOCALGROUP_MEMBERS_INFO_3 = *mut LOCALGROUP_MEMBERS_INFO_3;
+STRUCT!{struct LOCALGROUP_USERS_INFO_0 {
+ lgrui0_name: ::LPWSTR,
+}}
+pub type PLOCALGROUP_USERS_INFO_0 = *mut LOCALGROUP_USERS_INFO_0;
+pub type LPLOCALGROUP_USERS_INFO_0 = *mut LOCALGROUP_USERS_INFO_0;
+pub const LOCALGROUP_NAME_PARMNUM: ::DWORD = 1;
+pub const LOCALGROUP_COMMENT_PARMNUM: ::DWORD = 2;
+STRUCT!{struct NET_DISPLAY_USER {
+ usri1_name: ::LPWSTR,
+ usri1_comment: ::LPWSTR,
+ usri1_flags: ::DWORD,
+ usri1_full_name: ::LPWSTR,
+ usri1_user_id: ::DWORD,
+ usri1_next_index: ::DWORD,
+}}
+pub type PNET_DISPLAY_USER = *mut NET_DISPLAY_USER;
+STRUCT!{struct NET_DISPLAY_MACHINE {
+ usri2_name: ::LPWSTR,
+ usri2_comment: ::LPWSTR,
+ usri2_flags: ::DWORD,
+ usri2_user_id: ::DWORD,
+ usri2_next_index: ::DWORD,
+}}
+pub type PNET_DISPLAY_MACHINE = *mut NET_DISPLAY_MACHINE;
+STRUCT!{struct NET_DISPLAY_GROUP {
+ usri3_name: ::LPWSTR,
+ usri3_comment: ::LPWSTR,
+ grpi3_group_id: ::DWORD,
+ grpi3_attributes: ::DWORD,
+ grpi3_next_index: ::DWORD,
+}}
+pub type PNET_DISPLAY_GROUP = *mut NET_DISPLAY_GROUP;
+STRUCT!{struct ACCESS_INFO_0 {
+ acc0_resource_name: ::LPWSTR,
+}}
+pub type PACCESS_INFO_0 = *mut ACCESS_INFO_0;
+pub type LPACCESS_INFO_0 = *mut ACCESS_INFO_0;
+STRUCT!{struct ACCESS_INFO_1 {
+ acc1_resource_name: ::LPWSTR,
+ acc1_attr: ::DWORD,
+ acc1_count: ::DWORD,
+}}
+pub type PACCESS_INFO_1 = *mut ACCESS_INFO_1;
+pub type LPACCESS_INFO_1 = *mut ACCESS_INFO_1;
+STRUCT!{struct ACCESS_INFO_1002 {
+ acc1002_attr: ::DWORD,
+}}
+pub type PACCESS_INFO_1002 = *mut ACCESS_INFO_1002;
+pub type LPACCESS_INFO_1002 = *mut ACCESS_INFO_1002;
+STRUCT!{struct ACCESS_LIST {
+ acl_ugname: ::LPWSTR,
+ acl_access: ::DWORD,
+}}
+pub type PACCESS_LIST = *mut ACCESS_LIST;
+pub type LPACCESS_LIST = *mut ACCESS_LIST;
+pub const ACCESS_NONE: ::DWORD = 0;
+pub const ACCESS_ALL: ::DWORD = ACCESS_READ | ACCESS_WRITE | ACCESS_CREATE | ACCESS_EXEC
+ | ACCESS_DELETE | ACCESS_ATRIB | ACCESS_PERM;
+pub const ACCESS_READ: ::DWORD = 0x01;
+pub const ACCESS_WRITE: ::DWORD = 0x02;
+pub const ACCESS_CREATE: ::DWORD = 0x04;
+pub const ACCESS_EXEC: ::DWORD = 0x08;
+pub const ACCESS_DELETE: ::DWORD = 0x10;
+pub const ACCESS_ATRIB: ::DWORD = 0x20;
+pub const ACCESS_PERM: ::DWORD = 0x40;
+pub const ACCESS_GROUP: ::DWORD = 0x8000;
+pub const ACCESS_AUDIT: ::DWORD = 0x1;
+pub const ACCESS_SUCCESS_OPEN: ::DWORD = 0x10;
+pub const ACCESS_SUCCESS_WRITE: ::DWORD = 0x20;
+pub const ACCESS_SUCCESS_DELETE: ::DWORD = 0x40;
+pub const ACCESS_SUCCESS_ACL: ::DWORD = 0x80;
+pub const ACCESS_SUCCESS_MASK: ::DWORD = 0xF0;
+pub const ACCESS_FAIL_OPEN: ::DWORD = 0x100;
+pub const ACCESS_FAIL_WRITE: ::DWORD = 0x200;
+pub const ACCESS_FAIL_DELETE: ::DWORD = 0x400;
+pub const ACCESS_FAIL_ACL: ::DWORD = 0x800;
+pub const ACCESS_FAIL_MASK: ::DWORD = 0xF00;
+pub const ACCESS_FAIL_SHIFT: ::DWORD = 4;
+pub const ACCESS_RESOURCE_NAME_PARMNUM: ::DWORD = 1;
+pub const ACCESS_ATTR_PARMNUM: ::DWORD = 2;
+pub const ACCESS_COUNT_PARMNUM: ::DWORD = 3;
+pub const ACCESS_ACCESS_LIST_PARMNUM: ::DWORD = 4;
+pub const ACCESS_RESOURCE_NAME_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM;
+pub const ACCESS_ATTR_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM;
+pub const ACCESS_COUNT_INFOLEVEL: ::DWORD = ::PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM;
+pub const ACCESS_ACCESS_LIST_INFOLEVEL: ::DWORD =
+ ::PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM;
+ENUM!{enum NET_VALIDATE_PASSWORD_TYPE {
+ NetValidateAuthentication = 1,
+ NetValidatePasswordChange,
+ NetValidatePasswordReset,
+}}
+pub type PNET_VALIDATE_PASSWORD_TYPE = *mut NET_VALIDATE_PASSWORD_TYPE;
+STRUCT!{struct NET_VALIDATE_PASSWORD_HASH {
+ Length: ::ULONG,
+ Hash: ::LPBYTE,
+}}
+pub type PNET_VALIDATE_PASSWORD_HASH = *mut NET_VALIDATE_PASSWORD_HASH;
+pub const NET_VALIDATE_PASSWORD_LAST_SET: ::ULONG = 0x00000001;
+pub const NET_VALIDATE_BAD_PASSWORD_TIME: ::ULONG = 0x00000002;
+pub const NET_VALIDATE_LOCKOUT_TIME: ::ULONG = 0x00000004;
+pub const NET_VALIDATE_BAD_PASSWORD_COUNT: ::ULONG = 0x00000008;
+pub const NET_VALIDATE_PASSWORD_HISTORY_LENGTH: ::ULONG = 0x00000010;
+pub const NET_VALIDATE_PASSWORD_HISTORY: ::ULONG = 0x00000020;
+STRUCT!{struct NET_VALIDATE_PERSISTED_FIELDS {
+ PresentFields: ::ULONG,
+ PasswordLastSet: ::FILETIME,
+ BadPasswordTime: ::FILETIME,
+ LockoutTime: ::FILETIME,
+ BadPasswordCount: ::ULONG,
+ PasswordHistoryLength: ::ULONG,
+ PasswordHistory: PNET_VALIDATE_PASSWORD_HASH,
+}}
+pub type PNET_VALIDATE_PERSISTED_FIELDS = *mut NET_VALIDATE_PERSISTED_FIELDS;
+STRUCT!{struct NET_VALIDATE_OUTPUT_ARG {
+ ChangedPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
+ ValidationStatus: ::NET_API_STATUS,
+}}
+pub type PNET_VALIDATE_OUTPUT_ARG = *mut NET_VALIDATE_OUTPUT_ARG;
+STRUCT!{struct NET_VALIDATE_AUTHENTICATION_INPUT_ARG {
+ InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
+ PasswordMatched: ::BOOLEAN,
+}}
+pub type PNET_VALIDATE_AUTHENTICATION_INPUT_ARG = *mut NET_VALIDATE_AUTHENTICATION_INPUT_ARG;
+STRUCT!{struct NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG {
+ InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
+ ClearPassword: ::LPWSTR,
+ UserAccountName: ::LPWSTR,
+ HashedPassword: NET_VALIDATE_PASSWORD_HASH,
+ PasswordMatch: ::BOOLEAN,
+}}
+pub type PNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG = *mut NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG;
+STRUCT!{struct NET_VALIDATE_PASSWORD_RESET_INPUT_ARG {
+ InputPersistedFields: NET_VALIDATE_PERSISTED_FIELDS,
+ ClearPassword: ::LPWSTR,
+ UserAccountName: ::LPWSTR,
+ HashedPassword: NET_VALIDATE_PASSWORD_HASH,
+ PasswordMustChangeAtNextLogon: ::BOOLEAN,
+ ClearLockout: ::BOOLEAN,
+}}
+pub type PNET_VALIDATE_PASSWORD_RESET_INPUT_ARG = *mut NET_VALIDATE_PASSWORD_RESET_INPUT_ARG;
+pub const NETLOGON_CONTROL_QUERY: ::DWORD = 1;
+pub const NETLOGON_CONTROL_REPLICATE: ::DWORD = 2;
+pub const NETLOGON_CONTROL_SYNCHRONIZE: ::DWORD = 3;
+pub const NETLOGON_CONTROL_PDC_REPLICATE: ::DWORD = 4;
+pub const NETLOGON_CONTROL_REDISCOVER: ::DWORD = 5;
+pub const NETLOGON_CONTROL_TC_QUERY: ::DWORD = 6;
+pub const NETLOGON_CONTROL_TRANSPORT_NOTIFY: ::DWORD = 7;
+pub const NETLOGON_CONTROL_FIND_USER: ::DWORD = 8;
+pub const NETLOGON_CONTROL_CHANGE_PASSWORD: ::DWORD = 9;
+pub const NETLOGON_CONTROL_TC_VERIFY: ::DWORD = 10;
+pub const NETLOGON_CONTROL_FORCE_DNS_REG: ::DWORD = 11;
+pub const NETLOGON_CONTROL_QUERY_DNS_REG: ::DWORD = 12;
+pub const NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL: ::DWORD = 0xFFFB;
+pub const NETLOGON_CONTROL_BACKUP_CHANGE_LOG: ::DWORD = 0xFFFC;
+pub const NETLOGON_CONTROL_TRUNCATE_LOG: ::DWORD = 0xFFFD;
+pub const NETLOGON_CONTROL_SET_DBFLAG: ::DWORD = 0xFFFE;
+pub const NETLOGON_CONTROL_BREAKPOINT: ::DWORD = 0xFFFF;
+STRUCT!{struct NETLOGON_INFO_1 {
+ netlog1_flags: ::DWORD,
+ netlog1_pdc_connection_status: ::NET_API_STATUS,
+}}
+pub type PNETLOGON_INFO_1 = *mut NETLOGON_INFO_1;
+STRUCT!{struct NETLOGON_INFO_2 {
+ netlog2_flags: ::DWORD,
+ netlog2_pdc_connection_status: ::NET_API_STATUS,
+ netlog2_trusted_dc_name: ::LPWSTR,
+ netlog2_tc_connection_status: ::NET_API_STATUS,
+}}
+pub type PNETLOGON_INFO_2 = *mut NETLOGON_INFO_2;
+STRUCT!{struct NETLOGON_INFO_3 {
+ netlog3_flags: ::DWORD,
+ netlog3_logon_attempts: ::DWORD,
+ netlog3_reserved1: ::DWORD,
+ netlog3_reserved2: ::DWORD,
+ netlog3_reserved3: ::DWORD,
+ netlog3_reserved4: ::DWORD,
+ netlog3_reserved5: ::DWORD,
+}}
+pub type PNETLOGON_INFO_3 = *mut NETLOGON_INFO_3;
+STRUCT!{struct NETLOGON_INFO_4 {
+ netlog4_trusted_dc_name: ::LPWSTR,
+ netlog4_trusted_domain_name: ::LPWSTR,
+}}
+pub type PNETLOGON_INFO_4 = *mut NETLOGON_INFO_4;
+pub const NETLOGON_REPLICATION_NEEDED: ::DWORD = 0x01;
+pub const NETLOGON_REPLICATION_IN_PROGRESS: ::DWORD = 0x02;
+pub const NETLOGON_FULL_SYNC_REPLICATION: ::DWORD = 0x04;
+pub const NETLOGON_REDO_NEEDED: ::DWORD = 0x08;
+pub const NETLOGON_HAS_IP: ::DWORD = 0x10;
+pub const NETLOGON_HAS_TIMESERV: ::DWORD = 0x20;
+pub const NETLOGON_DNS_UPDATE_FAILURE: ::DWORD = 0x40;
+pub const NETLOGON_VERIFY_STATUS_RETURNED: ::DWORD = 0x80;
+DEFINE_GUID!(ServiceAccountPasswordGUID, 0x262E99C9, 0x6160, 0x4871,
+ 0xAC, 0xEC, 0x4E, 0x61, 0x73, 0x6B, 0x6F, 0x21);
+pub const SERVICE_ACCOUNT_FLAG_LINK_TO_HOST_ONLY: ::DWORD = 0x00000001;
+pub const SERVICE_ACCOUNT_FLAG_ADD_AGAINST_RODC: ::DWORD = 0x00000002;
+pub const SERVICE_ACCOUNT_FLAG_UNLINK_FROM_HOST_ONLY: ::DWORD = 0x00000001;
+pub const SERVICE_ACCOUNT_FLAG_REMOVE_OFFLINE: ::DWORD = 0x00000002;
+ENUM!{enum MSA_INFO_LEVEL {
+ MsaInfoLevel0 = 0,
+ MsaInfoLevelMax,
+}}
+pub type PMSA_INFO_LEVEL = *mut MSA_INFO_LEVEL;
+ENUM!{enum MSA_INFO_STATE {
+ MsaInfoNotExist = 1,
+ MsaInfoNotService,
+ MsaInfoCannotInstall,
+ MsaInfoCanInstall,
+ MsaInfoInstalled,
+}}
+pub type PMSA_INFO_STATE = *mut MSA_INFO_STATE;
+STRUCT!{struct MSA_INFO_0 {
+ State: MSA_INFO_STATE,
+}}
+pub type PMSA_INFO_0 = *mut MSA_INFO_0;
+pub type LPMSA_INFO_0 = *mut MSA_INFO_0;
diff --git a/third_party/rust/winapi-0.2.8/src/lmcons.rs b/third_party/rust/winapi-0.2.8/src/lmcons.rs
new file mode 100644
index 0000000000..267db8bfb1
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lmcons.rs
@@ -0,0 +1,55 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This file contains constants used throughout the LAN Manager API header files.
+pub const CNLEN: ::DWORD = 15;
+pub const LM20_CNLEN: ::DWORD = 15;
+pub const DNLEN: ::DWORD = CNLEN;
+pub const LM20_DNLEN: ::DWORD = LM20_CNLEN;
+pub const UNCLEN: ::DWORD = CNLEN + 2;
+pub const LM20_UNCLEN: ::DWORD = LM20_CNLEN + 2;
+pub const NNLEN: ::DWORD = 80;
+pub const LM20_NNLEN: ::DWORD = 12;
+pub const RMLEN: ::DWORD = UNCLEN + 1 + NNLEN;
+pub const LM20_RMLEN: ::DWORD = LM20_UNCLEN + 1 + LM20_NNLEN;
+pub const SNLEN: ::DWORD = 80;
+pub const LM20_SNLEN: ::DWORD = 15;
+pub const STXTLEN: ::DWORD = 256;
+pub const LM20_STXTLEN: ::DWORD = 63;
+pub const PATHLEN: ::DWORD = 256;
+pub const LM20_PATHLEN: ::DWORD = 256;
+pub const DEVLEN: ::DWORD = 80;
+pub const LM20_DEVLEN: ::DWORD = 8;
+pub const EVLEN: ::DWORD = 16;
+pub const UNLEN: ::DWORD = 256;
+pub const LM20_UNLEN: ::DWORD = 20;
+pub const GNLEN: ::DWORD = UNLEN;
+pub const LM20_GNLEN: ::DWORD = LM20_UNLEN;
+pub const PWLEN: ::DWORD = 256;
+pub const LM20_PWLEN: ::DWORD = 14;
+pub const SHPWLEN: ::DWORD = 8;
+pub const CLTYPE_LEN: ::DWORD = 12;
+pub const MAXCOMMENTSZ: ::DWORD = 256;
+pub const LM20_MAXCOMMENTSZ: ::DWORD = 48;
+pub const QNLEN: ::DWORD = NNLEN;
+pub const LM20_QNLEN: ::DWORD = LM20_NNLEN;
+pub const ALERTSZ: ::DWORD = 128;
+pub const MAXDEVENTRIES: ::DWORD = 4 * 8; // FIXME: sizeof(int) instead of 4
+pub const NETBIOS_NAME_LEN: ::DWORD = 16;
+pub const MAX_PREFERRED_LENGTH: ::DWORD = -1i32 as ::DWORD;
+pub const CRYPT_KEY_LEN: ::DWORD = 7;
+pub const CRYPT_TXT_LEN: ::DWORD = 8;
+pub const ENCRYPTED_PWLEN: usize = 16;
+pub const SESSION_PWLEN: ::DWORD = 24;
+pub const SESSION_CRYPT_KLEN: ::DWORD = 21;
+pub const PARM_ERROR_UNKNOWN: ::DWORD = -1i32 as ::DWORD;
+pub const PARM_ERROR_NONE: ::DWORD = 0;
+pub const PARMNUM_BASE_INFOLEVEL: ::DWORD = 1000;
+pub type LMSTR = ::LPWSTR;
+pub type LMCSTR = ::LPCWSTR;
+pub type NET_API_STATUS = ::DWORD;
+pub type API_RET_TYPE = NET_API_STATUS;
+pub const PLATFORM_ID_DOS: ::DWORD = 300;
+pub const PLATFORM_ID_OS2: ::DWORD = 400;
+pub const PLATFORM_ID_NT: ::DWORD = 500;
+pub const PLATFORM_ID_OSF: ::DWORD = 600;
+pub const PLATFORM_ID_VMS: ::DWORD = 700;
diff --git a/third_party/rust/winapi-0.2.8/src/lmdfs.rs b/third_party/rust/winapi-0.2.8/src/lmdfs.rs
new file mode 100644
index 0000000000..b74c647890
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lmdfs.rs
@@ -0,0 +1,311 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+// This file contains structures, function prototypes, and definitions for the NetDfs API
+pub const DFS_VOLUME_STATES: ::DWORD = 0xF;
+pub const DFS_VOLUME_STATE_OK: ::DWORD = 1;
+pub const DFS_VOLUME_STATE_INCONSISTENT: ::DWORD = 2;
+pub const DFS_VOLUME_STATE_OFFLINE: ::DWORD = 3;
+pub const DFS_VOLUME_STATE_ONLINE: ::DWORD = 4;
+pub const DFS_VOLUME_STATE_RESYNCHRONIZE: ::DWORD = 0x10;
+pub const DFS_VOLUME_STATE_STANDBY: ::DWORD = 0x20;
+pub const DFS_VOLUME_STATE_FORCE_SYNC: ::DWORD = 0x40;
+pub const DFS_VOLUME_FLAVORS: ::DWORD = 0x0300;
+pub const DFS_VOLUME_FLAVOR_UNUSED1: ::DWORD = 0x0000;
+pub const DFS_VOLUME_FLAVOR_STANDALONE: ::DWORD = 0x0100;
+pub const DFS_VOLUME_FLAVOR_AD_BLOB: ::DWORD = 0x0200;
+pub const DFS_STORAGE_FLAVOR_UNUSED2: ::DWORD = 0x0300;
+pub const DFS_STORAGE_STATES: ::ULONG = 0xF;
+pub const DFS_STORAGE_STATE_OFFLINE: ::ULONG = 1;
+pub const DFS_STORAGE_STATE_ONLINE: ::ULONG = 2;
+pub const DFS_STORAGE_STATE_ACTIVE: ::ULONG = 4;
+ENUM!{enum DFS_TARGET_PRIORITY_CLASS {
+ DfsInvalidPriorityClass = -1i32 as u32,
+ DfsSiteCostNormalPriorityClass = 0,
+ DfsGlobalHighPriorityClass,
+ DfsSiteCostHighPriorityClass,
+ DfsSiteCostLowPriorityClass,
+ DfsGlobalLowPriorityClass,
+}}
+STRUCT!{struct DFS_TARGET_PRIORITY {
+ TargetPriorityClass: DFS_TARGET_PRIORITY_CLASS,
+ TargetPriorityRank: ::USHORT,
+ Reserved: ::USHORT,
+}}
+pub type PDFS_TARGET_PRIORITY = *mut DFS_TARGET_PRIORITY;
+STRUCT!{struct DFS_INFO_1 {
+ EntryPath: ::LPWSTR,
+}}
+pub type PDFS_INFO_1 = *mut DFS_INFO_1;
+pub type LPDFS_INFO_1 = *mut DFS_INFO_1;
+#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_1_32 {
+ EntryPath: ::ULONG,
+}}
+#[cfg(target_arch="x86_64")]
+pub type PDFS_INFO_1_32 = *mut DFS_INFO_1_32;
+#[cfg(target_arch="x86_64")]
+pub type LPDFS_INFO_1_32 = *mut DFS_INFO_1_32;
+STRUCT!{struct DFS_INFO_2 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ NumberOfStorages: ::DWORD,
+}}
+pub type PDFS_INFO_2 = *mut DFS_INFO_2;
+pub type LPDFS_INFO_2 = *mut DFS_INFO_2;
+#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_2_32 {
+ EntryPath: ::ULONG,
+ Comment: ::ULONG,
+ State: ::DWORD,
+ NumberOfStorages: ::DWORD,
+}}
+#[cfg(target_arch="x86_64")]
+pub type PDFS_INFO_2_32 = *mut DFS_INFO_2_32;
+#[cfg(target_arch="x86_64")]
+pub type LPDFS_INFO_2_32 = *mut DFS_INFO_2_32;
+STRUCT!{struct DFS_STORAGE_INFO {
+ State: ::ULONG,
+ ServerName: ::LPWSTR,
+ ShareName: ::LPWSTR,
+}}
+pub type PDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;
+pub type LPDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;
+#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_STORAGE_INFO_0_32 {
+ State: ::ULONG,
+ ServerName: ::ULONG,
+ ShareName: ::ULONG,
+}}
+#[cfg(target_arch="x86_64")]
+pub type PDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32;
+#[cfg(target_arch="x86_64")]
+pub type LPDFS_STORAGE_INFO_0_32 = *mut DFS_STORAGE_INFO_0_32;
+STRUCT!{struct DFS_STORAGE_INFO_1 {
+ State: ::ULONG,
+ ServerName: ::LPWSTR,
+ ShareName: ::LPWSTR,
+ TargetPriority: DFS_TARGET_PRIORITY,
+}}
+pub type PDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;
+pub type LPDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;
+STRUCT!{struct DFS_INFO_3 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ NumberOfStorages: ::DWORD,
+ Storage: LPDFS_STORAGE_INFO,
+}}
+pub type PDFS_INFO_3 = *mut DFS_INFO_3;
+pub type LPDFS_INFO_3 = *mut DFS_INFO_3;
+#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_3_32 {
+ EntryPath: ::ULONG,
+ Comment: ::ULONG,
+ State: ::DWORD,
+ NumberOfStorages: ::DWORD,
+ Storage: ::ULONG,
+}}
+#[cfg(target_arch="x86_64")]
+pub type PDFS_INFO_3_32 = *mut DFS_INFO_3_32;
+#[cfg(target_arch="x86_64")]
+pub type LPDFS_INFO_3_32 = *mut DFS_INFO_3_32;
+STRUCT!{struct DFS_INFO_4 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ Guid: ::GUID,
+ NumberOfStorages: ::DWORD,
+ Storage: LPDFS_STORAGE_INFO,
+}}
+pub type PDFS_INFO_4 = *mut DFS_INFO_4;
+pub type LPDFS_INFO_4 = *mut DFS_INFO_4;
+#[cfg(target_arch="x86_64")] STRUCT!{struct DFS_INFO_4_32 {
+ EntryPath: ::ULONG,
+ Comment: ::ULONG,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ Guid: ::GUID,
+ NumberOfStorages: ::DWORD,
+ Storage: ::ULONG,
+}}
+#[cfg(target_arch="x86_64")]
+pub type PDFS_INFO_4_32 = *mut DFS_INFO_4_32;
+#[cfg(target_arch="x86_64")]
+pub type LPDFS_INFO_4_32 = *mut DFS_INFO_4_32;
+STRUCT!{struct DFS_INFO_5 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ Guid: ::GUID,
+ PropertyFlags: ::ULONG,
+ MetadataSize: ::ULONG,
+ NumberOfStorages: ::DWORD,
+}}
+pub type PDFS_INFO_5 = *mut DFS_INFO_5;
+pub type LPDFS_INFO_5 = *mut DFS_INFO_5;
+STRUCT!{struct DFS_INFO_6 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ Guid: ::GUID,
+ PropertyFlags: ::ULONG,
+ MetadataSize: ::ULONG,
+ NumberOfStorages: ::DWORD,
+ Storage: LPDFS_STORAGE_INFO,
+}}
+pub type PDFS_INFO_6 = *mut DFS_INFO_6;
+pub type LPDFS_INFO_6 = *mut DFS_INFO_6;
+STRUCT!{struct DFS_INFO_7 {
+ GenerationGuid: ::GUID,
+}}
+pub type PDFS_INFO_7 = *mut DFS_INFO_7;
+pub type LPDFS_INFO_7 = *mut DFS_INFO_7;
+STRUCT!{struct DFS_INFO_8 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ Guid: ::GUID,
+ PropertyFlags: ::ULONG,
+ MetadataSize: ::ULONG,
+ SdLengthReserved: ::ULONG,
+ pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
+ NumberOfStorages: ::DWORD,
+}}
+pub type PDFS_INFO_8 = *mut DFS_INFO_8;
+pub type LPDFS_INFO_8 = *mut DFS_INFO_8;
+STRUCT!{struct DFS_INFO_9 {
+ EntryPath: ::LPWSTR,
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ Guid: ::GUID,
+ PropertyFlags: ::ULONG,
+ MetadataSize: ::ULONG,
+ SdLengthReserved: ::ULONG,
+ pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
+ NumberOfStorages: ::DWORD,
+ Storage: LPDFS_STORAGE_INFO,
+}}
+pub type PDFS_INFO_9 = *mut DFS_INFO_9;
+pub type LPDFS_INFO_9 = *mut DFS_INFO_9;
+pub const DFS_PROPERTY_FLAG_INSITE_REFERRALS: ::ULONG = 0x00000001;
+pub const DFS_PROPERTY_FLAG_ROOT_SCALABILITY: ::ULONG = 0x00000002;
+pub const DFS_PROPERTY_FLAG_SITE_COSTING: ::ULONG = 0x00000004;
+pub const DFS_PROPERTY_FLAG_TARGET_FAILBACK: ::ULONG = 0x00000008;
+pub const DFS_PROPERTY_FLAG_CLUSTER_ENABLED: ::ULONG = 0x00000010;
+pub const DFS_PROPERTY_FLAG_ABDE: ::ULONG = 0x00000020;
+pub const DFS_VALID_PROPERTY_FLAGS: ::ULONG = DFS_PROPERTY_FLAG_INSITE_REFERRALS
+ | DFS_PROPERTY_FLAG_ROOT_SCALABILITY | DFS_PROPERTY_FLAG_SITE_COSTING
+ | DFS_PROPERTY_FLAG_TARGET_FAILBACK | DFS_PROPERTY_FLAG_CLUSTER_ENABLED
+ | DFS_PROPERTY_FLAG_ABDE;
+STRUCT!{struct DFS_INFO_50 {
+ NamespaceMajorVersion: ::ULONG,
+ NamespaceMinorVersion: ::ULONG,
+ NamespaceCapabilities: ::ULONGLONG,
+}}
+pub type PDFS_INFO_50 = *mut DFS_INFO_50;
+pub type LPDFS_INFO_50 = *mut DFS_INFO_50;
+STRUCT!{struct DFS_INFO_100 {
+ Comment: ::LPWSTR,
+}}
+pub type PDFS_INFO_100 = *mut DFS_INFO_100;
+pub type LPDFS_INFO_100 = *mut DFS_INFO_100;
+STRUCT!{struct DFS_INFO_101 {
+ State: ::DWORD,
+}}
+pub type PDFS_INFO_101 = *mut DFS_INFO_101;
+pub type LPDFS_INFO_101 = *mut DFS_INFO_101;
+STRUCT!{struct DFS_INFO_102 {
+ Timeout: ::ULONG,
+}}
+pub type PDFS_INFO_102 = *mut DFS_INFO_102;
+pub type LPDFS_INFO_102 = *mut DFS_INFO_102;
+STRUCT!{struct DFS_INFO_103 {
+ PropertyFlagMask: ::ULONG,
+ PropertyFlags: ::ULONG,
+}}
+pub type PDFS_INFO_103 = *mut DFS_INFO_103;
+pub type LPDFS_INFO_103 = *mut DFS_INFO_103;
+STRUCT!{struct DFS_INFO_104 {
+ TargetPriority: DFS_TARGET_PRIORITY,
+}}
+pub type PDFS_INFO_104 = *mut DFS_INFO_104;
+pub type LPDFS_INFO_104 = *mut DFS_INFO_104;
+STRUCT!{struct DFS_INFO_105 {
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ PropertyFlagMask: ::ULONG,
+ PropertyFlags: ::ULONG,
+}}
+pub type PDFS_INFO_105 = *mut DFS_INFO_105;
+pub type LPDFS_INFO_105 = *mut DFS_INFO_105;
+STRUCT!{struct DFS_INFO_106 {
+ State: ::DWORD,
+ TargetPriority: DFS_TARGET_PRIORITY,
+}}
+pub type PDFS_INFO_106 = *mut DFS_INFO_106;
+pub type LPDFS_INFO_106 = *mut DFS_INFO_106;
+STRUCT!{struct DFS_INFO_107 {
+ Comment: ::LPWSTR,
+ State: ::DWORD,
+ Timeout: ::ULONG,
+ PropertyFlagMask: ::ULONG,
+ PropertyFlags: ::ULONG,
+ SdLengthReserved: ::ULONG,
+ pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
+}}
+pub type PDFS_INFO_107 = *mut DFS_INFO_107;
+pub type LPDFS_INFO_107 = *mut DFS_INFO_107;
+STRUCT!{struct DFS_INFO_150 {
+ SdLengthReserved: ::ULONG,
+ pSecurityDescriptor: ::PSECURITY_DESCRIPTOR,
+}}
+pub type PDFS_INFO_150 = *mut DFS_INFO_150;
+pub type LPDFS_INFO_150 = *mut DFS_INFO_150;
+STRUCT!{struct DFS_INFO_200 {
+ FtDfsName: ::LPWSTR,
+}}
+pub type PDFS_INFO_200 = *mut DFS_INFO_200;
+pub type LPDFS_INFO_200 = *mut DFS_INFO_200;
+STRUCT!{struct DFS_INFO_300 {
+ Flags: ::DWORD,
+ DfsName: ::LPWSTR,
+}}
+pub type PDFS_INFO_300 = *mut DFS_INFO_300;
+pub type LPDFS_INFO_300 = *mut DFS_INFO_300;
+pub const DFS_ADD_VOLUME: ::DWORD = 1;
+pub const DFS_RESTORE_VOLUME: ::DWORD = 2;
+pub const NET_DFS_SETDC_FLAGS: ::DWORD = 0x00000000;
+pub const NET_DFS_SETDC_TIMEOUT: ::DWORD = 0x00000001;
+pub const NET_DFS_SETDC_INITPKT: ::DWORD = 0x00000002;
+STRUCT!{struct DFS_SITENAME_INFO {
+ SiteFlags: ::ULONG,
+ SiteName: ::LPWSTR,
+}}
+pub type PDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;
+pub type LPDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;
+pub const DFS_SITE_PRIMARY: ::ULONG = 0x1;
+STRUCT!{struct DFS_SITELIST_INFO {
+ cSites: ::ULONG,
+ Site: [DFS_SITENAME_INFO; 1],
+}}
+pub type PDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;
+pub type LPDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;
+ENUM!{enum DFS_NAMESPACE_VERSION_ORIGIN {
+ DFS_NAMESPACE_VERSION_ORIGIN_COMBINED = 0,
+ DFS_NAMESPACE_VERSION_ORIGIN_SERVER,
+ DFS_NAMESPACE_VERSION_ORIGIN_DOMAIN,
+}}
+pub type PDFS_NAMESPACE_VERSION_ORIGIN = *mut DFS_NAMESPACE_VERSION_ORIGIN;
+pub const DFS_NAMESPACE_CAPABILITY_ABDE: ::ULONGLONG = 0x0000000000000001;
+STRUCT!{struct DFS_SUPPORTED_NAMESPACE_VERSION_INFO {
+ DomainDfsMajorVersion: ::ULONG,
+ DomainDfsMinorVersion: ::ULONG,
+ DomainDfsCapabilities: ::ULONGLONG,
+ StandaloneDfsMajorVersion: ::ULONG,
+ StandaloneDfsMinorVersion: ::ULONG,
+ StandaloneDfsCapabilities: ::ULONGLONG,
+}}
+pub type PDFS_SUPPORTED_NAMESPACE_VERSION_INFO = *mut DFS_SUPPORTED_NAMESPACE_VERSION_INFO;
diff --git a/third_party/rust/winapi-0.2.8/src/lmerrlog.rs b/third_party/rust/winapi-0.2.8/src/lmerrlog.rs
new file mode 100644
index 0000000000..ebbe3b0fef
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lmerrlog.rs
@@ -0,0 +1,263 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+STRUCT!{struct ERROR_LOG {
+ el_len: ::DWORD,
+ el_reserved: ::DWORD,
+ el_time: ::DWORD,
+ el_error: ::DWORD,
+ el_name: ::LPWSTR,
+ el_text: ::LPWSTR,
+ el_data: ::LPBYTE,
+ el_data_size: ::DWORD,
+ el_nstrings: ::DWORD,
+}}
+pub type PERROR_LOG = *mut ERROR_LOG;
+pub type LPERROR_LOG = *mut ERROR_LOG;
+STRUCT!{struct HLOG {
+ time: ::DWORD,
+ last_flags: ::DWORD,
+ offset: ::DWORD,
+ rec_offset: ::DWORD,
+}}
+pub type PHLOG = *mut HLOG;
+pub type LPHLOG = *mut HLOG;
+pub const LOGFLAGS_FORWARD: ::DWORD = 0;
+pub const LOGFLAGS_BACKWARD: ::DWORD = 0x1;
+pub const LOGFLAGS_SEEK: ::DWORD = 0x2;
+pub const ERRLOG_BASE: ::DWORD = 3100;
+pub const NELOG_Internal_Error: ::DWORD = ERRLOG_BASE + 0;
+pub const NELOG_Resource_Shortage: ::DWORD = ERRLOG_BASE + 1;
+pub const NELOG_Unable_To_Lock_Segment: ::DWORD = ERRLOG_BASE + 2;
+pub const NELOG_Unable_To_Unlock_Segment: ::DWORD = ERRLOG_BASE + 3;
+pub const NELOG_Uninstall_Service: ::DWORD = ERRLOG_BASE + 4;
+pub const NELOG_Init_Exec_Fail: ::DWORD = ERRLOG_BASE + 5;
+pub const NELOG_Ncb_Error: ::DWORD = ERRLOG_BASE + 6;
+pub const NELOG_Net_Not_Started: ::DWORD = ERRLOG_BASE + 7;
+pub const NELOG_Ioctl_Error: ::DWORD = ERRLOG_BASE + 8;
+pub const NELOG_System_Semaphore: ::DWORD = ERRLOG_BASE + 9;
+pub const NELOG_Init_OpenCreate_Err: ::DWORD = ERRLOG_BASE + 10;
+pub const NELOG_NetBios: ::DWORD = ERRLOG_BASE + 11;
+pub const NELOG_SMB_Illegal: ::DWORD = ERRLOG_BASE + 12;
+pub const NELOG_Service_Fail: ::DWORD = ERRLOG_BASE + 13;
+pub const NELOG_Entries_Lost: ::DWORD = ERRLOG_BASE + 14;
+pub const NELOG_Init_Seg_Overflow: ::DWORD = ERRLOG_BASE + 20;
+pub const NELOG_Srv_No_Mem_Grow: ::DWORD = ERRLOG_BASE + 21;
+pub const NELOG_Access_File_Bad: ::DWORD = ERRLOG_BASE + 22;
+pub const NELOG_Srvnet_Not_Started: ::DWORD = ERRLOG_BASE + 23;
+pub const NELOG_Init_Chardev_Err: ::DWORD = ERRLOG_BASE + 24;
+pub const NELOG_Remote_API: ::DWORD = ERRLOG_BASE + 25;
+pub const NELOG_Ncb_TooManyErr: ::DWORD = ERRLOG_BASE + 26;
+pub const NELOG_Mailslot_err: ::DWORD = ERRLOG_BASE + 27;
+pub const NELOG_ReleaseMem_Alert: ::DWORD = ERRLOG_BASE + 28;
+pub const NELOG_AT_cannot_write: ::DWORD = ERRLOG_BASE + 29;
+pub const NELOG_Cant_Make_Msg_File: ::DWORD = ERRLOG_BASE + 30;
+pub const NELOG_Exec_Netservr_NoMem: ::DWORD = ERRLOG_BASE + 31;
+pub const NELOG_Server_Lock_Failure: ::DWORD = ERRLOG_BASE + 32;
+pub const NELOG_Msg_Shutdown: ::DWORD = ERRLOG_BASE + 40;
+pub const NELOG_Msg_Sem_Shutdown: ::DWORD = ERRLOG_BASE + 41;
+pub const NELOG_Msg_Log_Err: ::DWORD = ERRLOG_BASE + 50;
+pub const NELOG_VIO_POPUP_ERR: ::DWORD = ERRLOG_BASE + 51;
+pub const NELOG_Msg_Unexpected_SMB_Type: ::DWORD = ERRLOG_BASE + 52;
+pub const NELOG_Wksta_Infoseg: ::DWORD = ERRLOG_BASE + 60;
+pub const NELOG_Wksta_Compname: ::DWORD = ERRLOG_BASE + 61;
+pub const NELOG_Wksta_BiosThreadFailure: ::DWORD = ERRLOG_BASE + 62;
+pub const NELOG_Wksta_IniSeg: ::DWORD = ERRLOG_BASE + 63;
+pub const NELOG_Wksta_HostTab_Full: ::DWORD = ERRLOG_BASE + 64;
+pub const NELOG_Wksta_Bad_Mailslot_SMB: ::DWORD = ERRLOG_BASE + 65;
+pub const NELOG_Wksta_UASInit: ::DWORD = ERRLOG_BASE + 66;
+pub const NELOG_Wksta_SSIRelogon: ::DWORD = ERRLOG_BASE + 67;
+pub const NELOG_Build_Name: ::DWORD = ERRLOG_BASE + 70;
+pub const NELOG_Name_Expansion: ::DWORD = ERRLOG_BASE + 71;
+pub const NELOG_Message_Send: ::DWORD = ERRLOG_BASE + 72;
+pub const NELOG_Mail_Slt_Err: ::DWORD = ERRLOG_BASE + 73;
+pub const NELOG_AT_cannot_read: ::DWORD = ERRLOG_BASE + 74;
+pub const NELOG_AT_sched_err: ::DWORD = ERRLOG_BASE + 75;
+pub const NELOG_AT_schedule_file_created: ::DWORD = ERRLOG_BASE + 76;
+pub const NELOG_Srvnet_NB_Open: ::DWORD = ERRLOG_BASE + 77;
+pub const NELOG_AT_Exec_Err: ::DWORD = ERRLOG_BASE + 78;
+pub const NELOG_Lazy_Write_Err: ::DWORD = ERRLOG_BASE + 80;
+pub const NELOG_HotFix: ::DWORD = ERRLOG_BASE + 81;
+pub const NELOG_HardErr_From_Server: ::DWORD = ERRLOG_BASE + 82;
+pub const NELOG_LocalSecFail1: ::DWORD = ERRLOG_BASE + 83;
+pub const NELOG_LocalSecFail2: ::DWORD = ERRLOG_BASE + 84;
+pub const NELOG_LocalSecFail3: ::DWORD = ERRLOG_BASE + 85;
+pub const NELOG_LocalSecGeneralFail: ::DWORD = ERRLOG_BASE + 86;
+pub const NELOG_NetWkSta_Internal_Error: ::DWORD = ERRLOG_BASE + 90;
+pub const NELOG_NetWkSta_No_Resource: ::DWORD = ERRLOG_BASE + 91;
+pub const NELOG_NetWkSta_SMB_Err: ::DWORD = ERRLOG_BASE + 92;
+pub const NELOG_NetWkSta_VC_Err: ::DWORD = ERRLOG_BASE + 93;
+pub const NELOG_NetWkSta_Stuck_VC_Err: ::DWORD = ERRLOG_BASE + 94;
+pub const NELOG_NetWkSta_NCB_Err: ::DWORD = ERRLOG_BASE + 95;
+pub const NELOG_NetWkSta_Write_Behind_Err: ::DWORD = ERRLOG_BASE + 96;
+pub const NELOG_NetWkSta_Reset_Err: ::DWORD = ERRLOG_BASE + 97;
+pub const NELOG_NetWkSta_Too_Many: ::DWORD = ERRLOG_BASE + 98;
+pub const NELOG_Srv_Thread_Failure: ::DWORD = ERRLOG_BASE + 104;
+pub const NELOG_Srv_Close_Failure: ::DWORD = ERRLOG_BASE + 105;
+pub const NELOG_ReplUserCurDir: ::DWORD = ERRLOG_BASE + 106;
+pub const NELOG_ReplCannotMasterDir: ::DWORD = ERRLOG_BASE + 107;
+pub const NELOG_ReplUpdateError: ::DWORD = ERRLOG_BASE + 108;
+pub const NELOG_ReplLostMaster: ::DWORD = ERRLOG_BASE + 109;
+pub const NELOG_NetlogonAuthDCFail: ::DWORD = ERRLOG_BASE + 110;
+pub const NELOG_ReplLogonFailed: ::DWORD = ERRLOG_BASE + 111;
+pub const NELOG_ReplNetErr: ::DWORD = ERRLOG_BASE + 112;
+pub const NELOG_ReplMaxFiles: ::DWORD = ERRLOG_BASE + 113;
+pub const NELOG_ReplMaxTreeDepth: ::DWORD = ERRLOG_BASE + 114;
+pub const NELOG_ReplBadMsg: ::DWORD = ERRLOG_BASE + 115;
+pub const NELOG_ReplSysErr: ::DWORD = ERRLOG_BASE + 116;
+pub const NELOG_ReplUserLoged: ::DWORD = ERRLOG_BASE + 117;
+pub const NELOG_ReplBadImport: ::DWORD = ERRLOG_BASE + 118;
+pub const NELOG_ReplBadExport: ::DWORD = ERRLOG_BASE + 119;
+pub const NELOG_ReplSignalFileErr: ::DWORD = ERRLOG_BASE + 120;
+pub const NELOG_DiskFT: ::DWORD = ERRLOG_BASE + 121;
+pub const NELOG_ReplAccessDenied: ::DWORD = ERRLOG_BASE + 122;
+pub const NELOG_NetlogonFailedPrimary: ::DWORD = ERRLOG_BASE + 123;
+pub const NELOG_NetlogonPasswdSetFailed: ::DWORD = ERRLOG_BASE + 124;
+pub const NELOG_NetlogonTrackingError: ::DWORD = ERRLOG_BASE + 125;
+pub const NELOG_NetlogonSyncError: ::DWORD = ERRLOG_BASE + 126;
+pub const NELOG_NetlogonRequireSignOrSealError: ::DWORD = ERRLOG_BASE + 127;
+pub const NELOG_UPS_PowerOut: ::DWORD = ERRLOG_BASE + 130;
+pub const NELOG_UPS_Shutdown: ::DWORD = ERRLOG_BASE + 131;
+pub const NELOG_UPS_CmdFileError: ::DWORD = ERRLOG_BASE + 132;
+pub const NELOG_UPS_CannotOpenDriver: ::DWORD = ERRLOG_BASE+133;
+pub const NELOG_UPS_PowerBack: ::DWORD = ERRLOG_BASE + 134;
+pub const NELOG_UPS_CmdFileConfig: ::DWORD = ERRLOG_BASE + 135;
+pub const NELOG_UPS_CmdFileExec: ::DWORD = ERRLOG_BASE + 136;
+pub const NELOG_Missing_Parameter: ::DWORD = ERRLOG_BASE + 150;
+pub const NELOG_Invalid_Config_Line: ::DWORD = ERRLOG_BASE + 151;
+pub const NELOG_Invalid_Config_File: ::DWORD = ERRLOG_BASE + 152;
+pub const NELOG_File_Changed: ::DWORD = ERRLOG_BASE + 153;
+pub const NELOG_Files_Dont_Fit: ::DWORD = ERRLOG_BASE + 154;
+pub const NELOG_Wrong_DLL_Version: ::DWORD = ERRLOG_BASE + 155;
+pub const NELOG_Error_in_DLL: ::DWORD = ERRLOG_BASE + 156;
+pub const NELOG_System_Error: ::DWORD = ERRLOG_BASE + 157;
+pub const NELOG_FT_ErrLog_Too_Large: ::DWORD = ERRLOG_BASE + 158;
+pub const NELOG_FT_Update_In_Progress: ::DWORD = ERRLOG_BASE + 159;
+pub const NELOG_Joined_Domain: ::DWORD = ERRLOG_BASE + 160;
+pub const NELOG_Joined_Workgroup: ::DWORD = ERRLOG_BASE + 161;
+pub const NELOG_OEM_Code: ::DWORD = ERRLOG_BASE + 199;
+pub const ERRLOG2_BASE: ::DWORD = 5700;
+pub const NELOG_NetlogonSSIInitError: ::DWORD = ERRLOG2_BASE + 0;
+pub const NELOG_NetlogonFailedToUpdateTrustList: ::DWORD = ERRLOG2_BASE + 1;
+pub const NELOG_NetlogonFailedToAddRpcInterface: ::DWORD = ERRLOG2_BASE + 2;
+pub const NELOG_NetlogonFailedToReadMailslot: ::DWORD = ERRLOG2_BASE + 3;
+pub const NELOG_NetlogonFailedToRegisterSC: ::DWORD = ERRLOG2_BASE + 4;
+pub const NELOG_NetlogonChangeLogCorrupt: ::DWORD = ERRLOG2_BASE + 5;
+pub const NELOG_NetlogonFailedToCreateShare: ::DWORD = ERRLOG2_BASE + 6;
+pub const NELOG_NetlogonDownLevelLogonFailed: ::DWORD = ERRLOG2_BASE + 7;
+pub const NELOG_NetlogonDownLevelLogoffFailed: ::DWORD = ERRLOG2_BASE + 8;
+pub const NELOG_NetlogonNTLogonFailed: ::DWORD = ERRLOG2_BASE + 9;
+pub const NELOG_NetlogonNTLogoffFailed: ::DWORD = ERRLOG2_BASE + 10;
+pub const NELOG_NetlogonPartialSyncCallSuccess: ::DWORD = ERRLOG2_BASE + 11;
+pub const NELOG_NetlogonPartialSyncCallFailed: ::DWORD = ERRLOG2_BASE + 12;
+pub const NELOG_NetlogonFullSyncCallSuccess: ::DWORD = ERRLOG2_BASE + 13;
+pub const NELOG_NetlogonFullSyncCallFailed: ::DWORD = ERRLOG2_BASE + 14;
+pub const NELOG_NetlogonPartialSyncSuccess: ::DWORD = ERRLOG2_BASE + 15;
+pub const NELOG_NetlogonPartialSyncFailed: ::DWORD = ERRLOG2_BASE + 16;
+pub const NELOG_NetlogonFullSyncSuccess: ::DWORD = ERRLOG2_BASE + 17;
+pub const NELOG_NetlogonFullSyncFailed: ::DWORD = ERRLOG2_BASE + 18;
+pub const NELOG_NetlogonAuthNoDomainController: ::DWORD = ERRLOG2_BASE + 19;
+pub const NELOG_NetlogonAuthNoTrustLsaSecret: ::DWORD = ERRLOG2_BASE + 20;
+pub const NELOG_NetlogonAuthNoTrustSamAccount: ::DWORD = ERRLOG2_BASE + 21;
+pub const NELOG_NetlogonServerAuthFailed: ::DWORD = ERRLOG2_BASE + 22;
+pub const NELOG_NetlogonServerAuthNoTrustSamAccount: ::DWORD = ERRLOG2_BASE + 23;
+pub const NELOG_FailedToRegisterSC: ::DWORD = ERRLOG2_BASE + 24;
+pub const NELOG_FailedToSetServiceStatus: ::DWORD = ERRLOG2_BASE + 25;
+pub const NELOG_FailedToGetComputerName: ::DWORD = ERRLOG2_BASE + 26;
+pub const NELOG_DriverNotLoaded: ::DWORD = ERRLOG2_BASE + 27;
+pub const NELOG_NoTranportLoaded: ::DWORD = ERRLOG2_BASE + 28;
+pub const NELOG_NetlogonFailedDomainDelta: ::DWORD = ERRLOG2_BASE + 29;
+pub const NELOG_NetlogonFailedGlobalGroupDelta: ::DWORD = ERRLOG2_BASE + 30;
+pub const NELOG_NetlogonFailedLocalGroupDelta: ::DWORD = ERRLOG2_BASE + 31;
+pub const NELOG_NetlogonFailedUserDelta: ::DWORD = ERRLOG2_BASE + 32;
+pub const NELOG_NetlogonFailedPolicyDelta: ::DWORD = ERRLOG2_BASE + 33;
+pub const NELOG_NetlogonFailedTrustedDomainDelta: ::DWORD = ERRLOG2_BASE + 34;
+pub const NELOG_NetlogonFailedAccountDelta: ::DWORD = ERRLOG2_BASE + 35;
+pub const NELOG_NetlogonFailedSecretDelta: ::DWORD = ERRLOG2_BASE + 36;
+pub const NELOG_NetlogonSystemError: ::DWORD = ERRLOG2_BASE + 37;
+pub const NELOG_NetlogonDuplicateMachineAccounts: ::DWORD = ERRLOG2_BASE + 38;
+pub const NELOG_NetlogonTooManyGlobalGroups: ::DWORD = ERRLOG2_BASE + 39;
+pub const NELOG_NetlogonBrowserDriver: ::DWORD = ERRLOG2_BASE + 40;
+pub const NELOG_NetlogonAddNameFailure: ::DWORD = ERRLOG2_BASE + 41;
+pub const NELOG_RplMessages: ::DWORD = ERRLOG2_BASE + 42;
+pub const NELOG_RplXnsBoot: ::DWORD = ERRLOG2_BASE + 43;
+pub const NELOG_RplSystem: ::DWORD = ERRLOG2_BASE + 44;
+pub const NELOG_RplWkstaTimeout: ::DWORD = ERRLOG2_BASE + 45;
+pub const NELOG_RplWkstaFileOpen: ::DWORD = ERRLOG2_BASE + 46;
+pub const NELOG_RplWkstaFileRead: ::DWORD = ERRLOG2_BASE + 47;
+pub const NELOG_RplWkstaMemory: ::DWORD = ERRLOG2_BASE + 48;
+pub const NELOG_RplWkstaFileChecksum: ::DWORD = ERRLOG2_BASE + 49;
+pub const NELOG_RplWkstaFileLineCount: ::DWORD = ERRLOG2_BASE + 50;
+pub const NELOG_RplWkstaBbcFile: ::DWORD = ERRLOG2_BASE + 51;
+pub const NELOG_RplWkstaFileSize: ::DWORD = ERRLOG2_BASE + 52;
+pub const NELOG_RplWkstaInternal: ::DWORD = ERRLOG2_BASE + 53;
+pub const NELOG_RplWkstaWrongVersion: ::DWORD = ERRLOG2_BASE + 54;
+pub const NELOG_RplWkstaNetwork: ::DWORD = ERRLOG2_BASE + 55;
+pub const NELOG_RplAdapterResource: ::DWORD = ERRLOG2_BASE + 56;
+pub const NELOG_RplFileCopy: ::DWORD = ERRLOG2_BASE + 57;
+pub const NELOG_RplFileDelete: ::DWORD = ERRLOG2_BASE + 58;
+pub const NELOG_RplFilePerms: ::DWORD = ERRLOG2_BASE + 59;
+pub const NELOG_RplCheckConfigs: ::DWORD = ERRLOG2_BASE + 60;
+pub const NELOG_RplCreateProfiles: ::DWORD = ERRLOG2_BASE + 61;
+pub const NELOG_RplRegistry: ::DWORD = ERRLOG2_BASE + 62;
+pub const NELOG_RplReplaceRPLDISK: ::DWORD = ERRLOG2_BASE + 63;
+pub const NELOG_RplCheckSecurity: ::DWORD = ERRLOG2_BASE + 64;
+pub const NELOG_RplBackupDatabase: ::DWORD = ERRLOG2_BASE + 65;
+pub const NELOG_RplInitDatabase: ::DWORD = ERRLOG2_BASE + 66;
+pub const NELOG_RplRestoreDatabaseFailure: ::DWORD = ERRLOG2_BASE + 67;
+pub const NELOG_RplRestoreDatabaseSuccess: ::DWORD = ERRLOG2_BASE + 68;
+pub const NELOG_RplInitRestoredDatabase: ::DWORD = ERRLOG2_BASE + 69;
+pub const NELOG_NetlogonSessionTypeWrong: ::DWORD = ERRLOG2_BASE + 70;
+pub const NELOG_RplUpgradeDBTo40: ::DWORD = ERRLOG2_BASE + 71;
+pub const NELOG_NetlogonLanmanBdcsNotAllowed: ::DWORD = ERRLOG2_BASE + 72;
+pub const NELOG_NetlogonNoDynamicDns: ::DWORD = ERRLOG2_BASE + 73;
+pub const NELOG_NetlogonDynamicDnsRegisterFailure: ::DWORD = ERRLOG2_BASE + 74;
+pub const NELOG_NetlogonDynamicDnsDeregisterFailure: ::DWORD = ERRLOG2_BASE + 75;
+pub const NELOG_NetlogonFailedFileCreate: ::DWORD = ERRLOG2_BASE + 76;
+pub const NELOG_NetlogonGetSubnetToSite: ::DWORD = ERRLOG2_BASE + 77;
+pub const NELOG_NetlogonNoSiteForClient: ::DWORD = ERRLOG2_BASE + 78;
+pub const NELOG_NetlogonBadSiteName: ::DWORD = ERRLOG2_BASE + 79;
+pub const NELOG_NetlogonBadSubnetName: ::DWORD = ERRLOG2_BASE + 80;
+pub const NELOG_NetlogonDynamicDnsServerFailure: ::DWORD = ERRLOG2_BASE + 81;
+pub const NELOG_NetlogonDynamicDnsFailure: ::DWORD = ERRLOG2_BASE + 82;
+pub const NELOG_NetlogonRpcCallCancelled: ::DWORD = ERRLOG2_BASE + 83;
+pub const NELOG_NetlogonDcSiteCovered: ::DWORD = ERRLOG2_BASE + 84;
+pub const NELOG_NetlogonDcSiteNotCovered: ::DWORD = ERRLOG2_BASE + 85;
+pub const NELOG_NetlogonGcSiteCovered: ::DWORD = ERRLOG2_BASE + 86;
+pub const NELOG_NetlogonGcSiteNotCovered: ::DWORD = ERRLOG2_BASE + 87;
+pub const NELOG_NetlogonFailedSpnUpdate: ::DWORD = ERRLOG2_BASE + 88;
+pub const NELOG_NetlogonFailedDnsHostNameUpdate: ::DWORD = ERRLOG2_BASE + 89;
+pub const NELOG_NetlogonAuthNoUplevelDomainController: ::DWORD = ERRLOG2_BASE + 90;
+pub const NELOG_NetlogonAuthDomainDowngraded: ::DWORD = ERRLOG2_BASE + 91;
+pub const NELOG_NetlogonNdncSiteCovered: ::DWORD = ERRLOG2_BASE + 92;
+pub const NELOG_NetlogonNdncSiteNotCovered: ::DWORD = ERRLOG2_BASE + 93;
+pub const NELOG_NetlogonDcOldSiteCovered: ::DWORD = ERRLOG2_BASE + 94;
+pub const NELOG_NetlogonDcSiteNotCoveredAuto: ::DWORD = ERRLOG2_BASE + 95;
+pub const NELOG_NetlogonGcOldSiteCovered: ::DWORD = ERRLOG2_BASE + 96;
+pub const NELOG_NetlogonGcSiteNotCoveredAuto: ::DWORD = ERRLOG2_BASE + 97;
+pub const NELOG_NetlogonNdncOldSiteCovered: ::DWORD = ERRLOG2_BASE + 98;
+pub const NELOG_NetlogonNdncSiteNotCoveredAuto: ::DWORD = ERRLOG2_BASE + 99;
+pub const NELOG_NetlogonSpnMultipleSamAccountNames: ::DWORD = ERRLOG2_BASE + 100;
+pub const NELOG_NetlogonSpnCrackNamesFailure: ::DWORD = ERRLOG2_BASE + 101;
+pub const NELOG_NetlogonNoAddressToSiteMapping: ::DWORD = ERRLOG2_BASE + 102;
+pub const NELOG_NetlogonInvalidGenericParameterValue: ::DWORD = ERRLOG2_BASE + 103;
+pub const NELOG_NetlogonInvalidDwordParameterValue: ::DWORD = ERRLOG2_BASE + 104;
+pub const NELOG_NetlogonServerAuthFailedNoAccount: ::DWORD = ERRLOG2_BASE + 105;
+pub const NELOG_NetlogonNoDynamicDnsManual: ::DWORD = ERRLOG2_BASE + 106;
+pub const NELOG_NetlogonNoSiteForClients: ::DWORD = ERRLOG2_BASE + 107;
+pub const NELOG_NetlogonDnsDeregAborted: ::DWORD = ERRLOG2_BASE + 108;
+pub const NELOG_NetlogonRpcPortRequestFailure: ::DWORD = ERRLOG2_BASE + 109;
+pub const NELOG_NetlogonPartialSiteMappingForClients: ::DWORD = ERRLOG2_BASE + 110;
+pub const NELOG_NetlogonRemoteDynamicDnsRegisterFailure: ::DWORD = ERRLOG2_BASE + 111;
+pub const NELOG_NetlogonRemoteDynamicDnsDeregisterFailure: ::DWORD = ERRLOG2_BASE + 112;
+pub const NELOG_NetlogonRejectedRemoteDynamicDnsRegister: ::DWORD = ERRLOG2_BASE + 113;
+pub const NELOG_NetlogonRejectedRemoteDynamicDnsDeregister: ::DWORD = ERRLOG2_BASE + 114;
+pub const NELOG_NetlogonRemoteDynamicDnsUpdateRequestFailure: ::DWORD = ERRLOG2_BASE + 115;
+pub const NELOG_NetlogonUserValidationReqInitialTimeOut: ::DWORD = ERRLOG2_BASE + 116;
+pub const NELOG_NetlogonUserValidationReqRecurringTimeOut: ::DWORD = ERRLOG2_BASE + 117;
+pub const NELOG_NetlogonUserValidationReqWaitInitialWarning: ::DWORD = ERRLOG2_BASE + 118;
+pub const NELOG_NetlogonUserValidationReqWaitRecurringWarning: ::DWORD = ERRLOG2_BASE + 119;
+pub const NELOG_NetlogonFailedToAddAuthzRpcInterface: ::DWORD = ERRLOG2_BASE + 120;
+pub const NELOG_NetLogonFailedToInitializeAuthzRm: ::DWORD = ERRLOG2_BASE + 121;
+pub const NELOG_NetLogonFailedToInitializeRPCSD: ::DWORD = ERRLOG2_BASE + 122;
+pub const NELOG_NetlogonMachinePasswdSetSucceeded: ::DWORD = ERRLOG2_BASE + 123;
+pub const NELOG_NetlogonMsaPasswdSetSucceeded: ::DWORD = ERRLOG2_BASE + 124;
diff --git a/third_party/rust/winapi-0.2.8/src/lmjoin.rs b/third_party/rust/winapi-0.2.8/src/lmjoin.rs
new file mode 100644
index 0000000000..12b8a1014b
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lmjoin.rs
@@ -0,0 +1,80 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+// Definitions and prototypes for the Net setup apis
+ENUM!{enum NETSETUP_NAME_TYPE {
+ NetSetupUnknown = 0,
+ NetSetupMachine,
+ NetSetupWorkgroup,
+ NetSetupDomain,
+ NetSetupNonExistentDomain,
+ NetSetupDnsMachine,
+}}
+pub type PNETSETUP_NAME_TYPE = *mut NETSETUP_NAME_TYPE;
+ENUM!{enum NETSETUP_JOIN_STATUS {
+ NetSetupUnknownStatus = 0,
+ NetSetupUnjoined,
+ NetSetupWorkgroupName,
+ NetSetupDomainName,
+}}
+pub type PNETSETUP_JOIN_STATUS = *mut NETSETUP_JOIN_STATUS;
+pub const NETSETUP_JOIN_DOMAIN: ::DWORD = 0x00000001;
+pub const NETSETUP_ACCT_CREATE: ::DWORD = 0x00000002;
+pub const NETSETUP_ACCT_DELETE: ::DWORD = 0x00000004;
+pub const NETSETUP_WIN9X_UPGRADE: ::DWORD = 0x00000010;
+pub const NETSETUP_DOMAIN_JOIN_IF_JOINED: ::DWORD = 0x00000020;
+pub const NETSETUP_JOIN_UNSECURE: ::DWORD = 0x00000040;
+pub const NETSETUP_MACHINE_PWD_PASSED: ::DWORD = 0x00000080;
+pub const NETSETUP_DEFER_SPN_SET: ::DWORD = 0x00000100;
+pub const NETSETUP_JOIN_DC_ACCOUNT: ::DWORD = 0x00000200;
+pub const NETSETUP_JOIN_WITH_NEW_NAME: ::DWORD = 0x00000400;
+pub const NETSETUP_JOIN_READONLY: ::DWORD = 0x00000800;
+pub const NETSETUP_DNS_NAME_CHANGES_ONLY: ::DWORD = 0x00001000;
+pub const NETSETUP_INSTALL_INVOCATION: ::DWORD = 0x00040000;
+pub const NETSETUP_AMBIGUOUS_DC: ::DWORD = 0x00001000;
+pub const NETSETUP_NO_NETLOGON_CACHE: ::DWORD = 0x00002000;
+pub const NETSETUP_DONT_CONTROL_SERVICES: ::DWORD = 0x00004000;
+pub const NETSETUP_SET_MACHINE_NAME: ::DWORD = 0x00008000;
+pub const NETSETUP_FORCE_SPN_SET: ::DWORD = 0x00010000;
+pub const NETSETUP_NO_ACCT_REUSE: ::DWORD = 0x00020000;
+pub const NETSETUP_ALT_SAMACCOUNTNAME: ::DWORD = 0x00020000;
+pub const NETSETUP_IGNORE_UNSUPPORTED_FLAGS: ::DWORD = 0x10000000;
+pub const NETSETUP_VALID_UNJOIN_FLAGS: ::DWORD = NETSETUP_ACCT_DELETE
+ | NETSETUP_IGNORE_UNSUPPORTED_FLAGS | NETSETUP_JOIN_DC_ACCOUNT;
+pub const NETSETUP_PROCESS_OFFLINE_FLAGS: ::DWORD = NETSETUP_JOIN_DOMAIN
+ | NETSETUP_DOMAIN_JOIN_IF_JOINED | NETSETUP_JOIN_WITH_NEW_NAME | NETSETUP_DONT_CONTROL_SERVICES
+ | NETSETUP_MACHINE_PWD_PASSED;
+pub const NETSETUP_PROVISION_DOWNLEVEL_PRIV_SUPPORT: ::DWORD = 0x00000001;
+pub const NETSETUP_PROVISION_REUSE_ACCOUNT: ::DWORD = 0x00000002;
+pub const NETSETUP_PROVISION_USE_DEFAULT_PASSWORD: ::DWORD = 0x00000004;
+pub const NETSETUP_PROVISION_SKIP_ACCOUNT_SEARCH: ::DWORD = 0x00000008;
+pub const NETSETUP_PROVISION_ROOT_CA_CERTS: ::DWORD = 0x00000010;
+pub const NETSETUP_PROVISION_PERSISTENTSITE: ::DWORD = 0x00000020;
+pub const NETSETUP_PROVISION_ONLINE_CALLER: ::DWORD = 0x40000000;
+pub const NETSETUP_PROVISION_CHECK_PWD_ONLY: ::DWORD = 0x80000000;
+pub const NETSETUP_PROVISIONING_PARAMS_WIN8_VERSION: ::DWORD = 0x00000001;
+pub const NETSETUP_PROVISIONING_PARAMS_CURRENT_VERSION: ::DWORD = 0x00000002;
+STRUCT!{struct NETSETUP_PROVISIONING_PARAMS {
+ dwVersion: ::DWORD,
+ lpDomain: ::LPCWSTR,
+ lpHostName: ::LPCWSTR,
+ lpMachineAccountOU: ::LPCWSTR,
+ lpDcName: ::LPCWSTR,
+ dwProvisionOptions: ::DWORD,
+ aCertTemplateNames: *mut ::LPCWSTR,
+ cCertTemplateNames: ::DWORD,
+ aMachinePolicyNames: *mut ::LPCWSTR,
+ cMachinePolicyNames: ::DWORD,
+ aMachinePolicyPaths: *mut ::LPCWSTR,
+ cMachinePolicyPaths: ::DWORD,
+ lpNetbiosName: ::LPWSTR,
+ lpSiteName: ::LPWSTR,
+ lpPrimaryDNSDomain: ::LPWSTR,
+}}
+pub type PNETSETUP_PROVISIONING_PARAMS = *mut NETSETUP_PROVISIONING_PARAMS;
+ENUM!{enum NET_COMPUTER_NAME_TYPE {
+ NetPrimaryComputerName,
+ NetAlternateComputerNames,
+ NetAllComputerNames,
+ NetComputerNameTypeMax,
+}}
+pub type PNET_COMPUTER_NAME_TYPE = *mut NET_COMPUTER_NAME_TYPE;
diff --git a/third_party/rust/winapi-0.2.8/src/lsalookup.rs b/third_party/rust/winapi-0.2.8/src/lsalookup.rs
new file mode 100644
index 0000000000..039d72a3a0
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/lsalookup.rs
@@ -0,0 +1,69 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! LSA Policy Lookup API
+STRUCT!{struct LSA_UNICODE_STRING {
+ Length: ::USHORT,
+ MaximumLength: ::USHORT,
+ Buffer: ::PWSTR,
+}}
+pub type PLSA_UNICODE_STRING = *mut LSA_UNICODE_STRING;
+STRUCT!{struct LSA_STRING {
+ Length: ::USHORT,
+ MaximumLength: ::USHORT,
+ Buffer: ::PCHAR,
+}}
+pub type PLSA_STRING = *mut LSA_STRING;
+STRUCT!{struct LSA_OBJECT_ATTRIBUTES {
+ Length: ::ULONG,
+ RootDirectory: ::HANDLE,
+ ObjectName: PLSA_UNICODE_STRING,
+ Attributes: ::ULONG,
+ SecurityDescriptor: ::PVOID,
+ SecurityQualityOfService: ::PVOID,
+}}
+pub type PLSA_OBJECT_ATTRIBUTES = *mut LSA_OBJECT_ATTRIBUTES;
+STRUCT!{struct LSA_TRUST_INFORMATION {
+ Name: LSA_UNICODE_STRING,
+ Sid: ::PSID,
+}}
+pub type PLSA_TRUST_INFORMATION = *mut LSA_TRUST_INFORMATION;
+STRUCT!{struct LSA_REFERENCED_DOMAIN_LIST {
+ Entries: ::ULONG,
+ Domains: PLSA_TRUST_INFORMATION,
+}}
+pub type PLSA_REFERENCED_DOMAIN_LIST = *mut LSA_REFERENCED_DOMAIN_LIST;
+STRUCT!{struct LSA_TRANSLATED_SID2 {
+ Use: ::SID_NAME_USE,
+ Sid: ::PSID,
+ DomainIndex: ::LONG,
+ Flags: ::ULONG,
+}}
+pub type PLSA_TRANSLATED_SID2 = *mut LSA_TRANSLATED_SID2;
+STRUCT!{struct LSA_TRANSLATED_NAME {
+ Use: ::SID_NAME_USE,
+ Name: LSA_UNICODE_STRING,
+ DomainIndex: ::LONG,
+}}
+pub type PLSA_TRANSLATED_NAME = *mut LSA_TRANSLATED_NAME;
+STRUCT!{struct POLICY_ACCOUNT_DOMAIN_INFO {
+ DomainName: LSA_UNICODE_STRING,
+ DomainSid: ::PSID,
+}}
+pub type PPOLICY_ACCOUNT_DOMAIN_INFO = *mut POLICY_ACCOUNT_DOMAIN_INFO;
+STRUCT!{struct POLICY_DNS_DOMAIN_INFO {
+ Name: LSA_UNICODE_STRING,
+ DnsDomainName: LSA_UNICODE_STRING,
+ DnsForestName: LSA_UNICODE_STRING,
+ DomainGuid: ::GUID,
+ Sid: ::PSID,
+}}
+pub type PPOLICY_DNS_DOMAIN_INFO = *mut POLICY_DNS_DOMAIN_INFO;
+pub const LOOKUP_VIEW_LOCAL_INFORMATION: ::ACCESS_MASK = 0x00000001;
+pub const LOOKUP_TRANSLATE_NAMES: ::ACCESS_MASK = 0x00000800;
+ENUM!{enum LSA_LOOKUP_DOMAIN_INFO_CLASS {
+ AccountDomainInformation = 5,
+ DnsDomainInformation = 12,
+}}
+pub type PLSA_LOOKUP_DOMAIN_INFO_CLASS = *mut LSA_LOOKUP_DOMAIN_INFO_CLASS;
+pub type LSA_LOOKUP_HANDLE = ::PVOID;
+pub type PLSA_LOOKUP_HANDLE = *mut ::PVOID;
diff --git a/third_party/rust/winapi-0.2.8/src/macros.rs b/third_party/rust/winapi-0.2.8/src/macros.rs
new file mode 100644
index 0000000000..0bbd6aabff
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/macros.rs
@@ -0,0 +1,270 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Macros to make things easier to define
+macro_rules! DECLARE_HANDLE {
+ ($name:ident, $inner:ident) => {
+ #[allow(missing_copy_implementations)] pub enum $inner { }
+ pub type $name = *mut $inner;
+ };
+}
+macro_rules! MAKE_HRESULT {
+ ($sev:expr, $fac:expr, $code:expr) => {
+ ($sev << 31) | ($fac << 16) | $code
+ }
+}
+macro_rules! MAKE_SCODE {
+ ($sev:expr, $fac:expr, $code:expr) => {
+ ($sev << 31) | ($fac << 16) | $code
+ }
+}
+macro_rules! HIDP_ERROR_CODES {
+ ($sev:expr, $code:expr) => {
+ ($sev << 28) | (::FACILITY_HID_ERROR_CODE << 16) | $code
+ }
+}
+macro_rules! MAKEFOURCC {
+ ($a:expr, $b:expr, $c:expr, $d:expr) => {
+ ($a as i32) | (($b as i32) << 8) | (($c as i32) << 16) | (($d as i32) << 24)
+ }
+}
+#[macro_export]
+macro_rules! DEFINE_GUID {
+ (
+ $name:ident, $l:expr, $w1:expr, $w2:expr, $b1:expr, $b2:expr, $b3:expr, $b4:expr, $b5:expr,
+ $b6:expr, $b7:expr, $b8:expr
+ ) => {
+ pub const $name: $crate::GUID = $crate::GUID {
+ Data1: $l,
+ Data2: $w1,
+ Data3: $w2,
+ Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8],
+ };
+ }
+}
+macro_rules! CTL_CODE {
+ ($DeviceType:expr, $Function:expr, $Method:expr, $Access:expr) => {
+ ($DeviceType << 16) | ($Access << 14) | ($Function << 2) | $Method
+ }
+}
+macro_rules! HID_CTL_CODE {
+ ($id:expr) => {
+ CTL_CODE!(::FILE_DEVICE_KEYBOARD, $id, ::METHOD_NEITHER, ::FILE_ANY_ACCESS)
+ }
+}
+macro_rules! HID_BUFFER_CTL_CODE {
+ ($id:expr) => {
+ CTL_CODE!(::FILE_DEVICE_KEYBOARD, $id, ::METHOD_BUFFERED, ::FILE_ANY_ACCESS)
+ }
+}
+macro_rules! HID_IN_CTL_CODE {
+ ($id:expr) => {
+ CTL_CODE!(::FILE_DEVICE_KEYBOARD, $id, ::METHOD_IN_DIRECT, ::FILE_ANY_ACCESS)
+ }
+}
+macro_rules! HID_OUT_CTL_CODE {
+ ($id:expr) => {
+ CTL_CODE!(::FILE_DEVICE_KEYBOARD, $id, ::METHOD_OUT_DIRECT, ::FILE_ANY_ACCESS)
+ }
+}
+macro_rules! AUDCLNT_ERR {
+ ($n:expr) => {
+ MAKE_HRESULT!(::SEVERITY_ERROR, ::FACILITY_AUDCLNT, $n)
+ };
+}
+macro_rules! AUDCLNT_SUCCESS {
+ ($n:expr) => {
+ MAKE_SCODE!(::SEVERITY_SUCCESS, ::FACILITY_AUDCLNT, $n)
+ };
+}
+macro_rules! BCRYPT_MAKE_INTERFACE_VERSION {
+ ($major:expr, $minor:expr) => {
+ ::BCRYPT_INTERFACE_VERSION { MajorVersion: $major, MinorVersion: $minor }
+ }
+}
+#[macro_export]
+macro_rules! RIDL {
+ (interface $interface:ident ($vtbl:ident)
+ {$(
+ fn $method:ident(&mut self $(,$p:ident : $t:ty)*) -> $rtr:ty
+ ),+}
+ ) => {
+ #[repr(C)] #[allow(missing_copy_implementations)]
+ pub struct $vtbl {
+ $(pub $method: unsafe extern "system" fn(
+ This: *mut $interface
+ $(,$p: $t)*
+ ) -> $rtr),+
+ }
+ #[repr(C)] #[derive(Debug)] #[allow(missing_copy_implementations)]
+ pub struct $interface {
+ pub lpVtbl: *const $vtbl
+ }
+ impl $interface {
+ #[inline]
+ $(pub unsafe fn $method(&mut self $(,$p: $t)*) -> $rtr {
+ ((*self.lpVtbl).$method)(self $(,$p)*)
+ })+
+ }
+ };
+ (interface $interface:ident ($vtbl:ident) : $pinterface:ident ($pvtbl:ident) {
+ }) => {
+ #[repr(C)] #[allow(missing_copy_implementations)]
+ pub struct $vtbl {
+ pub parent: $crate::$pvtbl
+ }
+ #[repr(C)] #[derive(Debug)] #[allow(missing_copy_implementations)]
+ pub struct $interface {
+ pub lpVtbl: *const $vtbl
+ }
+ impl ::std::ops::Deref for $interface {
+ type Target = $crate::$pinterface;
+ #[inline]
+ fn deref(&self) -> &$crate::$pinterface {
+ unsafe { ::std::mem::transmute(self) }
+ }
+ }
+ impl ::std::ops::DerefMut for $interface {
+ #[inline]
+ fn deref_mut(&mut self) -> &mut $crate::$pinterface {
+ unsafe { ::std::mem::transmute(self) }
+ }
+ }
+ };
+ (interface $interface:ident ($vtbl:ident) : $pinterface:ident ($pvtbl:ident)
+ {$(
+ fn $method:ident(&mut self $(,$p:ident : $t:ty)*) -> $rtr:ty
+ ),+}
+ ) => {
+ #[repr(C)] #[allow(missing_copy_implementations)]
+ pub struct $vtbl {
+ pub parent: $crate::$pvtbl
+ $(,pub $method: unsafe extern "system" fn(
+ This: *mut $interface
+ $(,$p: $t)*
+ ) -> $rtr)+
+ }
+ #[repr(C)] #[derive(Debug)] #[allow(missing_copy_implementations)]
+ pub struct $interface {
+ pub lpVtbl: *const $vtbl
+ }
+ impl $interface {
+ #[inline]
+ $(pub unsafe fn $method(&mut self $(,$p: $t)*) -> $rtr {
+ ((*self.lpVtbl).$method)(self $(,$p)*)
+ })+
+ }
+ impl ::std::ops::Deref for $interface {
+ type Target = $crate::$pinterface;
+ #[inline]
+ fn deref(&self) -> &$crate::$pinterface {
+ unsafe { ::std::mem::transmute(self) }
+ }
+ }
+ impl ::std::ops::DerefMut for $interface {
+ #[inline]
+ fn deref_mut(&mut self) -> &mut $crate::$pinterface {
+ unsafe { ::std::mem::transmute(self) }
+ }
+ }
+ };
+}
+macro_rules! UNION {
+ ($base:ident, $field:ident, $variant:ident, $variantmut:ident, $fieldtype:ty) => {
+ impl $base {
+ #[inline]
+ pub unsafe fn $variant(&self) -> &$fieldtype {
+ ::std::mem::transmute(&self.$field)
+ }
+ #[inline]
+ pub unsafe fn $variantmut(&mut self) -> &mut $fieldtype {
+ ::std::mem::transmute(&mut self.$field)
+ }
+ }
+ }
+}
+macro_rules! BITFIELD {
+ ($base:ident $field:ident: $fieldtype:ty [
+ $($thing:ident $set_thing:ident[$r:expr],)+
+ ]) => {
+ impl $base {$(
+ #[inline]
+ pub fn $thing(&self) -> $fieldtype {
+ let size = ::std::mem::size_of::<$fieldtype>() * 8;
+ self.$field << (size - $r.end) >> (size - $r.end + $r.start)
+ }
+ #[inline]
+ pub fn $set_thing(&mut self, val: $fieldtype) {
+ let mask = ((1 << ($r.end - $r.start)) - 1) << $r.start;
+ self.$field &= !mask;
+ self.$field |= (val << $r.start) & mask;
+ }
+ )+}
+ }
+}
+#[macro_export]
+macro_rules! ENUM {
+ {enum $name:ident { $($variant:ident = $value:expr,)+ }} => {
+ #[repr(C)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+ pub struct $name(pub u32);
+ $(pub const $variant: $name = $name($value);)+
+ };
+ {enum $name:ident { $variant:ident = $value:expr, $($rest:tt)* }} => {
+ #[repr(C)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+ pub struct $name(pub u32);
+ pub const $variant: $name = $name($value);
+ ENUM!{@gen $name, $variant, $($rest)*}
+ };
+ {enum $name:ident { $variant:ident, $($rest:tt)* }} => {
+ ENUM!{enum $name { $variant = 0, $($rest)* }}
+ };
+ {@gen $name:ident, $base:ident,} => {};
+ {@gen $name:ident, $base:ident, $variant:ident = $value:expr, $($rest:tt)*} => {
+ pub const $variant: $name = $name($value);
+ ENUM!{@gen $name, $variant, $($rest)*}
+ };
+ {@gen $name:ident, $base:ident, $variant:ident, $($rest:tt)*} => {
+ pub const $variant: $name = $name($base.0 + 1u32);
+ ENUM!{@gen $name, $variant, $($rest)*}
+ };
+}
+macro_rules! FLAGS {
+ {enum $name:ident { $($variant:ident = $value:expr,)+ }} => {
+ #[repr(C)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+ pub struct $name(pub u32);
+ $(pub const $variant: $name = $name($value);)+
+ impl ::std::ops::BitAnd<$name> for $name {
+ type Output = $name;
+ fn bitand(self, o: $name) -> $name { $name(self.0 & o.0) }
+ }
+ impl ::std::ops::BitOr<$name> for $name {
+ type Output = $name;
+ fn bitor(self, o: $name) -> $name { $name(self.0 | o.0) }
+ }
+ impl ::std::ops::BitXor<$name> for $name {
+ type Output = $name;
+ fn bitxor(self, o: $name) -> $name { $name(self.0 ^ o.0) }
+ }
+ impl ::std::ops::Not for $name {
+ type Output = $name;
+ fn not(self) -> $name { $name(!self.0) }
+ }
+ }
+}
+macro_rules! STRUCT {
+ {$(#[$attrs:meta])* nodebug struct $name:ident { $($field:ident: $ftype:ty,)+ }} => {
+ #[repr(C)] $(#[$attrs])*
+ pub struct $name {
+ $(pub $field: $ftype,)+
+ }
+ impl Copy for $name {}
+ impl Clone for $name { fn clone(&self) -> $name { *self } }
+ };
+ {$(#[$attrs:meta])* struct $name:ident { $($field:ident: $ftype:ty,)+ }} => {
+ #[repr(C)] #[derive(Debug)] $(#[$attrs])*
+ pub struct $name {
+ $(pub $field: $ftype,)+
+ }
+ impl Copy for $name {}
+ impl Clone for $name { fn clone(&self) -> $name { *self } }
+ };
+}
diff --git a/third_party/rust/winapi-0.2.8/src/memoryapi.rs b/third_party/rust/winapi-0.2.8/src/memoryapi.rs
new file mode 100644
index 0000000000..30cefea5a6
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/memoryapi.rs
@@ -0,0 +1,19 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-memory-l1-1-0
+pub const FILE_MAP_WRITE: ::DWORD = ::SECTION_MAP_WRITE;
+pub const FILE_MAP_READ: ::DWORD = ::SECTION_MAP_READ;
+pub const FILE_MAP_ALL_ACCESS: ::DWORD = ::SECTION_ALL_ACCESS;
+pub const FILE_MAP_EXECUTE: ::DWORD = ::SECTION_MAP_EXECUTE_EXPLICIT;
+pub const FILE_MAP_COPY: ::DWORD = 0x00000001;
+pub const FILE_MAP_RESERVE: ::DWORD = 0x80000000;
+ENUM!{enum MEMORY_RESOURCE_NOTIFICATION_TYPE {
+ LowMemoryResourceNotification,
+ HighMemoryResourceNotification,
+}}
+STRUCT!{struct WIN32_MEMORY_RANGE_ENTRY {
+ VirtualAddress: ::PVOID,
+ NumberOfBytes: ::SIZE_T,
+}}
+pub type PWIN32_MEMORY_RANGE_ENTRY = *mut WIN32_MEMORY_RANGE_ENTRY;
+pub type PBAD_MEMORY_CALLBACK_ROUTINE = Option<unsafe extern "system" fn()>;
diff --git a/third_party/rust/winapi-0.2.8/src/minschannel.rs b/third_party/rust/winapi-0.2.8/src/minschannel.rs
new file mode 100644
index 0000000000..828f1be6a7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/minschannel.rs
@@ -0,0 +1,56 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Public Definitions for MIN SCHANNEL Security Provider
+
+pub const SECPKG_ATTR_ISSUER_LIST: ::DWORD = 0x50;
+pub const SECPKG_ATTR_REMOTE_CRED: ::DWORD = 0x51;
+pub const SECPKG_ATTR_LOCAL_CRED: ::DWORD = 0x52;
+pub const SECPKG_ATTR_REMOTE_CERT_CONTEXT: ::DWORD = 0x53;
+pub const SECPKG_ATTR_LOCAL_CERT_CONTEXT: ::DWORD = 0x54;
+pub const SECPKG_ATTR_ROOT_STORE: ::DWORD = 0x55;
+pub const SECPKG_ATTR_SUPPORTED_ALGS: ::DWORD = 0x56;
+pub const SECPKG_ATTR_CIPHER_STRENGTHS: ::DWORD = 0x57;
+pub const SECPKG_ATTR_SUPPORTED_PROTOCOLS: ::DWORD = 0x58;
+pub const SECPKG_ATTR_ISSUER_LIST_EX: ::DWORD = 0x59;
+pub const SECPKG_ATTR_CONNECTION_INFO: ::DWORD = 0x5a;
+pub const SECPKG_ATTR_EAP_KEY_BLOCK: ::DWORD = 0x5b;
+pub const SECPKG_ATTR_MAPPED_CRED_ATTR: ::DWORD = 0x5c;
+pub const SECPKG_ATTR_SESSION_INFO: ::DWORD = 0x5d;
+pub const SECPKG_ATTR_APP_DATA: ::DWORD = 0x5e;
+pub const SECPKG_ATTR_REMOTE_CERTIFICATES: ::DWORD = 0x5F;
+pub const SECPKG_ATTR_CLIENT_CERT_POLICY: ::DWORD = 0x60;
+pub const SECPKG_ATTR_CC_POLICY_RESULT: ::DWORD = 0x61;
+pub const SECPKG_ATTR_USE_NCRYPT: ::DWORD = 0x62;
+pub const SECPKG_ATTR_LOCAL_CERT_INFO: ::DWORD = 0x63;
+pub const SECPKG_ATTR_CIPHER_INFO: ::DWORD = 0x64;
+pub const SECPKG_ATTR_EAP_PRF_INFO: ::DWORD = 0x65;
+pub const SECPKG_ATTR_SUPPORTED_SIGNATURES: ::DWORD = 0x66;
+pub const SECPKG_ATTR_REMOTE_CERT_CHAIN: ::DWORD = 0x67;
+pub const SECPKG_ATTR_UI_INFO: ::DWORD = 0x68;
+pub const SECPKG_ATTR_EARLY_START: ::DWORD = 0x69;
+
+STRUCT!{struct SecPkgCred_SupportedAlgs {
+ cSupportedAlgs: ::DWORD,
+ palgSupportedAlgs: ::ALG_ID,
+}}
+
+STRUCT!{struct SecPkgCred_CipherStrengths {
+ dwMinimumCipherStrength: ::DWORD,
+ dwMaximumCipherStrength: ::DWORD,
+}}
+
+STRUCT!{struct SecPkgCred_SupportedProtocols {
+ grbitProtocol: ::DWORD,
+}}
+
+STRUCT!{struct SecPkgCred_ClientCertPolicy {
+ dwFlags: ::DWORD,
+ guidPolicyId: ::GUID,
+ dwCertFlags: ::DWORD,
+ dwUrlRetrievalTimeout: ::DWORD,
+ fCheckRevocationFreshnessTime: ::BOOL,
+ dwRevocationFreshnessTime: ::DWORD,
+ fOmitUsageCheck: ::BOOL,
+ pwszSslCtlStoreName: ::LPWSTR,
+ pwszSslCtlIdentifier: ::LPWSTR,
+}} \ No newline at end of file
diff --git a/third_party/rust/winapi-0.2.8/src/minwinbase.rs b/third_party/rust/winapi-0.2.8/src/minwinbase.rs
new file mode 100644
index 0000000000..f6317fa254
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/minwinbase.rs
@@ -0,0 +1,253 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This module defines the 32-Bit Windows Base APIs
+STRUCT!{struct SECURITY_ATTRIBUTES {
+ nLength: ::DWORD,
+ lpSecurityDescriptor: ::LPVOID,
+ bInheritHandle: ::BOOL,
+}}
+pub type PSECURITY_ATTRIBUTES = *mut SECURITY_ATTRIBUTES;
+pub type LPSECURITY_ATTRIBUTES = *mut SECURITY_ATTRIBUTES;
+STRUCT!{struct OVERLAPPED {
+ Internal: ::ULONG_PTR,
+ InternalHigh: ::ULONG_PTR,
+ Offset: ::DWORD,
+ OffsetHigh: ::DWORD,
+ hEvent: ::HANDLE,
+}}
+UNION!(OVERLAPPED, Offset, Pointer, Pointer_mut, ::PVOID);
+pub type LPOVERLAPPED = *mut OVERLAPPED;
+STRUCT!{struct OVERLAPPED_ENTRY {
+ lpCompletionKey: ::ULONG_PTR,
+ lpOverlapped: LPOVERLAPPED,
+ Internal: ::ULONG_PTR,
+ dwNumberOfBytesTransferred: ::DWORD,
+}}
+pub type LPOVERLAPPED_ENTRY = *mut OVERLAPPED_ENTRY;
+STRUCT!{struct SYSTEMTIME {
+ wYear: ::WORD,
+ wMonth: ::WORD,
+ wDayOfWeek: ::WORD,
+ wDay: ::WORD,
+ wHour: ::WORD,
+ wMinute: ::WORD,
+ wSecond: ::WORD,
+ wMilliseconds: ::WORD,
+}}
+pub type PSYSTEMTIME = *mut SYSTEMTIME;
+pub type LPSYSTEMTIME = *mut SYSTEMTIME;
+STRUCT!{nodebug struct WIN32_FIND_DATAA {
+ dwFileAttributes: ::DWORD,
+ ftCreationTime: ::FILETIME,
+ ftLastAccessTime: ::FILETIME,
+ ftLastWriteTime: ::FILETIME,
+ nFileSizeHigh: ::DWORD,
+ nFileSizeLow: ::DWORD,
+ dwReserved0: ::DWORD,
+ dwReserved1: ::DWORD,
+ cFileName: [::CHAR; ::MAX_PATH],
+ cAlternateFileName: [::CHAR; 14],
+}}
+pub type PWIN32_FIND_DATAA = *mut WIN32_FIND_DATAA;
+pub type LPWIN32_FIND_DATAA = *mut WIN32_FIND_DATAA;
+STRUCT!{nodebug struct WIN32_FIND_DATAW {
+ dwFileAttributes: ::DWORD,
+ ftCreationTime: ::FILETIME,
+ ftLastAccessTime: ::FILETIME,
+ ftLastWriteTime: ::FILETIME,
+ nFileSizeHigh: ::DWORD,
+ nFileSizeLow: ::DWORD,
+ dwReserved0: ::DWORD,
+ dwReserved1: ::DWORD,
+ cFileName: [::WCHAR; ::MAX_PATH],
+ cAlternateFileName: [::WCHAR; 14],
+}}
+pub type PWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;
+pub type LPWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;
+ENUM!{enum FINDEX_INFO_LEVELS {
+ FindExInfoStandard,
+ FindExInfoBasic,
+ FindExInfoMaxInfoLevel,
+}}
+pub const FIND_FIRST_EX_CASE_SENSITIVE: ::DWORD = 0x00000001;
+pub const FIND_FIRST_EX_LARGE_FETCH: ::DWORD = 0x00000002;
+ENUM!{enum FINDEX_SEARCH_OPS {
+ FindExSearchNameMatch,
+ FindExSearchLimitToDirectories,
+ FindExSearchLimitToDevices,
+ FindExSearchMaxSearchOp,
+}}
+ENUM!{enum GET_FILEEX_INFO_LEVELS {
+ GetFileExInfoStandard,
+ GetFileExMaxInfoLevel,
+}}
+ENUM!{enum FILE_INFO_BY_HANDLE_CLASS {
+ FileBasicInfo,
+ FileStandardInfo,
+ FileNameInfo,
+ FileRenameInfo,
+ FileDispositionInfo,
+ FileAllocationInfo,
+ FileEndOfFileInfo,
+ FileStreamInfo,
+ FileCompressionInfo,
+ FileAttributeTagInfo,
+ FileIdBothDirectoryInfo,
+ FileIdBothDirectoryRestartInfo,
+ FileIoPriorityHintInfo,
+ FileRemoteProtocolInfo,
+ FileFullDirectoryInfo,
+ FileFullDirectoryRestartInfo,
+ FileStorageInfo,
+ FileAlignmentInfo,
+ FileIdInfo,
+ FileIdExtdDirectoryInfo,
+ FileIdExtdDirectoryRestartInfo,
+ MaximumFileInfoByHandleClass,
+}}
+pub type PFILE_INFO_BY_HANDLE_CLASS = *mut FILE_INFO_BY_HANDLE_CLASS;
+pub type CRITICAL_SECTION = ::RTL_CRITICAL_SECTION;
+pub type PCRITICAL_SECTION = ::PRTL_CRITICAL_SECTION;
+pub type LPCRITICAL_SECTION = ::PRTL_CRITICAL_SECTION;
+pub type CRITICAL_SECTION_DEBUG = ::RTL_CRITICAL_SECTION_DEBUG;
+pub type PCRITICAL_SECTION_DEBUG = ::PRTL_CRITICAL_SECTION_DEBUG;
+pub type LPCRITICAL_SECTION_DEBUG = ::PRTL_CRITICAL_SECTION_DEBUG;
+pub type LPOVERLAPPED_COMPLETION_ROUTINE = Option<unsafe extern "system" fn(
+ dwErrorCode: ::DWORD, dwNumberOfBytesTransfered: ::DWORD, lpOverlapped: LPOVERLAPPED,
+)>;
+pub const LOCKFILE_FAIL_IMMEDIATELY: ::DWORD = 0x00000001;
+pub const LOCKFILE_EXCLUSIVE_LOCK: ::DWORD = 0x00000002;
+STRUCT!{struct PROCESS_HEAP_ENTRY_Block {
+ hMem: ::HANDLE,
+ dwReserved: [::DWORD; 3],
+}}
+STRUCT!{struct PROCESS_HEAP_ENTRY_Region {
+ dwCommittedSize: ::DWORD,
+ dwUnCommittedSize: ::DWORD,
+ lpFirstBlock: ::LPVOID,
+ lpLastBlock: ::LPVOID,
+}}
+STRUCT!{struct PROCESS_HEAP_ENTRY {
+ lpData: ::PVOID,
+ cbData: ::DWORD,
+ cbOverhead: ::BYTE,
+ iRegionIndex: ::BYTE,
+ wFlags: ::WORD,
+ Region: PROCESS_HEAP_ENTRY_Region,
+}}
+UNION!(PROCESS_HEAP_ENTRY, Region, Block, Block_mut, PROCESS_HEAP_ENTRY_Block);
+pub type LPPROCESS_HEAP_ENTRY = *mut PROCESS_HEAP_ENTRY;
+pub type PPROCESS_HEAP_ENTRY = *mut PROCESS_HEAP_ENTRY;
+pub const PROCESS_HEAP_REGION: ::WORD = 0x0001;
+pub const PROCESS_HEAP_UNCOMMITTED_RANGE: ::WORD = 0x0002;
+pub const PROCESS_HEAP_ENTRY_BUSY: ::WORD = 0x0004;
+pub const PROCESS_HEAP_SEG_ALLOC: ::WORD = 0x0008;
+pub const PROCESS_HEAP_ENTRY_MOVEABLE: ::WORD = 0x0010;
+pub const PROCESS_HEAP_ENTRY_DDESHARE: ::WORD = 0x0020;
+pub type PTHREAD_START_ROUTINE = Option<unsafe extern "system" fn(
+ lpThreadParameter: ::LPVOID,
+) -> ::DWORD>;
+pub type LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
+pub type LPCONTEXT = ::PCONTEXT;
+STRUCT!{struct REASON_CONTEXT_Detailed {
+ LocalizedReasonModule: ::HMODULE,
+ LocalizedReasonId: ::ULONG,
+ ReasonStringCount: ::ULONG,
+ ReasonStrings: *mut ::LPWSTR,
+}}
+STRUCT!{struct REASON_CONTEXT {
+ Version: ::ULONG,
+ Flags: ::DWORD,
+ Reason: REASON_CONTEXT_Detailed,
+}}
+UNION!(REASON_CONTEXT, Reason, SimpleReasonString, SimpleReasonString_mut, ::LPWSTR);
+pub type PREASON_CONTEXT = *mut REASON_CONTEXT;
+pub const EXCEPTION_DEBUG_EVENT: ::DWORD = 1;
+pub const CREATE_THREAD_DEBUG_EVENT: ::DWORD = 2;
+pub const CREATE_PROCESS_DEBUG_EVENT: ::DWORD = 3;
+pub const EXIT_THREAD_DEBUG_EVENT: ::DWORD = 4;
+pub const EXIT_PROCESS_DEBUG_EVENT: ::DWORD = 5;
+pub const LOAD_DLL_DEBUG_EVENT: ::DWORD = 6;
+pub const UNLOAD_DLL_DEBUG_EVENT: ::DWORD = 7;
+pub const OUTPUT_DEBUG_STRING_EVENT: ::DWORD = 8;
+pub const RIP_EVENT: ::DWORD = 9;
+STRUCT!{struct EXCEPTION_DEBUG_INFO {
+ ExceptionRecord: ::EXCEPTION_RECORD,
+ dwFirstChance: ::DWORD,
+}}
+pub type LPEXCEPTION_DEBUG_INFO = *mut EXCEPTION_DEBUG_INFO;
+STRUCT!{nodebug struct CREATE_THREAD_DEBUG_INFO {
+ hThread: ::HANDLE,
+ lpThreadLocalBase: ::LPVOID,
+ lpStartAddress: LPTHREAD_START_ROUTINE,
+}}
+pub type LPCREATE_THREAD_DEBUG_INFO = *mut CREATE_THREAD_DEBUG_INFO;
+STRUCT!{nodebug struct CREATE_PROCESS_DEBUG_INFO {
+ hFile: ::HANDLE,
+ hProcess: ::HANDLE,
+ hThread: ::HANDLE,
+ lpBaseOfImage: ::LPVOID,
+ dwDebugInfoFileOffset: ::DWORD,
+ nDebugInfoSize: ::DWORD,
+ lpThreadLocalBase: ::LPVOID,
+ lpStartAddress: LPTHREAD_START_ROUTINE,
+ lpImageName: ::LPVOID,
+ fUnicode: ::WORD,
+}}
+pub type LPCREATE_PROCESS_DEBUG_INFO = *mut CREATE_PROCESS_DEBUG_INFO;
+STRUCT!{struct EXIT_THREAD_DEBUG_INFO {
+ dwExitCode: ::DWORD,
+}}
+pub type LPEXIT_THREAD_DEBUG_INFO = *mut EXIT_THREAD_DEBUG_INFO;
+STRUCT!{struct EXIT_PROCESS_DEBUG_INFO {
+ dwExitCode: ::DWORD,
+}}
+pub type LPEXIT_PROCESS_DEBUG_INFO = *mut EXIT_PROCESS_DEBUG_INFO;
+STRUCT!{struct LOAD_DLL_DEBUG_INFO {
+ hFile: ::HANDLE,
+ lpBaseOfDll: ::LPVOID,
+ dwDebugInfoFileOffset: ::DWORD,
+ nDebugInfoSize: ::DWORD,
+ lpImageName: ::LPVOID,
+ fUnicode: ::WORD,
+}}
+pub type LPLOAD_DLL_DEBUG_INFO = *mut LOAD_DLL_DEBUG_INFO;
+STRUCT!{struct UNLOAD_DLL_DEBUG_INFO {
+ lpBaseOfDll: ::LPVOID,
+}}
+pub type LPUNLOAD_DLL_DEBUG_INFO = *mut UNLOAD_DLL_DEBUG_INFO;
+STRUCT!{struct OUTPUT_DEBUG_STRING_INFO {
+ lpDebugStringData: ::LPSTR,
+ fUnicode: ::WORD,
+ nDebugStringLength: ::WORD,
+}}
+pub type LPOUTPUT_DEBUG_STRING_INFO = *mut OUTPUT_DEBUG_STRING_INFO;
+STRUCT!{struct RIP_INFO {
+ dwError: ::DWORD,
+ dwType: ::DWORD,
+}}
+pub type LPRIP_INFO = *mut RIP_INFO;
+#[cfg(target_arch="x86_64")]
+STRUCT!{nodebug struct DEBUG_EVENT {
+ dwDebugEventCode: ::DWORD,
+ dwProcessId: ::DWORD,
+ dwThreadId: ::DWORD,
+ u: [u8; 160],
+}}
+#[cfg(target_arch="x86")]
+STRUCT!{nodebug struct DEBUG_EVENT {
+ dwDebugEventCode: ::DWORD,
+ dwProcessId: ::DWORD,
+ dwThreadId: ::DWORD,
+ u: [u8; 84],
+}}
+UNION!(DEBUG_EVENT, u, Exception, Exception_mut, EXCEPTION_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, CreateThread, CreateThread_mut, CREATE_THREAD_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, CreateProcessInfo, CreateProcessInfo_mut, CREATE_PROCESS_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, ExitThread, ExitThread_mut, EXIT_THREAD_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, ExitProcess, ExitProcess_mut, EXIT_PROCESS_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, LoadDll, LoadDll_mut, LOAD_DLL_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, UnloadDll, UnloadDll_mut, UNLOAD_DLL_DEBUG_INFO);
+UNION!(DEBUG_EVENT, u, DebugString, DebugString_mut, OUTPUT_DEBUG_STRING_INFO);
+UNION!(DEBUG_EVENT, u, RipInfo, RipInfo_mut, RIP_INFO);
+pub type LPDEBUG_EVENT = *mut DEBUG_EVENT;
diff --git a/third_party/rust/winapi-0.2.8/src/minwindef.rs b/third_party/rust/winapi-0.2.8/src/minwindef.rs
new file mode 100644
index 0000000000..a5ed01771e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/minwindef.rs
@@ -0,0 +1,89 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Basic Windows Type Definitions for minwin partition
+pub type ULONG = ::c_ulong;
+pub type PULONG = *mut ULONG;
+pub type USHORT = ::c_ushort;
+pub type PUSHORT = *mut USHORT;
+pub type UCHAR = ::c_uchar;
+pub type PUCHAR = *mut UCHAR;
+pub type PSZ = *mut ::c_char;
+pub const MAX_PATH: usize = 260;
+pub const FALSE: BOOL = 0;
+pub const TRUE: BOOL = 1;
+pub type DWORD = ::c_ulong;
+pub type BOOL = ::c_int;
+pub type BYTE = ::c_uchar;
+pub type WORD = ::c_ushort;
+pub type FLOAT = ::c_float;
+pub type PFLOAT = *mut FLOAT;
+pub type PBOOL = *mut BOOL;
+pub type LPBOOL = *mut BOOL;
+pub type PBYTE = *mut BYTE;
+pub type LPBYTE = *mut BYTE;
+pub type PINT = *mut ::c_int;
+pub type LPINT = *mut ::c_int;
+pub type PWORD = *mut WORD;
+pub type LPWORD = *mut WORD;
+pub type LPLONG = *mut ::c_long;
+pub type PDWORD = *mut DWORD;
+pub type LPDWORD = *mut DWORD;
+pub type LPVOID = *mut ::c_void;
+pub type LPCVOID = *const ::c_void;
+pub type INT = ::c_int;
+pub type UINT = ::c_uint;
+pub type PUINT = *mut ::c_uint;
+pub type WPARAM = ::UINT_PTR;
+pub type LPARAM = ::LONG_PTR;
+pub type LRESULT = ::LONG_PTR;
+pub fn MAKEWORD(a: BYTE, b: BYTE) -> WORD {
+ (a as WORD) | ((b as WORD) << 8)
+}
+pub fn MAKELONG(a: WORD, b: WORD) -> ::LONG {
+ ((a as DWORD) | ((b as DWORD) << 16)) as ::LONG
+}
+pub fn LOWORD(l: DWORD) -> WORD {
+ (l & 0xffff) as WORD
+}
+pub fn HIWORD(l: DWORD) -> WORD {
+ ((l >> 16) & 0xffff) as WORD
+}
+pub fn LOBYTE(l: WORD) -> BYTE {
+ (l & 0xff) as BYTE
+}
+pub fn HIBYTE(l: WORD) -> BYTE {
+ ((l >> 8) & 0xff) as BYTE
+}
+pub type SPHANDLE = *mut ::HANDLE;
+pub type LPHANDLE = *mut ::HANDLE;
+pub type HGLOBAL = ::HANDLE;
+pub type HLOCAL = ::HANDLE;
+pub type GLOBALHANDLE = ::HANDLE;
+pub type LOCALHANDLE = ::HANDLE;
+/// Pointer to probably a function with unknown type signature.
+pub type FARPROC = *const ::c_void;
+/// Pointer to probably a function with unknown type signature.
+pub type NEARPROC = *const ::c_void;
+/// Pointer to probably a function with unknown type signature.
+pub type PROC = *const ::c_void;
+pub type ATOM = WORD;
+DECLARE_HANDLE!(HKEY, HKEY__);
+pub type PHKEY = *mut HKEY;
+DECLARE_HANDLE!(HMETAFILE, HMETAFILE__);
+DECLARE_HANDLE!(HINSTANCE, HINSTANCE__);
+pub type HMODULE = HINSTANCE;
+DECLARE_HANDLE!(HRGN, HRGN__);
+DECLARE_HANDLE!(HRSRC, HRSRC__);
+DECLARE_HANDLE!(HSPRITE, HSPRITE__);
+DECLARE_HANDLE!(HLSURF, HLSURF__);
+DECLARE_HANDLE!(HSTR, HSTR__);
+DECLARE_HANDLE!(HTASK, HTASK__);
+DECLARE_HANDLE!(HWINSTA, HWINSTA__);
+DECLARE_HANDLE!(HKL, HKL__);
+pub type HFILE = ::c_int;
+STRUCT!{struct FILETIME {
+ dwLowDateTime: DWORD,
+ dwHighDateTime: DWORD,
+}}
+pub type PFILETIME = *mut FILETIME;
+pub type LPFILETIME = *mut FILETIME;
diff --git a/third_party/rust/winapi-0.2.8/src/mmdeviceapi.rs b/third_party/rust/winapi-0.2.8/src/mmdeviceapi.rs
new file mode 100644
index 0000000000..9fc85a7d20
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/mmdeviceapi.rs
@@ -0,0 +1,63 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+pub const DEVICE_STATE_ACTIVE: ::DWORD = 0x00000001;
+pub const DEVICE_STATE_DISABLED: ::DWORD = 0x00000002;
+pub const DEVICE_STATE_NOTPRESENT: ::DWORD = 0x00000004;
+pub const DEVICE_STATE_UNPLUGGED: ::DWORD = 0x00000008;
+pub const DEVICE_STATEMASK_ALL: ::DWORD = 0x0000000F;
+ENUM!{enum EDataFlow {
+ eRender,
+ eCapture,
+ eAll,
+ EDataFlow_enum_count,
+}}
+ENUM!{enum ERole {
+ eConsole,
+ eMultimedia,
+ eCommunications,
+ ERole_enum_count,
+}}
+DEFINE_GUID!(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C,
+ 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E);
+DEFINE_GUID!(IID_IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35,
+ 0xA7, 0x46, 0xDE, 0x8D, 0xB6, 0x36, 0x17, 0xE6);
+RIDL!(
+interface IMMDevice(IMMDeviceVtbl): IUnknown(IUnknownVtbl) {
+ fn Activate(
+ &mut self, iid: ::REFIID, dwClsCtx: ::DWORD, pActivationParams: *mut ::PROPVARIANT,
+ ppInterface: *mut ::LPVOID
+ ) -> ::HRESULT,
+ fn OpenPropertyStore(
+ &mut self, stgmAccess: ::DWORD, ppProperties: *mut *mut ::IPropertyStore
+ ) -> ::HRESULT,
+ fn GetId(&mut self, ppstrId: *mut ::LPWSTR) -> ::HRESULT,
+ fn GetState(&mut self, pdwState: *mut ::DWORD) -> ::HRESULT
+}
+);
+RIDL!(
+interface IMMDeviceEnumerator(IMMDeviceEnumeratorVtbl): IUnknown(IUnknownVtbl) {
+ fn EnumAudioEndpoints(
+ &mut self, dataFlow: EDataFlow, dwStateMask: ::DWORD,
+ ppDevices: *mut *mut IMMDeviceCollection
+ ) -> ::HRESULT,
+ fn GetDefaultAudioEndpoint(
+ &mut self, dataFlow: EDataFlow, role: ERole, ppEndpoint: *mut *mut IMMDevice
+ ) -> ::HRESULT,
+ fn GetDevice(&mut self, pwstrId: ::LPCWSTR, ppDevices: *mut *mut IMMDevice) -> ::HRESULT,
+ fn RegisterEndpointNotificationCallback(
+ &mut self, pClient: *mut IMMNotificationClient
+ ) -> ::HRESULT,
+ fn UnregisterEndpointNotificationCallback(
+ &mut self, pClient: *mut IMMNotificationClient
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IMMDeviceCollection(IMMDeviceCollectionVtbl): IUnknown(IUnknownVtbl) {
+ fn GetCount(&mut self, pcDevices: *const ::UINT) -> ::HRESULT,
+ fn Item(&mut self, nDevice: ::UINT, ppDevice: *mut *mut IMMDevice) -> ::HRESULT
+}
+);
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IMMNotificationClient;
diff --git a/third_party/rust/winapi-0.2.8/src/mmreg.rs b/third_party/rust/winapi-0.2.8/src/mmreg.rs
new file mode 100644
index 0000000000..826d96d50b
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/mmreg.rs
@@ -0,0 +1,304 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub const WAVE_FORMAT_UNKNOWN: ::WORD = 0x0000;
+pub const WAVE_FORMAT_PCM: ::WORD = 0x0001;
+pub const WAVE_FORMAT_ADPCM: ::WORD = 0x0002;
+pub const WAVE_FORMAT_IEEE_FLOAT: ::WORD = 0x0003;
+pub const WAVE_FORMAT_VSELP: ::WORD = 0x0004;
+pub const WAVE_FORMAT_IBM_CVSD: ::WORD = 0x0005;
+pub const WAVE_FORMAT_ALAW: ::WORD = 0x0006;
+pub const WAVE_FORMAT_MULAW: ::WORD = 0x0007;
+pub const WAVE_FORMAT_DTS: ::WORD = 0x0008;
+pub const WAVE_FORMAT_DRM: ::WORD = 0x0009;
+pub const WAVE_FORMAT_WMAVOICE9: ::WORD = 0x000A;
+pub const WAVE_FORMAT_WMAVOICE10: ::WORD = 0x000B;
+pub const WAVE_FORMAT_OKI_ADPCM: ::WORD = 0x0010;
+pub const WAVE_FORMAT_DVI_ADPCM: ::WORD = 0x0011;
+pub const WAVE_FORMAT_IMA_ADPCM: ::WORD = WAVE_FORMAT_DVI_ADPCM;
+pub const WAVE_FORMAT_MEDIASPACE_ADPCM: ::WORD = 0x0012;
+pub const WAVE_FORMAT_SIERRA_ADPCM: ::WORD = 0x0013;
+pub const WAVE_FORMAT_G723_ADPCM: ::WORD = 0x0014;
+pub const WAVE_FORMAT_DIGISTD: ::WORD = 0x0015;
+pub const WAVE_FORMAT_DIGIFIX: ::WORD = 0x0016;
+pub const WAVE_FORMAT_DIALOGIC_OKI_ADPCM: ::WORD = 0x0017;
+pub const WAVE_FORMAT_MEDIAVISION_ADPCM: ::WORD = 0x0018;
+pub const WAVE_FORMAT_CU_CODEC: ::WORD = 0x0019;
+pub const WAVE_FORMAT_HP_DYN_VOICE: ::WORD = 0x001A;
+pub const WAVE_FORMAT_YAMAHA_ADPCM: ::WORD = 0x0020;
+pub const WAVE_FORMAT_SONARC: ::WORD = 0x0021;
+pub const WAVE_FORMAT_DSPGROUP_TRUESPEECH: ::WORD = 0x0022;
+pub const WAVE_FORMAT_ECHOSC1: ::WORD = 0x0023;
+pub const WAVE_FORMAT_AUDIOFILE_AF36: ::WORD = 0x0024;
+pub const WAVE_FORMAT_APTX: ::WORD = 0x0025;
+pub const WAVE_FORMAT_AUDIOFILE_AF10: ::WORD = 0x0026;
+pub const WAVE_FORMAT_PROSODY_1612: ::WORD = 0x0027;
+pub const WAVE_FORMAT_LRC: ::WORD = 0x0028;
+pub const WAVE_FORMAT_DOLBY_AC2: ::WORD = 0x0030;
+pub const WAVE_FORMAT_GSM610: ::WORD = 0x0031;
+pub const WAVE_FORMAT_MSNAUDIO: ::WORD = 0x0032;
+pub const WAVE_FORMAT_ANTEX_ADPCME: ::WORD = 0x0033;
+pub const WAVE_FORMAT_CONTROL_RES_VQLPC: ::WORD = 0x0034;
+pub const WAVE_FORMAT_DIGIREAL: ::WORD = 0x0035;
+pub const WAVE_FORMAT_DIGIADPCM: ::WORD = 0x0036;
+pub const WAVE_FORMAT_CONTROL_RES_CR10: ::WORD = 0x0037;
+pub const WAVE_FORMAT_NMS_VBXADPCM: ::WORD = 0x0038;
+pub const WAVE_FORMAT_CS_IMAADPCM: ::WORD = 0x0039;
+pub const WAVE_FORMAT_ECHOSC3: ::WORD = 0x003A;
+pub const WAVE_FORMAT_ROCKWELL_ADPCM: ::WORD = 0x003B;
+pub const WAVE_FORMAT_ROCKWELL_DIGITALK: ::WORD = 0x003C;
+pub const WAVE_FORMAT_XEBEC: ::WORD = 0x003D;
+pub const WAVE_FORMAT_G721_ADPCM: ::WORD = 0x0040;
+pub const WAVE_FORMAT_G728_CELP: ::WORD = 0x0041;
+pub const WAVE_FORMAT_MSG723: ::WORD = 0x0042;
+pub const WAVE_FORMAT_INTEL_G723_1: ::WORD = 0x0043;
+pub const WAVE_FORMAT_INTEL_G729: ::WORD = 0x0044;
+pub const WAVE_FORMAT_SHARP_G726: ::WORD = 0x0045;
+pub const WAVE_FORMAT_MPEG: ::WORD = 0x0050;
+pub const WAVE_FORMAT_RT24: ::WORD = 0x0052;
+pub const WAVE_FORMAT_PAC: ::WORD = 0x0053;
+pub const WAVE_FORMAT_MPEGLAYER3: ::WORD = 0x0055;
+pub const WAVE_FORMAT_LUCENT_G723: ::WORD = 0x0059;
+pub const WAVE_FORMAT_CIRRUS: ::WORD = 0x0060;
+pub const WAVE_FORMAT_ESPCM: ::WORD = 0x0061;
+pub const WAVE_FORMAT_VOXWARE: ::WORD = 0x0062;
+pub const WAVE_FORMAT_CANOPUS_ATRAC: ::WORD = 0x0063;
+pub const WAVE_FORMAT_G726_ADPCM: ::WORD = 0x0064;
+pub const WAVE_FORMAT_G722_ADPCM: ::WORD = 0x0065;
+pub const WAVE_FORMAT_DSAT: ::WORD = 0x0066;
+pub const WAVE_FORMAT_DSAT_DISPLAY: ::WORD = 0x0067;
+pub const WAVE_FORMAT_VOXWARE_BYTE_ALIGNED: ::WORD = 0x0069;
+pub const WAVE_FORMAT_VOXWARE_AC8: ::WORD = 0x0070;
+pub const WAVE_FORMAT_VOXWARE_AC10: ::WORD = 0x0071;
+pub const WAVE_FORMAT_VOXWARE_AC16: ::WORD = 0x0072;
+pub const WAVE_FORMAT_VOXWARE_AC20: ::WORD = 0x0073;
+pub const WAVE_FORMAT_VOXWARE_RT24: ::WORD = 0x0074;
+pub const WAVE_FORMAT_VOXWARE_RT29: ::WORD = 0x0075;
+pub const WAVE_FORMAT_VOXWARE_RT29HW: ::WORD = 0x0076;
+pub const WAVE_FORMAT_VOXWARE_VR12: ::WORD = 0x0077;
+pub const WAVE_FORMAT_VOXWARE_VR18: ::WORD = 0x0078;
+pub const WAVE_FORMAT_VOXWARE_TQ40: ::WORD = 0x0079;
+pub const WAVE_FORMAT_VOXWARE_SC3: ::WORD = 0x007A;
+pub const WAVE_FORMAT_VOXWARE_SC3_1: ::WORD = 0x007B;
+pub const WAVE_FORMAT_SOFTSOUND: ::WORD = 0x0080;
+pub const WAVE_FORMAT_VOXWARE_TQ60: ::WORD = 0x0081;
+pub const WAVE_FORMAT_MSRT24: ::WORD = 0x0082;
+pub const WAVE_FORMAT_G729A: ::WORD = 0x0083;
+pub const WAVE_FORMAT_MVI_MVI2: ::WORD = 0x0084;
+pub const WAVE_FORMAT_DF_G726: ::WORD = 0x0085;
+pub const WAVE_FORMAT_DF_GSM610: ::WORD = 0x0086;
+pub const WAVE_FORMAT_ISIAUDIO: ::WORD = 0x0088;
+pub const WAVE_FORMAT_ONLIVE: ::WORD = 0x0089;
+pub const WAVE_FORMAT_MULTITUDE_FT_SX20: ::WORD = 0x008A;
+pub const WAVE_FORMAT_INFOCOM_ITS_G721_ADPCM: ::WORD = 0x008B;
+pub const WAVE_FORMAT_CONVEDIA_G729: ::WORD = 0x008C;
+pub const WAVE_FORMAT_CONGRUENCY: ::WORD = 0x008D;
+pub const WAVE_FORMAT_SBC24: ::WORD = 0x0091;
+pub const WAVE_FORMAT_DOLBY_AC3_SPDIF: ::WORD = 0x0092;
+pub const WAVE_FORMAT_MEDIASONIC_G723: ::WORD = 0x0093;
+pub const WAVE_FORMAT_PROSODY_8KBPS: ::WORD = 0x0094;
+pub const WAVE_FORMAT_ZYXEL_ADPCM: ::WORD = 0x0097;
+pub const WAVE_FORMAT_PHILIPS_LPCBB: ::WORD = 0x0098;
+pub const WAVE_FORMAT_PACKED: ::WORD = 0x0099;
+pub const WAVE_FORMAT_MALDEN_PHONYTALK: ::WORD = 0x00A0;
+pub const WAVE_FORMAT_RACAL_RECORDER_GSM: ::WORD = 0x00A1;
+pub const WAVE_FORMAT_RACAL_RECORDER_G720_A: ::WORD = 0x00A2;
+pub const WAVE_FORMAT_RACAL_RECORDER_G723_1: ::WORD = 0x00A3;
+pub const WAVE_FORMAT_RACAL_RECORDER_TETRA_ACELP: ::WORD = 0x00A4;
+pub const WAVE_FORMAT_NEC_AAC: ::WORD = 0x00B0;
+pub const WAVE_FORMAT_RAW_AAC1: ::WORD = 0x00FF;
+pub const WAVE_FORMAT_RHETOREX_ADPCM: ::WORD = 0x0100;
+pub const WAVE_FORMAT_IRAT: ::WORD = 0x0101;
+pub const WAVE_FORMAT_VIVO_G723: ::WORD = 0x0111;
+pub const WAVE_FORMAT_VIVO_SIREN: ::WORD = 0x0112;
+pub const WAVE_FORMAT_PHILIPS_CELP: ::WORD = 0x0120;
+pub const WAVE_FORMAT_PHILIPS_GRUNDIG: ::WORD = 0x0121;
+pub const WAVE_FORMAT_DIGITAL_G723: ::WORD = 0x0123;
+pub const WAVE_FORMAT_SANYO_LD_ADPCM: ::WORD = 0x0125;
+pub const WAVE_FORMAT_SIPROLAB_ACEPLNET: ::WORD = 0x0130;
+pub const WAVE_FORMAT_SIPROLAB_ACELP4800: ::WORD = 0x0131;
+pub const WAVE_FORMAT_SIPROLAB_ACELP8V3: ::WORD = 0x0132;
+pub const WAVE_FORMAT_SIPROLAB_G729: ::WORD = 0x0133;
+pub const WAVE_FORMAT_SIPROLAB_G729A: ::WORD = 0x0134;
+pub const WAVE_FORMAT_SIPROLAB_KELVIN: ::WORD = 0x0135;
+pub const WAVE_FORMAT_VOICEAGE_AMR: ::WORD = 0x0136;
+pub const WAVE_FORMAT_G726ADPCM: ::WORD = 0x0140;
+pub const WAVE_FORMAT_DICTAPHONE_CELP68: ::WORD = 0x0141;
+pub const WAVE_FORMAT_DICTAPHONE_CELP54: ::WORD = 0x0142;
+pub const WAVE_FORMAT_QUALCOMM_PUREVOICE: ::WORD = 0x0150;
+pub const WAVE_FORMAT_QUALCOMM_HALFRATE: ::WORD = 0x0151;
+pub const WAVE_FORMAT_TUBGSM: ::WORD = 0x0155;
+pub const WAVE_FORMAT_MSAUDIO1: ::WORD = 0x0160;
+pub const WAVE_FORMAT_WMAUDIO2: ::WORD = 0x0161;
+pub const WAVE_FORMAT_WMAUDIO3: ::WORD = 0x0162;
+pub const WAVE_FORMAT_WMAUDIO_LOSSLESS: ::WORD = 0x0163;
+pub const WAVE_FORMAT_WMASPDIF: ::WORD = 0x0164;
+pub const WAVE_FORMAT_UNISYS_NAP_ADPCM: ::WORD = 0x0170;
+pub const WAVE_FORMAT_UNISYS_NAP_ULAW: ::WORD = 0x0171;
+pub const WAVE_FORMAT_UNISYS_NAP_ALAW: ::WORD = 0x0172;
+pub const WAVE_FORMAT_UNISYS_NAP_16K: ::WORD = 0x0173;
+pub const WAVE_FORMAT_SYCOM_ACM_SYC008: ::WORD = 0x0174;
+pub const WAVE_FORMAT_SYCOM_ACM_SYC701_G726L: ::WORD = 0x0175;
+pub const WAVE_FORMAT_SYCOM_ACM_SYC701_CELP54: ::WORD = 0x0176;
+pub const WAVE_FORMAT_SYCOM_ACM_SYC701_CELP68: ::WORD = 0x0177;
+pub const WAVE_FORMAT_KNOWLEDGE_ADVENTURE_ADPCM: ::WORD = 0x0178;
+pub const WAVE_FORMAT_FRAUNHOFER_IIS_MPEG2_AAC: ::WORD = 0x0180;
+pub const WAVE_FORMAT_DTS_DS: ::WORD = 0x0190;
+pub const WAVE_FORMAT_CREATIVE_ADPCM: ::WORD = 0x0200;
+pub const WAVE_FORMAT_CREATIVE_FASTSPEECH8: ::WORD = 0x0202;
+pub const WAVE_FORMAT_CREATIVE_FASTSPEECH10: ::WORD = 0x0203;
+pub const WAVE_FORMAT_UHER_ADPCM: ::WORD = 0x0210;
+pub const WAVE_FORMAT_ULEAD_DV_AUDIO: ::WORD = 0x0215;
+pub const WAVE_FORMAT_ULEAD_DV_AUDIO_1: ::WORD = 0x0216;
+pub const WAVE_FORMAT_QUARTERDECK: ::WORD = 0x0220;
+pub const WAVE_FORMAT_ILINK_VC: ::WORD = 0x0230;
+pub const WAVE_FORMAT_RAW_SPORT: ::WORD = 0x0240;
+pub const WAVE_FORMAT_ESST_AC3: ::WORD = 0x0241;
+pub const WAVE_FORMAT_GENERIC_PASSTHRU: ::WORD = 0x0249;
+pub const WAVE_FORMAT_IPI_HSX: ::WORD = 0x0250;
+pub const WAVE_FORMAT_IPI_RPELP: ::WORD = 0x0251;
+pub const WAVE_FORMAT_CS2: ::WORD = 0x0260;
+pub const WAVE_FORMAT_SONY_SCX: ::WORD = 0x0270;
+pub const WAVE_FORMAT_SONY_SCY: ::WORD = 0x0271;
+pub const WAVE_FORMAT_SONY_ATRAC3: ::WORD = 0x0272;
+pub const WAVE_FORMAT_SONY_SPC: ::WORD = 0x0273;
+pub const WAVE_FORMAT_TELUM_AUDIO: ::WORD = 0x0280;
+pub const WAVE_FORMAT_TELUM_IA_AUDIO: ::WORD = 0x0281;
+pub const WAVE_FORMAT_NORCOM_VOICE_SYSTEMS_ADPCM: ::WORD = 0x0285;
+pub const WAVE_FORMAT_FM_TOWNS_SND: ::WORD = 0x0300;
+pub const WAVE_FORMAT_MICRONAS: ::WORD = 0x0350;
+pub const WAVE_FORMAT_MICRONAS_CELP833: ::WORD = 0x0351;
+pub const WAVE_FORMAT_BTV_DIGITAL: ::WORD = 0x0400;
+pub const WAVE_FORMAT_INTEL_MUSIC_CODER: ::WORD = 0x0401;
+pub const WAVE_FORMAT_INDEO_AUDIO: ::WORD = 0x0402;
+pub const WAVE_FORMAT_QDESIGN_MUSIC: ::WORD = 0x0450;
+pub const WAVE_FORMAT_ON2_VP7_AUDIO: ::WORD = 0x0500;
+pub const WAVE_FORMAT_ON2_VP6_AUDIO: ::WORD = 0x0501;
+pub const WAVE_FORMAT_VME_VMPCM: ::WORD = 0x0680;
+pub const WAVE_FORMAT_TPC: ::WORD = 0x0681;
+pub const WAVE_FORMAT_LIGHTWAVE_LOSSLESS: ::WORD = 0x08AE;
+pub const WAVE_FORMAT_OLIGSM: ::WORD = 0x1000;
+pub const WAVE_FORMAT_OLIADPCM: ::WORD = 0x1001;
+pub const WAVE_FORMAT_OLICELP: ::WORD = 0x1002;
+pub const WAVE_FORMAT_OLISBC: ::WORD = 0x1003;
+pub const WAVE_FORMAT_OLIOPR: ::WORD = 0x1004;
+pub const WAVE_FORMAT_LH_CODEC: ::WORD = 0x1100;
+pub const WAVE_FORMAT_LH_CODEC_CELP: ::WORD = 0x1101;
+pub const WAVE_FORMAT_LH_CODEC_SBC8: ::WORD = 0x1102;
+pub const WAVE_FORMAT_LH_CODEC_SBC12: ::WORD = 0x1103;
+pub const WAVE_FORMAT_LH_CODEC_SBC16: ::WORD = 0x1104;
+pub const WAVE_FORMAT_NORRIS: ::WORD = 0x1400;
+pub const WAVE_FORMAT_ISIAUDIO_2: ::WORD = 0x1401;
+pub const WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS: ::WORD = 0x1500;
+pub const WAVE_FORMAT_MPEG_ADTS_AAC: ::WORD = 0x1600;
+pub const WAVE_FORMAT_MPEG_RAW_AAC: ::WORD = 0x1601;
+pub const WAVE_FORMAT_MPEG_LOAS: ::WORD = 0x1602;
+pub const WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC: ::WORD = 0x1608;
+pub const WAVE_FORMAT_NOKIA_MPEG_RAW_AAC: ::WORD = 0x1609;
+pub const WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC: ::WORD = 0x160A;
+pub const WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC: ::WORD = 0x160B;
+pub const WAVE_FORMAT_MPEG_HEAAC: ::WORD = 0x1610;
+pub const WAVE_FORMAT_VOXWARE_RT24_SPEECH: ::WORD = 0x181C;
+pub const WAVE_FORMAT_SONICFOUNDRY_LOSSLESS: ::WORD = 0x1971;
+pub const WAVE_FORMAT_INNINGS_TELECOM_ADPCM: ::WORD = 0x1979;
+pub const WAVE_FORMAT_LUCENT_SX8300P: ::WORD = 0x1C07;
+pub const WAVE_FORMAT_LUCENT_SX5363S: ::WORD = 0x1C0C;
+pub const WAVE_FORMAT_CUSEEME: ::WORD = 0x1F03;
+pub const WAVE_FORMAT_NTCSOFT_ALF2CM_ACM: ::WORD = 0x1FC4;
+pub const WAVE_FORMAT_DVM: ::WORD = 0x2000;
+pub const WAVE_FORMAT_DTS2: ::WORD = 0x2001;
+pub const WAVE_FORMAT_MAKEAVIS: ::WORD = 0x3313;
+pub const WAVE_FORMAT_DIVIO_MPEG4_AAC: ::WORD = 0x4143;
+pub const WAVE_FORMAT_NOKIA_ADAPTIVE_MULTIRATE: ::WORD = 0x4201;
+pub const WAVE_FORMAT_DIVIO_G726: ::WORD = 0x4243;
+pub const WAVE_FORMAT_LEAD_SPEECH: ::WORD = 0x434C;
+pub const WAVE_FORMAT_LEAD_VORBIS: ::WORD = 0x564C;
+pub const WAVE_FORMAT_WAVPACK_AUDIO: ::WORD = 0x5756;
+pub const WAVE_FORMAT_OGG_VORBIS_MODE_1: ::WORD = 0x674F;
+pub const WAVE_FORMAT_OGG_VORBIS_MODE_2: ::WORD = 0x6750;
+pub const WAVE_FORMAT_OGG_VORBIS_MODE_3: ::WORD = 0x6751;
+pub const WAVE_FORMAT_OGG_VORBIS_MODE_1_PLUS: ::WORD = 0x676F;
+pub const WAVE_FORMAT_OGG_VORBIS_MODE_2_PLUS: ::WORD = 0x6770;
+pub const WAVE_FORMAT_OGG_VORBIS_MODE_3_PLUS: ::WORD = 0x6771;
+pub const WAVE_FORMAT_3COM_NBX: ::WORD = 0x7000;
+pub const WAVE_FORMAT_FAAD_AAC: ::WORD = 0x706D;
+pub const WAVE_FORMAT_AMR_NB: ::WORD = 0x7361;
+pub const WAVE_FORMAT_AMR_WB: ::WORD = 0x7362;
+pub const WAVE_FORMAT_AMR_WP: ::WORD = 0x7363;
+pub const WAVE_FORMAT_GSM_AMR_CBR: ::WORD = 0x7A21;
+pub const WAVE_FORMAT_GSM_AMR_VBR_SID: ::WORD = 0x7A22;
+pub const WAVE_FORMAT_COMVERSE_INFOSYS_G723_1: ::WORD = 0xA100;
+pub const WAVE_FORMAT_COMVERSE_INFOSYS_AVQSBC: ::WORD = 0xA101;
+pub const WAVE_FORMAT_COMVERSE_INFOSYS_SBC: ::WORD = 0xA102;
+pub const WAVE_FORMAT_SYMBOL_G729_A: ::WORD = 0xA103;
+pub const WAVE_FORMAT_VOICEAGE_AMR_WB: ::WORD = 0xA104;
+pub const WAVE_FORMAT_INGENIENT_G726: ::WORD = 0xA105;
+pub const WAVE_FORMAT_MPEG4_AAC: ::WORD = 0xA106;
+pub const WAVE_FORMAT_ENCORE_G726: ::WORD = 0xA107;
+pub const WAVE_FORMAT_ZOLL_ASAO: ::WORD = 0xA108;
+pub const WAVE_FORMAT_SPEEX_VOICE: ::WORD = 0xA109;
+pub const WAVE_FORMAT_VIANIX_MASC: ::WORD = 0xA10A;
+pub const WAVE_FORMAT_WM9_SPECTRUM_ANALYZER: ::WORD = 0xA10B;
+pub const WAVE_FORMAT_WMF_SPECTRUM_ANAYZER: ::WORD = 0xA10C;
+pub const WAVE_FORMAT_GSM_610: ::WORD = 0xA10D;
+pub const WAVE_FORMAT_GSM_620: ::WORD = 0xA10E;
+pub const WAVE_FORMAT_GSM_660: ::WORD = 0xA10F;
+pub const WAVE_FORMAT_GSM_690: ::WORD = 0xA110;
+pub const WAVE_FORMAT_GSM_ADAPTIVE_MULTIRATE_WB: ::WORD = 0xA111;
+pub const WAVE_FORMAT_POLYCOM_G722: ::WORD = 0xA112;
+pub const WAVE_FORMAT_POLYCOM_G728: ::WORD = 0xA113;
+pub const WAVE_FORMAT_POLYCOM_G729_A: ::WORD = 0xA114;
+pub const WAVE_FORMAT_POLYCOM_SIREN: ::WORD = 0xA115;
+pub const WAVE_FORMAT_GLOBAL_IP_ILBC: ::WORD = 0xA116;
+pub const WAVE_FORMAT_RADIOTIME_TIME_SHIFT_RADIO: ::WORD = 0xA117;
+pub const WAVE_FORMAT_NICE_ACA: ::WORD = 0xA118;
+pub const WAVE_FORMAT_NICE_ADPCM: ::WORD = 0xA119;
+pub const WAVE_FORMAT_VOCORD_G721: ::WORD = 0xA11A;
+pub const WAVE_FORMAT_VOCORD_G726: ::WORD = 0xA11B;
+pub const WAVE_FORMAT_VOCORD_G722_1: ::WORD = 0xA11C;
+pub const WAVE_FORMAT_VOCORD_G728: ::WORD = 0xA11D;
+pub const WAVE_FORMAT_VOCORD_G729: ::WORD = 0xA11E;
+pub const WAVE_FORMAT_VOCORD_G729_A: ::WORD = 0xA11F;
+pub const WAVE_FORMAT_VOCORD_G723_1: ::WORD = 0xA120;
+pub const WAVE_FORMAT_VOCORD_LBC: ::WORD = 0xA121;
+pub const WAVE_FORMAT_NICE_G728: ::WORD = 0xA122;
+pub const WAVE_FORMAT_FRACE_TELECOM_G729: ::WORD = 0xA123;
+pub const WAVE_FORMAT_CODIAN: ::WORD = 0xA124;
+pub const WAVE_FORMAT_FLAC: ::WORD = 0xF1AC;
+pub const WAVE_FORMAT_EXTENSIBLE: ::WORD = 0xFFFE;
+pub const WAVE_FORMAT_DEVELOPMENT: ::WORD = 0xFFFF;
+//2557
+pub const SPEAKER_FRONT_LEFT: ::DWORD = 0x1;
+pub const SPEAKER_FRONT_RIGHT: ::DWORD = 0x2;
+pub const SPEAKER_FRONT_CENTER: ::DWORD = 0x4;
+pub const SPEAKER_LOW_FREQUENCY: ::DWORD = 0x8;
+pub const SPEAKER_BACK_LEFT: ::DWORD = 0x10;
+pub const SPEAKER_BACK_RIGHT: ::DWORD = 0x20;
+pub const SPEAKER_FRONT_LEFT_OF_CENTER: ::DWORD = 0x40;
+pub const SPEAKER_FRONT_RIGHT_OF_CENTER: ::DWORD = 0x80;
+pub const SPEAKER_BACK_CENTER: ::DWORD = 0x100;
+pub const SPEAKER_SIDE_LEFT: ::DWORD = 0x200;
+pub const SPEAKER_SIDE_RIGHT: ::DWORD = 0x400;
+pub const SPEAKER_TOP_CENTER: ::DWORD = 0x800;
+pub const SPEAKER_TOP_FRONT_LEFT: ::DWORD = 0x1000;
+pub const SPEAKER_TOP_FRONT_CENTER: ::DWORD = 0x2000;
+pub const SPEAKER_TOP_FRONT_RIGHT: ::DWORD = 0x4000;
+pub const SPEAKER_TOP_BACK_LEFT: ::DWORD = 0x8000;
+pub const SPEAKER_TOP_BACK_CENTER: ::DWORD = 0x10000;
+pub const SPEAKER_TOP_BACK_RIGHT: ::DWORD = 0x20000;
+pub const SPEAKER_RESERVED: ::DWORD = 0x7FFC0000;
+pub const SPEAKER_ALL: ::DWORD = 0x80000000;
+STRUCT!{#[repr(packed)] struct WAVEFORMATEX {
+ wFormatTag: ::WORD,
+ nChannels: ::WORD,
+ nSamplesPerSec: ::DWORD,
+ nAvgBytesPerSec: ::DWORD,
+ nBlockAlign: ::WORD,
+ wBitsPerSample: ::WORD,
+ cbSize: ::WORD,
+}}
+STRUCT!{#[repr(packed)] struct WAVEFORMATEXTENSIBLE {
+ Format: ::WAVEFORMATEX,
+ Samples: ::WORD,
+ dwChannelMask: ::DWORD,
+ SubFormat: ::GUID,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/mmsystem.rs b/third_party/rust/winapi-0.2.8/src/mmsystem.rs
new file mode 100644
index 0000000000..c579edad3f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/mmsystem.rs
@@ -0,0 +1,259 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! MM procedure declarations, constant definitions and macros
+//109 (Win 7 SDK)
+pub type MMVERSION = ::UINT;
+pub type MMRESULT = ::UINT;
+STRUCT!{struct MMTIME {
+ wType: ::UINT,
+ u: MMTIME_u,
+}}
+pub type PMMTIME = *mut MMTIME;
+pub type NPMMTIME = *mut MMTIME;
+pub type LPMMTIME = *mut MMTIME;
+STRUCT!{struct MMTIME_u {
+ data: [u8; 8],
+}}
+UNION!(MMTIME_u, data, ms, ms_mut, ::DWORD);
+UNION!(MMTIME_u, data, sample, sample_mut, ::DWORD);
+UNION!(MMTIME_u, data, cb, cb_mut, ::DWORD);
+UNION!(MMTIME_u, data, ticks, ticks_mut, ::DWORD);
+UNION!(MMTIME_u, data, smpte, smpte_mut, MMTIME_smpte);
+UNION!(MMTIME_u, data, midi, midi_mut, MMTIME_midi);
+STRUCT!{struct MMTIME_smpte {
+ hour: ::BYTE,
+ min: ::BYTE,
+ sec: ::BYTE,
+ frame: ::BYTE,
+ fps: ::BYTE,
+ dummy: ::BYTE,
+ pad: [::BYTE; 2],
+}}
+STRUCT!{struct MMTIME_midi {
+ songptrpos: ::DWORD,
+}}
+pub const TIME_MS: ::UINT = 0x0001;
+pub const TIME_SAMPLES: ::UINT = 0x0002;
+pub const TIME_BYTES: ::UINT = 0x0004;
+pub const TIME_SMPTE: ::UINT = 0x0008;
+pub const TIME_MIDI: ::UINT = 0x0010;
+pub const TIME_TICKS: ::UINT = 0x0020;
+pub const MM_JOY1MOVE: ::UINT = 0x3A0;
+pub const MM_JOY2MOVE: ::UINT = 0x3A1;
+pub const MM_JOY1ZMOVE: ::UINT = 0x3A2;
+pub const MM_JOY2ZMOVE: ::UINT = 0x3A3;
+pub const MM_JOY1BUTTONDOWN: ::UINT = 0x3B5;
+pub const MM_JOY2BUTTONDOWN: ::UINT = 0x3B6;
+pub const MM_JOY1BUTTONUP: ::UINT = 0x3B7;
+pub const MM_JOY2BUTTONUP: ::UINT = 0x3B8;
+pub const MM_MCINOTIFY: ::UINT = 0x3B9;
+pub const MM_WOM_OPEN: ::UINT = 0x3BB;
+pub const MM_WOM_CLOSE: ::UINT = 0x3BC;
+pub const MM_WOM_DONE: ::UINT = 0x3BD;
+pub const MM_WIM_OPEN: ::UINT = 0x3BE;
+pub const MM_WIM_CLOSE: ::UINT = 0x3BF;
+pub const MM_WIM_DATA: ::UINT = 0x3C0;
+pub const MM_MIM_OPEN: ::UINT = 0x3C1;
+pub const MM_MIM_CLOSE: ::UINT = 0x3C2;
+pub const MM_MIM_DATA: ::UINT = 0x3C3;
+pub const MM_MIM_LONGDATA: ::UINT = 0x3C4;
+pub const MM_MIM_ERROR: ::UINT = 0x3C5;
+pub const MM_MIM_LONGERROR: ::UINT = 0x3C6;
+pub const MM_MOM_OPEN: ::UINT = 0x3C7;
+pub const MM_MOM_CLOSE: ::UINT = 0x3C8;
+pub const MM_MOM_DONE: ::UINT = 0x3C9;
+pub const MMSYSERR_BASE: MMRESULT = 0;
+pub const WAVERR_BASE: MMRESULT = 32;
+pub const MIDIERR_BASE: MMRESULT = 64;
+pub const TIMERR_BASE: MMRESULT = 96;
+pub const JOYERR_BASE: MMRESULT = 160;
+pub const MCIERR_BASE: MMRESULT = 256;
+pub const MIXERR_BASE: MMRESULT = 1024;
+pub const MMSYSERR_NOERROR: MMRESULT = 0;
+pub const MMSYSERR_ERROR: MMRESULT = MMSYSERR_BASE + 1;
+pub const MMSYSERR_BADDEVICEID: MMRESULT = MMSYSERR_BASE + 2;
+pub const MMSYSERR_NOTENABLED: MMRESULT = MMSYSERR_BASE + 3;
+pub const MMSYSERR_ALLOCATED: MMRESULT = MMSYSERR_BASE + 4;
+pub const MMSYSERR_INVALHANDLE: MMRESULT = MMSYSERR_BASE + 5;
+pub const MMSYSERR_NODRIVER: MMRESULT = MMSYSERR_BASE + 6;
+pub const MMSYSERR_NOMEM: MMRESULT = MMSYSERR_BASE + 7;
+pub const MMSYSERR_NOTSUPPORTED: MMRESULT = MMSYSERR_BASE + 8;
+pub const MMSYSERR_BADERRNUM: MMRESULT = MMSYSERR_BASE + 9;
+pub const MMSYSERR_INVALFLAG: MMRESULT = MMSYSERR_BASE + 10;
+pub const MMSYSERR_INVALPARAM: MMRESULT = MMSYSERR_BASE + 11;
+pub const MMSYSERR_HANDLEBUSY: MMRESULT = MMSYSERR_BASE + 12;
+pub const MMSYSERR_INVALIDALIAS: MMRESULT = MMSYSERR_BASE + 13;
+pub const MMSYSERR_BADDB: MMRESULT = MMSYSERR_BASE + 14;
+pub const MMSYSERR_KEYNOTFOUND: MMRESULT = MMSYSERR_BASE + 15;
+pub const MMSYSERR_READERROR: MMRESULT = MMSYSERR_BASE + 16;
+pub const MMSYSERR_WRITEERROR: MMRESULT = MMSYSERR_BASE + 17;
+pub const MMSYSERR_DELETEERROR: MMRESULT = MMSYSERR_BASE + 18;
+pub const MMSYSERR_VALNOTFOUND: MMRESULT = MMSYSERR_BASE + 19;
+pub const MMSYSERR_NODRIVERCB: MMRESULT = MMSYSERR_BASE + 20;
+pub const MMSYSERR_MOREDATA: MMRESULT = MMSYSERR_BASE + 21;
+pub const MMSYSERR_LASTERROR: MMRESULT = MMSYSERR_BASE + 21;
+pub const MIDIERR_UNPREPARED: MMRESULT = MIDIERR_BASE + 0;
+pub const MIDIERR_STILLPLAYING: MMRESULT = MIDIERR_BASE + 1;
+pub const MIDIERR_NOMAP: MMRESULT = MIDIERR_BASE + 2;
+pub const MIDIERR_NOTREADY: MMRESULT = MIDIERR_BASE + 3;
+pub const MIDIERR_NODEVICE: MMRESULT = MIDIERR_BASE + 4;
+pub const MIDIERR_INVALIDSETUP: MMRESULT = MIDIERR_BASE + 5;
+pub const MIDIERR_BADOPENMODE: MMRESULT = MIDIERR_BASE + 6;
+pub const MIDIERR_DONT_CONTINUE: MMRESULT = MIDIERR_BASE + 7;
+pub const MIDIERR_LASTERROR: MMRESULT = MIDIERR_BASE + 7;
+pub const CALLBACK_TYPEMASK: ::DWORD = 0x00070000;
+pub const CALLBACK_NULL: ::DWORD = 0x00000000;
+pub const CALLBACK_WINDOW: ::DWORD = 0x00010000;
+pub const CALLBACK_TASK: ::DWORD = 0x00020000;
+pub const CALLBACK_FUNCTION: ::DWORD = 0x00030000;
+pub const CALLBACK_THREAD: ::DWORD = CALLBACK_TASK;
+pub const CALLBACK_EVENT: ::DWORD = 0x00050000;
+//497 (Win 7 SDK)
+pub const WAVERR_BADFORMAT: MMRESULT = WAVERR_BASE + 0;
+pub const WAVERR_STILLPLAYING: MMRESULT = WAVERR_BASE + 1;
+pub const WAVERR_UNPREPARED: MMRESULT = WAVERR_BASE + 2;
+pub const WAVERR_SYNC: MMRESULT = WAVERR_BASE + 3;
+pub const WAVERR_LASTERROR: MMRESULT = WAVERR_BASE + 3;
+DECLARE_HANDLE!(HWAVEIN, HWAVEIN__);
+DECLARE_HANDLE!(HWAVEOUT, HWAVEOUT__);
+pub type LPHWAVEIN = *mut HWAVEIN;
+pub type LPHWAVEOUT = *mut HWAVEOUT;
+pub const WOM_OPEN: ::UINT = MM_WOM_OPEN;
+pub const WOM_CLOSE: ::UINT = MM_WOM_CLOSE;
+pub const WOM_DONE: ::UINT = MM_WOM_DONE;
+pub const WIM_OPEN: ::UINT = MM_WIM_OPEN;
+pub const WIM_CLOSE: ::UINT = MM_WIM_CLOSE;
+pub const WIM_DATA: ::UINT = MM_WIM_DATA;
+pub const WAVE_MAPPER: ::UINT = 0xFFFFFFFF;
+pub const WAVE_FORMAT_QUERY: ::DWORD = 0x0001;
+pub const WAVE_ALLOWSYNC: ::DWORD = 0x0002;
+pub const WAVE_MAPPED: ::DWORD = 0x0004;
+pub const WAVE_FORMAT_DIRECT: ::DWORD = 0x0008;
+pub const WAVE_FORMAT_DIRECT_QUERY: ::DWORD = WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT;
+pub const WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE: ::DWORD = 0x0010;
+STRUCT!{struct WAVEHDR {
+ lpData: ::LPSTR,
+ dwBufferLength: ::DWORD,
+ dwBytesRecorded: ::DWORD,
+ dwUser: ::DWORD_PTR,
+ dwFlags: ::DWORD,
+ dwLoops: ::DWORD,
+ lpNext: *mut WAVEHDR,
+ reserved: ::DWORD_PTR,
+}}
+pub type PWAVEHDR = *mut WAVEHDR;
+pub type NPWAVEHDR = *mut WAVEHDR;
+pub type LPWAVEHDR = *mut WAVEHDR;
+STRUCT!{struct WAVEOUTCAPSW {
+ wMid: ::WORD,
+ wPid: ::WORD,
+ vDriverVersion: MMVERSION,
+ szPname: [::WCHAR; 32],
+ dwFormats: ::DWORD,
+ wChannels: ::WORD,
+ wReserved1: ::WORD,
+ dwSupport: ::DWORD,
+}}
+pub type PWAVEOUTCAPSW = *mut WAVEOUTCAPSW;
+pub type NPWAVEOUTCAPSW = *mut WAVEOUTCAPSW;
+pub type LPWAVEOUTCAPSW = *mut WAVEOUTCAPSW;
+STRUCT!{struct WAVEINCAPSW {
+ wMid: ::WORD,
+ wPid: ::WORD,
+ vDriverVersion: MMVERSION,
+ szPname: [::WCHAR; 32],
+ dwFormats: ::DWORD,
+ wChannels: ::WORD,
+ wReserved1: ::WORD,
+}}
+pub type PWAVEINCAPSW = *mut WAVEINCAPSW;
+pub type NPWAVEINCAPSW = *mut WAVEINCAPSW;
+pub type LPWAVEINCAPSW = *mut WAVEINCAPSW;
+pub const WAVE_INVALIDFORMAT: ::DWORD = 0x00000000;
+pub const WAVE_FORMAT_1M08: ::DWORD = 0x00000001;
+pub const WAVE_FORMAT_1S08: ::DWORD = 0x00000002;
+pub const WAVE_FORMAT_1M16: ::DWORD = 0x00000004;
+pub const WAVE_FORMAT_1S16: ::DWORD = 0x00000008;
+pub const WAVE_FORMAT_2M08: ::DWORD = 0x00000010;
+pub const WAVE_FORMAT_2S08: ::DWORD = 0x00000020;
+pub const WAVE_FORMAT_2M16: ::DWORD = 0x00000040;
+pub const WAVE_FORMAT_2S16: ::DWORD = 0x00000080;
+pub const WAVE_FORMAT_4M08: ::DWORD = 0x00000100;
+pub const WAVE_FORMAT_4S08: ::DWORD = 0x00000200;
+pub const WAVE_FORMAT_4M16: ::DWORD = 0x00000400;
+pub const WAVE_FORMAT_4S16: ::DWORD = 0x00000800;
+pub const WAVE_FORMAT_44M08: ::DWORD = 0x00000100;
+pub const WAVE_FORMAT_44S08: ::DWORD = 0x00000200;
+pub const WAVE_FORMAT_44M16: ::DWORD = 0x00000400;
+pub const WAVE_FORMAT_44S16: ::DWORD = 0x00000800;
+pub const WAVE_FORMAT_48M08: ::DWORD = 0x00001000;
+pub const WAVE_FORMAT_48S08: ::DWORD = 0x00002000;
+pub const WAVE_FORMAT_48M16: ::DWORD = 0x00004000;
+pub const WAVE_FORMAT_48S16: ::DWORD = 0x00008000;
+pub const WAVE_FORMAT_96M08: ::DWORD = 0x00010000;
+pub const WAVE_FORMAT_96S08: ::DWORD = 0x00020000;
+pub const WAVE_FORMAT_96M16: ::DWORD = 0x00040000;
+pub const WAVE_FORMAT_96S16: ::DWORD = 0x00080000;
+//782 (Win 7 SDK)
+pub type PWAVEFORMATEX = *mut ::WAVEFORMATEX;
+pub type NPWAVEFORMATEX = *mut ::WAVEFORMATEX;
+pub type LPWAVEFORMATEX = *mut ::WAVEFORMATEX;
+pub type LPCWAVEFORMATEX = *const ::WAVEFORMATEX;
+//2170 (Win 7 SDK)
+pub const TIMERR_NOERROR: ::MMRESULT = 0;
+pub const TIMERR_NOCANDO: ::MMRESULT = TIMERR_BASE + 1;
+pub const TIMERR_STRUCT: ::MMRESULT = TIMERR_BASE + 33;
+//2198 (Win 7 SDK)
+STRUCT!{struct TIMECAPS {
+ wPeriodMin: ::UINT,
+ wPeriodMax: ::UINT,
+}}
+pub type PTIMECAPS = *mut TIMECAPS;
+pub type NPTIMECAPS = *mut TIMECAPS;
+pub type LPTIMECAPS = *mut TIMECAPS;
+STRUCT!{struct MIDIHDR {
+ lpData: ::LPSTR,
+ dwBufferLength: ::DWORD,
+ dwBytesRecorded: ::DWORD,
+ dwUser: ::DWORD_PTR,
+ dwFlags: ::DWORD,
+ lpNext: *mut MIDIHDR,
+ reserved: ::DWORD_PTR,
+ dwOffset: ::DWORD,
+ dwReserved: [::DWORD_PTR; 4],
+}}
+pub type PMIDIHDR = *mut MIDIHDR;
+pub type NPMIDIHDR = *mut MIDIHDR;
+pub type LPMIDIHDR = *mut MIDIHDR;
+STRUCT!{struct MIDIINCAPSW {
+ wMid: ::WORD,
+ wPid: ::WORD,
+ vDriverVersion: MMVERSION,
+ szPname: [::WCHAR; 32],
+ dwSupport: ::DWORD,
+}}
+pub type PMIDIINCAPSW = *mut MIDIINCAPSW;
+pub type NPMIDIINCAPSW = *mut MIDIINCAPSW;
+pub type LPMIDIINCAPSW = *mut MIDIINCAPSW;
+STRUCT!{struct MIDIOUTCAPSW {
+ wMid: ::WORD,
+ wPid: ::WORD,
+ vDriverVersion: ::MMVERSION,
+ szPname: [::WCHAR; 32],
+ wTechnology: ::WORD,
+ wVoices: ::WORD,
+ wNotes: ::WORD,
+ wChannelMask: ::WORD,
+ dwSupport: ::DWORD,
+}}
+pub type PMIDIOUTCAPSW = *mut MIDIOUTCAPSW;
+pub type NPMIDIOUTCAPSW = *mut MIDIOUTCAPSW;
+pub type LPMIDIOUTCAPSW = *mut MIDIOUTCAPSW;
+DECLARE_HANDLE!(HMIDIIN, HMIDIIN__);
+DECLARE_HANDLE!(HMIDIOUT, HMIDIOUT__);
+pub type LPHMIDIIN = *mut HMIDIIN;
+pub type LPHMIDIOUT = *mut HMIDIOUT;
+DECLARE_HANDLE!(HMIDISTRM, HMIDISTRM__);
+DECLARE_HANDLE!(HMIDI, HMIDI__);
+pub type LPHMIDISTRM = *mut HMIDISTRM;
+pub type LPHMIDI = *mut HMIDI;
diff --git a/third_party/rust/winapi-0.2.8/src/mscat.rs b/third_party/rust/winapi-0.2.8/src/mscat.rs
new file mode 100644
index 0000000000..cc159de26f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/mscat.rs
@@ -0,0 +1,28 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Microsoft Internet Security Catalog API Prototypes and Definitions
+STRUCT!{struct CRYPTCATSTORE {
+ cbStruct: ::DWORD,
+ dwPublicVersion: ::DWORD,
+ pwszP7File: ::LPWSTR,
+ hProv: ::HCRYPTPROV,
+ dwEncodingType: ::DWORD,
+ fdwStoreFlags: ::DWORD,
+ hReserved: ::HANDLE,
+ hAttrs: ::HANDLE,
+ hCryptMsg: ::HCRYPTMSG,
+ hSorted: ::HANDLE,
+}}
+STRUCT!{struct CRYPTCATMEMBER {
+ cbStruct: ::DWORD,
+ pwszReferenceTag: ::LPWSTR,
+ pwszFileName: ::LPWSTR,
+ gSubjectType: ::GUID,
+ fdwMemberFlags: ::DWORD,
+ pIndirectData: *mut ::SIP_INDIRECT_DATA,
+ dwCertVersion: ::DWORD,
+ dwReserved: ::DWORD,
+ hReserved: ::HANDLE,
+ sEncodedIndirectData: ::CRYPT_ATTR_BLOB,
+ sEncodedMemberInfo: ::CRYPT_ATTR_BLOB,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/mssip.rs b/third_party/rust/winapi-0.2.8/src/mssip.rs
new file mode 100644
index 0000000000..5eeaa7e74a
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/mssip.rs
@@ -0,0 +1,103 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Microsoft SIP Provider Prototypes and Definitions
+STRUCT!{struct SIP_SUBJECTINFO {
+ cbSize: ::DWORD,
+ pgSubjectType: *mut ::GUID,
+ hFile: ::HANDLE,
+ pwsFileName: ::LPCWSTR,
+ pwsDisplayName: ::LPCWSTR,
+ dwReserved1: ::DWORD,
+ dwIntVersion: ::DWORD,
+ hProv: ::HCRYPTPROV,
+ DigestAlgorithm: ::CRYPT_ALGORITHM_IDENTIFIER,
+ dwFlags: ::DWORD,
+ dwEncodingType: ::DWORD,
+ dwReserved2: ::DWORD,
+ fdwCAPISettings: ::DWORD,
+ fdwSecuritySettings: ::DWORD,
+ dwIndex: ::DWORD,
+ dwUnionChoice: ::DWORD,
+ psFlat: *mut MS_ADDINFO_FLAT,
+ pClientData: ::LPVOID,
+}}
+UNION!(SIP_SUBJECTINFO, psFlat, psCatMember, psCatMember_mut, *mut MS_ADDINFO_CATALOGMEMBER);
+UNION!(SIP_SUBJECTINFO, psFlat, psBlob, psBlob_mut, *mut MS_ADDINFO_BLOB);
+pub type LPSIP_SUBJECTINFO = *mut SIP_SUBJECTINFO;
+STRUCT!{struct MS_ADDINFO_FLAT {
+ cbStruct: ::DWORD,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+}}
+pub type PMS_ADDINFO_FLAT = *mut MS_ADDINFO_FLAT;
+STRUCT!{struct MS_ADDINFO_CATALOGMEMBER {
+ cbStruct: ::DWORD,
+ pStore: *mut ::CRYPTCATSTORE,
+ pMember: *mut ::CRYPTCATMEMBER,
+}}
+pub type PMS_ADDINFO_CATALOGMEMBER = *mut MS_ADDINFO_CATALOGMEMBER;
+STRUCT!{struct MS_ADDINFO_BLOB {
+ cbStruct: ::DWORD,
+ cbMemObject: ::DWORD,
+ pbMemObject: *mut ::BYTE,
+ cbMemSignedMsg: ::DWORD,
+ pbMemSignedMsg: *mut ::BYTE,
+}}
+pub type PMS_ADDINFO_BLOB = *mut MS_ADDINFO_BLOB;
+STRUCT!{struct SIP_INDIRECT_DATA {
+ Data: ::CRYPT_ATTRIBUTE_TYPE_VALUE,
+ DigestAlgorithm: ::CRYPT_ALGORITHM_IDENTIFIER,
+ Digest: ::CRYPT_HASH_BLOB,
+}}
+pub type PSIP_INDIRECT_DATA = *mut SIP_INDIRECT_DATA;
+STRUCT!{struct SIP_ADD_NEWPROVIDER {
+ cbStruct: ::DWORD,
+ pgSubject: *mut ::GUID,
+ pwszDLLFileName: *mut ::WCHAR,
+ pwszMagicNumber: *mut ::WCHAR,
+ pwszIsFunctionName: *mut ::WCHAR,
+ pwszGetFuncName: *mut ::WCHAR,
+ pwszPutFuncName: *mut ::WCHAR,
+ pwszCreateFuncName: *mut ::WCHAR,
+ pwszVerifyFuncName: *mut ::WCHAR,
+ pwszRemoveFuncName: *mut ::WCHAR,
+ pwszIsFunctionNameFmt2: *mut ::WCHAR,
+ pwszGetCapFuncName: ::PWSTR,
+}}
+pub type PSIP_ADD_NEWPROVIDER = *mut SIP_ADD_NEWPROVIDER;
+STRUCT!{struct SIP_CAP_SET_V3 {
+ cbSize: ::DWORD,
+ dwVersion: ::DWORD,
+ isMultiSign: ::BOOL,
+ dwFlags: ::DWORD,
+}}
+UNION!(SIP_CAP_SET_V3, dwFlags, dwReserved, dwReserved_mut, ::DWORD);
+pub type PSIP_CAP_SET_V3 = *mut SIP_CAP_SET_V3;
+pub type SIP_CAP_SET = PSIP_CAP_SET_V3;
+pub type pCryptSIPGetSignedDataMsg = Option<unsafe extern "system" fn(
+ pSubjectInfo: *mut SIP_SUBJECTINFO, pdwEncodingType: *mut ::DWORD, dwIndex: ::DWORD,
+ pcbSignedDataMsg: *mut ::DWORD, pbSignedDataMsg: *mut ::BYTE,
+) -> ::BOOL>;
+pub type pCryptSIPPutSignedDataMsg = Option<unsafe extern "system" fn(
+ pSubjectInfo: *mut SIP_SUBJECTINFO, dwEncodingType: ::DWORD, pdwIndex: *mut ::DWORD,
+ cbSignedDataMsg: ::DWORD, pbSignedDataMsg: *mut ::BYTE,
+) -> ::BOOL>;
+pub type pCryptSIPCreateIndirectData = Option<unsafe extern "system" fn(
+ pSubjectInfo: *mut SIP_SUBJECTINFO, pcbIndirectData: *mut ::DWORD,
+ pIndirectData: *mut SIP_INDIRECT_DATA,
+) -> ::BOOL>;
+pub type pCryptSIPVerifyIndirectData = Option<unsafe extern "system" fn(
+ pSubjectInfo: *mut SIP_SUBJECTINFO, pIndirectData: *mut SIP_INDIRECT_DATA,
+) -> ::BOOL>;
+pub type pCryptSIPRemoveSignedDataMsg = Option<unsafe extern "system" fn(
+ pSubjectInfo: *mut SIP_SUBJECTINFO, dwIndex: ::DWORD,
+) -> ::BOOL>;
+STRUCT!{nodebug struct SIP_DISPATCH_INFO {
+ cbSize: ::DWORD,
+ hSIP: ::HANDLE,
+ pfGet: pCryptSIPGetSignedDataMsg,
+ pfPut: pCryptSIPPutSignedDataMsg,
+ pfCreate: pCryptSIPCreateIndirectData,
+ pfVerify: pCryptSIPVerifyIndirectData,
+ pfRemove: pCryptSIPRemoveSignedDataMsg,
+}}
+pub type LPSIP_DISPATCH_INFO = *mut SIP_DISPATCH_INFO;
diff --git a/third_party/rust/winapi-0.2.8/src/nb30.rs b/third_party/rust/winapi-0.2.8/src/nb30.rs
new file mode 100644
index 0000000000..26e9dea0ae
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/nb30.rs
@@ -0,0 +1,200 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+// This module contains the definitions for portable NetBIOS 3.0 support.
+pub const NCBNAMSZ: usize = 16;
+pub const MAX_LANA: usize = 254;
+pub type PFPOST = Option<unsafe extern "system" fn(*mut NCB)>;
+#[cfg(target_arch="x86_64")]
+STRUCT!{nodebug struct NCB {
+ ncb_command: ::UCHAR,
+ ncb_retcode: ::UCHAR,
+ ncb_lsn: ::UCHAR,
+ ncb_num: ::UCHAR,
+ ncb_buffer: ::PUCHAR,
+ ncb_length: ::WORD,
+ ncb_callname: [::UCHAR; NCBNAMSZ],
+ ncb_name: [::UCHAR; NCBNAMSZ],
+ ncb_rto: ::UCHAR,
+ ncb_sto: ::UCHAR,
+ ncb_post: PFPOST,
+ ncb_lana_num: ::UCHAR,
+ ncb_cmd_cplt: ::UCHAR,
+ ncb_reserve: [::UCHAR; 18],
+ ncb_event: ::HANDLE,
+}}
+#[cfg(target_arch="x86")]
+STRUCT!{nodebug struct NCB {
+ ncb_command: ::UCHAR,
+ ncb_retcode: ::UCHAR,
+ ncb_lsn: ::UCHAR,
+ ncb_num: ::UCHAR,
+ ncb_buffer: ::PUCHAR,
+ ncb_length: ::WORD,
+ ncb_callname: [::UCHAR; NCBNAMSZ],
+ ncb_name: [::UCHAR; NCBNAMSZ],
+ ncb_rto: ::UCHAR,
+ ncb_sto: ::UCHAR,
+ ncb_post: PFPOST,
+ ncb_lana_num: ::UCHAR,
+ ncb_cmd_cplt: ::UCHAR,
+ ncb_reserve: [::UCHAR; 10],
+ ncb_event: ::HANDLE,
+}}
+pub type PNCB = *mut NCB;
+STRUCT!{struct ADAPTER_STATUS {
+ adapter_address: [::UCHAR; 6],
+ rev_major: ::UCHAR,
+ reserved0: ::UCHAR,
+ adapter_type: ::UCHAR,
+ rev_minor: ::UCHAR,
+ duration: ::WORD,
+ frmr_recv: ::WORD,
+ frmr_xmit: ::WORD,
+ iframe_recv_err: ::WORD,
+ xmit_aborts: ::WORD,
+ xmit_success: ::DWORD,
+ recv_success: ::DWORD,
+ iframe_xmit_err: ::WORD,
+ recv_buff_unavail: ::WORD,
+ t1_timeouts: ::WORD,
+ ti_timeouts: ::WORD,
+ reserved1: ::DWORD,
+ free_ncbs: ::WORD,
+ max_cfg_ncbs: ::WORD,
+ max_ncbs: ::WORD,
+ xmit_buf_unavail: ::WORD,
+ max_dgram_size: ::WORD,
+ pending_sess: ::WORD,
+ max_cfg_sess: ::WORD,
+ max_sess: ::WORD,
+ max_sess_pkt_size: ::WORD,
+ name_count: ::WORD,
+}}
+pub type PADAPTER_STATUS = *mut ADAPTER_STATUS;
+STRUCT!{struct NAME_BUFFER {
+ name: [::UCHAR; NCBNAMSZ],
+ name_num: ::UCHAR,
+ name_flags: ::UCHAR,
+}}
+pub type PNAME_BUFFER = *mut NAME_BUFFER;
+pub const NAME_FLAGS_MASK: ::UCHAR = 0x87;
+pub const GROUP_NAME: ::UCHAR = 0x80;
+pub const UNIQUE_NAME: ::UCHAR = 0x00;
+pub const REGISTERING: ::UCHAR = 0x00;
+pub const REGISTERED: ::UCHAR = 0x04;
+pub const DEREGISTERED: ::UCHAR = 0x05;
+pub const DUPLICATE: ::UCHAR = 0x06;
+pub const DUPLICATE_DEREG: ::UCHAR = 0x07;
+STRUCT!{struct SESSION_HEADER {
+ sess_name: ::UCHAR,
+ num_sess: ::UCHAR,
+ rcv_dg_outstanding: ::UCHAR,
+ rcv_any_outstanding: ::UCHAR,
+}}
+pub type PSESSION_HEADER = *mut SESSION_HEADER;
+STRUCT!{struct SESSION_BUFFER {
+ lsn: ::UCHAR,
+ state: ::UCHAR,
+ local_name: [::UCHAR; NCBNAMSZ],
+ remote_name: [::UCHAR; NCBNAMSZ],
+ rcvs_outstanding: ::UCHAR,
+ sends_outstanding: ::UCHAR,
+}}
+pub type PSESSION_BUFFER = *mut SESSION_BUFFER;
+pub const LISTEN_OUTSTANDING: ::UCHAR = 0x01;
+pub const CALL_PENDING: ::UCHAR = 0x02;
+pub const SESSION_ESTABLISHED: ::UCHAR = 0x03;
+pub const HANGUP_PENDING: ::UCHAR = 0x04;
+pub const HANGUP_COMPLETE: ::UCHAR = 0x05;
+pub const SESSION_ABORTED: ::UCHAR = 0x06;
+STRUCT!{nodebug struct LANA_ENUM {
+ length: ::UCHAR,
+ lana: [::UCHAR; MAX_LANA + 1],
+}}
+pub type PLANA_ENUM = *mut LANA_ENUM;
+STRUCT!{struct FIND_NAME_HEADER {
+ node_count: ::WORD,
+ reserved: ::UCHAR,
+ unique_group: ::UCHAR,
+}}
+pub type PFIND_NAME_HEADER = *mut FIND_NAME_HEADER;
+STRUCT!{struct FIND_NAME_BUFFER {
+ length: ::UCHAR,
+ access_control: ::UCHAR,
+ frame_control: ::UCHAR,
+ destination_addr: [::UCHAR; 6],
+ source_addr: [::UCHAR; 6],
+ routing_info: [::UCHAR; 18],
+}}
+pub type PFIND_NAME_BUFFER = *mut FIND_NAME_BUFFER;
+STRUCT!{struct ACTION_HEADER {
+ transport_id: ::ULONG,
+ action_code: ::USHORT,
+ reserved: ::USHORT,
+}}
+pub type PACTION_HEADER = *mut ACTION_HEADER;
+pub const NCBCALL: ::UCHAR = 0x10;
+pub const NCBLISTEN: ::UCHAR = 0x11;
+pub const NCBHANGUP: ::UCHAR = 0x12;
+pub const NCBSEND: ::UCHAR = 0x14;
+pub const NCBRECV: ::UCHAR = 0x15;
+pub const NCBRECVANY: ::UCHAR = 0x16;
+pub const NCBCHAINSEND: ::UCHAR = 0x17;
+pub const NCBDGSEND: ::UCHAR = 0x20;
+pub const NCBDGRECV: ::UCHAR = 0x21;
+pub const NCBDGSENDBC: ::UCHAR = 0x22;
+pub const NCBADDNAME: ::UCHAR = 0x30;
+pub const NCBDELNAME: ::UCHAR = 0x31;
+pub const NCBRESET: ::UCHAR = 0x32;
+pub const NCBASTAT: ::UCHAR = 0x33;
+pub const NCBSSTAT: ::UCHAR = 0x34;
+pub const NCBCANCEL: ::UCHAR = 0x35;
+pub const NCBADDGRNAME: ::UCHAR = 0x36;
+pub const NCBENUM: ::UCHAR = 0x37;
+pub const NCBUNLINK: ::UCHAR = 0x70;
+pub const NCBSENDNA: ::UCHAR = 0x71;
+pub const NCBCHAINSENDNA: ::UCHAR = 0x72;
+pub const NCBLANSTALERT: ::UCHAR = 0x73;
+pub const NCBACTION: ::UCHAR = 0x77;
+pub const NCBFINDNAME: ::UCHAR = 0x78;
+pub const NCBTRACE: ::UCHAR = 0x79;
+pub const ASYNCH: ::UCHAR = 0x80;
+pub const NRC_GOODRET: ::UCHAR = 0x00;
+pub const NRC_BUFLEN: ::UCHAR = 0x01;
+pub const NRC_ILLCMD: ::UCHAR = 0x03;
+pub const NRC_CMDTMO: ::UCHAR = 0x05;
+pub const NRC_INCOMP: ::UCHAR = 0x06;
+pub const NRC_BADDR: ::UCHAR = 0x07;
+pub const NRC_SNUMOUT: ::UCHAR = 0x08;
+pub const NRC_NORES: ::UCHAR = 0x09;
+pub const NRC_SCLOSED: ::UCHAR = 0x0a;
+pub const NRC_CMDCAN: ::UCHAR = 0x0b;
+pub const NRC_DUPNAME: ::UCHAR = 0x0d;
+pub const NRC_NAMTFUL: ::UCHAR = 0x0e;
+pub const NRC_ACTSES: ::UCHAR = 0x0f;
+pub const NRC_LOCTFUL: ::UCHAR = 0x11;
+pub const NRC_REMTFUL: ::UCHAR = 0x12;
+pub const NRC_ILLNN: ::UCHAR = 0x13;
+pub const NRC_NOCALL: ::UCHAR = 0x14;
+pub const NRC_NOWILD: ::UCHAR = 0x15;
+pub const NRC_INUSE: ::UCHAR = 0x16;
+pub const NRC_NAMERR: ::UCHAR = 0x17;
+pub const NRC_SABORT: ::UCHAR = 0x18;
+pub const NRC_NAMCONF: ::UCHAR = 0x19;
+pub const NRC_IFBUSY: ::UCHAR = 0x21;
+pub const NRC_TOOMANY: ::UCHAR = 0x22;
+pub const NRC_BRIDGE: ::UCHAR = 0x23;
+pub const NRC_CANOCCR: ::UCHAR = 0x24;
+pub const NRC_CANCEL: ::UCHAR = 0x26;
+pub const NRC_DUPENV: ::UCHAR = 0x30;
+pub const NRC_ENVNOTDEF: ::UCHAR = 0x34;
+pub const NRC_OSRESNOTAV: ::UCHAR = 0x35;
+pub const NRC_MAXAPPS: ::UCHAR = 0x36;
+pub const NRC_NOSAPS: ::UCHAR = 0x37;
+pub const NRC_NORESOURCES: ::UCHAR = 0x38;
+pub const NRC_INVADDRESS: ::UCHAR = 0x39;
+pub const NRC_INVDDID: ::UCHAR = 0x3B;
+pub const NRC_LOCKFAIL: ::UCHAR = 0x3C;
+pub const NRC_OPENERR: ::UCHAR = 0x3f;
+pub const NRC_SYSTEM: ::UCHAR = 0x40;
+pub const NRC_PENDING: ::UCHAR = 0xff;
diff --git a/third_party/rust/winapi-0.2.8/src/ncrypt.rs b/third_party/rust/winapi-0.2.8/src/ncrypt.rs
new file mode 100644
index 0000000000..e7301415cb
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ncrypt.rs
@@ -0,0 +1,9 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Cryptographic API Prototypes and Definitions
+//191
+pub type NCRYPT_HANDLE = ::ULONG_PTR;
+pub type NCRYPT_PROV_HANDLE = ::ULONG_PTR;
+pub type NCRYPT_KEY_HANDLE = ::ULONG_PTR;
+pub type NCRYPT_HASH_HANDLE = ::ULONG_PTR;
+pub type NCRYPT_SECRET_HANDLE = ::ULONG_PTR;
diff --git a/third_party/rust/winapi-0.2.8/src/ntdef.rs b/third_party/rust/winapi-0.2.8/src/ntdef.rs
new file mode 100644
index 0000000000..2e6f14b0e2
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ntdef.rs
@@ -0,0 +1,7 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Type definitions for the basic types.
+//909
+pub type NTSTATUS = ::LONG;
+pub type PNTSTATUS = *mut NTSTATUS;
+pub type PCNTSTATUS = *const NTSTATUS;
diff --git a/third_party/rust/winapi-0.2.8/src/ntsecapi.rs b/third_party/rust/winapi-0.2.8/src/ntsecapi.rs
new file mode 100644
index 0000000000..893ea9e4ea
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ntsecapi.rs
@@ -0,0 +1,1589 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! This module defines the Local Security Authority APIs.
+DEFINE_GUID!(Audit_System_SecurityStateChange, 0x0cce9210, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_System_SecuritySubsystemExtension, 0x0cce9211, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_System_Integrity, 0x0cce9212, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_System_IPSecDriverEvents, 0x0cce9213, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_System_Others, 0x0cce9214, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_Logon, 0x0cce9215, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_Logoff, 0x0cce9216, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_AccountLockout, 0x0cce9217, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_IPSecMainMode, 0x0cce9218, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_IPSecQuickMode, 0x0cce9219, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_IPSecUserMode, 0x0cce921a, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_SpecialLogon, 0x0cce921b, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_Others, 0x0cce921c, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_FileSystem, 0x0cce921d, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_Registry, 0x0cce921e, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_Kernel, 0x0cce921f, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_Sam, 0x0cce9220, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_CertificationServices, 0x0cce9221, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_ApplicationGenerated, 0x0cce9222, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_Handle, 0x0cce9223, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_Share, 0x0cce9224, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_FirewallPacketDrops, 0x0cce9225, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_FirewallConnection, 0x0cce9226, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_Other, 0x0cce9227, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PrivilegeUse_Sensitive, 0x0cce9228, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PrivilegeUse_NonSensitive, 0x0cce9229, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PrivilegeUse_Others, 0x0cce922a, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DetailedTracking_ProcessCreation, 0x0cce922b, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DetailedTracking_ProcessTermination, 0x0cce922c, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DetailedTracking_DpapiActivity, 0x0cce922d, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DetailedTracking_RpcCall, 0x0cce922e, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange_AuditPolicy, 0x0cce922f, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange_AuthenticationPolicy, 0x0cce9230, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange_AuthorizationPolicy, 0x0cce9231, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange_MpsscvRulePolicy, 0x0cce9232, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange_WfpIPSecPolicy, 0x0cce9233, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange_Others, 0x0cce9234, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement_UserAccount, 0x0cce9235, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement_ComputerAccount, 0x0cce9236, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement_SecurityGroup, 0x0cce9237, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement_DistributionGroup, 0x0cce9238, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement_ApplicationGroup, 0x0cce9239, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement_Others, 0x0cce923a, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DSAccess_DSAccess, 0x0cce923b, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DsAccess_AdAuditChanges, 0x0cce923c, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Ds_Replication, 0x0cce923d, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Ds_DetailedReplication, 0x0cce923e, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountLogon_CredentialValidation, 0x0cce923f, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountLogon_Kerberos, 0x0cce9240, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountLogon_Others, 0x0cce9241, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountLogon_KerbCredentialValidation, 0x0cce9242, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_NPS, 0x0cce9243, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_DetailedFileShare, 0x0cce9244, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_RemovableStorage, 0x0cce9245, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess_CbacStaging, 0x0cce9246, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon_Claims, 0x0cce9247, 0x69ae, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_System, 0x69979848, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_Logon, 0x69979849, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_ObjectAccess, 0x6997984a, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PrivilegeUse, 0x6997984b, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DetailedTracking, 0x6997984c, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_PolicyChange, 0x6997984d, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountManagement, 0x6997984e, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_DirectoryServiceAccess, 0x6997984f, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+DEFINE_GUID!(Audit_AccountLogon, 0x69979850, 0x797a, 0x11d9,
+ 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30);
+ENUM!{enum POLICY_AUDIT_EVENT_TYPE {
+ AuditCategorySystem = 0,
+ AuditCategoryLogon,
+ AuditCategoryObjectAccess,
+ AuditCategoryPrivilegeUse,
+ AuditCategoryDetailedTracking,
+ AuditCategoryPolicyChange,
+ AuditCategoryAccountManagement,
+ AuditCategoryDirectoryServiceAccess,
+ AuditCategoryAccountLogon,
+}}
+pub type PPOLICY_AUDIT_EVENT_TYPE = *mut POLICY_AUDIT_EVENT_TYPE;
+pub const POLICY_AUDIT_EVENT_UNCHANGED: POLICY_AUDIT_EVENT_OPTIONS = 0x00000000;
+pub const POLICY_AUDIT_EVENT_SUCCESS: POLICY_AUDIT_EVENT_OPTIONS = 0x00000001;
+pub const POLICY_AUDIT_EVENT_FAILURE: POLICY_AUDIT_EVENT_OPTIONS = 0x00000002;
+pub const POLICY_AUDIT_EVENT_NONE: POLICY_AUDIT_EVENT_OPTIONS = 0x00000004;
+pub const POLICY_AUDIT_EVENT_MASK: POLICY_AUDIT_EVENT_OPTIONS = POLICY_AUDIT_EVENT_SUCCESS
+ | POLICY_AUDIT_EVENT_FAILURE | POLICY_AUDIT_EVENT_UNCHANGED | POLICY_AUDIT_EVENT_NONE;
+pub const POLICY_VIEW_LOCAL_INFORMATION: ::ACCESS_MASK = 0x00000001;
+pub const POLICY_VIEW_AUDIT_INFORMATION: ::ACCESS_MASK = 0x00000002;
+pub const POLICY_GET_PRIVATE_INFORMATION: ::ACCESS_MASK = 0x00000004;
+pub const POLICY_TRUST_ADMIN: ::ACCESS_MASK = 0x00000008;
+pub const POLICY_CREATE_ACCOUNT: ::ACCESS_MASK = 0x00000010;
+pub const POLICY_CREATE_SECRET: ::ACCESS_MASK = 0x00000020;
+pub const POLICY_CREATE_PRIVILEGE: ::ACCESS_MASK = 0x00000040;
+pub const POLICY_SET_DEFAULT_QUOTA_LIMITS: ::ACCESS_MASK = 0x00000080;
+pub const POLICY_SET_AUDIT_REQUIREMENTS: ::ACCESS_MASK = 0x00000100;
+pub const POLICY_AUDIT_LOG_ADMIN: ::ACCESS_MASK = 0x00000200;
+pub const POLICY_SERVER_ADMIN: ::ACCESS_MASK = 0x00000400;
+pub const POLICY_LOOKUP_NAMES: ::ACCESS_MASK = 0x00000800;
+pub const POLICY_NOTIFICATION: ::ACCESS_MASK = 0x00001000;
+pub const POLICY_ALL_ACCESS: ::ACCESS_MASK = ::STANDARD_RIGHTS_REQUIRED
+ | POLICY_VIEW_LOCAL_INFORMATION | POLICY_VIEW_AUDIT_INFORMATION
+ | POLICY_GET_PRIVATE_INFORMATION | POLICY_TRUST_ADMIN | POLICY_CREATE_ACCOUNT
+ | POLICY_CREATE_SECRET | POLICY_CREATE_PRIVILEGE | POLICY_SET_DEFAULT_QUOTA_LIMITS
+ | POLICY_SET_AUDIT_REQUIREMENTS | POLICY_AUDIT_LOG_ADMIN | POLICY_SERVER_ADMIN
+ | POLICY_LOOKUP_NAMES;
+pub const POLICY_READ: ::ACCESS_MASK = ::STANDARD_RIGHTS_READ | POLICY_VIEW_AUDIT_INFORMATION
+ | POLICY_GET_PRIVATE_INFORMATION;
+pub const POLICY_WRITE: ::ACCESS_MASK = ::STANDARD_RIGHTS_WRITE | POLICY_TRUST_ADMIN
+ | POLICY_CREATE_ACCOUNT | POLICY_CREATE_SECRET | POLICY_CREATE_PRIVILEGE
+ | POLICY_SET_DEFAULT_QUOTA_LIMITS | POLICY_SET_AUDIT_REQUIREMENTS | POLICY_AUDIT_LOG_ADMIN
+ | POLICY_SERVER_ADMIN;
+pub const POLICY_EXECUTE: ::ACCESS_MASK = ::STANDARD_RIGHTS_EXECUTE
+ | POLICY_VIEW_LOCAL_INFORMATION | POLICY_LOOKUP_NAMES;
+STRUCT!{struct LSA_TRANSLATED_SID {
+ Use: ::SID_NAME_USE,
+ RelativeId: ::ULONG,
+ DomainIndex: ::LONG,
+}}
+pub type PLSA_TRANSLATED_SID = *mut LSA_TRANSLATED_SID;
+ENUM!{enum POLICY_LSA_SERVER_ROLE {
+ PolicyServerRoleBackup = 2,
+ PolicyServerRolePrimary,
+}}
+pub type PPOLICY_LSA_SERVER_ROLE = *mut POLICY_LSA_SERVER_ROLE;
+pub type POLICY_AUDIT_EVENT_OPTIONS = ::ULONG;
+pub type PPOLICY_AUDIT_EVENT_OPTIONS = *mut ::ULONG;
+ENUM!{enum POLICY_INFORMATION_CLASS {
+ PolicyAuditLogInformation = 1,
+ PolicyAuditEventsInformation,
+ PolicyPrimaryDomainInformation,
+ PolicyPdAccountInformation,
+ PolicyAccountDomainInformation,
+ PolicyLsaServerRoleInformation,
+ PolicyReplicaSourceInformation,
+ PolicyDefaultQuotaInformation,
+ PolicyModificationInformation,
+ PolicyAuditFullSetInformation,
+ PolicyAuditFullQueryInformation,
+ PolicyDnsDomainInformation,
+ PolicyDnsDomainInformationInt,
+ PolicyLocalAccountDomainInformation,
+ PolicyLastEntry,
+}}
+pub type PPOLICY_INFORMATION_CLASS = *mut POLICY_INFORMATION_CLASS;
+STRUCT!{struct POLICY_AUDIT_LOG_INFO {
+ AuditLogPercentFull: ::ULONG,
+ MaximumLogSize: ::ULONG,
+ AuditRetentionPeriod: ::LARGE_INTEGER,
+ AuditLogFullShutdownInProgress: ::BOOLEAN,
+ TimeToShutdown: ::LARGE_INTEGER,
+ NextAuditRecordId: ::ULONG,
+}}
+pub type PPOLICY_AUDIT_LOG_INFO = *mut POLICY_AUDIT_LOG_INFO;
+STRUCT!{struct POLICY_AUDIT_EVENTS_INFO {
+ AuditingMode: ::BOOLEAN,
+ EventAuditingOptions: PPOLICY_AUDIT_EVENT_OPTIONS,
+ MaximumAuditEventCount: ::ULONG,
+}}
+pub type PPOLICY_AUDIT_EVENTS_INFO = *mut POLICY_AUDIT_EVENTS_INFO;
+STRUCT!{struct POLICY_AUDIT_SUBCATEGORIES_INFO {
+ MaximumSubCategoryCount: ::ULONG,
+ EventAuditingOptions: PPOLICY_AUDIT_EVENT_OPTIONS,
+}}
+pub type PPOLICY_AUDIT_SUBCATEGORIES_INFO = *mut POLICY_AUDIT_SUBCATEGORIES_INFO;
+STRUCT!{struct POLICY_AUDIT_CATEGORIES_INFO {
+ MaximumSubCategoryCount: ::ULONG,
+ SubCategoriesInfo: PPOLICY_AUDIT_SUBCATEGORIES_INFO,
+}}
+pub type PPOLICY_AUDIT_CATEGORIES_INFO = *mut POLICY_AUDIT_CATEGORIES_INFO;
+pub const PER_USER_POLICY_UNCHANGED: ::ULONG = 0x00;
+pub const PER_USER_AUDIT_SUCCESS_INCLUDE: ::ULONG = 0x01;
+pub const PER_USER_AUDIT_SUCCESS_EXCLUDE: ::ULONG = 0x02;
+pub const PER_USER_AUDIT_FAILURE_INCLUDE: ::ULONG = 0x04;
+pub const PER_USER_AUDIT_FAILURE_EXCLUDE: ::ULONG = 0x08;
+pub const PER_USER_AUDIT_NONE: ::ULONG = 0x10;
+pub const VALID_PER_USER_AUDIT_POLICY_FLAG: ::ULONG = PER_USER_AUDIT_SUCCESS_INCLUDE
+ | PER_USER_AUDIT_SUCCESS_EXCLUDE | PER_USER_AUDIT_FAILURE_INCLUDE
+ | PER_USER_AUDIT_FAILURE_EXCLUDE | PER_USER_AUDIT_NONE;
+STRUCT!{struct POLICY_PRIMARY_DOMAIN_INFO {
+ Name: ::LSA_UNICODE_STRING,
+ Sid: ::PSID,
+}}
+pub type PPOLICY_PRIMARY_DOMAIN_INFO = *mut POLICY_PRIMARY_DOMAIN_INFO;
+STRUCT!{struct POLICY_PD_ACCOUNT_INFO {
+ Name: ::LSA_UNICODE_STRING,
+}}
+pub type PPOLICY_PD_ACCOUNT_INFO = *mut POLICY_PD_ACCOUNT_INFO;
+STRUCT!{struct POLICY_LSA_SERVER_ROLE_INFO {
+ LsaServerRole: POLICY_LSA_SERVER_ROLE,
+}}
+pub type PPOLICY_LSA_SERVER_ROLE_INFO = *mut POLICY_LSA_SERVER_ROLE_INFO;
+STRUCT!{struct POLICY_REPLICA_SOURCE_INFO {
+ ReplicaSource: ::LSA_UNICODE_STRING,
+ ReplicaAccountName: ::LSA_UNICODE_STRING,
+}}
+pub type PPOLICY_REPLICA_SOURCE_INFO = *mut POLICY_REPLICA_SOURCE_INFO;
+STRUCT!{struct POLICY_DEFAULT_QUOTA_INFO {
+ QuotaLimits: ::QUOTA_LIMITS,
+}}
+pub type PPOLICY_DEFAULT_QUOTA_INFO = *mut POLICY_DEFAULT_QUOTA_INFO;
+STRUCT!{struct POLICY_MODIFICATION_INFO {
+ ModifiedId: ::LARGE_INTEGER,
+ DatabaseCreationTime: ::LARGE_INTEGER,
+}}
+pub type PPOLICY_MODIFICATION_INFO = *mut POLICY_MODIFICATION_INFO;
+STRUCT!{struct POLICY_AUDIT_FULL_SET_INFO {
+ ShutDownOnFull: ::BOOLEAN,
+}}
+pub type PPOLICY_AUDIT_FULL_SET_INFO = *mut POLICY_AUDIT_FULL_SET_INFO;
+STRUCT!{struct POLICY_AUDIT_FULL_QUERY_INFO {
+ ShutDownOnFull: ::BOOLEAN,
+ LogIsFull: ::BOOLEAN,
+}}
+pub type PPOLICY_AUDIT_FULL_QUERY_INFO = *mut POLICY_AUDIT_FULL_QUERY_INFO;
+ENUM!{enum POLICY_DOMAIN_INFORMATION_CLASS {
+ PolicyDomainEfsInformation = 2,
+ PolicyDomainKerberosTicketInformation,
+}}
+pub type PPOLICY_DOMAIN_INFORMATION_CLASS = *mut POLICY_DOMAIN_INFORMATION_CLASS;
+STRUCT!{struct POLICY_DOMAIN_EFS_INFO {
+ InfoLength: ::ULONG,
+ EfsBlob: ::PUCHAR,
+}}
+pub type PPOLICY_DOMAIN_EFS_INFO = *mut POLICY_DOMAIN_EFS_INFO;
+STRUCT!{struct POLICY_DOMAIN_KERBEROS_TICKET_INFO {
+ AuthenticationOptions: ::ULONG,
+ MaxServiceTicketAge: ::LARGE_INTEGER,
+ MaxTicketAge: ::LARGE_INTEGER,
+ MaxRenewAge: ::LARGE_INTEGER,
+ MaxClockSkew: ::LARGE_INTEGER,
+ Reserved: ::LARGE_INTEGER,
+}}
+pub type PPOLICY_DOMAIN_KERBEROS_TICKET_INFO = *mut POLICY_DOMAIN_KERBEROS_TICKET_INFO;
+ENUM!{enum POLICY_NOTIFICATION_INFORMATION_CLASS {
+ PolicyNotifyAuditEventsInformation = 1,
+ PolicyNotifyAccountDomainInformation,
+ PolicyNotifyServerRoleInformation,
+ PolicyNotifyDnsDomainInformation,
+ PolicyNotifyDomainEfsInformation,
+ PolicyNotifyDomainKerberosTicketInformation,
+ PolicyNotifyMachineAccountPasswordInformation,
+ PolicyNotifyGlobalSaclInformation,
+ PolicyNotifyMax,
+}}
+pub type PPOLICY_NOTIFICATION_INFORMATION_CLASS = *mut POLICY_NOTIFICATION_INFORMATION_CLASS;
+pub type LSA_HANDLE = ::PVOID;
+pub type PLSA_HANDLE = *mut ::PVOID;
+ENUM!{enum TRUSTED_INFORMATION_CLASS {
+ TrustedDomainNameInformation = 1,
+ TrustedControllersInformation,
+ TrustedPosixOffsetInformation,
+ TrustedPasswordInformation,
+ TrustedDomainInformationBasic,
+ TrustedDomainInformationEx,
+ TrustedDomainAuthInformation,
+ TrustedDomainFullInformation,
+ TrustedDomainAuthInformationInternal,
+ TrustedDomainFullInformationInternal,
+ TrustedDomainInformationEx2Internal,
+ TrustedDomainFullInformation2Internal,
+ TrustedDomainSupportedEncryptionTypes,
+}}
+pub type PTRUSTED_INFORMATION_CLASS = *mut TRUSTED_INFORMATION_CLASS;
+STRUCT!{struct TRUSTED_DOMAIN_NAME_INFO {
+ Name: ::LSA_UNICODE_STRING,
+}}
+pub type PTRUSTED_DOMAIN_NAME_INFO = *mut TRUSTED_DOMAIN_NAME_INFO;
+STRUCT!{struct TRUSTED_CONTROLLERS_INFO {
+ Entries: ::ULONG,
+ Names: ::PLSA_UNICODE_STRING,
+}}
+pub type PTRUSTED_CONTROLLERS_INFO = *mut TRUSTED_CONTROLLERS_INFO;
+STRUCT!{struct TRUSTED_POSIX_OFFSET_INFO {
+ Offset: ::ULONG,
+}}
+pub type PTRUSTED_POSIX_OFFSET_INFO = *mut TRUSTED_POSIX_OFFSET_INFO;
+STRUCT!{struct TRUSTED_PASSWORD_INFO {
+ Password: ::LSA_UNICODE_STRING,
+ OldPassword: ::LSA_UNICODE_STRING,
+}}
+pub type PTRUSTED_PASSWORD_INFO = *mut TRUSTED_PASSWORD_INFO;
+pub type TRUSTED_DOMAIN_INFORMATION_BASIC = ::LSA_TRUST_INFORMATION;
+pub type PTRUSTED_DOMAIN_INFORMATION_BASIC = ::PLSA_TRUST_INFORMATION;
+pub const TRUST_DIRECTION_DISABLED: ::ULONG = 0x00000000;
+pub const TRUST_DIRECTION_INBOUND: ::ULONG = 0x00000001;
+pub const TRUST_DIRECTION_OUTBOUND: ::ULONG = 0x00000002;
+pub const TRUST_DIRECTION_BIDIRECTIONAL: ::ULONG = TRUST_DIRECTION_INBOUND
+ | TRUST_DIRECTION_OUTBOUND;
+pub const TRUST_TYPE_DOWNLEVEL: ::ULONG = 0x00000001;
+pub const TRUST_TYPE_UPLEVEL: ::ULONG = 0x00000002;
+pub const TRUST_TYPE_MIT: ::ULONG = 0x00000003;
+pub const TRUST_ATTRIBUTE_NON_TRANSITIVE: ::ULONG = 0x00000001;
+pub const TRUST_ATTRIBUTE_UPLEVEL_ONLY: ::ULONG = 0x00000002;
+pub const TRUST_ATTRIBUTE_QUARANTINED_DOMAIN: ::ULONG = 0x00000004;
+pub const TRUST_ATTRIBUTE_FOREST_TRANSITIVE: ::ULONG = 0x00000008;
+pub const TRUST_ATTRIBUTE_CROSS_ORGANIZATION: ::ULONG = 0x00000010;
+pub const TRUST_ATTRIBUTE_WITHIN_FOREST: ::ULONG = 0x00000020;
+pub const TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL: ::ULONG = 0x00000040;
+pub const TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION: ::ULONG = 0x00000080;
+pub const TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS: ::ULONG = 0x00000100;
+pub const TRUST_ATTRIBUTE_CROSS_ORGANIZATION_NO_TGT_DELEGATION: ::ULONG = 0x00000200;
+pub const TRUST_ATTRIBUTES_VALID: ::ULONG = 0xFF03FFFF;
+pub const TRUST_ATTRIBUTES_USER: ::ULONG = 0xFF000000;
+STRUCT!{struct TRUSTED_DOMAIN_INFORMATION_EX {
+ Name: ::LSA_UNICODE_STRING,
+ FlatName: ::LSA_UNICODE_STRING,
+ Sid: ::PSID,
+ TrustDirection: ::ULONG,
+ TrustType: ::ULONG,
+ TrustAttributes: ::ULONG,
+}}
+pub type PTRUSTED_DOMAIN_INFORMATION_EX = *mut TRUSTED_DOMAIN_INFORMATION_EX;
+STRUCT!{struct TRUSTED_DOMAIN_INFORMATION_EX2 {
+ Name: ::LSA_UNICODE_STRING,
+ FlatName: ::LSA_UNICODE_STRING,
+ Sid: ::PSID,
+ TrustDirection: ::ULONG,
+ TrustType: ::ULONG,
+ TrustAttributes: ::ULONG,
+ ForestTrustLength: ::ULONG,
+ ForestTrustInfo: ::PUCHAR,
+}}
+pub type PTRUSTED_DOMAIN_INFORMATION_EX2 = *mut TRUSTED_DOMAIN_INFORMATION_EX2;
+pub const TRUST_AUTH_TYPE_NONE: ::ULONG = 0;
+pub const TRUST_AUTH_TYPE_NT4OWF: ::ULONG = 1;
+pub const TRUST_AUTH_TYPE_CLEAR: ::ULONG = 2;
+pub const TRUST_AUTH_TYPE_VERSION: ::ULONG = 3;
+STRUCT!{struct LSA_AUTH_INFORMATION {
+ LastUpdateTime: ::LARGE_INTEGER,
+ AuthType: ::ULONG,
+ AuthInfoLength: ::ULONG,
+ AuthInfo: ::PUCHAR,
+}}
+pub type PLSA_AUTH_INFORMATION = *mut LSA_AUTH_INFORMATION;
+STRUCT!{struct TRUSTED_DOMAIN_AUTH_INFORMATION {
+ IncomingAuthInfos: ::ULONG,
+ IncomingAuthenticationInformation: PLSA_AUTH_INFORMATION,
+ IncomingPreviousAuthenticationInformation: PLSA_AUTH_INFORMATION,
+ OutgoingAuthInfos: ::ULONG,
+ OutgoingAuthenticationInformation: PLSA_AUTH_INFORMATION,
+ OutgoingPreviousAuthenticationInformation: PLSA_AUTH_INFORMATION,
+}}
+pub type PTRUSTED_DOMAIN_AUTH_INFORMATION = *mut TRUSTED_DOMAIN_AUTH_INFORMATION;
+STRUCT!{struct TRUSTED_DOMAIN_FULL_INFORMATION {
+ Information: TRUSTED_DOMAIN_INFORMATION_EX,
+ PosixOffset: TRUSTED_POSIX_OFFSET_INFO,
+ AuthInformation: TRUSTED_DOMAIN_AUTH_INFORMATION,
+}}
+pub type PTRUSTED_DOMAIN_FULL_INFORMATION = *mut TRUSTED_DOMAIN_FULL_INFORMATION;
+STRUCT!{struct TRUSTED_DOMAIN_FULL_INFORMATION2 {
+ Information: TRUSTED_DOMAIN_INFORMATION_EX2,
+ PosixOffset: TRUSTED_POSIX_OFFSET_INFO,
+ AuthInformation: TRUSTED_DOMAIN_AUTH_INFORMATION,
+}}
+pub type PTRUSTED_DOMAIN_FULL_INFORMATION2 = *mut TRUSTED_DOMAIN_FULL_INFORMATION2;
+STRUCT!{struct TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES {
+ SupportedEncryptionTypes: ::ULONG,
+}}
+pub type PTRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES =
+ *mut TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES;
+ENUM!{enum LSA_FOREST_TRUST_RECORD_TYPE {
+ ForestTrustTopLevelName,
+ ForestTrustTopLevelNameEx,
+ ForestTrustDomainInfo,
+ ForestTrustRecordTypeLast, // = ForestTrustDomainInfo,
+}}
+pub const LSA_FTRECORD_DISABLED_REASONS: ::ULONG = 0x0000FFFF;
+pub const LSA_TLN_DISABLED_NEW: ::ULONG = 0x00000001;
+pub const LSA_TLN_DISABLED_ADMIN: ::ULONG = 0x00000002;
+pub const LSA_TLN_DISABLED_CONFLICT: ::ULONG = 0x00000004;
+pub const LSA_SID_DISABLED_ADMIN: ::ULONG = 0x00000001;
+pub const LSA_SID_DISABLED_CONFLICT: ::ULONG = 0x00000002;
+pub const LSA_NB_DISABLED_ADMIN: ::ULONG = 0x00000004;
+pub const LSA_NB_DISABLED_CONFLICT: ::ULONG = 0x00000008;
+STRUCT!{struct LSA_FOREST_TRUST_DOMAIN_INFO {
+ Sid: ::PSID,
+ DnsName: ::LSA_UNICODE_STRING,
+ NetbiosName: ::LSA_UNICODE_STRING,
+}}
+pub type PLSA_FOREST_TRUST_DOMAIN_INFO = *mut LSA_FOREST_TRUST_DOMAIN_INFO;
+pub const MAX_FOREST_TRUST_BINARY_DATA_SIZE: ::ULONG = 128 * 1024;
+STRUCT!{struct LSA_FOREST_TRUST_BINARY_DATA {
+ Length: ::ULONG,
+ Buffer: ::PUCHAR,
+}}
+pub type PLSA_FOREST_TRUST_BINARY_DATA = *mut LSA_FOREST_TRUST_BINARY_DATA;
+STRUCT!{struct LSA_FOREST_TRUST_RECORD_ForestTrustData {
+ DomainInfo: LSA_FOREST_TRUST_DOMAIN_INFO,
+}}
+UNION!(
+ LSA_FOREST_TRUST_RECORD_ForestTrustData, DomainInfo, TopLevelName, TopLevelName_mut,
+ ::LSA_UNICODE_STRING
+);
+UNION!(
+ LSA_FOREST_TRUST_RECORD_ForestTrustData, DomainInfo, Data, Data_mut,
+ LSA_FOREST_TRUST_BINARY_DATA
+);
+STRUCT!{struct LSA_FOREST_TRUST_RECORD {
+ Flags: ::ULONG,
+ ForestTrustType: LSA_FOREST_TRUST_RECORD_TYPE,
+ Time: ::LARGE_INTEGER,
+ ForestTrustData: LSA_FOREST_TRUST_RECORD_ForestTrustData,
+}}
+pub type PLSA_FOREST_TRUST_RECORD = *mut LSA_FOREST_TRUST_RECORD;
+pub const MAX_RECORDS_IN_FOREST_TRUST_INFO: ::ULONG = 4000;
+STRUCT!{struct LSA_FOREST_TRUST_INFORMATION {
+ RecordCount: ::ULONG,
+ Entries: *mut PLSA_FOREST_TRUST_RECORD,
+}}
+pub type PLSA_FOREST_TRUST_INFORMATION = *mut LSA_FOREST_TRUST_INFORMATION;
+ENUM!{enum LSA_FOREST_TRUST_COLLISION_RECORD_TYPE {
+ CollisionTdo,
+ CollisionXref,
+ CollisionOther,
+}}
+STRUCT!{struct LSA_FOREST_TRUST_COLLISION_RECORD {
+ Index: ::ULONG,
+ Type: LSA_FOREST_TRUST_COLLISION_RECORD_TYPE,
+ Flags: ::ULONG,
+ Name: ::LSA_UNICODE_STRING,
+}}
+pub type PLSA_FOREST_TRUST_COLLISION_RECORD = *mut LSA_FOREST_TRUST_COLLISION_RECORD;
+STRUCT!{struct LSA_FOREST_TRUST_COLLISION_INFORMATION {
+ RecordCount: ::ULONG,
+ Entries: *mut PLSA_FOREST_TRUST_COLLISION_RECORD,
+}}
+pub type PLSA_FOREST_TRUST_COLLISION_INFORMATION = *mut LSA_FOREST_TRUST_COLLISION_INFORMATION;
+pub type LSA_ENUMERATION_HANDLE = ::ULONG;
+pub type PLSA_ENUMERATION_HANDLE = *mut ::ULONG;
+STRUCT!{struct LSA_ENUMERATION_INFORMATION {
+ Sid: ::PSID,
+}}
+pub type PLSA_ENUMERATION_INFORMATION = *mut LSA_ENUMERATION_INFORMATION;
+STRUCT!{struct LSA_LAST_INTER_LOGON_INFO {
+ LastSuccessfulLogon: ::LARGE_INTEGER,
+ LastFailedLogon: ::LARGE_INTEGER,
+ FailedAttemptCountSinceLastSuccessfulLogon: ::ULONG,
+}}
+pub type PLSA_LAST_INTER_LOGON_INFO = *mut LSA_LAST_INTER_LOGON_INFO;
+STRUCT!{struct SECURITY_LOGON_SESSION_DATA {
+ Size: ::ULONG,
+ LogonId: ::LUID,
+ UserName: ::LSA_UNICODE_STRING,
+ LogonDomain: ::LSA_UNICODE_STRING,
+ AuthenticationPackage: ::LSA_UNICODE_STRING,
+ LogonType: ::ULONG,
+ Session: ::ULONG,
+ Sid: ::PSID,
+ LogonTime: ::LARGE_INTEGER,
+ LogonServer: ::LSA_UNICODE_STRING,
+ DnsDomainName: ::LSA_UNICODE_STRING,
+ Upn: ::LSA_UNICODE_STRING,
+ UserFlags: ::ULONG,
+ LastLogonInfo: LSA_LAST_INTER_LOGON_INFO,
+ LogonScript: ::LSA_UNICODE_STRING,
+ ProfilePath: ::LSA_UNICODE_STRING,
+ HomeDirectory: ::LSA_UNICODE_STRING,
+ HomeDirectoryDrive: ::LSA_UNICODE_STRING,
+ LogoffTime: ::LARGE_INTEGER,
+ KickOffTime: ::LARGE_INTEGER,
+ PasswordLastSet: ::LARGE_INTEGER,
+ PasswordCanChange: ::LARGE_INTEGER,
+ PasswordMustChange: ::LARGE_INTEGER,
+}}
+pub type PSECURITY_LOGON_SESSION_DATA = *mut SECURITY_LOGON_SESSION_DATA;
+pub const CENTRAL_ACCESS_POLICY_OWNER_RIGHTS_PRESENT_FLAG: ::ULONG = 0x00000001;
+pub const CENTRAL_ACCESS_POLICY_STAGED_OWNER_RIGHTS_PRESENT_FLAG: ::ULONG = 0x00000100;
+pub const CENTRAL_ACCESS_POLICY_STAGED_FLAG: ::ULONG = 0x00010000;
+pub const CENTRAL_ACCESS_POLICY_VALID_FLAG_MASK: ::ULONG =
+ CENTRAL_ACCESS_POLICY_OWNER_RIGHTS_PRESENT_FLAG
+ | CENTRAL_ACCESS_POLICY_STAGED_OWNER_RIGHTS_PRESENT_FLAG | CENTRAL_ACCESS_POLICY_STAGED_FLAG;
+pub const LSASETCAPS_RELOAD_FLAG: ::ULONG = 0x00000001;
+pub const LSASETCAPS_VALID_FLAG_MASK: ::ULONG = LSASETCAPS_RELOAD_FLAG;
+STRUCT!{struct CENTRAL_ACCESS_POLICY_ENTRY {
+ Name: ::LSA_UNICODE_STRING,
+ Description: ::LSA_UNICODE_STRING,
+ ChangeId: ::LSA_UNICODE_STRING,
+ LengthAppliesTo: ::ULONG,
+ AppliesTo: ::PUCHAR,
+ LengthSD: ::ULONG,
+ SD: ::PSECURITY_DESCRIPTOR,
+ LengthStagedSD: ::ULONG,
+ StagedSD: ::PSECURITY_DESCRIPTOR,
+ Flags: ::ULONG,
+}}
+pub type PCENTRAL_ACCESS_POLICY_ENTRY = *mut CENTRAL_ACCESS_POLICY_ENTRY;
+pub type PCCENTRAL_ACCESS_POLICY_ENTRY = *const CENTRAL_ACCESS_POLICY_ENTRY;
+STRUCT!{struct CENTRAL_ACCESS_POLICY {
+ CAPID: ::PSID,
+ Name: ::LSA_UNICODE_STRING,
+ Description: ::LSA_UNICODE_STRING,
+ ChangeId: ::LSA_UNICODE_STRING,
+ Flags: ::ULONG,
+ CAPECount: ::ULONG,
+ CAPEs: *mut PCENTRAL_ACCESS_POLICY_ENTRY,
+}}
+pub type PCENTRAL_ACCESS_POLICY = *mut CENTRAL_ACCESS_POLICY;
+pub type PCCENTRAL_ACCESS_POLICY = *const CENTRAL_ACCESS_POLICY;
+ENUM!{enum NEGOTIATE_MESSAGES {
+ NegEnumPackagePrefixes = 0,
+ NegGetCallerName = 1,
+ NegTransferCredentials = 2,
+ NegCallPackageMax,
+}}
+pub const NEGOTIATE_MAX_PREFIX: usize = 32;
+STRUCT!{struct NEGOTIATE_PACKAGE_PREFIX {
+ PackageId: ::ULONG_PTR,
+ PackageDataA: ::PVOID,
+ PackageDataW: ::PVOID,
+ PrefixLen: ::ULONG_PTR,
+ Prefix: [::UCHAR; NEGOTIATE_MAX_PREFIX],
+}}
+pub type PNEGOTIATE_PACKAGE_PREFIX = *mut NEGOTIATE_PACKAGE_PREFIX;
+STRUCT!{struct NEGOTIATE_PACKAGE_PREFIXES {
+ MessageType: ::ULONG,
+ PrefixCount: ::ULONG,
+ Offset: ::ULONG,
+ Pad: ::ULONG,
+}}
+pub type PNEGOTIATE_PACKAGE_PREFIXES = *mut NEGOTIATE_PACKAGE_PREFIXES;
+STRUCT!{struct NEGOTIATE_CALLER_NAME_REQUEST {
+ MessageType: ::ULONG,
+ LogonId: ::LUID,
+}}
+pub type PNEGOTIATE_CALLER_NAME_REQUEST = *mut NEGOTIATE_CALLER_NAME_REQUEST;
+STRUCT!{struct NEGOTIATE_CALLER_NAME_RESPONSE {
+ MessageType: ::ULONG,
+ CallerName: ::PWSTR,
+}}
+pub type PNEGOTIATE_CALLER_NAME_RESPONSE = *mut NEGOTIATE_CALLER_NAME_RESPONSE;
+STRUCT!{struct DOMAIN_PASSWORD_INFORMATION {
+ MinPasswordLength: ::USHORT,
+ PasswordHistoryLength: ::USHORT,
+ PasswordProperties: ::ULONG,
+ MaxPasswordAge: ::LARGE_INTEGER,
+ MinPasswordAge: ::LARGE_INTEGER,
+}}
+pub type PDOMAIN_PASSWORD_INFORMATION = *mut DOMAIN_PASSWORD_INFORMATION;
+pub const DOMAIN_PASSWORD_COMPLEX: ::ULONG = 0x00000001;
+pub const DOMAIN_PASSWORD_NO_ANON_CHANGE: ::ULONG = 0x00000002;
+pub const DOMAIN_PASSWORD_NO_CLEAR_CHANGE: ::ULONG = 0x00000004;
+pub const DOMAIN_LOCKOUT_ADMINS: ::ULONG = 0x00000008;
+pub const DOMAIN_PASSWORD_STORE_CLEARTEXT: ::ULONG = 0x00000010;
+pub const DOMAIN_REFUSE_PASSWORD_CHANGE: ::ULONG = 0x00000020;
+pub const DOMAIN_NO_LM_OWF_CHANGE: ::ULONG = 0x00000040;
+pub type PSAM_PASSWORD_NOTIFICATION_ROUTINE = Option<unsafe extern "system" fn(
+ UserName: ::PUNICODE_STRING, RelativeId: ::ULONG, NewPassword: ::PUNICODE_STRING,
+) -> ::NTSTATUS>;
+pub type PSAM_INIT_NOTIFICATION_ROUTINE = Option<unsafe extern "system" fn() -> ::BOOLEAN>;
+pub type PSAM_PASSWORD_FILTER_ROUTINE = Option<unsafe extern "system" fn(
+ AccountName: ::PUNICODE_STRING, FullName: ::PUNICODE_STRING, Password: ::PUNICODE_STRING,
+ SetOperation: ::BOOLEAN,
+) -> ::BOOLEAN>;
+ENUM!{enum MSV1_0_LOGON_SUBMIT_TYPE {
+ MsV1_0InteractiveLogon = 2,
+ MsV1_0Lm20Logon,
+ MsV1_0NetworkLogon,
+ MsV1_0SubAuthLogon,
+ MsV1_0WorkstationUnlockLogon = 7,
+ MsV1_0S4ULogon = 12,
+ MsV1_0VirtualLogon = 82,
+ MsV1_0NoElevationLogon = 83,
+ MsV1_0LuidLogon = 84,
+}}
+pub type PMSV1_0_LOGON_SUBMIT_TYPE = *mut MSV1_0_LOGON_SUBMIT_TYPE;
+ENUM!{enum MSV1_0_PROFILE_BUFFER_TYPE {
+ MsV1_0InteractiveProfile = 2,
+ MsV1_0Lm20LogonProfile,
+ MsV1_0SmartCardProfile,
+}}
+pub type PMSV1_0_PROFILE_BUFFER_TYPE = *mut MSV1_0_PROFILE_BUFFER_TYPE;
+STRUCT!{struct MSV1_0_INTERACTIVE_LOGON {
+ MessageType: MSV1_0_LOGON_SUBMIT_TYPE,
+ LogonDomainName: ::UNICODE_STRING,
+ UserName: ::UNICODE_STRING,
+ Password: ::UNICODE_STRING,
+}}
+pub type PMSV1_0_INTERACTIVE_LOGON = *mut MSV1_0_INTERACTIVE_LOGON;
+STRUCT!{struct MSV1_0_INTERACTIVE_PROFILE {
+ MessageType: MSV1_0_PROFILE_BUFFER_TYPE,
+ LogonCount: ::USHORT,
+ BadPasswordCount: ::USHORT,
+ LogonTime: ::LARGE_INTEGER,
+ LogoffTime: ::LARGE_INTEGER,
+ KickOffTime: ::LARGE_INTEGER,
+ PasswordLastSet: ::LARGE_INTEGER,
+ PasswordCanChange: ::LARGE_INTEGER,
+ PasswordMustChange: ::LARGE_INTEGER,
+ LogonScript: ::UNICODE_STRING,
+ HomeDirectory: ::UNICODE_STRING,
+ FullName: ::UNICODE_STRING,
+ ProfilePath: ::UNICODE_STRING,
+ HomeDirectoryDrive: ::UNICODE_STRING,
+ LogonServer: ::UNICODE_STRING,
+ UserFlags: ::ULONG,
+}}
+pub type PMSV1_0_INTERACTIVE_PROFILE = *mut MSV1_0_INTERACTIVE_PROFILE;
+pub const MSV1_0_CHALLENGE_LENGTH: usize = 8;
+pub const MSV1_0_USER_SESSION_KEY_LENGTH: usize = 16;
+pub const MSV1_0_LANMAN_SESSION_KEY_LENGTH: usize = 8;
+pub const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED: ::ULONG = 0x02;
+pub const MSV1_0_UPDATE_LOGON_STATISTICS: ::ULONG = 0x04;
+pub const MSV1_0_RETURN_USER_PARAMETERS: ::ULONG = 0x08;
+pub const MSV1_0_DONT_TRY_GUEST_ACCOUNT: ::ULONG = 0x10;
+pub const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT: ::ULONG = 0x20;
+pub const MSV1_0_RETURN_PASSWORD_EXPIRY: ::ULONG = 0x40;
+pub const MSV1_0_USE_CLIENT_CHALLENGE: ::ULONG = 0x80;
+pub const MSV1_0_TRY_GUEST_ACCOUNT_ONLY: ::ULONG = 0x100;
+pub const MSV1_0_RETURN_PROFILE_PATH: ::ULONG = 0x200;
+pub const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY: ::ULONG = 0x400;
+pub const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT: ::ULONG = 0x800;
+pub const MSV1_0_DISABLE_PERSONAL_FALLBACK: ::ULONG = 0x00001000;
+pub const MSV1_0_ALLOW_FORCE_GUEST: ::ULONG = 0x00002000;
+pub const MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED: ::ULONG = 0x00004000;
+pub const MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY: ::ULONG = 0x00008000;
+pub const MSV1_0_SUBAUTHENTICATION_DLL_EX: ::ULONG = 0x00100000;
+pub const MSV1_0_ALLOW_MSVCHAPV2: ::ULONG = 0x00010000;
+pub const MSV1_0_S4U2SELF: ::ULONG = 0x00020000;
+pub const MSV1_0_CHECK_LOGONHOURS_FOR_S4U: ::ULONG = 0x00040000;
+pub const MSV1_0_INTERNET_DOMAIN: ::ULONG = 0x00080000;
+pub const MSV1_0_SUBAUTHENTICATION_DLL: ::ULONG = 0xFF000000;
+pub const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT: ::ULONG = 24;
+pub const MSV1_0_MNS_LOGON: ::ULONG = 0x01000000;
+pub const MSV1_0_SUBAUTHENTICATION_DLL_RAS: ::ULONG = 2;
+pub const MSV1_0_SUBAUTHENTICATION_DLL_IIS: ::ULONG = 132;
+STRUCT!{struct MSV1_0_LM20_LOGON {
+ MessageType: MSV1_0_LOGON_SUBMIT_TYPE,
+ LogonDomainName: ::UNICODE_STRING,
+ UserName: ::UNICODE_STRING,
+ Workstation: ::UNICODE_STRING,
+ ChallengeToClient: [::UCHAR; MSV1_0_CHALLENGE_LENGTH],
+ CaseSensitiveChallengeResponse: ::STRING,
+ CaseInsensitiveChallengeResponse: ::STRING,
+ ParameterControl: ::ULONG,
+}}
+pub type PMSV1_0_LM20_LOGON = *mut MSV1_0_LM20_LOGON;
+STRUCT!{struct MSV1_0_SUBAUTH_LOGON {
+ MessageType: MSV1_0_LOGON_SUBMIT_TYPE,
+ LogonDomainName: ::UNICODE_STRING,
+ UserName: ::UNICODE_STRING,
+ Workstation: ::UNICODE_STRING,
+ ChallengeToClient: [::UCHAR; MSV1_0_CHALLENGE_LENGTH],
+ AuthenticationInfo1: ::STRING,
+ AuthenticationInfo2: ::STRING,
+ ParameterControl: ::ULONG,
+ SubAuthPackageId: ::ULONG,
+}}
+pub type PMSV1_0_SUBAUTH_LOGON = *mut MSV1_0_SUBAUTH_LOGON;
+STRUCT!{struct MSV1_0_S4U_LOGON {
+ MessageType: MSV1_0_LOGON_SUBMIT_TYPE,
+ MSV1_0_LOGON_SUBMIT_TYPE: ::ULONG,
+ UserPrincipalName: ::UNICODE_STRING,
+ DomainName: ::UNICODE_STRING,
+}}
+pub type PMSV1_0_S4U_LOGON = *mut MSV1_0_S4U_LOGON;
+pub const LOGON_GUEST: ::ULONG = 0x01;
+pub const LOGON_NOENCRYPTION: ::ULONG = 0x02;
+pub const LOGON_CACHED_ACCOUNT: ::ULONG = 0x04;
+pub const LOGON_USED_LM_PASSWORD: ::ULONG = 0x08;
+pub const LOGON_EXTRA_SIDS: ::ULONG = 0x20;
+pub const LOGON_SUBAUTH_SESSION_KEY: ::ULONG = 0x40;
+pub const LOGON_SERVER_TRUST_ACCOUNT: ::ULONG = 0x80;
+pub const LOGON_NTLMV2_ENABLED: ::ULONG = 0x100;
+pub const LOGON_RESOURCE_GROUPS: ::ULONG = 0x200;
+pub const LOGON_PROFILE_PATH_RETURNED: ::ULONG = 0x400;
+pub const LOGON_NT_V2: ::ULONG = 0x800;
+pub const LOGON_LM_V2: ::ULONG = 0x1000;
+pub const LOGON_NTLM_V2: ::ULONG = 0x2000;
+pub const LOGON_OPTIMIZED: ::ULONG = 0x4000;
+pub const LOGON_WINLOGON: ::ULONG = 0x8000;
+pub const LOGON_PKINIT: ::ULONG = 0x10000;
+pub const LOGON_NO_OPTIMIZED: ::ULONG = 0x20000;
+pub const LOGON_NO_ELEVATION: ::ULONG = 0x40000;
+pub const LOGON_MANAGED_SERVICE: ::ULONG = 0x80000;
+pub const LOGON_GRACE_LOGON: ::ULONG = 0x01000000;
+STRUCT!{struct MSV1_0_LM20_LOGON_PROFILE {
+ MessageType: MSV1_0_PROFILE_BUFFER_TYPE,
+ KickOffTime: ::LARGE_INTEGER,
+ LogoffTime: ::LARGE_INTEGER,
+ UserFlags: ::ULONG,
+ UserSessionKey: [::UCHAR; MSV1_0_USER_SESSION_KEY_LENGTH],
+ LogonDomainName: ::UNICODE_STRING,
+ LanmanSessionKey: [::UCHAR; MSV1_0_LANMAN_SESSION_KEY_LENGTH],
+ LogonServer: ::UNICODE_STRING,
+ UserParameters: ::UNICODE_STRING,
+}}
+pub type PMSV1_0_LM20_LOGON_PROFILE = *mut MSV1_0_LM20_LOGON_PROFILE;
+pub const MSV1_0_OWF_PASSWORD_LENGTH: usize = 16;
+STRUCT!{struct MSV1_0_SUPPLEMENTAL_CREDENTIAL {
+ Version: ::ULONG,
+ Flags: ::ULONG,
+ LmPassword: [::UCHAR; MSV1_0_OWF_PASSWORD_LENGTH],
+ NtPassword: [::UCHAR; MSV1_0_OWF_PASSWORD_LENGTH],
+}}
+pub type PMSV1_0_SUPPLEMENTAL_CREDENTIAL = *mut MSV1_0_SUPPLEMENTAL_CREDENTIAL;
+pub const MSV1_0_NTLM3_RESPONSE_LENGTH: usize = 16;
+pub const MSV1_0_NTLM3_OWF_LENGTH: usize = 16;
+STRUCT!{struct MSV1_0_NTLM3_RESPONSE {
+ Response: [::UCHAR; MSV1_0_NTLM3_RESPONSE_LENGTH],
+ RespType: ::UCHAR,
+ HiRespType: ::UCHAR,
+ Flags: ::USHORT,
+ MsgWord: ::ULONG,
+ TimeStamp: ::ULONGLONG,
+ ChallengeFromClient: [::UCHAR; MSV1_0_CHALLENGE_LENGTH],
+ AvPairsOff: ::ULONG,
+ Buffer: [::UCHAR; 1],
+}}
+pub type PMSV1_0_NTLM3_RESPONSE = *mut MSV1_0_NTLM3_RESPONSE;
+ENUM!{enum MSV1_0_AVID {
+ MsvAvEOL,
+ MsvAvNbComputerName,
+ MsvAvNbDomainName,
+ MsvAvDnsComputerName,
+ MsvAvDnsDomainName,
+ MsvAvDnsTreeName,
+ MsvAvFlags,
+ MsvAvTimestamp,
+ MsvAvRestrictions,
+ MsvAvTargetName,
+ MsvAvChannelBindings,
+}}
+STRUCT!{struct MSV1_0_AV_PAIR {
+ AvId: ::USHORT,
+ AvLen: ::USHORT,
+}}
+pub type PMSV1_0_AV_PAIR = *mut MSV1_0_AV_PAIR;
+ENUM!{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_0ConfigLocalAliases,
+ MsV1_0ClearCachedCredentials,
+ MsV1_0LookupToken,
+ MsV1_0ValidateAuth,
+ MsV1_0CacheLookupEx,
+ MsV1_0GetCredentialKey,
+ MsV1_0SetThreadOption,
+}}
+pub type PMSV1_0_PROTOCOL_MESSAGE_TYPE = *mut MSV1_0_PROTOCOL_MESSAGE_TYPE;
+STRUCT!{struct MSV1_0_CHANGEPASSWORD_REQUEST {
+ MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE,
+ DomainName: ::UNICODE_STRING,
+ AccountName: ::UNICODE_STRING,
+ OldPassword: ::UNICODE_STRING,
+ NewPassword: ::UNICODE_STRING,
+ Impersonating: ::BOOLEAN,
+}}
+pub type PMSV1_0_CHANGEPASSWORD_REQUEST = *mut MSV1_0_CHANGEPASSWORD_REQUEST;
+STRUCT!{struct MSV1_0_CHANGEPASSWORD_RESPONSE {
+ MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE,
+ PasswordInfoValid: ::BOOLEAN,
+ DomainPasswordInfo: DOMAIN_PASSWORD_INFORMATION,
+}}
+pub type PMSV1_0_CHANGEPASSWORD_RESPONSE = *mut MSV1_0_CHANGEPASSWORD_RESPONSE;
+STRUCT!{struct MSV1_0_PASSTHROUGH_REQUEST {
+ MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE,
+ DomainName: ::UNICODE_STRING,
+ PackageName: ::UNICODE_STRING,
+ DataLength: ::ULONG,
+ LogonData: ::PUCHAR,
+ Pad: ::ULONG,
+}}
+pub type PMSV1_0_PASSTHROUGH_REQUEST = *mut MSV1_0_PASSTHROUGH_REQUEST;
+STRUCT!{struct MSV1_0_PASSTHROUGH_RESPONSE {
+ MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE,
+ Pad: ::ULONG,
+ DataLength: ::ULONG,
+ ValidationData: ::PUCHAR,
+}}
+pub type PMSV1_0_PASSTHROUGH_RESPONSE = *mut MSV1_0_PASSTHROUGH_RESPONSE;
+STRUCT!{struct MSV1_0_SUBAUTH_REQUEST {
+ MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE,
+ SubAuthPackageId: ::ULONG,
+ SubAuthInfoLength: ::ULONG,
+ SubAuthSubmitBuffer: ::PUCHAR,
+}}
+pub type PMSV1_0_SUBAUTH_REQUEST = *mut MSV1_0_SUBAUTH_REQUEST;
+STRUCT!{struct MSV1_0_SUBAUTH_RESPONSE {
+ MessageType: MSV1_0_PROTOCOL_MESSAGE_TYPE,
+ SubAuthInfoLength: ::ULONG,
+ SubAuthReturnBuffer: ::PUCHAR,
+}}
+pub type PMSV1_0_SUBAUTH_RESPONSE = *mut MSV1_0_SUBAUTH_RESPONSE;
+pub const RTL_ENCRYPT_MEMORY_SIZE: ::ULONG = 8;
+pub const RTL_ENCRYPT_OPTION_CROSS_PROCESS: ::ULONG = 0x01;
+pub const RTL_ENCRYPT_OPTION_SAME_LOGON: ::ULONG = 0x02;
+pub const KERB_ETYPE_NULL: ::LONG = 0;
+pub const KERB_ETYPE_DES_CBC_CRC: ::LONG = 1;
+pub const KERB_ETYPE_DES_CBC_MD4: ::LONG = 2;
+pub const KERB_ETYPE_DES_CBC_MD5: ::LONG = 3;
+pub const KERB_ETYPE_AES128_CTS_HMAC_SHA1_96: ::LONG = 17;
+pub const KERB_ETYPE_AES256_CTS_HMAC_SHA1_96: ::LONG = 18;
+pub const KERB_ETYPE_RC4_MD4: ::LONG = -128;
+pub const KERB_ETYPE_RC4_PLAIN2: ::LONG = -129;
+pub const KERB_ETYPE_RC4_LM: ::LONG = -130;
+pub const KERB_ETYPE_RC4_SHA: ::LONG = -131;
+pub const KERB_ETYPE_DES_PLAIN: ::LONG = -132;
+pub const KERB_ETYPE_RC4_HMAC_OLD: ::LONG = -133;
+pub const KERB_ETYPE_RC4_PLAIN_OLD: ::LONG = -134;
+pub const KERB_ETYPE_RC4_HMAC_OLD_EXP: ::LONG = -135;
+pub const KERB_ETYPE_RC4_PLAIN_OLD_EXP: ::LONG = -136;
+pub const KERB_ETYPE_RC4_PLAIN: ::LONG = -140;
+pub const KERB_ETYPE_RC4_PLAIN_EXP: ::LONG = -141;
+pub const KERB_ETYPE_AES128_CTS_HMAC_SHA1_96_PLAIN: ::LONG = -148;
+pub const KERB_ETYPE_AES256_CTS_HMAC_SHA1_96_PLAIN: ::LONG = -149;
+pub const KERB_ETYPE_DSA_SHA1_CMS: ::LONG = 9;
+pub const KERB_ETYPE_RSA_MD5_CMS: ::LONG = 10;
+pub const KERB_ETYPE_RSA_SHA1_CMS: ::LONG = 11;
+pub const KERB_ETYPE_RC2_CBC_ENV: ::LONG = 12;
+pub const KERB_ETYPE_RSA_ENV: ::LONG = 13;
+pub const KERB_ETYPE_RSA_ES_OEAP_ENV: ::LONG = 14;
+pub const KERB_ETYPE_DES_EDE3_CBC_ENV: ::LONG = 15;
+pub const KERB_ETYPE_DSA_SIGN: ::LONG = 8;
+pub const KERB_ETYPE_RSA_PRIV: ::LONG = 9;
+pub const KERB_ETYPE_RSA_PUB: ::LONG = 10;
+pub const KERB_ETYPE_RSA_PUB_MD5: ::LONG = 11;
+pub const KERB_ETYPE_RSA_PUB_SHA1: ::LONG = 12;
+pub const KERB_ETYPE_PKCS7_PUB: ::LONG = 13;
+pub const KERB_ETYPE_DES3_CBC_MD5: ::LONG = 5;
+pub const KERB_ETYPE_DES3_CBC_SHA1: ::LONG = 7;
+pub const KERB_ETYPE_DES3_CBC_SHA1_KD: ::LONG = 16;
+pub const KERB_ETYPE_DES_CBC_MD5_NT: ::LONG = 20;
+pub const KERB_ETYPE_RC4_HMAC_NT: ::LONG = 23;
+pub const KERB_ETYPE_RC4_HMAC_NT_EXP: ::LONG = 24;
+pub const KERB_CHECKSUM_NONE: ::LONG = 0;
+pub const KERB_CHECKSUM_CRC32: ::LONG = 1;
+pub const KERB_CHECKSUM_MD4: ::LONG = 2;
+pub const KERB_CHECKSUM_KRB_DES_MAC: ::LONG = 4;
+pub const KERB_CHECKSUM_KRB_DES_MAC_K: ::LONG = 5;
+pub const KERB_CHECKSUM_MD5: ::LONG = 7;
+pub const KERB_CHECKSUM_MD5_DES: ::LONG = 8;
+pub const KERB_CHECKSUM_SHA1_NEW: ::LONG = 14;
+pub const KERB_CHECKSUM_HMAC_SHA1_96_AES128: ::LONG = 15;
+pub const KERB_CHECKSUM_HMAC_SHA1_96_AES256: ::LONG = 16;
+pub const KERB_CHECKSUM_LM: ::LONG = -130;
+pub const KERB_CHECKSUM_SHA1: ::LONG = -131;
+pub const KERB_CHECKSUM_REAL_CRC32: ::LONG = -132;
+pub const KERB_CHECKSUM_DES_MAC: ::LONG = -133;
+pub const KERB_CHECKSUM_DES_MAC_MD5: ::LONG = -134;
+pub const KERB_CHECKSUM_MD25: ::LONG = -135;
+pub const KERB_CHECKSUM_RC4_MD5: ::LONG = -136;
+pub const KERB_CHECKSUM_MD5_HMAC: ::LONG = -137;
+pub const KERB_CHECKSUM_HMAC_MD5: ::LONG = -138;
+pub const KERB_CHECKSUM_HMAC_SHA1_96_AES128_Ki: ::LONG = -150;
+pub const KERB_CHECKSUM_HMAC_SHA1_96_AES256_Ki: ::LONG = -151;
+pub const KERB_TICKET_FLAGS_reserved: ::ULONG = 0x80000000;
+pub const KERB_TICKET_FLAGS_forwardable: ::ULONG = 0x40000000;
+pub const KERB_TICKET_FLAGS_forwarded: ::ULONG = 0x20000000;
+pub const KERB_TICKET_FLAGS_proxiable: ::ULONG = 0x10000000;
+pub const KERB_TICKET_FLAGS_proxy: ::ULONG = 0x08000000;
+pub const KERB_TICKET_FLAGS_may_postdate: ::ULONG = 0x04000000;
+pub const KERB_TICKET_FLAGS_postdated: ::ULONG = 0x02000000;
+pub const KERB_TICKET_FLAGS_invalid: ::ULONG = 0x01000000;
+pub const KERB_TICKET_FLAGS_renewable: ::ULONG = 0x00800000;
+pub const KERB_TICKET_FLAGS_initial: ::ULONG = 0x00400000;
+pub const KERB_TICKET_FLAGS_pre_authent: ::ULONG = 0x00200000;
+pub const KERB_TICKET_FLAGS_hw_authent: ::ULONG = 0x00100000;
+pub const KERB_TICKET_FLAGS_ok_as_delegate: ::ULONG = 0x00040000;
+pub const KERB_TICKET_FLAGS_name_canonicalize: ::ULONG = 0x00010000;
+pub const KERB_TICKET_FLAGS_cname_in_pa_data: ::ULONG = 0x00040000;
+pub const KERB_TICKET_FLAGS_enc_pa_rep: ::ULONG = 0x00010000;
+pub const KERB_TICKET_FLAGS_reserved1: ::ULONG = 0x00000001;
+pub const KRB_NT_UNKNOWN: ::LONG = 0;
+pub const KRB_NT_PRINCIPAL: ::LONG = 1;
+pub const KRB_NT_PRINCIPAL_AND_ID: ::LONG = -131;
+pub const KRB_NT_SRV_INST: ::LONG = 2;
+pub const KRB_NT_SRV_INST_AND_ID: ::LONG = -132;
+pub const KRB_NT_SRV_HST: ::LONG = 3;
+pub const KRB_NT_SRV_XHST: ::LONG = 4;
+pub const KRB_NT_UID: ::LONG = 5;
+pub const KRB_NT_ENTERPRISE_PRINCIPAL: ::LONG = 10;
+pub const KRB_NT_WELLKNOWN: ::LONG = 11;
+pub const KRB_NT_ENT_PRINCIPAL_AND_ID: ::LONG = -130;
+pub const KRB_NT_MS_PRINCIPAL: ::LONG = -128;
+pub const KRB_NT_MS_PRINCIPAL_AND_ID: ::LONG = -129;
+pub const KRB_NT_MS_BRANCH_ID: ::LONG = -133;
+pub const KRB_NT_X500_PRINCIPAL: ::LONG = 6;
+pub const KERB_WRAP_NO_ENCRYPT: ::ULONG = 0x80000001;
+ENUM!{enum KERB_LOGON_SUBMIT_TYPE {
+ KerbInteractiveLogon = 2,
+ KerbSmartCardLogon = 6,
+ KerbWorkstationUnlockLogon = 7,
+ KerbSmartCardUnlockLogon = 8,
+ KerbProxyLogon = 9,
+ KerbTicketLogon = 10,
+ KerbTicketUnlockLogon = 11,
+ KerbS4ULogon = 12,
+ KerbCertificateLogon = 13,
+ KerbCertificateS4ULogon = 14,
+ KerbCertificateUnlockLogon = 15,
+ KerbNoElevationLogon = 83,
+ KerbLuidLogon = 84,
+}}
+pub type PKERB_LOGON_SUBMIT_TYPE = *mut KERB_LOGON_SUBMIT_TYPE;
+STRUCT!{struct KERB_INTERACTIVE_LOGON {
+ MessageType: KERB_LOGON_SUBMIT_TYPE,
+ LogonDomainName: ::UNICODE_STRING,
+ UserName: ::UNICODE_STRING,
+ Password: ::UNICODE_STRING,
+}}
+pub type PKERB_INTERACTIVE_LOGON = *mut KERB_INTERACTIVE_LOGON;
+STRUCT!{struct KERB_INTERACTIVE_UNLOCK_LOGON {
+ Logon: KERB_INTERACTIVE_LOGON,
+ LogonId: ::LUID,
+}}
+pub type PKERB_INTERACTIVE_UNLOCK_LOGON = *mut KERB_INTERACTIVE_UNLOCK_LOGON;
+STRUCT!{struct KERB_SMART_CARD_LOGON {
+ MessageType: KERB_LOGON_SUBMIT_TYPE,
+ Pin: ::UNICODE_STRING,
+ CspDataLength: ::ULONG,
+ CspData: ::PUCHAR,
+}}
+pub type PKERB_SMART_CARD_LOGON = *mut KERB_SMART_CARD_LOGON;
+STRUCT!{struct KERB_SMART_CARD_UNLOCK_LOGON {
+ Logon: KERB_SMART_CARD_LOGON,
+ LogonId: ::LUID,
+}}
+pub type PKERB_SMART_CARD_UNLOCK_LOGON = *mut KERB_SMART_CARD_UNLOCK_LOGON;
+pub const KERB_CERTIFICATE_LOGON_FLAG_CHECK_DUPLICATES: ::ULONG = 0x1;
+pub const KERB_CERTIFICATE_LOGON_FLAG_USE_CERTIFICATE_INFO: ::ULONG = 0x2;
+STRUCT!{struct KERB_CERTIFICATE_LOGON {
+ MessageType: KERB_LOGON_SUBMIT_TYPE,
+ DomainName: ::UNICODE_STRING,
+ UserName: ::UNICODE_STRING,
+ Pin: ::UNICODE_STRING,
+ Flags: ::ULONG,
+ CspDataLength: ::ULONG,
+ CspData: ::PUCHAR,
+}}
+pub type PKERB_CERTIFICATE_LOGON = *mut KERB_CERTIFICATE_LOGON;
+STRUCT!{struct KERB_CERTIFICATE_UNLOCK_LOGON {
+ Logon: KERB_CERTIFICATE_LOGON,
+ LogonId: ::LUID,
+}}
+pub type PKERB_CERTIFICATE_UNLOCK_LOGON = *mut KERB_CERTIFICATE_UNLOCK_LOGON;
+pub const KERB_CERTIFICATE_S4U_LOGON_FLAG_CHECK_DUPLICATES: ::ULONG = 0x1;
+pub const KERB_CERTIFICATE_S4U_LOGON_FLAG_CHECK_LOGONHOURS: ::ULONG = 0x2;
+pub const KERB_CERTIFICATE_S4U_LOGON_FLAG_FAIL_IF_NT_AUTH_POLICY_REQUIRED: ::ULONG = 0x4;
+pub const KERB_CERTIFICATE_S4U_LOGON_FLAG_IDENTIFY: ::ULONG = 0x8;
+STRUCT!{struct KERB_CERTIFICATE_S4U_LOGON {
+ MessageType: KERB_LOGON_SUBMIT_TYPE,
+ Flags: ::ULONG,
+ UserPrincipalName: ::UNICODE_STRING,
+ DomainName: ::UNICODE_STRING,
+ CertificateLength: ::ULONG,
+ Certificate: ::PUCHAR,
+}}
+pub type PKERB_CERTIFICATE_S4U_LOGON = *mut KERB_CERTIFICATE_S4U_LOGON;
+STRUCT!{struct KERB_TICKET_LOGON {
+ MessageType: KERB_LOGON_SUBMIT_TYPE,
+ Flags: ::ULONG,
+ ServiceTicketLength: ::ULONG,
+ TicketGrantingTicketLength: ::ULONG,
+ ServiceTicket: ::PUCHAR,
+ TicketGrantingTicket: ::PUCHAR,
+}}
+pub type PKERB_TICKET_LOGON = *mut KERB_TICKET_LOGON;
+STRUCT!{struct KERB_TICKET_UNLOCK_LOGON {
+ Logon: KERB_TICKET_LOGON,
+ LogonId: ::LUID,
+}}
+pub type PKERB_TICKET_UNLOCK_LOGON = *mut KERB_TICKET_UNLOCK_LOGON;
+pub const KERB_S4U_LOGON_FLAG_CHECK_LOGONHOURS: ::ULONG = 0x2;
+pub const KERB_S4U_LOGON_FLAG_IDENTIFY: ::ULONG = 0x8;
+STRUCT!{struct KERB_S4U_LOGON {
+ MessageType: KERB_LOGON_SUBMIT_TYPE,
+ Flags: ::ULONG,
+ ClientUpn: ::UNICODE_STRING,
+ ClientRealm: ::UNICODE_STRING,
+}}
+pub type PKERB_S4U_LOGON = *mut KERB_S4U_LOGON;
+ENUM!{enum KERB_PROFILE_BUFFER_TYPE {
+ KerbInteractiveProfile = 2,
+ KerbSmartCardProfile = 4,
+ KerbTicketProfile = 6,
+}}
+pub type PKERB_PROFILE_BUFFER_TYPE = *mut KERB_PROFILE_BUFFER_TYPE;
+STRUCT!{struct KERB_INTERACTIVE_PROFILE {
+ MessageType: KERB_PROFILE_BUFFER_TYPE,
+ LogonCount: ::USHORT,
+ BadPasswordCount: ::USHORT,
+ LogonTime: ::LARGE_INTEGER,
+ LogoffTime: ::LARGE_INTEGER,
+ KickOffTime: ::LARGE_INTEGER,
+ PasswordLastSet: ::LARGE_INTEGER,
+ PasswordCanChange: ::LARGE_INTEGER,
+ PasswordMustChange: ::LARGE_INTEGER,
+ LogonScript: ::UNICODE_STRING,
+ HomeDirectory: ::UNICODE_STRING,
+ FullName: ::UNICODE_STRING,
+ ProfilePath: ::UNICODE_STRING,
+ HomeDirectoryDrive: ::UNICODE_STRING,
+ LogonServer: ::UNICODE_STRING,
+ UserFlags: ::ULONG,
+}}
+pub type PKERB_INTERACTIVE_PROFILE = *mut KERB_INTERACTIVE_PROFILE;
+STRUCT!{struct KERB_SMART_CARD_PROFILE {
+ Profile: KERB_INTERACTIVE_PROFILE,
+ CertificateSize: ::ULONG,
+ CertificateData: ::PUCHAR,
+}}
+pub type PKERB_SMART_CARD_PROFILE = *mut KERB_SMART_CARD_PROFILE;
+STRUCT!{struct KERB_CRYPTO_KEY {
+ KeyType: ::LONG,
+ Length: ::ULONG,
+ Value: ::PUCHAR,
+}}
+pub type PKERB_CRYPTO_KEY = *mut KERB_CRYPTO_KEY;
+STRUCT!{struct KERB_CRYPTO_KEY32 {
+ KeyType: ::LONG,
+ Length: ::ULONG,
+ Offset: ::ULONG,
+}}
+pub type PKERB_CRYPTO_KEY32 = *mut KERB_CRYPTO_KEY32;
+STRUCT!{struct KERB_TICKET_PROFILE {
+ Profile: KERB_INTERACTIVE_PROFILE,
+ SessionKey: KERB_CRYPTO_KEY,
+}}
+pub type PKERB_TICKET_PROFILE = *mut KERB_TICKET_PROFILE;
+ENUM!{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,
+ KerbSubmitTicketMessage,
+ KerbAddExtraCredentialsExMessage,
+ KerbQueryKdcProxyCacheMessage,
+ KerbPurgeKdcProxyCacheMessage,
+ KerbQueryTicketCacheEx3Message,
+ KerbCleanupMachinePkinitCredsMessage,
+ KerbAddBindingCacheEntryExMessage,
+ KerbQueryBindingCacheMessage,
+ KerbPurgeBindingCacheMessage,
+ KerbPinKdcMessage,
+ KerbUnpinAllKdcsMessage,
+ KerbQueryDomainExtendedPoliciesMessage,
+ KerbQueryS4U2ProxyCacheMessage,
+}}
+pub type PKERB_PROTOCOL_MESSAGE_TYPE = *mut KERB_PROTOCOL_MESSAGE_TYPE;
+STRUCT!{struct KERB_QUERY_TKT_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+}}
+pub type PKERB_QUERY_TKT_CACHE_REQUEST = *mut KERB_QUERY_TKT_CACHE_REQUEST;
+STRUCT!{struct KERB_TICKET_CACHE_INFO {
+ ServerName: ::UNICODE_STRING,
+ RealmName: ::UNICODE_STRING,
+ StartTime: ::LARGE_INTEGER,
+ EndTime: ::LARGE_INTEGER,
+ RenewTime: ::LARGE_INTEGER,
+ EncryptionType: ::LONG,
+ TicketFlags: ::ULONG,
+}}
+pub type PKERB_TICKET_CACHE_INFO = *mut KERB_TICKET_CACHE_INFO;
+STRUCT!{struct KERB_TICKET_CACHE_INFO_EX {
+ ClientName: ::UNICODE_STRING,
+ ClientRealm: ::UNICODE_STRING,
+ ServerName: ::UNICODE_STRING,
+ ServerRealm: ::UNICODE_STRING,
+ StartTime: ::LARGE_INTEGER,
+ EndTime: ::LARGE_INTEGER,
+ RenewTime: ::LARGE_INTEGER,
+ EncryptionType: ::LONG,
+ TicketFlags: ::ULONG,
+}}
+pub type PKERB_TICKET_CACHE_INFO_EX = *mut KERB_TICKET_CACHE_INFO_EX;
+STRUCT!{struct KERB_TICKET_CACHE_INFO_EX2 {
+ ClientName: ::UNICODE_STRING,
+ ClientRealm: ::UNICODE_STRING,
+ ServerName: ::UNICODE_STRING,
+ ServerRealm: ::UNICODE_STRING,
+ StartTime: ::LARGE_INTEGER,
+ EndTime: ::LARGE_INTEGER,
+ RenewTime: ::LARGE_INTEGER,
+ EncryptionType: ::LONG,
+ TicketFlags: ::ULONG,
+ SessionKeyType: ::ULONG,
+ BranchId: ::ULONG,
+}}
+pub type PKERB_TICKET_CACHE_INFO_EX2 = *mut KERB_TICKET_CACHE_INFO_EX2;
+STRUCT!{struct KERB_TICKET_CACHE_INFO_EX3 {
+ ClientName: ::UNICODE_STRING,
+ ClientRealm: ::UNICODE_STRING,
+ ServerName: ::UNICODE_STRING,
+ ServerRealm: ::UNICODE_STRING,
+ StartTime: ::LARGE_INTEGER,
+ EndTime: ::LARGE_INTEGER,
+ RenewTime: ::LARGE_INTEGER,
+ EncryptionType: ::LONG,
+ TicketFlags: ::ULONG,
+ SessionKeyType: ::ULONG,
+ BranchId: ::ULONG,
+ CacheFlags: ::ULONG,
+ KdcCalled: ::UNICODE_STRING,
+}}
+pub type PKERB_TICKET_CACHE_INFO_EX3 = *mut KERB_TICKET_CACHE_INFO_EX3;
+STRUCT!{struct KERB_QUERY_TKT_CACHE_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfTickets: ::ULONG,
+ Tickets: [KERB_TICKET_CACHE_INFO; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_QUERY_TKT_CACHE_RESPONSE = *mut KERB_QUERY_TKT_CACHE_RESPONSE;
+STRUCT!{struct KERB_QUERY_TKT_CACHE_EX_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfTickets: ::ULONG,
+ Tickets: [KERB_TICKET_CACHE_INFO_EX; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_QUERY_TKT_CACHE_EX_RESPONSE = *mut KERB_QUERY_TKT_CACHE_EX_RESPONSE;
+STRUCT!{struct KERB_QUERY_TKT_CACHE_EX2_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfTickets: ::ULONG,
+ Tickets: [KERB_TICKET_CACHE_INFO_EX2; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_QUERY_TKT_CACHE_EX2_RESPONSE = *mut KERB_QUERY_TKT_CACHE_EX2_RESPONSE;
+STRUCT!{struct KERB_QUERY_TKT_CACHE_EX3_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfTickets: ::ULONG,
+ Tickets: [KERB_TICKET_CACHE_INFO_EX3; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_QUERY_TKT_CACHE_EX3_RESPONSE = *mut KERB_QUERY_TKT_CACHE_EX3_RESPONSE;
+pub const KERB_USE_DEFAULT_TICKET_FLAGS: ::ULONG = 0x0;
+pub const KERB_RETRIEVE_TICKET_DEFAULT: ::ULONG = 0x0;
+pub const KERB_RETRIEVE_TICKET_DONT_USE_CACHE: ::ULONG = 0x1;
+pub const KERB_RETRIEVE_TICKET_USE_CACHE_ONLY: ::ULONG = 0x2;
+pub const KERB_RETRIEVE_TICKET_USE_CREDHANDLE: ::ULONG = 0x4;
+pub const KERB_RETRIEVE_TICKET_AS_KERB_CRED: ::ULONG = 0x8;
+pub const KERB_RETRIEVE_TICKET_WITH_SEC_CRED: ::ULONG = 0x10;
+pub const KERB_RETRIEVE_TICKET_CACHE_TICKET: ::ULONG = 0x20;
+pub const KERB_RETRIEVE_TICKET_MAX_LIFETIME: ::ULONG = 0x40;
+STRUCT!{struct KERB_AUTH_DATA {
+ Type: ::ULONG,
+ Length: ::ULONG,
+ Data: ::PUCHAR,
+}}
+pub type PKERB_AUTH_DATA = *mut KERB_AUTH_DATA;
+STRUCT!{struct KERB_NET_ADDRESS {
+ Family: ::ULONG,
+ Length: ::ULONG,
+ Address: ::PUCHAR,
+}}
+pub type PKERB_NET_ADDRESS = *mut KERB_NET_ADDRESS;
+STRUCT!{struct KERB_NET_ADDRESSES {
+ Number: ::ULONG,
+ Addresses: [KERB_NET_ADDRESS; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_NET_ADDRESSES = *mut KERB_NET_ADDRESSES;
+STRUCT!{struct KERB_EXTERNAL_NAME {
+ NameType: ::SHORT,
+ NameCount: ::USHORT,
+ Names: [::UNICODE_STRING; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_EXTERNAL_NAME = *mut KERB_EXTERNAL_NAME;
+STRUCT!{struct KERB_EXTERNAL_TICKET {
+ ServiceName: PKERB_EXTERNAL_NAME,
+ TargetName: PKERB_EXTERNAL_NAME,
+ ClientName: PKERB_EXTERNAL_NAME,
+ DomainName: ::UNICODE_STRING,
+ TargetDomainName: ::UNICODE_STRING,
+ AltTargetDomainName: ::UNICODE_STRING,
+ SessionKey: KERB_CRYPTO_KEY,
+ TicketFlags: ::ULONG,
+ Flags: ::ULONG,
+ KeyExpirationTime: ::LARGE_INTEGER,
+ StartTime: ::LARGE_INTEGER,
+ EndTime: ::LARGE_INTEGER,
+ RenewUntil: ::LARGE_INTEGER,
+ TimeSkew: ::LARGE_INTEGER,
+ EncodedTicketSize: ::ULONG,
+ EncodedTicket: ::PUCHAR,
+}}
+pub type PKERB_EXTERNAL_TICKET = *mut KERB_EXTERNAL_TICKET;
+STRUCT!{struct KERB_RETRIEVE_TKT_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ TargetName: ::UNICODE_STRING,
+ TicketFlags: ::ULONG,
+ CacheOptions: ::ULONG,
+ EncryptionType: ::LONG,
+ CredentialsHandle: ::SecHandle,
+}}
+pub type PKERB_RETRIEVE_TKT_REQUEST = *mut KERB_RETRIEVE_TKT_REQUEST;
+STRUCT!{struct KERB_RETRIEVE_TKT_RESPONSE {
+ Ticket: KERB_EXTERNAL_TICKET,
+}}
+pub type PKERB_RETRIEVE_TKT_RESPONSE = *mut KERB_RETRIEVE_TKT_RESPONSE;
+STRUCT!{struct KERB_PURGE_TKT_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ ServerName: ::UNICODE_STRING,
+ RealmName: ::UNICODE_STRING,
+}}
+pub type PKERB_PURGE_TKT_CACHE_REQUEST = *mut KERB_PURGE_TKT_CACHE_REQUEST;
+pub const KERB_PURGE_ALL_TICKETS: ::ULONG = 1;
+STRUCT!{struct KERB_PURGE_TKT_CACHE_EX_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ Flags: ::ULONG,
+ TicketTemplate: KERB_TICKET_CACHE_INFO_EX,
+}}
+pub type PKERB_PURGE_TKT_CACHE_EX_REQUEST = *mut KERB_PURGE_TKT_CACHE_EX_REQUEST;
+STRUCT!{struct KERB_SUBMIT_TKT_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ Flags: ::ULONG,
+ Key: KERB_CRYPTO_KEY32,
+ KerbCredSize: ::ULONG,
+ KerbCredOffset: ::ULONG,
+}}
+pub type PKERB_SUBMIT_TKT_REQUEST = *mut KERB_SUBMIT_TKT_REQUEST;
+STRUCT!{struct KERB_QUERY_KDC_PROXY_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ Flags: ::ULONG,
+ LogonId: ::LUID,
+}}
+pub type PKERB_QUERY_KDC_PROXY_CACHE_REQUEST = *mut KERB_QUERY_KDC_PROXY_CACHE_REQUEST;
+STRUCT!{struct KDC_PROXY_CACHE_ENTRY_DATA {
+ SinceLastUsed: ::ULONG64,
+ DomainName: ::UNICODE_STRING,
+ ProxyServerName: ::UNICODE_STRING,
+ ProxyServerVdir: ::UNICODE_STRING,
+ ProxyServerPort: ::USHORT,
+ LogonId: ::LUID,
+ CredUserName: ::UNICODE_STRING,
+ CredDomainName: ::UNICODE_STRING,
+ GlobalCache: ::BOOLEAN,
+}}
+pub type PKDC_PROXY_CACHE_ENTRY_DATA = *mut KDC_PROXY_CACHE_ENTRY_DATA;
+STRUCT!{struct KERB_QUERY_KDC_PROXY_CACHE_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfEntries: ::ULONG,
+ Entries: PKDC_PROXY_CACHE_ENTRY_DATA,
+}}
+pub type PKERB_QUERY_KDC_PROXY_CACHE_RESPONSE = *mut KERB_QUERY_KDC_PROXY_CACHE_RESPONSE;
+STRUCT!{struct KERB_PURGE_KDC_PROXY_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ Flags: ::ULONG,
+ LogonId: ::LUID,
+}}
+pub type PKERB_PURGE_KDC_PROXY_CACHE_REQUEST = *mut KERB_PURGE_KDC_PROXY_CACHE_REQUEST;
+STRUCT!{struct KERB_PURGE_KDC_PROXY_CACHE_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfPurged: ::ULONG,
+}}
+pub type PKERB_PURGE_KDC_PROXY_CACHE_RESPONSE = *mut KERB_PURGE_KDC_PROXY_CACHE_RESPONSE;
+pub const KERB_S4U2PROXY_CACHE_ENTRY_INFO_FLAG_NEGATIVE: ::ULONG = 0x1;
+STRUCT!{struct KERB_S4U2PROXY_CACHE_ENTRY_INFO {
+ ServerName: ::UNICODE_STRING,
+ Flags: ::ULONG,
+ LastStatus: ::NTSTATUS,
+ Expiry: ::LARGE_INTEGER,
+}}
+pub type PKERB_S4U2PROXY_CACHE_ENTRY_INFO = *mut KERB_S4U2PROXY_CACHE_ENTRY_INFO;
+pub const KERB_S4U2PROXY_CRED_FLAG_NEGATIVE: ::ULONG = 0x1;
+STRUCT!{struct KERB_S4U2PROXY_CRED {
+ UserName: ::UNICODE_STRING,
+ DomainName: ::UNICODE_STRING,
+ Flags: ::ULONG,
+ LastStatus: ::NTSTATUS,
+ Expiry: ::LARGE_INTEGER,
+ CountOfEntries: ::ULONG,
+ Entries: PKERB_S4U2PROXY_CACHE_ENTRY_INFO,
+}}
+pub type PKERB_S4U2PROXY_CRED = *mut KERB_S4U2PROXY_CRED;
+STRUCT!{struct KERB_QUERY_S4U2PROXY_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ Flags: ::ULONG,
+ LogonId: ::LUID,
+}}
+pub type PKERB_QUERY_S4U2PROXY_CACHE_REQUEST = *mut KERB_QUERY_S4U2PROXY_CACHE_REQUEST;
+STRUCT!{struct KERB_QUERY_S4U2PROXY_CACHE_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfCreds: ::ULONG,
+ Creds: PKERB_S4U2PROXY_CRED,
+}}
+pub type PKERB_QUERY_S4U2PROXY_CACHE_RESPONSE = *mut KERB_QUERY_S4U2PROXY_CACHE_RESPONSE;
+STRUCT!{struct KERB_CHANGEPASSWORD_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ DomainName: ::UNICODE_STRING,
+ AccountName: ::UNICODE_STRING,
+ OldPassword: ::UNICODE_STRING,
+ NewPassword: ::UNICODE_STRING,
+ Impersonating: ::BOOLEAN,
+}}
+pub type PKERB_CHANGEPASSWORD_REQUEST = *mut KERB_CHANGEPASSWORD_REQUEST;
+STRUCT!{struct KERB_SETPASSWORD_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ CredentialsHandle: ::SecHandle,
+ Flags: ::ULONG,
+ DomainName: ::UNICODE_STRING,
+ AccountName: ::UNICODE_STRING,
+ Password: ::UNICODE_STRING,
+}}
+pub type PKERB_SETPASSWORD_REQUEST = *mut KERB_SETPASSWORD_REQUEST;
+STRUCT!{struct KERB_SETPASSWORD_EX_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ CredentialsHandle: ::SecHandle,
+ Flags: ::ULONG,
+ AccountRealm: ::UNICODE_STRING,
+ AccountName: ::UNICODE_STRING,
+ Password: ::UNICODE_STRING,
+ ClientRealm: ::UNICODE_STRING,
+ ClientName: ::UNICODE_STRING,
+ Impersonating: ::BOOLEAN,
+ KdcAddress: ::UNICODE_STRING,
+ KdcAddressType: ::ULONG,
+}}
+pub type PKERB_SETPASSWORD_EX_REQUEST = *mut KERB_SETPASSWORD_EX_REQUEST;
+pub const DS_UNKNOWN_ADDRESS_TYPE: ::ULONG = 0;
+pub const KERB_SETPASS_USE_LOGONID: ::ULONG = 1;
+pub const KERB_SETPASS_USE_CREDHANDLE: ::ULONG = 2;
+STRUCT!{struct KERB_DECRYPT_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+ Flags: ::ULONG,
+ CryptoType: ::LONG,
+ KeyUsage: ::LONG,
+ Key: KERB_CRYPTO_KEY,
+ EncryptedDataSize: ::ULONG,
+ InitialVectorSize: ::ULONG,
+ InitialVector: ::PUCHAR,
+ EncryptedData: ::PUCHAR,
+}}
+pub type PKERB_DECRYPT_REQUEST = *mut KERB_DECRYPT_REQUEST;
+pub const KERB_DECRYPT_FLAG_DEFAULT_KEY: ::ULONG = 0x00000001;
+STRUCT!{struct KERB_DECRYPT_RESPONSE {
+ DecryptedData: [::UCHAR; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_DECRYPT_RESPONSE = *mut KERB_DECRYPT_RESPONSE;
+STRUCT!{struct KERB_ADD_BINDING_CACHE_ENTRY_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ RealmName: ::UNICODE_STRING,
+ KdcAddress: ::UNICODE_STRING,
+ AddressType: ::ULONG,
+}}
+pub type PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST = *mut KERB_ADD_BINDING_CACHE_ENTRY_REQUEST;
+STRUCT!{struct KERB_REFRESH_SCCRED_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CredentialBlob: ::UNICODE_STRING,
+ LogonId: ::LUID,
+ Flags: ::ULONG,
+}}
+pub type PKERB_REFRESH_SCCRED_REQUEST = *mut KERB_REFRESH_SCCRED_REQUEST;
+pub const KERB_REFRESH_SCCRED_RELEASE: ::ULONG = 0x0;
+pub const KERB_REFRESH_SCCRED_GETTGT: ::ULONG = 0x1;
+STRUCT!{struct KERB_ADD_CREDENTIALS_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ UserName: ::UNICODE_STRING,
+ DomainName: ::UNICODE_STRING,
+ Password: ::UNICODE_STRING,
+ LogonId: ::LUID,
+ Flags: ::ULONG,
+}}
+pub type PKERB_ADD_CREDENTIALS_REQUEST = *mut KERB_ADD_CREDENTIALS_REQUEST;
+pub const KERB_REQUEST_ADD_CREDENTIAL: ::ULONG = 1;
+pub const KERB_REQUEST_REPLACE_CREDENTIAL: ::ULONG = 2;
+pub const KERB_REQUEST_REMOVE_CREDENTIAL: ::ULONG = 4;
+STRUCT!{struct KERB_ADD_CREDENTIALS_REQUEST_EX {
+ Credentials: KERB_ADD_CREDENTIALS_REQUEST,
+ PrincipalNameCount: ::ULONG,
+ PrincipalNames: [::UNICODE_STRING; ::ANYSIZE_ARRAY],
+}}
+pub type PKERB_ADD_CREDENTIALS_REQUEST_EX = *mut KERB_ADD_CREDENTIALS_REQUEST_EX;
+STRUCT!{struct KERB_TRANSFER_CRED_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ OriginLogonId: ::LUID,
+ DestinationLogonId: ::LUID,
+ Flags: ::ULONG,
+}}
+pub type PKERB_TRANSFER_CRED_REQUEST = *mut KERB_TRANSFER_CRED_REQUEST;
+pub const KERB_TRANSFER_CRED_WITH_TICKETS: ::ULONG = 0x1;
+pub const KERB_TRANSFER_CRED_CLEANUP_CREDENTIALS: ::ULONG = 0x2;
+STRUCT!{struct KERB_CLEANUP_MACHINE_PKINIT_CREDS_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ LogonId: ::LUID,
+}}
+pub type PKERB_CLEANUP_MACHINE_PKINIT_CREDS_REQUEST =
+ *mut KERB_CLEANUP_MACHINE_PKINIT_CREDS_REQUEST;
+STRUCT!{struct KERB_BINDING_CACHE_ENTRY_DATA {
+ DiscoveryTime: ::ULONG64,
+ RealmName: ::UNICODE_STRING,
+ KdcAddress: ::UNICODE_STRING,
+ AddressType: ::ULONG,
+ Flags: ::ULONG,
+ DcFlags: ::ULONG,
+ CacheFlags: ::ULONG,
+ KdcName: ::UNICODE_STRING,
+}}
+pub type PKERB_BINDING_CACHE_ENTRY_DATA = *mut KERB_BINDING_CACHE_ENTRY_DATA;
+STRUCT!{struct KERB_QUERY_BINDING_CACHE_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ CountOfEntries: ::ULONG,
+ Entries: PKERB_BINDING_CACHE_ENTRY_DATA,
+}}
+pub type PKERB_QUERY_BINDING_CACHE_RESPONSE = *mut KERB_QUERY_BINDING_CACHE_RESPONSE;
+STRUCT!{struct KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ RealmName: ::UNICODE_STRING,
+ KdcAddress: ::UNICODE_STRING,
+ AddressType: ::ULONG,
+ DcFlags: ::ULONG,
+}}
+pub type PKERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST = *mut KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST;
+STRUCT!{struct KERB_QUERY_BINDING_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+}}
+pub type PKERB_QUERY_BINDING_CACHE_REQUEST = *mut KERB_QUERY_BINDING_CACHE_REQUEST;
+STRUCT!{struct KERB_PURGE_BINDING_CACHE_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+}}
+pub type PKERB_PURGE_BINDING_CACHE_REQUEST = *mut KERB_PURGE_BINDING_CACHE_REQUEST;
+STRUCT!{struct KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ Flags: ::ULONG,
+ DomainName: ::UNICODE_STRING,
+}}
+pub type PKERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST =
+ *mut KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST;
+STRUCT!{struct KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE {
+ MessageType: KERB_PROTOCOL_MESSAGE_TYPE,
+ Flags: ::ULONG,
+ ExtendedPolicies: ::ULONG,
+ DsFlags: ::ULONG,
+}}
+pub type PKERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE =
+ *mut KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE;
+ENUM!{enum KERB_CERTIFICATE_INFO_TYPE {
+ CertHashInfo = 1,
+}}
+pub type PKERB_CERTIFICATE_INFO_TYPE = *mut KERB_CERTIFICATE_INFO_TYPE;
+STRUCT!{struct KERB_CERTIFICATE_HASHINFO {
+ StoreNameLength: ::USHORT,
+ HashLength: ::USHORT,
+}}
+pub type PKERB_CERTIFICATE_HASHINFO = *mut KERB_CERTIFICATE_HASHINFO;
+STRUCT!{struct KERB_CERTIFICATE_INFO {
+ CertInfoSize: ::ULONG,
+ InfoType: ::ULONG,
+}}
+pub type PKERB_CERTIFICATE_INFO = *mut KERB_CERTIFICATE_INFO;
+STRUCT!{struct POLICY_AUDIT_SID_ARRAY {
+ UsersCount: ::ULONG,
+ UserSidArray: *mut ::PSID,
+}}
+pub type PPOLICY_AUDIT_SID_ARRAY = *mut POLICY_AUDIT_SID_ARRAY;
+STRUCT!{struct AUDIT_POLICY_INFORMATION {
+ AuditSubCategoryGuid: ::GUID,
+ AuditingInformation: ::ULONG,
+ AuditCategoryGuid: ::GUID,
+}}
+pub type PAUDIT_POLICY_INFORMATION = *mut AUDIT_POLICY_INFORMATION;
+pub type LPAUDIT_POLICY_INFORMATION = PAUDIT_POLICY_INFORMATION;
+pub type PCAUDIT_POLICY_INFORMATION = *const AUDIT_POLICY_INFORMATION;
+pub const AUDIT_SET_SYSTEM_POLICY: ::ULONG = 0x0001;
+pub const AUDIT_QUERY_SYSTEM_POLICY: ::ULONG = 0x0002;
+pub const AUDIT_SET_USER_POLICY: ::ULONG = 0x0004;
+pub const AUDIT_QUERY_USER_POLICY: ::ULONG = 0x0008;
+pub const AUDIT_ENUMERATE_USERS: ::ULONG = 0x0010;
+pub const AUDIT_SET_MISC_POLICY: ::ULONG = 0x0020;
+pub const AUDIT_QUERY_MISC_POLICY: ::ULONG = 0x0040;
+pub const AUDIT_GENERIC_ALL: ::ULONG = ::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;
+pub const AUDIT_GENERIC_READ: ::ULONG = ::STANDARD_RIGHTS_READ | AUDIT_QUERY_SYSTEM_POLICY
+ | AUDIT_QUERY_USER_POLICY | AUDIT_ENUMERATE_USERS | AUDIT_QUERY_MISC_POLICY;
+pub const AUDIT_GENERIC_WRITE: ::ULONG = ::STANDARD_RIGHTS_WRITE | AUDIT_SET_USER_POLICY
+ | AUDIT_SET_MISC_POLICY | AUDIT_SET_SYSTEM_POLICY;
+pub const AUDIT_GENERIC_EXECUTE: ::ULONG = ::STANDARD_RIGHTS_EXECUTE;
+STRUCT!{struct PKU2U_CERT_BLOB {
+ CertOffset: ::ULONG,
+ CertLength: ::USHORT,
+}}
+pub type PPKU2U_CERT_BLOB = *mut PKU2U_CERT_BLOB;
+pub const PKU2U_CREDUI_CONTEXT_VERSION: ::ULONG64 = 0x4154414454524543;
+STRUCT!{struct PKU2U_CREDUI_CONTEXT {
+ Version: ::ULONG64,
+ cbHeaderLength: ::USHORT,
+ cbStructureLength: ::ULONG,
+ CertArrayCount: ::USHORT,
+ CertArrayOffset: ::ULONG,
+}}
+pub type PPKU2U_CREDUI_CONTEXT = *mut PKU2U_CREDUI_CONTEXT;
+ENUM!{enum PKU2U_LOGON_SUBMIT_TYPE {
+ Pku2uCertificateS4ULogon = 14,
+}}
+pub type PPKU2U_LOGON_SUBMIT_TYPE = *mut PKU2U_LOGON_SUBMIT_TYPE;
+STRUCT!{struct PKU2U_CERTIFICATE_S4U_LOGON {
+ MessageType: PKU2U_LOGON_SUBMIT_TYPE,
+ Flags: ::ULONG,
+ UserPrincipalName: ::UNICODE_STRING,
+ DomainName: ::UNICODE_STRING,
+ CertificateLength: ::ULONG,
+ Certificate: ::PUCHAR,
+}}
+pub type PPKU2U_CERTIFICATE_S4U_LOGON = *mut PKU2U_CERTIFICATE_S4U_LOGON;
diff --git a/third_party/rust/winapi-0.2.8/src/ntstatus.rs b/third_party/rust/winapi-0.2.8/src/ntstatus.rs
new file mode 100644
index 0000000000..4662235585
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ntstatus.rs
@@ -0,0 +1,2474 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Constant definitions for the NTSTATUS values.
+pub const STATUS_WAIT_0: ::NTSTATUS = 0x00000000;
+pub const FACILITY_VSM: ::NTSTATUS = 0x45;
+pub const FACILITY_VOLSNAP: ::NTSTATUS = 0x50;
+pub const FACILITY_VOLMGR: ::NTSTATUS = 0x38;
+pub const FACILITY_VIRTUALIZATION: ::NTSTATUS = 0x37;
+pub const FACILITY_VIDEO: ::NTSTATUS = 0x1B;
+pub const FACILITY_USB_ERROR_CODE: ::NTSTATUS = 0x10;
+pub const FACILITY_TRANSACTION: ::NTSTATUS = 0x19;
+pub const FACILITY_TPM: ::NTSTATUS = 0x29;
+pub const FACILITY_TERMINAL_SERVER: ::NTSTATUS = 0xA;
+pub const FACILITY_SXS_ERROR_CODE: ::NTSTATUS = 0x15;
+pub const FACILITY_NTSSPI: ::NTSTATUS = 0x9;
+pub const FACILITY_SPACES: ::NTSTATUS = 0xE7;
+pub const FACILITY_SMB: ::NTSTATUS = 0x5D;
+pub const FACILITY_SYSTEM_INTEGRITY: ::NTSTATUS = 0xE9;
+pub const FACILITY_SHARED_VHDX: ::NTSTATUS = 0x5C;
+pub const FACILITY_SECUREBOOT: ::NTSTATUS = 0x43;
+pub const FACILITY_SECURITY_CORE: ::NTSTATUS = 0xE8;
+pub const FACILITY_SDBUS: ::NTSTATUS = 0x51;
+pub const FACILITY_RTPM: ::NTSTATUS = 0x2A;
+pub const FACILITY_RPC_STUBS: ::NTSTATUS = 0x3;
+pub const FACILITY_RPC_RUNTIME: ::NTSTATUS = 0x2;
+pub const FACILITY_RESUME_KEY_FILTER: ::NTSTATUS = 0x40;
+pub const FACILITY_RDBSS: ::NTSTATUS = 0x41;
+pub const FACILITY_NTWIN32: ::NTSTATUS = 0x7;
+pub const FACILITY_WIN32K_NTUSER: ::NTSTATUS = 0x3E;
+pub const FACILITY_WIN32K_NTGDI: ::NTSTATUS = 0x3F;
+pub const FACILITY_NDIS_ERROR_CODE: ::NTSTATUS = 0x23;
+pub const FACILTIY_MUI_ERROR_CODE: ::NTSTATUS = 0xB;
+pub const FACILITY_MONITOR: ::NTSTATUS = 0x1D;
+pub const FACILITY_MAXIMUM_VALUE: ::NTSTATUS = 0xEB;
+pub const FACILITY_LICENSING: ::NTSTATUS = 0xEA;
+pub const FACILITY_IPSEC: ::NTSTATUS = 0x36;
+pub const FACILITY_IO_ERROR_CODE: ::NTSTATUS = 0x4;
+pub const FACILITY_INTERIX: ::NTSTATUS = 0x99;
+pub const FACILITY_HYPERVISOR: ::NTSTATUS = 0x35;
+pub const FACILITY_HID_ERROR_CODE: ::NTSTATUS = 0x11;
+pub const FACILITY_GRAPHICS_KERNEL: ::NTSTATUS = 0x1E;
+pub const FACILITY_FWP_ERROR_CODE: ::NTSTATUS = 0x22;
+pub const FACILITY_FVE_ERROR_CODE: ::NTSTATUS = 0x21;
+pub const FACILITY_FIREWIRE_ERROR_CODE: ::NTSTATUS = 0x12;
+pub const FACILITY_FILTER_MANAGER: ::NTSTATUS = 0x1C;
+pub const FACILITY_DRIVER_FRAMEWORK: ::NTSTATUS = 0x20;
+pub const FACILITY_DEBUGGER: ::NTSTATUS = 0x1;
+pub const FACILITY_COMMONLOG: ::NTSTATUS = 0x1A;
+pub const FACILITY_CODCLASS_ERROR_CODE: ::NTSTATUS = 0x6;
+pub const FACILITY_CLUSTER_ERROR_CODE: ::NTSTATUS = 0x13;
+pub const FACILITY_NTCERT: ::NTSTATUS = 0x8;
+pub const FACILITY_BTH_ATT: ::NTSTATUS = 0x42;
+pub const FACILITY_BCD_ERROR_CODE: ::NTSTATUS = 0x39;
+pub const FACILITY_AUDIO_KERNEL: ::NTSTATUS = 0x44;
+pub const FACILITY_ACPI_ERROR_CODE: ::NTSTATUS = 0x14;
+pub const STATUS_SEVERITY_WARNING: ::NTSTATUS = 0x2;
+pub const STATUS_SEVERITY_SUCCESS: ::NTSTATUS = 0x0;
+pub const STATUS_SEVERITY_INFORMATIONAL: ::NTSTATUS = 0x1;
+pub const STATUS_SEVERITY_ERROR: ::NTSTATUS = 0x3;
+pub const STATUS_SUCCESS: ::NTSTATUS = 0x00000000;
+pub const STATUS_WAIT_1: ::NTSTATUS = 0x00000001;
+pub const STATUS_WAIT_2: ::NTSTATUS = 0x00000002;
+pub const STATUS_WAIT_3: ::NTSTATUS = 0x00000003;
+pub const STATUS_WAIT_63: ::NTSTATUS = 0x0000003F;
+pub const STATUS_ABANDONED: ::NTSTATUS = 0x00000080;
+pub const STATUS_ABANDONED_WAIT_0: ::NTSTATUS = 0x00000080;
+pub const STATUS_ABANDONED_WAIT_63: ::NTSTATUS = 0x000000BF;
+pub const STATUS_USER_APC: ::NTSTATUS = 0x000000C0;
+pub const STATUS_KERNEL_APC: ::NTSTATUS = 0x00000100;
+pub const STATUS_ALERTED: ::NTSTATUS = 0x00000101;
+pub const STATUS_TIMEOUT: ::NTSTATUS = 0x00000102;
+pub const STATUS_PENDING: ::NTSTATUS = 0x00000103;
+pub const STATUS_REPARSE: ::NTSTATUS = 0x00000104;
+pub const STATUS_MORE_ENTRIES: ::NTSTATUS = 0x00000105;
+pub const STATUS_NOT_ALL_ASSIGNED: ::NTSTATUS = 0x00000106;
+pub const STATUS_SOME_NOT_MAPPED: ::NTSTATUS = 0x00000107;
+pub const STATUS_OPLOCK_BREAK_IN_PROGRESS: ::NTSTATUS = 0x00000108;
+pub const STATUS_VOLUME_MOUNTED: ::NTSTATUS = 0x00000109;
+pub const STATUS_RXACT_COMMITTED: ::NTSTATUS = 0x0000010A;
+pub const STATUS_NOTIFY_CLEANUP: ::NTSTATUS = 0x0000010B;
+pub const STATUS_NOTIFY_ENUM_DIR: ::NTSTATUS = 0x0000010C;
+pub const STATUS_NO_QUOTAS_FOR_ACCOUNT: ::NTSTATUS = 0x0000010D;
+pub const STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED: ::NTSTATUS = 0x0000010E;
+pub const STATUS_PAGE_FAULT_TRANSITION: ::NTSTATUS = 0x00000110;
+pub const STATUS_PAGE_FAULT_DEMAND_ZERO: ::NTSTATUS = 0x00000111;
+pub const STATUS_PAGE_FAULT_COPY_ON_WRITE: ::NTSTATUS = 0x00000112;
+pub const STATUS_PAGE_FAULT_GUARD_PAGE: ::NTSTATUS = 0x00000113;
+pub const STATUS_PAGE_FAULT_PAGING_FILE: ::NTSTATUS = 0x00000114;
+pub const STATUS_CACHE_PAGE_LOCKED: ::NTSTATUS = 0x00000115;
+pub const STATUS_CRASH_DUMP: ::NTSTATUS = 0x00000116;
+pub const STATUS_BUFFER_ALL_ZEROS: ::NTSTATUS = 0x00000117;
+pub const STATUS_REPARSE_OBJECT: ::NTSTATUS = 0x00000118;
+pub const STATUS_RESOURCE_REQUIREMENTS_CHANGED: ::NTSTATUS = 0x00000119;
+pub const STATUS_TRANSLATION_COMPLETE: ::NTSTATUS = 0x00000120;
+pub const STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY: ::NTSTATUS = 0x00000121;
+pub const STATUS_NOTHING_TO_TERMINATE: ::NTSTATUS = 0x00000122;
+pub const STATUS_PROCESS_NOT_IN_JOB: ::NTSTATUS = 0x00000123;
+pub const STATUS_PROCESS_IN_JOB: ::NTSTATUS = 0x00000124;
+pub const STATUS_VOLSNAP_HIBERNATE_READY: ::NTSTATUS = 0x00000125;
+pub const STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY: ::NTSTATUS = 0x00000126;
+pub const STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED: ::NTSTATUS = 0x00000127;
+pub const STATUS_INTERRUPT_STILL_CONNECTED: ::NTSTATUS = 0x00000128;
+pub const STATUS_PROCESS_CLONED: ::NTSTATUS = 0x00000129;
+pub const STATUS_FILE_LOCKED_WITH_ONLY_READERS: ::NTSTATUS = 0x0000012A;
+pub const STATUS_FILE_LOCKED_WITH_WRITERS: ::NTSTATUS = 0x0000012B;
+pub const STATUS_VALID_IMAGE_HASH: ::NTSTATUS = 0x0000012C;
+pub const STATUS_VALID_CATALOG_HASH: ::NTSTATUS = 0x0000012D;
+pub const STATUS_VALID_STRONG_CODE_HASH: ::NTSTATUS = 0x0000012E;
+pub const STATUS_RESOURCEMANAGER_READ_ONLY: ::NTSTATUS = 0x00000202;
+pub const STATUS_RING_PREVIOUSLY_EMPTY: ::NTSTATUS = 0x00000210;
+pub const STATUS_RING_PREVIOUSLY_FULL: ::NTSTATUS = 0x00000211;
+pub const STATUS_RING_PREVIOUSLY_ABOVE_QUOTA: ::NTSTATUS = 0x00000212;
+pub const STATUS_RING_NEWLY_EMPTY: ::NTSTATUS = 0x00000213;
+pub const STATUS_RING_SIGNAL_OPPOSITE_ENDPOINT: ::NTSTATUS = 0x00000214;
+pub const STATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE: ::NTSTATUS = 0x00000215;
+pub const STATUS_OPLOCK_HANDLE_CLOSED: ::NTSTATUS = 0x00000216;
+pub const STATUS_WAIT_FOR_OPLOCK: ::NTSTATUS = 0x00000367;
+pub const DBG_EXCEPTION_HANDLED: ::NTSTATUS = 0x00010001;
+pub const DBG_CONTINUE: ::NTSTATUS = 0x00010002;
+pub const STATUS_FLT_IO_COMPLETE: ::NTSTATUS = 0x001C0001;
+pub const STATUS_OBJECT_NAME_EXISTS: ::NTSTATUS = 0x40000000;
+pub const STATUS_THREAD_WAS_SUSPENDED: ::NTSTATUS = 0x40000001;
+pub const STATUS_WORKING_SET_LIMIT_RANGE: ::NTSTATUS = 0x40000002;
+pub const STATUS_IMAGE_NOT_AT_BASE: ::NTSTATUS = 0x40000003;
+pub const STATUS_RXACT_STATE_CREATED: ::NTSTATUS = 0x40000004;
+pub const STATUS_SEGMENT_NOTIFICATION: ::NTSTATUS = 0x40000005;
+pub const STATUS_LOCAL_USER_SESSION_KEY: ::NTSTATUS = 0x40000006;
+pub const STATUS_BAD_CURRENT_DIRECTORY: ::NTSTATUS = 0x40000007;
+pub const STATUS_SERIAL_MORE_WRITES: ::NTSTATUS = 0x40000008;
+pub const STATUS_REGISTRY_RECOVERED: ::NTSTATUS = 0x40000009;
+pub const STATUS_FT_READ_RECOVERY_FROM_BACKUP: ::NTSTATUS = 0x4000000A;
+pub const STATUS_FT_WRITE_RECOVERY: ::NTSTATUS = 0x4000000B;
+pub const STATUS_SERIAL_COUNTER_TIMEOUT: ::NTSTATUS = 0x4000000C;
+pub const STATUS_NULL_LM_PASSWORD: ::NTSTATUS = 0x4000000D;
+pub const STATUS_IMAGE_MACHINE_TYPE_MISMATCH: ::NTSTATUS = 0x4000000E;
+pub const STATUS_RECEIVE_PARTIAL: ::NTSTATUS = 0x4000000F;
+pub const STATUS_RECEIVE_EXPEDITED: ::NTSTATUS = 0x40000010;
+pub const STATUS_RECEIVE_PARTIAL_EXPEDITED: ::NTSTATUS = 0x40000011;
+pub const STATUS_EVENT_DONE: ::NTSTATUS = 0x40000012;
+pub const STATUS_EVENT_PENDING: ::NTSTATUS = 0x40000013;
+pub const STATUS_CHECKING_FILE_SYSTEM: ::NTSTATUS = 0x40000014;
+pub const STATUS_FATAL_APP_EXIT: ::NTSTATUS = 0x40000015;
+pub const STATUS_PREDEFINED_HANDLE: ::NTSTATUS = 0x40000016;
+pub const STATUS_WAS_UNLOCKED: ::NTSTATUS = 0x40000017;
+pub const STATUS_SERVICE_NOTIFICATION: ::NTSTATUS = 0x40000018;
+pub const STATUS_WAS_LOCKED: ::NTSTATUS = 0x40000019;
+pub const STATUS_LOG_HARD_ERROR: ::NTSTATUS = 0x4000001A;
+pub const STATUS_ALREADY_WIN32: ::NTSTATUS = 0x4000001B;
+pub const STATUS_WX86_UNSIMULATE: ::NTSTATUS = 0x4000001C;
+pub const STATUS_WX86_CONTINUE: ::NTSTATUS = 0x4000001D;
+pub const STATUS_WX86_SINGLE_STEP: ::NTSTATUS = 0x4000001E;
+pub const STATUS_WX86_BREAKPOINT: ::NTSTATUS = 0x4000001F;
+pub const STATUS_WX86_EXCEPTION_CONTINUE: ::NTSTATUS = 0x40000020;
+pub const STATUS_WX86_EXCEPTION_LASTCHANCE: ::NTSTATUS = 0x40000021;
+pub const STATUS_WX86_EXCEPTION_CHAIN: ::NTSTATUS = 0x40000022;
+pub const STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE: ::NTSTATUS = 0x40000023;
+pub const STATUS_NO_YIELD_PERFORMED: ::NTSTATUS = 0x40000024;
+pub const STATUS_TIMER_RESUME_IGNORED: ::NTSTATUS = 0x40000025;
+pub const STATUS_ARBITRATION_UNHANDLED: ::NTSTATUS = 0x40000026;
+pub const STATUS_CARDBUS_NOT_SUPPORTED: ::NTSTATUS = 0x40000027;
+pub const STATUS_WX86_CREATEWX86TIB: ::NTSTATUS = 0x40000028;
+pub const STATUS_MP_PROCESSOR_MISMATCH: ::NTSTATUS = 0x40000029;
+pub const STATUS_HIBERNATED: ::NTSTATUS = 0x4000002A;
+pub const STATUS_RESUME_HIBERNATION: ::NTSTATUS = 0x4000002B;
+pub const STATUS_FIRMWARE_UPDATED: ::NTSTATUS = 0x4000002C;
+pub const STATUS_DRIVERS_LEAKING_LOCKED_PAGES: ::NTSTATUS = 0x4000002D;
+pub const STATUS_MESSAGE_RETRIEVED: ::NTSTATUS = 0x4000002E;
+pub const STATUS_SYSTEM_POWERSTATE_TRANSITION: ::NTSTATUS = 0x4000002F;
+pub const STATUS_ALPC_CHECK_COMPLETION_LIST: ::NTSTATUS = 0x40000030;
+pub const STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION: ::NTSTATUS = 0x40000031;
+pub const STATUS_ACCESS_AUDIT_BY_POLICY: ::NTSTATUS = 0x40000032;
+pub const STATUS_ABANDON_HIBERFILE: ::NTSTATUS = 0x40000033;
+pub const STATUS_BIZRULES_NOT_ENABLED: ::NTSTATUS = 0x40000034;
+pub const STATUS_FT_READ_FROM_COPY: ::NTSTATUS = 0x40000035;
+pub const STATUS_IMAGE_AT_DIFFERENT_BASE: ::NTSTATUS = 0x40000036;
+pub const DBG_REPLY_LATER: ::NTSTATUS = 0x40010001;
+pub const DBG_UNABLE_TO_PROVIDE_HANDLE: ::NTSTATUS = 0x40010002;
+pub const DBG_TERMINATE_THREAD: ::NTSTATUS = 0x40010003;
+pub const DBG_TERMINATE_PROCESS: ::NTSTATUS = 0x40010004;
+pub const DBG_CONTROL_C: ::NTSTATUS = 0x40010005;
+pub const DBG_PRINTEXCEPTION_C: ::NTSTATUS = 0x40010006;
+pub const DBG_RIPEXCEPTION: ::NTSTATUS = 0x40010007;
+pub const DBG_CONTROL_BREAK: ::NTSTATUS = 0x40010008;
+pub const DBG_COMMAND_EXCEPTION: ::NTSTATUS = 0x40010009;
+pub const DBG_PRINTEXCEPTION_WIDE_C: ::NTSTATUS = 0x4001000A;
+pub const STATUS_HEURISTIC_DAMAGE_POSSIBLE: ::NTSTATUS = 0x40190001;
+pub const STATUS_GUARD_PAGE_VIOLATION: ::NTSTATUS = 0x80000001u32 as i32;
+pub const STATUS_DATATYPE_MISALIGNMENT: ::NTSTATUS = 0x80000002u32 as i32;
+pub const STATUS_BREAKPOINT: ::NTSTATUS = 0x80000003u32 as i32;
+pub const STATUS_SINGLE_STEP: ::NTSTATUS = 0x80000004u32 as i32;
+pub const STATUS_BUFFER_OVERFLOW: ::NTSTATUS = 0x80000005u32 as i32;
+pub const STATUS_NO_MORE_FILES: ::NTSTATUS = 0x80000006u32 as i32;
+pub const STATUS_WAKE_SYSTEM_DEBUGGER: ::NTSTATUS = 0x80000007u32 as i32;
+pub const STATUS_HANDLES_CLOSED: ::NTSTATUS = 0x8000000Au32 as i32;
+pub const STATUS_NO_INHERITANCE: ::NTSTATUS = 0x8000000Bu32 as i32;
+pub const STATUS_GUID_SUBSTITUTION_MADE: ::NTSTATUS = 0x8000000Cu32 as i32;
+pub const STATUS_PARTIAL_COPY: ::NTSTATUS = 0x8000000Du32 as i32;
+pub const STATUS_DEVICE_PAPER_EMPTY: ::NTSTATUS = 0x8000000Eu32 as i32;
+pub const STATUS_DEVICE_POWERED_OFF: ::NTSTATUS = 0x8000000Fu32 as i32;
+pub const STATUS_DEVICE_OFF_LINE: ::NTSTATUS = 0x80000010u32 as i32;
+pub const STATUS_DEVICE_BUSY: ::NTSTATUS = 0x80000011u32 as i32;
+pub const STATUS_NO_MORE_EAS: ::NTSTATUS = 0x80000012u32 as i32;
+pub const STATUS_INVALID_EA_NAME: ::NTSTATUS = 0x80000013u32 as i32;
+pub const STATUS_EA_LIST_INCONSISTENT: ::NTSTATUS = 0x80000014u32 as i32;
+pub const STATUS_INVALID_EA_FLAG: ::NTSTATUS = 0x80000015u32 as i32;
+pub const STATUS_VERIFY_REQUIRED: ::NTSTATUS = 0x80000016u32 as i32;
+pub const STATUS_EXTRANEOUS_INFORMATION: ::NTSTATUS = 0x80000017u32 as i32;
+pub const STATUS_RXACT_COMMIT_NECESSARY: ::NTSTATUS = 0x80000018u32 as i32;
+pub const STATUS_NO_MORE_ENTRIES: ::NTSTATUS = 0x8000001Au32 as i32;
+pub const STATUS_FILEMARK_DETECTED: ::NTSTATUS = 0x8000001Bu32 as i32;
+pub const STATUS_MEDIA_CHANGED: ::NTSTATUS = 0x8000001Cu32 as i32;
+pub const STATUS_BUS_RESET: ::NTSTATUS = 0x8000001Du32 as i32;
+pub const STATUS_END_OF_MEDIA: ::NTSTATUS = 0x8000001Eu32 as i32;
+pub const STATUS_BEGINNING_OF_MEDIA: ::NTSTATUS = 0x8000001Fu32 as i32;
+pub const STATUS_MEDIA_CHECK: ::NTSTATUS = 0x80000020u32 as i32;
+pub const STATUS_SETMARK_DETECTED: ::NTSTATUS = 0x80000021u32 as i32;
+pub const STATUS_NO_DATA_DETECTED: ::NTSTATUS = 0x80000022u32 as i32;
+pub const STATUS_REDIRECTOR_HAS_OPEN_HANDLES: ::NTSTATUS = 0x80000023u32 as i32;
+pub const STATUS_SERVER_HAS_OPEN_HANDLES: ::NTSTATUS = 0x80000024u32 as i32;
+pub const STATUS_ALREADY_DISCONNECTED: ::NTSTATUS = 0x80000025u32 as i32;
+pub const STATUS_LONGJUMP: ::NTSTATUS = 0x80000026u32 as i32;
+pub const STATUS_CLEANER_CARTRIDGE_INSTALLED: ::NTSTATUS = 0x80000027u32 as i32;
+pub const STATUS_PLUGPLAY_QUERY_VETOED: ::NTSTATUS = 0x80000028u32 as i32;
+pub const STATUS_UNWIND_CONSOLIDATE: ::NTSTATUS = 0x80000029u32 as i32;
+pub const STATUS_REGISTRY_HIVE_RECOVERED: ::NTSTATUS = 0x8000002Au32 as i32;
+pub const STATUS_DLL_MIGHT_BE_INSECURE: ::NTSTATUS = 0x8000002Bu32 as i32;
+pub const STATUS_DLL_MIGHT_BE_INCOMPATIBLE: ::NTSTATUS = 0x8000002Cu32 as i32;
+pub const STATUS_STOPPED_ON_SYMLINK: ::NTSTATUS = 0x8000002Du32 as i32;
+pub const STATUS_CANNOT_GRANT_REQUESTED_OPLOCK: ::NTSTATUS = 0x8000002Eu32 as i32;
+pub const STATUS_NO_ACE_CONDITION: ::NTSTATUS = 0x8000002Fu32 as i32;
+pub const STATUS_DEVICE_SUPPORT_IN_PROGRESS: ::NTSTATUS = 0x80000030u32 as i32;
+pub const STATUS_DEVICE_POWER_CYCLE_REQUIRED: ::NTSTATUS = 0x80000031u32 as i32;
+pub const DBG_EXCEPTION_NOT_HANDLED: ::NTSTATUS = 0x80010001u32 as i32;
+pub const STATUS_CLUSTER_NODE_ALREADY_UP: ::NTSTATUS = 0x80130001u32 as i32;
+pub const STATUS_CLUSTER_NODE_ALREADY_DOWN: ::NTSTATUS = 0x80130002u32 as i32;
+pub const STATUS_CLUSTER_NETWORK_ALREADY_ONLINE: ::NTSTATUS = 0x80130003u32 as i32;
+pub const STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE: ::NTSTATUS = 0x80130004u32 as i32;
+pub const STATUS_CLUSTER_NODE_ALREADY_MEMBER: ::NTSTATUS = 0x80130005u32 as i32;
+pub const STATUS_FLT_BUFFER_TOO_SMALL: ::NTSTATUS = 0x801C0001u32 as i32;
+pub const STATUS_FVE_PARTIAL_METADATA: ::NTSTATUS = 0x80210001u32 as i32;
+pub const STATUS_FVE_TRANSIENT_STATE: ::NTSTATUS = 0x80210002u32 as i32;
+pub const STATUS_UNSUCCESSFUL: ::NTSTATUS = 0xC0000001u32 as i32;
+pub const STATUS_NOT_IMPLEMENTED: ::NTSTATUS = 0xC0000002u32 as i32;
+pub const STATUS_INVALID_INFO_CLASS: ::NTSTATUS = 0xC0000003u32 as i32;
+pub const STATUS_INFO_LENGTH_MISMATCH: ::NTSTATUS = 0xC0000004u32 as i32;
+pub const STATUS_ACCESS_VIOLATION: ::NTSTATUS = 0xC0000005u32 as i32;
+pub const STATUS_IN_PAGE_ERROR: ::NTSTATUS = 0xC0000006u32 as i32;
+pub const STATUS_PAGEFILE_QUOTA: ::NTSTATUS = 0xC0000007u32 as i32;
+pub const STATUS_INVALID_HANDLE: ::NTSTATUS = 0xC0000008u32 as i32;
+pub const STATUS_BAD_INITIAL_STACK: ::NTSTATUS = 0xC0000009u32 as i32;
+pub const STATUS_BAD_INITIAL_PC: ::NTSTATUS = 0xC000000Au32 as i32;
+pub const STATUS_INVALID_CID: ::NTSTATUS = 0xC000000Bu32 as i32;
+pub const STATUS_TIMER_NOT_CANCELED: ::NTSTATUS = 0xC000000Cu32 as i32;
+pub const STATUS_INVALID_PARAMETER: ::NTSTATUS = 0xC000000Du32 as i32;
+pub const STATUS_NO_SUCH_DEVICE: ::NTSTATUS = 0xC000000Eu32 as i32;
+pub const STATUS_NO_SUCH_FILE: ::NTSTATUS = 0xC000000Fu32 as i32;
+pub const STATUS_INVALID_DEVICE_REQUEST: ::NTSTATUS = 0xC0000010u32 as i32;
+pub const STATUS_END_OF_FILE: ::NTSTATUS = 0xC0000011u32 as i32;
+pub const STATUS_WRONG_VOLUME: ::NTSTATUS = 0xC0000012u32 as i32;
+pub const STATUS_NO_MEDIA_IN_DEVICE: ::NTSTATUS = 0xC0000013u32 as i32;
+pub const STATUS_UNRECOGNIZED_MEDIA: ::NTSTATUS = 0xC0000014u32 as i32;
+pub const STATUS_NONEXISTENT_SECTOR: ::NTSTATUS = 0xC0000015u32 as i32;
+pub const STATUS_MORE_PROCESSING_REQUIRED: ::NTSTATUS = 0xC0000016u32 as i32;
+pub const STATUS_NO_MEMORY: ::NTSTATUS = 0xC0000017u32 as i32;
+pub const STATUS_CONFLICTING_ADDRESSES: ::NTSTATUS = 0xC0000018u32 as i32;
+pub const STATUS_NOT_MAPPED_VIEW: ::NTSTATUS = 0xC0000019u32 as i32;
+pub const STATUS_UNABLE_TO_FREE_VM: ::NTSTATUS = 0xC000001Au32 as i32;
+pub const STATUS_UNABLE_TO_DELETE_SECTION: ::NTSTATUS = 0xC000001Bu32 as i32;
+pub const STATUS_INVALID_SYSTEM_SERVICE: ::NTSTATUS = 0xC000001Cu32 as i32;
+pub const STATUS_ILLEGAL_INSTRUCTION: ::NTSTATUS = 0xC000001Du32 as i32;
+pub const STATUS_INVALID_LOCK_SEQUENCE: ::NTSTATUS = 0xC000001Eu32 as i32;
+pub const STATUS_INVALID_VIEW_SIZE: ::NTSTATUS = 0xC000001Fu32 as i32;
+pub const STATUS_INVALID_FILE_FOR_SECTION: ::NTSTATUS = 0xC0000020u32 as i32;
+pub const STATUS_ALREADY_COMMITTED: ::NTSTATUS = 0xC0000021u32 as i32;
+pub const STATUS_ACCESS_DENIED: ::NTSTATUS = 0xC0000022u32 as i32;
+pub const STATUS_BUFFER_TOO_SMALL: ::NTSTATUS = 0xC0000023u32 as i32;
+pub const STATUS_OBJECT_TYPE_MISMATCH: ::NTSTATUS = 0xC0000024u32 as i32;
+pub const STATUS_NONCONTINUABLE_EXCEPTION: ::NTSTATUS = 0xC0000025u32 as i32;
+pub const STATUS_INVALID_DISPOSITION: ::NTSTATUS = 0xC0000026u32 as i32;
+pub const STATUS_UNWIND: ::NTSTATUS = 0xC0000027u32 as i32;
+pub const STATUS_BAD_STACK: ::NTSTATUS = 0xC0000028u32 as i32;
+pub const STATUS_INVALID_UNWIND_TARGET: ::NTSTATUS = 0xC0000029u32 as i32;
+pub const STATUS_NOT_LOCKED: ::NTSTATUS = 0xC000002Au32 as i32;
+pub const STATUS_PARITY_ERROR: ::NTSTATUS = 0xC000002Bu32 as i32;
+pub const STATUS_UNABLE_TO_DECOMMIT_VM: ::NTSTATUS = 0xC000002Cu32 as i32;
+pub const STATUS_NOT_COMMITTED: ::NTSTATUS = 0xC000002Du32 as i32;
+pub const STATUS_INVALID_PORT_ATTRIBUTES: ::NTSTATUS = 0xC000002Eu32 as i32;
+pub const STATUS_PORT_MESSAGE_TOO_LONG: ::NTSTATUS = 0xC000002Fu32 as i32;
+pub const STATUS_INVALID_PARAMETER_MIX: ::NTSTATUS = 0xC0000030u32 as i32;
+pub const STATUS_INVALID_QUOTA_LOWER: ::NTSTATUS = 0xC0000031u32 as i32;
+pub const STATUS_DISK_CORRUPT_ERROR: ::NTSTATUS = 0xC0000032u32 as i32;
+pub const STATUS_OBJECT_NAME_INVALID: ::NTSTATUS = 0xC0000033u32 as i32;
+pub const STATUS_OBJECT_NAME_NOT_FOUND: ::NTSTATUS = 0xC0000034u32 as i32;
+pub const STATUS_OBJECT_NAME_COLLISION: ::NTSTATUS = 0xC0000035u32 as i32;
+pub const STATUS_PORT_DO_NOT_DISTURB: ::NTSTATUS = 0xC0000036u32 as i32;
+pub const STATUS_PORT_DISCONNECTED: ::NTSTATUS = 0xC0000037u32 as i32;
+pub const STATUS_DEVICE_ALREADY_ATTACHED: ::NTSTATUS = 0xC0000038u32 as i32;
+pub const STATUS_OBJECT_PATH_INVALID: ::NTSTATUS = 0xC0000039u32 as i32;
+pub const STATUS_OBJECT_PATH_NOT_FOUND: ::NTSTATUS = 0xC000003Au32 as i32;
+pub const STATUS_OBJECT_PATH_SYNTAX_BAD: ::NTSTATUS = 0xC000003Bu32 as i32;
+pub const STATUS_DATA_OVERRUN: ::NTSTATUS = 0xC000003Cu32 as i32;
+pub const STATUS_DATA_LATE_ERROR: ::NTSTATUS = 0xC000003Du32 as i32;
+pub const STATUS_DATA_ERROR: ::NTSTATUS = 0xC000003Eu32 as i32;
+pub const STATUS_CRC_ERROR: ::NTSTATUS = 0xC000003Fu32 as i32;
+pub const STATUS_SECTION_TOO_BIG: ::NTSTATUS = 0xC0000040u32 as i32;
+pub const STATUS_PORT_CONNECTION_REFUSED: ::NTSTATUS = 0xC0000041u32 as i32;
+pub const STATUS_INVALID_PORT_HANDLE: ::NTSTATUS = 0xC0000042u32 as i32;
+pub const STATUS_SHARING_VIOLATION: ::NTSTATUS = 0xC0000043u32 as i32;
+pub const STATUS_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000044u32 as i32;
+pub const STATUS_INVALID_PAGE_PROTECTION: ::NTSTATUS = 0xC0000045u32 as i32;
+pub const STATUS_MUTANT_NOT_OWNED: ::NTSTATUS = 0xC0000046u32 as i32;
+pub const STATUS_SEMAPHORE_LIMIT_EXCEEDED: ::NTSTATUS = 0xC0000047u32 as i32;
+pub const STATUS_PORT_ALREADY_SET: ::NTSTATUS = 0xC0000048u32 as i32;
+pub const STATUS_SECTION_NOT_IMAGE: ::NTSTATUS = 0xC0000049u32 as i32;
+pub const STATUS_SUSPEND_COUNT_EXCEEDED: ::NTSTATUS = 0xC000004Au32 as i32;
+pub const STATUS_THREAD_IS_TERMINATING: ::NTSTATUS = 0xC000004Bu32 as i32;
+pub const STATUS_BAD_WORKING_SET_LIMIT: ::NTSTATUS = 0xC000004Cu32 as i32;
+pub const STATUS_INCOMPATIBLE_FILE_MAP: ::NTSTATUS = 0xC000004Du32 as i32;
+pub const STATUS_SECTION_PROTECTION: ::NTSTATUS = 0xC000004Eu32 as i32;
+pub const STATUS_EAS_NOT_SUPPORTED: ::NTSTATUS = 0xC000004Fu32 as i32;
+pub const STATUS_EA_TOO_LARGE: ::NTSTATUS = 0xC0000050u32 as i32;
+pub const STATUS_NONEXISTENT_EA_ENTRY: ::NTSTATUS = 0xC0000051u32 as i32;
+pub const STATUS_NO_EAS_ON_FILE: ::NTSTATUS = 0xC0000052u32 as i32;
+pub const STATUS_EA_CORRUPT_ERROR: ::NTSTATUS = 0xC0000053u32 as i32;
+pub const STATUS_FILE_LOCK_CONFLICT: ::NTSTATUS = 0xC0000054u32 as i32;
+pub const STATUS_LOCK_NOT_GRANTED: ::NTSTATUS = 0xC0000055u32 as i32;
+pub const STATUS_DELETE_PENDING: ::NTSTATUS = 0xC0000056u32 as i32;
+pub const STATUS_CTL_FILE_NOT_SUPPORTED: ::NTSTATUS = 0xC0000057u32 as i32;
+pub const STATUS_UNKNOWN_REVISION: ::NTSTATUS = 0xC0000058u32 as i32;
+pub const STATUS_REVISION_MISMATCH: ::NTSTATUS = 0xC0000059u32 as i32;
+pub const STATUS_INVALID_OWNER: ::NTSTATUS = 0xC000005Au32 as i32;
+pub const STATUS_INVALID_PRIMARY_GROUP: ::NTSTATUS = 0xC000005Bu32 as i32;
+pub const STATUS_NO_IMPERSONATION_TOKEN: ::NTSTATUS = 0xC000005Cu32 as i32;
+pub const STATUS_CANT_DISABLE_MANDATORY: ::NTSTATUS = 0xC000005Du32 as i32;
+pub const STATUS_NO_LOGON_SERVERS: ::NTSTATUS = 0xC000005Eu32 as i32;
+pub const STATUS_NO_SUCH_LOGON_SESSION: ::NTSTATUS = 0xC000005Fu32 as i32;
+pub const STATUS_NO_SUCH_PRIVILEGE: ::NTSTATUS = 0xC0000060u32 as i32;
+pub const STATUS_PRIVILEGE_NOT_HELD: ::NTSTATUS = 0xC0000061u32 as i32;
+pub const STATUS_INVALID_ACCOUNT_NAME: ::NTSTATUS = 0xC0000062u32 as i32;
+pub const STATUS_USER_EXISTS: ::NTSTATUS = 0xC0000063u32 as i32;
+pub const STATUS_NO_SUCH_USER: ::NTSTATUS = 0xC0000064u32 as i32;
+pub const STATUS_GROUP_EXISTS: ::NTSTATUS = 0xC0000065u32 as i32;
+pub const STATUS_NO_SUCH_GROUP: ::NTSTATUS = 0xC0000066u32 as i32;
+pub const STATUS_MEMBER_IN_GROUP: ::NTSTATUS = 0xC0000067u32 as i32;
+pub const STATUS_MEMBER_NOT_IN_GROUP: ::NTSTATUS = 0xC0000068u32 as i32;
+pub const STATUS_LAST_ADMIN: ::NTSTATUS = 0xC0000069u32 as i32;
+pub const STATUS_WRONG_PASSWORD: ::NTSTATUS = 0xC000006Au32 as i32;
+pub const STATUS_ILL_FORMED_PASSWORD: ::NTSTATUS = 0xC000006Bu32 as i32;
+pub const STATUS_PASSWORD_RESTRICTION: ::NTSTATUS = 0xC000006Cu32 as i32;
+pub const STATUS_LOGON_FAILURE: ::NTSTATUS = 0xC000006Du32 as i32;
+pub const STATUS_ACCOUNT_RESTRICTION: ::NTSTATUS = 0xC000006Eu32 as i32;
+pub const STATUS_INVALID_LOGON_HOURS: ::NTSTATUS = 0xC000006Fu32 as i32;
+pub const STATUS_INVALID_WORKSTATION: ::NTSTATUS = 0xC0000070u32 as i32;
+pub const STATUS_PASSWORD_EXPIRED: ::NTSTATUS = 0xC0000071u32 as i32;
+pub const STATUS_ACCOUNT_DISABLED: ::NTSTATUS = 0xC0000072u32 as i32;
+pub const STATUS_NONE_MAPPED: ::NTSTATUS = 0xC0000073u32 as i32;
+pub const STATUS_TOO_MANY_LUIDS_REQUESTED: ::NTSTATUS = 0xC0000074u32 as i32;
+pub const STATUS_LUIDS_EXHAUSTED: ::NTSTATUS = 0xC0000075u32 as i32;
+pub const STATUS_INVALID_SUB_AUTHORITY: ::NTSTATUS = 0xC0000076u32 as i32;
+pub const STATUS_INVALID_ACL: ::NTSTATUS = 0xC0000077u32 as i32;
+pub const STATUS_INVALID_SID: ::NTSTATUS = 0xC0000078u32 as i32;
+pub const STATUS_INVALID_SECURITY_DESCR: ::NTSTATUS = 0xC0000079u32 as i32;
+pub const STATUS_PROCEDURE_NOT_FOUND: ::NTSTATUS = 0xC000007Au32 as i32;
+pub const STATUS_INVALID_IMAGE_FORMAT: ::NTSTATUS = 0xC000007Bu32 as i32;
+pub const STATUS_NO_TOKEN: ::NTSTATUS = 0xC000007Cu32 as i32;
+pub const STATUS_BAD_INHERITANCE_ACL: ::NTSTATUS = 0xC000007Du32 as i32;
+pub const STATUS_RANGE_NOT_LOCKED: ::NTSTATUS = 0xC000007Eu32 as i32;
+pub const STATUS_DISK_FULL: ::NTSTATUS = 0xC000007Fu32 as i32;
+pub const STATUS_SERVER_DISABLED: ::NTSTATUS = 0xC0000080u32 as i32;
+pub const STATUS_SERVER_NOT_DISABLED: ::NTSTATUS = 0xC0000081u32 as i32;
+pub const STATUS_TOO_MANY_GUIDS_REQUESTED: ::NTSTATUS = 0xC0000082u32 as i32;
+pub const STATUS_GUIDS_EXHAUSTED: ::NTSTATUS = 0xC0000083u32 as i32;
+pub const STATUS_INVALID_ID_AUTHORITY: ::NTSTATUS = 0xC0000084u32 as i32;
+pub const STATUS_AGENTS_EXHAUSTED: ::NTSTATUS = 0xC0000085u32 as i32;
+pub const STATUS_INVALID_VOLUME_LABEL: ::NTSTATUS = 0xC0000086u32 as i32;
+pub const STATUS_SECTION_NOT_EXTENDED: ::NTSTATUS = 0xC0000087u32 as i32;
+pub const STATUS_NOT_MAPPED_DATA: ::NTSTATUS = 0xC0000088u32 as i32;
+pub const STATUS_RESOURCE_DATA_NOT_FOUND: ::NTSTATUS = 0xC0000089u32 as i32;
+pub const STATUS_RESOURCE_TYPE_NOT_FOUND: ::NTSTATUS = 0xC000008Au32 as i32;
+pub const STATUS_RESOURCE_NAME_NOT_FOUND: ::NTSTATUS = 0xC000008Bu32 as i32;
+pub const STATUS_ARRAY_BOUNDS_EXCEEDED: ::NTSTATUS = 0xC000008Cu32 as i32;
+pub const STATUS_FLOAT_DENORMAL_OPERAND: ::NTSTATUS = 0xC000008Du32 as i32;
+pub const STATUS_FLOAT_DIVIDE_BY_ZERO: ::NTSTATUS = 0xC000008Eu32 as i32;
+pub const STATUS_FLOAT_INEXACT_RESULT: ::NTSTATUS = 0xC000008Fu32 as i32;
+pub const STATUS_FLOAT_INVALID_OPERATION: ::NTSTATUS = 0xC0000090u32 as i32;
+pub const STATUS_FLOAT_OVERFLOW: ::NTSTATUS = 0xC0000091u32 as i32;
+pub const STATUS_FLOAT_STACK_CHECK: ::NTSTATUS = 0xC0000092u32 as i32;
+pub const STATUS_FLOAT_UNDERFLOW: ::NTSTATUS = 0xC0000093u32 as i32;
+pub const STATUS_INTEGER_DIVIDE_BY_ZERO: ::NTSTATUS = 0xC0000094u32 as i32;
+pub const STATUS_INTEGER_OVERFLOW: ::NTSTATUS = 0xC0000095u32 as i32;
+pub const STATUS_PRIVILEGED_INSTRUCTION: ::NTSTATUS = 0xC0000096u32 as i32;
+pub const STATUS_TOO_MANY_PAGING_FILES: ::NTSTATUS = 0xC0000097u32 as i32;
+pub const STATUS_FILE_INVALID: ::NTSTATUS = 0xC0000098u32 as i32;
+pub const STATUS_ALLOTTED_SPACE_EXCEEDED: ::NTSTATUS = 0xC0000099u32 as i32;
+pub const STATUS_INSUFFICIENT_RESOURCES: ::NTSTATUS = 0xC000009Au32 as i32;
+pub const STATUS_DFS_EXIT_PATH_FOUND: ::NTSTATUS = 0xC000009Bu32 as i32;
+pub const STATUS_DEVICE_DATA_ERROR: ::NTSTATUS = 0xC000009Cu32 as i32;
+pub const STATUS_DEVICE_NOT_CONNECTED: ::NTSTATUS = 0xC000009Du32 as i32;
+pub const STATUS_DEVICE_POWER_FAILURE: ::NTSTATUS = 0xC000009Eu32 as i32;
+pub const STATUS_FREE_VM_NOT_AT_BASE: ::NTSTATUS = 0xC000009Fu32 as i32;
+pub const STATUS_MEMORY_NOT_ALLOCATED: ::NTSTATUS = 0xC00000A0u32 as i32;
+pub const STATUS_WORKING_SET_QUOTA: ::NTSTATUS = 0xC00000A1u32 as i32;
+pub const STATUS_MEDIA_WRITE_PROTECTED: ::NTSTATUS = 0xC00000A2u32 as i32;
+pub const STATUS_DEVICE_NOT_READY: ::NTSTATUS = 0xC00000A3u32 as i32;
+pub const STATUS_INVALID_GROUP_ATTRIBUTES: ::NTSTATUS = 0xC00000A4u32 as i32;
+pub const STATUS_BAD_IMPERSONATION_LEVEL: ::NTSTATUS = 0xC00000A5u32 as i32;
+pub const STATUS_CANT_OPEN_ANONYMOUS: ::NTSTATUS = 0xC00000A6u32 as i32;
+pub const STATUS_BAD_VALIDATION_CLASS: ::NTSTATUS = 0xC00000A7u32 as i32;
+pub const STATUS_BAD_TOKEN_TYPE: ::NTSTATUS = 0xC00000A8u32 as i32;
+pub const STATUS_BAD_MASTER_BOOT_RECORD: ::NTSTATUS = 0xC00000A9u32 as i32;
+pub const STATUS_INSTRUCTION_MISALIGNMENT: ::NTSTATUS = 0xC00000AAu32 as i32;
+pub const STATUS_INSTANCE_NOT_AVAILABLE: ::NTSTATUS = 0xC00000ABu32 as i32;
+pub const STATUS_PIPE_NOT_AVAILABLE: ::NTSTATUS = 0xC00000ACu32 as i32;
+pub const STATUS_INVALID_PIPE_STATE: ::NTSTATUS = 0xC00000ADu32 as i32;
+pub const STATUS_PIPE_BUSY: ::NTSTATUS = 0xC00000AEu32 as i32;
+pub const STATUS_ILLEGAL_FUNCTION: ::NTSTATUS = 0xC00000AFu32 as i32;
+pub const STATUS_PIPE_DISCONNECTED: ::NTSTATUS = 0xC00000B0u32 as i32;
+pub const STATUS_PIPE_CLOSING: ::NTSTATUS = 0xC00000B1u32 as i32;
+pub const STATUS_PIPE_CONNECTED: ::NTSTATUS = 0xC00000B2u32 as i32;
+pub const STATUS_PIPE_LISTENING: ::NTSTATUS = 0xC00000B3u32 as i32;
+pub const STATUS_INVALID_READ_MODE: ::NTSTATUS = 0xC00000B4u32 as i32;
+pub const STATUS_IO_TIMEOUT: ::NTSTATUS = 0xC00000B5u32 as i32;
+pub const STATUS_FILE_FORCED_CLOSED: ::NTSTATUS = 0xC00000B6u32 as i32;
+pub const STATUS_PROFILING_NOT_STARTED: ::NTSTATUS = 0xC00000B7u32 as i32;
+pub const STATUS_PROFILING_NOT_STOPPED: ::NTSTATUS = 0xC00000B8u32 as i32;
+pub const STATUS_COULD_NOT_INTERPRET: ::NTSTATUS = 0xC00000B9u32 as i32;
+pub const STATUS_FILE_IS_A_DIRECTORY: ::NTSTATUS = 0xC00000BAu32 as i32;
+pub const STATUS_NOT_SUPPORTED: ::NTSTATUS = 0xC00000BBu32 as i32;
+pub const STATUS_REMOTE_NOT_LISTENING: ::NTSTATUS = 0xC00000BCu32 as i32;
+pub const STATUS_DUPLICATE_NAME: ::NTSTATUS = 0xC00000BDu32 as i32;
+pub const STATUS_BAD_NETWORK_PATH: ::NTSTATUS = 0xC00000BEu32 as i32;
+pub const STATUS_NETWORK_BUSY: ::NTSTATUS = 0xC00000BFu32 as i32;
+pub const STATUS_DEVICE_DOES_NOT_EXIST: ::NTSTATUS = 0xC00000C0u32 as i32;
+pub const STATUS_TOO_MANY_COMMANDS: ::NTSTATUS = 0xC00000C1u32 as i32;
+pub const STATUS_ADAPTER_HARDWARE_ERROR: ::NTSTATUS = 0xC00000C2u32 as i32;
+pub const STATUS_INVALID_NETWORK_RESPONSE: ::NTSTATUS = 0xC00000C3u32 as i32;
+pub const STATUS_UNEXPECTED_NETWORK_ERROR: ::NTSTATUS = 0xC00000C4u32 as i32;
+pub const STATUS_BAD_REMOTE_ADAPTER: ::NTSTATUS = 0xC00000C5u32 as i32;
+pub const STATUS_PRINT_QUEUE_FULL: ::NTSTATUS = 0xC00000C6u32 as i32;
+pub const STATUS_NO_SPOOL_SPACE: ::NTSTATUS = 0xC00000C7u32 as i32;
+pub const STATUS_PRINT_CANCELLED: ::NTSTATUS = 0xC00000C8u32 as i32;
+pub const STATUS_NETWORK_NAME_DELETED: ::NTSTATUS = 0xC00000C9u32 as i32;
+pub const STATUS_NETWORK_ACCESS_DENIED: ::NTSTATUS = 0xC00000CAu32 as i32;
+pub const STATUS_BAD_DEVICE_TYPE: ::NTSTATUS = 0xC00000CBu32 as i32;
+pub const STATUS_BAD_NETWORK_NAME: ::NTSTATUS = 0xC00000CCu32 as i32;
+pub const STATUS_TOO_MANY_NAMES: ::NTSTATUS = 0xC00000CDu32 as i32;
+pub const STATUS_TOO_MANY_SESSIONS: ::NTSTATUS = 0xC00000CEu32 as i32;
+pub const STATUS_SHARING_PAUSED: ::NTSTATUS = 0xC00000CFu32 as i32;
+pub const STATUS_REQUEST_NOT_ACCEPTED: ::NTSTATUS = 0xC00000D0u32 as i32;
+pub const STATUS_REDIRECTOR_PAUSED: ::NTSTATUS = 0xC00000D1u32 as i32;
+pub const STATUS_NET_WRITE_FAULT: ::NTSTATUS = 0xC00000D2u32 as i32;
+pub const STATUS_PROFILING_AT_LIMIT: ::NTSTATUS = 0xC00000D3u32 as i32;
+pub const STATUS_NOT_SAME_DEVICE: ::NTSTATUS = 0xC00000D4u32 as i32;
+pub const STATUS_FILE_RENAMED: ::NTSTATUS = 0xC00000D5u32 as i32;
+pub const STATUS_VIRTUAL_CIRCUIT_CLOSED: ::NTSTATUS = 0xC00000D6u32 as i32;
+pub const STATUS_NO_SECURITY_ON_OBJECT: ::NTSTATUS = 0xC00000D7u32 as i32;
+pub const STATUS_CANT_WAIT: ::NTSTATUS = 0xC00000D8u32 as i32;
+pub const STATUS_PIPE_EMPTY: ::NTSTATUS = 0xC00000D9u32 as i32;
+pub const STATUS_CANT_ACCESS_DOMAIN_INFO: ::NTSTATUS = 0xC00000DAu32 as i32;
+pub const STATUS_CANT_TERMINATE_SELF: ::NTSTATUS = 0xC00000DBu32 as i32;
+pub const STATUS_INVALID_SERVER_STATE: ::NTSTATUS = 0xC00000DCu32 as i32;
+pub const STATUS_INVALID_DOMAIN_STATE: ::NTSTATUS = 0xC00000DDu32 as i32;
+pub const STATUS_INVALID_DOMAIN_ROLE: ::NTSTATUS = 0xC00000DEu32 as i32;
+pub const STATUS_NO_SUCH_DOMAIN: ::NTSTATUS = 0xC00000DFu32 as i32;
+pub const STATUS_DOMAIN_EXISTS: ::NTSTATUS = 0xC00000E0u32 as i32;
+pub const STATUS_DOMAIN_LIMIT_EXCEEDED: ::NTSTATUS = 0xC00000E1u32 as i32;
+pub const STATUS_OPLOCK_NOT_GRANTED: ::NTSTATUS = 0xC00000E2u32 as i32;
+pub const STATUS_INVALID_OPLOCK_PROTOCOL: ::NTSTATUS = 0xC00000E3u32 as i32;
+pub const STATUS_INTERNAL_DB_CORRUPTION: ::NTSTATUS = 0xC00000E4u32 as i32;
+pub const STATUS_INTERNAL_ERROR: ::NTSTATUS = 0xC00000E5u32 as i32;
+pub const STATUS_GENERIC_NOT_MAPPED: ::NTSTATUS = 0xC00000E6u32 as i32;
+pub const STATUS_BAD_DESCRIPTOR_FORMAT: ::NTSTATUS = 0xC00000E7u32 as i32;
+pub const STATUS_INVALID_USER_BUFFER: ::NTSTATUS = 0xC00000E8u32 as i32;
+pub const STATUS_UNEXPECTED_IO_ERROR: ::NTSTATUS = 0xC00000E9u32 as i32;
+pub const STATUS_UNEXPECTED_MM_CREATE_ERR: ::NTSTATUS = 0xC00000EAu32 as i32;
+pub const STATUS_UNEXPECTED_MM_MAP_ERROR: ::NTSTATUS = 0xC00000EBu32 as i32;
+pub const STATUS_UNEXPECTED_MM_EXTEND_ERR: ::NTSTATUS = 0xC00000ECu32 as i32;
+pub const STATUS_NOT_LOGON_PROCESS: ::NTSTATUS = 0xC00000EDu32 as i32;
+pub const STATUS_LOGON_SESSION_EXISTS: ::NTSTATUS = 0xC00000EEu32 as i32;
+pub const STATUS_INVALID_PARAMETER_1: ::NTSTATUS = 0xC00000EFu32 as i32;
+pub const STATUS_INVALID_PARAMETER_2: ::NTSTATUS = 0xC00000F0u32 as i32;
+pub const STATUS_INVALID_PARAMETER_3: ::NTSTATUS = 0xC00000F1u32 as i32;
+pub const STATUS_INVALID_PARAMETER_4: ::NTSTATUS = 0xC00000F2u32 as i32;
+pub const STATUS_INVALID_PARAMETER_5: ::NTSTATUS = 0xC00000F3u32 as i32;
+pub const STATUS_INVALID_PARAMETER_6: ::NTSTATUS = 0xC00000F4u32 as i32;
+pub const STATUS_INVALID_PARAMETER_7: ::NTSTATUS = 0xC00000F5u32 as i32;
+pub const STATUS_INVALID_PARAMETER_8: ::NTSTATUS = 0xC00000F6u32 as i32;
+pub const STATUS_INVALID_PARAMETER_9: ::NTSTATUS = 0xC00000F7u32 as i32;
+pub const STATUS_INVALID_PARAMETER_10: ::NTSTATUS = 0xC00000F8u32 as i32;
+pub const STATUS_INVALID_PARAMETER_11: ::NTSTATUS = 0xC00000F9u32 as i32;
+pub const STATUS_INVALID_PARAMETER_12: ::NTSTATUS = 0xC00000FAu32 as i32;
+pub const STATUS_REDIRECTOR_NOT_STARTED: ::NTSTATUS = 0xC00000FBu32 as i32;
+pub const STATUS_REDIRECTOR_STARTED: ::NTSTATUS = 0xC00000FCu32 as i32;
+pub const STATUS_STACK_OVERFLOW: ::NTSTATUS = 0xC00000FDu32 as i32;
+pub const STATUS_NO_SUCH_PACKAGE: ::NTSTATUS = 0xC00000FEu32 as i32;
+pub const STATUS_BAD_FUNCTION_TABLE: ::NTSTATUS = 0xC00000FFu32 as i32;
+pub const STATUS_VARIABLE_NOT_FOUND: ::NTSTATUS = 0xC0000100u32 as i32;
+pub const STATUS_DIRECTORY_NOT_EMPTY: ::NTSTATUS = 0xC0000101u32 as i32;
+pub const STATUS_FILE_CORRUPT_ERROR: ::NTSTATUS = 0xC0000102u32 as i32;
+pub const STATUS_NOT_A_DIRECTORY: ::NTSTATUS = 0xC0000103u32 as i32;
+pub const STATUS_BAD_LOGON_SESSION_STATE: ::NTSTATUS = 0xC0000104u32 as i32;
+pub const STATUS_LOGON_SESSION_COLLISION: ::NTSTATUS = 0xC0000105u32 as i32;
+pub const STATUS_NAME_TOO_LONG: ::NTSTATUS = 0xC0000106u32 as i32;
+pub const STATUS_FILES_OPEN: ::NTSTATUS = 0xC0000107u32 as i32;
+pub const STATUS_CONNECTION_IN_USE: ::NTSTATUS = 0xC0000108u32 as i32;
+pub const STATUS_MESSAGE_NOT_FOUND: ::NTSTATUS = 0xC0000109u32 as i32;
+pub const STATUS_PROCESS_IS_TERMINATING: ::NTSTATUS = 0xC000010Au32 as i32;
+pub const STATUS_INVALID_LOGON_TYPE: ::NTSTATUS = 0xC000010Bu32 as i32;
+pub const STATUS_NO_GUID_TRANSLATION: ::NTSTATUS = 0xC000010Cu32 as i32;
+pub const STATUS_CANNOT_IMPERSONATE: ::NTSTATUS = 0xC000010Du32 as i32;
+pub const STATUS_IMAGE_ALREADY_LOADED: ::NTSTATUS = 0xC000010Eu32 as i32;
+pub const STATUS_ABIOS_NOT_PRESENT: ::NTSTATUS = 0xC000010Fu32 as i32;
+pub const STATUS_ABIOS_LID_NOT_EXIST: ::NTSTATUS = 0xC0000110u32 as i32;
+pub const STATUS_ABIOS_LID_ALREADY_OWNED: ::NTSTATUS = 0xC0000111u32 as i32;
+pub const STATUS_ABIOS_NOT_LID_OWNER: ::NTSTATUS = 0xC0000112u32 as i32;
+pub const STATUS_ABIOS_INVALID_COMMAND: ::NTSTATUS = 0xC0000113u32 as i32;
+pub const STATUS_ABIOS_INVALID_LID: ::NTSTATUS = 0xC0000114u32 as i32;
+pub const STATUS_ABIOS_SELECTOR_NOT_AVAILABLE: ::NTSTATUS = 0xC0000115u32 as i32;
+pub const STATUS_ABIOS_INVALID_SELECTOR: ::NTSTATUS = 0xC0000116u32 as i32;
+pub const STATUS_NO_LDT: ::NTSTATUS = 0xC0000117u32 as i32;
+pub const STATUS_INVALID_LDT_SIZE: ::NTSTATUS = 0xC0000118u32 as i32;
+pub const STATUS_INVALID_LDT_OFFSET: ::NTSTATUS = 0xC0000119u32 as i32;
+pub const STATUS_INVALID_LDT_DESCRIPTOR: ::NTSTATUS = 0xC000011Au32 as i32;
+pub const STATUS_INVALID_IMAGE_NE_FORMAT: ::NTSTATUS = 0xC000011Bu32 as i32;
+pub const STATUS_RXACT_INVALID_STATE: ::NTSTATUS = 0xC000011Cu32 as i32;
+pub const STATUS_RXACT_COMMIT_FAILURE: ::NTSTATUS = 0xC000011Du32 as i32;
+pub const STATUS_MAPPED_FILE_SIZE_ZERO: ::NTSTATUS = 0xC000011Eu32 as i32;
+pub const STATUS_TOO_MANY_OPENED_FILES: ::NTSTATUS = 0xC000011Fu32 as i32;
+pub const STATUS_CANCELLED: ::NTSTATUS = 0xC0000120u32 as i32;
+pub const STATUS_CANNOT_DELETE: ::NTSTATUS = 0xC0000121u32 as i32;
+pub const STATUS_INVALID_COMPUTER_NAME: ::NTSTATUS = 0xC0000122u32 as i32;
+pub const STATUS_FILE_DELETED: ::NTSTATUS = 0xC0000123u32 as i32;
+pub const STATUS_SPECIAL_ACCOUNT: ::NTSTATUS = 0xC0000124u32 as i32;
+pub const STATUS_SPECIAL_GROUP: ::NTSTATUS = 0xC0000125u32 as i32;
+pub const STATUS_SPECIAL_USER: ::NTSTATUS = 0xC0000126u32 as i32;
+pub const STATUS_MEMBERS_PRIMARY_GROUP: ::NTSTATUS = 0xC0000127u32 as i32;
+pub const STATUS_FILE_CLOSED: ::NTSTATUS = 0xC0000128u32 as i32;
+pub const STATUS_TOO_MANY_THREADS: ::NTSTATUS = 0xC0000129u32 as i32;
+pub const STATUS_THREAD_NOT_IN_PROCESS: ::NTSTATUS = 0xC000012Au32 as i32;
+pub const STATUS_TOKEN_ALREADY_IN_USE: ::NTSTATUS = 0xC000012Bu32 as i32;
+pub const STATUS_PAGEFILE_QUOTA_EXCEEDED: ::NTSTATUS = 0xC000012Cu32 as i32;
+pub const STATUS_COMMITMENT_LIMIT: ::NTSTATUS = 0xC000012Du32 as i32;
+pub const STATUS_INVALID_IMAGE_LE_FORMAT: ::NTSTATUS = 0xC000012Eu32 as i32;
+pub const STATUS_INVALID_IMAGE_NOT_MZ: ::NTSTATUS = 0xC000012Fu32 as i32;
+pub const STATUS_INVALID_IMAGE_PROTECT: ::NTSTATUS = 0xC0000130u32 as i32;
+pub const STATUS_INVALID_IMAGE_WIN_16: ::NTSTATUS = 0xC0000131u32 as i32;
+pub const STATUS_LOGON_SERVER_CONFLICT: ::NTSTATUS = 0xC0000132u32 as i32;
+pub const STATUS_TIME_DIFFERENCE_AT_DC: ::NTSTATUS = 0xC0000133u32 as i32;
+pub const STATUS_SYNCHRONIZATION_REQUIRED: ::NTSTATUS = 0xC0000134u32 as i32;
+pub const STATUS_DLL_NOT_FOUND: ::NTSTATUS = 0xC0000135u32 as i32;
+pub const STATUS_OPEN_FAILED: ::NTSTATUS = 0xC0000136u32 as i32;
+pub const STATUS_IO_PRIVILEGE_FAILED: ::NTSTATUS = 0xC0000137u32 as i32;
+pub const STATUS_ORDINAL_NOT_FOUND: ::NTSTATUS = 0xC0000138u32 as i32;
+pub const STATUS_ENTRYPOINT_NOT_FOUND: ::NTSTATUS = 0xC0000139u32 as i32;
+pub const STATUS_CONTROL_C_EXIT: ::NTSTATUS = 0xC000013Au32 as i32;
+pub const STATUS_LOCAL_DISCONNECT: ::NTSTATUS = 0xC000013Bu32 as i32;
+pub const STATUS_REMOTE_DISCONNECT: ::NTSTATUS = 0xC000013Cu32 as i32;
+pub const STATUS_REMOTE_RESOURCES: ::NTSTATUS = 0xC000013Du32 as i32;
+pub const STATUS_LINK_FAILED: ::NTSTATUS = 0xC000013Eu32 as i32;
+pub const STATUS_LINK_TIMEOUT: ::NTSTATUS = 0xC000013Fu32 as i32;
+pub const STATUS_INVALID_CONNECTION: ::NTSTATUS = 0xC0000140u32 as i32;
+pub const STATUS_INVALID_ADDRESS: ::NTSTATUS = 0xC0000141u32 as i32;
+pub const STATUS_DLL_INIT_FAILED: ::NTSTATUS = 0xC0000142u32 as i32;
+pub const STATUS_MISSING_SYSTEMFILE: ::NTSTATUS = 0xC0000143u32 as i32;
+pub const STATUS_UNHANDLED_EXCEPTION: ::NTSTATUS = 0xC0000144u32 as i32;
+pub const STATUS_APP_INIT_FAILURE: ::NTSTATUS = 0xC0000145u32 as i32;
+pub const STATUS_PAGEFILE_CREATE_FAILED: ::NTSTATUS = 0xC0000146u32 as i32;
+pub const STATUS_NO_PAGEFILE: ::NTSTATUS = 0xC0000147u32 as i32;
+pub const STATUS_INVALID_LEVEL: ::NTSTATUS = 0xC0000148u32 as i32;
+pub const STATUS_WRONG_PASSWORD_CORE: ::NTSTATUS = 0xC0000149u32 as i32;
+pub const STATUS_ILLEGAL_FLOAT_CONTEXT: ::NTSTATUS = 0xC000014Au32 as i32;
+pub const STATUS_PIPE_BROKEN: ::NTSTATUS = 0xC000014Bu32 as i32;
+pub const STATUS_REGISTRY_CORRUPT: ::NTSTATUS = 0xC000014Cu32 as i32;
+pub const STATUS_REGISTRY_IO_FAILED: ::NTSTATUS = 0xC000014Du32 as i32;
+pub const STATUS_NO_EVENT_PAIR: ::NTSTATUS = 0xC000014Eu32 as i32;
+pub const STATUS_UNRECOGNIZED_VOLUME: ::NTSTATUS = 0xC000014Fu32 as i32;
+pub const STATUS_SERIAL_NO_DEVICE_INITED: ::NTSTATUS = 0xC0000150u32 as i32;
+pub const STATUS_NO_SUCH_ALIAS: ::NTSTATUS = 0xC0000151u32 as i32;
+pub const STATUS_MEMBER_NOT_IN_ALIAS: ::NTSTATUS = 0xC0000152u32 as i32;
+pub const STATUS_MEMBER_IN_ALIAS: ::NTSTATUS = 0xC0000153u32 as i32;
+pub const STATUS_ALIAS_EXISTS: ::NTSTATUS = 0xC0000154u32 as i32;
+pub const STATUS_LOGON_NOT_GRANTED: ::NTSTATUS = 0xC0000155u32 as i32;
+pub const STATUS_TOO_MANY_SECRETS: ::NTSTATUS = 0xC0000156u32 as i32;
+pub const STATUS_SECRET_TOO_LONG: ::NTSTATUS = 0xC0000157u32 as i32;
+pub const STATUS_INTERNAL_DB_ERROR: ::NTSTATUS = 0xC0000158u32 as i32;
+pub const STATUS_FULLSCREEN_MODE: ::NTSTATUS = 0xC0000159u32 as i32;
+pub const STATUS_TOO_MANY_CONTEXT_IDS: ::NTSTATUS = 0xC000015Au32 as i32;
+pub const STATUS_LOGON_TYPE_NOT_GRANTED: ::NTSTATUS = 0xC000015Bu32 as i32;
+pub const STATUS_NOT_REGISTRY_FILE: ::NTSTATUS = 0xC000015Cu32 as i32;
+pub const STATUS_NT_CROSS_ENCRYPTION_REQUIRED: ::NTSTATUS = 0xC000015Du32 as i32;
+pub const STATUS_DOMAIN_CTRLR_CONFIG_ERROR: ::NTSTATUS = 0xC000015Eu32 as i32;
+pub const STATUS_FT_MISSING_MEMBER: ::NTSTATUS = 0xC000015Fu32 as i32;
+pub const STATUS_ILL_FORMED_SERVICE_ENTRY: ::NTSTATUS = 0xC0000160u32 as i32;
+pub const STATUS_ILLEGAL_CHARACTER: ::NTSTATUS = 0xC0000161u32 as i32;
+pub const STATUS_UNMAPPABLE_CHARACTER: ::NTSTATUS = 0xC0000162u32 as i32;
+pub const STATUS_UNDEFINED_CHARACTER: ::NTSTATUS = 0xC0000163u32 as i32;
+pub const STATUS_FLOPPY_VOLUME: ::NTSTATUS = 0xC0000164u32 as i32;
+pub const STATUS_FLOPPY_ID_MARK_NOT_FOUND: ::NTSTATUS = 0xC0000165u32 as i32;
+pub const STATUS_FLOPPY_WRONG_CYLINDER: ::NTSTATUS = 0xC0000166u32 as i32;
+pub const STATUS_FLOPPY_UNKNOWN_ERROR: ::NTSTATUS = 0xC0000167u32 as i32;
+pub const STATUS_FLOPPY_BAD_REGISTERS: ::NTSTATUS = 0xC0000168u32 as i32;
+pub const STATUS_DISK_RECALIBRATE_FAILED: ::NTSTATUS = 0xC0000169u32 as i32;
+pub const STATUS_DISK_OPERATION_FAILED: ::NTSTATUS = 0xC000016Au32 as i32;
+pub const STATUS_DISK_RESET_FAILED: ::NTSTATUS = 0xC000016Bu32 as i32;
+pub const STATUS_SHARED_IRQ_BUSY: ::NTSTATUS = 0xC000016Cu32 as i32;
+pub const STATUS_FT_ORPHANING: ::NTSTATUS = 0xC000016Du32 as i32;
+pub const STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT: ::NTSTATUS = 0xC000016Eu32 as i32;
+pub const STATUS_PARTITION_FAILURE: ::NTSTATUS = 0xC0000172u32 as i32;
+pub const STATUS_INVALID_BLOCK_LENGTH: ::NTSTATUS = 0xC0000173u32 as i32;
+pub const STATUS_DEVICE_NOT_PARTITIONED: ::NTSTATUS = 0xC0000174u32 as i32;
+pub const STATUS_UNABLE_TO_LOCK_MEDIA: ::NTSTATUS = 0xC0000175u32 as i32;
+pub const STATUS_UNABLE_TO_UNLOAD_MEDIA: ::NTSTATUS = 0xC0000176u32 as i32;
+pub const STATUS_EOM_OVERFLOW: ::NTSTATUS = 0xC0000177u32 as i32;
+pub const STATUS_NO_MEDIA: ::NTSTATUS = 0xC0000178u32 as i32;
+pub const STATUS_NO_SUCH_MEMBER: ::NTSTATUS = 0xC000017Au32 as i32;
+pub const STATUS_INVALID_MEMBER: ::NTSTATUS = 0xC000017Bu32 as i32;
+pub const STATUS_KEY_DELETED: ::NTSTATUS = 0xC000017Cu32 as i32;
+pub const STATUS_NO_LOG_SPACE: ::NTSTATUS = 0xC000017Du32 as i32;
+pub const STATUS_TOO_MANY_SIDS: ::NTSTATUS = 0xC000017Eu32 as i32;
+pub const STATUS_LM_CROSS_ENCRYPTION_REQUIRED: ::NTSTATUS = 0xC000017Fu32 as i32;
+pub const STATUS_KEY_HAS_CHILDREN: ::NTSTATUS = 0xC0000180u32 as i32;
+pub const STATUS_CHILD_MUST_BE_VOLATILE: ::NTSTATUS = 0xC0000181u32 as i32;
+pub const STATUS_DEVICE_CONFIGURATION_ERROR: ::NTSTATUS = 0xC0000182u32 as i32;
+pub const STATUS_DRIVER_INTERNAL_ERROR: ::NTSTATUS = 0xC0000183u32 as i32;
+pub const STATUS_INVALID_DEVICE_STATE: ::NTSTATUS = 0xC0000184u32 as i32;
+pub const STATUS_IO_DEVICE_ERROR: ::NTSTATUS = 0xC0000185u32 as i32;
+pub const STATUS_DEVICE_PROTOCOL_ERROR: ::NTSTATUS = 0xC0000186u32 as i32;
+pub const STATUS_BACKUP_CONTROLLER: ::NTSTATUS = 0xC0000187u32 as i32;
+pub const STATUS_LOG_FILE_FULL: ::NTSTATUS = 0xC0000188u32 as i32;
+pub const STATUS_TOO_LATE: ::NTSTATUS = 0xC0000189u32 as i32;
+pub const STATUS_NO_TRUST_LSA_SECRET: ::NTSTATUS = 0xC000018Au32 as i32;
+pub const STATUS_NO_TRUST_SAM_ACCOUNT: ::NTSTATUS = 0xC000018Bu32 as i32;
+pub const STATUS_TRUSTED_DOMAIN_FAILURE: ::NTSTATUS = 0xC000018Cu32 as i32;
+pub const STATUS_TRUSTED_RELATIONSHIP_FAILURE: ::NTSTATUS = 0xC000018Du32 as i32;
+pub const STATUS_EVENTLOG_FILE_CORRUPT: ::NTSTATUS = 0xC000018Eu32 as i32;
+pub const STATUS_EVENTLOG_CANT_START: ::NTSTATUS = 0xC000018Fu32 as i32;
+pub const STATUS_TRUST_FAILURE: ::NTSTATUS = 0xC0000190u32 as i32;
+pub const STATUS_MUTANT_LIMIT_EXCEEDED: ::NTSTATUS = 0xC0000191u32 as i32;
+pub const STATUS_NETLOGON_NOT_STARTED: ::NTSTATUS = 0xC0000192u32 as i32;
+pub const STATUS_ACCOUNT_EXPIRED: ::NTSTATUS = 0xC0000193u32 as i32;
+pub const STATUS_POSSIBLE_DEADLOCK: ::NTSTATUS = 0xC0000194u32 as i32;
+pub const STATUS_NETWORK_CREDENTIAL_CONFLICT: ::NTSTATUS = 0xC0000195u32 as i32;
+pub const STATUS_REMOTE_SESSION_LIMIT: ::NTSTATUS = 0xC0000196u32 as i32;
+pub const STATUS_EVENTLOG_FILE_CHANGED: ::NTSTATUS = 0xC0000197u32 as i32;
+pub const STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT: ::NTSTATUS = 0xC0000198u32 as i32;
+pub const STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT: ::NTSTATUS = 0xC0000199u32 as i32;
+pub const STATUS_NOLOGON_SERVER_TRUST_ACCOUNT: ::NTSTATUS = 0xC000019Au32 as i32;
+pub const STATUS_DOMAIN_TRUST_INCONSISTENT: ::NTSTATUS = 0xC000019Bu32 as i32;
+pub const STATUS_FS_DRIVER_REQUIRED: ::NTSTATUS = 0xC000019Cu32 as i32;
+pub const STATUS_IMAGE_ALREADY_LOADED_AS_DLL: ::NTSTATUS = 0xC000019Du32 as i32;
+pub const STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING: ::NTSTATUS = 0xC000019Eu32 as i32;
+pub const STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME: ::NTSTATUS = 0xC000019Fu32 as i32;
+pub const STATUS_SECURITY_STREAM_IS_INCONSISTENT: ::NTSTATUS = 0xC00001A0u32 as i32;
+pub const STATUS_INVALID_LOCK_RANGE: ::NTSTATUS = 0xC00001A1u32 as i32;
+pub const STATUS_INVALID_ACE_CONDITION: ::NTSTATUS = 0xC00001A2u32 as i32;
+pub const STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT: ::NTSTATUS = 0xC00001A3u32 as i32;
+pub const STATUS_NOTIFICATION_GUID_ALREADY_DEFINED: ::NTSTATUS = 0xC00001A4u32 as i32;
+pub const STATUS_INVALID_EXCEPTION_HANDLER: ::NTSTATUS = 0xC00001A5u32 as i32;
+pub const STATUS_DUPLICATE_PRIVILEGES: ::NTSTATUS = 0xC00001A6u32 as i32;
+pub const STATUS_NOT_ALLOWED_ON_SYSTEM_FILE: ::NTSTATUS = 0xC00001A7u32 as i32;
+pub const STATUS_REPAIR_NEEDED: ::NTSTATUS = 0xC00001A8u32 as i32;
+pub const STATUS_QUOTA_NOT_ENABLED: ::NTSTATUS = 0xC00001A9u32 as i32;
+pub const STATUS_NO_APPLICATION_PACKAGE: ::NTSTATUS = 0xC00001AAu32 as i32;
+pub const STATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS: ::NTSTATUS = 0xC00001ABu32 as i32;
+pub const STATUS_NOT_SAME_OBJECT: ::NTSTATUS = 0xC00001ACu32 as i32;
+pub const STATUS_FATAL_MEMORY_EXHAUSTION: ::NTSTATUS = 0xC00001ADu32 as i32;
+pub const STATUS_ERROR_PROCESS_NOT_IN_JOB: ::NTSTATUS = 0xC00001AEu32 as i32;
+pub const STATUS_NETWORK_OPEN_RESTRICTION: ::NTSTATUS = 0xC0000201u32 as i32;
+pub const STATUS_NO_USER_SESSION_KEY: ::NTSTATUS = 0xC0000202u32 as i32;
+pub const STATUS_USER_SESSION_DELETED: ::NTSTATUS = 0xC0000203u32 as i32;
+pub const STATUS_RESOURCE_LANG_NOT_FOUND: ::NTSTATUS = 0xC0000204u32 as i32;
+pub const STATUS_INSUFF_SERVER_RESOURCES: ::NTSTATUS = 0xC0000205u32 as i32;
+pub const STATUS_INVALID_BUFFER_SIZE: ::NTSTATUS = 0xC0000206u32 as i32;
+pub const STATUS_INVALID_ADDRESS_COMPONENT: ::NTSTATUS = 0xC0000207u32 as i32;
+pub const STATUS_INVALID_ADDRESS_WILDCARD: ::NTSTATUS = 0xC0000208u32 as i32;
+pub const STATUS_TOO_MANY_ADDRESSES: ::NTSTATUS = 0xC0000209u32 as i32;
+pub const STATUS_ADDRESS_ALREADY_EXISTS: ::NTSTATUS = 0xC000020Au32 as i32;
+pub const STATUS_ADDRESS_CLOSED: ::NTSTATUS = 0xC000020Bu32 as i32;
+pub const STATUS_CONNECTION_DISCONNECTED: ::NTSTATUS = 0xC000020Cu32 as i32;
+pub const STATUS_CONNECTION_RESET: ::NTSTATUS = 0xC000020Du32 as i32;
+pub const STATUS_TOO_MANY_NODES: ::NTSTATUS = 0xC000020Eu32 as i32;
+pub const STATUS_TRANSACTION_ABORTED: ::NTSTATUS = 0xC000020Fu32 as i32;
+pub const STATUS_TRANSACTION_TIMED_OUT: ::NTSTATUS = 0xC0000210u32 as i32;
+pub const STATUS_TRANSACTION_NO_RELEASE: ::NTSTATUS = 0xC0000211u32 as i32;
+pub const STATUS_TRANSACTION_NO_MATCH: ::NTSTATUS = 0xC0000212u32 as i32;
+pub const STATUS_TRANSACTION_RESPONDED: ::NTSTATUS = 0xC0000213u32 as i32;
+pub const STATUS_TRANSACTION_INVALID_ID: ::NTSTATUS = 0xC0000214u32 as i32;
+pub const STATUS_TRANSACTION_INVALID_TYPE: ::NTSTATUS = 0xC0000215u32 as i32;
+pub const STATUS_NOT_SERVER_SESSION: ::NTSTATUS = 0xC0000216u32 as i32;
+pub const STATUS_NOT_CLIENT_SESSION: ::NTSTATUS = 0xC0000217u32 as i32;
+pub const STATUS_CANNOT_LOAD_REGISTRY_FILE: ::NTSTATUS = 0xC0000218u32 as i32;
+pub const STATUS_DEBUG_ATTACH_FAILED: ::NTSTATUS = 0xC0000219u32 as i32;
+pub const STATUS_SYSTEM_PROCESS_TERMINATED: ::NTSTATUS = 0xC000021Au32 as i32;
+pub const STATUS_DATA_NOT_ACCEPTED: ::NTSTATUS = 0xC000021Bu32 as i32;
+pub const STATUS_NO_BROWSER_SERVERS_FOUND: ::NTSTATUS = 0xC000021Cu32 as i32;
+pub const STATUS_VDM_HARD_ERROR: ::NTSTATUS = 0xC000021Du32 as i32;
+pub const STATUS_DRIVER_CANCEL_TIMEOUT: ::NTSTATUS = 0xC000021Eu32 as i32;
+pub const STATUS_REPLY_MESSAGE_MISMATCH: ::NTSTATUS = 0xC000021Fu32 as i32;
+pub const STATUS_MAPPED_ALIGNMENT: ::NTSTATUS = 0xC0000220u32 as i32;
+pub const STATUS_IMAGE_CHECKSUM_MISMATCH: ::NTSTATUS = 0xC0000221u32 as i32;
+pub const STATUS_LOST_WRITEBEHIND_DATA: ::NTSTATUS = 0xC0000222u32 as i32;
+pub const STATUS_CLIENT_SERVER_PARAMETERS_INVALID: ::NTSTATUS = 0xC0000223u32 as i32;
+pub const STATUS_PASSWORD_MUST_CHANGE: ::NTSTATUS = 0xC0000224u32 as i32;
+pub const STATUS_NOT_FOUND: ::NTSTATUS = 0xC0000225u32 as i32;
+pub const STATUS_NOT_TINY_STREAM: ::NTSTATUS = 0xC0000226u32 as i32;
+pub const STATUS_RECOVERY_FAILURE: ::NTSTATUS = 0xC0000227u32 as i32;
+pub const STATUS_STACK_OVERFLOW_READ: ::NTSTATUS = 0xC0000228u32 as i32;
+pub const STATUS_FAIL_CHECK: ::NTSTATUS = 0xC0000229u32 as i32;
+pub const STATUS_DUPLICATE_OBJECTID: ::NTSTATUS = 0xC000022Au32 as i32;
+pub const STATUS_OBJECTID_EXISTS: ::NTSTATUS = 0xC000022Bu32 as i32;
+pub const STATUS_CONVERT_TO_LARGE: ::NTSTATUS = 0xC000022Cu32 as i32;
+pub const STATUS_RETRY: ::NTSTATUS = 0xC000022Du32 as i32;
+pub const STATUS_FOUND_OUT_OF_SCOPE: ::NTSTATUS = 0xC000022Eu32 as i32;
+pub const STATUS_ALLOCATE_BUCKET: ::NTSTATUS = 0xC000022Fu32 as i32;
+pub const STATUS_PROPSET_NOT_FOUND: ::NTSTATUS = 0xC0000230u32 as i32;
+pub const STATUS_MARSHALL_OVERFLOW: ::NTSTATUS = 0xC0000231u32 as i32;
+pub const STATUS_INVALID_VARIANT: ::NTSTATUS = 0xC0000232u32 as i32;
+pub const STATUS_DOMAIN_CONTROLLER_NOT_FOUND: ::NTSTATUS = 0xC0000233u32 as i32;
+pub const STATUS_ACCOUNT_LOCKED_OUT: ::NTSTATUS = 0xC0000234u32 as i32;
+pub const STATUS_HANDLE_NOT_CLOSABLE: ::NTSTATUS = 0xC0000235u32 as i32;
+pub const STATUS_CONNECTION_REFUSED: ::NTSTATUS = 0xC0000236u32 as i32;
+pub const STATUS_GRACEFUL_DISCONNECT: ::NTSTATUS = 0xC0000237u32 as i32;
+pub const STATUS_ADDRESS_ALREADY_ASSOCIATED: ::NTSTATUS = 0xC0000238u32 as i32;
+pub const STATUS_ADDRESS_NOT_ASSOCIATED: ::NTSTATUS = 0xC0000239u32 as i32;
+pub const STATUS_CONNECTION_INVALID: ::NTSTATUS = 0xC000023Au32 as i32;
+pub const STATUS_CONNECTION_ACTIVE: ::NTSTATUS = 0xC000023Bu32 as i32;
+pub const STATUS_NETWORK_UNREACHABLE: ::NTSTATUS = 0xC000023Cu32 as i32;
+pub const STATUS_HOST_UNREACHABLE: ::NTSTATUS = 0xC000023Du32 as i32;
+pub const STATUS_PROTOCOL_UNREACHABLE: ::NTSTATUS = 0xC000023Eu32 as i32;
+pub const STATUS_PORT_UNREACHABLE: ::NTSTATUS = 0xC000023Fu32 as i32;
+pub const STATUS_REQUEST_ABORTED: ::NTSTATUS = 0xC0000240u32 as i32;
+pub const STATUS_CONNECTION_ABORTED: ::NTSTATUS = 0xC0000241u32 as i32;
+pub const STATUS_BAD_COMPRESSION_BUFFER: ::NTSTATUS = 0xC0000242u32 as i32;
+pub const STATUS_USER_MAPPED_FILE: ::NTSTATUS = 0xC0000243u32 as i32;
+pub const STATUS_AUDIT_FAILED: ::NTSTATUS = 0xC0000244u32 as i32;
+pub const STATUS_TIMER_RESOLUTION_NOT_SET: ::NTSTATUS = 0xC0000245u32 as i32;
+pub const STATUS_CONNECTION_COUNT_LIMIT: ::NTSTATUS = 0xC0000246u32 as i32;
+pub const STATUS_LOGIN_TIME_RESTRICTION: ::NTSTATUS = 0xC0000247u32 as i32;
+pub const STATUS_LOGIN_WKSTA_RESTRICTION: ::NTSTATUS = 0xC0000248u32 as i32;
+pub const STATUS_IMAGE_MP_UP_MISMATCH: ::NTSTATUS = 0xC0000249u32 as i32;
+pub const STATUS_INSUFFICIENT_LOGON_INFO: ::NTSTATUS = 0xC0000250u32 as i32;
+pub const STATUS_BAD_DLL_ENTRYPOINT: ::NTSTATUS = 0xC0000251u32 as i32;
+pub const STATUS_BAD_SERVICE_ENTRYPOINT: ::NTSTATUS = 0xC0000252u32 as i32;
+pub const STATUS_LPC_REPLY_LOST: ::NTSTATUS = 0xC0000253u32 as i32;
+pub const STATUS_IP_ADDRESS_CONFLICT1: ::NTSTATUS = 0xC0000254u32 as i32;
+pub const STATUS_IP_ADDRESS_CONFLICT2: ::NTSTATUS = 0xC0000255u32 as i32;
+pub const STATUS_REGISTRY_QUOTA_LIMIT: ::NTSTATUS = 0xC0000256u32 as i32;
+pub const STATUS_PATH_NOT_COVERED: ::NTSTATUS = 0xC0000257u32 as i32;
+pub const STATUS_NO_CALLBACK_ACTIVE: ::NTSTATUS = 0xC0000258u32 as i32;
+pub const STATUS_LICENSE_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000259u32 as i32;
+pub const STATUS_PWD_TOO_SHORT: ::NTSTATUS = 0xC000025Au32 as i32;
+pub const STATUS_PWD_TOO_RECENT: ::NTSTATUS = 0xC000025Bu32 as i32;
+pub const STATUS_PWD_HISTORY_CONFLICT: ::NTSTATUS = 0xC000025Cu32 as i32;
+pub const STATUS_PLUGPLAY_NO_DEVICE: ::NTSTATUS = 0xC000025Eu32 as i32;
+pub const STATUS_UNSUPPORTED_COMPRESSION: ::NTSTATUS = 0xC000025Fu32 as i32;
+pub const STATUS_INVALID_HW_PROFILE: ::NTSTATUS = 0xC0000260u32 as i32;
+pub const STATUS_INVALID_PLUGPLAY_DEVICE_PATH: ::NTSTATUS = 0xC0000261u32 as i32;
+pub const STATUS_DRIVER_ORDINAL_NOT_FOUND: ::NTSTATUS = 0xC0000262u32 as i32;
+pub const STATUS_DRIVER_ENTRYPOINT_NOT_FOUND: ::NTSTATUS = 0xC0000263u32 as i32;
+pub const STATUS_RESOURCE_NOT_OWNED: ::NTSTATUS = 0xC0000264u32 as i32;
+pub const STATUS_TOO_MANY_LINKS: ::NTSTATUS = 0xC0000265u32 as i32;
+pub const STATUS_QUOTA_LIST_INCONSISTENT: ::NTSTATUS = 0xC0000266u32 as i32;
+pub const STATUS_FILE_IS_OFFLINE: ::NTSTATUS = 0xC0000267u32 as i32;
+pub const STATUS_EVALUATION_EXPIRATION: ::NTSTATUS = 0xC0000268u32 as i32;
+pub const STATUS_ILLEGAL_DLL_RELOCATION: ::NTSTATUS = 0xC0000269u32 as i32;
+pub const STATUS_LICENSE_VIOLATION: ::NTSTATUS = 0xC000026Au32 as i32;
+pub const STATUS_DLL_INIT_FAILED_LOGOFF: ::NTSTATUS = 0xC000026Bu32 as i32;
+pub const STATUS_DRIVER_UNABLE_TO_LOAD: ::NTSTATUS = 0xC000026Cu32 as i32;
+pub const STATUS_DFS_UNAVAILABLE: ::NTSTATUS = 0xC000026Du32 as i32;
+pub const STATUS_VOLUME_DISMOUNTED: ::NTSTATUS = 0xC000026Eu32 as i32;
+pub const STATUS_WX86_INTERNAL_ERROR: ::NTSTATUS = 0xC000026Fu32 as i32;
+pub const STATUS_WX86_FLOAT_STACK_CHECK: ::NTSTATUS = 0xC0000270u32 as i32;
+pub const STATUS_VALIDATE_CONTINUE: ::NTSTATUS = 0xC0000271u32 as i32;
+pub const STATUS_NO_MATCH: ::NTSTATUS = 0xC0000272u32 as i32;
+pub const STATUS_NO_MORE_MATCHES: ::NTSTATUS = 0xC0000273u32 as i32;
+pub const STATUS_NOT_A_REPARSE_POINT: ::NTSTATUS = 0xC0000275u32 as i32;
+pub const STATUS_IO_REPARSE_TAG_INVALID: ::NTSTATUS = 0xC0000276u32 as i32;
+pub const STATUS_IO_REPARSE_TAG_MISMATCH: ::NTSTATUS = 0xC0000277u32 as i32;
+pub const STATUS_IO_REPARSE_DATA_INVALID: ::NTSTATUS = 0xC0000278u32 as i32;
+pub const STATUS_IO_REPARSE_TAG_NOT_HANDLED: ::NTSTATUS = 0xC0000279u32 as i32;
+pub const STATUS_PWD_TOO_LONG: ::NTSTATUS = 0xC000027Au32 as i32;
+pub const STATUS_STOWED_EXCEPTION: ::NTSTATUS = 0xC000027Bu32 as i32;
+pub const STATUS_REPARSE_POINT_NOT_RESOLVED: ::NTSTATUS = 0xC0000280u32 as i32;
+pub const STATUS_DIRECTORY_IS_A_REPARSE_POINT: ::NTSTATUS = 0xC0000281u32 as i32;
+pub const STATUS_RANGE_LIST_CONFLICT: ::NTSTATUS = 0xC0000282u32 as i32;
+pub const STATUS_SOURCE_ELEMENT_EMPTY: ::NTSTATUS = 0xC0000283u32 as i32;
+pub const STATUS_DESTINATION_ELEMENT_FULL: ::NTSTATUS = 0xC0000284u32 as i32;
+pub const STATUS_ILLEGAL_ELEMENT_ADDRESS: ::NTSTATUS = 0xC0000285u32 as i32;
+pub const STATUS_MAGAZINE_NOT_PRESENT: ::NTSTATUS = 0xC0000286u32 as i32;
+pub const STATUS_REINITIALIZATION_NEEDED: ::NTSTATUS = 0xC0000287u32 as i32;
+pub const STATUS_DEVICE_REQUIRES_CLEANING: ::NTSTATUS = 0x80000288u32 as i32;
+pub const STATUS_DEVICE_DOOR_OPEN: ::NTSTATUS = 0x80000289u32 as i32;
+pub const STATUS_ENCRYPTION_FAILED: ::NTSTATUS = 0xC000028Au32 as i32;
+pub const STATUS_DECRYPTION_FAILED: ::NTSTATUS = 0xC000028Bu32 as i32;
+pub const STATUS_RANGE_NOT_FOUND: ::NTSTATUS = 0xC000028Cu32 as i32;
+pub const STATUS_NO_RECOVERY_POLICY: ::NTSTATUS = 0xC000028Du32 as i32;
+pub const STATUS_NO_EFS: ::NTSTATUS = 0xC000028Eu32 as i32;
+pub const STATUS_WRONG_EFS: ::NTSTATUS = 0xC000028Fu32 as i32;
+pub const STATUS_NO_USER_KEYS: ::NTSTATUS = 0xC0000290u32 as i32;
+pub const STATUS_FILE_NOT_ENCRYPTED: ::NTSTATUS = 0xC0000291u32 as i32;
+pub const STATUS_NOT_EXPORT_FORMAT: ::NTSTATUS = 0xC0000292u32 as i32;
+pub const STATUS_FILE_ENCRYPTED: ::NTSTATUS = 0xC0000293u32 as i32;
+pub const STATUS_WAKE_SYSTEM: ::NTSTATUS = 0x40000294;
+pub const STATUS_WMI_GUID_NOT_FOUND: ::NTSTATUS = 0xC0000295u32 as i32;
+pub const STATUS_WMI_INSTANCE_NOT_FOUND: ::NTSTATUS = 0xC0000296u32 as i32;
+pub const STATUS_WMI_ITEMID_NOT_FOUND: ::NTSTATUS = 0xC0000297u32 as i32;
+pub const STATUS_WMI_TRY_AGAIN: ::NTSTATUS = 0xC0000298u32 as i32;
+pub const STATUS_SHARED_POLICY: ::NTSTATUS = 0xC0000299u32 as i32;
+pub const STATUS_POLICY_OBJECT_NOT_FOUND: ::NTSTATUS = 0xC000029Au32 as i32;
+pub const STATUS_POLICY_ONLY_IN_DS: ::NTSTATUS = 0xC000029Bu32 as i32;
+pub const STATUS_VOLUME_NOT_UPGRADED: ::NTSTATUS = 0xC000029Cu32 as i32;
+pub const STATUS_REMOTE_STORAGE_NOT_ACTIVE: ::NTSTATUS = 0xC000029Du32 as i32;
+pub const STATUS_REMOTE_STORAGE_MEDIA_ERROR: ::NTSTATUS = 0xC000029Eu32 as i32;
+pub const STATUS_NO_TRACKING_SERVICE: ::NTSTATUS = 0xC000029Fu32 as i32;
+pub const STATUS_SERVER_SID_MISMATCH: ::NTSTATUS = 0xC00002A0u32 as i32;
+pub const STATUS_DS_NO_ATTRIBUTE_OR_VALUE: ::NTSTATUS = 0xC00002A1u32 as i32;
+pub const STATUS_DS_INVALID_ATTRIBUTE_SYNTAX: ::NTSTATUS = 0xC00002A2u32 as i32;
+pub const STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED: ::NTSTATUS = 0xC00002A3u32 as i32;
+pub const STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS: ::NTSTATUS = 0xC00002A4u32 as i32;
+pub const STATUS_DS_BUSY: ::NTSTATUS = 0xC00002A5u32 as i32;
+pub const STATUS_DS_UNAVAILABLE: ::NTSTATUS = 0xC00002A6u32 as i32;
+pub const STATUS_DS_NO_RIDS_ALLOCATED: ::NTSTATUS = 0xC00002A7u32 as i32;
+pub const STATUS_DS_NO_MORE_RIDS: ::NTSTATUS = 0xC00002A8u32 as i32;
+pub const STATUS_DS_INCORRECT_ROLE_OWNER: ::NTSTATUS = 0xC00002A9u32 as i32;
+pub const STATUS_DS_RIDMGR_INIT_ERROR: ::NTSTATUS = 0xC00002AAu32 as i32;
+pub const STATUS_DS_OBJ_CLASS_VIOLATION: ::NTSTATUS = 0xC00002ABu32 as i32;
+pub const STATUS_DS_CANT_ON_NON_LEAF: ::NTSTATUS = 0xC00002ACu32 as i32;
+pub const STATUS_DS_CANT_ON_RDN: ::NTSTATUS = 0xC00002ADu32 as i32;
+pub const STATUS_DS_CANT_MOD_OBJ_CLASS: ::NTSTATUS = 0xC00002AEu32 as i32;
+pub const STATUS_DS_CROSS_DOM_MOVE_FAILED: ::NTSTATUS = 0xC00002AFu32 as i32;
+pub const STATUS_DS_GC_NOT_AVAILABLE: ::NTSTATUS = 0xC00002B0u32 as i32;
+pub const STATUS_DIRECTORY_SERVICE_REQUIRED: ::NTSTATUS = 0xC00002B1u32 as i32;
+pub const STATUS_REPARSE_ATTRIBUTE_CONFLICT: ::NTSTATUS = 0xC00002B2u32 as i32;
+pub const STATUS_CANT_ENABLE_DENY_ONLY: ::NTSTATUS = 0xC00002B3u32 as i32;
+pub const STATUS_FLOAT_MULTIPLE_FAULTS: ::NTSTATUS = 0xC00002B4u32 as i32;
+pub const STATUS_FLOAT_MULTIPLE_TRAPS: ::NTSTATUS = 0xC00002B5u32 as i32;
+pub const STATUS_DEVICE_REMOVED: ::NTSTATUS = 0xC00002B6u32 as i32;
+pub const STATUS_JOURNAL_DELETE_IN_PROGRESS: ::NTSTATUS = 0xC00002B7u32 as i32;
+pub const STATUS_JOURNAL_NOT_ACTIVE: ::NTSTATUS = 0xC00002B8u32 as i32;
+pub const STATUS_NOINTERFACE: ::NTSTATUS = 0xC00002B9u32 as i32;
+pub const STATUS_DS_RIDMGR_DISABLED: ::NTSTATUS = 0xC00002BAu32 as i32;
+pub const STATUS_DS_ADMIN_LIMIT_EXCEEDED: ::NTSTATUS = 0xC00002C1u32 as i32;
+pub const STATUS_DRIVER_FAILED_SLEEP: ::NTSTATUS = 0xC00002C2u32 as i32;
+pub const STATUS_MUTUAL_AUTHENTICATION_FAILED: ::NTSTATUS = 0xC00002C3u32 as i32;
+pub const STATUS_CORRUPT_SYSTEM_FILE: ::NTSTATUS = 0xC00002C4u32 as i32;
+pub const STATUS_DATATYPE_MISALIGNMENT_ERROR: ::NTSTATUS = 0xC00002C5u32 as i32;
+pub const STATUS_WMI_READ_ONLY: ::NTSTATUS = 0xC00002C6u32 as i32;
+pub const STATUS_WMI_SET_FAILURE: ::NTSTATUS = 0xC00002C7u32 as i32;
+pub const STATUS_COMMITMENT_MINIMUM: ::NTSTATUS = 0xC00002C8u32 as i32;
+pub const STATUS_REG_NAT_CONSUMPTION: ::NTSTATUS = 0xC00002C9u32 as i32;
+pub const STATUS_TRANSPORT_FULL: ::NTSTATUS = 0xC00002CAu32 as i32;
+pub const STATUS_DS_SAM_INIT_FAILURE: ::NTSTATUS = 0xC00002CBu32 as i32;
+pub const STATUS_ONLY_IF_CONNECTED: ::NTSTATUS = 0xC00002CCu32 as i32;
+pub const STATUS_DS_SENSITIVE_GROUP_VIOLATION: ::NTSTATUS = 0xC00002CDu32 as i32;
+pub const STATUS_PNP_RESTART_ENUMERATION: ::NTSTATUS = 0xC00002CEu32 as i32;
+pub const STATUS_JOURNAL_ENTRY_DELETED: ::NTSTATUS = 0xC00002CFu32 as i32;
+pub const STATUS_DS_CANT_MOD_PRIMARYGROUPID: ::NTSTATUS = 0xC00002D0u32 as i32;
+pub const STATUS_SYSTEM_IMAGE_BAD_SIGNATURE: ::NTSTATUS = 0xC00002D1u32 as i32;
+pub const STATUS_PNP_REBOOT_REQUIRED: ::NTSTATUS = 0xC00002D2u32 as i32;
+pub const STATUS_POWER_STATE_INVALID: ::NTSTATUS = 0xC00002D3u32 as i32;
+pub const STATUS_DS_INVALID_GROUP_TYPE: ::NTSTATUS = 0xC00002D4u32 as i32;
+pub const STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN: ::NTSTATUS = 0xC00002D5u32 as i32;
+pub const STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN: ::NTSTATUS = 0xC00002D6u32 as i32;
+pub const STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER: ::NTSTATUS = 0xC00002D7u32 as i32;
+pub const STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER: ::NTSTATUS = 0xC00002D8u32 as i32;
+pub const STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER: ::NTSTATUS = 0xC00002D9u32 as i32;
+pub const STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER: ::NTSTATUS = 0xC00002DAu32 as i32;
+pub const STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER: ::NTSTATUS = 0xC00002DBu32 as i32;
+pub const STATUS_DS_HAVE_PRIMARY_MEMBERS: ::NTSTATUS = 0xC00002DCu32 as i32;
+pub const STATUS_WMI_NOT_SUPPORTED: ::NTSTATUS = 0xC00002DDu32 as i32;
+pub const STATUS_INSUFFICIENT_POWER: ::NTSTATUS = 0xC00002DEu32 as i32;
+pub const STATUS_SAM_NEED_BOOTKEY_PASSWORD: ::NTSTATUS = 0xC00002DFu32 as i32;
+pub const STATUS_SAM_NEED_BOOTKEY_FLOPPY: ::NTSTATUS = 0xC00002E0u32 as i32;
+pub const STATUS_DS_CANT_START: ::NTSTATUS = 0xC00002E1u32 as i32;
+pub const STATUS_DS_INIT_FAILURE: ::NTSTATUS = 0xC00002E2u32 as i32;
+pub const STATUS_SAM_INIT_FAILURE: ::NTSTATUS = 0xC00002E3u32 as i32;
+pub const STATUS_DS_GC_REQUIRED: ::NTSTATUS = 0xC00002E4u32 as i32;
+pub const STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY: ::NTSTATUS = 0xC00002E5u32 as i32;
+pub const STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS: ::NTSTATUS = 0xC00002E6u32 as i32;
+pub const STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED: ::NTSTATUS = 0xC00002E7u32 as i32;
+pub const STATUS_MULTIPLE_FAULT_VIOLATION: ::NTSTATUS = 0xC00002E8u32 as i32;
+pub const STATUS_CURRENT_DOMAIN_NOT_ALLOWED: ::NTSTATUS = 0xC00002E9u32 as i32;
+pub const STATUS_CANNOT_MAKE: ::NTSTATUS = 0xC00002EAu32 as i32;
+pub const STATUS_SYSTEM_SHUTDOWN: ::NTSTATUS = 0xC00002EBu32 as i32;
+pub const STATUS_DS_INIT_FAILURE_CONSOLE: ::NTSTATUS = 0xC00002ECu32 as i32;
+pub const STATUS_DS_SAM_INIT_FAILURE_CONSOLE: ::NTSTATUS = 0xC00002EDu32 as i32;
+pub const STATUS_UNFINISHED_CONTEXT_DELETED: ::NTSTATUS = 0xC00002EEu32 as i32;
+pub const STATUS_NO_TGT_REPLY: ::NTSTATUS = 0xC00002EFu32 as i32;
+pub const STATUS_OBJECTID_NOT_FOUND: ::NTSTATUS = 0xC00002F0u32 as i32;
+pub const STATUS_NO_IP_ADDRESSES: ::NTSTATUS = 0xC00002F1u32 as i32;
+pub const STATUS_WRONG_CREDENTIAL_HANDLE: ::NTSTATUS = 0xC00002F2u32 as i32;
+pub const STATUS_CRYPTO_SYSTEM_INVALID: ::NTSTATUS = 0xC00002F3u32 as i32;
+pub const STATUS_MAX_REFERRALS_EXCEEDED: ::NTSTATUS = 0xC00002F4u32 as i32;
+pub const STATUS_MUST_BE_KDC: ::NTSTATUS = 0xC00002F5u32 as i32;
+pub const STATUS_STRONG_CRYPTO_NOT_SUPPORTED: ::NTSTATUS = 0xC00002F6u32 as i32;
+pub const STATUS_TOO_MANY_PRINCIPALS: ::NTSTATUS = 0xC00002F7u32 as i32;
+pub const STATUS_NO_PA_DATA: ::NTSTATUS = 0xC00002F8u32 as i32;
+pub const STATUS_PKINIT_NAME_MISMATCH: ::NTSTATUS = 0xC00002F9u32 as i32;
+pub const STATUS_SMARTCARD_LOGON_REQUIRED: ::NTSTATUS = 0xC00002FAu32 as i32;
+pub const STATUS_KDC_INVALID_REQUEST: ::NTSTATUS = 0xC00002FBu32 as i32;
+pub const STATUS_KDC_UNABLE_TO_REFER: ::NTSTATUS = 0xC00002FCu32 as i32;
+pub const STATUS_KDC_UNKNOWN_ETYPE: ::NTSTATUS = 0xC00002FDu32 as i32;
+pub const STATUS_SHUTDOWN_IN_PROGRESS: ::NTSTATUS = 0xC00002FEu32 as i32;
+pub const STATUS_SERVER_SHUTDOWN_IN_PROGRESS: ::NTSTATUS = 0xC00002FFu32 as i32;
+pub const STATUS_NOT_SUPPORTED_ON_SBS: ::NTSTATUS = 0xC0000300u32 as i32;
+pub const STATUS_WMI_GUID_DISCONNECTED: ::NTSTATUS = 0xC0000301u32 as i32;
+pub const STATUS_WMI_ALREADY_DISABLED: ::NTSTATUS = 0xC0000302u32 as i32;
+pub const STATUS_WMI_ALREADY_ENABLED: ::NTSTATUS = 0xC0000303u32 as i32;
+pub const STATUS_MFT_TOO_FRAGMENTED: ::NTSTATUS = 0xC0000304u32 as i32;
+pub const STATUS_COPY_PROTECTION_FAILURE: ::NTSTATUS = 0xC0000305u32 as i32;
+pub const STATUS_CSS_AUTHENTICATION_FAILURE: ::NTSTATUS = 0xC0000306u32 as i32;
+pub const STATUS_CSS_KEY_NOT_PRESENT: ::NTSTATUS = 0xC0000307u32 as i32;
+pub const STATUS_CSS_KEY_NOT_ESTABLISHED: ::NTSTATUS = 0xC0000308u32 as i32;
+pub const STATUS_CSS_SCRAMBLED_SECTOR: ::NTSTATUS = 0xC0000309u32 as i32;
+pub const STATUS_CSS_REGION_MISMATCH: ::NTSTATUS = 0xC000030Au32 as i32;
+pub const STATUS_CSS_RESETS_EXHAUSTED: ::NTSTATUS = 0xC000030Bu32 as i32;
+pub const STATUS_PASSWORD_CHANGE_REQUIRED: ::NTSTATUS = 0xC000030Cu32 as i32;
+pub const STATUS_PKINIT_FAILURE: ::NTSTATUS = 0xC0000320u32 as i32;
+pub const STATUS_SMARTCARD_SUBSYSTEM_FAILURE: ::NTSTATUS = 0xC0000321u32 as i32;
+pub const STATUS_NO_KERB_KEY: ::NTSTATUS = 0xC0000322u32 as i32;
+pub const STATUS_HOST_DOWN: ::NTSTATUS = 0xC0000350u32 as i32;
+pub const STATUS_UNSUPPORTED_PREAUTH: ::NTSTATUS = 0xC0000351u32 as i32;
+pub const STATUS_EFS_ALG_BLOB_TOO_BIG: ::NTSTATUS = 0xC0000352u32 as i32;
+pub const STATUS_PORT_NOT_SET: ::NTSTATUS = 0xC0000353u32 as i32;
+pub const STATUS_DEBUGGER_INACTIVE: ::NTSTATUS = 0xC0000354u32 as i32;
+pub const STATUS_DS_VERSION_CHECK_FAILURE: ::NTSTATUS = 0xC0000355u32 as i32;
+pub const STATUS_AUDITING_DISABLED: ::NTSTATUS = 0xC0000356u32 as i32;
+pub const STATUS_PRENT4_MACHINE_ACCOUNT: ::NTSTATUS = 0xC0000357u32 as i32;
+pub const STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER: ::NTSTATUS = 0xC0000358u32 as i32;
+pub const STATUS_INVALID_IMAGE_WIN_32: ::NTSTATUS = 0xC0000359u32 as i32;
+pub const STATUS_INVALID_IMAGE_WIN_64: ::NTSTATUS = 0xC000035Au32 as i32;
+pub const STATUS_BAD_BINDINGS: ::NTSTATUS = 0xC000035Bu32 as i32;
+pub const STATUS_NETWORK_SESSION_EXPIRED: ::NTSTATUS = 0xC000035Cu32 as i32;
+pub const STATUS_APPHELP_BLOCK: ::NTSTATUS = 0xC000035Du32 as i32;
+pub const STATUS_ALL_SIDS_FILTERED: ::NTSTATUS = 0xC000035Eu32 as i32;
+pub const STATUS_NOT_SAFE_MODE_DRIVER: ::NTSTATUS = 0xC000035Fu32 as i32;
+pub const STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT: ::NTSTATUS = 0xC0000361u32 as i32;
+pub const STATUS_ACCESS_DISABLED_BY_POLICY_PATH: ::NTSTATUS = 0xC0000362u32 as i32;
+pub const STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER: ::NTSTATUS = 0xC0000363u32 as i32;
+pub const STATUS_ACCESS_DISABLED_BY_POLICY_OTHER: ::NTSTATUS = 0xC0000364u32 as i32;
+pub const STATUS_FAILED_DRIVER_ENTRY: ::NTSTATUS = 0xC0000365u32 as i32;
+pub const STATUS_DEVICE_ENUMERATION_ERROR: ::NTSTATUS = 0xC0000366u32 as i32;
+pub const STATUS_MOUNT_POINT_NOT_RESOLVED: ::NTSTATUS = 0xC0000368u32 as i32;
+pub const STATUS_INVALID_DEVICE_OBJECT_PARAMETER: ::NTSTATUS = 0xC0000369u32 as i32;
+pub const STATUS_MCA_OCCURED: ::NTSTATUS = 0xC000036Au32 as i32;
+pub const STATUS_DRIVER_BLOCKED_CRITICAL: ::NTSTATUS = 0xC000036Bu32 as i32;
+pub const STATUS_DRIVER_BLOCKED: ::NTSTATUS = 0xC000036Cu32 as i32;
+pub const STATUS_DRIVER_DATABASE_ERROR: ::NTSTATUS = 0xC000036Du32 as i32;
+pub const STATUS_SYSTEM_HIVE_TOO_LARGE: ::NTSTATUS = 0xC000036Eu32 as i32;
+pub const STATUS_INVALID_IMPORT_OF_NON_DLL: ::NTSTATUS = 0xC000036Fu32 as i32;
+pub const STATUS_DS_SHUTTING_DOWN: ::NTSTATUS = 0x40000370;
+pub const STATUS_NO_SECRETS: ::NTSTATUS = 0xC0000371u32 as i32;
+pub const STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY: ::NTSTATUS = 0xC0000372u32 as i32;
+pub const STATUS_FAILED_STACK_SWITCH: ::NTSTATUS = 0xC0000373u32 as i32;
+pub const STATUS_HEAP_CORRUPTION: ::NTSTATUS = 0xC0000374u32 as i32;
+pub const STATUS_SMARTCARD_WRONG_PIN: ::NTSTATUS = 0xC0000380u32 as i32;
+pub const STATUS_SMARTCARD_CARD_BLOCKED: ::NTSTATUS = 0xC0000381u32 as i32;
+pub const STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED: ::NTSTATUS = 0xC0000382u32 as i32;
+pub const STATUS_SMARTCARD_NO_CARD: ::NTSTATUS = 0xC0000383u32 as i32;
+pub const STATUS_SMARTCARD_NO_KEY_CONTAINER: ::NTSTATUS = 0xC0000384u32 as i32;
+pub const STATUS_SMARTCARD_NO_CERTIFICATE: ::NTSTATUS = 0xC0000385u32 as i32;
+pub const STATUS_SMARTCARD_NO_KEYSET: ::NTSTATUS = 0xC0000386u32 as i32;
+pub const STATUS_SMARTCARD_IO_ERROR: ::NTSTATUS = 0xC0000387u32 as i32;
+pub const STATUS_DOWNGRADE_DETECTED: ::NTSTATUS = 0xC0000388u32 as i32;
+pub const STATUS_SMARTCARD_CERT_REVOKED: ::NTSTATUS = 0xC0000389u32 as i32;
+pub const STATUS_ISSUING_CA_UNTRUSTED: ::NTSTATUS = 0xC000038Au32 as i32;
+pub const STATUS_REVOCATION_OFFLINE_C: ::NTSTATUS = 0xC000038Bu32 as i32;
+pub const STATUS_PKINIT_CLIENT_FAILURE: ::NTSTATUS = 0xC000038Cu32 as i32;
+pub const STATUS_SMARTCARD_CERT_EXPIRED: ::NTSTATUS = 0xC000038Du32 as i32;
+pub const STATUS_DRIVER_FAILED_PRIOR_UNLOAD: ::NTSTATUS = 0xC000038Eu32 as i32;
+pub const STATUS_SMARTCARD_SILENT_CONTEXT: ::NTSTATUS = 0xC000038Fu32 as i32;
+pub const STATUS_PER_USER_TRUST_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000401u32 as i32;
+pub const STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000402u32 as i32;
+pub const STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000403u32 as i32;
+pub const STATUS_DS_NAME_NOT_UNIQUE: ::NTSTATUS = 0xC0000404u32 as i32;
+pub const STATUS_DS_DUPLICATE_ID_FOUND: ::NTSTATUS = 0xC0000405u32 as i32;
+pub const STATUS_DS_GROUP_CONVERSION_ERROR: ::NTSTATUS = 0xC0000406u32 as i32;
+pub const STATUS_VOLSNAP_PREPARE_HIBERNATE: ::NTSTATUS = 0xC0000407u32 as i32;
+pub const STATUS_USER2USER_REQUIRED: ::NTSTATUS = 0xC0000408u32 as i32;
+pub const STATUS_STACK_BUFFER_OVERRUN: ::NTSTATUS = 0xC0000409u32 as i32;
+pub const STATUS_NO_S4U_PROT_SUPPORT: ::NTSTATUS = 0xC000040Au32 as i32;
+pub const STATUS_CROSSREALM_DELEGATION_FAILURE: ::NTSTATUS = 0xC000040Bu32 as i32;
+pub const STATUS_REVOCATION_OFFLINE_KDC: ::NTSTATUS = 0xC000040Cu32 as i32;
+pub const STATUS_ISSUING_CA_UNTRUSTED_KDC: ::NTSTATUS = 0xC000040Du32 as i32;
+pub const STATUS_KDC_CERT_EXPIRED: ::NTSTATUS = 0xC000040Eu32 as i32;
+pub const STATUS_KDC_CERT_REVOKED: ::NTSTATUS = 0xC000040Fu32 as i32;
+pub const STATUS_PARAMETER_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000410u32 as i32;
+pub const STATUS_HIBERNATION_FAILURE: ::NTSTATUS = 0xC0000411u32 as i32;
+pub const STATUS_DELAY_LOAD_FAILED: ::NTSTATUS = 0xC0000412u32 as i32;
+pub const STATUS_AUTHENTICATION_FIREWALL_FAILED: ::NTSTATUS = 0xC0000413u32 as i32;
+pub const STATUS_VDM_DISALLOWED: ::NTSTATUS = 0xC0000414u32 as i32;
+pub const STATUS_HUNG_DISPLAY_DRIVER_THREAD: ::NTSTATUS = 0xC0000415u32 as i32;
+pub const STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE: ::NTSTATUS = 0xC0000416u32 as i32;
+pub const STATUS_INVALID_CRUNTIME_PARAMETER: ::NTSTATUS = 0xC0000417u32 as i32;
+pub const STATUS_NTLM_BLOCKED: ::NTSTATUS = 0xC0000418u32 as i32;
+pub const STATUS_DS_SRC_SID_EXISTS_IN_FOREST: ::NTSTATUS = 0xC0000419u32 as i32;
+pub const STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST: ::NTSTATUS = 0xC000041Au32 as i32;
+pub const STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST: ::NTSTATUS = 0xC000041Bu32 as i32;
+pub const STATUS_INVALID_USER_PRINCIPAL_NAME: ::NTSTATUS = 0xC000041Cu32 as i32;
+pub const STATUS_FATAL_USER_CALLBACK_EXCEPTION: ::NTSTATUS = 0xC000041Du32 as i32;
+pub const STATUS_ASSERTION_FAILURE: ::NTSTATUS = 0xC0000420u32 as i32;
+pub const STATUS_VERIFIER_STOP: ::NTSTATUS = 0xC0000421u32 as i32;
+pub const STATUS_CALLBACK_POP_STACK: ::NTSTATUS = 0xC0000423u32 as i32;
+pub const STATUS_INCOMPATIBLE_DRIVER_BLOCKED: ::NTSTATUS = 0xC0000424u32 as i32;
+pub const STATUS_HIVE_UNLOADED: ::NTSTATUS = 0xC0000425u32 as i32;
+pub const STATUS_COMPRESSION_DISABLED: ::NTSTATUS = 0xC0000426u32 as i32;
+pub const STATUS_FILE_SYSTEM_LIMITATION: ::NTSTATUS = 0xC0000427u32 as i32;
+pub const STATUS_INVALID_IMAGE_HASH: ::NTSTATUS = 0xC0000428u32 as i32;
+pub const STATUS_NOT_CAPABLE: ::NTSTATUS = 0xC0000429u32 as i32;
+pub const STATUS_REQUEST_OUT_OF_SEQUENCE: ::NTSTATUS = 0xC000042Au32 as i32;
+pub const STATUS_IMPLEMENTATION_LIMIT: ::NTSTATUS = 0xC000042Bu32 as i32;
+pub const STATUS_ELEVATION_REQUIRED: ::NTSTATUS = 0xC000042Cu32 as i32;
+pub const STATUS_NO_SECURITY_CONTEXT: ::NTSTATUS = 0xC000042Du32 as i32;
+pub const STATUS_PKU2U_CERT_FAILURE: ::NTSTATUS = 0xC000042Fu32 as i32;
+pub const STATUS_BEYOND_VDL: ::NTSTATUS = 0xC0000432u32 as i32;
+pub const STATUS_ENCOUNTERED_WRITE_IN_PROGRESS: ::NTSTATUS = 0xC0000433u32 as i32;
+pub const STATUS_PTE_CHANGED: ::NTSTATUS = 0xC0000434u32 as i32;
+pub const STATUS_PURGE_FAILED: ::NTSTATUS = 0xC0000435u32 as i32;
+pub const STATUS_CRED_REQUIRES_CONFIRMATION: ::NTSTATUS = 0xC0000440u32 as i32;
+pub const STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE: ::NTSTATUS = 0xC0000441u32 as i32;
+pub const STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER: ::NTSTATUS = 0xC0000442u32 as i32;
+pub const STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE: ::NTSTATUS = 0xC0000443u32 as i32;
+pub const STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE: ::NTSTATUS = 0xC0000444u32 as i32;
+pub const STATUS_CS_ENCRYPTION_FILE_NOT_CSE: ::NTSTATUS = 0xC0000445u32 as i32;
+pub const STATUS_INVALID_LABEL: ::NTSTATUS = 0xC0000446u32 as i32;
+pub const STATUS_DRIVER_PROCESS_TERMINATED: ::NTSTATUS = 0xC0000450u32 as i32;
+pub const STATUS_AMBIGUOUS_SYSTEM_DEVICE: ::NTSTATUS = 0xC0000451u32 as i32;
+pub const STATUS_SYSTEM_DEVICE_NOT_FOUND: ::NTSTATUS = 0xC0000452u32 as i32;
+pub const STATUS_RESTART_BOOT_APPLICATION: ::NTSTATUS = 0xC0000453u32 as i32;
+pub const STATUS_INSUFFICIENT_NVRAM_RESOURCES: ::NTSTATUS = 0xC0000454u32 as i32;
+pub const STATUS_INVALID_SESSION: ::NTSTATUS = 0xC0000455u32 as i32;
+pub const STATUS_THREAD_ALREADY_IN_SESSION: ::NTSTATUS = 0xC0000456u32 as i32;
+pub const STATUS_THREAD_NOT_IN_SESSION: ::NTSTATUS = 0xC0000457u32 as i32;
+pub const STATUS_INVALID_WEIGHT: ::NTSTATUS = 0xC0000458u32 as i32;
+pub const STATUS_REQUEST_PAUSED: ::NTSTATUS = 0xC0000459u32 as i32;
+pub const STATUS_NO_RANGES_PROCESSED: ::NTSTATUS = 0xC0000460u32 as i32;
+pub const STATUS_DISK_RESOURCES_EXHAUSTED: ::NTSTATUS = 0xC0000461u32 as i32;
+pub const STATUS_NEEDS_REMEDIATION: ::NTSTATUS = 0xC0000462u32 as i32;
+pub const STATUS_DEVICE_FEATURE_NOT_SUPPORTED: ::NTSTATUS = 0xC0000463u32 as i32;
+pub const STATUS_DEVICE_UNREACHABLE: ::NTSTATUS = 0xC0000464u32 as i32;
+pub const STATUS_INVALID_TOKEN: ::NTSTATUS = 0xC0000465u32 as i32;
+pub const STATUS_SERVER_UNAVAILABLE: ::NTSTATUS = 0xC0000466u32 as i32;
+pub const STATUS_FILE_NOT_AVAILABLE: ::NTSTATUS = 0xC0000467u32 as i32;
+pub const STATUS_DEVICE_INSUFFICIENT_RESOURCES: ::NTSTATUS = 0xC0000468u32 as i32;
+pub const STATUS_PACKAGE_UPDATING: ::NTSTATUS = 0xC0000469u32 as i32;
+pub const STATUS_NOT_READ_FROM_COPY: ::NTSTATUS = 0xC000046Au32 as i32;
+pub const STATUS_FT_WRITE_FAILURE: ::NTSTATUS = 0xC000046Bu32 as i32;
+pub const STATUS_FT_DI_SCAN_REQUIRED: ::NTSTATUS = 0xC000046Cu32 as i32;
+pub const STATUS_OBJECT_NOT_EXTERNALLY_BACKED: ::NTSTATUS = 0xC000046Du32 as i32;
+pub const STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN: ::NTSTATUS = 0xC000046Eu32 as i32;
+pub const STATUS_COMPRESSION_NOT_BENEFICIAL: ::NTSTATUS = 0xC000046Fu32 as i32;
+pub const STATUS_DATA_CHECKSUM_ERROR: ::NTSTATUS = 0xC0000470u32 as i32;
+pub const STATUS_INTERMIXED_KERNEL_EA_OPERATION: ::NTSTATUS = 0xC0000471u32 as i32;
+pub const STATUS_TRIM_READ_ZERO_NOT_SUPPORTED: ::NTSTATUS = 0xC0000472u32 as i32;
+pub const STATUS_TOO_MANY_SEGMENT_DESCRIPTORS: ::NTSTATUS = 0xC0000473u32 as i32;
+pub const STATUS_INVALID_OFFSET_ALIGNMENT: ::NTSTATUS = 0xC0000474u32 as i32;
+pub const STATUS_INVALID_FIELD_IN_PARAMETER_LIST: ::NTSTATUS = 0xC0000475u32 as i32;
+pub const STATUS_OPERATION_IN_PROGRESS: ::NTSTATUS = 0xC0000476u32 as i32;
+pub const STATUS_INVALID_INITIATOR_TARGET_PATH: ::NTSTATUS = 0xC0000477u32 as i32;
+pub const STATUS_SCRUB_DATA_DISABLED: ::NTSTATUS = 0xC0000478u32 as i32;
+pub const STATUS_NOT_REDUNDANT_STORAGE: ::NTSTATUS = 0xC0000479u32 as i32;
+pub const STATUS_RESIDENT_FILE_NOT_SUPPORTED: ::NTSTATUS = 0xC000047Au32 as i32;
+pub const STATUS_COMPRESSED_FILE_NOT_SUPPORTED: ::NTSTATUS = 0xC000047Bu32 as i32;
+pub const STATUS_DIRECTORY_NOT_SUPPORTED: ::NTSTATUS = 0xC000047Cu32 as i32;
+pub const STATUS_IO_OPERATION_TIMEOUT: ::NTSTATUS = 0xC000047Du32 as i32;
+pub const STATUS_SYSTEM_NEEDS_REMEDIATION: ::NTSTATUS = 0xC000047Eu32 as i32;
+pub const STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN: ::NTSTATUS = 0xC000047Fu32 as i32;
+pub const STATUS_SHARE_UNAVAILABLE: ::NTSTATUS = 0xC0000480u32 as i32;
+pub const STATUS_APISET_NOT_HOSTED: ::NTSTATUS = 0xC0000481u32 as i32;
+pub const STATUS_APISET_NOT_PRESENT: ::NTSTATUS = 0xC0000482u32 as i32;
+pub const STATUS_DEVICE_HARDWARE_ERROR: ::NTSTATUS = 0xC0000483u32 as i32;
+pub const STATUS_FIRMWARE_SLOT_INVALID: ::NTSTATUS = 0xC0000484u32 as i32;
+pub const STATUS_FIRMWARE_IMAGE_INVALID: ::NTSTATUS = 0xC0000485u32 as i32;
+pub const STATUS_STORAGE_TOPOLOGY_ID_MISMATCH: ::NTSTATUS = 0xC0000486u32 as i32;
+pub const STATUS_WIM_NOT_BOOTABLE: ::NTSTATUS = 0xC0000487u32 as i32;
+pub const STATUS_BLOCKED_BY_PARENTAL_CONTROLS: ::NTSTATUS = 0xC0000488u32 as i32;
+pub const STATUS_NEEDS_REGISTRATION: ::NTSTATUS = 0xC0000489u32 as i32;
+pub const STATUS_QUOTA_ACTIVITY: ::NTSTATUS = 0xC000048Au32 as i32;
+pub const STATUS_INVALID_TASK_NAME: ::NTSTATUS = 0xC0000500u32 as i32;
+pub const STATUS_INVALID_TASK_INDEX: ::NTSTATUS = 0xC0000501u32 as i32;
+pub const STATUS_THREAD_ALREADY_IN_TASK: ::NTSTATUS = 0xC0000502u32 as i32;
+pub const STATUS_CALLBACK_BYPASS: ::NTSTATUS = 0xC0000503u32 as i32;
+pub const STATUS_UNDEFINED_SCOPE: ::NTSTATUS = 0xC0000504u32 as i32;
+pub const STATUS_INVALID_CAP: ::NTSTATUS = 0xC0000505u32 as i32;
+pub const STATUS_NOT_GUI_PROCESS: ::NTSTATUS = 0xC0000506u32 as i32;
+pub const STATUS_DEVICE_HUNG: ::NTSTATUS = 0xC0000507u32 as i32;
+pub const STATUS_FAIL_FAST_EXCEPTION: ::NTSTATUS = 0xC0000602u32 as i32;
+pub const STATUS_IMAGE_CERT_REVOKED: ::NTSTATUS = 0xC0000603u32 as i32;
+pub const STATUS_DYNAMIC_CODE_BLOCKED: ::NTSTATUS = 0xC0000604u32 as i32;
+pub const STATUS_IMAGE_CERT_EXPIRED: ::NTSTATUS = 0xC0000605u32 as i32;
+pub const STATUS_PORT_CLOSED: ::NTSTATUS = 0xC0000700u32 as i32;
+pub const STATUS_MESSAGE_LOST: ::NTSTATUS = 0xC0000701u32 as i32;
+pub const STATUS_INVALID_MESSAGE: ::NTSTATUS = 0xC0000702u32 as i32;
+pub const STATUS_REQUEST_CANCELED: ::NTSTATUS = 0xC0000703u32 as i32;
+pub const STATUS_RECURSIVE_DISPATCH: ::NTSTATUS = 0xC0000704u32 as i32;
+pub const STATUS_LPC_RECEIVE_BUFFER_EXPECTED: ::NTSTATUS = 0xC0000705u32 as i32;
+pub const STATUS_LPC_INVALID_CONNECTION_USAGE: ::NTSTATUS = 0xC0000706u32 as i32;
+pub const STATUS_LPC_REQUESTS_NOT_ALLOWED: ::NTSTATUS = 0xC0000707u32 as i32;
+pub const STATUS_RESOURCE_IN_USE: ::NTSTATUS = 0xC0000708u32 as i32;
+pub const STATUS_HARDWARE_MEMORY_ERROR: ::NTSTATUS = 0xC0000709u32 as i32;
+pub const STATUS_THREADPOOL_HANDLE_EXCEPTION: ::NTSTATUS = 0xC000070Au32 as i32;
+pub const STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED: ::NTSTATUS = 0xC000070Bu32 as i32;
+pub const STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED: ::NTSTATUS = 0xC000070Cu32 as i32;
+pub const STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED: ::NTSTATUS = 0xC000070Du32 as i32;
+pub const STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED: ::NTSTATUS = 0xC000070Eu32 as i32;
+pub const STATUS_THREADPOOL_RELEASED_DURING_OPERATION: ::NTSTATUS = 0xC000070Fu32 as i32;
+pub const STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING: ::NTSTATUS = 0xC0000710u32 as i32;
+pub const STATUS_APC_RETURNED_WHILE_IMPERSONATING: ::NTSTATUS = 0xC0000711u32 as i32;
+pub const STATUS_PROCESS_IS_PROTECTED: ::NTSTATUS = 0xC0000712u32 as i32;
+pub const STATUS_MCA_EXCEPTION: ::NTSTATUS = 0xC0000713u32 as i32;
+pub const STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE: ::NTSTATUS = 0xC0000714u32 as i32;
+pub const STATUS_SYMLINK_CLASS_DISABLED: ::NTSTATUS = 0xC0000715u32 as i32;
+pub const STATUS_INVALID_IDN_NORMALIZATION: ::NTSTATUS = 0xC0000716u32 as i32;
+pub const STATUS_NO_UNICODE_TRANSLATION: ::NTSTATUS = 0xC0000717u32 as i32;
+pub const STATUS_ALREADY_REGISTERED: ::NTSTATUS = 0xC0000718u32 as i32;
+pub const STATUS_CONTEXT_MISMATCH: ::NTSTATUS = 0xC0000719u32 as i32;
+pub const STATUS_PORT_ALREADY_HAS_COMPLETION_LIST: ::NTSTATUS = 0xC000071Au32 as i32;
+pub const STATUS_CALLBACK_RETURNED_THREAD_PRIORITY: ::NTSTATUS = 0xC000071Bu32 as i32;
+pub const STATUS_INVALID_THREAD: ::NTSTATUS = 0xC000071Cu32 as i32;
+pub const STATUS_CALLBACK_RETURNED_TRANSACTION: ::NTSTATUS = 0xC000071Du32 as i32;
+pub const STATUS_CALLBACK_RETURNED_LDR_LOCK: ::NTSTATUS = 0xC000071Eu32 as i32;
+pub const STATUS_CALLBACK_RETURNED_LANG: ::NTSTATUS = 0xC000071Fu32 as i32;
+pub const STATUS_CALLBACK_RETURNED_PRI_BACK: ::NTSTATUS = 0xC0000720u32 as i32;
+pub const STATUS_CALLBACK_RETURNED_THREAD_AFFINITY: ::NTSTATUS = 0xC0000721u32 as i32;
+pub const STATUS_DISK_REPAIR_DISABLED: ::NTSTATUS = 0xC0000800u32 as i32;
+pub const STATUS_DS_DOMAIN_RENAME_IN_PROGRESS: ::NTSTATUS = 0xC0000801u32 as i32;
+pub const STATUS_DISK_QUOTA_EXCEEDED: ::NTSTATUS = 0xC0000802u32 as i32;
+pub const STATUS_DATA_LOST_REPAIR: ::NTSTATUS = 0x80000803u32 as i32;
+pub const STATUS_CONTENT_BLOCKED: ::NTSTATUS = 0xC0000804u32 as i32;
+pub const STATUS_BAD_CLUSTERS: ::NTSTATUS = 0xC0000805u32 as i32;
+pub const STATUS_VOLUME_DIRTY: ::NTSTATUS = 0xC0000806u32 as i32;
+pub const STATUS_DISK_REPAIR_REDIRECTED: ::NTSTATUS = 0x40000807;
+pub const STATUS_DISK_REPAIR_UNSUCCESSFUL: ::NTSTATUS = 0xC0000808u32 as i32;
+pub const STATUS_CORRUPT_LOG_OVERFULL: ::NTSTATUS = 0xC0000809u32 as i32;
+pub const STATUS_CORRUPT_LOG_CORRUPTED: ::NTSTATUS = 0xC000080Au32 as i32;
+pub const STATUS_CORRUPT_LOG_UNAVAILABLE: ::NTSTATUS = 0xC000080Bu32 as i32;
+pub const STATUS_CORRUPT_LOG_DELETED_FULL: ::NTSTATUS = 0xC000080Cu32 as i32;
+pub const STATUS_CORRUPT_LOG_CLEARED: ::NTSTATUS = 0xC000080Du32 as i32;
+pub const STATUS_ORPHAN_NAME_EXHAUSTED: ::NTSTATUS = 0xC000080Eu32 as i32;
+pub const STATUS_PROACTIVE_SCAN_IN_PROGRESS: ::NTSTATUS = 0xC000080Fu32 as i32;
+pub const STATUS_ENCRYPTED_IO_NOT_POSSIBLE: ::NTSTATUS = 0xC0000810u32 as i32;
+pub const STATUS_CORRUPT_LOG_UPLEVEL_RECORDS: ::NTSTATUS = 0xC0000811u32 as i32;
+pub const STATUS_FILE_CHECKED_OUT: ::NTSTATUS = 0xC0000901u32 as i32;
+pub const STATUS_CHECKOUT_REQUIRED: ::NTSTATUS = 0xC0000902u32 as i32;
+pub const STATUS_BAD_FILE_TYPE: ::NTSTATUS = 0xC0000903u32 as i32;
+pub const STATUS_FILE_TOO_LARGE: ::NTSTATUS = 0xC0000904u32 as i32;
+pub const STATUS_FORMS_AUTH_REQUIRED: ::NTSTATUS = 0xC0000905u32 as i32;
+pub const STATUS_VIRUS_INFECTED: ::NTSTATUS = 0xC0000906u32 as i32;
+pub const STATUS_VIRUS_DELETED: ::NTSTATUS = 0xC0000907u32 as i32;
+pub const STATUS_BAD_MCFG_TABLE: ::NTSTATUS = 0xC0000908u32 as i32;
+pub const STATUS_CANNOT_BREAK_OPLOCK: ::NTSTATUS = 0xC0000909u32 as i32;
+pub const STATUS_BAD_KEY: ::NTSTATUS = 0xC000090Au32 as i32;
+pub const STATUS_BAD_DATA: ::NTSTATUS = 0xC000090Bu32 as i32;
+pub const STATUS_NO_KEY: ::NTSTATUS = 0xC000090Cu32 as i32;
+pub const STATUS_FILE_HANDLE_REVOKED: ::NTSTATUS = 0xC0000910u32 as i32;
+pub const STATUS_WOW_ASSERTION: ::NTSTATUS = 0xC0009898u32 as i32;
+pub const STATUS_INVALID_SIGNATURE: ::NTSTATUS = 0xC000A000u32 as i32;
+pub const STATUS_HMAC_NOT_SUPPORTED: ::NTSTATUS = 0xC000A001u32 as i32;
+pub const STATUS_AUTH_TAG_MISMATCH: ::NTSTATUS = 0xC000A002u32 as i32;
+pub const STATUS_INVALID_STATE_TRANSITION: ::NTSTATUS = 0xC000A003u32 as i32;
+pub const STATUS_INVALID_KERNEL_INFO_VERSION: ::NTSTATUS = 0xC000A004u32 as i32;
+pub const STATUS_INVALID_PEP_INFO_VERSION: ::NTSTATUS = 0xC000A005u32 as i32;
+pub const STATUS_HANDLE_REVOKED: ::NTSTATUS = 0xC000A006u32 as i32;
+pub const STATUS_IPSEC_QUEUE_OVERFLOW: ::NTSTATUS = 0xC000A010u32 as i32;
+pub const STATUS_ND_QUEUE_OVERFLOW: ::NTSTATUS = 0xC000A011u32 as i32;
+pub const STATUS_HOPLIMIT_EXCEEDED: ::NTSTATUS = 0xC000A012u32 as i32;
+pub const STATUS_PROTOCOL_NOT_SUPPORTED: ::NTSTATUS = 0xC000A013u32 as i32;
+pub const STATUS_FASTPATH_REJECTED: ::NTSTATUS = 0xC000A014u32 as i32;
+pub const STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED: ::NTSTATUS = 0xC000A080u32 as i32;
+pub const STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR: ::NTSTATUS = 0xC000A081u32 as i32;
+pub const STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR: ::NTSTATUS = 0xC000A082u32 as i32;
+pub const STATUS_XML_PARSE_ERROR: ::NTSTATUS = 0xC000A083u32 as i32;
+pub const STATUS_XMLDSIG_ERROR: ::NTSTATUS = 0xC000A084u32 as i32;
+pub const STATUS_WRONG_COMPARTMENT: ::NTSTATUS = 0xC000A085u32 as i32;
+pub const STATUS_AUTHIP_FAILURE: ::NTSTATUS = 0xC000A086u32 as i32;
+pub const STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS: ::NTSTATUS = 0xC000A087u32 as i32;
+pub const STATUS_DS_OID_NOT_FOUND: ::NTSTATUS = 0xC000A088u32 as i32;
+pub const STATUS_INCORRECT_ACCOUNT_TYPE: ::NTSTATUS = 0xC000A089u32 as i32;
+pub const STATUS_HASH_NOT_SUPPORTED: ::NTSTATUS = 0xC000A100u32 as i32;
+pub const STATUS_HASH_NOT_PRESENT: ::NTSTATUS = 0xC000A101u32 as i32;
+pub const STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED: ::NTSTATUS = 0xC000A121u32 as i32;
+pub const STATUS_GPIO_CLIENT_INFORMATION_INVALID: ::NTSTATUS = 0xC000A122u32 as i32;
+pub const STATUS_GPIO_VERSION_NOT_SUPPORTED: ::NTSTATUS = 0xC000A123u32 as i32;
+pub const STATUS_GPIO_INVALID_REGISTRATION_PACKET: ::NTSTATUS = 0xC000A124u32 as i32;
+pub const STATUS_GPIO_OPERATION_DENIED: ::NTSTATUS = 0xC000A125u32 as i32;
+pub const STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE: ::NTSTATUS = 0xC000A126u32 as i32;
+pub const STATUS_GPIO_INTERRUPT_ALREADY_UNMASKED: ::NTSTATUS = 0x8000A127u32 as i32;
+pub const STATUS_CANNOT_SWITCH_RUNLEVEL: ::NTSTATUS = 0xC000A141u32 as i32;
+pub const STATUS_INVALID_RUNLEVEL_SETTING: ::NTSTATUS = 0xC000A142u32 as i32;
+pub const STATUS_RUNLEVEL_SWITCH_TIMEOUT: ::NTSTATUS = 0xC000A143u32 as i32;
+pub const STATUS_SERVICES_FAILED_AUTOSTART: ::NTSTATUS = 0x4000A144;
+pub const STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT: ::NTSTATUS = 0xC000A145u32 as i32;
+pub const STATUS_RUNLEVEL_SWITCH_IN_PROGRESS: ::NTSTATUS = 0xC000A146u32 as i32;
+pub const STATUS_NOT_APPCONTAINER: ::NTSTATUS = 0xC000A200u32 as i32;
+pub const STATUS_NOT_SUPPORTED_IN_APPCONTAINER: ::NTSTATUS = 0xC000A201u32 as i32;
+pub const STATUS_INVALID_PACKAGE_SID_LENGTH: ::NTSTATUS = 0xC000A202u32 as i32;
+pub const STATUS_APP_DATA_NOT_FOUND: ::NTSTATUS = 0xC000A281u32 as i32;
+pub const STATUS_APP_DATA_EXPIRED: ::NTSTATUS = 0xC000A282u32 as i32;
+pub const STATUS_APP_DATA_CORRUPT: ::NTSTATUS = 0xC000A283u32 as i32;
+pub const STATUS_APP_DATA_LIMIT_EXCEEDED: ::NTSTATUS = 0xC000A284u32 as i32;
+pub const STATUS_APP_DATA_REBOOT_REQUIRED: ::NTSTATUS = 0xC000A285u32 as i32;
+pub const STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED: ::NTSTATUS = 0xC000A2A1u32 as i32;
+pub const STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED: ::NTSTATUS = 0xC000A2A2u32 as i32;
+pub const STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED: ::NTSTATUS = 0xC000A2A3u32 as i32;
+pub const STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED: ::NTSTATUS = 0xC000A2A4u32 as i32;
+pub const DBG_NO_STATE_CHANGE: ::NTSTATUS = 0xC0010001u32 as i32;
+pub const DBG_APP_NOT_IDLE: ::NTSTATUS = 0xC0010002u32 as i32;
+pub const RPC_NT_INVALID_STRING_BINDING: ::NTSTATUS = 0xC0020001u32 as i32;
+pub const RPC_NT_WRONG_KIND_OF_BINDING: ::NTSTATUS = 0xC0020002u32 as i32;
+pub const RPC_NT_INVALID_BINDING: ::NTSTATUS = 0xC0020003u32 as i32;
+pub const RPC_NT_PROTSEQ_NOT_SUPPORTED: ::NTSTATUS = 0xC0020004u32 as i32;
+pub const RPC_NT_INVALID_RPC_PROTSEQ: ::NTSTATUS = 0xC0020005u32 as i32;
+pub const RPC_NT_INVALID_STRING_UUID: ::NTSTATUS = 0xC0020006u32 as i32;
+pub const RPC_NT_INVALID_ENDPOINT_FORMAT: ::NTSTATUS = 0xC0020007u32 as i32;
+pub const RPC_NT_INVALID_NET_ADDR: ::NTSTATUS = 0xC0020008u32 as i32;
+pub const RPC_NT_NO_ENDPOINT_FOUND: ::NTSTATUS = 0xC0020009u32 as i32;
+pub const RPC_NT_INVALID_TIMEOUT: ::NTSTATUS = 0xC002000Au32 as i32;
+pub const RPC_NT_OBJECT_NOT_FOUND: ::NTSTATUS = 0xC002000Bu32 as i32;
+pub const RPC_NT_ALREADY_REGISTERED: ::NTSTATUS = 0xC002000Cu32 as i32;
+pub const RPC_NT_TYPE_ALREADY_REGISTERED: ::NTSTATUS = 0xC002000Du32 as i32;
+pub const RPC_NT_ALREADY_LISTENING: ::NTSTATUS = 0xC002000Eu32 as i32;
+pub const RPC_NT_NO_PROTSEQS_REGISTERED: ::NTSTATUS = 0xC002000Fu32 as i32;
+pub const RPC_NT_NOT_LISTENING: ::NTSTATUS = 0xC0020010u32 as i32;
+pub const RPC_NT_UNKNOWN_MGR_TYPE: ::NTSTATUS = 0xC0020011u32 as i32;
+pub const RPC_NT_UNKNOWN_IF: ::NTSTATUS = 0xC0020012u32 as i32;
+pub const RPC_NT_NO_BINDINGS: ::NTSTATUS = 0xC0020013u32 as i32;
+pub const RPC_NT_NO_PROTSEQS: ::NTSTATUS = 0xC0020014u32 as i32;
+pub const RPC_NT_CANT_CREATE_ENDPOINT: ::NTSTATUS = 0xC0020015u32 as i32;
+pub const RPC_NT_OUT_OF_RESOURCES: ::NTSTATUS = 0xC0020016u32 as i32;
+pub const RPC_NT_SERVER_UNAVAILABLE: ::NTSTATUS = 0xC0020017u32 as i32;
+pub const RPC_NT_SERVER_TOO_BUSY: ::NTSTATUS = 0xC0020018u32 as i32;
+pub const RPC_NT_INVALID_NETWORK_OPTIONS: ::NTSTATUS = 0xC0020019u32 as i32;
+pub const RPC_NT_NO_CALL_ACTIVE: ::NTSTATUS = 0xC002001Au32 as i32;
+pub const RPC_NT_CALL_FAILED: ::NTSTATUS = 0xC002001Bu32 as i32;
+pub const RPC_NT_CALL_FAILED_DNE: ::NTSTATUS = 0xC002001Cu32 as i32;
+pub const RPC_NT_PROTOCOL_ERROR: ::NTSTATUS = 0xC002001Du32 as i32;
+pub const RPC_NT_UNSUPPORTED_TRANS_SYN: ::NTSTATUS = 0xC002001Fu32 as i32;
+pub const RPC_NT_UNSUPPORTED_TYPE: ::NTSTATUS = 0xC0020021u32 as i32;
+pub const RPC_NT_INVALID_TAG: ::NTSTATUS = 0xC0020022u32 as i32;
+pub const RPC_NT_INVALID_BOUND: ::NTSTATUS = 0xC0020023u32 as i32;
+pub const RPC_NT_NO_ENTRY_NAME: ::NTSTATUS = 0xC0020024u32 as i32;
+pub const RPC_NT_INVALID_NAME_SYNTAX: ::NTSTATUS = 0xC0020025u32 as i32;
+pub const RPC_NT_UNSUPPORTED_NAME_SYNTAX: ::NTSTATUS = 0xC0020026u32 as i32;
+pub const RPC_NT_UUID_NO_ADDRESS: ::NTSTATUS = 0xC0020028u32 as i32;
+pub const RPC_NT_DUPLICATE_ENDPOINT: ::NTSTATUS = 0xC0020029u32 as i32;
+pub const RPC_NT_UNKNOWN_AUTHN_TYPE: ::NTSTATUS = 0xC002002Au32 as i32;
+pub const RPC_NT_MAX_CALLS_TOO_SMALL: ::NTSTATUS = 0xC002002Bu32 as i32;
+pub const RPC_NT_STRING_TOO_LONG: ::NTSTATUS = 0xC002002Cu32 as i32;
+pub const RPC_NT_PROTSEQ_NOT_FOUND: ::NTSTATUS = 0xC002002Du32 as i32;
+pub const RPC_NT_PROCNUM_OUT_OF_RANGE: ::NTSTATUS = 0xC002002Eu32 as i32;
+pub const RPC_NT_BINDING_HAS_NO_AUTH: ::NTSTATUS = 0xC002002Fu32 as i32;
+pub const RPC_NT_UNKNOWN_AUTHN_SERVICE: ::NTSTATUS = 0xC0020030u32 as i32;
+pub const RPC_NT_UNKNOWN_AUTHN_LEVEL: ::NTSTATUS = 0xC0020031u32 as i32;
+pub const RPC_NT_INVALID_AUTH_IDENTITY: ::NTSTATUS = 0xC0020032u32 as i32;
+pub const RPC_NT_UNKNOWN_AUTHZ_SERVICE: ::NTSTATUS = 0xC0020033u32 as i32;
+pub const EPT_NT_INVALID_ENTRY: ::NTSTATUS = 0xC0020034u32 as i32;
+pub const EPT_NT_CANT_PERFORM_OP: ::NTSTATUS = 0xC0020035u32 as i32;
+pub const EPT_NT_NOT_REGISTERED: ::NTSTATUS = 0xC0020036u32 as i32;
+pub const RPC_NT_NOTHING_TO_EXPORT: ::NTSTATUS = 0xC0020037u32 as i32;
+pub const RPC_NT_INCOMPLETE_NAME: ::NTSTATUS = 0xC0020038u32 as i32;
+pub const RPC_NT_INVALID_VERS_OPTION: ::NTSTATUS = 0xC0020039u32 as i32;
+pub const RPC_NT_NO_MORE_MEMBERS: ::NTSTATUS = 0xC002003Au32 as i32;
+pub const RPC_NT_NOT_ALL_OBJS_UNEXPORTED: ::NTSTATUS = 0xC002003Bu32 as i32;
+pub const RPC_NT_INTERFACE_NOT_FOUND: ::NTSTATUS = 0xC002003Cu32 as i32;
+pub const RPC_NT_ENTRY_ALREADY_EXISTS: ::NTSTATUS = 0xC002003Du32 as i32;
+pub const RPC_NT_ENTRY_NOT_FOUND: ::NTSTATUS = 0xC002003Eu32 as i32;
+pub const RPC_NT_NAME_SERVICE_UNAVAILABLE: ::NTSTATUS = 0xC002003Fu32 as i32;
+pub const RPC_NT_INVALID_NAF_ID: ::NTSTATUS = 0xC0020040u32 as i32;
+pub const RPC_NT_CANNOT_SUPPORT: ::NTSTATUS = 0xC0020041u32 as i32;
+pub const RPC_NT_NO_CONTEXT_AVAILABLE: ::NTSTATUS = 0xC0020042u32 as i32;
+pub const RPC_NT_INTERNAL_ERROR: ::NTSTATUS = 0xC0020043u32 as i32;
+pub const RPC_NT_ZERO_DIVIDE: ::NTSTATUS = 0xC0020044u32 as i32;
+pub const RPC_NT_ADDRESS_ERROR: ::NTSTATUS = 0xC0020045u32 as i32;
+pub const RPC_NT_FP_DIV_ZERO: ::NTSTATUS = 0xC0020046u32 as i32;
+pub const RPC_NT_FP_UNDERFLOW: ::NTSTATUS = 0xC0020047u32 as i32;
+pub const RPC_NT_FP_OVERFLOW: ::NTSTATUS = 0xC0020048u32 as i32;
+pub const RPC_NT_NO_MORE_ENTRIES: ::NTSTATUS = 0xC0030001u32 as i32;
+pub const RPC_NT_SS_CHAR_TRANS_OPEN_FAIL: ::NTSTATUS = 0xC0030002u32 as i32;
+pub const RPC_NT_SS_CHAR_TRANS_SHORT_FILE: ::NTSTATUS = 0xC0030003u32 as i32;
+pub const RPC_NT_SS_IN_NULL_CONTEXT: ::NTSTATUS = 0xC0030004u32 as i32;
+pub const RPC_NT_SS_CONTEXT_MISMATCH: ::NTSTATUS = 0xC0030005u32 as i32;
+pub const RPC_NT_SS_CONTEXT_DAMAGED: ::NTSTATUS = 0xC0030006u32 as i32;
+pub const RPC_NT_SS_HANDLES_MISMATCH: ::NTSTATUS = 0xC0030007u32 as i32;
+pub const RPC_NT_SS_CANNOT_GET_CALL_HANDLE: ::NTSTATUS = 0xC0030008u32 as i32;
+pub const RPC_NT_NULL_REF_POINTER: ::NTSTATUS = 0xC0030009u32 as i32;
+pub const RPC_NT_ENUM_VALUE_OUT_OF_RANGE: ::NTSTATUS = 0xC003000Au32 as i32;
+pub const RPC_NT_BYTE_COUNT_TOO_SMALL: ::NTSTATUS = 0xC003000Bu32 as i32;
+pub const RPC_NT_BAD_STUB_DATA: ::NTSTATUS = 0xC003000Cu32 as i32;
+pub const RPC_NT_CALL_IN_PROGRESS: ::NTSTATUS = 0xC0020049u32 as i32;
+pub const RPC_NT_NO_MORE_BINDINGS: ::NTSTATUS = 0xC002004Au32 as i32;
+pub const RPC_NT_GROUP_MEMBER_NOT_FOUND: ::NTSTATUS = 0xC002004Bu32 as i32;
+pub const EPT_NT_CANT_CREATE: ::NTSTATUS = 0xC002004Cu32 as i32;
+pub const RPC_NT_INVALID_OBJECT: ::NTSTATUS = 0xC002004Du32 as i32;
+pub const RPC_NT_NO_INTERFACES: ::NTSTATUS = 0xC002004Fu32 as i32;
+pub const RPC_NT_CALL_CANCELLED: ::NTSTATUS = 0xC0020050u32 as i32;
+pub const RPC_NT_BINDING_INCOMPLETE: ::NTSTATUS = 0xC0020051u32 as i32;
+pub const RPC_NT_COMM_FAILURE: ::NTSTATUS = 0xC0020052u32 as i32;
+pub const RPC_NT_UNSUPPORTED_AUTHN_LEVEL: ::NTSTATUS = 0xC0020053u32 as i32;
+pub const RPC_NT_NO_PRINC_NAME: ::NTSTATUS = 0xC0020054u32 as i32;
+pub const RPC_NT_NOT_RPC_ERROR: ::NTSTATUS = 0xC0020055u32 as i32;
+pub const RPC_NT_UUID_LOCAL_ONLY: ::NTSTATUS = 0x40020056;
+pub const RPC_NT_SEC_PKG_ERROR: ::NTSTATUS = 0xC0020057u32 as i32;
+pub const RPC_NT_NOT_CANCELLED: ::NTSTATUS = 0xC0020058u32 as i32;
+pub const RPC_NT_INVALID_ES_ACTION: ::NTSTATUS = 0xC0030059u32 as i32;
+pub const RPC_NT_WRONG_ES_VERSION: ::NTSTATUS = 0xC003005Au32 as i32;
+pub const RPC_NT_WRONG_STUB_VERSION: ::NTSTATUS = 0xC003005Bu32 as i32;
+pub const RPC_NT_INVALID_PIPE_OBJECT: ::NTSTATUS = 0xC003005Cu32 as i32;
+pub const RPC_NT_INVALID_PIPE_OPERATION: ::NTSTATUS = 0xC003005Du32 as i32;
+pub const RPC_NT_WRONG_PIPE_VERSION: ::NTSTATUS = 0xC003005Eu32 as i32;
+pub const RPC_NT_PIPE_CLOSED: ::NTSTATUS = 0xC003005Fu32 as i32;
+pub const RPC_NT_PIPE_DISCIPLINE_ERROR: ::NTSTATUS = 0xC0030060u32 as i32;
+pub const RPC_NT_PIPE_EMPTY: ::NTSTATUS = 0xC0030061u32 as i32;
+pub const RPC_NT_INVALID_ASYNC_HANDLE: ::NTSTATUS = 0xC0020062u32 as i32;
+pub const RPC_NT_INVALID_ASYNC_CALL: ::NTSTATUS = 0xC0020063u32 as i32;
+pub const RPC_NT_PROXY_ACCESS_DENIED: ::NTSTATUS = 0xC0020064u32 as i32;
+pub const RPC_NT_COOKIE_AUTH_FAILED: ::NTSTATUS = 0xC0020065u32 as i32;
+pub const RPC_NT_SEND_INCOMPLETE: ::NTSTATUS = 0x400200AF;
+pub const STATUS_ACPI_INVALID_OPCODE: ::NTSTATUS = 0xC0140001u32 as i32;
+pub const STATUS_ACPI_STACK_OVERFLOW: ::NTSTATUS = 0xC0140002u32 as i32;
+pub const STATUS_ACPI_ASSERT_FAILED: ::NTSTATUS = 0xC0140003u32 as i32;
+pub const STATUS_ACPI_INVALID_INDEX: ::NTSTATUS = 0xC0140004u32 as i32;
+pub const STATUS_ACPI_INVALID_ARGUMENT: ::NTSTATUS = 0xC0140005u32 as i32;
+pub const STATUS_ACPI_FATAL: ::NTSTATUS = 0xC0140006u32 as i32;
+pub const STATUS_ACPI_INVALID_SUPERNAME: ::NTSTATUS = 0xC0140007u32 as i32;
+pub const STATUS_ACPI_INVALID_ARGTYPE: ::NTSTATUS = 0xC0140008u32 as i32;
+pub const STATUS_ACPI_INVALID_OBJTYPE: ::NTSTATUS = 0xC0140009u32 as i32;
+pub const STATUS_ACPI_INVALID_TARGETTYPE: ::NTSTATUS = 0xC014000Au32 as i32;
+pub const STATUS_ACPI_INCORRECT_ARGUMENT_COUNT: ::NTSTATUS = 0xC014000Bu32 as i32;
+pub const STATUS_ACPI_ADDRESS_NOT_MAPPED: ::NTSTATUS = 0xC014000Cu32 as i32;
+pub const STATUS_ACPI_INVALID_EVENTTYPE: ::NTSTATUS = 0xC014000Du32 as i32;
+pub const STATUS_ACPI_HANDLER_COLLISION: ::NTSTATUS = 0xC014000Eu32 as i32;
+pub const STATUS_ACPI_INVALID_DATA: ::NTSTATUS = 0xC014000Fu32 as i32;
+pub const STATUS_ACPI_INVALID_REGION: ::NTSTATUS = 0xC0140010u32 as i32;
+pub const STATUS_ACPI_INVALID_ACCESS_SIZE: ::NTSTATUS = 0xC0140011u32 as i32;
+pub const STATUS_ACPI_ACQUIRE_GLOBAL_LOCK: ::NTSTATUS = 0xC0140012u32 as i32;
+pub const STATUS_ACPI_ALREADY_INITIALIZED: ::NTSTATUS = 0xC0140013u32 as i32;
+pub const STATUS_ACPI_NOT_INITIALIZED: ::NTSTATUS = 0xC0140014u32 as i32;
+pub const STATUS_ACPI_INVALID_MUTEX_LEVEL: ::NTSTATUS = 0xC0140015u32 as i32;
+pub const STATUS_ACPI_MUTEX_NOT_OWNED: ::NTSTATUS = 0xC0140016u32 as i32;
+pub const STATUS_ACPI_MUTEX_NOT_OWNER: ::NTSTATUS = 0xC0140017u32 as i32;
+pub const STATUS_ACPI_RS_ACCESS: ::NTSTATUS = 0xC0140018u32 as i32;
+pub const STATUS_ACPI_INVALID_TABLE: ::NTSTATUS = 0xC0140019u32 as i32;
+pub const STATUS_ACPI_REG_HANDLER_FAILED: ::NTSTATUS = 0xC0140020u32 as i32;
+pub const STATUS_ACPI_POWER_REQUEST_FAILED: ::NTSTATUS = 0xC0140021u32 as i32;
+pub const STATUS_CTX_WINSTATION_NAME_INVALID: ::NTSTATUS = 0xC00A0001u32 as i32;
+pub const STATUS_CTX_INVALID_PD: ::NTSTATUS = 0xC00A0002u32 as i32;
+pub const STATUS_CTX_PD_NOT_FOUND: ::NTSTATUS = 0xC00A0003u32 as i32;
+pub const STATUS_CTX_CDM_CONNECT: ::NTSTATUS = 0x400A0004;
+pub const STATUS_CTX_CDM_DISCONNECT: ::NTSTATUS = 0x400A0005;
+pub const STATUS_CTX_CLOSE_PENDING: ::NTSTATUS = 0xC00A0006u32 as i32;
+pub const STATUS_CTX_NO_OUTBUF: ::NTSTATUS = 0xC00A0007u32 as i32;
+pub const STATUS_CTX_MODEM_INF_NOT_FOUND: ::NTSTATUS = 0xC00A0008u32 as i32;
+pub const STATUS_CTX_INVALID_MODEMNAME: ::NTSTATUS = 0xC00A0009u32 as i32;
+pub const STATUS_CTX_RESPONSE_ERROR: ::NTSTATUS = 0xC00A000Au32 as i32;
+pub const STATUS_CTX_MODEM_RESPONSE_TIMEOUT: ::NTSTATUS = 0xC00A000Bu32 as i32;
+pub const STATUS_CTX_MODEM_RESPONSE_NO_CARRIER: ::NTSTATUS = 0xC00A000Cu32 as i32;
+pub const STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE: ::NTSTATUS = 0xC00A000Du32 as i32;
+pub const STATUS_CTX_MODEM_RESPONSE_BUSY: ::NTSTATUS = 0xC00A000Eu32 as i32;
+pub const STATUS_CTX_MODEM_RESPONSE_VOICE: ::NTSTATUS = 0xC00A000Fu32 as i32;
+pub const STATUS_CTX_TD_ERROR: ::NTSTATUS = 0xC00A0010u32 as i32;
+pub const STATUS_CTX_LICENSE_CLIENT_INVALID: ::NTSTATUS = 0xC00A0012u32 as i32;
+pub const STATUS_CTX_LICENSE_NOT_AVAILABLE: ::NTSTATUS = 0xC00A0013u32 as i32;
+pub const STATUS_CTX_LICENSE_EXPIRED: ::NTSTATUS = 0xC00A0014u32 as i32;
+pub const STATUS_CTX_WINSTATION_NOT_FOUND: ::NTSTATUS = 0xC00A0015u32 as i32;
+pub const STATUS_CTX_WINSTATION_NAME_COLLISION: ::NTSTATUS = 0xC00A0016u32 as i32;
+pub const STATUS_CTX_WINSTATION_BUSY: ::NTSTATUS = 0xC00A0017u32 as i32;
+pub const STATUS_CTX_BAD_VIDEO_MODE: ::NTSTATUS = 0xC00A0018u32 as i32;
+pub const STATUS_CTX_GRAPHICS_INVALID: ::NTSTATUS = 0xC00A0022u32 as i32;
+pub const STATUS_CTX_NOT_CONSOLE: ::NTSTATUS = 0xC00A0024u32 as i32;
+pub const STATUS_CTX_CLIENT_QUERY_TIMEOUT: ::NTSTATUS = 0xC00A0026u32 as i32;
+pub const STATUS_CTX_CONSOLE_DISCONNECT: ::NTSTATUS = 0xC00A0027u32 as i32;
+pub const STATUS_CTX_CONSOLE_CONNECT: ::NTSTATUS = 0xC00A0028u32 as i32;
+pub const STATUS_CTX_SHADOW_DENIED: ::NTSTATUS = 0xC00A002Au32 as i32;
+pub const STATUS_CTX_WINSTATION_ACCESS_DENIED: ::NTSTATUS = 0xC00A002Bu32 as i32;
+pub const STATUS_CTX_INVALID_WD: ::NTSTATUS = 0xC00A002Eu32 as i32;
+pub const STATUS_CTX_WD_NOT_FOUND: ::NTSTATUS = 0xC00A002Fu32 as i32;
+pub const STATUS_CTX_SHADOW_INVALID: ::NTSTATUS = 0xC00A0030u32 as i32;
+pub const STATUS_CTX_SHADOW_DISABLED: ::NTSTATUS = 0xC00A0031u32 as i32;
+pub const STATUS_RDP_PROTOCOL_ERROR: ::NTSTATUS = 0xC00A0032u32 as i32;
+pub const STATUS_CTX_CLIENT_LICENSE_NOT_SET: ::NTSTATUS = 0xC00A0033u32 as i32;
+pub const STATUS_CTX_CLIENT_LICENSE_IN_USE: ::NTSTATUS = 0xC00A0034u32 as i32;
+pub const STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE: ::NTSTATUS = 0xC00A0035u32 as i32;
+pub const STATUS_CTX_SHADOW_NOT_RUNNING: ::NTSTATUS = 0xC00A0036u32 as i32;
+pub const STATUS_CTX_LOGON_DISABLED: ::NTSTATUS = 0xC00A0037u32 as i32;
+pub const STATUS_CTX_SECURITY_LAYER_ERROR: ::NTSTATUS = 0xC00A0038u32 as i32;
+pub const STATUS_TS_INCOMPATIBLE_SESSIONS: ::NTSTATUS = 0xC00A0039u32 as i32;
+pub const STATUS_TS_VIDEO_SUBSYSTEM_ERROR: ::NTSTATUS = 0xC00A003Au32 as i32;
+pub const STATUS_PNP_BAD_MPS_TABLE: ::NTSTATUS = 0xC0040035u32 as i32;
+pub const STATUS_PNP_TRANSLATION_FAILED: ::NTSTATUS = 0xC0040036u32 as i32;
+pub const STATUS_PNP_IRQ_TRANSLATION_FAILED: ::NTSTATUS = 0xC0040037u32 as i32;
+pub const STATUS_PNP_INVALID_ID: ::NTSTATUS = 0xC0040038u32 as i32;
+pub const STATUS_IO_REISSUE_AS_CACHED: ::NTSTATUS = 0xC0040039u32 as i32;
+pub const STATUS_MUI_FILE_NOT_FOUND: ::NTSTATUS = 0xC00B0001u32 as i32;
+pub const STATUS_MUI_INVALID_FILE: ::NTSTATUS = 0xC00B0002u32 as i32;
+pub const STATUS_MUI_INVALID_RC_CONFIG: ::NTSTATUS = 0xC00B0003u32 as i32;
+pub const STATUS_MUI_INVALID_LOCALE_NAME: ::NTSTATUS = 0xC00B0004u32 as i32;
+pub const STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME: ::NTSTATUS = 0xC00B0005u32 as i32;
+pub const STATUS_MUI_FILE_NOT_LOADED: ::NTSTATUS = 0xC00B0006u32 as i32;
+pub const STATUS_RESOURCE_ENUM_USER_STOP: ::NTSTATUS = 0xC00B0007u32 as i32;
+pub const STATUS_FLT_NO_HANDLER_DEFINED: ::NTSTATUS = 0xC01C0001u32 as i32;
+pub const STATUS_FLT_CONTEXT_ALREADY_DEFINED: ::NTSTATUS = 0xC01C0002u32 as i32;
+pub const STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST: ::NTSTATUS = 0xC01C0003u32 as i32;
+pub const STATUS_FLT_DISALLOW_FAST_IO: ::NTSTATUS = 0xC01C0004u32 as i32;
+pub const STATUS_FLT_INVALID_NAME_REQUEST: ::NTSTATUS = 0xC01C0005u32 as i32;
+pub const STATUS_FLT_NOT_SAFE_TO_POST_OPERATION: ::NTSTATUS = 0xC01C0006u32 as i32;
+pub const STATUS_FLT_NOT_INITIALIZED: ::NTSTATUS = 0xC01C0007u32 as i32;
+pub const STATUS_FLT_FILTER_NOT_READY: ::NTSTATUS = 0xC01C0008u32 as i32;
+pub const STATUS_FLT_POST_OPERATION_CLEANUP: ::NTSTATUS = 0xC01C0009u32 as i32;
+pub const STATUS_FLT_INTERNAL_ERROR: ::NTSTATUS = 0xC01C000Au32 as i32;
+pub const STATUS_FLT_DELETING_OBJECT: ::NTSTATUS = 0xC01C000Bu32 as i32;
+pub const STATUS_FLT_MUST_BE_NONPAGED_POOL: ::NTSTATUS = 0xC01C000Cu32 as i32;
+pub const STATUS_FLT_DUPLICATE_ENTRY: ::NTSTATUS = 0xC01C000Du32 as i32;
+pub const STATUS_FLT_CBDQ_DISABLED: ::NTSTATUS = 0xC01C000Eu32 as i32;
+pub const STATUS_FLT_DO_NOT_ATTACH: ::NTSTATUS = 0xC01C000Fu32 as i32;
+pub const STATUS_FLT_DO_NOT_DETACH: ::NTSTATUS = 0xC01C0010u32 as i32;
+pub const STATUS_FLT_INSTANCE_ALTITUDE_COLLISION: ::NTSTATUS = 0xC01C0011u32 as i32;
+pub const STATUS_FLT_INSTANCE_NAME_COLLISION: ::NTSTATUS = 0xC01C0012u32 as i32;
+pub const STATUS_FLT_FILTER_NOT_FOUND: ::NTSTATUS = 0xC01C0013u32 as i32;
+pub const STATUS_FLT_VOLUME_NOT_FOUND: ::NTSTATUS = 0xC01C0014u32 as i32;
+pub const STATUS_FLT_INSTANCE_NOT_FOUND: ::NTSTATUS = 0xC01C0015u32 as i32;
+pub const STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND: ::NTSTATUS = 0xC01C0016u32 as i32;
+pub const STATUS_FLT_INVALID_CONTEXT_REGISTRATION: ::NTSTATUS = 0xC01C0017u32 as i32;
+pub const STATUS_FLT_NAME_CACHE_MISS: ::NTSTATUS = 0xC01C0018u32 as i32;
+pub const STATUS_FLT_NO_DEVICE_OBJECT: ::NTSTATUS = 0xC01C0019u32 as i32;
+pub const STATUS_FLT_VOLUME_ALREADY_MOUNTED: ::NTSTATUS = 0xC01C001Au32 as i32;
+pub const STATUS_FLT_ALREADY_ENLISTED: ::NTSTATUS = 0xC01C001Bu32 as i32;
+pub const STATUS_FLT_CONTEXT_ALREADY_LINKED: ::NTSTATUS = 0xC01C001Cu32 as i32;
+pub const STATUS_FLT_NO_WAITER_FOR_REPLY: ::NTSTATUS = 0xC01C0020u32 as i32;
+pub const STATUS_FLT_REGISTRATION_BUSY: ::NTSTATUS = 0xC01C0023u32 as i32;
+pub const STATUS_SXS_SECTION_NOT_FOUND: ::NTSTATUS = 0xC0150001u32 as i32;
+pub const STATUS_SXS_CANT_GEN_ACTCTX: ::NTSTATUS = 0xC0150002u32 as i32;
+pub const STATUS_SXS_INVALID_ACTCTXDATA_FORMAT: ::NTSTATUS = 0xC0150003u32 as i32;
+pub const STATUS_SXS_ASSEMBLY_NOT_FOUND: ::NTSTATUS = 0xC0150004u32 as i32;
+pub const STATUS_SXS_MANIFEST_FORMAT_ERROR: ::NTSTATUS = 0xC0150005u32 as i32;
+pub const STATUS_SXS_MANIFEST_PARSE_ERROR: ::NTSTATUS = 0xC0150006u32 as i32;
+pub const STATUS_SXS_ACTIVATION_CONTEXT_DISABLED: ::NTSTATUS = 0xC0150007u32 as i32;
+pub const STATUS_SXS_KEY_NOT_FOUND: ::NTSTATUS = 0xC0150008u32 as i32;
+pub const STATUS_SXS_VERSION_CONFLICT: ::NTSTATUS = 0xC0150009u32 as i32;
+pub const STATUS_SXS_WRONG_SECTION_TYPE: ::NTSTATUS = 0xC015000Au32 as i32;
+pub const STATUS_SXS_THREAD_QUERIES_DISABLED: ::NTSTATUS = 0xC015000Bu32 as i32;
+pub const STATUS_SXS_ASSEMBLY_MISSING: ::NTSTATUS = 0xC015000Cu32 as i32;
+pub const STATUS_SXS_RELEASE_ACTIVATION_CONTEXT: ::NTSTATUS = 0x4015000D;
+pub const STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET: ::NTSTATUS = 0xC015000Eu32 as i32;
+pub const STATUS_SXS_EARLY_DEACTIVATION: ::NTSTATUS = 0xC015000Fu32 as i32;
+pub const STATUS_SXS_INVALID_DEACTIVATION: ::NTSTATUS = 0xC0150010u32 as i32;
+pub const STATUS_SXS_MULTIPLE_DEACTIVATION: ::NTSTATUS = 0xC0150011u32 as i32;
+pub const STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY: ::NTSTATUS = 0xC0150012u32 as i32;
+pub const STATUS_SXS_PROCESS_TERMINATION_REQUESTED: ::NTSTATUS = 0xC0150013u32 as i32;
+pub const STATUS_SXS_CORRUPT_ACTIVATION_STACK: ::NTSTATUS = 0xC0150014u32 as i32;
+pub const STATUS_SXS_CORRUPTION: ::NTSTATUS = 0xC0150015u32 as i32;
+pub const STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE: ::NTSTATUS = 0xC0150016u32 as i32;
+pub const STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME: ::NTSTATUS = 0xC0150017u32 as i32;
+pub const STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE: ::NTSTATUS = 0xC0150018u32 as i32;
+pub const STATUS_SXS_IDENTITY_PARSE_ERROR: ::NTSTATUS = 0xC0150019u32 as i32;
+pub const STATUS_SXS_COMPONENT_STORE_CORRUPT: ::NTSTATUS = 0xC015001Au32 as i32;
+pub const STATUS_SXS_FILE_HASH_MISMATCH: ::NTSTATUS = 0xC015001Bu32 as i32;
+pub const STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT: ::NTSTATUS = 0xC015001Cu32 as i32;
+pub const STATUS_SXS_IDENTITIES_DIFFERENT: ::NTSTATUS = 0xC015001Du32 as i32;
+pub const STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT: ::NTSTATUS = 0xC015001Eu32 as i32;
+pub const STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY: ::NTSTATUS = 0xC015001Fu32 as i32;
+pub const STATUS_ADVANCED_INSTALLER_FAILED: ::NTSTATUS = 0xC0150020u32 as i32;
+pub const STATUS_XML_ENCODING_MISMATCH: ::NTSTATUS = 0xC0150021u32 as i32;
+pub const STATUS_SXS_MANIFEST_TOO_BIG: ::NTSTATUS = 0xC0150022u32 as i32;
+pub const STATUS_SXS_SETTING_NOT_REGISTERED: ::NTSTATUS = 0xC0150023u32 as i32;
+pub const STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE: ::NTSTATUS = 0xC0150024u32 as i32;
+pub const STATUS_SMI_PRIMITIVE_INSTALLER_FAILED: ::NTSTATUS = 0xC0150025u32 as i32;
+pub const STATUS_GENERIC_COMMAND_FAILED: ::NTSTATUS = 0xC0150026u32 as i32;
+pub const STATUS_SXS_FILE_HASH_MISSING: ::NTSTATUS = 0xC0150027u32 as i32;
+pub const STATUS_CLUSTER_INVALID_NODE: ::NTSTATUS = 0xC0130001u32 as i32;
+pub const STATUS_CLUSTER_NODE_EXISTS: ::NTSTATUS = 0xC0130002u32 as i32;
+pub const STATUS_CLUSTER_JOIN_IN_PROGRESS: ::NTSTATUS = 0xC0130003u32 as i32;
+pub const STATUS_CLUSTER_NODE_NOT_FOUND: ::NTSTATUS = 0xC0130004u32 as i32;
+pub const STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND: ::NTSTATUS = 0xC0130005u32 as i32;
+pub const STATUS_CLUSTER_NETWORK_EXISTS: ::NTSTATUS = 0xC0130006u32 as i32;
+pub const STATUS_CLUSTER_NETWORK_NOT_FOUND: ::NTSTATUS = 0xC0130007u32 as i32;
+pub const STATUS_CLUSTER_NETINTERFACE_EXISTS: ::NTSTATUS = 0xC0130008u32 as i32;
+pub const STATUS_CLUSTER_NETINTERFACE_NOT_FOUND: ::NTSTATUS = 0xC0130009u32 as i32;
+pub const STATUS_CLUSTER_INVALID_REQUEST: ::NTSTATUS = 0xC013000Au32 as i32;
+pub const STATUS_CLUSTER_INVALID_NETWORK_PROVIDER: ::NTSTATUS = 0xC013000Bu32 as i32;
+pub const STATUS_CLUSTER_NODE_DOWN: ::NTSTATUS = 0xC013000Cu32 as i32;
+pub const STATUS_CLUSTER_NODE_UNREACHABLE: ::NTSTATUS = 0xC013000Du32 as i32;
+pub const STATUS_CLUSTER_NODE_NOT_MEMBER: ::NTSTATUS = 0xC013000Eu32 as i32;
+pub const STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS: ::NTSTATUS = 0xC013000Fu32 as i32;
+pub const STATUS_CLUSTER_INVALID_NETWORK: ::NTSTATUS = 0xC0130010u32 as i32;
+pub const STATUS_CLUSTER_NO_NET_ADAPTERS: ::NTSTATUS = 0xC0130011u32 as i32;
+pub const STATUS_CLUSTER_NODE_UP: ::NTSTATUS = 0xC0130012u32 as i32;
+pub const STATUS_CLUSTER_NODE_PAUSED: ::NTSTATUS = 0xC0130013u32 as i32;
+pub const STATUS_CLUSTER_NODE_NOT_PAUSED: ::NTSTATUS = 0xC0130014u32 as i32;
+pub const STATUS_CLUSTER_NO_SECURITY_CONTEXT: ::NTSTATUS = 0xC0130015u32 as i32;
+pub const STATUS_CLUSTER_NETWORK_NOT_INTERNAL: ::NTSTATUS = 0xC0130016u32 as i32;
+pub const STATUS_CLUSTER_POISONED: ::NTSTATUS = 0xC0130017u32 as i32;
+pub const STATUS_CLUSTER_NON_CSV_PATH: ::NTSTATUS = 0xC0130018u32 as i32;
+pub const STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL: ::NTSTATUS = 0xC0130019u32 as i32;
+pub const STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS: ::NTSTATUS = 0xC0130020u32 as i32;
+pub const STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR: ::NTSTATUS = 0xC0130021u32 as i32;
+pub const STATUS_CLUSTER_CSV_REDIRECTED: ::NTSTATUS = 0xC0130022u32 as i32;
+pub const STATUS_CLUSTER_CSV_NOT_REDIRECTED: ::NTSTATUS = 0xC0130023u32 as i32;
+pub const STATUS_CLUSTER_CSV_VOLUME_DRAINING: ::NTSTATUS = 0xC0130024u32 as i32;
+pub const STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS: ::NTSTATUS = 0xC0130025u32 as i32;
+pub const STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL: ::NTSTATUS = 0xC0130026u32 as i32;
+pub const STATUS_CLUSTER_CSV_NO_SNAPSHOTS: ::NTSTATUS = 0xC0130027u32 as i32;
+pub const STATUS_CSV_IO_PAUSE_TIMEOUT: ::NTSTATUS = 0xC0130028u32 as i32;
+pub const STATUS_TRANSACTIONAL_CONFLICT: ::NTSTATUS = 0xC0190001u32 as i32;
+pub const STATUS_INVALID_TRANSACTION: ::NTSTATUS = 0xC0190002u32 as i32;
+pub const STATUS_TRANSACTION_NOT_ACTIVE: ::NTSTATUS = 0xC0190003u32 as i32;
+pub const STATUS_TM_INITIALIZATION_FAILED: ::NTSTATUS = 0xC0190004u32 as i32;
+pub const STATUS_RM_NOT_ACTIVE: ::NTSTATUS = 0xC0190005u32 as i32;
+pub const STATUS_RM_METADATA_CORRUPT: ::NTSTATUS = 0xC0190006u32 as i32;
+pub const STATUS_TRANSACTION_NOT_JOINED: ::NTSTATUS = 0xC0190007u32 as i32;
+pub const STATUS_DIRECTORY_NOT_RM: ::NTSTATUS = 0xC0190008u32 as i32;
+pub const STATUS_COULD_NOT_RESIZE_LOG: ::NTSTATUS = 0x80190009u32 as i32;
+pub const STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE: ::NTSTATUS = 0xC019000Au32 as i32;
+pub const STATUS_LOG_RESIZE_INVALID_SIZE: ::NTSTATUS = 0xC019000Bu32 as i32;
+pub const STATUS_REMOTE_FILE_VERSION_MISMATCH: ::NTSTATUS = 0xC019000Cu32 as i32;
+pub const STATUS_CRM_PROTOCOL_ALREADY_EXISTS: ::NTSTATUS = 0xC019000Fu32 as i32;
+pub const STATUS_TRANSACTION_PROPAGATION_FAILED: ::NTSTATUS = 0xC0190010u32 as i32;
+pub const STATUS_CRM_PROTOCOL_NOT_FOUND: ::NTSTATUS = 0xC0190011u32 as i32;
+pub const STATUS_TRANSACTION_SUPERIOR_EXISTS: ::NTSTATUS = 0xC0190012u32 as i32;
+pub const STATUS_TRANSACTION_REQUEST_NOT_VALID: ::NTSTATUS = 0xC0190013u32 as i32;
+pub const STATUS_TRANSACTION_NOT_REQUESTED: ::NTSTATUS = 0xC0190014u32 as i32;
+pub const STATUS_TRANSACTION_ALREADY_ABORTED: ::NTSTATUS = 0xC0190015u32 as i32;
+pub const STATUS_TRANSACTION_ALREADY_COMMITTED: ::NTSTATUS = 0xC0190016u32 as i32;
+pub const STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER: ::NTSTATUS = 0xC0190017u32 as i32;
+pub const STATUS_CURRENT_TRANSACTION_NOT_VALID: ::NTSTATUS = 0xC0190018u32 as i32;
+pub const STATUS_LOG_GROWTH_FAILED: ::NTSTATUS = 0xC0190019u32 as i32;
+pub const STATUS_OBJECT_NO_LONGER_EXISTS: ::NTSTATUS = 0xC0190021u32 as i32;
+pub const STATUS_STREAM_MINIVERSION_NOT_FOUND: ::NTSTATUS = 0xC0190022u32 as i32;
+pub const STATUS_STREAM_MINIVERSION_NOT_VALID: ::NTSTATUS = 0xC0190023u32 as i32;
+pub const STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION: ::NTSTATUS = 0xC0190024u32 as i32;
+pub const STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT: ::NTSTATUS = 0xC0190025u32 as i32;
+pub const STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS: ::NTSTATUS = 0xC0190026u32 as i32;
+pub const STATUS_HANDLE_NO_LONGER_VALID: ::NTSTATUS = 0xC0190028u32 as i32;
+pub const STATUS_NO_TXF_METADATA: ::NTSTATUS = 0x80190029u32 as i32;
+pub const STATUS_LOG_CORRUPTION_DETECTED: ::NTSTATUS = 0xC0190030u32 as i32;
+pub const STATUS_CANT_RECOVER_WITH_HANDLE_OPEN: ::NTSTATUS = 0x80190031u32 as i32;
+pub const STATUS_RM_DISCONNECTED: ::NTSTATUS = 0xC0190032u32 as i32;
+pub const STATUS_ENLISTMENT_NOT_SUPERIOR: ::NTSTATUS = 0xC0190033u32 as i32;
+pub const STATUS_RECOVERY_NOT_NEEDED: ::NTSTATUS = 0x40190034;
+pub const STATUS_RM_ALREADY_STARTED: ::NTSTATUS = 0x40190035;
+pub const STATUS_FILE_IDENTITY_NOT_PERSISTENT: ::NTSTATUS = 0xC0190036u32 as i32;
+pub const STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY: ::NTSTATUS = 0xC0190037u32 as i32;
+pub const STATUS_CANT_CROSS_RM_BOUNDARY: ::NTSTATUS = 0xC0190038u32 as i32;
+pub const STATUS_TXF_DIR_NOT_EMPTY: ::NTSTATUS = 0xC0190039u32 as i32;
+pub const STATUS_INDOUBT_TRANSACTIONS_EXIST: ::NTSTATUS = 0xC019003Au32 as i32;
+pub const STATUS_TM_VOLATILE: ::NTSTATUS = 0xC019003Bu32 as i32;
+pub const STATUS_ROLLBACK_TIMER_EXPIRED: ::NTSTATUS = 0xC019003Cu32 as i32;
+pub const STATUS_TXF_ATTRIBUTE_CORRUPT: ::NTSTATUS = 0xC019003Du32 as i32;
+pub const STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION: ::NTSTATUS = 0xC019003Eu32 as i32;
+pub const STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED: ::NTSTATUS = 0xC019003Fu32 as i32;
+pub const STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE: ::NTSTATUS = 0xC0190040u32 as i32;
+pub const STATUS_TXF_METADATA_ALREADY_PRESENT: ::NTSTATUS = 0x80190041u32 as i32;
+pub const STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET: ::NTSTATUS = 0x80190042u32 as i32;
+pub const STATUS_TRANSACTION_REQUIRED_PROMOTION: ::NTSTATUS = 0xC0190043u32 as i32;
+pub const STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION: ::NTSTATUS = 0xC0190044u32 as i32;
+pub const STATUS_TRANSACTIONS_NOT_FROZEN: ::NTSTATUS = 0xC0190045u32 as i32;
+pub const STATUS_TRANSACTION_FREEZE_IN_PROGRESS: ::NTSTATUS = 0xC0190046u32 as i32;
+pub const STATUS_NOT_SNAPSHOT_VOLUME: ::NTSTATUS = 0xC0190047u32 as i32;
+pub const STATUS_NO_SAVEPOINT_WITH_OPEN_FILES: ::NTSTATUS = 0xC0190048u32 as i32;
+pub const STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION: ::NTSTATUS = 0xC0190049u32 as i32;
+pub const STATUS_TM_IDENTITY_MISMATCH: ::NTSTATUS = 0xC019004Au32 as i32;
+pub const STATUS_FLOATED_SECTION: ::NTSTATUS = 0xC019004Bu32 as i32;
+pub const STATUS_CANNOT_ACCEPT_TRANSACTED_WORK: ::NTSTATUS = 0xC019004Cu32 as i32;
+pub const STATUS_CANNOT_ABORT_TRANSACTIONS: ::NTSTATUS = 0xC019004Du32 as i32;
+pub const STATUS_TRANSACTION_NOT_FOUND: ::NTSTATUS = 0xC019004Eu32 as i32;
+pub const STATUS_RESOURCEMANAGER_NOT_FOUND: ::NTSTATUS = 0xC019004Fu32 as i32;
+pub const STATUS_ENLISTMENT_NOT_FOUND: ::NTSTATUS = 0xC0190050u32 as i32;
+pub const STATUS_TRANSACTIONMANAGER_NOT_FOUND: ::NTSTATUS = 0xC0190051u32 as i32;
+pub const STATUS_TRANSACTIONMANAGER_NOT_ONLINE: ::NTSTATUS = 0xC0190052u32 as i32;
+pub const STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION: ::NTSTATUS = 0xC0190053u32 as i32;
+pub const STATUS_TRANSACTION_NOT_ROOT: ::NTSTATUS = 0xC0190054u32 as i32;
+pub const STATUS_TRANSACTION_OBJECT_EXPIRED: ::NTSTATUS = 0xC0190055u32 as i32;
+pub const STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION: ::NTSTATUS = 0xC0190056u32 as i32;
+pub const STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED: ::NTSTATUS = 0xC0190057u32 as i32;
+pub const STATUS_TRANSACTION_RECORD_TOO_LONG: ::NTSTATUS = 0xC0190058u32 as i32;
+pub const STATUS_NO_LINK_TRACKING_IN_TRANSACTION: ::NTSTATUS = 0xC0190059u32 as i32;
+pub const STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION: ::NTSTATUS = 0xC019005Au32 as i32;
+pub const STATUS_TRANSACTION_INTEGRITY_VIOLATED: ::NTSTATUS = 0xC019005Bu32 as i32;
+pub const STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH: ::NTSTATUS = 0xC019005Cu32 as i32;
+pub const STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT: ::NTSTATUS = 0xC019005Du32 as i32;
+pub const STATUS_TRANSACTION_MUST_WRITETHROUGH: ::NTSTATUS = 0xC019005Eu32 as i32;
+pub const STATUS_TRANSACTION_NO_SUPERIOR: ::NTSTATUS = 0xC019005Fu32 as i32;
+pub const STATUS_EXPIRED_HANDLE: ::NTSTATUS = 0xC0190060u32 as i32;
+pub const STATUS_TRANSACTION_NOT_ENLISTED: ::NTSTATUS = 0xC0190061u32 as i32;
+pub const STATUS_LOG_SECTOR_INVALID: ::NTSTATUS = 0xC01A0001u32 as i32;
+pub const STATUS_LOG_SECTOR_PARITY_INVALID: ::NTSTATUS = 0xC01A0002u32 as i32;
+pub const STATUS_LOG_SECTOR_REMAPPED: ::NTSTATUS = 0xC01A0003u32 as i32;
+pub const STATUS_LOG_BLOCK_INCOMPLETE: ::NTSTATUS = 0xC01A0004u32 as i32;
+pub const STATUS_LOG_INVALID_RANGE: ::NTSTATUS = 0xC01A0005u32 as i32;
+pub const STATUS_LOG_BLOCKS_EXHAUSTED: ::NTSTATUS = 0xC01A0006u32 as i32;
+pub const STATUS_LOG_READ_CONTEXT_INVALID: ::NTSTATUS = 0xC01A0007u32 as i32;
+pub const STATUS_LOG_RESTART_INVALID: ::NTSTATUS = 0xC01A0008u32 as i32;
+pub const STATUS_LOG_BLOCK_VERSION: ::NTSTATUS = 0xC01A0009u32 as i32;
+pub const STATUS_LOG_BLOCK_INVALID: ::NTSTATUS = 0xC01A000Au32 as i32;
+pub const STATUS_LOG_READ_MODE_INVALID: ::NTSTATUS = 0xC01A000Bu32 as i32;
+pub const STATUS_LOG_NO_RESTART: ::NTSTATUS = 0x401A000C;
+pub const STATUS_LOG_METADATA_CORRUPT: ::NTSTATUS = 0xC01A000Du32 as i32;
+pub const STATUS_LOG_METADATA_INVALID: ::NTSTATUS = 0xC01A000Eu32 as i32;
+pub const STATUS_LOG_METADATA_INCONSISTENT: ::NTSTATUS = 0xC01A000Fu32 as i32;
+pub const STATUS_LOG_RESERVATION_INVALID: ::NTSTATUS = 0xC01A0010u32 as i32;
+pub const STATUS_LOG_CANT_DELETE: ::NTSTATUS = 0xC01A0011u32 as i32;
+pub const STATUS_LOG_CONTAINER_LIMIT_EXCEEDED: ::NTSTATUS = 0xC01A0012u32 as i32;
+pub const STATUS_LOG_START_OF_LOG: ::NTSTATUS = 0xC01A0013u32 as i32;
+pub const STATUS_LOG_POLICY_ALREADY_INSTALLED: ::NTSTATUS = 0xC01A0014u32 as i32;
+pub const STATUS_LOG_POLICY_NOT_INSTALLED: ::NTSTATUS = 0xC01A0015u32 as i32;
+pub const STATUS_LOG_POLICY_INVALID: ::NTSTATUS = 0xC01A0016u32 as i32;
+pub const STATUS_LOG_POLICY_CONFLICT: ::NTSTATUS = 0xC01A0017u32 as i32;
+pub const STATUS_LOG_PINNED_ARCHIVE_TAIL: ::NTSTATUS = 0xC01A0018u32 as i32;
+pub const STATUS_LOG_RECORD_NONEXISTENT: ::NTSTATUS = 0xC01A0019u32 as i32;
+pub const STATUS_LOG_RECORDS_RESERVED_INVALID: ::NTSTATUS = 0xC01A001Au32 as i32;
+pub const STATUS_LOG_SPACE_RESERVED_INVALID: ::NTSTATUS = 0xC01A001Bu32 as i32;
+pub const STATUS_LOG_TAIL_INVALID: ::NTSTATUS = 0xC01A001Cu32 as i32;
+pub const STATUS_LOG_FULL: ::NTSTATUS = 0xC01A001Du32 as i32;
+pub const STATUS_LOG_MULTIPLEXED: ::NTSTATUS = 0xC01A001Eu32 as i32;
+pub const STATUS_LOG_DEDICATED: ::NTSTATUS = 0xC01A001Fu32 as i32;
+pub const STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS: ::NTSTATUS = 0xC01A0020u32 as i32;
+pub const STATUS_LOG_ARCHIVE_IN_PROGRESS: ::NTSTATUS = 0xC01A0021u32 as i32;
+pub const STATUS_LOG_EPHEMERAL: ::NTSTATUS = 0xC01A0022u32 as i32;
+pub const STATUS_LOG_NOT_ENOUGH_CONTAINERS: ::NTSTATUS = 0xC01A0023u32 as i32;
+pub const STATUS_LOG_CLIENT_ALREADY_REGISTERED: ::NTSTATUS = 0xC01A0024u32 as i32;
+pub const STATUS_LOG_CLIENT_NOT_REGISTERED: ::NTSTATUS = 0xC01A0025u32 as i32;
+pub const STATUS_LOG_FULL_HANDLER_IN_PROGRESS: ::NTSTATUS = 0xC01A0026u32 as i32;
+pub const STATUS_LOG_CONTAINER_READ_FAILED: ::NTSTATUS = 0xC01A0027u32 as i32;
+pub const STATUS_LOG_CONTAINER_WRITE_FAILED: ::NTSTATUS = 0xC01A0028u32 as i32;
+pub const STATUS_LOG_CONTAINER_OPEN_FAILED: ::NTSTATUS = 0xC01A0029u32 as i32;
+pub const STATUS_LOG_CONTAINER_STATE_INVALID: ::NTSTATUS = 0xC01A002Au32 as i32;
+pub const STATUS_LOG_STATE_INVALID: ::NTSTATUS = 0xC01A002Bu32 as i32;
+pub const STATUS_LOG_PINNED: ::NTSTATUS = 0xC01A002Cu32 as i32;
+pub const STATUS_LOG_METADATA_FLUSH_FAILED: ::NTSTATUS = 0xC01A002Du32 as i32;
+pub const STATUS_LOG_INCONSISTENT_SECURITY: ::NTSTATUS = 0xC01A002Eu32 as i32;
+pub const STATUS_LOG_APPENDED_FLUSH_FAILED: ::NTSTATUS = 0xC01A002Fu32 as i32;
+pub const STATUS_LOG_PINNED_RESERVATION: ::NTSTATUS = 0xC01A0030u32 as i32;
+pub const STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD: ::NTSTATUS = 0xC01B00EAu32 as i32;
+pub const STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED: ::NTSTATUS = 0x801B00EBu32 as i32;
+pub const STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST: ::NTSTATUS = 0x401B00EC;
+pub const STATUS_MONITOR_NO_DESCRIPTOR: ::NTSTATUS = 0xC01D0001u32 as i32;
+pub const STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT: ::NTSTATUS = 0xC01D0002u32 as i32;
+pub const STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM: ::NTSTATUS = 0xC01D0003u32 as i32;
+pub const STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK: ::NTSTATUS = 0xC01D0004u32 as i32;
+pub const STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED: ::NTSTATUS = 0xC01D0005u32 as i32;
+pub const STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK: ::NTSTATUS = 0xC01D0006u32 as i32;
+pub const STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK: ::NTSTATUS = 0xC01D0007u32 as i32;
+pub const STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA: ::NTSTATUS = 0xC01D0008u32 as i32;
+pub const STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK: ::NTSTATUS = 0xC01D0009u32 as i32;
+pub const STATUS_MONITOR_INVALID_MANUFACTURE_DATE: ::NTSTATUS = 0xC01D000Au32 as i32;
+pub const STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER: ::NTSTATUS = 0xC01E0000u32 as i32;
+pub const STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER: ::NTSTATUS = 0xC01E0001u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER: ::NTSTATUS = 0xC01E0002u32 as i32;
+pub const STATUS_GRAPHICS_ADAPTER_WAS_RESET: ::NTSTATUS = 0xC01E0003u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_DRIVER_MODEL: ::NTSTATUS = 0xC01E0004u32 as i32;
+pub const STATUS_GRAPHICS_PRESENT_MODE_CHANGED: ::NTSTATUS = 0xC01E0005u32 as i32;
+pub const STATUS_GRAPHICS_PRESENT_OCCLUDED: ::NTSTATUS = 0xC01E0006u32 as i32;
+pub const STATUS_GRAPHICS_PRESENT_DENIED: ::NTSTATUS = 0xC01E0007u32 as i32;
+pub const STATUS_GRAPHICS_CANNOTCOLORCONVERT: ::NTSTATUS = 0xC01E0008u32 as i32;
+pub const STATUS_GRAPHICS_DRIVER_MISMATCH: ::NTSTATUS = 0xC01E0009u32 as i32;
+pub const STATUS_GRAPHICS_PARTIAL_DATA_POPULATED: ::NTSTATUS = 0x401E000A;
+pub const STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED: ::NTSTATUS = 0xC01E000Bu32 as i32;
+pub const STATUS_GRAPHICS_PRESENT_UNOCCLUDED: ::NTSTATUS = 0xC01E000Cu32 as i32;
+pub const STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE: ::NTSTATUS = 0xC01E000Du32 as i32;
+pub const STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED: ::NTSTATUS = 0xC01E000Eu32 as i32;
+pub const STATUS_GRAPHICS_NO_VIDEO_MEMORY: ::NTSTATUS = 0xC01E0100u32 as i32;
+pub const STATUS_GRAPHICS_CANT_LOCK_MEMORY: ::NTSTATUS = 0xC01E0101u32 as i32;
+pub const STATUS_GRAPHICS_ALLOCATION_BUSY: ::NTSTATUS = 0xC01E0102u32 as i32;
+pub const STATUS_GRAPHICS_TOO_MANY_REFERENCES: ::NTSTATUS = 0xC01E0103u32 as i32;
+pub const STATUS_GRAPHICS_TRY_AGAIN_LATER: ::NTSTATUS = 0xC01E0104u32 as i32;
+pub const STATUS_GRAPHICS_TRY_AGAIN_NOW: ::NTSTATUS = 0xC01E0105u32 as i32;
+pub const STATUS_GRAPHICS_ALLOCATION_INVALID: ::NTSTATUS = 0xC01E0106u32 as i32;
+pub const STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE: ::NTSTATUS = 0xC01E0107u32 as i32;
+pub const STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED: ::NTSTATUS = 0xC01E0108u32 as i32;
+pub const STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION: ::NTSTATUS = 0xC01E0109u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE: ::NTSTATUS = 0xC01E0110u32 as i32;
+pub const STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION: ::NTSTATUS = 0xC01E0111u32 as i32;
+pub const STATUS_GRAPHICS_ALLOCATION_CLOSED: ::NTSTATUS = 0xC01E0112u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE: ::NTSTATUS = 0xC01E0113u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE: ::NTSTATUS = 0xC01E0114u32 as i32;
+pub const STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE: ::NTSTATUS = 0xC01E0115u32 as i32;
+pub const STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST: ::NTSTATUS = 0xC01E0116u32 as i32;
+pub const STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE: ::NTSTATUS = 0xC01E0200u32 as i32;
+pub const STATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION: ::NTSTATUS = 0x401E0201;
+pub const STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY: ::NTSTATUS = 0xC01E0300u32 as i32;
+pub const STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0301u32 as i32;
+pub const STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0302u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDPN: ::NTSTATUS = 0xC01E0303u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE: ::NTSTATUS = 0xC01E0304u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET: ::NTSTATUS = 0xC01E0305u32 as i32;
+pub const STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0306u32 as i32;
+pub const STATUS_GRAPHICS_MODE_NOT_PINNED: ::NTSTATUS = 0x401E0307;
+pub const STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET: ::NTSTATUS = 0xC01E0308u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET: ::NTSTATUS = 0xC01E0309u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_FREQUENCY: ::NTSTATUS = 0xC01E030Au32 as i32;
+pub const STATUS_GRAPHICS_INVALID_ACTIVE_REGION: ::NTSTATUS = 0xC01E030Bu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_TOTAL_REGION: ::NTSTATUS = 0xC01E030Cu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE: ::NTSTATUS = 0xC01E0310u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE: ::NTSTATUS = 0xC01E0311u32 as i32;
+pub const STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET: ::NTSTATUS = 0xC01E0312u32 as i32;
+pub const STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY: ::NTSTATUS = 0xC01E0313u32 as i32;
+pub const STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET: ::NTSTATUS = 0xC01E0314u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET: ::NTSTATUS = 0xC01E0315u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET: ::NTSTATUS = 0xC01E0316u32 as i32;
+pub const STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET: ::NTSTATUS = 0xC01E0317u32 as i32;
+pub const STATUS_GRAPHICS_TARGET_ALREADY_IN_SET: ::NTSTATUS = 0xC01E0318u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH: ::NTSTATUS = 0xC01E0319u32 as i32;
+pub const STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY: ::NTSTATUS = 0xC01E031Au32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET: ::NTSTATUS = 0xC01E031Bu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE: ::NTSTATUS = 0xC01E031Cu32 as i32;
+pub const STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET: ::NTSTATUS = 0xC01E031Du32 as i32;
+pub const STATUS_GRAPHICS_NO_PREFERRED_MODE: ::NTSTATUS = 0x401E031E;
+pub const STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET: ::NTSTATUS = 0xC01E031Fu32 as i32;
+pub const STATUS_GRAPHICS_STALE_MODESET: ::NTSTATUS = 0xC01E0320u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET: ::NTSTATUS = 0xC01E0321u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE: ::NTSTATUS = 0xC01E0322u32 as i32;
+pub const STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN: ::NTSTATUS = 0xC01E0323u32 as i32;
+pub const STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE: ::NTSTATUS = 0xC01E0324u32 as i32;
+pub const STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION: ::NTSTATUS = 0xC01E0325u32 as i32;
+pub const STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES: ::NTSTATUS = 0xC01E0326u32 as i32;
+pub const STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY: ::NTSTATUS = 0xC01E0327u32 as i32;
+pub const STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE: ::NTSTATUS = 0xC01E0328u32 as i32;
+pub const STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET: ::NTSTATUS = 0xC01E0329u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET: ::NTSTATUS = 0xC01E032Au32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR: ::NTSTATUS = 0xC01E032Bu32 as i32;
+pub const STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET: ::NTSTATUS = 0xC01E032Cu32 as i32;
+pub const STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET: ::NTSTATUS = 0xC01E032Du32 as i32;
+pub const STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE: ::NTSTATUS = 0xC01E032Eu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE: ::NTSTATUS = 0xC01E032Fu32 as i32;
+pub const STATUS_GRAPHICS_RESOURCES_NOT_RELATED: ::NTSTATUS = 0xC01E0330u32 as i32;
+pub const STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE: ::NTSTATUS = 0xC01E0331u32 as i32;
+pub const STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE: ::NTSTATUS = 0xC01E0332u32 as i32;
+pub const STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET: ::NTSTATUS = 0xC01E0333u32 as i32;
+pub const STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER: ::NTSTATUS = 0xC01E0334u32 as i32;
+pub const STATUS_GRAPHICS_NO_VIDPNMGR: ::NTSTATUS = 0xC01E0335u32 as i32;
+pub const STATUS_GRAPHICS_NO_ACTIVE_VIDPN: ::NTSTATUS = 0xC01E0336u32 as i32;
+pub const STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY: ::NTSTATUS = 0xC01E0337u32 as i32;
+pub const STATUS_GRAPHICS_MONITOR_NOT_CONNECTED: ::NTSTATUS = 0xC01E0338u32 as i32;
+pub const STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY: ::NTSTATUS = 0xC01E0339u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE: ::NTSTATUS = 0xC01E033Au32 as i32;
+pub const STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE: ::NTSTATUS = 0xC01E033Bu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_STRIDE: ::NTSTATUS = 0xC01E033Cu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PIXELFORMAT: ::NTSTATUS = 0xC01E033Du32 as i32;
+pub const STATUS_GRAPHICS_INVALID_COLORBASIS: ::NTSTATUS = 0xC01E033Eu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE: ::NTSTATUS = 0xC01E033Fu32 as i32;
+pub const STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY: ::NTSTATUS = 0xC01E0340u32 as i32;
+pub const STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT: ::NTSTATUS = 0xC01E0341u32 as i32;
+pub const STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE: ::NTSTATUS = 0xC01E0342u32 as i32;
+pub const STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN: ::NTSTATUS = 0xC01E0343u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL: ::NTSTATUS = 0xC01E0344u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION: ::NTSTATUS = 0xC01E0345u32 as i32;
+pub const STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0346u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_GAMMA_RAMP: ::NTSTATUS = 0xC01E0347u32 as i32;
+pub const STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0348u32 as i32;
+pub const STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0349u32 as i32;
+pub const STATUS_GRAPHICS_MODE_NOT_IN_MODESET: ::NTSTATUS = 0xC01E034Au32 as i32;
+pub const STATUS_GRAPHICS_DATASET_IS_EMPTY: ::NTSTATUS = 0x401E034B;
+pub const STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET: ::NTSTATUS = 0x401E034C;
+pub const STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON: ::NTSTATUS = 0xC01E034Du32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE: ::NTSTATUS = 0xC01E034Eu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE: ::NTSTATUS = 0xC01E034Fu32 as i32;
+pub const STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS: ::NTSTATUS = 0xC01E0350u32 as i32;
+pub const STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED: ::NTSTATUS = 0x401E0351;
+pub const STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING: ::NTSTATUS = 0xC01E0352u32 as i32;
+pub const STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED: ::NTSTATUS = 0xC01E0353u32 as i32;
+pub const STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS: ::NTSTATUS = 0xC01E0354u32 as i32;
+pub const STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT: ::NTSTATUS = 0xC01E0355u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM: ::NTSTATUS = 0xC01E0356u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN: ::NTSTATUS = 0xC01E0357u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT: ::NTSTATUS = 0xC01E0358u32 as i32;
+pub const STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED: ::NTSTATUS = 0xC01E0359u32 as i32;
+pub const STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION: ::NTSTATUS = 0xC01E035Au32 as i32;
+pub const STATUS_GRAPHICS_INVALID_CLIENT_TYPE: ::NTSTATUS = 0xC01E035Bu32 as i32;
+pub const STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET: ::NTSTATUS = 0xC01E035Cu32 as i32;
+pub const STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED: ::NTSTATUS = 0xC01E0400u32 as i32;
+pub const STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0401u32 as i32;
+pub const STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS: ::NTSTATUS = 0x401E042F;
+pub const STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER: ::NTSTATUS = 0xC01E0430u32 as i32;
+pub const STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED: ::NTSTATUS = 0xC01E0431u32 as i32;
+pub const STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED: ::NTSTATUS = 0xC01E0432u32 as i32;
+pub const STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY: ::NTSTATUS = 0xC01E0433u32 as i32;
+pub const STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED: ::NTSTATUS = 0xC01E0434u32 as i32;
+pub const STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON: ::NTSTATUS = 0xC01E0435u32 as i32;
+pub const STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE: ::NTSTATUS = 0xC01E0436u32 as i32;
+pub const STATUS_GRAPHICS_LEADLINK_START_DEFERRED: ::NTSTATUS = 0x401E0437;
+pub const STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER: ::NTSTATUS = 0xC01E0438u32 as i32;
+pub const STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY: ::NTSTATUS = 0x401E0439;
+pub const STATUS_GRAPHICS_START_DEFERRED: ::NTSTATUS = 0x401E043A;
+pub const STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED: ::NTSTATUS = 0xC01E043Bu32 as i32;
+pub const STATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS: ::NTSTATUS = 0x401E043C;
+pub const STATUS_GRAPHICS_OPM_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0500u32 as i32;
+pub const STATUS_GRAPHICS_COPP_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0501u32 as i32;
+pub const STATUS_GRAPHICS_UAB_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0502u32 as i32;
+pub const STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS: ::NTSTATUS = 0xC01E0503u32 as i32;
+pub const STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST: ::NTSTATUS = 0xC01E0505u32 as i32;
+pub const STATUS_GRAPHICS_OPM_INTERNAL_ERROR: ::NTSTATUS = 0xC01E050Bu32 as i32;
+pub const STATUS_GRAPHICS_OPM_INVALID_HANDLE: ::NTSTATUS = 0xC01E050Cu32 as i32;
+pub const STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH: ::NTSTATUS = 0xC01E050Eu32 as i32;
+pub const STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED: ::NTSTATUS = 0xC01E050Fu32 as i32;
+pub const STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED: ::NTSTATUS = 0xC01E0510u32 as i32;
+pub const STATUS_GRAPHICS_PVP_HFS_FAILED: ::NTSTATUS = 0xC01E0511u32 as i32;
+pub const STATUS_GRAPHICS_OPM_INVALID_SRM: ::NTSTATUS = 0xC01E0512u32 as i32;
+pub const STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP: ::NTSTATUS = 0xC01E0513u32 as i32;
+pub const STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP: ::NTSTATUS = 0xC01E0514u32 as i32;
+pub const STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA: ::NTSTATUS = 0xC01E0515u32 as i32;
+pub const STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET: ::NTSTATUS = 0xC01E0516u32 as i32;
+pub const STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH: ::NTSTATUS = 0xC01E0517u32 as i32;
+pub const STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE: ::NTSTATUS = 0xC01E0518u32 as i32;
+pub const STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS: ::NTSTATUS = 0xC01E051Au32 as i32;
+pub const STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS: ::NTSTATUS = 0xC01E051Cu32 as i32;
+pub const STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST: ::NTSTATUS = 0xC01E051Du32 as i32;
+pub const STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR: ::NTSTATUS = 0xC01E051Eu32 as i32;
+pub const STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS: ::NTSTATUS = 0xC01E051Fu32 as i32;
+pub const STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0520u32 as i32;
+pub const STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST: ::NTSTATUS = 0xC01E0521u32 as i32;
+pub const STATUS_GRAPHICS_I2C_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0580u32 as i32;
+pub const STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST: ::NTSTATUS = 0xC01E0581u32 as i32;
+pub const STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA: ::NTSTATUS = 0xC01E0582u32 as i32;
+pub const STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA: ::NTSTATUS = 0xC01E0583u32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED: ::NTSTATUS = 0xC01E0584u32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_INVALID_DATA: ::NTSTATUS = 0xC01E0585u32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE: ::NTSTATUS = 0xC01E0586u32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING: ::NTSTATUS = 0xC01E0587u32 as i32;
+pub const STATUS_GRAPHICS_MCA_INTERNAL_ERROR: ::NTSTATUS = 0xC01E0588u32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND: ::NTSTATUS = 0xC01E0589u32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH: ::NTSTATUS = 0xC01E058Au32 as i32;
+pub const STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM: ::NTSTATUS = 0xC01E058Bu32 as i32;
+pub const STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE: ::NTSTATUS = 0xC01E058Cu32 as i32;
+pub const STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS: ::NTSTATUS = 0xC01E058Du32 as i32;
+pub const STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED: ::NTSTATUS = 0xC01E05E0u32 as i32;
+pub const STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME: ::NTSTATUS = 0xC01E05E1u32 as i32;
+pub const STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP: ::NTSTATUS = 0xC01E05E2u32 as i32;
+pub const STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED: ::NTSTATUS = 0xC01E05E3u32 as i32;
+pub const STATUS_GRAPHICS_INVALID_POINTER: ::NTSTATUS = 0xC01E05E4u32 as i32;
+pub const STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE: ::NTSTATUS = 0xC01E05E5u32 as i32;
+pub const STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL: ::NTSTATUS = 0xC01E05E6u32 as i32;
+pub const STATUS_GRAPHICS_INTERNAL_ERROR: ::NTSTATUS = 0xC01E05E7u32 as i32;
+pub const STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS: ::NTSTATUS = 0xC01E05E8u32 as i32;
+pub const STATUS_FVE_LOCKED_VOLUME: ::NTSTATUS = 0xC0210000u32 as i32;
+pub const STATUS_FVE_NOT_ENCRYPTED: ::NTSTATUS = 0xC0210001u32 as i32;
+pub const STATUS_FVE_BAD_INFORMATION: ::NTSTATUS = 0xC0210002u32 as i32;
+pub const STATUS_FVE_TOO_SMALL: ::NTSTATUS = 0xC0210003u32 as i32;
+pub const STATUS_FVE_FAILED_WRONG_FS: ::NTSTATUS = 0xC0210004u32 as i32;
+pub const STATUS_FVE_BAD_PARTITION_SIZE: ::NTSTATUS = 0xC0210005u32 as i32;
+pub const STATUS_FVE_FS_NOT_EXTENDED: ::NTSTATUS = 0xC0210006u32 as i32;
+pub const STATUS_FVE_FS_MOUNTED: ::NTSTATUS = 0xC0210007u32 as i32;
+pub const STATUS_FVE_NO_LICENSE: ::NTSTATUS = 0xC0210008u32 as i32;
+pub const STATUS_FVE_ACTION_NOT_ALLOWED: ::NTSTATUS = 0xC0210009u32 as i32;
+pub const STATUS_FVE_BAD_DATA: ::NTSTATUS = 0xC021000Au32 as i32;
+pub const STATUS_FVE_VOLUME_NOT_BOUND: ::NTSTATUS = 0xC021000Bu32 as i32;
+pub const STATUS_FVE_NOT_DATA_VOLUME: ::NTSTATUS = 0xC021000Cu32 as i32;
+pub const STATUS_FVE_CONV_READ_ERROR: ::NTSTATUS = 0xC021000Du32 as i32;
+pub const STATUS_FVE_CONV_WRITE_ERROR: ::NTSTATUS = 0xC021000Eu32 as i32;
+pub const STATUS_FVE_OVERLAPPED_UPDATE: ::NTSTATUS = 0xC021000Fu32 as i32;
+pub const STATUS_FVE_FAILED_SECTOR_SIZE: ::NTSTATUS = 0xC0210010u32 as i32;
+pub const STATUS_FVE_FAILED_AUTHENTICATION: ::NTSTATUS = 0xC0210011u32 as i32;
+pub const STATUS_FVE_NOT_OS_VOLUME: ::NTSTATUS = 0xC0210012u32 as i32;
+pub const STATUS_FVE_KEYFILE_NOT_FOUND: ::NTSTATUS = 0xC0210013u32 as i32;
+pub const STATUS_FVE_KEYFILE_INVALID: ::NTSTATUS = 0xC0210014u32 as i32;
+pub const STATUS_FVE_KEYFILE_NO_VMK: ::NTSTATUS = 0xC0210015u32 as i32;
+pub const STATUS_FVE_TPM_DISABLED: ::NTSTATUS = 0xC0210016u32 as i32;
+pub const STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO: ::NTSTATUS = 0xC0210017u32 as i32;
+pub const STATUS_FVE_TPM_INVALID_PCR: ::NTSTATUS = 0xC0210018u32 as i32;
+pub const STATUS_FVE_TPM_NO_VMK: ::NTSTATUS = 0xC0210019u32 as i32;
+pub const STATUS_FVE_PIN_INVALID: ::NTSTATUS = 0xC021001Au32 as i32;
+pub const STATUS_FVE_AUTH_INVALID_APPLICATION: ::NTSTATUS = 0xC021001Bu32 as i32;
+pub const STATUS_FVE_AUTH_INVALID_CONFIG: ::NTSTATUS = 0xC021001Cu32 as i32;
+pub const STATUS_FVE_DEBUGGER_ENABLED: ::NTSTATUS = 0xC021001Du32 as i32;
+pub const STATUS_FVE_DRY_RUN_FAILED: ::NTSTATUS = 0xC021001Eu32 as i32;
+pub const STATUS_FVE_BAD_METADATA_POINTER: ::NTSTATUS = 0xC021001Fu32 as i32;
+pub const STATUS_FVE_OLD_METADATA_COPY: ::NTSTATUS = 0xC0210020u32 as i32;
+pub const STATUS_FVE_REBOOT_REQUIRED: ::NTSTATUS = 0xC0210021u32 as i32;
+pub const STATUS_FVE_RAW_ACCESS: ::NTSTATUS = 0xC0210022u32 as i32;
+pub const STATUS_FVE_RAW_BLOCKED: ::NTSTATUS = 0xC0210023u32 as i32;
+pub const STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY: ::NTSTATUS = 0xC0210024u32 as i32;
+pub const STATUS_FVE_MOR_FAILED: ::NTSTATUS = 0xC0210025u32 as i32;
+pub const STATUS_FVE_NO_FEATURE_LICENSE: ::NTSTATUS = 0xC0210026u32 as i32;
+pub const STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED: ::NTSTATUS = 0xC0210027u32 as i32;
+pub const STATUS_FVE_CONV_RECOVERY_FAILED: ::NTSTATUS = 0xC0210028u32 as i32;
+pub const STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG: ::NTSTATUS = 0xC0210029u32 as i32;
+pub const STATUS_FVE_INVALID_DATUM_TYPE: ::NTSTATUS = 0xC021002Au32 as i32;
+pub const STATUS_FVE_VOLUME_TOO_SMALL: ::NTSTATUS = 0xC0210030u32 as i32;
+pub const STATUS_FVE_ENH_PIN_INVALID: ::NTSTATUS = 0xC0210031u32 as i32;
+pub const STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE: ::NTSTATUS = 0xC0210032u32 as i32;
+pub const STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE: ::NTSTATUS = 0xC0210033u32 as i32;
+pub const STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK: ::NTSTATUS = 0xC0210034u32 as i32;
+pub const STATUS_FVE_NOT_ALLOWED_ON_CLUSTER: ::NTSTATUS = 0xC0210035u32 as i32;
+pub const STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING: ::NTSTATUS = 0xC0210036u32 as i32;
+pub const STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE: ::NTSTATUS = 0xC0210037u32 as i32;
+pub const STATUS_FVE_EDRIVE_DRY_RUN_FAILED: ::NTSTATUS = 0xC0210038u32 as i32;
+pub const STATUS_FVE_SECUREBOOT_DISABLED: ::NTSTATUS = 0xC0210039u32 as i32;
+pub const STATUS_FVE_SECUREBOOT_CONFIG_CHANGE: ::NTSTATUS = 0xC021003Au32 as i32;
+pub const STATUS_FVE_DEVICE_LOCKEDOUT: ::NTSTATUS = 0xC021003Bu32 as i32;
+pub const STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT: ::NTSTATUS = 0xC021003Cu32 as i32;
+pub const STATUS_FVE_NOT_DE_VOLUME: ::NTSTATUS = 0xC021003Du32 as i32;
+pub const STATUS_FVE_PROTECTION_DISABLED: ::NTSTATUS = 0xC021003Eu32 as i32;
+pub const STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED: ::NTSTATUS = 0xC021003Fu32 as i32;
+pub const STATUS_FWP_CALLOUT_NOT_FOUND: ::NTSTATUS = 0xC0220001u32 as i32;
+pub const STATUS_FWP_CONDITION_NOT_FOUND: ::NTSTATUS = 0xC0220002u32 as i32;
+pub const STATUS_FWP_FILTER_NOT_FOUND: ::NTSTATUS = 0xC0220003u32 as i32;
+pub const STATUS_FWP_LAYER_NOT_FOUND: ::NTSTATUS = 0xC0220004u32 as i32;
+pub const STATUS_FWP_PROVIDER_NOT_FOUND: ::NTSTATUS = 0xC0220005u32 as i32;
+pub const STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND: ::NTSTATUS = 0xC0220006u32 as i32;
+pub const STATUS_FWP_SUBLAYER_NOT_FOUND: ::NTSTATUS = 0xC0220007u32 as i32;
+pub const STATUS_FWP_NOT_FOUND: ::NTSTATUS = 0xC0220008u32 as i32;
+pub const STATUS_FWP_ALREADY_EXISTS: ::NTSTATUS = 0xC0220009u32 as i32;
+pub const STATUS_FWP_IN_USE: ::NTSTATUS = 0xC022000Au32 as i32;
+pub const STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS: ::NTSTATUS = 0xC022000Bu32 as i32;
+pub const STATUS_FWP_WRONG_SESSION: ::NTSTATUS = 0xC022000Cu32 as i32;
+pub const STATUS_FWP_NO_TXN_IN_PROGRESS: ::NTSTATUS = 0xC022000Du32 as i32;
+pub const STATUS_FWP_TXN_IN_PROGRESS: ::NTSTATUS = 0xC022000Eu32 as i32;
+pub const STATUS_FWP_TXN_ABORTED: ::NTSTATUS = 0xC022000Fu32 as i32;
+pub const STATUS_FWP_SESSION_ABORTED: ::NTSTATUS = 0xC0220010u32 as i32;
+pub const STATUS_FWP_INCOMPATIBLE_TXN: ::NTSTATUS = 0xC0220011u32 as i32;
+pub const STATUS_FWP_TIMEOUT: ::NTSTATUS = 0xC0220012u32 as i32;
+pub const STATUS_FWP_NET_EVENTS_DISABLED: ::NTSTATUS = 0xC0220013u32 as i32;
+pub const STATUS_FWP_INCOMPATIBLE_LAYER: ::NTSTATUS = 0xC0220014u32 as i32;
+pub const STATUS_FWP_KM_CLIENTS_ONLY: ::NTSTATUS = 0xC0220015u32 as i32;
+pub const STATUS_FWP_LIFETIME_MISMATCH: ::NTSTATUS = 0xC0220016u32 as i32;
+pub const STATUS_FWP_BUILTIN_OBJECT: ::NTSTATUS = 0xC0220017u32 as i32;
+pub const STATUS_FWP_TOO_MANY_CALLOUTS: ::NTSTATUS = 0xC0220018u32 as i32;
+pub const STATUS_FWP_NOTIFICATION_DROPPED: ::NTSTATUS = 0xC0220019u32 as i32;
+pub const STATUS_FWP_TRAFFIC_MISMATCH: ::NTSTATUS = 0xC022001Au32 as i32;
+pub const STATUS_FWP_INCOMPATIBLE_SA_STATE: ::NTSTATUS = 0xC022001Bu32 as i32;
+pub const STATUS_FWP_NULL_POINTER: ::NTSTATUS = 0xC022001Cu32 as i32;
+pub const STATUS_FWP_INVALID_ENUMERATOR: ::NTSTATUS = 0xC022001Du32 as i32;
+pub const STATUS_FWP_INVALID_FLAGS: ::NTSTATUS = 0xC022001Eu32 as i32;
+pub const STATUS_FWP_INVALID_NET_MASK: ::NTSTATUS = 0xC022001Fu32 as i32;
+pub const STATUS_FWP_INVALID_RANGE: ::NTSTATUS = 0xC0220020u32 as i32;
+pub const STATUS_FWP_INVALID_INTERVAL: ::NTSTATUS = 0xC0220021u32 as i32;
+pub const STATUS_FWP_ZERO_LENGTH_ARRAY: ::NTSTATUS = 0xC0220022u32 as i32;
+pub const STATUS_FWP_NULL_DISPLAY_NAME: ::NTSTATUS = 0xC0220023u32 as i32;
+pub const STATUS_FWP_INVALID_ACTION_TYPE: ::NTSTATUS = 0xC0220024u32 as i32;
+pub const STATUS_FWP_INVALID_WEIGHT: ::NTSTATUS = 0xC0220025u32 as i32;
+pub const STATUS_FWP_MATCH_TYPE_MISMATCH: ::NTSTATUS = 0xC0220026u32 as i32;
+pub const STATUS_FWP_TYPE_MISMATCH: ::NTSTATUS = 0xC0220027u32 as i32;
+pub const STATUS_FWP_OUT_OF_BOUNDS: ::NTSTATUS = 0xC0220028u32 as i32;
+pub const STATUS_FWP_RESERVED: ::NTSTATUS = 0xC0220029u32 as i32;
+pub const STATUS_FWP_DUPLICATE_CONDITION: ::NTSTATUS = 0xC022002Au32 as i32;
+pub const STATUS_FWP_DUPLICATE_KEYMOD: ::NTSTATUS = 0xC022002Bu32 as i32;
+pub const STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER: ::NTSTATUS = 0xC022002Cu32 as i32;
+pub const STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER: ::NTSTATUS = 0xC022002Du32 as i32;
+pub const STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER: ::NTSTATUS = 0xC022002Eu32 as i32;
+pub const STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT: ::NTSTATUS = 0xC022002Fu32 as i32;
+pub const STATUS_FWP_INCOMPATIBLE_AUTH_METHOD: ::NTSTATUS = 0xC0220030u32 as i32;
+pub const STATUS_FWP_INCOMPATIBLE_DH_GROUP: ::NTSTATUS = 0xC0220031u32 as i32;
+pub const STATUS_FWP_EM_NOT_SUPPORTED: ::NTSTATUS = 0xC0220032u32 as i32;
+pub const STATUS_FWP_NEVER_MATCH: ::NTSTATUS = 0xC0220033u32 as i32;
+pub const STATUS_FWP_PROVIDER_CONTEXT_MISMATCH: ::NTSTATUS = 0xC0220034u32 as i32;
+pub const STATUS_FWP_INVALID_PARAMETER: ::NTSTATUS = 0xC0220035u32 as i32;
+pub const STATUS_FWP_TOO_MANY_SUBLAYERS: ::NTSTATUS = 0xC0220036u32 as i32;
+pub const STATUS_FWP_CALLOUT_NOTIFICATION_FAILED: ::NTSTATUS = 0xC0220037u32 as i32;
+pub const STATUS_FWP_INVALID_AUTH_TRANSFORM: ::NTSTATUS = 0xC0220038u32 as i32;
+pub const STATUS_FWP_INVALID_CIPHER_TRANSFORM: ::NTSTATUS = 0xC0220039u32 as i32;
+pub const STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM: ::NTSTATUS = 0xC022003Au32 as i32;
+pub const STATUS_FWP_INVALID_TRANSFORM_COMBINATION: ::NTSTATUS = 0xC022003Bu32 as i32;
+pub const STATUS_FWP_DUPLICATE_AUTH_METHOD: ::NTSTATUS = 0xC022003Cu32 as i32;
+pub const STATUS_FWP_INVALID_TUNNEL_ENDPOINT: ::NTSTATUS = 0xC022003Du32 as i32;
+pub const STATUS_FWP_L2_DRIVER_NOT_READY: ::NTSTATUS = 0xC022003Eu32 as i32;
+pub const STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED: ::NTSTATUS = 0xC022003Fu32 as i32;
+pub const STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL: ::NTSTATUS = 0xC0220040u32 as i32;
+pub const STATUS_FWP_CONNECTIONS_DISABLED: ::NTSTATUS = 0xC0220041u32 as i32;
+pub const STATUS_FWP_INVALID_DNS_NAME: ::NTSTATUS = 0xC0220042u32 as i32;
+pub const STATUS_FWP_STILL_ON: ::NTSTATUS = 0xC0220043u32 as i32;
+pub const STATUS_FWP_IKEEXT_NOT_RUNNING: ::NTSTATUS = 0xC0220044u32 as i32;
+pub const STATUS_FWP_TCPIP_NOT_READY: ::NTSTATUS = 0xC0220100u32 as i32;
+pub const STATUS_FWP_INJECT_HANDLE_CLOSING: ::NTSTATUS = 0xC0220101u32 as i32;
+pub const STATUS_FWP_INJECT_HANDLE_STALE: ::NTSTATUS = 0xC0220102u32 as i32;
+pub const STATUS_FWP_CANNOT_PEND: ::NTSTATUS = 0xC0220103u32 as i32;
+pub const STATUS_FWP_DROP_NOICMP: ::NTSTATUS = 0xC0220104u32 as i32;
+pub const STATUS_NDIS_CLOSING: ::NTSTATUS = 0xC0230002u32 as i32;
+pub const STATUS_NDIS_BAD_VERSION: ::NTSTATUS = 0xC0230004u32 as i32;
+pub const STATUS_NDIS_BAD_CHARACTERISTICS: ::NTSTATUS = 0xC0230005u32 as i32;
+pub const STATUS_NDIS_ADAPTER_NOT_FOUND: ::NTSTATUS = 0xC0230006u32 as i32;
+pub const STATUS_NDIS_OPEN_FAILED: ::NTSTATUS = 0xC0230007u32 as i32;
+pub const STATUS_NDIS_DEVICE_FAILED: ::NTSTATUS = 0xC0230008u32 as i32;
+pub const STATUS_NDIS_MULTICAST_FULL: ::NTSTATUS = 0xC0230009u32 as i32;
+pub const STATUS_NDIS_MULTICAST_EXISTS: ::NTSTATUS = 0xC023000Au32 as i32;
+pub const STATUS_NDIS_MULTICAST_NOT_FOUND: ::NTSTATUS = 0xC023000Bu32 as i32;
+pub const STATUS_NDIS_REQUEST_ABORTED: ::NTSTATUS = 0xC023000Cu32 as i32;
+pub const STATUS_NDIS_RESET_IN_PROGRESS: ::NTSTATUS = 0xC023000Du32 as i32;
+pub const STATUS_NDIS_NOT_SUPPORTED: ::NTSTATUS = 0xC02300BBu32 as i32;
+pub const STATUS_NDIS_INVALID_PACKET: ::NTSTATUS = 0xC023000Fu32 as i32;
+pub const STATUS_NDIS_ADAPTER_NOT_READY: ::NTSTATUS = 0xC0230011u32 as i32;
+pub const STATUS_NDIS_INVALID_LENGTH: ::NTSTATUS = 0xC0230014u32 as i32;
+pub const STATUS_NDIS_INVALID_DATA: ::NTSTATUS = 0xC0230015u32 as i32;
+pub const STATUS_NDIS_BUFFER_TOO_SHORT: ::NTSTATUS = 0xC0230016u32 as i32;
+pub const STATUS_NDIS_INVALID_OID: ::NTSTATUS = 0xC0230017u32 as i32;
+pub const STATUS_NDIS_ADAPTER_REMOVED: ::NTSTATUS = 0xC0230018u32 as i32;
+pub const STATUS_NDIS_UNSUPPORTED_MEDIA: ::NTSTATUS = 0xC0230019u32 as i32;
+pub const STATUS_NDIS_GROUP_ADDRESS_IN_USE: ::NTSTATUS = 0xC023001Au32 as i32;
+pub const STATUS_NDIS_FILE_NOT_FOUND: ::NTSTATUS = 0xC023001Bu32 as i32;
+pub const STATUS_NDIS_ERROR_READING_FILE: ::NTSTATUS = 0xC023001Cu32 as i32;
+pub const STATUS_NDIS_ALREADY_MAPPED: ::NTSTATUS = 0xC023001Du32 as i32;
+pub const STATUS_NDIS_RESOURCE_CONFLICT: ::NTSTATUS = 0xC023001Eu32 as i32;
+pub const STATUS_NDIS_MEDIA_DISCONNECTED: ::NTSTATUS = 0xC023001Fu32 as i32;
+pub const STATUS_NDIS_INVALID_ADDRESS: ::NTSTATUS = 0xC0230022u32 as i32;
+pub const STATUS_NDIS_INVALID_DEVICE_REQUEST: ::NTSTATUS = 0xC0230010u32 as i32;
+pub const STATUS_NDIS_PAUSED: ::NTSTATUS = 0xC023002Au32 as i32;
+pub const STATUS_NDIS_INTERFACE_NOT_FOUND: ::NTSTATUS = 0xC023002Bu32 as i32;
+pub const STATUS_NDIS_UNSUPPORTED_REVISION: ::NTSTATUS = 0xC023002Cu32 as i32;
+pub const STATUS_NDIS_INVALID_PORT: ::NTSTATUS = 0xC023002Du32 as i32;
+pub const STATUS_NDIS_INVALID_PORT_STATE: ::NTSTATUS = 0xC023002Eu32 as i32;
+pub const STATUS_NDIS_LOW_POWER_STATE: ::NTSTATUS = 0xC023002Fu32 as i32;
+pub const STATUS_NDIS_REINIT_REQUIRED: ::NTSTATUS = 0xC0230030u32 as i32;
+pub const STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED: ::NTSTATUS = 0xC0232000u32 as i32;
+pub const STATUS_NDIS_DOT11_MEDIA_IN_USE: ::NTSTATUS = 0xC0232001u32 as i32;
+pub const STATUS_NDIS_DOT11_POWER_STATE_INVALID: ::NTSTATUS = 0xC0232002u32 as i32;
+pub const STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL: ::NTSTATUS = 0xC0232003u32 as i32;
+pub const STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL: ::NTSTATUS = 0xC0232004u32 as i32;
+pub const STATUS_NDIS_INDICATION_REQUIRED: ::NTSTATUS = 0x40230001;
+pub const STATUS_NDIS_OFFLOAD_POLICY: ::NTSTATUS = 0xC023100Fu32 as i32;
+pub const STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED: ::NTSTATUS = 0xC0231012u32 as i32;
+pub const STATUS_NDIS_OFFLOAD_PATH_REJECTED: ::NTSTATUS = 0xC0231013u32 as i32;
+pub const STATUS_TPM_ERROR_MASK: ::NTSTATUS = 0xC0290000u32 as i32;
+pub const STATUS_TPM_AUTHFAIL: ::NTSTATUS = 0xC0290001u32 as i32;
+pub const STATUS_TPM_BADINDEX: ::NTSTATUS = 0xC0290002u32 as i32;
+pub const STATUS_TPM_BAD_PARAMETER: ::NTSTATUS = 0xC0290003u32 as i32;
+pub const STATUS_TPM_AUDITFAILURE: ::NTSTATUS = 0xC0290004u32 as i32;
+pub const STATUS_TPM_CLEAR_DISABLED: ::NTSTATUS = 0xC0290005u32 as i32;
+pub const STATUS_TPM_DEACTIVATED: ::NTSTATUS = 0xC0290006u32 as i32;
+pub const STATUS_TPM_DISABLED: ::NTSTATUS = 0xC0290007u32 as i32;
+pub const STATUS_TPM_DISABLED_CMD: ::NTSTATUS = 0xC0290008u32 as i32;
+pub const STATUS_TPM_FAIL: ::NTSTATUS = 0xC0290009u32 as i32;
+pub const STATUS_TPM_BAD_ORDINAL: ::NTSTATUS = 0xC029000Au32 as i32;
+pub const STATUS_TPM_INSTALL_DISABLED: ::NTSTATUS = 0xC029000Bu32 as i32;
+pub const STATUS_TPM_INVALID_KEYHANDLE: ::NTSTATUS = 0xC029000Cu32 as i32;
+pub const STATUS_TPM_KEYNOTFOUND: ::NTSTATUS = 0xC029000Du32 as i32;
+pub const STATUS_TPM_INAPPROPRIATE_ENC: ::NTSTATUS = 0xC029000Eu32 as i32;
+pub const STATUS_TPM_MIGRATEFAIL: ::NTSTATUS = 0xC029000Fu32 as i32;
+pub const STATUS_TPM_INVALID_PCR_INFO: ::NTSTATUS = 0xC0290010u32 as i32;
+pub const STATUS_TPM_NOSPACE: ::NTSTATUS = 0xC0290011u32 as i32;
+pub const STATUS_TPM_NOSRK: ::NTSTATUS = 0xC0290012u32 as i32;
+pub const STATUS_TPM_NOTSEALED_BLOB: ::NTSTATUS = 0xC0290013u32 as i32;
+pub const STATUS_TPM_OWNER_SET: ::NTSTATUS = 0xC0290014u32 as i32;
+pub const STATUS_TPM_RESOURCES: ::NTSTATUS = 0xC0290015u32 as i32;
+pub const STATUS_TPM_SHORTRANDOM: ::NTSTATUS = 0xC0290016u32 as i32;
+pub const STATUS_TPM_SIZE: ::NTSTATUS = 0xC0290017u32 as i32;
+pub const STATUS_TPM_WRONGPCRVAL: ::NTSTATUS = 0xC0290018u32 as i32;
+pub const STATUS_TPM_BAD_PARAM_SIZE: ::NTSTATUS = 0xC0290019u32 as i32;
+pub const STATUS_TPM_SHA_THREAD: ::NTSTATUS = 0xC029001Au32 as i32;
+pub const STATUS_TPM_SHA_ERROR: ::NTSTATUS = 0xC029001Bu32 as i32;
+pub const STATUS_TPM_FAILEDSELFTEST: ::NTSTATUS = 0xC029001Cu32 as i32;
+pub const STATUS_TPM_AUTH2FAIL: ::NTSTATUS = 0xC029001Du32 as i32;
+pub const STATUS_TPM_BADTAG: ::NTSTATUS = 0xC029001Eu32 as i32;
+pub const STATUS_TPM_IOERROR: ::NTSTATUS = 0xC029001Fu32 as i32;
+pub const STATUS_TPM_ENCRYPT_ERROR: ::NTSTATUS = 0xC0290020u32 as i32;
+pub const STATUS_TPM_DECRYPT_ERROR: ::NTSTATUS = 0xC0290021u32 as i32;
+pub const STATUS_TPM_INVALID_AUTHHANDLE: ::NTSTATUS = 0xC0290022u32 as i32;
+pub const STATUS_TPM_NO_ENDORSEMENT: ::NTSTATUS = 0xC0290023u32 as i32;
+pub const STATUS_TPM_INVALID_KEYUSAGE: ::NTSTATUS = 0xC0290024u32 as i32;
+pub const STATUS_TPM_WRONG_ENTITYTYPE: ::NTSTATUS = 0xC0290025u32 as i32;
+pub const STATUS_TPM_INVALID_POSTINIT: ::NTSTATUS = 0xC0290026u32 as i32;
+pub const STATUS_TPM_INAPPROPRIATE_SIG: ::NTSTATUS = 0xC0290027u32 as i32;
+pub const STATUS_TPM_BAD_KEY_PROPERTY: ::NTSTATUS = 0xC0290028u32 as i32;
+pub const STATUS_TPM_BAD_MIGRATION: ::NTSTATUS = 0xC0290029u32 as i32;
+pub const STATUS_TPM_BAD_SCHEME: ::NTSTATUS = 0xC029002Au32 as i32;
+pub const STATUS_TPM_BAD_DATASIZE: ::NTSTATUS = 0xC029002Bu32 as i32;
+pub const STATUS_TPM_BAD_MODE: ::NTSTATUS = 0xC029002Cu32 as i32;
+pub const STATUS_TPM_BAD_PRESENCE: ::NTSTATUS = 0xC029002Du32 as i32;
+pub const STATUS_TPM_BAD_VERSION: ::NTSTATUS = 0xC029002Eu32 as i32;
+pub const STATUS_TPM_NO_WRAP_TRANSPORT: ::NTSTATUS = 0xC029002Fu32 as i32;
+pub const STATUS_TPM_AUDITFAIL_UNSUCCESSFUL: ::NTSTATUS = 0xC0290030u32 as i32;
+pub const STATUS_TPM_AUDITFAIL_SUCCESSFUL: ::NTSTATUS = 0xC0290031u32 as i32;
+pub const STATUS_TPM_NOTRESETABLE: ::NTSTATUS = 0xC0290032u32 as i32;
+pub const STATUS_TPM_NOTLOCAL: ::NTSTATUS = 0xC0290033u32 as i32;
+pub const STATUS_TPM_BAD_TYPE: ::NTSTATUS = 0xC0290034u32 as i32;
+pub const STATUS_TPM_INVALID_RESOURCE: ::NTSTATUS = 0xC0290035u32 as i32;
+pub const STATUS_TPM_NOTFIPS: ::NTSTATUS = 0xC0290036u32 as i32;
+pub const STATUS_TPM_INVALID_FAMILY: ::NTSTATUS = 0xC0290037u32 as i32;
+pub const STATUS_TPM_NO_NV_PERMISSION: ::NTSTATUS = 0xC0290038u32 as i32;
+pub const STATUS_TPM_REQUIRES_SIGN: ::NTSTATUS = 0xC0290039u32 as i32;
+pub const STATUS_TPM_KEY_NOTSUPPORTED: ::NTSTATUS = 0xC029003Au32 as i32;
+pub const STATUS_TPM_AUTH_CONFLICT: ::NTSTATUS = 0xC029003Bu32 as i32;
+pub const STATUS_TPM_AREA_LOCKED: ::NTSTATUS = 0xC029003Cu32 as i32;
+pub const STATUS_TPM_BAD_LOCALITY: ::NTSTATUS = 0xC029003Du32 as i32;
+pub const STATUS_TPM_READ_ONLY: ::NTSTATUS = 0xC029003Eu32 as i32;
+pub const STATUS_TPM_PER_NOWRITE: ::NTSTATUS = 0xC029003Fu32 as i32;
+pub const STATUS_TPM_FAMILYCOUNT: ::NTSTATUS = 0xC0290040u32 as i32;
+pub const STATUS_TPM_WRITE_LOCKED: ::NTSTATUS = 0xC0290041u32 as i32;
+pub const STATUS_TPM_BAD_ATTRIBUTES: ::NTSTATUS = 0xC0290042u32 as i32;
+pub const STATUS_TPM_INVALID_STRUCTURE: ::NTSTATUS = 0xC0290043u32 as i32;
+pub const STATUS_TPM_KEY_OWNER_CONTROL: ::NTSTATUS = 0xC0290044u32 as i32;
+pub const STATUS_TPM_BAD_COUNTER: ::NTSTATUS = 0xC0290045u32 as i32;
+pub const STATUS_TPM_NOT_FULLWRITE: ::NTSTATUS = 0xC0290046u32 as i32;
+pub const STATUS_TPM_CONTEXT_GAP: ::NTSTATUS = 0xC0290047u32 as i32;
+pub const STATUS_TPM_MAXNVWRITES: ::NTSTATUS = 0xC0290048u32 as i32;
+pub const STATUS_TPM_NOOPERATOR: ::NTSTATUS = 0xC0290049u32 as i32;
+pub const STATUS_TPM_RESOURCEMISSING: ::NTSTATUS = 0xC029004Au32 as i32;
+pub const STATUS_TPM_DELEGATE_LOCK: ::NTSTATUS = 0xC029004Bu32 as i32;
+pub const STATUS_TPM_DELEGATE_FAMILY: ::NTSTATUS = 0xC029004Cu32 as i32;
+pub const STATUS_TPM_DELEGATE_ADMIN: ::NTSTATUS = 0xC029004Du32 as i32;
+pub const STATUS_TPM_TRANSPORT_NOTEXCLUSIVE: ::NTSTATUS = 0xC029004Eu32 as i32;
+pub const STATUS_TPM_OWNER_CONTROL: ::NTSTATUS = 0xC029004Fu32 as i32;
+pub const STATUS_TPM_DAA_RESOURCES: ::NTSTATUS = 0xC0290050u32 as i32;
+pub const STATUS_TPM_DAA_INPUT_DATA0: ::NTSTATUS = 0xC0290051u32 as i32;
+pub const STATUS_TPM_DAA_INPUT_DATA1: ::NTSTATUS = 0xC0290052u32 as i32;
+pub const STATUS_TPM_DAA_ISSUER_SETTINGS: ::NTSTATUS = 0xC0290053u32 as i32;
+pub const STATUS_TPM_DAA_TPM_SETTINGS: ::NTSTATUS = 0xC0290054u32 as i32;
+pub const STATUS_TPM_DAA_STAGE: ::NTSTATUS = 0xC0290055u32 as i32;
+pub const STATUS_TPM_DAA_ISSUER_VALIDITY: ::NTSTATUS = 0xC0290056u32 as i32;
+pub const STATUS_TPM_DAA_WRONG_W: ::NTSTATUS = 0xC0290057u32 as i32;
+pub const STATUS_TPM_BAD_HANDLE: ::NTSTATUS = 0xC0290058u32 as i32;
+pub const STATUS_TPM_BAD_DELEGATE: ::NTSTATUS = 0xC0290059u32 as i32;
+pub const STATUS_TPM_BADCONTEXT: ::NTSTATUS = 0xC029005Au32 as i32;
+pub const STATUS_TPM_TOOMANYCONTEXTS: ::NTSTATUS = 0xC029005Bu32 as i32;
+pub const STATUS_TPM_MA_TICKET_SIGNATURE: ::NTSTATUS = 0xC029005Cu32 as i32;
+pub const STATUS_TPM_MA_DESTINATION: ::NTSTATUS = 0xC029005Du32 as i32;
+pub const STATUS_TPM_MA_SOURCE: ::NTSTATUS = 0xC029005Eu32 as i32;
+pub const STATUS_TPM_MA_AUTHORITY: ::NTSTATUS = 0xC029005Fu32 as i32;
+pub const STATUS_TPM_PERMANENTEK: ::NTSTATUS = 0xC0290061u32 as i32;
+pub const STATUS_TPM_BAD_SIGNATURE: ::NTSTATUS = 0xC0290062u32 as i32;
+pub const STATUS_TPM_NOCONTEXTSPACE: ::NTSTATUS = 0xC0290063u32 as i32;
+pub const STATUS_TPM_COMMAND_BLOCKED: ::NTSTATUS = 0xC0290400u32 as i32;
+pub const STATUS_TPM_INVALID_HANDLE: ::NTSTATUS = 0xC0290401u32 as i32;
+pub const STATUS_TPM_DUPLICATE_VHANDLE: ::NTSTATUS = 0xC0290402u32 as i32;
+pub const STATUS_TPM_EMBEDDED_COMMAND_BLOCKED: ::NTSTATUS = 0xC0290403u32 as i32;
+pub const STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED: ::NTSTATUS = 0xC0290404u32 as i32;
+pub const STATUS_TPM_RETRY: ::NTSTATUS = 0xC0290800u32 as i32;
+pub const STATUS_TPM_NEEDS_SELFTEST: ::NTSTATUS = 0xC0290801u32 as i32;
+pub const STATUS_TPM_DOING_SELFTEST: ::NTSTATUS = 0xC0290802u32 as i32;
+pub const STATUS_TPM_DEFEND_LOCK_RUNNING: ::NTSTATUS = 0xC0290803u32 as i32;
+pub const STATUS_TPM_COMMAND_CANCELED: ::NTSTATUS = 0xC0291001u32 as i32;
+pub const STATUS_TPM_TOO_MANY_CONTEXTS: ::NTSTATUS = 0xC0291002u32 as i32;
+pub const STATUS_TPM_NOT_FOUND: ::NTSTATUS = 0xC0291003u32 as i32;
+pub const STATUS_TPM_ACCESS_DENIED: ::NTSTATUS = 0xC0291004u32 as i32;
+pub const STATUS_TPM_INSUFFICIENT_BUFFER: ::NTSTATUS = 0xC0291005u32 as i32;
+pub const STATUS_TPM_PPI_FUNCTION_UNSUPPORTED: ::NTSTATUS = 0xC0291006u32 as i32;
+pub const STATUS_PCP_ERROR_MASK: ::NTSTATUS = 0xC0292000u32 as i32;
+pub const STATUS_PCP_DEVICE_NOT_READY: ::NTSTATUS = 0xC0292001u32 as i32;
+pub const STATUS_PCP_INVALID_HANDLE: ::NTSTATUS = 0xC0292002u32 as i32;
+pub const STATUS_PCP_INVALID_PARAMETER: ::NTSTATUS = 0xC0292003u32 as i32;
+pub const STATUS_PCP_FLAG_NOT_SUPPORTED: ::NTSTATUS = 0xC0292004u32 as i32;
+pub const STATUS_PCP_NOT_SUPPORTED: ::NTSTATUS = 0xC0292005u32 as i32;
+pub const STATUS_PCP_BUFFER_TOO_SMALL: ::NTSTATUS = 0xC0292006u32 as i32;
+pub const STATUS_PCP_INTERNAL_ERROR: ::NTSTATUS = 0xC0292007u32 as i32;
+pub const STATUS_PCP_AUTHENTICATION_FAILED: ::NTSTATUS = 0xC0292008u32 as i32;
+pub const STATUS_PCP_AUTHENTICATION_IGNORED: ::NTSTATUS = 0xC0292009u32 as i32;
+pub const STATUS_PCP_POLICY_NOT_FOUND: ::NTSTATUS = 0xC029200Au32 as i32;
+pub const STATUS_PCP_PROFILE_NOT_FOUND: ::NTSTATUS = 0xC029200Bu32 as i32;
+pub const STATUS_PCP_VALIDATION_FAILED: ::NTSTATUS = 0xC029200Cu32 as i32;
+pub const STATUS_PCP_DEVICE_NOT_FOUND: ::NTSTATUS = 0xC029200Du32 as i32;
+pub const STATUS_RTPM_CONTEXT_CONTINUE: ::NTSTATUS = 0x00293000;
+pub const STATUS_RTPM_CONTEXT_COMPLETE: ::NTSTATUS = 0x00293001;
+pub const STATUS_RTPM_NO_RESULT: ::NTSTATUS = 0xC0293002u32 as i32;
+pub const STATUS_RTPM_PCR_READ_INCOMPLETE: ::NTSTATUS = 0xC0293003u32 as i32;
+pub const STATUS_RTPM_INVALID_CONTEXT: ::NTSTATUS = 0xC0293004u32 as i32;
+pub const STATUS_RTPM_UNSUPPORTED_CMD: ::NTSTATUS = 0xC0293005u32 as i32;
+pub const STATUS_HV_INVALID_HYPERCALL_CODE: ::NTSTATUS = 0xC0350002u32 as i32;
+pub const STATUS_HV_INVALID_HYPERCALL_INPUT: ::NTSTATUS = 0xC0350003u32 as i32;
+pub const STATUS_HV_INVALID_ALIGNMENT: ::NTSTATUS = 0xC0350004u32 as i32;
+pub const STATUS_HV_INVALID_PARAMETER: ::NTSTATUS = 0xC0350005u32 as i32;
+pub const STATUS_HV_ACCESS_DENIED: ::NTSTATUS = 0xC0350006u32 as i32;
+pub const STATUS_HV_INVALID_PARTITION_STATE: ::NTSTATUS = 0xC0350007u32 as i32;
+pub const STATUS_HV_OPERATION_DENIED: ::NTSTATUS = 0xC0350008u32 as i32;
+pub const STATUS_HV_UNKNOWN_PROPERTY: ::NTSTATUS = 0xC0350009u32 as i32;
+pub const STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE: ::NTSTATUS = 0xC035000Au32 as i32;
+pub const STATUS_HV_INSUFFICIENT_MEMORY: ::NTSTATUS = 0xC035000Bu32 as i32;
+pub const STATUS_HV_PARTITION_TOO_DEEP: ::NTSTATUS = 0xC035000Cu32 as i32;
+pub const STATUS_HV_INVALID_PARTITION_ID: ::NTSTATUS = 0xC035000Du32 as i32;
+pub const STATUS_HV_INVALID_VP_INDEX: ::NTSTATUS = 0xC035000Eu32 as i32;
+pub const STATUS_HV_INVALID_PORT_ID: ::NTSTATUS = 0xC0350011u32 as i32;
+pub const STATUS_HV_INVALID_CONNECTION_ID: ::NTSTATUS = 0xC0350012u32 as i32;
+pub const STATUS_HV_INSUFFICIENT_BUFFERS: ::NTSTATUS = 0xC0350013u32 as i32;
+pub const STATUS_HV_NOT_ACKNOWLEDGED: ::NTSTATUS = 0xC0350014u32 as i32;
+pub const STATUS_HV_ACKNOWLEDGED: ::NTSTATUS = 0xC0350016u32 as i32;
+pub const STATUS_HV_INVALID_SAVE_RESTORE_STATE: ::NTSTATUS = 0xC0350017u32 as i32;
+pub const STATUS_HV_INVALID_SYNIC_STATE: ::NTSTATUS = 0xC0350018u32 as i32;
+pub const STATUS_HV_OBJECT_IN_USE: ::NTSTATUS = 0xC0350019u32 as i32;
+pub const STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO: ::NTSTATUS = 0xC035001Au32 as i32;
+pub const STATUS_HV_NO_DATA: ::NTSTATUS = 0xC035001Bu32 as i32;
+pub const STATUS_HV_INACTIVE: ::NTSTATUS = 0xC035001Cu32 as i32;
+pub const STATUS_HV_NO_RESOURCES: ::NTSTATUS = 0xC035001Du32 as i32;
+pub const STATUS_HV_FEATURE_UNAVAILABLE: ::NTSTATUS = 0xC035001Eu32 as i32;
+pub const STATUS_HV_INSUFFICIENT_BUFFER: ::NTSTATUS = 0xC0350033u32 as i32;
+pub const STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS: ::NTSTATUS = 0xC0350038u32 as i32;
+pub const STATUS_HV_CPUID_FEATURE_VALIDATION_ERROR: ::NTSTATUS = 0xC035003Cu32 as i32;
+pub const STATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR: ::NTSTATUS = 0xC035003Du32 as i32;
+pub const STATUS_HV_PROCESSOR_STARTUP_TIMEOUT: ::NTSTATUS = 0xC035003Eu32 as i32;
+pub const STATUS_HV_SMX_ENABLED: ::NTSTATUS = 0xC035003Fu32 as i32;
+pub const STATUS_HV_INVALID_LP_INDEX: ::NTSTATUS = 0xC0350041u32 as i32;
+pub const STATUS_HV_INVALID_REGISTER_VALUE: ::NTSTATUS = 0xC0350050u32 as i32;
+pub const STATUS_HV_INVALID_VTL_STATE: ::NTSTATUS = 0xC0350051u32 as i32;
+pub const STATUS_HV_NX_NOT_DETECTED: ::NTSTATUS = 0xC0350055u32 as i32;
+pub const STATUS_HV_INVALID_DEVICE_ID: ::NTSTATUS = 0xC0350057u32 as i32;
+pub const STATUS_HV_INVALID_DEVICE_STATE: ::NTSTATUS = 0xC0350058u32 as i32;
+pub const STATUS_HV_PENDING_PAGE_REQUESTS: ::NTSTATUS = 0x00350059;
+pub const STATUS_HV_PAGE_REQUEST_INVALID: ::NTSTATUS = 0xC0350060u32 as i32;
+pub const STATUS_HV_NOT_PRESENT: ::NTSTATUS = 0xC0351000u32 as i32;
+pub const STATUS_VID_DUPLICATE_HANDLER: ::NTSTATUS = 0xC0370001u32 as i32;
+pub const STATUS_VID_TOO_MANY_HANDLERS: ::NTSTATUS = 0xC0370002u32 as i32;
+pub const STATUS_VID_QUEUE_FULL: ::NTSTATUS = 0xC0370003u32 as i32;
+pub const STATUS_VID_HANDLER_NOT_PRESENT: ::NTSTATUS = 0xC0370004u32 as i32;
+pub const STATUS_VID_INVALID_OBJECT_NAME: ::NTSTATUS = 0xC0370005u32 as i32;
+pub const STATUS_VID_PARTITION_NAME_TOO_LONG: ::NTSTATUS = 0xC0370006u32 as i32;
+pub const STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG: ::NTSTATUS = 0xC0370007u32 as i32;
+pub const STATUS_VID_PARTITION_ALREADY_EXISTS: ::NTSTATUS = 0xC0370008u32 as i32;
+pub const STATUS_VID_PARTITION_DOES_NOT_EXIST: ::NTSTATUS = 0xC0370009u32 as i32;
+pub const STATUS_VID_PARTITION_NAME_NOT_FOUND: ::NTSTATUS = 0xC037000Au32 as i32;
+pub const STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS: ::NTSTATUS = 0xC037000Bu32 as i32;
+pub const STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT: ::NTSTATUS = 0xC037000Cu32 as i32;
+pub const STATUS_VID_MB_STILL_REFERENCED: ::NTSTATUS = 0xC037000Du32 as i32;
+pub const STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED: ::NTSTATUS = 0xC037000Eu32 as i32;
+pub const STATUS_VID_INVALID_NUMA_SETTINGS: ::NTSTATUS = 0xC037000Fu32 as i32;
+pub const STATUS_VID_INVALID_NUMA_NODE_INDEX: ::NTSTATUS = 0xC0370010u32 as i32;
+pub const STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED: ::NTSTATUS = 0xC0370011u32 as i32;
+pub const STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE: ::NTSTATUS = 0xC0370012u32 as i32;
+pub const STATUS_VID_PAGE_RANGE_OVERFLOW: ::NTSTATUS = 0xC0370013u32 as i32;
+pub const STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE: ::NTSTATUS = 0xC0370014u32 as i32;
+pub const STATUS_VID_INVALID_GPA_RANGE_HANDLE: ::NTSTATUS = 0xC0370015u32 as i32;
+pub const STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE: ::NTSTATUS = 0xC0370016u32 as i32;
+pub const STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED: ::NTSTATUS = 0xC0370017u32 as i32;
+pub const STATUS_VID_INVALID_PPM_HANDLE: ::NTSTATUS = 0xC0370018u32 as i32;
+pub const STATUS_VID_MBPS_ARE_LOCKED: ::NTSTATUS = 0xC0370019u32 as i32;
+pub const STATUS_VID_MESSAGE_QUEUE_CLOSED: ::NTSTATUS = 0xC037001Au32 as i32;
+pub const STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED: ::NTSTATUS = 0xC037001Bu32 as i32;
+pub const STATUS_VID_STOP_PENDING: ::NTSTATUS = 0xC037001Cu32 as i32;
+pub const STATUS_VID_INVALID_PROCESSOR_STATE: ::NTSTATUS = 0xC037001Du32 as i32;
+pub const STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT: ::NTSTATUS = 0xC037001Eu32 as i32;
+pub const STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED: ::NTSTATUS = 0xC037001Fu32 as i32;
+pub const STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET: ::NTSTATUS = 0xC0370020u32 as i32;
+pub const STATUS_VID_MMIO_RANGE_DESTROYED: ::NTSTATUS = 0xC0370021u32 as i32;
+pub const STATUS_VID_INVALID_CHILD_GPA_PAGE_SET: ::NTSTATUS = 0xC0370022u32 as i32;
+pub const STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED: ::NTSTATUS = 0xC0370023u32 as i32;
+pub const STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL: ::NTSTATUS = 0xC0370024u32 as i32;
+pub const STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE: ::NTSTATUS = 0xC0370025u32 as i32;
+pub const STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT: ::NTSTATUS = 0xC0370026u32 as i32;
+pub const STATUS_VID_SAVED_STATE_CORRUPT: ::NTSTATUS = 0xC0370027u32 as i32;
+pub const STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM: ::NTSTATUS = 0xC0370028u32 as i32;
+pub const STATUS_VID_SAVED_STATE_INCOMPATIBLE: ::NTSTATUS = 0xC0370029u32 as i32;
+pub const STATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED: ::NTSTATUS = 0x80370001u32 as i32;
+pub const STATUS_IPSEC_BAD_SPI: ::NTSTATUS = 0xC0360001u32 as i32;
+pub const STATUS_IPSEC_SA_LIFETIME_EXPIRED: ::NTSTATUS = 0xC0360002u32 as i32;
+pub const STATUS_IPSEC_WRONG_SA: ::NTSTATUS = 0xC0360003u32 as i32;
+pub const STATUS_IPSEC_REPLAY_CHECK_FAILED: ::NTSTATUS = 0xC0360004u32 as i32;
+pub const STATUS_IPSEC_INVALID_PACKET: ::NTSTATUS = 0xC0360005u32 as i32;
+pub const STATUS_IPSEC_INTEGRITY_CHECK_FAILED: ::NTSTATUS = 0xC0360006u32 as i32;
+pub const STATUS_IPSEC_CLEAR_TEXT_DROP: ::NTSTATUS = 0xC0360007u32 as i32;
+pub const STATUS_IPSEC_AUTH_FIREWALL_DROP: ::NTSTATUS = 0xC0360008u32 as i32;
+pub const STATUS_IPSEC_THROTTLE_DROP: ::NTSTATUS = 0xC0360009u32 as i32;
+pub const STATUS_IPSEC_DOSP_BLOCK: ::NTSTATUS = 0xC0368000u32 as i32;
+pub const STATUS_IPSEC_DOSP_RECEIVED_MULTICAST: ::NTSTATUS = 0xC0368001u32 as i32;
+pub const STATUS_IPSEC_DOSP_INVALID_PACKET: ::NTSTATUS = 0xC0368002u32 as i32;
+pub const STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED: ::NTSTATUS = 0xC0368003u32 as i32;
+pub const STATUS_IPSEC_DOSP_MAX_ENTRIES: ::NTSTATUS = 0xC0368004u32 as i32;
+pub const STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED: ::NTSTATUS = 0xC0368005u32 as i32;
+pub const STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES: ::NTSTATUS = 0xC0368006u32 as i32;
+pub const STATUS_VOLMGR_INCOMPLETE_REGENERATION: ::NTSTATUS = 0x80380001u32 as i32;
+pub const STATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION: ::NTSTATUS = 0x80380002u32 as i32;
+pub const STATUS_VOLMGR_DATABASE_FULL: ::NTSTATUS = 0xC0380001u32 as i32;
+pub const STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED: ::NTSTATUS = 0xC0380002u32 as i32;
+pub const STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC: ::NTSTATUS = 0xC0380003u32 as i32;
+pub const STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED: ::NTSTATUS = 0xC0380004u32 as i32;
+pub const STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME: ::NTSTATUS = 0xC0380005u32 as i32;
+pub const STATUS_VOLMGR_DISK_DUPLICATE: ::NTSTATUS = 0xC0380006u32 as i32;
+pub const STATUS_VOLMGR_DISK_DYNAMIC: ::NTSTATUS = 0xC0380007u32 as i32;
+pub const STATUS_VOLMGR_DISK_ID_INVALID: ::NTSTATUS = 0xC0380008u32 as i32;
+pub const STATUS_VOLMGR_DISK_INVALID: ::NTSTATUS = 0xC0380009u32 as i32;
+pub const STATUS_VOLMGR_DISK_LAST_VOTER: ::NTSTATUS = 0xC038000Au32 as i32;
+pub const STATUS_VOLMGR_DISK_LAYOUT_INVALID: ::NTSTATUS = 0xC038000Bu32 as i32;
+pub const STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS: ::NTSTATUS = 0xC038000Cu32 as i32;
+pub const STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED: ::NTSTATUS = 0xC038000Du32 as i32;
+pub const STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL: ::NTSTATUS = 0xC038000Eu32 as i32;
+pub const STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS: ::NTSTATUS = 0xC038000Fu32 as i32;
+pub const STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS: ::NTSTATUS = 0xC0380010u32 as i32;
+pub const STATUS_VOLMGR_DISK_MISSING: ::NTSTATUS = 0xC0380011u32 as i32;
+pub const STATUS_VOLMGR_DISK_NOT_EMPTY: ::NTSTATUS = 0xC0380012u32 as i32;
+pub const STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE: ::NTSTATUS = 0xC0380013u32 as i32;
+pub const STATUS_VOLMGR_DISK_REVECTORING_FAILED: ::NTSTATUS = 0xC0380014u32 as i32;
+pub const STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID: ::NTSTATUS = 0xC0380015u32 as i32;
+pub const STATUS_VOLMGR_DISK_SET_NOT_CONTAINED: ::NTSTATUS = 0xC0380016u32 as i32;
+pub const STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS: ::NTSTATUS = 0xC0380017u32 as i32;
+pub const STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES: ::NTSTATUS = 0xC0380018u32 as i32;
+pub const STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED: ::NTSTATUS = 0xC0380019u32 as i32;
+pub const STATUS_VOLMGR_EXTENT_ALREADY_USED: ::NTSTATUS = 0xC038001Au32 as i32;
+pub const STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS: ::NTSTATUS = 0xC038001Bu32 as i32;
+pub const STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION: ::NTSTATUS = 0xC038001Cu32 as i32;
+pub const STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED: ::NTSTATUS = 0xC038001Du32 as i32;
+pub const STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION: ::NTSTATUS = 0xC038001Eu32 as i32;
+pub const STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH: ::NTSTATUS = 0xC038001Fu32 as i32;
+pub const STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED: ::NTSTATUS = 0xC0380020u32 as i32;
+pub const STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID: ::NTSTATUS = 0xC0380021u32 as i32;
+pub const STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS: ::NTSTATUS = 0xC0380022u32 as i32;
+pub const STATUS_VOLMGR_MEMBER_IN_SYNC: ::NTSTATUS = 0xC0380023u32 as i32;
+pub const STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE: ::NTSTATUS = 0xC0380024u32 as i32;
+pub const STATUS_VOLMGR_MEMBER_INDEX_INVALID: ::NTSTATUS = 0xC0380025u32 as i32;
+pub const STATUS_VOLMGR_MEMBER_MISSING: ::NTSTATUS = 0xC0380026u32 as i32;
+pub const STATUS_VOLMGR_MEMBER_NOT_DETACHED: ::NTSTATUS = 0xC0380027u32 as i32;
+pub const STATUS_VOLMGR_MEMBER_REGENERATING: ::NTSTATUS = 0xC0380028u32 as i32;
+pub const STATUS_VOLMGR_ALL_DISKS_FAILED: ::NTSTATUS = 0xC0380029u32 as i32;
+pub const STATUS_VOLMGR_NO_REGISTERED_USERS: ::NTSTATUS = 0xC038002Au32 as i32;
+pub const STATUS_VOLMGR_NO_SUCH_USER: ::NTSTATUS = 0xC038002Bu32 as i32;
+pub const STATUS_VOLMGR_NOTIFICATION_RESET: ::NTSTATUS = 0xC038002Cu32 as i32;
+pub const STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID: ::NTSTATUS = 0xC038002Du32 as i32;
+pub const STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID: ::NTSTATUS = 0xC038002Eu32 as i32;
+pub const STATUS_VOLMGR_PACK_DUPLICATE: ::NTSTATUS = 0xC038002Fu32 as i32;
+pub const STATUS_VOLMGR_PACK_ID_INVALID: ::NTSTATUS = 0xC0380030u32 as i32;
+pub const STATUS_VOLMGR_PACK_INVALID: ::NTSTATUS = 0xC0380031u32 as i32;
+pub const STATUS_VOLMGR_PACK_NAME_INVALID: ::NTSTATUS = 0xC0380032u32 as i32;
+pub const STATUS_VOLMGR_PACK_OFFLINE: ::NTSTATUS = 0xC0380033u32 as i32;
+pub const STATUS_VOLMGR_PACK_HAS_QUORUM: ::NTSTATUS = 0xC0380034u32 as i32;
+pub const STATUS_VOLMGR_PACK_WITHOUT_QUORUM: ::NTSTATUS = 0xC0380035u32 as i32;
+pub const STATUS_VOLMGR_PARTITION_STYLE_INVALID: ::NTSTATUS = 0xC0380036u32 as i32;
+pub const STATUS_VOLMGR_PARTITION_UPDATE_FAILED: ::NTSTATUS = 0xC0380037u32 as i32;
+pub const STATUS_VOLMGR_PLEX_IN_SYNC: ::NTSTATUS = 0xC0380038u32 as i32;
+pub const STATUS_VOLMGR_PLEX_INDEX_DUPLICATE: ::NTSTATUS = 0xC0380039u32 as i32;
+pub const STATUS_VOLMGR_PLEX_INDEX_INVALID: ::NTSTATUS = 0xC038003Au32 as i32;
+pub const STATUS_VOLMGR_PLEX_LAST_ACTIVE: ::NTSTATUS = 0xC038003Bu32 as i32;
+pub const STATUS_VOLMGR_PLEX_MISSING: ::NTSTATUS = 0xC038003Cu32 as i32;
+pub const STATUS_VOLMGR_PLEX_REGENERATING: ::NTSTATUS = 0xC038003Du32 as i32;
+pub const STATUS_VOLMGR_PLEX_TYPE_INVALID: ::NTSTATUS = 0xC038003Eu32 as i32;
+pub const STATUS_VOLMGR_PLEX_NOT_RAID5: ::NTSTATUS = 0xC038003Fu32 as i32;
+pub const STATUS_VOLMGR_PLEX_NOT_SIMPLE: ::NTSTATUS = 0xC0380040u32 as i32;
+pub const STATUS_VOLMGR_STRUCTURE_SIZE_INVALID: ::NTSTATUS = 0xC0380041u32 as i32;
+pub const STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS: ::NTSTATUS = 0xC0380042u32 as i32;
+pub const STATUS_VOLMGR_TRANSACTION_IN_PROGRESS: ::NTSTATUS = 0xC0380043u32 as i32;
+pub const STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE: ::NTSTATUS = 0xC0380044u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK: ::NTSTATUS = 0xC0380045u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_ID_INVALID: ::NTSTATUS = 0xC0380046u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_LENGTH_INVALID: ::NTSTATUS = 0xC0380047u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE: ::NTSTATUS = 0xC0380048u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_NOT_MIRRORED: ::NTSTATUS = 0xC0380049u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_NOT_RETAINED: ::NTSTATUS = 0xC038004Au32 as i32;
+pub const STATUS_VOLMGR_VOLUME_OFFLINE: ::NTSTATUS = 0xC038004Bu32 as i32;
+pub const STATUS_VOLMGR_VOLUME_RETAINED: ::NTSTATUS = 0xC038004Cu32 as i32;
+pub const STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID: ::NTSTATUS = 0xC038004Du32 as i32;
+pub const STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE: ::NTSTATUS = 0xC038004Eu32 as i32;
+pub const STATUS_VOLMGR_BAD_BOOT_DISK: ::NTSTATUS = 0xC038004Fu32 as i32;
+pub const STATUS_VOLMGR_PACK_CONFIG_OFFLINE: ::NTSTATUS = 0xC0380050u32 as i32;
+pub const STATUS_VOLMGR_PACK_CONFIG_ONLINE: ::NTSTATUS = 0xC0380051u32 as i32;
+pub const STATUS_VOLMGR_NOT_PRIMARY_PACK: ::NTSTATUS = 0xC0380052u32 as i32;
+pub const STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED: ::NTSTATUS = 0xC0380053u32 as i32;
+pub const STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID: ::NTSTATUS = 0xC0380054u32 as i32;
+pub const STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID: ::NTSTATUS = 0xC0380055u32 as i32;
+pub const STATUS_VOLMGR_VOLUME_MIRRORED: ::NTSTATUS = 0xC0380056u32 as i32;
+pub const STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED: ::NTSTATUS = 0xC0380057u32 as i32;
+pub const STATUS_VOLMGR_NO_VALID_LOG_COPIES: ::NTSTATUS = 0xC0380058u32 as i32;
+pub const STATUS_VOLMGR_PRIMARY_PACK_PRESENT: ::NTSTATUS = 0xC0380059u32 as i32;
+pub const STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID: ::NTSTATUS = 0xC038005Au32 as i32;
+pub const STATUS_VOLMGR_MIRROR_NOT_SUPPORTED: ::NTSTATUS = 0xC038005Bu32 as i32;
+pub const STATUS_VOLMGR_RAID5_NOT_SUPPORTED: ::NTSTATUS = 0xC038005Cu32 as i32;
+pub const STATUS_BCD_NOT_ALL_ENTRIES_IMPORTED: ::NTSTATUS = 0x80390001u32 as i32;
+pub const STATUS_BCD_TOO_MANY_ELEMENTS: ::NTSTATUS = 0xC0390002u32 as i32;
+pub const STATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED: ::NTSTATUS = 0x80390003u32 as i32;
+pub const STATUS_VHD_DRIVE_FOOTER_MISSING: ::NTSTATUS = 0xC03A0001u32 as i32;
+pub const STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH: ::NTSTATUS = 0xC03A0002u32 as i32;
+pub const STATUS_VHD_DRIVE_FOOTER_CORRUPT: ::NTSTATUS = 0xC03A0003u32 as i32;
+pub const STATUS_VHD_FORMAT_UNKNOWN: ::NTSTATUS = 0xC03A0004u32 as i32;
+pub const STATUS_VHD_FORMAT_UNSUPPORTED_VERSION: ::NTSTATUS = 0xC03A0005u32 as i32;
+pub const STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH: ::NTSTATUS = 0xC03A0006u32 as i32;
+pub const STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION: ::NTSTATUS = 0xC03A0007u32 as i32;
+pub const STATUS_VHD_SPARSE_HEADER_CORRUPT: ::NTSTATUS = 0xC03A0008u32 as i32;
+pub const STATUS_VHD_BLOCK_ALLOCATION_FAILURE: ::NTSTATUS = 0xC03A0009u32 as i32;
+pub const STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT: ::NTSTATUS = 0xC03A000Au32 as i32;
+pub const STATUS_VHD_INVALID_BLOCK_SIZE: ::NTSTATUS = 0xC03A000Bu32 as i32;
+pub const STATUS_VHD_BITMAP_MISMATCH: ::NTSTATUS = 0xC03A000Cu32 as i32;
+pub const STATUS_VHD_PARENT_VHD_NOT_FOUND: ::NTSTATUS = 0xC03A000Du32 as i32;
+pub const STATUS_VHD_CHILD_PARENT_ID_MISMATCH: ::NTSTATUS = 0xC03A000Eu32 as i32;
+pub const STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH: ::NTSTATUS = 0xC03A000Fu32 as i32;
+pub const STATUS_VHD_METADATA_READ_FAILURE: ::NTSTATUS = 0xC03A0010u32 as i32;
+pub const STATUS_VHD_METADATA_WRITE_FAILURE: ::NTSTATUS = 0xC03A0011u32 as i32;
+pub const STATUS_VHD_INVALID_SIZE: ::NTSTATUS = 0xC03A0012u32 as i32;
+pub const STATUS_VHD_INVALID_FILE_SIZE: ::NTSTATUS = 0xC03A0013u32 as i32;
+pub const STATUS_VIRTDISK_PROVIDER_NOT_FOUND: ::NTSTATUS = 0xC03A0014u32 as i32;
+pub const STATUS_VIRTDISK_NOT_VIRTUAL_DISK: ::NTSTATUS = 0xC03A0015u32 as i32;
+pub const STATUS_VHD_PARENT_VHD_ACCESS_DENIED: ::NTSTATUS = 0xC03A0016u32 as i32;
+pub const STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH: ::NTSTATUS = 0xC03A0017u32 as i32;
+pub const STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED: ::NTSTATUS = 0xC03A0018u32 as i32;
+pub const STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT: ::NTSTATUS = 0xC03A0019u32 as i32;
+pub const STATUS_VIRTUAL_DISK_LIMITATION: ::NTSTATUS = 0xC03A001Au32 as i32;
+pub const STATUS_VHD_INVALID_TYPE: ::NTSTATUS = 0xC03A001Bu32 as i32;
+pub const STATUS_VHD_INVALID_STATE: ::NTSTATUS = 0xC03A001Cu32 as i32;
+pub const STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE: ::NTSTATUS = 0xC03A001Du32 as i32;
+pub const STATUS_VIRTDISK_DISK_ALREADY_OWNED: ::NTSTATUS = 0xC03A001Eu32 as i32;
+pub const STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE: ::NTSTATUS = 0xC03A001Fu32 as i32;
+pub const STATUS_CTLOG_TRACKING_NOT_INITIALIZED: ::NTSTATUS = 0xC03A0020u32 as i32;
+pub const STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE: ::NTSTATUS = 0xC03A0021u32 as i32;
+pub const STATUS_CTLOG_VHD_CHANGED_OFFLINE: ::NTSTATUS = 0xC03A0022u32 as i32;
+pub const STATUS_CTLOG_INVALID_TRACKING_STATE: ::NTSTATUS = 0xC03A0023u32 as i32;
+pub const STATUS_CTLOG_INCONSISTENT_TRACKING_FILE: ::NTSTATUS = 0xC03A0024u32 as i32;
+pub const STATUS_VHD_METADATA_FULL: ::NTSTATUS = 0xC03A0028u32 as i32;
+pub const STATUS_VHD_INVALID_CHANGE_TRACKING_ID: ::NTSTATUS = 0xC03A0029u32 as i32;
+pub const STATUS_VHD_CHANGE_TRACKING_DISABLED: ::NTSTATUS = 0xC03A002Au32 as i32;
+pub const STATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION: ::NTSTATUS = 0xC03A0030u32 as i32;
+pub const STATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA: ::NTSTATUS = 0xC03A0031u32 as i32;
+pub const STATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE: ::NTSTATUS = 0xC03A0032u32 as i32;
+pub const STATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE: ::NTSTATUS = 0xC03A0033u32 as i32;
+pub const STATUS_QUERY_STORAGE_ERROR: ::NTSTATUS = 0x803A0001u32 as i32;
+pub const STATUS_RKF_KEY_NOT_FOUND: ::NTSTATUS = 0xC0400001u32 as i32;
+pub const STATUS_RKF_DUPLICATE_KEY: ::NTSTATUS = 0xC0400002u32 as i32;
+pub const STATUS_RKF_BLOB_FULL: ::NTSTATUS = 0xC0400003u32 as i32;
+pub const STATUS_RKF_STORE_FULL: ::NTSTATUS = 0xC0400004u32 as i32;
+pub const STATUS_RKF_FILE_BLOCKED: ::NTSTATUS = 0xC0400005u32 as i32;
+pub const STATUS_RKF_ACTIVE_KEY: ::NTSTATUS = 0xC0400006u32 as i32;
+pub const STATUS_RDBSS_RESTART_OPERATION: ::NTSTATUS = 0xC0410001u32 as i32;
+pub const STATUS_RDBSS_CONTINUE_OPERATION: ::NTSTATUS = 0xC0410002u32 as i32;
+pub const STATUS_RDBSS_POST_OPERATION: ::NTSTATUS = 0xC0410003u32 as i32;
+pub const STATUS_BTH_ATT_INVALID_HANDLE: ::NTSTATUS = 0xC0420001u32 as i32;
+pub const STATUS_BTH_ATT_READ_NOT_PERMITTED: ::NTSTATUS = 0xC0420002u32 as i32;
+pub const STATUS_BTH_ATT_WRITE_NOT_PERMITTED: ::NTSTATUS = 0xC0420003u32 as i32;
+pub const STATUS_BTH_ATT_INVALID_PDU: ::NTSTATUS = 0xC0420004u32 as i32;
+pub const STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION: ::NTSTATUS = 0xC0420005u32 as i32;
+pub const STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED: ::NTSTATUS = 0xC0420006u32 as i32;
+pub const STATUS_BTH_ATT_INVALID_OFFSET: ::NTSTATUS = 0xC0420007u32 as i32;
+pub const STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION: ::NTSTATUS = 0xC0420008u32 as i32;
+pub const STATUS_BTH_ATT_PREPARE_QUEUE_FULL: ::NTSTATUS = 0xC0420009u32 as i32;
+pub const STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND: ::NTSTATUS = 0xC042000Au32 as i32;
+pub const STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG: ::NTSTATUS = 0xC042000Bu32 as i32;
+pub const STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE: ::NTSTATUS = 0xC042000Cu32 as i32;
+pub const STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH: ::NTSTATUS = 0xC042000Du32 as i32;
+pub const STATUS_BTH_ATT_UNLIKELY: ::NTSTATUS = 0xC042000Eu32 as i32;
+pub const STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION: ::NTSTATUS = 0xC042000Fu32 as i32;
+pub const STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE: ::NTSTATUS = 0xC0420010u32 as i32;
+pub const STATUS_BTH_ATT_INSUFFICIENT_RESOURCES: ::NTSTATUS = 0xC0420011u32 as i32;
+pub const STATUS_BTH_ATT_UNKNOWN_ERROR: ::NTSTATUS = 0xC0421000u32 as i32;
+pub const STATUS_SECUREBOOT_ROLLBACK_DETECTED: ::NTSTATUS = 0xC0430001u32 as i32;
+pub const STATUS_SECUREBOOT_POLICY_VIOLATION: ::NTSTATUS = 0xC0430002u32 as i32;
+pub const STATUS_SECUREBOOT_INVALID_POLICY: ::NTSTATUS = 0xC0430003u32 as i32;
+pub const STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND: ::NTSTATUS = 0xC0430004u32 as i32;
+pub const STATUS_SECUREBOOT_POLICY_NOT_SIGNED: ::NTSTATUS = 0xC0430005u32 as i32;
+pub const STATUS_SECUREBOOT_NOT_ENABLED: ::NTSTATUS = 0x80430006u32 as i32;
+pub const STATUS_SECUREBOOT_FILE_REPLACED: ::NTSTATUS = 0xC0430007u32 as i32;
+pub const STATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED: ::NTSTATUS = 0xC0E90001u32 as i32;
+pub const STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION: ::NTSTATUS = 0xC0E90002u32 as i32;
+pub const STATUS_SYSTEM_INTEGRITY_INVALID_POLICY: ::NTSTATUS = 0xC0E90003u32 as i32;
+pub const STATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED: ::NTSTATUS = 0xC0E90004u32 as i32;
+pub const STATUS_NO_APPLICABLE_APP_LICENSES_FOUND: ::NTSTATUS = 0xC0EA0001u32 as i32;
+pub const STATUS_AUDIO_ENGINE_NODE_NOT_FOUND: ::NTSTATUS = 0xC0440001u32 as i32;
+pub const STATUS_HDAUDIO_EMPTY_CONNECTION_LIST: ::NTSTATUS = 0xC0440002u32 as i32;
+pub const STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED: ::NTSTATUS = 0xC0440003u32 as i32;
+pub const STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED: ::NTSTATUS = 0xC0440004u32 as i32;
+pub const STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY: ::NTSTATUS = 0xC0440005u32 as i32;
+pub const STATUS_SPACES_RESILIENCY_TYPE_INVALID: ::NTSTATUS = 0xC0E70003u32 as i32;
+pub const STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID: ::NTSTATUS = 0xC0E70004u32 as i32;
+pub const STATUS_SPACES_DRIVE_REDUNDANCY_INVALID: ::NTSTATUS = 0xC0E70006u32 as i32;
+pub const STATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID: ::NTSTATUS = 0xC0E70007u32 as i32;
+pub const STATUS_SPACES_INTERLEAVE_LENGTH_INVALID: ::NTSTATUS = 0xC0E70009u32 as i32;
+pub const STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID: ::NTSTATUS = 0xC0E7000Au32 as i32;
+pub const STATUS_SPACES_NOT_ENOUGH_DRIVES: ::NTSTATUS = 0xC0E7000Bu32 as i32;
+pub const STATUS_SPACES_EXTENDED_ERROR: ::NTSTATUS = 0xC0E7000Cu32 as i32;
+pub const STATUS_SPACES_PROVISIONING_TYPE_INVALID: ::NTSTATUS = 0xC0E7000Du32 as i32;
+pub const STATUS_SPACES_ALLOCATION_SIZE_INVALID: ::NTSTATUS = 0xC0E7000Eu32 as i32;
+pub const STATUS_SPACES_ENCLOSURE_AWARE_INVALID: ::NTSTATUS = 0xC0E7000Fu32 as i32;
+pub const STATUS_SPACES_WRITE_CACHE_SIZE_INVALID: ::NTSTATUS = 0xC0E70010u32 as i32;
+pub const STATUS_SPACES_NUMBER_OF_GROUPS_INVALID: ::NTSTATUS = 0xC0E70011u32 as i32;
+pub const STATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID: ::NTSTATUS = 0xC0E70012u32 as i32;
+pub const STATUS_SPACES_UPDATE_COLUMN_STATE: ::NTSTATUS = 0xC0E70013u32 as i32;
+pub const STATUS_SPACES_MAP_REQUIRED: ::NTSTATUS = 0xC0E70014u32 as i32;
+pub const STATUS_SPACES_UNSUPPORTED_VERSION: ::NTSTATUS = 0xC0E70015u32 as i32;
+pub const STATUS_SPACES_CORRUPT_METADATA: ::NTSTATUS = 0xC0E70016u32 as i32;
+pub const STATUS_SPACES_DRT_FULL: ::NTSTATUS = 0xC0E70017u32 as i32;
+pub const STATUS_SPACES_INCONSISTENCY: ::NTSTATUS = 0xC0E70018u32 as i32;
+pub const STATUS_SPACES_LOG_NOT_READY: ::NTSTATUS = 0xC0E70019u32 as i32;
+pub const STATUS_SPACES_NO_REDUNDANCY: ::NTSTATUS = 0xC0E7001Au32 as i32;
+pub const STATUS_SPACES_DRIVE_NOT_READY: ::NTSTATUS = 0xC0E7001Bu32 as i32;
+pub const STATUS_SPACES_REPAIRED: ::NTSTATUS = 0x00E7001C;
+pub const STATUS_SPACES_PAUSE: ::NTSTATUS = 0x00E7001D;
+pub const STATUS_SPACES_COMPLETE: ::NTSTATUS = 0x00E7001E;
+pub const STATUS_VOLSNAP_BOOTFILE_NOT_VALID: ::NTSTATUS = 0xC0500003u32 as i32;
+pub const STATUS_IO_PREEMPTED: ::NTSTATUS = 0xC0510001u32 as i32;
+pub const STATUS_SVHDX_ERROR_STORED: ::NTSTATUS = 0xC05C0000u32 as i32;
+pub const STATUS_SVHDX_ERROR_NOT_AVAILABLE: ::NTSTATUS = 0xC05CFF00u32 as i32;
+pub const STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE: ::NTSTATUS = 0xC05CFF01u32 as i32;
+pub const STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED: ::NTSTATUS = 0xC05CFF02u32 as i32;
+pub const STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED: ::NTSTATUS = 0xC05CFF03u32 as i32;
+pub const STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED: ::NTSTATUS = 0xC05CFF04u32 as i32;
+pub const STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED: ::NTSTATUS = 0xC05CFF05u32 as i32;
+pub const STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED: ::NTSTATUS = 0xC05CFF06u32 as i32;
+pub const STATUS_SVHDX_RESERVATION_CONFLICT: ::NTSTATUS = 0xC05CFF07u32 as i32;
+pub const STATUS_SVHDX_WRONG_FILE_TYPE: ::NTSTATUS = 0xC05CFF08u32 as i32;
+pub const STATUS_SVHDX_VERSION_MISMATCH: ::NTSTATUS = 0xC05CFF09u32 as i32;
+pub const STATUS_VHD_SHARED: ::NTSTATUS = 0xC05CFF0Au32 as i32;
+pub const STATUS_SVHDX_NO_INITIATOR: ::NTSTATUS = 0xC05CFF0Bu32 as i32;
+pub const STATUS_VHDSET_BACKING_STORAGE_NOT_FOUND: ::NTSTATUS = 0xC05CFF0Cu32 as i32;
+pub const STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP: ::NTSTATUS = 0xC05D0000u32 as i32;
+pub const STATUS_SMB_BAD_CLUSTER_DIALECT: ::NTSTATUS = 0xC05D0001u32 as i32;
+pub const STATUS_SMB_GUEST_LOGON_BLOCKED: ::NTSTATUS = 0xC05D0002u32 as i32;
+pub const STATUS_SECCORE_INVALID_COMMAND: ::NTSTATUS = 0xC0E80000u32 as i32;
+pub const STATUS_VSM_NOT_INITIALIZED: ::NTSTATUS = 0xC0450000u32 as i32;
+pub const STATUS_VSM_DMA_PROTECTION_NOT_IN_USE: ::NTSTATUS = 0xC0450001u32 as i32;
diff --git a/third_party/rust/winapi-0.2.8/src/oaidl.rs b/third_party/rust/winapi-0.2.8/src/oaidl.rs
new file mode 100644
index 0000000000..c705060bd4
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/oaidl.rs
@@ -0,0 +1,590 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of OAIdl.h
+pub type wireBRECORD = *mut _wireBRECORD;
+pub type wireVARIANT = *mut _wireVARIANT;
+STRUCT!{struct SAFEARRAYBOUND {
+ cElements: ::ULONG,
+ lLbound: ::LONG,
+}}
+STRUCT!{struct SAFEARR_BSTR {
+ Size: ::ULONG,
+ aBstr: *mut ::wireBSTR,
+}}
+STRUCT!{struct SAFEARR_UNKNOWN {
+ Size: ::ULONG,
+ apUnknown: *mut *mut ::IUnknown,
+}}
+STRUCT!{struct SAFEARR_DISPATCH {
+ Size: ::ULONG,
+ apDispatch: *mut *mut IDispatch,
+}}
+STRUCT!{struct SAFEARR_VARIANT {
+ Size: ::ULONG,
+ aVariant: *mut wireVARIANT,
+}}
+STRUCT!{struct SAFEARR_BRECORD {
+ Size: ::ULONG,
+ aRecord: *mut wireBRECORD,
+}}
+STRUCT!{struct SAFEARR_HAVEIID {
+ Size: ::ULONG,
+ apUnknown: *mut *mut ::IUnknown,
+ iid: ::IID,
+}}
+ENUM!{enum SF_TYPE {
+ SF_ERROR = ::VT_ERROR.0,
+ SF_I1 = ::VT_I1.0,
+ SF_I2 = ::VT_I2.0,
+ SF_I4 = ::VT_I4.0,
+ SF_I8 = ::VT_I8.0,
+ SF_BSTR = ::VT_BSTR.0,
+ SF_UNKNOWN = ::VT_UNKNOWN.0,
+ SF_DISPATCH = ::VT_DISPATCH.0,
+ SF_VARIANT = ::VT_VARIANT.0,
+ SF_RECORD = ::VT_RECORD.0,
+ SF_HAVEIID = ::VT_UNKNOWN.0 | ::VT_RESERVED.0,
+}}
+STRUCT!{struct SAFEARRAYUNION {
+ sfType: ::ULONG,
+ u: __MIDL_IOleAutomationTypes_0001,
+}}
+#[cfg(target_arch = "x86_64")]
+STRUCT!{struct __MIDL_IOleAutomationTypes_0001 {
+ data0: u32,
+ data1: [u32; 6],
+}}
+#[cfg(target_arch = "x86")]
+STRUCT!{struct __MIDL_IOleAutomationTypes_0001 {
+ data0: u32,
+ data1: [u32; 5],
+}}
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, BstrStr, BstrStr_mut, SAFEARR_BSTR);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, UnknownStr, UnknownStr_mut, SAFEARR_UNKNOWN);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, DispatchStr, DispatchStr_mut, SAFEARR_DISPATCH);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, VariantStr, VariantStr_mut, SAFEARR_VARIANT);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, RecordStr, RecordStr_mut, SAFEARR_BRECORD);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, HaveIidStr, HaveIidStr_mut, SAFEARR_HAVEIID);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, ByteStr, ByteStr_mut, ::BYTE_SIZEDARR);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, WordStr, WordStr_mut, ::WORD_SIZEDARR);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, LongStr, LongStr_mut, ::DWORD_SIZEDARR);
+UNION!(__MIDL_IOleAutomationTypes_0001, data0, HyperStr, HyperStr_mut, ::HYPER_SIZEDARR);
+STRUCT!{struct _wireSAFEARRAY {
+ cDims: ::USHORT,
+ fFeatures: ::USHORT,
+ cbElements: ::ULONG,
+ cLocks: ::ULONG,
+ uArrayStructs: SAFEARRAYUNION,
+ rgsaBound: [SAFEARRAYBOUND; 1],
+}}
+pub type wireSAFEARRAY = *mut _wireSAFEARRAY;
+pub type wirePSAFEARRAY = *mut wireSAFEARRAY;
+STRUCT!{struct SAFEARRAY {
+ cDims: ::USHORT,
+ fFeatures: ::USHORT,
+ cbElements: ::ULONG,
+ cLocks: ::ULONG,
+ pvData: ::PVOID,
+ rgsabound: [SAFEARRAYBOUND; 1],
+}}
+pub type LPSAFEARRAY = *mut SAFEARRAY;
+pub const FADF_AUTO: ::DWORD = 0x1;
+pub const FADF_STATIC: ::DWORD = 0x2;
+pub const FADF_EMBEDDED: ::DWORD = 0x4;
+pub const FADF_FIXEDSIZE: ::DWORD = 0x10;
+pub const FADF_RECORD: ::DWORD = 0x20;
+pub const FADF_HAVEIID: ::DWORD = 0x40;
+pub const FADF_HAVEVARTYPE: ::DWORD = 0x80;
+pub const FADF_BSTR: ::DWORD = 0x100;
+pub const FADF_UNKNOWN: ::DWORD = 0x200;
+pub const FADF_DISPATCH: ::DWORD = 0x400;
+pub const FADF_VARIANT: ::DWORD = 0x800;
+pub const FADF_RESERVED: ::DWORD = 0xf008;
+#[cfg(target_arch = "x86_64")]
+STRUCT!{struct VARIANT {
+ data0: u64,
+ data1: u64,
+ data2: u64,
+}}
+#[cfg(target_arch = "x86")]
+STRUCT!{struct VARIANT {
+ data0: u64,
+ data1: u32,
+ data2: u32,
+}}
+UNION!(VARIANT, data0, vt, vt_mut, ::VARTYPE);
+UNION!(VARIANT, data1, llVal, llVal_mut, ::LONGLONG);
+UNION!(VARIANT, data1, lVal, lVal_mut, ::LONG);
+UNION!(VARIANT, data1, bVal, bVal_mut, ::BYTE);
+UNION!(VARIANT, data1, iVal, iVal_mut, ::SHORT);
+UNION!(VARIANT, data1, fltVal, fltVal_mut, ::FLOAT);
+UNION!(VARIANT, data1, dblVal, dblVal_mut, ::DOUBLE);
+UNION!(VARIANT, data1, boolVal, boolVal_mut, ::VARIANT_BOOL);
+UNION!(VARIANT, data1, scode, scode_mut, ::SCODE);
+UNION!(VARIANT, data1, cyVal, cyVal_mut, ::CY);
+UNION!(VARIANT, data1, date, date_mut, ::DATE);
+UNION!(VARIANT, data1, bstrVal, bstrVal_mut, ::BSTR);
+UNION!(VARIANT, data1, punkVal, punkVal_mut, *mut ::IUnknown);
+UNION!(VARIANT, data1, pdispVal, pdispVal_mut, *mut IDispatch);
+UNION!(VARIANT, data1, parray, parray_mut, *mut SAFEARRAY);
+UNION!(VARIANT, data1, pllVal, pllVal_mut, *mut ::LONGLONG);
+UNION!(VARIANT, data1, plVal, plVal_mut, *mut ::LONG);
+UNION!(VARIANT, data1, pbVal, pbVal_mut, *mut ::BYTE);
+UNION!(VARIANT, data1, piVal, piVal_mut, *mut ::SHORT);
+UNION!(VARIANT, data1, pfltVal, pfltVal_mut, *mut ::FLOAT);
+UNION!(VARIANT, data1, pdblVal, pdblVal_mut, *mut ::DOUBLE);
+UNION!(VARIANT, data1, pboolVal, pboolVal_mut, *mut ::VARIANT_BOOL);
+UNION!(VARIANT, data1, pscode, pscode_mut, *mut ::SCODE);
+UNION!(VARIANT, data1, pcyVal, pcyVal_mut, *mut ::CY);
+UNION!(VARIANT, data1, pdate, pdate_mut, *mut ::DATE);
+UNION!(VARIANT, data1, pbstrVal, pbstrVal_mut, *mut ::BSTR);
+UNION!(VARIANT, data1, ppunkVal, ppunkVal_mut, *mut *mut ::IUnknown);
+UNION!(VARIANT, data1, ppdispVal, ppdispVal_mut, *mut *mut IDispatch);
+UNION!(VARIANT, data1, pparray, pparray_mut, *mut *mut SAFEARRAY);
+UNION!(VARIANT, data1, pvarVal, pvarVal_mut, *mut VARIANT);
+UNION!(VARIANT, data1, byref, byref_mut, ::PVOID);
+UNION!(VARIANT, data1, cVal, cVal_mut, ::CHAR);
+UNION!(VARIANT, data1, uiVal, uiVal_mut, ::USHORT);
+UNION!(VARIANT, data1, ulVal, ulVal_mut, ::ULONG);
+UNION!(VARIANT, data1, ullVal, ullVal_mut, ::ULONGLONG);
+UNION!(VARIANT, data1, intVal, intVal_mut, ::INT);
+UNION!(VARIANT, data1, uintVal, uintVal_mut, ::UINT);
+UNION!(VARIANT, data1, pdecVal, pdecVal_mut, *mut ::DECIMAL);
+UNION!(VARIANT, data1, pcVal, pcVal_mut, *mut ::CHAR);
+UNION!(VARIANT, data1, puiVal, puiVal_mut, *mut ::USHORT);
+UNION!(VARIANT, data1, pulVal, pulVal_mut, *mut ::ULONG);
+UNION!(VARIANT, data1, pullVal, pullVal_mut, *mut ::ULONGLONG);
+UNION!(VARIANT, data1, pintVal, pintVal_mut, *mut ::INT);
+UNION!(VARIANT, data1, puintVal, puintVal_mut, *mut ::UINT);
+UNION!(VARIANT, data1, pvRecord, pvRecord_mut, ::PVOID);
+UNION!(VARIANT, data2, pRecInfo, pRecInfo_mut, *mut IRecordInfo);
+UNION!(VARIANT, data0, decVal, decVal_mut, ::DECIMAL);
+pub type LPVARIANT = *mut VARIANT;
+pub type VARIANTARG = VARIANT;
+pub type LPVARIANTARG = *mut VARIANT;
+pub type REFVARIANT = *const VARIANT;
+STRUCT!{struct _wireBRECORD {
+ fFlags: ::ULONG,
+ clSize: ::ULONG,
+ pRecInfo: *mut IRecordInfo,
+ pRecord: *mut ::BYTE,
+}}
+STRUCT!{struct _wireVARIANT {
+ clSize: ::DWORD,
+ rpcReserved: ::DWORD,
+ vt: ::USHORT,
+ wReserved1: ::USHORT,
+ wReserved2: ::USHORT,
+ wReserved3: ::USHORT,
+ data0: u64,
+ data1: u64,
+}}
+UNION!(_wireVARIANT, data0, llVal, llVal_mut, ::LONGLONG);
+UNION!(_wireVARIANT, data0, lVal, lVal_mut, ::LONG);
+UNION!(_wireVARIANT, data0, bVal, bVal_mut, ::BYTE);
+UNION!(_wireVARIANT, data0, iVal, iVal_mut, ::SHORT);
+UNION!(_wireVARIANT, data0, fltVal, fltVal_mut, ::FLOAT);
+UNION!(_wireVARIANT, data0, dblVal, dblVal_mut, ::DOUBLE);
+UNION!(_wireVARIANT, data0, boolVal, boolVal_mut, ::VARIANT_BOOL);
+UNION!(_wireVARIANT, data0, scode, scode_mut, ::SCODE);
+UNION!(_wireVARIANT, data0, cyVal, cyVal_mut, ::CY);
+UNION!(_wireVARIANT, data0, date, date_mut, ::DATE);
+UNION!(_wireVARIANT, data0, bstrVal, bstrVal_mut, ::wireBSTR);
+UNION!(_wireVARIANT, data0, punkVal, punkVal_mut, *mut ::IUnknown);
+UNION!(_wireVARIANT, data0, pdispVal, pdispVal_mut, *mut IDispatch);
+UNION!(_wireVARIANT, data0, parray, parray_mut, wirePSAFEARRAY);
+UNION!(_wireVARIANT, data0, brecVal, brecVal_mut, wireBRECORD);
+UNION!(_wireVARIANT, data0, pllVal, pllVal_mut, *mut ::LONGLONG);
+UNION!(_wireVARIANT, data0, plVal, plVal_mut, *mut ::LONG);
+UNION!(_wireVARIANT, data0, pbVal, pbVal_mut, *mut ::BYTE);
+UNION!(_wireVARIANT, data0, piVal, piVal_mut, *mut ::SHORT);
+UNION!(_wireVARIANT, data0, pfltVal, pfltVal_mut, *mut ::FLOAT);
+UNION!(_wireVARIANT, data0, pdblVal, pdblVal_mut, *mut ::DOUBLE);
+UNION!(_wireVARIANT, data0, pboolVal, pboolVal_mut, *mut ::VARIANT_BOOL);
+UNION!(_wireVARIANT, data0, pscode, pscode_mut, *mut ::SCODE);
+UNION!(_wireVARIANT, data0, pcyVal, pcyVal_mut, *mut ::CY);
+UNION!(_wireVARIANT, data0, pdate, pdate_mut, *mut ::DATE);
+UNION!(_wireVARIANT, data0, pbstrVal, pbstrVal_mut, *mut ::wireBSTR);
+UNION!(_wireVARIANT, data0, ppunkVal, ppunkVal_mut, *mut *mut ::IUnknown);
+UNION!(_wireVARIANT, data0, ppdispVal, ppdispVal_mut, *mut *mut IDispatch);
+UNION!(_wireVARIANT, data0, pparray, pparray_mut, *mut wirePSAFEARRAY);
+UNION!(_wireVARIANT, data0, pvarVal, pvarVal_mut, *mut wireVARIANT);
+UNION!(_wireVARIANT, data0, cVal, cVal_mut, ::CHAR);
+UNION!(_wireVARIANT, data0, uiVal, uiVal_mut, ::USHORT);
+UNION!(_wireVARIANT, data0, ulVal, ulVal_mut, ::ULONG);
+UNION!(_wireVARIANT, data0, ullVal, ullVal_mut, ::ULONGLONG);
+UNION!(_wireVARIANT, data0, intVal, intVal_mut, ::INT);
+UNION!(_wireVARIANT, data0, uintVal, uintVal_mut, ::UINT);
+UNION!(_wireVARIANT, data0, decVal, decVal_mut, ::DECIMAL);
+UNION!(_wireVARIANT, data0, pcVal, pcVal_mut, *mut ::CHAR);
+UNION!(_wireVARIANT, data0, puiVal, puiVal_mut, *mut ::USHORT);
+UNION!(_wireVARIANT, data0, pulVal, pulVal_mut, *mut ::ULONG);
+UNION!(_wireVARIANT, data0, pullVal, pullVal_mut, *mut ::ULONGLONG);
+UNION!(_wireVARIANT, data0, pintVal, pintVal_mut, *mut ::INT);
+UNION!(_wireVARIANT, data0, puintVal, puintVal_mut, *mut ::UINT);
+UNION!(_wireVARIANT, data0, pdecVal, pdecVal_mut, *mut ::DECIMAL);
+pub type DISPID = ::LONG;
+pub type MEMBERID = DISPID;
+pub type HREFTYPE = ::DWORD;
+ENUM!{enum TYPEKIND {
+ TKIND_ENUM = 0,
+ TKIND_RECORD,
+ TKIND_MODULE,
+ TKIND_INTERFACE,
+ TKIND_DISPATCH,
+ TKIND_COCLASS,
+ TKIND_ALIAS,
+ TKIND_UNION,
+ TKIND_MAX,
+}}
+#[cfg(target_arch = "x86_64")]
+STRUCT!{struct TYPEDESC {
+ data: u64,
+ vt: ::VARTYPE,
+}}
+#[cfg(target_arch = "x86")]
+STRUCT!{struct TYPEDESC {
+ data: u32,
+ vt: ::VARTYPE,
+}}
+UNION!(TYPEDESC, data, lptdesc, lptdesc_mut, *mut TYPEDESC);
+UNION!(TYPEDESC, data, lpadesc, lpadesc_mut, *mut ARRAYDESC);
+UNION!(TYPEDESC, data, hreftype, hreftype_mut, HREFTYPE);
+STRUCT!{struct ARRAYDESC {
+ tdescElem: TYPEDESC,
+ cDims: ::USHORT,
+ rgbounds: [SAFEARRAYBOUND; 1],
+}}
+STRUCT!{struct PARAMDESCEX {
+ cBytes: ::ULONG,
+ varDefaultValue: VARIANTARG,
+}}
+pub type LPPARAMDESCEX = *mut PARAMDESCEX;
+STRUCT!{struct PARAMDESC {
+ pparamdescex: LPPARAMDESCEX,
+ wParamFlags: ::USHORT,
+}}
+pub type LPPARAMDESC = *mut PARAMDESC;
+pub const PARAMFLAG_NONE: ::DWORD = 0;
+pub const PARAMFLAG_FIN: ::DWORD = 0x1;
+pub const PARAMFLAG_FOUT: ::DWORD = 0x2;
+pub const PARAMFLAG_FLCID: ::DWORD = 0x4;
+pub const PARAMFLAG_FRETVAL: ::DWORD = 0x8;
+pub const PARAMFLAG_FOPT: ::DWORD = 0x10;
+pub const PARAMFLAG_FHASDEFAULT: ::DWORD = 0x20;
+pub const PARAMFLAG_FHASCUSTDATA: ::DWORD = 0x40;
+STRUCT!{struct IDLDESC {
+ dwReserved: ::ULONG_PTR,
+ wIDLFlags: ::USHORT,
+}}
+pub type LPIDLDESC = *mut IDLDESC;
+pub const IDLFLAG_NONE: ::DWORD = PARAMFLAG_NONE;
+pub const IDLFLAG_FIN: ::DWORD = PARAMFLAG_FIN;
+pub const IDLFLAG_FOUT: ::DWORD = PARAMFLAG_FOUT;
+pub const IDLFLAG_FLCID: ::DWORD = PARAMFLAG_FLCID;
+pub const IDLFLAG_FRETVAL: ::DWORD = PARAMFLAG_FRETVAL;
+STRUCT!{struct ELEMDESC {
+ tdesc: TYPEDESC,
+ idldesc: IDLDESC,
+}}
+UNION!(ELEMDESC, idldesc, paramdesc, paramdesc_mut, PARAMDESC);
+pub type LPELEMDESC = *mut ELEMDESC;
+STRUCT!{struct TYPEATTR {
+ guid: ::GUID,
+ lcid: ::LCID,
+ dwReserved: ::DWORD,
+ memidConstructor: ::MEMBERID,
+ memidDestructor: ::MEMBERID,
+ lpstrSchema: ::LPOLESTR,
+ cbSizeInstance: ::ULONG,
+ typekind: ::TYPEKIND,
+ cFuncs: ::WORD,
+ cVars: ::WORD,
+ cImplTypes: ::WORD,
+ cbSizeVft: ::WORD,
+ cbAlignment: ::WORD,
+ wTypeFlags: ::WORD,
+ wMajorVerNum: ::WORD,
+ wMinorVerNum: ::WORD,
+ tdescAlias: ::TYPEDESC,
+ idldescType: ::IDLDESC,
+}}
+pub type LPTYPEATTR = *mut TYPEATTR;
+STRUCT!{struct DISPPARAMS {
+ rgvarg: *mut VARIANTARG,
+ rgdispidNamedArgs: *mut DISPID,
+ cArgs: ::UINT,
+ cNamedArgs: ::UINT,
+}}
+STRUCT!{nodebug struct EXCEPINFO {
+ wCode: ::WORD,
+ wReserved: ::WORD,
+ bstrSource: ::BSTR,
+ bstrDescription: ::BSTR,
+ bstrHelpFile: ::BSTR,
+ dwHelpContext: ::DWORD,
+ pvReserved: ::PVOID,
+ pfnDeferredFillIn: Option<unsafe extern "system" fn(einfo: *mut EXCEPINFO) -> ::HRESULT>,
+ scode: ::SCODE,
+}}
+ENUM!{enum CALLCONV {
+ CC_FASTCALL = 0,
+ CC_CDECL = 1,
+ CC_MSCPASCAL,
+ CC_PASCAL,
+ CC_MACPASCAL,
+ CC_STDCALL,
+ CC_FPFASTCALL,
+ CC_SYSCALL,
+ CC_MPWCDECL,
+ CC_MPWPASCAL,
+ CC_MAX,
+}}
+ENUM!{enum FUNCKIND {
+ FUNC_VIRTUAL = 0,
+ FUNC_PUREVIRTUAL,
+ FUNC_NONVIRTUAL,
+ FUNC_STATIC,
+ FUNC_DISPATCH,
+}}
+FLAGS!{enum INVOKEKIND {
+ INVOKE_FUNC = 1,
+ INVOKE_PROPERTYGET = 2,
+ INVOKE_PROPERTYPUT = 4,
+ INVOKE_PROPERTYPUTREF = 8,
+}}
+STRUCT!{struct FUNCDESC {
+ memid: ::MEMBERID,
+ lprgscode: *mut ::SCODE,
+ lprgelemdescParam: *mut ::ELEMDESC,
+ funckind: ::FUNCKIND,
+ invkind: ::INVOKEKIND,
+ callconv: ::CALLCONV,
+ cParams: ::SHORT,
+ cParamsOpt: ::SHORT,
+ oVft: ::SHORT,
+ cScodes: ::SHORT,
+ elemdescFunc: ::ELEMDESC,
+ wFuncFlags: ::WORD,
+}}
+pub type LPFUNCDESC = *mut FUNCDESC;
+ENUM!{enum VARKIND {
+ VAR_PERINSTANCE = 0,
+ VAR_STATIC,
+ VAR_CONST,
+ VAR_DISPATCH,
+}}
+pub const IMPLTYPEFLAG_FDEFAULT: ::DWORD = 0x1;
+pub const IMPLTYPEFLAG_FSOURCE: ::DWORD = 0x2;
+pub const IMPLTYPEFLAG_FRESTRICTED: ::DWORD = 0x4;
+pub const IMPLTYPEFLAG_FDEFAULTVTABLE: ::DWORD = 0x8;
+STRUCT!{struct VARDESC {
+ memid: MEMBERID,
+ lpstrSchema: ::LPOLESTR,
+ lpvarValue: *mut VARIANT,
+ elemdescVar: ::ELEMDESC,
+ wVarFlags: ::WORD,
+ varkind: VARKIND,
+}}
+UNION!(VARDESC, lpvarValue, oInst, oInst_mut, ::ULONG);
+pub type LPVARDESC = *mut VARDESC;
+FLAGS!{enum TYPEFLAGS {
+ TYPEFLAG_FAPPOBJECT = 0x1,
+ TYPEFLAG_FCANCREATE = 0x2,
+ TYPEFLAG_FLICENSED = 0x4,
+ TYPEFLAG_FPREDECLID = 0x8,
+ TYPEFLAG_FHIDDEN = 0x10,
+ TYPEFLAG_FCONTROL = 0x20,
+ TYPEFLAG_FDUAL = 0x40,
+ TYPEFLAG_FNONEXTENSIBLE = 0x80,
+ TYPEFLAG_FOLEAUTOMATION = 0x100,
+ TYPEFLAG_FRESTRICTED = 0x200,
+ TYPEFLAG_FAGGREGATABLE = 0x400,
+ TYPEFLAG_FREPLACEABLE = 0x800,
+ TYPEFLAG_FDISPATCHABLE = 0x1000,
+ TYPEFLAG_FREVERSEBIND = 0x2000,
+ TYPEFLAG_FPROXY = 0x4000,
+}}
+FLAGS!{enum FUNCFLAGS {
+ FUNCFLAG_FRESTRICTED = 0x1,
+ FUNCFLAG_FSOURCE = 0x2,
+ FUNCFLAG_FBINDABLE = 0x4,
+ FUNCFLAG_FREQUESTEDIT = 0x8,
+ FUNCFLAG_FDISPLAYBIND = 0x10,
+ FUNCFLAG_FDEFAULTBIND = 0x20,
+ FUNCFLAG_FHIDDEN = 0x40,
+ FUNCFLAG_FUSESGETLASTERROR = 0x80,
+ FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+ FUNCFLAG_FUIDEFAULT = 0x200,
+ FUNCFLAG_FNONBROWSABLE = 0x400,
+ FUNCFLAG_FREPLACEABLE = 0x800,
+ FUNCFLAG_FIMMEDIATEBIND = 0x1000,
+}}
+FLAGS!{enum VARFLAGS {
+ VARFLAG_FREADONLY = 0x1,
+ VARFLAG_FSOURCE = 0x2,
+ VARFLAG_FBINDABLE = 0x4,
+ VARFLAG_FREQUESTEDIT = 0x8,
+ VARFLAG_FDISPLAYBIND = 0x10,
+ VARFLAG_FDEFAULTBIND = 0x20,
+ VARFLAG_FHIDDEN = 0x40,
+ VARFLAG_FRESTRICTED = 0x80,
+ VARFLAG_FDEFAULTCOLLELEM = 0x100,
+ VARFLAG_FUIDEFAULT = 0x200,
+ VARFLAG_FNONBROWSABLE = 0x400,
+ VARFLAG_FREPLACEABLE = 0x800,
+ VARFLAG_FIMMEDIATEBIND = 0x1000,
+}}
+STRUCT!{struct CLEANLOCALSTORAGE {
+ pInterface: *mut ::IUnknown,
+ pStorage: ::PVOID,
+ flags: ::DWORD,
+}}
+STRUCT!{struct CUSTDATAITEM {
+ guid: ::GUID,
+ varValue: VARIANTARG,
+}}
+pub type LPCUSTDATAITEM = *mut CUSTDATAITEM;
+STRUCT!{struct CUSTDATA {
+ cCustData: ::DWORD,
+ prgCustData: LPCUSTDATAITEM,
+}}
+pub type LPCUSTDATA = *mut CUSTDATA;
+pub type LPCREATETYPEINFO = *mut ICreateTypeInfo;
+RIDL!(
+interface ICreateTypeInfo(ICreateTypeInfoVtbl): IUnknown(IUnknownVtbl) {
+ fn SetGuid(&mut self, guid: ::REFGUID) -> ::HRESULT,
+ fn SetTypeFlags(&mut self, uTypeFlags: ::UINT) -> ::HRESULT,
+ fn SetDocString(&mut self, pStrDoc: ::LPOLESTR) -> ::HRESULT,
+ fn SetHelpContext(&mut self, dwHelpContext: ::DWORD) -> ::HRESULT,
+ fn SetVersion(&mut self, wMajorVerNum: ::WORD, wMinorVerNum: ::WORD) -> ::HRESULT,
+ fn AddRefTypeInfo(&mut self, pTInfo: *mut ITypeInfo) -> ::HRESULT,
+ fn AddFuncDesc(&mut self, index: ::UINT, pFuncDesc: *mut FUNCDESC) -> ::HRESULT,
+ fn SetImplTypeFlags(&mut self, index: ::UINT, implTypeFlags: ::INT) -> ::HRESULT,
+ fn SetAlignment(&mut self, cbAlignment: ::WORD) -> ::HRESULT,
+ fn SetSchema(&mut self, pStrSchema: ::LPOLESTR) -> ::HRESULT,
+ fn AddVarDesc(&mut self, index: ::UINT, pVarDesc: *mut VARDESC) -> ::HRESULT,
+ fn SetFuncAndParamNames(
+ &mut self, index: ::UINT, rgszNames: *mut ::LPOLESTR, cNames: ::UINT
+ ) -> ::HRESULT,
+ fn SetVarName(&mut self, index: ::UINT, szName: ::LPOLESTR) -> ::HRESULT,
+ fn SetTypeDescAlias(&mut self, pTDescAlias: *mut TYPEDESC) -> ::HRESULT,
+ fn DefineFuncAsDllEntry(
+ &mut self, index: ::UINT, szDllName: ::LPOLESTR, szProcName: ::LPOLESTR
+ ) -> ::HRESULT,
+ fn SetFuncDocString(&mut self, index: ::UINT, szDocString: ::LPOLESTR) -> ::HRESULT,
+ fn SetVarDocString(&mut self, index: ::UINT, szDocString: ::LPOLESTR) -> ::HRESULT,
+ fn SetFuncHelpContext(&mut self, index: ::UINT, dwHelpContext: ::DWORD) -> ::HRESULT,
+ fn SetVarHelpContext(&mut self, index: ::UINT, dwHelpContext: ::DWORD) -> ::HRESULT,
+ fn SetMops(&mut self, index: ::UINT, bstrMops: ::BSTR) -> ::HRESULT,
+ fn SetTypeIdldesc(&mut self, pIdlDesc: *mut IDLDESC) -> ::HRESULT,
+ fn LayOut(&mut self) -> ::HRESULT
+}
+);
+// FIXME: Implement these interfaces
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICreateTypeInfo2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICreateTypeLib;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICreateTypeLib2;
+pub type LPDISPATCH = *mut IDispatch;
+pub const DISPID_UNKNOWN: ::INT = -1;
+pub const DISPID_VALUE: ::INT = 0;
+pub const DISPID_PROPERTYPUT: ::INT = -3;
+pub const DISPID_NEWENUM: ::INT = -4;
+pub const DISPID_EVALUATE: ::INT = -5;
+pub const DISPID_CONSTRUCTOR: ::INT = -6;
+pub const DISPID_DESTRUCTOR: ::INT = -7;
+pub const DISPID_COLLECT: ::INT = -8;
+RIDL!(
+interface IDispatch(IDispatchVtbl): IUnknown(IUnknownVtbl) {
+ fn GetTypeInfoCount(&mut self, pctinfo: *mut ::UINT) -> ::HRESULT,
+ fn GetTypeInfo(
+ &mut self, iTInfo: ::UINT, lcid: ::LCID, ppTInfo: *mut *mut ITypeInfo
+ ) -> ::HRESULT,
+ fn GetIDsOfNames(
+ &mut self, riid: ::REFIID, rgszNames: *mut ::LPOLESTR, cNames: ::UINT, lcid: ::LCID,
+ rgDispId: *mut ::DISPID
+ ) -> ::HRESULT,
+ fn Invoke(
+ &mut self, dispIdMember: ::DISPID, riid: ::REFIID, lcid: ::LCID, wFlags: ::WORD,
+ pDispParams: *mut ::DISPPARAMS, pVarResult: *mut VARIANT, pExcepInfo: *mut ::EXCEPINFO,
+ puArgErr: *mut ::UINT
+ ) -> ::HRESULT
+}
+);
+// FIXME: Implement these interfaces
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumVARIANT;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeComp;
+RIDL!(
+interface ITypeInfo(ITypeInfoVtbl): IUnknown(IUnknownVtbl) {
+ fn GetTypeAttr(&mut self, ppTypeAttr: *mut *mut TYPEATTR) -> ::HRESULT,
+ fn GetTypeComp(&mut self, ppTComp: *mut *mut ITypeComp) -> ::HRESULT,
+ fn GetFuncDesc(&mut self, index: ::UINT, ppFunDesc: *mut *mut FUNCDESC) -> ::HRESULT,
+ fn GetVarDesc(&mut self, index: ::UINT, pPVarDesc: *mut *mut VARDESC) -> ::HRESULT,
+ fn GetNames(
+ &mut self, memid: MEMBERID, rgBstrNames: *mut ::BSTR, cMaxNames: ::UINT,
+ pcNames: *mut ::UINT
+ ) -> ::HRESULT,
+ fn GetRefTypeOfImplType(&mut self, index: ::UINT, pRefType: *mut HREFTYPE) -> ::HRESULT,
+ fn GetImplTypeFlags(&mut self, index: ::UINT, pImplTypeFlags: *mut ::INT) -> ::HRESULT,
+ fn GetIDsOfNames(
+ &mut self, rgszNames: *mut ::LPOLESTR, cNames: ::UINT, pMemId: *mut MEMBERID
+ ) -> ::HRESULT,
+ fn Invoke(
+ &mut self, pvInstance: ::PVOID, memid: MEMBERID, wFlags: ::WORD,
+ pDispParams: *mut DISPPARAMS, pVarResult: *mut VARIANT, pExcepInfo: *mut EXCEPINFO,
+ puArgErr: *mut ::UINT
+ ) -> ::HRESULT,
+ fn GetDocumentation(
+ &mut self, memid: MEMBERID, pBstrName: *mut ::BSTR, pBstrDocString: *mut ::BSTR,
+ pdwHelpContext: *mut ::DWORD, pBstrHelpFile: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn GetDllEntry(
+ &mut self, memid: MEMBERID, invKind: ::INVOKEKIND, pBstrDllName: *mut ::BSTR,
+ pBstrName: *mut ::BSTR, pwOrdinal: *mut ::WORD
+ ) -> ::HRESULT,
+ fn GetRefTypeInfo(&mut self, hRefType: HREFTYPE, ppTInfo: *mut *mut ITypeInfo) -> ::HRESULT,
+ fn AddressOfMember(
+ &mut self, memid: MEMBERID, invKind: ::INVOKEKIND, ppv: *mut ::PVOID
+ ) -> ::HRESULT,
+ fn CreateInstance(
+ &mut self, pUnkOuter: *mut ::IUnknown, riid: ::REFIID, ppvObj: *mut ::PVOID
+ ) -> ::HRESULT,
+ fn GetMops(&mut self, memid: MEMBERID, pBstrMops: *mut ::BSTR) -> ::HRESULT,
+ fn GetContainingTypeLib(
+ &mut self, ppTLib: *mut *mut ITypeLib, pIndex: *mut ::UINT
+ ) -> ::HRESULT,
+ fn ReleaseTypeAttr(&mut self, pTypeAttr: *mut TYPEATTR) -> (),
+ fn ReleaseFuncDesc(&mut self, pFuncDesc: *mut FUNCDESC) -> (),
+ fn ReleaseVarDesc(&mut self, pVarDesc: *mut VARDESC) -> ()
+}
+);
+// FIXME: Implement these interfaces
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeInfo2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeLib;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeLib2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeChangeEvents;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IErrorInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICreateErrorInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ISupportErrorInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeFactory;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITypeMarshal;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IRecordInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IErrorLog;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPropertyBag;
diff --git a/third_party/rust/winapi-0.2.8/src/objbase.rs b/third_party/rust/winapi-0.2.8/src/objbase.rs
new file mode 100644
index 0000000000..cfd2b79903
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/objbase.rs
@@ -0,0 +1,5 @@
+//! Component object model defintions
+pub const COINIT_APARTMENTTHREADED: ::DWORD = 0x2;
+pub const COINIT_MULTITHREADED: ::DWORD = 0x0;
+pub const COINIT_DISABLE_OLE1DDE: ::DWORD = 0x4;
+pub const COINIT_SPEED_OVER_MEMORY: ::DWORD = 0x8;
diff --git a/third_party/rust/winapi-0.2.8/src/objidl.rs b/third_party/rust/winapi-0.2.8/src/objidl.rs
new file mode 100644
index 0000000000..ac49010bcc
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/objidl.rs
@@ -0,0 +1,100 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+//8402
+STRUCT!{struct BIND_OPTS {
+ cbStruct: ::DWORD,
+ grfFlags: ::DWORD,
+ grfMode: ::DWORD,
+ dwTickCountDeadline: ::DWORD,
+}}
+pub type LPBIND_OPTS = *mut BIND_OPTS;
+//8479
+RIDL!(
+interface IBindCtx(IBindCtxVtbl): IUnknown(IUnknownVtbl) {
+ fn RegisterObjectBound(&mut self, punk: *mut ::IUnknown) -> ::HRESULT,
+ fn RevokeObjectBound(&mut self, punk: *mut ::IUnknown) -> ::HRESULT,
+ fn ReleaseBoundObjects(&mut self) -> ::HRESULT,
+ fn SetBindOptions(&mut self, pbindopts: *mut BIND_OPTS) -> ::HRESULT,
+ fn GetBindOptions(&mut self, pbindopts: *mut BIND_OPTS) -> ::HRESULT,
+ fn GetRunningObjectTable(&mut self, pprot: *mut *mut IRunningObjectTable) -> ::HRESULT,
+ fn RegisterObjectParam(&mut self, pszKey: ::LPOLESTR, punk: *mut ::IUnknown) -> ::HRESULT,
+ fn GetObjectParam(&mut self, pszKey: ::LPOLESTR, ppunk: *mut *mut ::IUnknown) -> ::HRESULT,
+ fn EnumObjectParam(&mut self, ppenum: *mut *mut ::IEnumString) -> ::HRESULT,
+ fn RevokeObjectParam(&mut self, pszKey: ::LPOLESTR) -> ::HRESULT
+}
+);
+//8681
+pub type IEnumMoniker = ::IUnknown; // TODO
+//8958
+RIDL!(
+interface IRunningObjectTable(IRunningObjectTableVtbl): IUnknown(IUnknownVtbl) {
+ fn Register(
+ &mut self, grfFlags: ::DWORD, punkObject: *mut ::IUnknown, pmkObjectName: *mut IMoniker,
+ pdwRegister: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn Revoke(&mut self, dwRegister: ::DWORD) -> ::HRESULT,
+ fn IsRunning(&mut self, pmkObjectName: *mut IMoniker) -> ::HRESULT,
+ fn GetObject(
+ &mut self, pmkObjectName: *mut IMoniker, ppunkObject: *mut *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn NoteChangeTime(&mut self, dwRegister: ::DWORD, pfiletime: *mut ::FILETIME) -> ::HRESULT,
+ fn GetTimeOfLastChange(
+ &mut self, pmkObjectName: *mut IMoniker, pfiletime: *mut ::FILETIME
+ ) -> ::HRESULT,
+ fn EnumRunning(&mut self, ppenumMoniker: *mut *mut IEnumMoniker) -> ::HRESULT
+}
+);
+//9350
+pub type IMoniker = ::IUnknown; // TODO
+pub type EOLE_AUTHENTICATION_CAPABILITIES = ::DWORD;
+pub const EOAC_NONE: ::DWORD = 0;
+pub const EOAC_MUTUAL_AUTH: ::DWORD = 0x1;
+pub const EOAC_STATIC_CLOAKING: ::DWORD = 0x20;
+pub const EOAC_DYNAMIC_CLOAKING: ::DWORD = 0x40;
+pub const EOAC_ANY_AUTHORITY: ::DWORD = 0x80;
+pub const EOAC_MAKE_FULLSIC: ::DWORD = 0x100;
+pub const EOAC_DEFAULT: ::DWORD = 0x800;
+pub const EOAC_SECURE_REFS: ::DWORD = 0x2;
+pub const EOAC_ACCESS_CONTROL: ::DWORD = 0x4;
+pub const EOAC_APPID: ::DWORD = 0x8;
+pub const EOAC_DYNAMIC: ::DWORD = 0x10;
+pub const EOAC_REQUIRE_FULLSIC: ::DWORD = 0x200;
+pub const EOAC_AUTO_IMPERSONATE: ::DWORD = 0x400;
+pub const EOAC_NO_CUSTOM_MARSHAL: ::DWORD = 0x2000;
+pub const EOAC_DISABLE_AAA: ::DWORD = 0x1000;
+STRUCT!{struct SOLE_AUTHENTICATION_SERVICE {
+ dwAuthnSvc: ::DWORD,
+ dwAuthzSvc: ::DWORD,
+ pPrincipalName: *mut ::OLECHAR,
+ hr: ::HRESULT,
+}}
+
+RIDL!(
+interface IApartmentShutdown(IApartmentShutdownVtbl): IUnknown(IUnknownVtbl) {
+ fn OnUninitialize(&mut self, ui64ApartmentIdentifier: ::UINT64) -> ::VOID
+}
+);
+
+RIDL!(
+interface IMarshal(IMarshalVtbl): IUnknown(IUnknownVtbl) {
+ fn GetUnmarshalClass(
+ &mut self, riid: ::REFIID, pv: *const ::VOID, dwDestContext: ::DWORD,
+ pvDestContext: *const ::VOID, mshlflags: ::DWORD, pCid: *mut ::CLSID
+ ) -> ::HRESULT,
+ fn GetMarshalSizeMax(
+ &mut self, riid: ::REFIID, pv: *const ::VOID, dwDestContext: ::DWORD,
+ pvDestContext: *const ::VOID, mshlflags: ::DWORD, pSize: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn MarshalInterface(
+ &mut self, pStm: *const ::IStream, riid: ::REFIID, pv: *const ::VOID,
+ dwDestContext: ::DWORD, pvDestContext: *const ::VOID,
+ mshlflags: ::DWORD
+ ) -> ::HRESULT,
+ fn UnmarshalInterface(
+ &mut self, pStm: *const ::IStream, riid: ::REFIID, ppv: *mut *mut ::VOID
+ ) -> ::HRESULT,
+ fn ReleaseMarshalData(&mut self, pStm: *const ::IStream) -> ::HRESULT,
+ fn DisconnectObject(&mut self, dwReserved: ::DWORD) -> ::HRESULT
+}
+); \ No newline at end of file
diff --git a/third_party/rust/winapi-0.2.8/src/objidlbase.rs b/third_party/rust/winapi-0.2.8/src/objidlbase.rs
new file mode 100644
index 0000000000..f49353f823
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/objidlbase.rs
@@ -0,0 +1,93 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+RIDL!(
+interface IMalloc(IMallocVtbl): IUnknown(IUnknownVtbl) {
+ fn Alloc(&mut self, cb: ::SIZE_T) -> *mut ::c_void,
+ fn Realloc(&mut self, pv: *mut ::c_void, cb: ::SIZE_T) -> *mut ::c_void,
+ fn Free(&mut self, pv: *mut ::c_void) -> (),
+ fn GetSize(&mut self, pv: *mut ::c_void) -> ::SIZE_T,
+ fn DidAlloc(&mut self, pv: *mut ::c_void) -> ::c_int,
+ fn HeapMinimize(&mut self) -> ()
+}
+);
+pub type LPMALLOC = *mut IMalloc;
+STRUCT!{struct STATSTG {
+ pwcsName: ::LPOLESTR,
+ type_: ::DWORD,
+ cbSize: ::ULARGE_INTEGER,
+ mtime: ::FILETIME,
+ ctime: ::FILETIME,
+ atime: ::FILETIME,
+ grfMode: ::DWORD,
+ grfLocksSupported: ::DWORD,
+ clsid: ::CLSID,
+ grfStateBits: ::DWORD,
+ reserved: ::DWORD,
+}}
+//1945
+pub type IEnumString = ::IUnknown; // TODO
+//2075
+RIDL!(
+interface ISequentialStream(ISequentialStreamVtbl): IUnknown(IUnknownVtbl) {
+ fn Read(&mut self, pv: *mut ::c_void, cb: ::ULONG, pcbRead: *mut ::ULONG) -> ::HRESULT,
+ fn Write(&mut self, pv: *const ::c_void, cb: ::ULONG, pcbWritten: *mut ::ULONG) -> ::HRESULT
+}
+);
+ENUM!{enum STGTY {
+ STGTY_STORAGE = 1,
+ STGTY_STREAM = 2,
+ STGTY_LOCKBYTES = 3,
+ STGTY_PROPERTY = 4,
+}}
+ENUM!{enum STREAM_SEEK {
+ STREAM_SEEK_SET = 0,
+ STREAM_SEEK_CUR = 1,
+ STREAM_SEEK_END = 2,
+}}
+ENUM!{enum LOCKTYPE {
+ LOCK_WRITE = 1,
+ LOCK_EXCLUSIVE = 2,
+ LOCK_ONLYONCE = 4,
+}}
+//2255
+RIDL!(
+interface IStream(IStreamVtbl): ISequentialStream(ISequentialStreamVtbl) {
+ fn Seek(
+ &mut self, dlibMove: ::LARGE_INTEGER, dwOrigin: ::DWORD,
+ plibNewPosition: *mut ::ULARGE_INTEGER
+ ) -> ::HRESULT,
+ fn SetSize(&mut self, libNewSize: ::ULARGE_INTEGER) -> ::HRESULT,
+ fn CopyTo(
+ &mut self, pstm: *mut IStream, cb: ::ULARGE_INTEGER, pcbRead: *mut ::ULARGE_INTEGER,
+ pcbWritten: *mut ::ULARGE_INTEGER
+ ) -> ::HRESULT,
+ fn Commit(&mut self, grfCommitFlags: ::DWORD) -> ::HRESULT,
+ fn Revert(&mut self) -> ::HRESULT,
+ fn LockRegion(
+ &mut self, libOffset: ::ULARGE_INTEGER, cb: ::ULARGE_INTEGER, dwLockType: ::DWORD
+ ) -> ::HRESULT,
+ fn UnlockRegion(
+ &mut self, libOffset: ::ULARGE_INTEGER, cb: ::ULARGE_INTEGER, dwLockType: ::DWORD
+ ) -> ::HRESULT,
+ fn Stat(&mut self, pstatstg: *mut STATSTG, grfStatFlag: ::DWORD) -> ::HRESULT,
+ fn Clone(&mut self, ppstm: *mut *mut IStream) -> ::HRESULT
+}
+);
+pub type LPSTREAM = *mut IStream;
+ENUM!{enum APTTYPEQUALIFIER {
+ APTTYPEQUALIFIER_NONE = 0,
+ APTTYPEQUALIFIER_IMPLICIT_MTA = 1,
+ APTTYPEQUALIFIER_NA_ON_MTA = 2,
+ APTTYPEQUALIFIER_NA_ON_STA = 3,
+ APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4,
+ APTTYPEQUALIFIER_NA_ON_MAINSTA = 5,
+ APTTYPEQUALIFIER_APPLICATION_STA= 6,
+}}
+ENUM!{enum APTTYPE {
+ APTTYPE_CURRENT = -1i32 as u32,
+ APTTYPE_STA = 0,
+ APTTYPE_MTA = 1,
+ APTTYPE_NA = 2,
+ APTTYPE_MAINSTA = 3,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/olectl.rs b/third_party/rust/winapi-0.2.8/src/olectl.rs
new file mode 100644
index 0000000000..b557621526
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/olectl.rs
@@ -0,0 +1,10 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! OLE Control interfaces
+//299
+pub const SELFREG_E_FIRST: ::HRESULT = MAKE_SCODE!(::SEVERITY_ERROR, ::FACILITY_ITF, 0x0200);
+pub const SELFREG_E_LAST: ::HRESULT = MAKE_SCODE!(::SEVERITY_ERROR, ::FACILITY_ITF, 0x020F);
+pub const SELFREG_S_FIRST: ::HRESULT = MAKE_SCODE!(::SEVERITY_SUCCESS, ::FACILITY_ITF, 0x0200);
+pub const SELFREG_S_LAST: ::HRESULT = MAKE_SCODE!(::SEVERITY_SUCCESS, ::FACILITY_ITF, 0x020F);
+pub const SELFREG_E_TYPELIB: ::HRESULT = SELFREG_E_FIRST + 0;
+pub const SELFREG_E_CLASS: ::HRESULT = SELFREG_E_FIRST + 1;
diff --git a/third_party/rust/winapi-0.2.8/src/pdh.rs b/third_party/rust/winapi-0.2.8/src/pdh.rs
new file mode 100644
index 0000000000..165fe1e0c5
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/pdh.rs
@@ -0,0 +1,52 @@
+// Copyright © 2016, Klavs Madsen
+// Licensed under the MIT License <LICENSE.md>
+//! Common Performance Data Helper definitions
+pub const PDH_FMT_RAW: ::DWORD = 0x00000010;
+pub const PDH_FMT_ANSI: ::DWORD = 0x00000020;
+pub const PDH_FMT_UNICODE: ::DWORD = 0x00000040;
+pub const PDH_FMT_LONG: ::DWORD = 0x00000100;
+pub const PDH_FMT_DOUBLE: ::DWORD = 0x00000200;
+pub const PDH_FMT_LARGE: ::DWORD = 0x00000400;
+pub const PDH_FMT_NOSCALE: ::DWORD = 0x00001000;
+pub const PDH_FMT_1000: ::DWORD = 0x00002000;
+pub const PDH_FMT_NODATA: ::DWORD = 0x00004000;
+pub const PDH_FMT_NOCAP100: ::DWORD = 0x00008000;
+pub const PERF_DETAIL_COSTLY: ::DWORD = 0x00010000;
+pub const PERF_DETAIL_STANDARD: ::DWORD = 0x0000FFFF;
+
+pub type PDH_STATUS = ::LONG;
+pub type PDH_HQUERY = ::HANDLE;
+pub type HQUERY = PDH_HQUERY;
+pub type PDH_HCOUNTER = ::HANDLE;
+pub type HCOUNTER = PDH_HCOUNTER;
+
+STRUCT!{struct PDH_FMT_COUNTERVALUE {
+ CStatus: ::DWORD,
+ largeValue: ::LONGLONG,
+}}
+UNION!(PDH_FMT_COUNTERVALUE, largeValue, largeValue, largeValue_mut, ::LONGLONG);
+UNION!(PDH_FMT_COUNTERVALUE, largeValue, longValue, longValue_mut, ::LONG);
+UNION!(PDH_FMT_COUNTERVALUE, largeValue, doubleValue, doubleValue_mut, ::DOUBLE);
+UNION!(PDH_FMT_COUNTERVALUE, largeValue, AnsiStringValue, AnsiStringValue_mut, ::LPCSTR);
+UNION!(PDH_FMT_COUNTERVALUE, largeValue, WideStringValue, WideStringValue_mut, ::LPCWSTR);
+pub type PPDH_FMT_COUNTERVALUE = *mut PDH_FMT_COUNTERVALUE;
+
+STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_A {
+ szMachineName: ::LPSTR,
+ szObjectName: ::LPSTR,
+ szInstanceName: ::LPSTR,
+ szParentInstance: ::LPSTR,
+ dwInstanceIndex: ::DWORD,
+ szCounterName: ::LPSTR,
+}}
+pub type PPDH_COUNTER_PATH_ELEMENTS_A = *mut PDH_COUNTER_PATH_ELEMENTS_A;
+
+STRUCT!{struct PDH_COUNTER_PATH_ELEMENTS_W {
+ szMachineName: ::LPWSTR,
+ szObjectName: ::LPWSTR,
+ szInstanceName: ::LPWSTR,
+ szParentInstance: ::LPWSTR,
+ dwInstanceIndex: ::DWORD,
+ szCounterName: ::LPWSTR,
+}}
+pub type PPDH_COUNTER_PATH_ELEMENTS_W = *mut PDH_COUNTER_PATH_ELEMENTS_W;
diff --git a/third_party/rust/winapi-0.2.8/src/playsoundapi.rs b/third_party/rust/winapi-0.2.8/src/playsoundapi.rs
new file mode 100644
index 0000000000..99f4501cda
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/playsoundapi.rs
@@ -0,0 +1,19 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub const SND_SYNC: DWORD = 0x0000;
+pub const SND_ASYNC: DWORD = 0x0001;
+pub const SND_NODEFAULT: DWORD = 0x0002;
+pub const SND_MEMORY: DWORD = 0x0004;
+pub const SND_LOOP: DWORD = 0x0008;
+pub const SND_NOSTOP: DWORD = 0x0010;
+pub const SND_NOWAIT: DWORD = 0x00002000;
+pub const SND_ALIAS: DWORD = 0x00010000;
+pub const SND_ALIAS_ID: DWORD = 0x00110000;
+pub const SND_FILENAME: DWORD = 0x00020000;
+pub const SND_RESOURCE: DWORD = 0x00040004;
+pub const SND_PURGE: DWORD = 0x0040;
+pub const SND_APPLICATION: DWORD = 0x0080;
+pub const SND_SENTRY: DWORD = 0x00080000;
+pub const SND_RING: DWORD = 0x00100000;
+pub const SND_SYSTEM: DWORD = 0x00200000;
diff --git a/third_party/rust/winapi-0.2.8/src/processsnapshot.rs b/third_party/rust/winapi-0.2.8/src/processsnapshot.rs
new file mode 100644
index 0000000000..73ea679bea
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/processsnapshot.rs
@@ -0,0 +1,58 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Defines the process snapshot API
+FLAGS!{enum PSS_CAPTURE_FLAGS {
+ PSS_CAPTURE_NONE = 0x00000000,
+ PSS_CAPTURE_VA_CLONE = 0x00000001,
+ PSS_CAPTURE_RESERVED_00000002 = 0x00000002,
+ PSS_CAPTURE_HANDLES = 0x00000004,
+ PSS_CAPTURE_HANDLE_NAME_INFORMATION = 0x00000008,
+ PSS_CAPTURE_HANDLE_BASIC_INFORMATION = 0x00000010,
+ PSS_CAPTURE_HANDLE_TYPE_SPECIFIC_INFORMATION = 0x00000020,
+ PSS_CAPTURE_HANDLE_TRACE = 0x00000040,
+ PSS_CAPTURE_THREADS = 0x00000080,
+ PSS_CAPTURE_THREAD_CONTEXT = 0x00000100,
+ PSS_CAPTURE_THREAD_CONTEXT_EXTENDED = 0x00000200,
+ PSS_CAPTURE_RESERVED_00000400 = 0x00000400,
+ PSS_CAPTURE_VA_SPACE = 0x00000800,
+ PSS_CAPTURE_VA_SPACE_SECTION_INFORMATION = 0x00001000,
+ PSS_CREATE_BREAKAWAY_OPTIONAL = 0x04000000,
+ PSS_CREATE_BREAKAWAY = 0x08000000,
+ PSS_CREATE_FORCE_BREAKAWAY = 0x10000000,
+ PSS_CREATE_USE_VM_ALLOCATIONS = 0x20000000,
+ PSS_CREATE_MEASURE_PERFORMANCE = 0x40000000,
+ PSS_CREATE_RELEASE_SECTION = -2147483648i32 as u32,
+}}
+ENUM!{enum PSS_QUERY_INFORMATION_CLASS {
+ PSS_QUERY_PROCESS_INFORMATION = 0,
+ PSS_QUERY_VA_CLONE_INFORMATION = 1,
+ PSS_QUERY_AUXILIARY_PAGES_INFORMATION = 2,
+ PSS_QUERY_VA_SPACE_INFORMATION = 3,
+ PSS_QUERY_HANDLE_INFORMATION = 4,
+ PSS_QUERY_THREAD_INFORMATION = 5,
+ PSS_QUERY_HANDLE_TRACE_INFORMATION = 6,
+ PSS_QUERY_PERFORMANCE_COUNTERS = 7,
+}}
+ENUM!{enum PSS_WALK_INFORMATION_CLASS {
+ PSS_WALK_AUXILIARY_PAGES = 0,
+ PSS_WALK_VA_SPACE = 1,
+ PSS_WALK_HANDLES = 2,
+ PSS_WALK_THREADS = 3,
+}}
+FLAGS!{enum PSS_DUPLICATE_FLAGS {
+ PSS_DUPLICATE_NONE = 0x00,
+ PSS_DUPLICATE_CLOSE_SOURCE = 0x01,
+}}
+DECLARE_HANDLE!(HPSS, HPSS__);
+DECLARE_HANDLE!(HPSSWALK, HPSSWALK__);
+pub type pAllocRoutine = Option<unsafe extern "system" fn(
+ Context: *mut ::c_void, Size: ::DWORD,
+) -> *mut ::c_void>;
+pub type pFreeRoutine = Option<unsafe extern "system" fn(
+ Context: *mut ::c_void, Address: *mut ::c_void,
+)>;
+STRUCT!{nodebug struct PSS_ALLOCATOR {
+ Context: *mut ::c_void,
+ AllocRoutine: pAllocRoutine,
+ FreeRoutine: pFreeRoutine,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/processthreadsapi.rs b/third_party/rust/winapi-0.2.8/src/processthreadsapi.rs
new file mode 100644
index 0000000000..fad58c7e5a
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/processthreadsapi.rs
@@ -0,0 +1,62 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+STRUCT!{struct PROCESS_INFORMATION {
+ hProcess: ::HANDLE,
+ hThread: ::HANDLE,
+ dwProcessId: ::DWORD,
+ dwThreadId: ::DWORD,
+}}
+pub type PPROCESS_INFORMATION = *mut PROCESS_INFORMATION;
+pub type LPPROCESS_INFORMATION = *mut PROCESS_INFORMATION;
+STRUCT!{struct STARTUPINFOA {
+ cb: ::DWORD,
+ lpReserved: ::LPSTR,
+ lpDesktop: ::LPSTR,
+ lpTitle: ::LPSTR,
+ dwX: ::DWORD,
+ dwY: ::DWORD,
+ dwXSize: ::DWORD,
+ dwYSize: ::DWORD,
+ dwXCountChars: ::DWORD,
+ dwYCountChars: ::DWORD,
+ dwFillAttribute: ::DWORD,
+ dwFlags: ::DWORD,
+ wShowWindow: ::WORD,
+ cbReserved2: ::WORD,
+ lpReserved2: ::LPBYTE,
+ hStdInput: ::HANDLE,
+ hStdOutput: ::HANDLE,
+ hStdError: ::HANDLE,
+}}
+pub type LPSTARTUPINFOA = *mut STARTUPINFOA;
+STRUCT!{struct STARTUPINFOW {
+ cb: ::DWORD,
+ lpReserved: ::LPWSTR,
+ lpDesktop: ::LPWSTR,
+ lpTitle: ::LPWSTR,
+ dwX: ::DWORD,
+ dwY: ::DWORD,
+ dwXSize: ::DWORD,
+ dwYSize: ::DWORD,
+ dwXCountChars: ::DWORD,
+ dwYCountChars: ::DWORD,
+ dwFillAttribute: ::DWORD,
+ dwFlags: ::DWORD,
+ wShowWindow: ::WORD,
+ cbReserved2: ::WORD,
+ lpReserved2: ::LPBYTE,
+ hStdInput: ::HANDLE,
+ hStdOutput: ::HANDLE,
+ hStdError: ::HANDLE,
+}}
+pub type LPSTARTUPINFOW = *mut STARTUPINFOW;
+STRUCT!{struct PROC_THREAD_ATTRIBUTE_LIST {
+ dummy: *mut ::c_void,
+}}
+pub type PPROC_THREAD_ATTRIBUTE_LIST = *mut PROC_THREAD_ATTRIBUTE_LIST;
+pub type LPPROC_THREAD_ATTRIBUTE_LIST = *mut PROC_THREAD_ATTRIBUTE_LIST;
+ENUM!{enum THREAD_INFORMATION_CLASS {
+ ThreadMemoryPriority,
+ ThreadAbsoluteCpuPriority,
+ ThreadInformationClassMax,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/propidl.rs b/third_party/rust/winapi-0.2.8/src/propidl.rs
new file mode 100644
index 0000000000..802bd182f7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/propidl.rs
@@ -0,0 +1,10 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+STRUCT!{struct PROPVARIANT {
+ vt: VARTYPE,
+ wReserved1: WORD,
+ wReserved2: WORD,
+ wReserved3: WORD,
+ data: [u8; 16],
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/propsys.rs b/third_party/rust/winapi-0.2.8/src/propsys.rs
new file mode 100644
index 0000000000..0666fbd48f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/propsys.rs
@@ -0,0 +1,4 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub type IPropertyDescriptionList = ::IUnknown; // TODO
+pub type IPropertyStore = ::IUnknown; // TODO
diff --git a/third_party/rust/winapi-0.2.8/src/prsht.rs b/third_party/rust/winapi-0.2.8/src/prsht.rs
new file mode 100644
index 0000000000..e1795a1bc7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/prsht.rs
@@ -0,0 +1,262 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Interface for the Windows Property Sheet Pages
+pub enum PSP {}
+pub type HPROPSHEETPAGE = *mut PSP;
+pub type LPFNPSPCALLBACKA = Option<unsafe extern "system" fn(
+ hwnd: ::HWND, uMsg: ::UINT, ppsp: *mut PROPSHEETPAGEA,
+) -> ::UINT>;
+pub type LPFNPSPCALLBACKW = Option<unsafe extern "system" fn(
+ hwnd: ::HWND, uMsg: ::UINT, ppsp: *mut PROPSHEETPAGEW,
+) -> ::UINT>;
+pub const PSP_DEFAULT: ::DWORD = 0x00000000;
+pub const PSP_DLGINDIRECT: ::DWORD = 0x00000001;
+pub const PSP_USEHICON: ::DWORD = 0x00000002;
+pub const PSP_USEICONID: ::DWORD = 0x00000004;
+pub const PSP_USETITLE: ::DWORD = 0x00000008;
+pub const PSP_RTLREADING: ::DWORD = 0x00000010;
+pub const PSP_HASHELP: ::DWORD = 0x00000020;
+pub const PSP_USEREFPARENT: ::DWORD = 0x00000040;
+pub const PSP_USECALLBACK: ::DWORD = 0x00000080;
+pub const PSP_PREMATURE: ::DWORD = 0x00000400;
+pub const PSP_HIDEHEADER: ::DWORD = 0x00000800;
+pub const PSP_USEHEADERTITLE: ::DWORD = 0x00001000;
+pub const PSP_USEHEADERSUBTITLE: ::DWORD = 0x00002000;
+pub const PSP_USEFUSIONCONTEXT: ::DWORD = 0x00004000;
+pub const PSPCB_ADDREF: ::UINT = 0;
+pub const PSPCB_RELEASE: ::UINT = 1;
+pub const PSPCB_CREATE: ::UINT = 2;
+pub type PROPSHEETPAGE_RESOURCE = ::LPCDLGTEMPLATEA;
+STRUCT!{nodebug struct PROPSHEETPAGEA_V4 {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ hInstance: ::HINSTANCE,
+ pszTemplate: ::LPCSTR,
+ hIcon: ::HICON,
+ pszTitle: ::LPCSTR,
+ pfnDlgProc: ::DLGPROC,
+ lParam: ::LPARAM,
+ pfnCallback: LPFNPSPCALLBACKA,
+ pcRefParent: *mut ::UINT,
+ pszHeaderTitle: ::LPCSTR,
+ pszHeaderSubTitle: ::LPCSTR,
+ hActCtx: ::HANDLE,
+ hbmHeader: ::HBITMAP,
+}}
+UNION!(PROPSHEETPAGEA_V4, pszTemplate, pResource, pResource_mut, PROPSHEETPAGE_RESOURCE);
+UNION!(PROPSHEETPAGEA_V4, hIcon, pszIcon, pszIcon_mut, ::LPCSTR);
+UNION!(PROPSHEETPAGEA_V4, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCSTR);
+pub type LPPROPSHEETPAGEA_V4 = *mut PROPSHEETPAGEA_V4;
+pub type LPCPROPSHEETPAGEA_V4 = *const PROPSHEETPAGEA_V4;
+STRUCT!{nodebug struct PROPSHEETPAGEW_V4 {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ hInstance: ::HINSTANCE,
+ pszTemplate: ::LPCWSTR,
+ hIcon: ::HICON,
+ pszTitle: ::LPCWSTR,
+ pfnDlgProc: ::DLGPROC,
+ lParam: ::LPARAM,
+ pfnCallback: LPFNPSPCALLBACKW,
+ pcRefParent: *mut ::UINT,
+ pszHeaderTitle: ::LPCWSTR,
+ pszHeaderSubTitle: ::LPCWSTR,
+ hActCtx: ::HANDLE,
+ hbmHeader: ::HBITMAP,
+}}
+UNION!(PROPSHEETPAGEW_V4, pszTemplate, pResource, pResource_mut, PROPSHEETPAGE_RESOURCE);
+UNION!(PROPSHEETPAGEW_V4, hIcon, pszIcon, pszIcon_mut, ::LPCWSTR);
+UNION!(PROPSHEETPAGEW_V4, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCWSTR);
+pub type LPPROPSHEETPAGEW_V4 = *mut PROPSHEETPAGEW_V4;
+pub type LPCPROPSHEETPAGEW_V4 = *const PROPSHEETPAGEW_V4;
+pub type PROPSHEETPAGEA_LATEST = PROPSHEETPAGEA_V4;
+pub type PROPSHEETPAGEW_LATEST = PROPSHEETPAGEW_V4;
+pub type LPPROPSHEETPAGEA_LATEST = LPPROPSHEETPAGEA_V4;
+pub type LPPROPSHEETPAGEW_LATEST = LPPROPSHEETPAGEW_V4;
+pub type LPCPROPSHEETPAGEA_LATEST = LPCPROPSHEETPAGEA_V4;
+pub type LPCPROPSHEETPAGEW_LATEST = LPCPROPSHEETPAGEW_V4;
+pub type PROPSHEETPAGEA = PROPSHEETPAGEA_V4;
+pub type PROPSHEETPAGEW = PROPSHEETPAGEW_V4;
+pub type LPPROPSHEETPAGEA = LPPROPSHEETPAGEA_V4;
+pub type LPPROPSHEETPAGEW = LPPROPSHEETPAGEW_V4;
+pub type LPCPROPSHEETPAGEA = LPCPROPSHEETPAGEA_V4;
+pub type LPCPROPSHEETPAGEW = LPCPROPSHEETPAGEW_V4;
+pub const PSH_DEFAULT: ::DWORD = 0x00000000;
+pub const PSH_PROPTITLE: ::DWORD = 0x00000001;
+pub const PSH_USEHICON: ::DWORD = 0x00000002;
+pub const PSH_USEICONID: ::DWORD = 0x00000004;
+pub const PSH_PROPSHEETPAGE: ::DWORD = 0x00000008;
+pub const PSH_WIZARDHASFINISH: ::DWORD = 0x00000010;
+pub const PSH_WIZARD: ::DWORD = 0x00000020;
+pub const PSH_USEPSTARTPAGE: ::DWORD = 0x00000040;
+pub const PSH_NOAPPLYNOW: ::DWORD = 0x00000080;
+pub const PSH_USECALLBACK: ::DWORD = 0x00000100;
+pub const PSH_HASHELP: ::DWORD = 0x00000200;
+pub const PSH_MODELESS: ::DWORD = 0x00000400;
+pub const PSH_RTLREADING: ::DWORD = 0x00000800;
+pub const PSH_WIZARDCONTEXTHELP: ::DWORD = 0x00001000;
+pub const PSH_WIZARD97: ::DWORD = 0x01000000;
+pub const PSH_WATERMARK: ::DWORD = 0x00008000;
+pub const PSH_USEHBMWATERMARK: ::DWORD = 0x00010000;
+pub const PSH_USEHPLWATERMARK: ::DWORD = 0x00020000;
+pub const PSH_STRETCHWATERMARK: ::DWORD = 0x00040000;
+pub const PSH_HEADER: ::DWORD = 0x00080000;
+pub const PSH_USEHBMHEADER: ::DWORD = 0x00100000;
+pub const PSH_USEPAGELANG: ::DWORD = 0x00200000;
+pub const PSH_WIZARD_LITE: ::DWORD = 0x00400000;
+pub const PSH_NOCONTEXTHELP: ::DWORD = 0x02000000;
+pub const PSH_AEROWIZARD: ::DWORD = 0x00004000;
+pub const PSH_RESIZABLE: ::DWORD = 0x04000000;
+pub const PSH_HEADERBITMAP: ::DWORD = 0x08000000;
+pub const PSH_NOMARGIN: ::DWORD = 0x10000000;
+pub type PFNPROPSHEETCALLBACK = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::LPARAM,
+) -> ::c_int>;
+STRUCT!{nodebug struct PROPSHEETHEADERA_V2 {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ hwndParent: ::HWND,
+ hInstance: ::HINSTANCE,
+ hIcon: ::HICON,
+ pszCaption: ::LPCSTR,
+ nPages: ::UINT,
+ pStartPage: ::LPCSTR,
+ ppsp: LPCPROPSHEETPAGEA,
+ pfnCallback: PFNPROPSHEETCALLBACK,
+ hbmWatermark: ::HBITMAP,
+ hplWatermark: ::HPALETTE,
+ hbmHeader: ::HBITMAP,
+}}
+UNION!(PROPSHEETHEADERA_V2, hIcon, pszIcon, pszIcon_mut, ::LPCSTR);
+UNION!(PROPSHEETHEADERA_V2, pStartPage, nStartPage, nStartPage_mut, ::UINT);
+UNION!(PROPSHEETHEADERA_V2, ppsp, phpage, phpage_mut, *mut HPROPSHEETPAGE);
+UNION!(PROPSHEETHEADERA_V2, hbmWatermark, pszbmWatermark, pszbmWatermark_mut, ::LPCSTR);
+UNION!(PROPSHEETHEADERA_V2, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCSTR);
+pub type LPPROPSHEETHEADERA_V2 = *mut PROPSHEETHEADERA_V2;
+pub type LPCPROPSHEETHEADERA_V2 = *const PROPSHEETHEADERA_V2;
+STRUCT!{nodebug struct PROPSHEETHEADERW_V2 {
+ dwSize: ::DWORD,
+ dwFlags: ::DWORD,
+ hwndParent: ::HWND,
+ hInstance: ::HINSTANCE,
+ hIcon: ::HICON,
+ pszCaption: ::LPCWSTR,
+ nPages: ::UINT,
+ pStartPage: ::LPCWSTR,
+ ppsp: LPCPROPSHEETPAGEW,
+ pfnCallback: PFNPROPSHEETCALLBACK,
+ hbmWatermark: ::HBITMAP,
+ hplWatermark: ::HPALETTE,
+ hbmHeader: ::HBITMAP,
+}}
+UNION!(PROPSHEETHEADERW_V2, hIcon, pszIcon, pszIcon_mut, ::LPCWSTR);
+UNION!(PROPSHEETHEADERW_V2, pStartPage, nStartPage, nStartPage_mut, ::UINT);
+UNION!(PROPSHEETHEADERW_V2, ppsp, phpage, phpage_mut, *mut HPROPSHEETPAGE);
+UNION!(PROPSHEETHEADERW_V2, hbmWatermark, pszbmWatermark, pszbmWatermark_mut, ::LPCWSTR);
+UNION!(PROPSHEETHEADERW_V2, hbmHeader, pszbmHeader, pszbmHeader_mut, ::LPCWSTR);
+pub type LPPROPSHEETHEADERW_V2 = *mut PROPSHEETHEADERW_V2;
+pub type LPCPROPSHEETHEADERW_V2 = *const PROPSHEETHEADERW_V2;
+pub type PROPSHEETHEADERA = PROPSHEETHEADERA_V2;
+pub type PROPSHEETHEADERW = PROPSHEETHEADERW_V2;
+pub type LPPROPSHEETHEADERA = LPPROPSHEETHEADERA_V2;
+pub type LPPROPSHEETHEADERW = LPPROPSHEETHEADERW_V2;
+pub type LPCPROPSHEETHEADERA = LPCPROPSHEETHEADERA_V2;
+pub type LPCPROPSHEETHEADERW = LPCPROPSHEETHEADERW_V2;
+pub const PSCB_INITIALIZED: ::UINT = 1;
+pub const PSCB_PRECREATE: ::UINT = 2;
+pub const PSCB_BUTTONPRESSED: ::UINT = 3;
+pub type LPFNADDPROPSHEETPAGE = Option<unsafe extern "system" fn(
+ HPROPSHEETPAGE, ::LPARAM,
+) -> ::BOOL>;
+pub type LPFNADDPROPSHEETPAGES = Option<unsafe extern "system" fn(
+ ::LPVOID, LPFNADDPROPSHEETPAGE, ::LPARAM,
+) -> ::BOOL>;
+STRUCT!{struct PSHNOTIFY {
+ hdr: ::NMHDR,
+ lParam: ::LPARAM,
+}}
+pub type LPPSHNOTIFY = *mut PSHNOTIFY;
+pub const PSN_FIRST: ::UINT = -200i32 as ::UINT;
+pub const PSN_LAST: ::UINT = -299i32 as ::UINT;
+pub const PSN_SETACTIVE: ::UINT = PSN_FIRST - 0;
+pub const PSN_KILLACTIVE: ::UINT = PSN_FIRST - 1;
+pub const PSN_APPLY: ::UINT = PSN_FIRST - 2;
+pub const PSN_RESET: ::UINT = PSN_FIRST - 3;
+pub const PSN_HELP: ::UINT = PSN_FIRST - 5;
+pub const PSN_WIZBACK: ::UINT = PSN_FIRST - 6;
+pub const PSN_WIZNEXT: ::UINT = PSN_FIRST - 7;
+pub const PSN_WIZFINISH: ::UINT = PSN_FIRST - 8;
+pub const PSN_QUERYCANCEL: ::UINT = PSN_FIRST - 9;
+pub const PSN_GETOBJECT: ::UINT = PSN_FIRST - 10;
+pub const PSN_TRANSLATEACCELERATOR: ::UINT = PSN_FIRST - 12;
+pub const PSN_QUERYINITIALFOCUS: ::UINT = PSN_FIRST - 13;
+pub const PSNRET_NOERROR: ::LRESULT = 0;
+pub const PSNRET_INVALID: ::LRESULT = 1;
+pub const PSNRET_INVALID_NOCHANGEPAGE: ::LRESULT = 2;
+pub const PSNRET_MESSAGEHANDLED: ::LRESULT = 3;
+pub const PSM_SETCURSEL: ::UINT = ::WM_USER + 101;
+pub const PSM_REMOVEPAGE: ::UINT = ::WM_USER + 102;
+pub const PSM_ADDPAGE: ::UINT = ::WM_USER + 103;
+pub const PSM_CHANGED: ::UINT = ::WM_USER + 104;
+pub const PSM_RESTARTWINDOWS: ::UINT = ::WM_USER + 105;
+pub const PSM_REBOOTSYSTEM: ::UINT = ::WM_USER + 106;
+pub const PSM_CANCELTOCLOSE: ::UINT = ::WM_USER + 107;
+pub const PSM_QUERYSIBLINGS: ::UINT = ::WM_USER + 108;
+pub const PSM_UNCHANGED: ::UINT = ::WM_USER + 109;
+pub const PSM_APPLY: ::UINT = ::WM_USER + 110;
+pub const PSM_SETTITLEA: ::UINT = ::WM_USER + 111;
+pub const PSM_SETTITLEW: ::UINT = ::WM_USER + 120;
+pub const PSM_SETWIZBUTTONS: ::UINT = ::WM_USER + 112;
+pub const PSWIZB_BACK: ::DWORD = 0x00000001;
+pub const PSWIZB_NEXT: ::DWORD = 0x00000002;
+pub const PSWIZB_FINISH: ::DWORD = 0x00000004;
+pub const PSWIZB_DISABLEDFINISH: ::DWORD = 0x00000008;
+pub const PSWIZB_CANCEL: ::DWORD = 0x00000008;
+pub const PSWIZBF_ELEVATIONREQUIRED: ::WPARAM = 0x00000001;
+pub const PSBTN_BACK: ::c_int = 0;
+pub const PSBTN_NEXT: ::c_int = 1;
+pub const PSBTN_FINISH: ::c_int = 2;
+pub const PSBTN_OK: ::c_int = 3;
+pub const PSBTN_APPLYNOW: ::c_int = 4;
+pub const PSBTN_CANCEL: ::c_int = 5;
+pub const PSBTN_HELP: ::c_int = 6;
+pub const PSBTN_MAX: ::c_int = 6;
+pub const PSM_PRESSBUTTON: ::UINT = ::WM_USER + 113;
+pub const PSM_SETCURSELID: ::UINT = ::WM_USER + 114;
+pub const PSM_SETFINISHTEXTA: ::UINT = ::WM_USER + 115;
+pub const PSM_SETFINISHTEXTW: ::UINT = ::WM_USER + 121;
+pub const PSM_GETTABCONTROL: ::UINT = ::WM_USER + 116;
+pub const PSM_ISDIALOGMESSAGE: ::UINT = ::WM_USER + 117;
+pub const PSM_GETCURRENTPAGEHWND: ::UINT = ::WM_USER + 118;
+pub const PSM_INSERTPAGE: ::UINT = ::WM_USER + 119;
+pub const PSM_SETHEADERTITLEA: ::UINT = ::WM_USER + 125;
+pub const PSM_SETHEADERTITLEW: ::UINT = ::WM_USER + 126;
+pub const PSWIZF_SETCOLOR: ::UINT = (0 - 1) as ::UINT;
+pub const PSM_SETHEADERSUBTITLEA: ::UINT = ::WM_USER + 127;
+pub const PSM_SETHEADERSUBTITLEW: ::UINT = ::WM_USER + 128;
+pub const PSM_HWNDTOINDEX: ::UINT = ::WM_USER + 129;
+pub const PSM_INDEXTOHWND: ::UINT = ::WM_USER + 130;
+pub const PSM_PAGETOINDEX: ::UINT = ::WM_USER + 131;
+pub const PSM_INDEXTOPAGE: ::UINT = ::WM_USER + 132;
+pub const PSM_IDTOINDEX: ::UINT = ::WM_USER + 133;
+pub const PSM_INDEXTOID: ::UINT = ::WM_USER + 134;
+pub const PSM_GETRESULT: ::UINT = ::WM_USER + 135;
+pub const PSM_RECALCPAGESIZES: ::UINT = ::WM_USER + 136;
+pub const PSM_SETNEXTTEXTW: ::UINT = ::WM_USER + 137;
+pub const PSM_SHOWWIZBUTTONS: ::UINT = ::WM_USER + 138;
+pub const PSM_ENABLEWIZBUTTONS: ::UINT = ::WM_USER + 139;
+pub const PSM_SETBUTTONTEXTW: ::UINT = ::WM_USER + 140;
+pub const PSM_SETBUTTONTEXT: ::UINT = PSM_SETBUTTONTEXTW;
+pub const ID_PSRESTARTWINDOWS: ::INT_PTR = 0x2;
+pub const ID_PSREBOOTSYSTEM: ::INT_PTR = ID_PSRESTARTWINDOWS | 0x1;
+pub const WIZ_CXDLG: ::DWORD = 276;
+pub const WIZ_CYDLG: ::DWORD = 140;
+pub const WIZ_CXBMP: ::DWORD = 80;
+pub const WIZ_BODYX: ::DWORD = 92;
+pub const WIZ_BODYCX: ::DWORD = 184;
+pub const PROP_SM_CXDLG: ::c_short = 212;
+pub const PROP_SM_CYDLG: ::c_short = 188;
+pub const PROP_MED_CXDLG: ::c_short = 227;
+pub const PROP_MED_CYDLG: ::c_short = 215;
+pub const PROP_LG_CXDLG: ::c_short = 252;
+pub const PROP_LG_CYDLG: ::c_short = 218;
diff --git a/third_party/rust/winapi-0.2.8/src/psapi.rs b/third_party/rust/winapi-0.2.8/src/psapi.rs
new file mode 100644
index 0000000000..801d35c9e4
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/psapi.rs
@@ -0,0 +1,166 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! API Prototypes and Definitions for PSAPI.DLL
+pub const LIST_MODULES_DEFAULT: ::DWORD = 0x0;
+pub const LIST_MODULES_32BIT: ::DWORD = 0x01;
+pub const LIST_MODULES_64BIT: ::DWORD = 0x02;
+pub const LIST_MODULES_ALL: ::DWORD = LIST_MODULES_32BIT | LIST_MODULES_64BIT;
+STRUCT!{struct MODULEINFO {
+ lpBaseOfDll: ::LPVOID,
+ SizeOfImage: ::DWORD,
+ EntryPoint: ::LPVOID,
+}}
+pub type LPMODULEINFO = *mut MODULEINFO;
+STRUCT!{struct PSAPI_WORKING_SET_BLOCK {
+ Flags: ::ULONG_PTR,
+ BitFields: ::ULONG_PTR,
+}}
+#[cfg(target_arch="x86")]
+BITFIELD!(PSAPI_WORKING_SET_BLOCK BitFields: ::ULONG_PTR [
+ Protection set_Protection[0..5],
+ ShareCount set_ShareCount[5..8],
+ Shared set_Shared[8..9],
+ Reserved set_Reserved[9..12],
+ VirtualPage set_VirtualPage[12..32],
+]);
+#[cfg(target_arch="x86_64")]
+BITFIELD!(PSAPI_WORKING_SET_BLOCK BitFields: ::ULONG_PTR [
+ Protection set_Protection[0..5],
+ ShareCount set_ShareCount[5..8],
+ Shared set_Shared[8..9],
+ Reserved set_Reserved[9..12],
+ VirtualPage set_VirtualPage[12..64],
+]);
+pub type PPSAPI_WORKING_SET_BLOCK = *mut PSAPI_WORKING_SET_BLOCK;
+STRUCT!{struct PSAPI_WORKING_SET_INFORMATION {
+ NumberOfEntries: ::ULONG_PTR,
+ WorkingSetInfo: [PSAPI_WORKING_SET_BLOCK; 1],
+}}
+pub type PPSAPI_WORKING_SET_INFORMATION = *mut PSAPI_WORKING_SET_INFORMATION;
+STRUCT!{struct PSAPI_WORKING_SET_EX_BLOCK_Invalid {
+ BitFields: ::ULONG_PTR,
+}}
+#[cfg(target_arch="x86")]
+BITFIELD!(PSAPI_WORKING_SET_EX_BLOCK_Invalid BitFields: ::ULONG_PTR [
+ Valid set_Valid[0..1],
+ Reserved0 set_Reserved0[1..15],
+ Shared set_Shared[15..16],
+ Reserved1 set_Reserved1[16..31],
+ Bad set_Bad[31..32],
+]);
+#[cfg(target_arch="x86_64")]
+BITFIELD!(PSAPI_WORKING_SET_EX_BLOCK_Invalid BitFields: ::ULONG_PTR [
+ Valid set_Valid[0..1],
+ Reserved0 set_Reserved0[1..15],
+ Shared set_Shared[15..16],
+ Reserved1 set_Reserved1[16..31],
+ Bad set_Bad[31..32],
+ ReservedUlong set_ReservedUlong[32..64],
+]);
+STRUCT!{struct PSAPI_WORKING_SET_EX_BLOCK {
+ Flags: ::ULONG_PTR,
+ BitFields: ::ULONG_PTR,
+}}
+#[cfg(target_arch="x86")]
+BITFIELD!(PSAPI_WORKING_SET_EX_BLOCK BitFields: ::ULONG_PTR [
+ Valid set_Valid[0..1],
+ ShareCount set_ShareCount[1..4],
+ Win32Protection set_Win32Protection[4..15],
+ Shared set_Shared[15..16],
+ Node set_Node[16..22],
+ Locked set_Locked[22..23],
+ LargePage set_LargePage[23..24],
+ Reserved set_Reserved[24..31],
+ Bad set_Bad[31..32],
+]);
+#[cfg(target_arch="x86_64")]
+BITFIELD!(PSAPI_WORKING_SET_EX_BLOCK BitFields: ::ULONG_PTR [
+ Valid set_Valid[0..1],
+ ShareCount set_ShareCount[1..4],
+ Win32Protection set_Win32Protection[4..15],
+ Shared set_Shared[15..16],
+ Node set_Node[16..22],
+ Locked set_Locked[22..23],
+ LargePage set_LargePage[23..24],
+ Reserved set_Reserved[24..31],
+ Bad set_Bad[31..32],
+ ReservedUlong set_ReservedUlong[32..64],
+]);
+UNION!(
+ PSAPI_WORKING_SET_EX_BLOCK, BitFields, Invalid, Invalid_mut, PSAPI_WORKING_SET_EX_BLOCK_Invalid
+);
+pub type PPSAPI_WORKING_SET_EX_BLOCK = *mut PSAPI_WORKING_SET_EX_BLOCK;
+STRUCT!{struct PSAPI_WORKING_SET_EX_INFORMATION {
+ VirtualAddress: ::PVOID,
+ VirtualAttributes: PSAPI_WORKING_SET_EX_BLOCK,
+}}
+pub type PPSAPI_WORKING_SET_EX_INFORMATION = *mut PSAPI_WORKING_SET_EX_INFORMATION;
+STRUCT!{struct PSAPI_WS_WATCH_INFORMATION {
+ FaultingPc: ::LPVOID,
+ FaultingVa: ::LPVOID,
+}}
+pub type PPSAPI_WS_WATCH_INFORMATION = *mut PSAPI_WS_WATCH_INFORMATION;
+STRUCT!{struct PSAPI_WS_WATCH_INFORMATION_EX {
+ BasicInfo: PSAPI_WS_WATCH_INFORMATION,
+ FaultingThreadId: ::ULONG_PTR,
+ Flags: ::ULONG_PTR,
+}}
+pub type PPSAPI_WS_WATCH_INFORMATION_EX = *mut PSAPI_WS_WATCH_INFORMATION_EX;
+STRUCT!{struct PROCESS_MEMORY_COUNTERS {
+ cb: ::DWORD,
+ PageFaultCount: ::DWORD,
+ PeakWorkingSetSize: ::SIZE_T,
+ WorkingSetSize: ::SIZE_T,
+ QuotaPeakPagedPoolUsage: ::SIZE_T,
+ QuotaPagedPoolUsage: ::SIZE_T,
+ QuotaPeakNonPagedPoolUsage: ::SIZE_T,
+ QuotaNonPagedPoolUsage: ::SIZE_T,
+ PagefileUsage: ::SIZE_T,
+ PeakPagefileUsage: ::SIZE_T,
+}}
+pub type PPROCESS_MEMORY_COUNTERS = *mut PROCESS_MEMORY_COUNTERS;
+STRUCT!{struct PROCESS_MEMORY_COUNTERS_EX {
+ cb: ::DWORD,
+ PageFaultCount: ::DWORD,
+ PeakWorkingSetSize: ::SIZE_T,
+ WorkingSetSize: ::SIZE_T,
+ QuotaPeakPagedPoolUsage: ::SIZE_T,
+ QuotaPagedPoolUsage: ::SIZE_T,
+ QuotaPeakNonPagedPoolUsage: ::SIZE_T,
+ QuotaNonPagedPoolUsage: ::SIZE_T,
+ PagefileUsage: ::SIZE_T,
+ PeakPagefileUsage: ::SIZE_T,
+ PrivateUsage: ::SIZE_T,
+}}
+pub type PPROCESS_MEMORY_COUNTERS_EX = *mut PROCESS_MEMORY_COUNTERS_EX;
+STRUCT!{struct PERFORMANCE_INFORMATION {
+ cb: ::DWORD,
+ CommitTotal: ::SIZE_T,
+ CommitLimit: ::SIZE_T,
+ CommitPeak: ::SIZE_T,
+ PhysicalTotal: ::SIZE_T,
+ PhysicalAvailable: ::SIZE_T,
+ SystemCache: ::SIZE_T,
+ KernelTotal: ::SIZE_T,
+ KernelPaged: ::SIZE_T,
+ KernelNonpaged: ::SIZE_T,
+ PageSize: ::SIZE_T,
+ HandleCount: ::DWORD,
+ ProcessCount: ::DWORD,
+ ThreadCount: ::DWORD,
+}}
+pub type PPERFORMANCE_INFORMATION = *mut PERFORMANCE_INFORMATION;
+STRUCT!{struct ENUM_PAGE_FILE_INFORMATION {
+ cb: ::DWORD,
+ Reserved: ::DWORD,
+ TotalSize: ::SIZE_T,
+ TotalInUse: ::SIZE_T,
+ PeakUsage: ::SIZE_T,
+}}
+pub type PENUM_PAGE_FILE_INFORMATION = *mut ENUM_PAGE_FILE_INFORMATION;
+pub type PENUM_PAGE_FILE_CALLBACKA = Option<unsafe extern "system" fn(
+ pContext: ::LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: ::LPCSTR,
+) -> ::BOOL>;
+pub type PENUM_PAGE_FILE_CALLBACKW = Option<unsafe extern "system" fn(
+ pContext: ::LPVOID, pPageFileInfo: PENUM_PAGE_FILE_INFORMATION, lpFilename: ::LPCWSTR,
+) -> ::BOOL>;
diff --git a/third_party/rust/winapi-0.2.8/src/qos.rs b/third_party/rust/winapi-0.2.8/src/qos.rs
new file mode 100644
index 0000000000..91026b392e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/qos.rs
@@ -0,0 +1,16 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! QoS definitions for NDIS components.
+pub type SERVICETYPE = ::ULONG;
+STRUCT!{struct FLOWSPEC {
+ TokenRate: ::ULONG,
+ TokenBucketSize: ::ULONG,
+ PeakBandwidth: ::ULONG,
+ Latency: ::ULONG,
+ DelayVariation: ::ULONG,
+ ServiceType: SERVICETYPE,
+ MaxSduSize: ::ULONG,
+ MinimumPolicedSize: ::ULONG,
+}}
+pub type PFLOWSPEC = *mut FLOWSPEC;
+pub type LPFLOWSPEC = *mut FLOWSPEC;
diff --git a/third_party/rust/winapi-0.2.8/src/reason.rs b/third_party/rust/winapi-0.2.8/src/reason.rs
new file mode 100644
index 0000000000..66b3ed39d4
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/reason.rs
@@ -0,0 +1,63 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+// Flags used by the various UIs
+pub const SHTDN_REASON_FLAG_COMMENT_REQUIRED: ::DWORD = 0x01000000;
+pub const SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED: ::DWORD = 0x02000000;
+pub const SHTDN_REASON_FLAG_CLEAN_UI: ::DWORD = 0x04000000;
+pub const SHTDN_REASON_FLAG_DIRTY_UI: ::DWORD = 0x08000000;
+// Flags that end up in the event log code.
+pub const SHTDN_REASON_FLAG_USER_DEFINED: ::DWORD = 0x40000000;
+pub const SHTDN_REASON_FLAG_PLANNED: ::DWORD = 0x80000000;
+// Microsoft major reasons.
+pub const SHTDN_REASON_MAJOR_OTHER: ::DWORD = 0x00000000;
+pub const SHTDN_REASON_MAJOR_NONE: ::DWORD = 0x00000000;
+pub const SHTDN_REASON_MAJOR_HARDWARE: ::DWORD = 0x00010000;
+pub const SHTDN_REASON_MAJOR_OPERATINGSYSTEM: ::DWORD = 0x00020000;
+pub const SHTDN_REASON_MAJOR_SOFTWARE: ::DWORD = 0x00030000;
+pub const SHTDN_REASON_MAJOR_APPLICATION: ::DWORD = 0x00040000;
+pub const SHTDN_REASON_MAJOR_SYSTEM: ::DWORD = 0x00050000;
+pub const SHTDN_REASON_MAJOR_POWER: ::DWORD = 0x00060000;
+pub const SHTDN_REASON_MAJOR_LEGACY_API: ::DWORD = 0x00070000;
+// Microsoft minor reasons.
+pub const SHTDN_REASON_MINOR_OTHER: ::DWORD = 0x00000000;
+pub const SHTDN_REASON_MINOR_NONE: ::DWORD = 0x000000ff;
+pub const SHTDN_REASON_MINOR_MAINTENANCE: ::DWORD = 0x00000001;
+pub const SHTDN_REASON_MINOR_INSTALLATION: ::DWORD = 0x00000002;
+pub const SHTDN_REASON_MINOR_UPGRADE: ::DWORD = 0x00000003;
+pub const SHTDN_REASON_MINOR_RECONFIG: ::DWORD = 0x00000004;
+pub const SHTDN_REASON_MINOR_HUNG: ::DWORD = 0x00000005;
+pub const SHTDN_REASON_MINOR_UNSTABLE: ::DWORD = 0x00000006;
+pub const SHTDN_REASON_MINOR_DISK: ::DWORD = 0x00000007;
+pub const SHTDN_REASON_MINOR_PROCESSOR: ::DWORD = 0x00000008;
+pub const SHTDN_REASON_MINOR_NETWORKCARD: ::DWORD = 0x00000009;
+pub const SHTDN_REASON_MINOR_POWER_SUPPLY: ::DWORD = 0x0000000a;
+pub const SHTDN_REASON_MINOR_CORDUNPLUGGED: ::DWORD = 0x0000000b;
+pub const SHTDN_REASON_MINOR_ENVIRONMENT: ::DWORD = 0x0000000c;
+pub const SHTDN_REASON_MINOR_HARDWARE_DRIVER: ::DWORD = 0x0000000d;
+pub const SHTDN_REASON_MINOR_OTHERDRIVER: ::DWORD = 0x0000000e;
+pub const SHTDN_REASON_MINOR_BLUESCREEN: ::DWORD = 0x0000000F;
+pub const SHTDN_REASON_MINOR_SERVICEPACK: ::DWORD = 0x00000010;
+pub const SHTDN_REASON_MINOR_HOTFIX: ::DWORD = 0x00000011;
+pub const SHTDN_REASON_MINOR_SECURITYFIX: ::DWORD = 0x00000012;
+pub const SHTDN_REASON_MINOR_SECURITY: ::DWORD = 0x00000013;
+pub const SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY: ::DWORD = 0x00000014;
+pub const SHTDN_REASON_MINOR_WMI: ::DWORD = 0x00000015;
+pub const SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL: ::DWORD = 0x00000016;
+pub const SHTDN_REASON_MINOR_HOTFIX_UNINSTALL: ::DWORD = 0x00000017;
+pub const SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL: ::DWORD = 0x00000018;
+pub const SHTDN_REASON_MINOR_MMC: ::DWORD = 0x00000019;
+pub const SHTDN_REASON_MINOR_SYSTEMRESTORE: ::DWORD = 0x0000001a;
+pub const SHTDN_REASON_MINOR_TERMSRV: ::DWORD = 0x00000020;
+pub const SHTDN_REASON_MINOR_DC_PROMOTION: ::DWORD = 0x00000021;
+pub const SHTDN_REASON_MINOR_DC_DEMOTION: ::DWORD = 0x00000022;
+pub const SHTDN_REASON_UNKNOWN: ::DWORD = SHTDN_REASON_MINOR_NONE;
+pub const SHTDN_REASON_LEGACY_API: ::DWORD =
+ (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED);
+// This mask cuts out UI flags.
+pub const SHTDN_REASON_VALID_BIT_MASK: ::DWORD = 0xc0ffffff;
+// Convenience flags.
+pub const PCLEANUI: ::DWORD = (SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_CLEAN_UI);
+pub const UCLEANUI: ::DWORD = (SHTDN_REASON_FLAG_CLEAN_UI);
+pub const PDIRTYUI: ::DWORD = (SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_DIRTY_UI);
+pub const UDIRTYUI: ::DWORD = (SHTDN_REASON_FLAG_DIRTY_UI);
+//89
diff --git a/third_party/rust/winapi-0.2.8/src/restrictederrorinfo.rs b/third_party/rust/winapi-0.2.8/src/restrictederrorinfo.rs
new file mode 100644
index 0000000000..94fbb77bb0
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/restrictederrorinfo.rs
@@ -0,0 +1,9 @@
+RIDL!(
+interface IRestrictedErrorInfo(IRestrictedErrorInfoVtbl): IUnknown(IUnknownVtbl) {
+ fn GetErrorDetails(
+ &mut self, description: *mut ::BSTR, error: *mut ::HRESULT,
+ restrictedDescription: *mut ::BSTR, capabilitySid: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn GetReference(&mut self, reference: *mut ::BSTR) -> ::HRESULT
+}
+);
diff --git a/third_party/rust/winapi-0.2.8/src/roapi.rs b/third_party/rust/winapi-0.2.8/src/roapi.rs
new file mode 100644
index 0000000000..db8d5df027
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/roapi.rs
@@ -0,0 +1,13 @@
+ENUM!{enum RO_INIT_TYPE {
+ RO_INIT_SINGLETHREADED = 0,
+ RO_INIT_MULTITHREADED = 1,
+}}
+
+pub enum RO_REGISTRATION_COOKIE__{}
+pub type RO_REGISTRATION_COOKIE = *mut RO_REGISTRATION_COOKIE__;
+
+pub type PFNGETACTIVATIONFACTORY = Option<unsafe extern "system" fn(
+ ::HSTRING, *mut *mut ::IActivationFactory,
+) -> ::HRESULT>;
+
+DECLARE_HANDLE!(APARTMENT_SHUTDOWN_REGISTRATION_COOKIE, APARTMENT_SHUTDOWN_REGISTRATION_COOKIE__);
diff --git a/third_party/rust/winapi-0.2.8/src/roerrorapi.rs b/third_party/rust/winapi-0.2.8/src/roerrorapi.rs
new file mode 100644
index 0000000000..9a0cbcc677
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/roerrorapi.rs
@@ -0,0 +1,11 @@
+FLAGS!{enum RO_ERROR_REPORTING_FLAGS {
+ RO_ERROR_REPORTING_NONE = 0x00000000,
+ RO_ERROR_REPORTING_SUPPRESSEXCEPTIONS = 0x00000001,
+ RO_ERROR_REPORTING_FORCEEXCEPTIONS = 0x00000002,
+ RO_ERROR_REPORTING_USESETERRORINFO = 0x00000004,
+ RO_ERROR_REPORTING_SUPPRESSSETERRORINFO = 0x00000008,
+}}
+
+pub type PINSPECT_MEMORY_CALLBACK = Option<unsafe extern "system" fn(
+ *const ::VOID, ::UINT_PTR, ::UINT32, *mut ::BYTE,
+) -> ::HRESULT>;
diff --git a/third_party/rust/winapi-0.2.8/src/rpc.rs b/third_party/rust/winapi-0.2.8/src/rpc.rs
new file mode 100644
index 0000000000..0b013d39e9
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/rpc.rs
@@ -0,0 +1,5 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+// Master include file for RPC applications.
+pub type I_RPC_HANDLE = *mut ::c_void;
+pub type RPC_STATUS = ::c_long;
diff --git a/third_party/rust/winapi-0.2.8/src/rpcdce.rs b/third_party/rust/winapi-0.2.8/src/rpcdce.rs
new file mode 100644
index 0000000000..68d88c7a32
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/rpcdce.rs
@@ -0,0 +1,535 @@
+// Copyright © 2015, Brian Vincent
+// Licensed under the MIT License <LICENSE.md>
+// This module contains the DCE RPC runtime APIs.
+pub type RPC_CSTR = *mut ::c_uchar;
+pub type RPC_WSTR = *mut ::wchar_t;
+pub type RPC_CWSTR = *const ::wchar_t;
+pub type RPC_BINDING_HANDLE = ::I_RPC_HANDLE;
+pub type handle_t = RPC_BINDING_HANDLE;
+pub type rpc_binding_handle_t = RPC_BINDING_HANDLE;
+pub type UUID = ::GUID;
+pub type uuid_t = UUID;
+STRUCT!{struct RPC_BINDING_VECTOR {
+ Count: ::c_ulong,
+ BindingH: [RPC_BINDING_HANDLE; 1],
+}}
+pub type rpc_binding_vector_t = RPC_BINDING_VECTOR;
+STRUCT!{struct UUID_VECTOR {
+ Count: ::c_ulong,
+ Uuid: [*mut UUID; 1],
+}}
+pub type uuid_vector_t = UUID_VECTOR;
+pub type RPC_IF_HANDLE = *mut ::c_void;
+STRUCT!{struct RPC_IF_ID {
+ Uuid: UUID,
+ VersMajor: ::c_ushort,
+ VersMinor: ::c_ushort,
+}}
+pub const RPC_C_BINDING_INFINITE_TIMEOUT: ::DWORD = 10;
+pub const RPC_C_BINDING_MIN_TIMEOUT: ::DWORD = 0;
+pub const RPC_C_BINDING_DEFAULT_TIMEOUT: ::DWORD = 5;
+pub const RPC_C_BINDING_MAX_TIMEOUT: ::DWORD = 9;
+pub const RPC_C_CANCEL_INFINITE_TIMEOUT: ::c_int = -1;
+pub const RPC_C_LISTEN_MAX_CALLS_DEFAULT: ::DWORD = 1234;
+pub const RPC_C_PROTSEQ_MAX_REQS_DEFAULT: ::DWORD = 10;
+pub const RPC_C_BIND_TO_ALL_NICS: ::DWORD = 1;
+pub const RPC_C_USE_INTERNET_PORT: ::DWORD = 0x1;
+pub const RPC_C_USE_INTRANET_PORT: ::DWORD = 0x2;
+pub const RPC_C_DONT_FAIL: ::DWORD = 0x4;
+pub const RPC_C_RPCHTTP_USE_LOAD_BALANCE: ::DWORD = 0x8;
+pub const RPC_C_MQ_TEMPORARY: ::DWORD = 0x0000;
+pub const RPC_C_MQ_PERMANENT: ::DWORD = 0x0001;
+pub const RPC_C_MQ_CLEAR_ON_OPEN: ::DWORD = 0x0002;
+pub const RPC_C_MQ_USE_EXISTING_SECURITY: ::DWORD = 0x0004;
+pub const RPC_C_MQ_AUTHN_LEVEL_NONE: ::DWORD = 0x0000;
+pub const RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY: ::DWORD = 0x0008;
+pub const RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY: ::DWORD = 0x0010;
+pub const RPC_C_OPT_MQ_DELIVERY: ::DWORD = 1;
+pub const RPC_C_OPT_MQ_PRIORITY: ::DWORD = 2;
+pub const RPC_C_OPT_MQ_JOURNAL: ::DWORD = 3;
+pub const RPC_C_OPT_MQ_ACKNOWLEDGE: ::DWORD = 4;
+pub const RPC_C_OPT_MQ_AUTHN_SERVICE: ::DWORD = 5;
+pub const RPC_C_OPT_MQ_AUTHN_LEVEL: ::DWORD = 6;
+pub const RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE: ::DWORD = 7;
+pub const RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED: ::DWORD = 8;
+pub const RPC_C_OPT_BINDING_NONCAUSAL: ::DWORD = 9;
+pub const RPC_C_OPT_SECURITY_CALLBACK: ::DWORD = 10;
+pub const RPC_C_OPT_UNIQUE_BINDING: ::DWORD = 11;
+pub const RPC_C_OPT_CALL_TIMEOUT: ::DWORD = 12;
+pub const RPC_C_OPT_DONT_LINGER: ::DWORD = 13;
+pub const RPC_C_OPT_TRUST_PEER: ::DWORD = 14;
+pub const RPC_C_OPT_ASYNC_BLOCK: ::DWORD = 15;
+pub const RPC_C_OPT_OPTIMIZE_TIME: ::DWORD = 16;
+pub const RPC_C_OPT_MAX_OPTIONS: ::DWORD = 17;
+pub const RPC_C_MQ_EXPRESS: ::DWORD = 0;
+pub const RPC_C_MQ_RECOVERABLE: ::DWORD = 1;
+pub const RPC_C_MQ_JOURNAL_NONE: ::DWORD = 0;
+pub const RPC_C_MQ_JOURNAL_DEADLETTER: ::DWORD = 1;
+pub const RPC_C_MQ_JOURNAL_ALWAYS: ::DWORD = 2;
+pub const RPC_C_FULL_CERT_CHAIN: ::DWORD = 0x0001;
+STRUCT!{struct RPC_PROTSEQ_VECTORA {
+ Count: ::c_uint,
+ Protseq: [*mut ::c_uchar; 1],
+}}
+STRUCT!{struct RPC_PROTSEQ_VECTORW {
+ Count: ::c_uint,
+ Protseq: [*mut ::c_ushort; 1],
+}}
+STRUCT!{struct RPC_POLICY {
+ Length: ::c_uint,
+ EndpointFlags: ::c_ulong,
+ NICFlags: ::c_ulong,
+}}
+pub type PRPC_POLICY = *mut RPC_POLICY;
+pub type RPC_OBJECT_INQ_FN = Option<unsafe extern "system" fn(
+ ObjectUuid: *mut UUID, TypeUuid: *mut UUID, Status: *mut ::RPC_STATUS,
+)>;
+pub type RPC_IF_CALLBACK_FN = Option<unsafe extern "system" fn(
+ InterfaceUuid: RPC_IF_HANDLE, Context: *mut ::c_void,
+) -> ::RPC_STATUS>;
+pub type RPC_SECURITY_CALLBACK_FN = Option<unsafe extern "system" fn(Context: *mut ::c_void)>;
+pub type RPC_MGR_EPV = ::c_void;
+STRUCT!{struct RPC_STATS_VECTOR {
+ Count: ::c_uint,
+ Stats: [::c_ulong; 1],
+}}
+pub const RPC_C_STATS_CALLS_IN: ::c_ulong = 0;
+pub const RPC_C_STATS_CALLS_OUT: ::c_ulong = 1;
+pub const RPC_C_STATS_PKTS_IN: ::c_ulong = 2;
+pub const RPC_C_STATS_PKTS_OUT: ::c_ulong = 3;
+STRUCT!{struct RPC_IF_ID_VECTOR {
+ Count: ::c_ulong,
+ IfId: [*mut RPC_IF_ID; 1],
+}}
+pub type RPC_AUTH_IDENTITY_HANDLE = *mut ::c_void;
+pub type RPC_AUTHZ_HANDLE = *mut ::c_void;
+pub const RPC_C_AUTHN_LEVEL_DEFAULT: ::DWORD = 0;
+pub const RPC_C_AUTHN_LEVEL_NONE: ::DWORD = 1;
+pub const RPC_C_AUTHN_LEVEL_CONNECT: ::DWORD = 2;
+pub const RPC_C_AUTHN_LEVEL_CALL: ::DWORD = 3;
+pub const RPC_C_AUTHN_LEVEL_PKT: ::DWORD = 4;
+pub const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY: ::DWORD = 5;
+pub const RPC_C_AUTHN_LEVEL_PKT_PRIVACY: ::DWORD = 6;
+pub const RPC_C_IMP_LEVEL_DEFAULT: ::DWORD = 0;
+pub const RPC_C_IMP_LEVEL_ANONYMOUS: ::DWORD = 1;
+pub const RPC_C_IMP_LEVEL_IDENTIFY: ::DWORD = 2;
+pub const RPC_C_IMP_LEVEL_IMPERSONATE: ::DWORD = 3;
+pub const RPC_C_IMP_LEVEL_DELEGATE: ::DWORD = 4;
+pub const RPC_C_QOS_IDENTITY_STATIC: ::DWORD = 0;
+pub const RPC_C_QOS_IDENTITY_DYNAMIC: ::DWORD = 1;
+pub const RPC_C_QOS_CAPABILITIES_DEFAULT: ::DWORD = 0x0;
+pub const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH: ::DWORD = 0x1;
+pub const RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC: ::DWORD = 0x2;
+pub const RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY: ::DWORD = 0x4;
+pub const RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE: ::DWORD = 0x8;
+pub const RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT: ::DWORD = 0x10;
+pub const RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY: ::DWORD = 0x20;
+pub const RPC_C_PROTECT_LEVEL_DEFAULT: ::DWORD = RPC_C_AUTHN_LEVEL_DEFAULT;
+pub const RPC_C_PROTECT_LEVEL_NONE: ::DWORD = RPC_C_AUTHN_LEVEL_NONE;
+pub const RPC_C_PROTECT_LEVEL_CONNECT: ::DWORD = RPC_C_AUTHN_LEVEL_CONNECT;
+pub const RPC_C_PROTECT_LEVEL_CALL: ::DWORD = RPC_C_AUTHN_LEVEL_CALL;
+pub const RPC_C_PROTECT_LEVEL_PKT: ::DWORD = RPC_C_AUTHN_LEVEL_PKT;
+pub const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY: ::DWORD = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY;
+pub const RPC_C_PROTECT_LEVEL_PKT_PRIVACY: ::DWORD = RPC_C_AUTHN_LEVEL_PKT_PRIVACY;
+pub const RPC_C_AUTHN_NONE: ::DWORD = 0;
+pub const RPC_C_AUTHN_DCE_PRIVATE: ::DWORD = 1;
+pub const RPC_C_AUTHN_DCE_PUBLIC: ::DWORD = 2;
+pub const RPC_C_AUTHN_DEC_PUBLIC: ::DWORD = 4;
+pub const RPC_C_AUTHN_GSS_NEGOTIATE: ::DWORD = 9;
+pub const RPC_C_AUTHN_WINNT: ::DWORD = 10;
+pub const RPC_C_AUTHN_GSS_SCHANNEL: ::DWORD = 14;
+pub const RPC_C_AUTHN_GSS_KERBEROS: ::DWORD = 16;
+pub const RPC_C_AUTHN_DPA: ::DWORD = 17;
+pub const RPC_C_AUTHN_MSN: ::DWORD = 18;
+pub const RPC_C_AUTHN_DIGEST: ::DWORD = 21;
+pub const RPC_C_AUTHN_KERNEL: ::DWORD = 20;
+pub const RPC_C_AUTHN_NEGO_EXTENDER: ::DWORD = 30;
+pub const RPC_C_AUTHN_PKU2U: ::DWORD = 31;
+pub const RPC_C_AUTHN_LIVE_SSP: ::DWORD = 32;
+pub const RPC_C_AUTHN_LIVEXP_SSP: ::DWORD = 35;
+pub const RPC_C_AUTHN_MSONLINE: ::DWORD = 82;
+pub const RPC_C_AUTHN_MQ: ::DWORD = 100;
+pub const RPC_C_AUTHN_DEFAULT: ::DWORD = 0xFFFFFFFF;
+pub const RPC_C_NO_CREDENTIALS: ::DWORD = 0xFFFFFFFF;
+pub const RPC_C_SECURITY_QOS_VERSION: ::DWORD = 1;
+pub const RPC_C_SECURITY_QOS_VERSION_1: ::DWORD = 1;
+STRUCT!{struct RPC_SECURITY_QOS {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+}}
+pub type PRPC_SECURITY_QOS = *mut RPC_SECURITY_QOS;
+STRUCT!{struct SEC_WINNT_AUTH_IDENTITY_W {
+ User: *mut ::c_ushort,
+ UserLength: ::c_ulong,
+ Domain: *mut ::c_ushort,
+ DomainLength: ::c_ulong,
+ Password: *mut ::c_ushort,
+ PasswordLength: ::c_ulong,
+ Flags: ::c_ulong,
+}}
+pub type PSEC_WINNT_AUTH_IDENTITY_W = *mut SEC_WINNT_AUTH_IDENTITY_W;
+STRUCT!{struct SEC_WINNT_AUTH_IDENTITY_A {
+ User: *mut ::c_uchar,
+ UserLength: ::c_ulong,
+ Domain: *mut ::c_uchar,
+ DomainLength: ::c_ulong,
+ Password: *mut ::c_uchar,
+ PasswordLength: ::c_ulong,
+ Flags: ::c_ulong,
+}}
+pub type PSEC_WINNT_AUTH_IDENTITY_A = *mut SEC_WINNT_AUTH_IDENTITY_A;
+pub const RPC_C_AUTHN_INFO_TYPE_HTTP: ::c_ulong = 1;
+pub const RPC_C_HTTP_AUTHN_TARGET_SERVER: ::c_ulong = 1;
+pub const RPC_C_HTTP_AUTHN_TARGET_PROXY: ::c_ulong = 2;
+pub const RPC_C_HTTP_AUTHN_SCHEME_BASIC: ::c_ulong = 0x00000001;
+pub const RPC_C_HTTP_AUTHN_SCHEME_NTLM: ::c_ulong = 0x00000002;
+pub const RPC_C_HTTP_AUTHN_SCHEME_PASSPORT: ::c_ulong = 0x00000004;
+pub const RPC_C_HTTP_AUTHN_SCHEME_DIGEST: ::c_ulong = 0x00000008;
+pub const RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE: ::c_ulong = 0x00000010;
+pub const RPC_C_HTTP_AUTHN_SCHEME_CERT: ::c_ulong = 0x00010000;
+pub const RPC_C_HTTP_FLAG_USE_SSL: ::c_ulong = 1;
+pub const RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME: ::c_ulong = 2;
+pub const RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID: ::c_ulong = 8;
+pub const RPC_C_HTTP_FLAG_ENABLE_CERT_REVOCATION_CHECK: ::c_ulong = 16;
+STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_W {
+ TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W,
+ Flags: ::c_ulong,
+ AuthenticationTarget: ::c_ulong,
+ NumberOfAuthnSchemes: ::c_ulong,
+ AuthnSchemes: *mut ::c_ulong,
+ ServerCertificateSubject: *mut ::c_ushort,
+}}
+pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W;
+STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_A {
+ TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A,
+ Flags: ::c_ulong,
+ AuthenticationTarget: ::c_ulong,
+ NumberOfAuthnSchemes: ::c_ulong,
+ AuthnSchemes: *mut ::c_ulong,
+ ServerCertificateSubject: *mut ::c_uchar,
+}}
+pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A;
+STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W {
+ TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W,
+ Flags: ::c_ulong,
+ AuthenticationTarget: ::c_ulong,
+ NumberOfAuthnSchemes: ::c_ulong,
+ AuthnSchemes: *mut ::c_ulong,
+ ServerCertificateSubject: *mut ::c_ushort,
+ ProxyCredentials: *mut SEC_WINNT_AUTH_IDENTITY_W,
+ NumberOfProxyAuthnSchemes: ::c_ulong,
+ ProxyAuthnSchemes: *mut ::c_ulong,
+}}
+pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W;
+STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A {
+ TransportCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A,
+ Flags: ::c_ulong,
+ AuthenticationTarget: ::c_ulong,
+ NumberOfAuthnSchemes: ::c_ulong,
+ AuthnSchemes: *mut ::c_ulong,
+ ServerCertificateSubject: *mut ::c_uchar,
+ ProxyCredentials: *mut SEC_WINNT_AUTH_IDENTITY_A,
+ NumberOfProxyAuthnSchemes: ::c_ulong,
+ ProxyAuthnSchemes: *mut ::c_ulong,
+}}
+pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A;
+STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W {
+ TransportCredentials: RPC_AUTH_IDENTITY_HANDLE,
+ Flags: ::c_ulong,
+ AuthenticationTarget: ::c_ulong,
+ NumberOfAuthnSchemes: ::c_ulong,
+ AuthnSchemes: *mut ::c_ulong,
+ ServerCertificateSubject: *mut ::c_ushort,
+ ProxyCredentials: *mut RPC_AUTH_IDENTITY_HANDLE,
+ NumberOfProxyAuthnSchemes: ::c_ulong,
+ ProxyAuthnSchemes: *mut ::c_ulong,
+}}
+pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W;
+STRUCT!{struct RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A {
+ TransportCredentials: RPC_AUTH_IDENTITY_HANDLE,
+ Flags: ::c_ulong,
+ AuthenticationTarget: ::c_ulong,
+ NumberOfAuthnSchemes: ::c_ulong,
+ AuthnSchemes: *mut ::c_ulong,
+ ServerCertificateSubject: *mut ::c_uchar,
+ ProxyCredentials: *mut RPC_AUTH_IDENTITY_HANDLE,
+ NumberOfProxyAuthnSchemes: ::c_ulong,
+ ProxyAuthnSchemes: *mut ::c_ulong,
+}}
+pub type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A = *mut RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A;
+STRUCT!{struct RPC_SECURITY_QOS_V2_W_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V2_W {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V2_W_union,
+}}
+pub type PRPC_SECURITY_QOS_V2_W = *mut RPC_SECURITY_QOS_V2_W;
+STRUCT!{struct RPC_SECURITY_QOS_V2_A_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V2_A {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V2_A_union,
+}}
+pub type PRPC_SECURITY_QOS_V2_A = *mut RPC_SECURITY_QOS_V2_A;
+STRUCT!{struct RPC_SECURITY_QOS_V3_W_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V3_W {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V3_W_union,
+ Sid: *mut ::c_void,
+}}
+pub type PRPC_SECURITY_QOS_V3_W = *mut RPC_SECURITY_QOS_V3_W;
+STRUCT!{struct RPC_SECURITY_QOS_V3_A_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V3_A {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V3_A_union,
+ Sid: *mut ::c_void,
+}}
+pub type PRPC_SECURITY_QOS_V3_A = *mut RPC_SECURITY_QOS_V3_A;
+STRUCT!{struct RPC_SECURITY_QOS_V4_W_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V4_W {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V4_W_union,
+ Sid: *mut ::c_void,
+ EffectiveOnly: ::c_uint,
+}}
+pub type PRPC_SECURITY_QOS_V4_W = *mut RPC_SECURITY_QOS_V4_W;
+STRUCT!{struct RPC_SECURITY_QOS_V4_A_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V4_A {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V4_A_union,
+ Sid: *mut ::c_void,
+ EffectiveOnly: ::c_uint,
+}}
+pub type PRPC_SECURITY_QOS_V4_A = *mut RPC_SECURITY_QOS_V4_A;
+STRUCT!{struct RPC_SECURITY_QOS_V5_W_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_W,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V5_W {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V5_W_union,
+ Sid: *mut ::c_void,
+ EffectiveOnly: ::c_uint,
+ ServerSecurityDescriptor: *mut ::c_void,
+}}
+pub type PRPC_SECURITY_QOS_V5_W = *mut RPC_SECURITY_QOS_V5_W;
+STRUCT!{struct RPC_SECURITY_QOS_V5_A_union {
+ HttpCredentials: *mut RPC_HTTP_TRANSPORT_CREDENTIALS_A,
+}}
+STRUCT!{struct RPC_SECURITY_QOS_V5_A {
+ Version: ::c_ulong,
+ Capabilities: ::c_ulong,
+ IdentityTracking: ::c_ulong,
+ ImpersonationType: ::c_ulong,
+ AdditionalSecurityInfoType: ::c_ulong,
+ u: RPC_SECURITY_QOS_V5_A_union,
+ Sid: *mut ::c_void,
+ EffectiveOnly: ::c_uint,
+ ServerSecurityDescriptor: *mut ::c_void,
+}}
+pub type PRPC_SECURITY_QOS_V5_A = *mut RPC_SECURITY_QOS_V5_A;
+pub const RPC_PROTSEQ_TCP: ::c_ulong = 0x1;
+pub const RPC_PROTSEQ_NMP: ::c_ulong = 0x2;
+pub const RPC_PROTSEQ_LRPC: ::c_ulong = 0x3;
+pub const RPC_PROTSEQ_HTTP: ::c_ulong = 0x4;
+pub const RPC_BHT_OBJECT_UUID_VALID: ::c_ulong = 0x1;
+pub const RPC_BHO_NONCAUSAL: ::c_ulong = 0x1;
+pub const RPC_BHO_DONTLINGER: ::c_ulong = 0x2;
+pub const RPC_BHO_EXCLUSIVE_AND_GUARANTEED: ::c_ulong = 0x4;
+STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_W_union {
+ Reserved: *mut ::c_ushort,
+}}
+STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_W {
+ Version: ::c_ulong,
+ Flags: ::c_ulong,
+ ProtocolSequence: ::c_ulong,
+ NetworkAddress: *mut ::c_ushort,
+ StringEndpoint: *mut ::c_ushort,
+ u1: RPC_BINDING_HANDLE_TEMPLATE_V1_W_union,
+ ObjectUuid: UUID,
+}}
+pub type PRPC_BINDING_HANDLE_TEMPLATE_V1_W = *mut RPC_BINDING_HANDLE_TEMPLATE_V1_W;
+STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_A_union {
+ Reserved: *mut ::c_uchar,
+}}
+STRUCT!{struct RPC_BINDING_HANDLE_TEMPLATE_V1_A {
+ Version: ::c_ulong,
+ Flags: ::c_ulong,
+ ProtocolSequence: ::c_ulong,
+ NetworkAddress: *mut ::c_uchar,
+ StringEndpoint: *mut ::c_uchar,
+ u1: RPC_BINDING_HANDLE_TEMPLATE_V1_A_union,
+ ObjectUuid: UUID,
+}}
+pub type PRPC_BINDING_HANDLE_TEMPLATE_V1_A = *mut RPC_BINDING_HANDLE_TEMPLATE_V1_A;
+STRUCT!{struct RPC_BINDING_HANDLE_SECURITY_V1_W {
+ Version: ::c_ulong,
+ ServerPrincName: *mut ::c_ushort,
+ AuthnLevel: ::c_ulong,
+ AuthnSvc: ::c_ulong,
+ AuthIdentity: *mut SEC_WINNT_AUTH_IDENTITY_W,
+ SecurityQos: *mut RPC_SECURITY_QOS,
+}}
+pub type PRPC_BINDING_HANDLE_SECURITY_V1_W = *mut RPC_BINDING_HANDLE_SECURITY_V1_W;
+STRUCT!{struct RPC_BINDING_HANDLE_SECURITY_V1_A {
+ Version: ::c_ulong,
+ ServerPrincName: *mut ::c_uchar,
+ AuthnLevel: ::c_ulong,
+ AuthnSvc: ::c_ulong,
+ AuthIdentity: *mut SEC_WINNT_AUTH_IDENTITY_A,
+ SecurityQos: *mut RPC_SECURITY_QOS,
+}}
+pub type PRPC_BINDING_HANDLE_SECURITY_V1_A = *mut RPC_BINDING_HANDLE_SECURITY_V1_A;
+STRUCT!{struct RPC_BINDING_HANDLE_OPTIONS_V1 {
+ Version: ::c_ulong,
+ Flags: ::c_ulong,
+ ComTimeout: ::c_ulong,
+ CallTimeout: ::c_ulong,
+}}
+pub type PRPC_BINDING_HANDLE_OPTIONS_V1 = *mut RPC_BINDING_HANDLE_OPTIONS_V1;
+ENUM!{enum RPC_HTTP_REDIRECTOR_STAGE {
+ RPCHTTP_RS_REDIRECT = 1,
+ RPCHTTP_RS_ACCESS_1,
+ RPCHTTP_RS_SESSION,
+ RPCHTTP_RS_ACCESS_2,
+ RPCHTTP_RS_INTERFACE,
+}}
+pub type RPC_NEW_HTTP_PROXY_CHANNEL = Option<unsafe extern "system" fn(
+ RedirectorStage: RPC_HTTP_REDIRECTOR_STAGE, ServerName: RPC_WSTR, ServerPort: RPC_WSTR,
+ RemoteUser: RPC_WSTR, AuthType: RPC_WSTR, ResourceUuid: *mut ::c_void,
+ SessionId: *mut ::c_void, Interface: *mut ::c_void, Reserved: *mut ::c_void, Flags: ::c_ulong,
+ NewServerName: *mut RPC_WSTR, NewServerPort: *mut RPC_WSTR,
+) -> ::RPC_STATUS>;
+pub type RPC_HTTP_PROXY_FREE_STRING = Option<unsafe extern "system" fn(String: RPC_WSTR)>;
+pub const RPC_C_AUTHZ_NONE: ::DWORD = 0;
+pub const RPC_C_AUTHZ_NAME: ::DWORD = 1;
+pub const RPC_C_AUTHZ_DCE: ::DWORD = 2;
+pub const RPC_C_AUTHZ_DEFAULT: ::DWORD = 0xffffffff;
+pub type RPC_AUTH_KEY_RETRIEVAL_FN = Option<unsafe extern "system" fn(
+ Arg: *mut ::c_void, ServerPrincName: RPC_WSTR, KeyVer: ::c_ulong, Key: *mut *mut ::c_void,
+ Status: *mut ::RPC_STATUS,
+)>;
+STRUCT!{struct RPC_CLIENT_INFORMATION1 {
+ UserName: *mut ::c_uchar,
+ ComputerName: *mut ::c_uchar,
+ Privilege: ::c_ushort,
+ AuthFlags: ::c_ulong,
+}}
+pub type PRPC_CLIENT_INFORMATION1 = *mut RPC_CLIENT_INFORMATION1;
+pub type RPC_EP_INQ_HANDLE = *mut ::I_RPC_HANDLE;
+pub const RPC_C_EP_ALL_ELTS: ::c_ulong = 0;
+pub const RPC_C_EP_MATCH_BY_IF: ::c_ulong = 1;
+pub const RPC_C_EP_MATCH_BY_OBJ: ::c_ulong = 2;
+pub const RPC_C_EP_MATCH_BY_BOTH: ::c_ulong = 3;
+pub const RPC_C_VERS_ALL: ::c_ulong = 1;
+pub const RPC_C_VERS_COMPATIBLE: ::c_ulong = 2;
+pub const RPC_C_VERS_EXACT: ::c_ulong = 3;
+pub const RPC_C_VERS_MAJOR_ONLY: ::c_ulong = 4;
+pub const RPC_C_VERS_UPTO: ::c_ulong = 5;
+pub type RPC_MGMT_AUTHORIZATION_FN = Option<unsafe extern "system" fn(
+ ClientBinding: RPC_BINDING_HANDLE, RequestedMgmtOperation: ::c_ulong,
+ Status: *mut ::RPC_STATUS,
+) -> ::c_int>;
+pub const RPC_C_MGMT_INQ_IF_IDS: ::c_ulong = 0;
+pub const RPC_C_MGMT_INQ_PRINC_NAME: ::c_ulong = 1;
+pub const RPC_C_MGMT_INQ_STATS: ::c_ulong = 2;
+pub const RPC_C_MGMT_IS_SERVER_LISTEN: ::c_ulong = 3;
+pub const RPC_C_MGMT_STOP_SERVER_LISTEN: ::c_ulong = 4;
+pub const RPC_IF_AUTOLISTEN: ::c_uint = 0x0001;
+pub const RPC_IF_OLE: ::c_uint = 0x0002;
+pub const RPC_IF_ALLOW_UNKNOWN_AUTHORITY: ::c_uint = 0x0004;
+pub const RPC_IF_ALLOW_SECURE_ONLY: ::c_uint = 0x0008;
+pub const RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH: ::c_uint = 0x0010;
+pub const RPC_IF_ALLOW_LOCAL_ONLY: ::c_uint = 0x0020;
+pub const RPC_IF_SEC_NO_CACHE: ::c_uint = 0x0040;
+pub const RPC_IF_SEC_CACHE_PER_PROC: ::c_uint = 0x0080;
+pub const RPC_IF_ASYNC_CALLBACK: ::c_uint = 0x0100;
+pub const RPC_FW_IF_FLAG_DCOM: ::c_uint = 0x0001;
+pub type RPC_INTERFACE_GROUP = *mut ::c_void;
+pub type PRPC_INTERFACE_GROUP = *mut *mut ::c_void;
+STRUCT!{struct RPC_ENDPOINT_TEMPLATEW {
+ Version: ::c_ulong,
+ ProtSeq: RPC_WSTR,
+ Endpoint: RPC_WSTR,
+ SecurityDescriptor: *mut ::c_void,
+ Backlog: ::c_ulong,
+}}
+pub type PRPC_ENDPOINT_TEMPLATEW = *mut RPC_ENDPOINT_TEMPLATEW;
+STRUCT!{struct RPC_ENDPOINT_TEMPLATEA {
+ Version: ::c_ulong,
+ ProtSeq: RPC_CSTR,
+ Endpoint: RPC_CSTR,
+ SecurityDescriptor: *mut ::c_void,
+ Backlog: ::c_ulong,
+}}
+pub type PRPC_ENDPOINT_TEMPLATEA = *mut RPC_ENDPOINT_TEMPLATEA;
+STRUCT!{struct RPC_INTERFACE_TEMPLATEA {
+ Version: ::c_ulong,
+ IfSpec: RPC_IF_HANDLE,
+ MgrTypeUuid: *mut UUID,
+ MgrEpv: *mut RPC_MGR_EPV,
+ Flags: ::c_uint,
+ MaxCalls: ::c_uint,
+ MaxRpcSize: ::c_uint,
+ IfCallback: *mut RPC_IF_CALLBACK_FN,
+ UuidVector: *mut UUID_VECTOR,
+ Annotation: RPC_CSTR,
+ SecurityDescriptor: *mut ::c_void,
+}}
+pub type PRPC_INTERFACE_TEMPLATEA = *mut RPC_INTERFACE_TEMPLATEA;
+STRUCT!{struct RPC_INTERFACE_TEMPLATEW {
+ Version: ::c_ulong,
+ IfSpec: RPC_IF_HANDLE,
+ MgrTypeUuid: *mut UUID,
+ MgrEpv: *mut RPC_MGR_EPV,
+ Flags: ::c_uint,
+ MaxCalls: ::c_uint,
+ MaxRpcSize: ::c_uint,
+ IfCallback: *mut RPC_IF_CALLBACK_FN,
+ UuidVector: *mut UUID_VECTOR,
+ Annotation: RPC_WSTR,
+ SecurityDescriptor: *mut ::c_void,
+}}
+pub type PRPC_INTERFACE_TEMPLATEW = *mut RPC_INTERFACE_TEMPLATEW;
+pub type RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN = Option<unsafe extern "system" fn(
+ IfGroup: RPC_INTERFACE_GROUP, IdleCallbackContext: *mut ::c_void, IsGroupIdle: ::c_ulong,
+)>;
diff --git a/third_party/rust/winapi-0.2.8/src/sapi.rs b/third_party/rust/winapi-0.2.8/src/sapi.rs
new file mode 100644
index 0000000000..ac6ca11e7c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/sapi.rs
@@ -0,0 +1,2431 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of sapi.h
+ENUM!{enum SPDATAKEYLOCATION {
+ SPDKL_DefaultLocation = 0,
+ SPDKL_CurrentUser = 1,
+ SPDKL_LocalMachine = 2,
+ SPDKL_CurrentConfig = 5,
+}}
+pub const SPDUI_EngineProperties: &'static str = "EngineProperties";
+pub const SPDUI_AddRemoveWord: &'static str = "AddRemoveWord";
+pub const SPDUI_UserTraining: &'static str = "UserTraining";
+pub const SPDUI_MicTraining: &'static str = "MicTraining";
+pub const SPDUI_RecoProfileProperties: &'static str = "RecoProfileProperties";
+pub const SPDUI_AudioProperties: &'static str = "AudioProperties";
+pub const SPDUI_AudioVolume: &'static str = "AudioVolume";
+pub const SPDUI_UserEnrollment: &'static str = "UserEnrollment";
+pub const SPDUI_ShareData: &'static str = "ShareData";
+pub const SPDUI_Tutorial: &'static str = "Tutorial";
+ENUM!{enum SPSTREAMFORMAT {
+ SPSF_Default = -1i32 as u32,
+ SPSF_NoAssignedFormat = 0,
+ SPSF_Text = 1,
+ SPSF_NonStandardFormat = 2,
+ SPSF_ExtendedAudioFormat = 3,
+ SPSF_8kHz8BitMono = 4,
+ SPSF_8kHz8BitStereo = 5,
+ SPSF_8kHz16BitMono = 6,
+ SPSF_8kHz16BitStereo = 7,
+ SPSF_11kHz8BitMono = 8,
+ SPSF_11kHz8BitStereo = 9,
+ SPSF_11kHz16BitMono = 10,
+ SPSF_11kHz16BitStereo = 11,
+ SPSF_12kHz8BitMono = 12,
+ SPSF_12kHz8BitStereo = 13,
+ SPSF_12kHz16BitMono = 14,
+ SPSF_12kHz16BitStereo = 15,
+ SPSF_16kHz8BitMono = 16,
+ SPSF_16kHz8BitStereo = 17,
+ SPSF_16kHz16BitMono = 18,
+ SPSF_16kHz16BitStereo = 19,
+ SPSF_22kHz8BitMono = 20,
+ SPSF_22kHz8BitStereo = 21,
+ SPSF_22kHz16BitMono = 22,
+ SPSF_22kHz16BitStereo = 23,
+ SPSF_24kHz8BitMono = 24,
+ SPSF_24kHz8BitStereo = 25,
+ SPSF_24kHz16BitMono = 26,
+ SPSF_24kHz16BitStereo = 27,
+ SPSF_32kHz8BitMono = 28,
+ SPSF_32kHz8BitStereo = 29,
+ SPSF_32kHz16BitMono = 30,
+ SPSF_32kHz16BitStereo = 31,
+ SPSF_44kHz8BitMono = 32,
+ SPSF_44kHz8BitStereo = 33,
+ SPSF_44kHz16BitMono = 34,
+ SPSF_44kHz16BitStereo = 35,
+ SPSF_48kHz8BitMono = 36,
+ SPSF_48kHz8BitStereo = 37,
+ SPSF_48kHz16BitMono = 38,
+ SPSF_48kHz16BitStereo = 39,
+ SPSF_TrueSpeech_8kHz1BitMono = 40,
+ SPSF_CCITT_ALaw_8kHzMono = 41,
+ SPSF_CCITT_ALaw_8kHzStereo = 42,
+ SPSF_CCITT_ALaw_11kHzMono = 43,
+ SPSF_CCITT_ALaw_11kHzStereo = 44,
+ SPSF_CCITT_ALaw_22kHzMono = 45,
+ SPSF_CCITT_ALaw_22kHzStereo = 46,
+ SPSF_CCITT_ALaw_44kHzMono = 47,
+ SPSF_CCITT_ALaw_44kHzStereo = 48,
+ SPSF_CCITT_uLaw_8kHzMono = 49,
+ SPSF_CCITT_uLaw_8kHzStereo = 50,
+ SPSF_CCITT_uLaw_11kHzMono = 51,
+ SPSF_CCITT_uLaw_11kHzStereo = 52,
+ SPSF_CCITT_uLaw_22kHzMono = 53,
+ SPSF_CCITT_uLaw_22kHzStereo = 54,
+ SPSF_CCITT_uLaw_44kHzMono = 55,
+ SPSF_CCITT_uLaw_44kHzStereo = 56,
+ SPSF_ADPCM_8kHzMono = 57,
+ SPSF_ADPCM_8kHzStereo = 58,
+ SPSF_ADPCM_11kHzMono = 59,
+ SPSF_ADPCM_11kHzStereo = 60,
+ SPSF_ADPCM_22kHzMono = 61,
+ SPSF_ADPCM_22kHzStereo = 62,
+ SPSF_ADPCM_44kHzMono = 63,
+ SPSF_ADPCM_44kHzStereo = 64,
+ SPSF_GSM610_8kHzMono = 65,
+ SPSF_GSM610_11kHzMono = 66,
+ SPSF_GSM610_22kHzMono = 67,
+ SPSF_GSM610_44kHzMono = 68,
+ SPSF_NUM_FORMATS = 69,
+}}
+pub const SPREG_USER_ROOT: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech";
+pub const SPREG_LOCAL_MACHINE_ROOT: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech";
+pub const SPCAT_AUDIOOUT: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput";
+pub const SPCAT_AUDIOIN: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioInput";
+pub const SPCAT_VOICES: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices";
+pub const SPCAT_RECOGNIZERS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Recognizers";
+pub const SPCAT_APPLEXICONS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AppLexicons";
+pub const SPCAT_PHONECONVERTERS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\PhoneConverters";
+pub const SPCAT_TEXTNORMALIZERS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\TextNormalizers";
+pub const SPCAT_RECOPROFILES: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\RecoProfiles";
+pub const SPMMSYS_AUDIO_IN_TOKEN_ID: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioInput\\TokenEnums\\MMAudioIn\\";
+pub const SPMMSYS_AUDIO_OUT_TOKEN_ID: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\AudioOutput\\TokenEnums\\MMAudioOut\\";
+pub const SPCURRENT_USER_LEXICON_TOKEN_ID: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\CurrentUserLexicon";
+pub const SPCURRENT_USER_SHORTCUT_TOKEN_ID: &'static str = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\CurrentUserShortcut";
+pub const SPTOKENVALUE_CLSID: &'static str = "CLSID";
+pub const SPTOKENKEY_FILES: &'static str = "Files";
+pub const SPTOKENKEY_UI: &'static str = "UI";
+pub const SPTOKENKEY_ATTRIBUTES: &'static str = "Attributes";
+pub const SPTOKENKEY_RETAINEDAUDIO: &'static str = "SecondsPerRetainedAudioEvent";
+pub const SPTOKENKEY_AUDIO_LATENCY_WARNING: &'static str = "LatencyWarningThreshold";
+pub const SPTOKENKEY_AUDIO_LATENCY_TRUNCATE: &'static str = "LatencyTruncateThreshold";
+pub const SPTOKENKEY_AUDIO_LATENCY_UPDATE_INTERVAL: &'static str = "LatencyUpdateInterval";
+pub const SPVOICECATEGORY_TTSRATE: &'static str = "DefaultTTSRate";
+pub const SPPROP_RESOURCE_USAGE: &'static str = "ResourceUsage";
+pub const SPPROP_HIGH_CONFIDENCE_THRESHOLD: &'static str = "HighConfidenceThreshold";
+pub const SPPROP_NORMAL_CONFIDENCE_THRESHOLD: &'static str = "NormalConfidenceThreshold";
+pub const SPPROP_LOW_CONFIDENCE_THRESHOLD: &'static str = "LowConfidenceThreshold";
+pub const SPPROP_RESPONSE_SPEED: &'static str = "ResponseSpeed";
+pub const SPPROP_COMPLEX_RESPONSE_SPEED: &'static str = "ComplexResponseSpeed";
+pub const SPPROP_ADAPTATION_ON: &'static str = "AdaptationOn";
+pub const SPPROP_PERSISTED_BACKGROUND_ADAPTATION: &'static str = "PersistedBackgroundAdaptation";
+pub const SPPROP_PERSISTED_LANGUAGE_MODEL_ADAPTATION: &'static str = "PersistedLanguageModelAdaptation";
+pub const SPPROP_UX_IS_LISTENING: &'static str = "UXIsListening";
+pub const SPTOPIC_SPELLING: &'static str = "Spelling";
+pub const SPWILDCARD: &'static str = "...";
+pub const SPDICTATION: &'static str = "*";
+pub const SPINFDICTATION: &'static str = "*+";
+pub const SPREG_SAFE_USER_TOKENS: &'static str = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\UserTokens";
+pub const SP_LOW_CONFIDENCE: i32 = -1;
+pub const SP_NORMAL_CONFIDENCE: i32 = 0;
+pub const SP_HIGH_CONFIDENCE: i32 = 1;
+pub const DEFAULT_WEIGHT: i32 = 1;
+pub const SP_MAX_WORD_LENGTH: i32 = 128;
+pub const SP_MAX_PRON_LENGTH: i32 = 384;
+pub const SP_EMULATE_RESULT: i32 = 0x40000000;
+RIDL!(
+interface ISpNotifyCallback(ISpNotifyCallbackVtbl) {
+ fn NotifyCallback(&mut self, wParam: ::WPARAM, lParam: ::LPARAM) -> ::HRESULT
+}
+);
+pub type SPNOTIFYCALLBACK = unsafe extern "system" fn(wParam: ::WPARAM, lParam: ::LPARAM);
+RIDL!(
+interface ISpNotifySource(ISpNotifySourceVtbl): IUnknown(IUnknownVtbl) {
+ fn SetNotifySink(&mut self, pNotifySink: *mut ISpNotifySink) -> ::HRESULT,
+ fn SetNotifyWindowMessage(
+ &mut self, hWnd: ::HWND, Msg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM
+ ) -> ::HRESULT,
+ fn SetNotifyCallbackFunction(
+ &mut self, pfnCallback: SPNOTIFYCALLBACK, wParam: ::WPARAM, lParam: ::LPARAM
+ ) -> ::HRESULT,
+ fn SetNotifyCallbackInterface(
+ &mut self, pSpCallback: *mut ISpNotifyCallback, wParam: ::WPARAM, lParam: ::LPARAM
+ ) -> ::HRESULT,
+ fn SetNotifyWin32Event(&mut self) -> ::HRESULT,
+ fn WaitForNotifyEvent(&mut self, dwMilliseconds: ::DWORD) -> ::HRESULT,
+ fn GetNotifyEventHandle(&mut self) -> ::HANDLE
+}
+);
+RIDL!(
+interface ISpNotifySink(ISpNotifySinkVtbl): IUnknown(IUnknownVtbl) {
+ fn Notify(&mut self) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpNotifyTranslator(ISpNotifyTranslatorVtbl): ISpNotifySink(ISpNotifySinkVtbl) {
+ fn InitWindowMessage(
+ &mut self, hWnd: ::HWND, Msg: ::UINT, wParam: ::WPARAM, lParam: ::LPARAM
+ ) -> ::HRESULT,
+ fn InitCallback(
+ &mut self, pfnCallback: SPNOTIFYCALLBACK, wParam: ::WPARAM, lParam: ::LPARAM
+ ) -> ::HRESULT,
+ fn InitSpNotifyCallback(
+ &mut self, pSpCallback: *mut ISpNotifyCallback, wParam: ::WPARAM, lParam: ::LPARAM
+ ) -> ::HRESULT,
+ fn InitWin32Event(&mut self, hEvent: ::HANDLE, fCloseHandleOnRelease: ::BOOL) -> ::HRESULT,
+ fn Wait(&mut self, dwMilliseconds: ::DWORD) -> ::HRESULT,
+ fn GetEventHandle(&mut self) -> ::HANDLE
+}
+);
+RIDL!(
+interface ISpDataKey(ISpDataKeyVtbl): IUnknown(IUnknownVtbl) {
+ fn SetData(
+ &mut self, pszValueName: ::LPCWSTR, cbData: ::ULONG, pData: *const ::BYTE
+ ) -> ::HRESULT,
+ fn GetData(
+ &mut self, pszValueName: ::LPCWSTR, pcbData: *mut ::ULONG, pData: *mut ::BYTE
+ ) -> ::HRESULT,
+ fn SetStringValue(&mut self, pszValueName: ::LPCWSTR, pszValue: ::LPCWSTR) -> ::HRESULT,
+ fn GetStringValue(&mut self, pszValueName: ::LPCWSTR, ppszValue: *mut ::LPWSTR) -> ::HRESULT,
+ fn SetDWORD(&mut self, pszValueName: ::LPCWSTR, dwValue: ::DWORD) -> ::HRESULT,
+ fn GetDWORD(&mut self, pszValueName: ::LPCWSTR, pdwValue: *mut ::DWORD) -> ::HRESULT,
+ fn OpenKey(&mut self, pszSubKeyName: ::LPCWSTR, ppSubKey: *mut *mut ISpDataKey) -> ::HRESULT,
+ fn CreateKey(&mut self, pszSubKey: ::LPCWSTR, ppSubKey: *mut *mut ISpDataKey) -> ::HRESULT,
+ fn DeleteKey(&mut self, pszSubKey: ::LPCWSTR) -> ::HRESULT,
+ fn DeleteValue(&mut self, pszValueName: ::LPCWSTR) -> ::HRESULT,
+ fn EnumKeys(&mut self, Index: ::ULONG, ppszSubKeyName: *mut ::LPWSTR) -> ::HRESULT,
+ fn EnumValues(&mut self, Index: ::ULONG, ppszValueName: *mut ::LPWSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpRegDataKey(ISpRegDataKeyVtbl): ISpDataKey(ISpDataKeyVtbl) {
+ fn SetKey(&mut self, hkey: ::HKEY, fReadOnly: ::BOOL) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpObjectTokenCategory(ISpObjectTokenCategoryVtbl): ISpDataKey(ISpDataKeyVtbl) {
+ fn SetId(&mut self, pszCategoryId: ::LPCWSTR, fCreateIfNotExist: ::BOOL) -> ::HRESULT,
+ fn GetId(&mut self, ppszCoMemCategoryId: *mut ::LPWSTR) -> ::HRESULT,
+ fn GetDataKey(
+ &mut self, spdkl: SPDATAKEYLOCATION, pppDataKey: *mut *mut ISpDataKey
+ ) -> ::HRESULT,
+ fn EnumTokens(
+ &mut self, pzsReqAttribs: ::LPCWSTR, pszOptAttribs: ::LPCWSTR,
+ ppEnum: *mut *mut IEnumSpObjectTokens
+ ) -> ::HRESULT,
+ fn SetDefaultTokenId(&mut self, pszTokenId: ::LPCWSTR) -> ::HRESULT,
+ fn GetDefaultTokenId(&mut self, ppszCoMemTokenId: *mut ::LPWSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpObjectToken(ISpObjectTokenVtbl): ISpDataKey(ISpDataKeyVtbl) {
+ fn SetId(
+ &mut self, pszCategoryId: ::LPCWSTR, pszTokenId: ::LPCWSTR, fCreateIfNotExist: ::BOOL
+ ) -> ::HRESULT,
+ fn GetId(&mut self, ppszCoMemTokenId: *mut ::LPWSTR) -> ::HRESULT,
+ fn GetCategory(&mut self, ppTokenCategory: *mut *mut ISpObjectTokenCategory) -> ::HRESULT,
+ fn CreateInstance(
+ &mut self, pUnkOuter: *mut ::IUnknown, dwClsContext: ::DWORD, riid: ::REFIID,
+ ppvObject: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetStorageFileName(
+ &mut self, clsidCaller: ::REFCLSID, pszValueName: ::LPCWSTR,
+ pszFileNameSpecifier: ::LPCWSTR, nFolder: ::ULONG, ppszFilePath: *mut ::LPWSTR
+ ) -> ::HRESULT,
+ fn RemoveStorageFileName(&mut self, pszKeyName: ::LPCWSTR, fDeleteFile: ::BOOL) -> ::HRESULT,
+ fn Remove(&mut self, pclsidCaller: *const ::CLSID) -> ::HRESULT,
+ fn IsUISupported(
+ &mut self, pszTypeOfUI: ::LPCWSTR, pvExtraData: *mut ::c_void, cbExtraData: ::ULONG,
+ punkObject: *mut ::IUnknown, pfSupported: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn DisplayUI(
+ &mut self, hwndParent: ::HWND, pszTitle: ::LPCWSTR, pszTypeOfUI: ::LPCWSTR,
+ pvExtraData: *mut ::c_void, cbExtraData: ::ULONG, punkObject: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn MatchesAttributes(&mut self, pszAttributes: ::LPCWSTR, pfMatches: *mut ::BOOL) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpObjectTokenInit(ISpObjectTokenInitVtbl): ISpObjectToken(ISpObjectTokenVtbl) {
+ fn InitFromDataKey(
+ &mut self, pszCategoryId: ::LPCWSTR, pszTokenId: ::LPCWSTR, pDataKey: *mut ISpDataKey
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IEnumSpObjectTokens(IEnumSpObjectTokensVtbl): IUnknown(IUnknownVtbl) {
+ fn Next(
+ &mut self, celt: ::ULONG, pelt: *mut *mut ISpObjectToken, pceltFetched: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn Skip(&mut self, celt: ::ULONG) -> ::HRESULT,
+ fn Reset(&mut self) -> ::HRESULT,
+ fn Clone(&mut self, ppEnum: *mut *mut IEnumSpObjectTokens) -> ::HRESULT,
+ fn Item(&mut self, Index: ::ULONG, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT,
+ fn GetCount(&mut self, pCount: *mut ::ULONG) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpObjectWithToken(ISpObjectWithTokenVtbl): IUnknown(IUnknownVtbl) {
+ fn SetObjectToken(&mut self, pToken: *mut ISpObjectToken) -> ::HRESULT,
+ fn GetObjectToken(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpResourceManager(ISpResourceManagerVtbl): IServiceProvider(IServiceProviderVtbl) {
+ fn SetObject(&mut self, guidServiceId: ::REFGUID, pUnkObject: *mut ::IUnknown) -> ::HRESULT,
+ fn GetObject(
+ &mut self, guidServiceId: ::REFGUID, ObjectCLSID: ::REFCLSID, ObjectIID: ::REFIID,
+ fReleaseWhenLastExternalRefReleased: ::BOOL, ppObject: *mut *mut ::c_void
+ ) -> ::HRESULT
+}
+);
+ENUM!{enum SPEVENTLPARAMTYPE {
+ SPET_LPARAM_IS_UNDEFINED = 0,
+ SPET_LPARAM_IS_TOKEN,
+ SPET_LPARAM_IS_OBJECT,
+ SPET_LPARAM_IS_POINTER,
+ SPET_LPARAM_IS_STRING,
+}}
+ENUM!{enum SPEVENTENUM {
+ SPEI_UNDEFINED = 0,
+ SPEI_START_INPUT_STREAM = 1,
+ SPEI_END_INPUT_STREAM = 2,
+ SPEI_VOICE_CHANGE = 3,
+ SPEI_TTS_BOOKMARK = 4,
+ SPEI_WORD_BOUNDARY = 5,
+ SPEI_PHONEME = 6,
+ SPEI_SENTENCE_BOUNDARY = 7,
+ SPEI_VISEME = 8,
+ SPEI_TTS_AUDIO_LEVEL = 9,
+ SPEI_TTS_PRIVATE = 15,
+ SPEI_END_SR_STREAM = 34,
+ SPEI_SOUND_START = 35,
+ SPEI_SOUND_END = 36,
+ SPEI_PHRASE_START = 37,
+ SPEI_RECOGNITION = 38,
+ SPEI_HYPOTHESIS = 39,
+ SPEI_SR_BOOKMARK = 40,
+ SPEI_PROPERTY_NUM_CHANGE = 41,
+ SPEI_PROPERTY_STRING_CHANGE = 42,
+ SPEI_FALSE_RECOGNITION = 43,
+ SPEI_INTERFERENCE = 44,
+ SPEI_REQUEST_UI = 45,
+ SPEI_RECO_STATE_CHANGE = 46,
+ SPEI_ADAPTATION = 47,
+ SPEI_START_SR_STREAM = 48,
+ SPEI_RECO_OTHER_CONTEXT = 49,
+ SPEI_SR_AUDIO_LEVEL = 50,
+ SPEI_SR_RETAINEDAUDIO = 51,
+ SPEI_SR_PRIVATE = 52,
+ SPEI_ACTIVE_CATEGORY_CHANGED = 53,
+ SPEI_RESERVED5 = 54,
+ SPEI_RESERVED6 = 55,
+ SPEI_RESERVED1 = 30,
+ SPEI_RESERVED2 = 33,
+ SPEI_RESERVED3 = 63,
+}}
+pub const SPEI_MIN_TTS: SPEVENTENUM = SPEI_START_INPUT_STREAM;
+pub const SPEI_MAX_TTS: SPEVENTENUM = SPEI_TTS_PRIVATE;
+pub const SPEI_MIN_SR: SPEVENTENUM = SPEI_END_SR_STREAM;
+pub const SPEI_MAX_SR: SPEVENTENUM = SPEI_RESERVED6;
+pub const SPFEI_FLAGCHECK: u64 = (1 << SPEI_RESERVED1.0 as u64) | (1 << SPEI_RESERVED2.0 as u64);
+pub const SPFEI_ALL_TTS_EVENTS: u64 = 0x000000000000FFFE | SPFEI_FLAGCHECK;
+pub const SPFEI_ALL_SR_EVENTS: u64 = 0x003FFFFC00000000 | SPFEI_FLAGCHECK;
+pub const SPFEI_ALL_EVENTS: u64 = 0xEFFFFFFFFFFFFFFF;
+#[inline]
+pub fn SPFEI(SPEI_ord: u64) -> u64 {
+ (1 << SPEI_ord) | SPFEI_FLAGCHECK
+}
+STRUCT!{struct SPEVENT {
+ eEventId: ::WORD,
+ elParamType: ::WORD,
+ ulStreamNum: ::ULONG,
+ ullAudioStreamOffset: ::ULONGLONG,
+ wParam: ::WPARAM,
+ lParam: ::LPARAM,
+}}
+STRUCT!{struct SPSERIALIZEDEVENT {
+ eEventId: ::WORD,
+ elParamType: ::WORD,
+ ulStreamNum: ::ULONG,
+ ullAudioStreamOffset: ::ULONGLONG,
+ SerializedwParam: ::ULONG,
+ SerializedlParam: ::LONG,
+}}
+STRUCT!{struct SPSERIALIZEDEVENT64 {
+ eEventId: ::WORD,
+ elParamType: ::WORD,
+ ulStreamNum: ::ULONG,
+ ullAudioStreamOffset: ::ULONGLONG,
+ SerializedwParam: ::ULONGLONG,
+ SerializedlParam: ::LONGLONG,
+}}
+STRUCT!{struct SPEVENTEX {
+ eEventId: ::WORD,
+ elParamType: ::WORD,
+ ulStreamNum: ::ULONG,
+ ullAudioStreamOffset: ::ULONGLONG,
+ wParam: ::WPARAM,
+ lParam: ::LPARAM,
+ ullAudioTimeOffset: ::ULONGLONG,
+}}
+ENUM!{enum SPINTERFERENCE {
+ SPINTERFERENCE_NONE = 0,
+ SPINTERFERENCE_NOISE = 1,
+ SPINTERFERENCE_NOSIGNAL = 2,
+ SPINTERFERENCE_TOOLOUD = 3,
+ SPINTERFERENCE_TOOQUIET = 4,
+ SPINTERFERENCE_TOOFAST = 5,
+ SPINTERFERENCE_TOOSLOW = 6,
+ SPINTERFERENCE_LATENCY_WARNING = 7,
+ SPINTERFERENCE_LATENCY_TRUNCATE_BEGIN = 8,
+ SPINTERFERENCE_LATENCY_TRUNCATE_END = 9,
+}}
+FLAGS!{enum SPENDSRSTREAMFLAGS {
+ SPESF_NONE = 0,
+ SPESF_STREAM_RELEASED = 1 << 0,
+ SPESF_EMULATED = 1 << 1,
+}}
+FLAGS!{enum SPVFEATURE {
+ SPVFEATURE_STRESSED = 1 << 0,
+ SPVFEATURE_EMPHASIS = 1 << 1,
+}}
+ENUM!{enum SPVISEMES {
+ SP_VISEME_0 = 0,
+ SP_VISEME_1,
+ SP_VISEME_2,
+ SP_VISEME_3,
+ SP_VISEME_4,
+ SP_VISEME_5,
+ SP_VISEME_6,
+ SP_VISEME_7,
+ SP_VISEME_8,
+ SP_VISEME_9,
+ SP_VISEME_10,
+ SP_VISEME_11,
+ SP_VISEME_12,
+ SP_VISEME_13,
+ SP_VISEME_14,
+ SP_VISEME_15,
+ SP_VISEME_16,
+ SP_VISEME_17,
+ SP_VISEME_18,
+ SP_VISEME_19,
+ SP_VISEME_20,
+ SP_VISEME_21,
+}}
+STRUCT!{struct SPEVENTSOURCEINFO {
+ ullEventInterest: ::ULONGLONG,
+ ullQueuedInterest: ::ULONGLONG,
+ ulCount: ::ULONG,
+}}
+RIDL!(
+interface ISpEventSource(ISpEventSourceVtbl): ISpNotifySource(ISpNotifySourceVtbl) {
+ fn SetInterest(
+ &mut self, ullEventInterest: ::ULONGLONG, ullQueuedInterest: ::ULONGLONG
+ ) -> ::HRESULT,
+ fn GetEvents(
+ &mut self, ulCount: ::ULONG, pEventArray: *mut SPEVENT, pulFetched: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn GetInfo(&mut self, pInfo: *mut SPEVENTSOURCEINFO) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpEventSource2(ISpEventSource2Vtbl): ISpEventSource(ISpEventSourceVtbl) {
+ fn GetEventsEx(
+ &mut self, ulCount: ::ULONG, pEventArray: *mut SPEVENTEX, pulFetched: *mut ::ULONG
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpEventSink(ISpEventSinkVtbl): IUnknown(IUnknownVtbl) {
+ fn AddEvents(&mut self, pEventArray: *const SPEVENT, ulCount: ::ULONG) -> ::HRESULT,
+ fn GetEventInterest(&mut self, pullEventInterest: *mut ::ULONGLONG) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpStreamFormat(ISpStreamFormatVtbl): IStream(IStreamVtbl) {
+ fn GetFormat(
+ &mut self, pguidFormatId: *mut ::GUID, ppCoMemWaveFormatEx: *mut *mut ::WAVEFORMATEX
+ ) -> ::HRESULT
+}
+);
+ENUM!{enum SPFILEMODE {
+ SPFM_OPEN_READONLY = 0,
+ SPFM_OPEN_READWRITE = 1,
+ SPFM_CREATE = 2,
+ SPFM_CREATE_ALWAYS = 3,
+ SPFM_NUM_MODES = 4,
+}}
+RIDL!(
+interface ISpStream(ISpStreamVtbl): ISpStreamFormat(ISpStreamFormatVtbl) {
+ fn SetBaseStream(
+ &mut self, pStream: *mut ::IStream, rguidFormat: ::REFGUID,
+ pWaveFormatEx: *const ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn GetBaseStream(&mut self, ppStream: *mut *mut ::IStream) -> ::HRESULT,
+ fn BindToFile(
+ &mut self, pszFileName: ::LPCWSTR, eMode: SPFILEMODE, pFormatId: *const ::GUID,
+ pWaveFormatEx: *const ::WAVEFORMATEX, ullEventInterest: ::ULONGLONG
+ ) -> ::HRESULT,
+ fn Close(&mut self) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpStreamFormatConverter(ISpStreamFormatConverterVtbl)
+ : ISpStreamFormat(ISpStreamFormatVtbl) {
+ fn SetBaseStream(
+ &mut self, pStream: *mut ISpStreamFormat, fSetFormatToBaseStreamFormat: ::BOOL,
+ fWriteToBaseStream: ::BOOL
+ ) -> ::HRESULT,
+ fn GetBaseStream(&mut self, ppStream: *mut *mut ISpStreamFormat) -> ::HRESULT,
+ fn SetFormat(
+ &mut self, rguidFormatIdOfConvertedStream: ::REFGUID,
+ pWaveFormatExOfConvertedStream: *const ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn ResetSeekPosition(&mut self) -> ::HRESULT,
+ fn ScaleConvertedToBaseOffset(
+ &mut self, ullOffsetConvertedStream: ::ULONGLONG, pullOffsetBaseStream: *mut ::ULONGLONG
+ ) -> ::HRESULT,
+ fn ScaleBaseToConvertedOffset(
+ &mut self, ullOffsetBaseStream: ::ULONGLONG, pullOffsetConvertedStream: *mut ::ULONGLONG
+ ) -> ::HRESULT
+}
+);
+ENUM!{enum SPAUDIOSTATE {
+ SPAS_CLOSED = 0,
+ SPAS_STOP = 1,
+ SPAS_PAUSE = 2,
+ SPAS_RUN = 3,
+}}
+STRUCT!{struct SPAUDIOSTATUS {
+ cbFreeBuffSpace: ::LONG,
+ cbNonBlockingIO: ::ULONG,
+ State: SPAUDIOSTATE,
+ CurSeekPos: ::ULONGLONG,
+ CurDevicePos: ::ULONGLONG,
+ dwAudioLevel: ::DWORD,
+ dwReserved2: ::DWORD,
+}}
+STRUCT!{struct SPAUDIOBUFFERINFO {
+ ulMsMinNotification: ::ULONG,
+ ulMsBufferSize: ::ULONG,
+ ulMsEventBias: ::ULONG,
+}}
+RIDL!(
+interface ISpAudio(ISpAudioVtbl): ISpStreamFormat(ISpStreamFormatVtbl) {
+ fn SetState(&mut self, NewState: SPAUDIOSTATE, ullReserved: ::ULONGLONG) -> ::HRESULT,
+ fn SetFormat(
+ &mut self, rguidFmtId: ::REFGUID, pWaveFormatEx: *const ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn GetStatus(&mut self, pStatus: *mut SPAUDIOSTATUS) -> ::HRESULT,
+ fn SetBufferInfo(&mut self, pBuffInfo: *const SPAUDIOBUFFERINFO) -> ::HRESULT,
+ fn GetBufferInfo(&mut self, pBuffInfo: *mut SPAUDIOBUFFERINFO) -> ::HRESULT,
+ fn GetDefaultFormat(
+ &mut self, pFormatId: *mut ::GUID, ppCoMemWaveFormatEx: *mut *mut ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn EventHandle(&mut self) -> ::HANDLE,
+ fn GetVolumeLevel(&mut self, pLevel: *mut ::ULONG) -> ::HRESULT,
+ fn SetVolumeLevel(&mut self, Level: ::ULONG) -> ::HRESULT,
+ fn GetBufferNotifySize(&mut self, pcbSize: *mut ::ULONG) -> ::HRESULT,
+ fn SetBufferNotifySize(&mut self, cbSize: ::ULONG) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpMMSysAudio(ISpMMSysAudioVtbl): ISpAudio(ISpAudioVtbl) {
+ fn GetDeviceId(&mut self, puDeviceId: *mut ::UINT) -> ::HRESULT,
+ fn SetDeviceId(&mut self, uDeviceId: ::UINT) -> ::HRESULT,
+ fn GetMMHandle(&mut self, pHandle: *mut *mut ::c_void) -> ::HRESULT,
+ fn GetLineId(&mut self, puLineId: *mut ::UINT) -> ::HRESULT,
+ fn SetLineId(&mut self, uLineId: ::UINT) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpTranscript(ISpTranscriptVtbl): IUnknown(IUnknownVtbl) {
+ fn GetTranscript(&mut self, ppszTranscript: *mut ::LPWSTR) -> ::HRESULT,
+ fn AppendTranscript(&mut self, pszTranscript: ::LPCWSTR) -> ::HRESULT
+}
+);
+FLAGS!{enum SPDISPLYATTRIBUTES {
+ SPAF_ONE_TRAILING_SPACE = 0x2,
+ SPAF_TWO_TRAILING_SPACES = 0x4,
+ SPAF_CONSUME_LEADING_SPACES = 0x8,
+ SPAF_BUFFER_POSITION = 0x10,
+ SPAF_ALL = 0x1f,
+ SPAF_USER_SPECIFIED = 0x80,
+}}
+pub type SPPHONEID = ::WCHAR;
+pub type PSPPHONEID = ::LPWSTR;
+pub type PCSPPHONEID = ::LPCWSTR;
+STRUCT!{struct SPPHRASEELEMENT {
+ ulAudioTimeOffset: ::ULONG,
+ ulAudioSizeTime: ::ULONG,
+ ulAudioStreamOffset: ::ULONG,
+ ulAudioSizeBytes: ::ULONG,
+ ulRetainedStreamOffset: ::ULONG,
+ ulRetainedSizeBytes: ::ULONG,
+ pszDisplayText: ::LPCWSTR,
+ pszLexicalForm: ::LPCWSTR,
+ pszPronunciation: *const SPPHONEID,
+ bDisplayAttributes: ::BYTE,
+ RequiredConfidence: ::c_char,
+ ActualConfidence: ::c_char,
+ Reserved: ::BYTE,
+ SREngineConfidence: ::c_float,
+}}
+STRUCT!{struct SPPHRASERULE {
+ pszName: ::LPCWSTR,
+ ulId: ::ULONG,
+ ulFirstElement: ::ULONG,
+ ulCountOfElements: ::ULONG,
+ pNextSibling: *const SPPHRASERULE,
+ pFirstChild: *const SPPHRASERULE,
+ SREngineConfidence: ::c_float,
+ Confidence: ::c_char,
+}}
+ENUM!{enum SPPHRASEPROPERTYUNIONTYPE {
+ SPPPUT_UNUSED = 0,
+ SPPPUT_ARRAY_INDEX,
+}}
+STRUCT!{struct SPPHRASEPROPERTY {
+ pszName: ::LPCWSTR,
+ bType: ::BYTE,
+ bReserved: ::BYTE,
+ usArrayIndex: u16,
+ pszValue: ::LPCWSTR,
+ vValue: ::VARIANT,
+ ulFirstElement: ::ULONG,
+ ulCountOfElements: ::ULONG,
+ pNextSibling: *const SPPHRASEPROPERTY,
+ pFirstChild: *const SPPHRASEPROPERTY,
+ SREngineConfidence: ::c_float,
+ Confidence: ::c_char,
+}}
+UNION!(SPPHRASEPROPERTY, bType, ulId, ulId_mut, ::ULONG);
+STRUCT!{struct SPPHRASEREPLACEMENT {
+ bDisplayAttributes: ::BYTE,
+ pszReplacementText: ::LPCWSTR,
+ ulFirstElement: ::ULONG,
+ ulCountOfElements: ::ULONG,
+}}
+STRUCT!{struct SPSEMANTICERRORINFO {
+ ulLineNumber: ::ULONG,
+ pszScriptLine: ::LPWSTR,
+ pszSource: ::LPWSTR,
+ pszDescription: ::LPWSTR,
+ hrResultCode: ::HRESULT,
+}}
+ENUM!{enum SPSEMANTICFORMAT {
+ SPSMF_SAPI_PROPERTIES = 0,
+ SPSMF_SRGS_SEMANTICINTERPRETATION_MS = 1,
+ SPSMF_SRGS_SAPIPROPERTIES = 2,
+ SPSMF_UPS = 4,
+ SPSMF_SRGS_SEMANTICINTERPRETATION_W3C = 8,
+}}
+STRUCT!{struct SPPHRASE_50 {
+ cbSize: ::ULONG,
+ LangID: ::WORD,
+ wHomophoneGroupId: ::WORD,
+ ullGrammarID: ::ULONGLONG,
+ ftStartTime: ::ULONGLONG,
+ ullAudioStreamPosition: ::ULONGLONG,
+ ulAudioSizeBytes: ::ULONG,
+ ulRetainedSizeBytes: ::ULONG,
+ ulAudioSizeTime: ::ULONG,
+ Rule: ::SPPHRASERULE,
+ pProperties: *const ::SPPHRASEPROPERTY,
+ pElements: *const ::SPPHRASEELEMENT,
+ cReplacements: ::ULONG,
+ pReplacements: *const ::SPPHRASEREPLACEMENT,
+ SREngineID: ::GUID,
+ ulSREnginePrivateDataSize: ::ULONG,
+ pSREnginePrivateData: *const ::BYTE,
+}}
+STRUCT!{struct SPPHRASE_53 {
+ cbSize: ::ULONG,
+ LangID: ::WORD,
+ wHomophoneGroupId: ::WORD,
+ ullGrammarID: ::ULONGLONG,
+ ftStartTime: ::ULONGLONG,
+ ullAudioStreamPosition: ::ULONGLONG,
+ ulAudioSizeBytes: ::ULONG,
+ ulRetainedSizeBytes: ::ULONG,
+ ulAudioSizeTime: ::ULONG,
+ Rule: ::SPPHRASERULE,
+ pProperties: *const ::SPPHRASEPROPERTY,
+ pElements: *const ::SPPHRASEELEMENT,
+ cReplacements: ::ULONG,
+ pReplacements: *const ::SPPHRASEREPLACEMENT,
+ SREngineID: ::GUID,
+ ulSREnginePrivateDataSize: ::ULONG,
+ pSREnginePrivateData: *const ::BYTE,
+ pSML: ::LPWSTR,
+ pSemanticErrorInfo: *mut SPSEMANTICERRORINFO,
+}}
+STRUCT!{struct SPPHRASE {
+ cbSize: ::ULONG,
+ LangID: ::WORD,
+ wHomophoneGroupId: ::WORD,
+ ullGrammarID: ::ULONGLONG,
+ ftStartTime: ::ULONGLONG,
+ ullAudioStreamPosition: ::ULONGLONG,
+ ulAudioSizeBytes: ::ULONG,
+ ulRetainedSizeBytes: ::ULONG,
+ ulAudioSizeTime: ::ULONG,
+ Rule: ::SPPHRASERULE,
+ pProperties: *const ::SPPHRASEPROPERTY,
+ pElements: *const ::SPPHRASEELEMENT,
+ cReplacements: ::ULONG,
+ pReplacements: *const ::SPPHRASEREPLACEMENT,
+ SREngineID: ::GUID,
+ ulSREnginePrivateDataSize: ::ULONG,
+ pSREnginePrivateData: *const ::BYTE,
+ pSML: ::LPWSTR,
+ pSemanticErrorInfo: *mut SPSEMANTICERRORINFO,
+ SemanticTagFormat: SPSEMANTICFORMAT,
+}}
+STRUCT!{struct SPSERIALIZEDPHRASE {
+ ulSerializedSize: ::ULONG,
+}}
+STRUCT!{struct SPRULE {
+ pszRuleName: ::LPCWSTR,
+ ulRuleId: ::ULONG,
+ dwAttributes: ::DWORD,
+}}
+FLAGS!{enum SPVALUETYPE {
+ SPDF_PROPERTY = 0x1,
+ SPDF_REPLACEMENT = 0x2,
+ SPDF_RULE = 0x4,
+ SPDF_DISPLAYTEXT = 0x8,
+ SPDF_LEXICALFORM = 0x10,
+ SPDF_PRONUNCIATION = 0x20,
+ SPDF_AUDIO = 0x40,
+ SPDF_ALTERNATES = 0x80,
+ SPDF_ALL = 0xff,
+}}
+STRUCT!{struct SPBINARYGRAMMAR {
+ ulTotalSerializedSize: ::ULONG,
+}}
+ENUM!{enum SPPHRASERNG {
+ SPPR_ALL_ELEMENTS = -1i32 as u32,
+}}
+pub const SP_GETWHOLEPHRASE: SPPHRASERNG = SPPR_ALL_ELEMENTS;
+pub const SPRR_ALL_ELEMENTS: SPPHRASERNG = SPPR_ALL_ELEMENTS;
+DECLARE_HANDLE!(SPSTATEHANDLE, SPSTATEHANDLE__);
+FLAGS!{enum SPRECOEVENTFLAGS {
+ SPREF_AutoPause = 1 << 0,
+ SPREF_Emulated = 1 << 1,
+ SPREF_SMLTimeout = 1 << 2,
+ SPREF_ExtendableParse = 1 << 3,
+ SPREF_ReSent = 1 << 4,
+ SPREF_Hypothesis = 1 << 5,
+ SPREF_FalseRecognition = 1 << 6,
+}}
+ENUM!{enum SPPARTOFSPEECH {
+ SPPS_NotOverriden = -1i32 as u32,
+ SPPS_Unknown = 0,
+ SPPS_Noun = 0x1000,
+ SPPS_Verb = 0x2000,
+ SPPS_Modifier = 0x3000,
+ SPPS_Function = 0x4000,
+ SPPS_Interjection = 0x5000,
+ SPPS_Noncontent = 0x6000,
+ SPPS_LMA = 0x7000,
+ SPPS_SuppressWord = 0xf000,
+}}
+FLAGS!{enum SPLEXICONTYPE {
+ eLEXTYPE_USER = 1 << 0,
+ eLEXTYPE_APP = 1 << 1,
+ eLEXTYPE_VENDORLEXICON = 1 << 2,
+ eLEXTYPE_LETTERTOSOUND = 1 << 3,
+ eLEXTYPE_MORPHOLOGY = 1 << 4,
+ eLEXTYPE_RESERVED4 = 1 << 5,
+ eLEXTYPE_USER_SHORTCUT = 1 << 6,
+ eLEXTYPE_RESERVED6 = 1 << 7,
+ eLEXTYPE_RESERVED7 = 1 << 8,
+ eLEXTYPE_RESERVED8 = 1 << 9,
+ eLEXTYPE_RESERVED9 = 1 << 10,
+ eLEXTYPE_RESERVED10 = 1 << 11,
+ eLEXTYPE_PRIVATE1 = 1 << 12,
+ eLEXTYPE_PRIVATE2 = 1 << 13,
+ eLEXTYPE_PRIVATE3 = 1 << 14,
+ eLEXTYPE_PRIVATE4 = 1 << 15,
+ eLEXTYPE_PRIVATE5 = 1 << 16,
+ eLEXTYPE_PRIVATE6 = 1 << 17,
+ eLEXTYPE_PRIVATE7 = 1 << 18,
+ eLEXTYPE_PRIVATE8 = 1 << 19,
+ eLEXTYPE_PRIVATE9 = 1 << 20,
+ eLEXTYPE_PRIVATE10 = 1 << 21,
+ eLEXTYPE_PRIVATE11 = 1 << 22,
+ eLEXTYPE_PRIVATE12 = 1 << 23,
+ eLEXTYPE_PRIVATE13 = 1 << 24,
+ eLEXTYPE_PRIVATE14 = 1 << 25,
+ eLEXTYPE_PRIVATE15 = 1 << 26,
+ eLEXTYPE_PRIVATE16 = 1 << 27,
+ eLEXTYPE_PRIVATE17 = 1 << 28,
+ eLEXTYPE_PRIVATE18 = 1 << 29,
+ eLEXTYPE_PRIVATE19 = 1 << 30,
+ eLEXTYPE_PRIVATE20 = 1 << 31,
+}}
+FLAGS!{enum SPWORDTYPE {
+ eWORDTYPE_ADDED = 1 << 0,
+ eWORDTYPE_DELETED = 1 << 1,
+}}
+FLAGS!{enum SPPRONUNCIATIONFLAGS {
+ ePRONFLAG_USED = 1 << 0,
+}}
+STRUCT!{struct SPWORDPRONUNCIATION {
+ pNextWordPronunciation: *mut SPWORDPRONUNCIATION,
+ eLexiconType: SPLEXICONTYPE,
+ LangID: ::WORD,
+ wPronunciationFlags: ::WORD,
+ ePartOfSpeech: SPPARTOFSPEECH,
+ szPronunciation: [SPPHONEID; 1],
+}}
+STRUCT!{struct SPWORDPRONUNCIATIONLIST {
+ ulSize: ::ULONG,
+ pvBuffer: *mut ::BYTE,
+ pFirstWordPronunciation: *mut SPWORDPRONUNCIATION,
+}}
+STRUCT!{struct SPWORD {
+ pNextWord: *mut SPWORD,
+ LangID: ::WORD,
+ wReserved: ::WORD,
+ eWordType: SPWORDTYPE,
+ pszWord: ::LPWSTR,
+ pFirstWordPronunciation: *mut SPWORDPRONUNCIATION,
+}}
+STRUCT!{struct SPWORDLIST {
+ ulSize: ::ULONG,
+ pvBuffer: *mut ::BYTE,
+ pFirstWord: *mut SPWORD,
+}}
+RIDL!(
+interface ISpLexicon(ISpLexiconVtbl): IUnknown(IUnknownVtbl) {
+ fn GetPronunciations(
+ &mut self, pszWord: ::LPCWSTR, LangID: ::WORD, dwFlags: ::DWORD,
+ pWordPronunciationList: *mut SPWORDPRONUNCIATIONLIST
+ ) -> ::HRESULT,
+ fn AddPronunciation(
+ &mut self, pszWord: ::LPCWSTR, LangID: ::WORD, ePartOfSpeech: SPPARTOFSPEECH,
+ pszPronunciation: PCSPPHONEID
+ ) -> ::HRESULT,
+ fn RemovePronunciation(
+ &mut self, pszWord: ::LPCWSTR, LangID: ::WORD, ePartOfSpeech: SPPARTOFSPEECH,
+ pszPronunciation: PCSPPHONEID
+ ) -> ::HRESULT,
+ fn GetGeneration(&mut self, pdwGeneration: *mut ::DWORD) -> ::HRESULT,
+ fn GetGenerationChange(
+ &mut self, dwFlags: ::DWORD, pdwGeneration: *mut ::DWORD, pWordList: *mut SPWORDLIST
+ ) -> ::HRESULT,
+ fn GetWords(
+ &mut self, dwFlags: ::DWORD, pdwGeneration: *mut ::DWORD, pdwCookie: *mut ::DWORD,
+ pWordList: *mut SPWORDLIST
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpContainerLexicon(ISpContainerLexiconVtbl): ISpLexicon(ISpLexiconVtbl) {
+ fn AddLexicon(&mut self, pAddLexicon: *mut ISpLexicon, dwFlags: ::DWORD) -> ::HRESULT
+}
+);
+ENUM!{enum SPSHORTCUTTYPE {
+ SPSHT_NotOverriden = -1i32 as u32,
+ SPSHT_Unknown = 0,
+ SPSHT_EMAIL = 0x1000,
+ SPSHT_OTHER = 0x2000,
+ SPPS_RESERVED1 = 0x3000,
+ SPPS_RESERVED2 = 0x4000,
+ SPPS_RESERVED3 = 0x5000,
+ SPPS_RESERVED4 = 0xf000,
+}}
+STRUCT!{struct SPSHORTCUTPAIR {
+ pNextSHORTCUTPAIR: *mut SPSHORTCUTPAIR,
+ LangID: ::WORD,
+ shType: SPSHORTCUTTYPE,
+ pszDisplay: ::LPWSTR,
+ pszSpoken: ::LPWSTR,
+}}
+STRUCT!{struct SPSHORTCUTPAIRLIST {
+ ulSize: ::ULONG,
+ pvBuffer: *mut ::BYTE,
+ pFirstShortcutPair: *mut SPSHORTCUTPAIR,
+}}
+RIDL!(
+interface ISpShortcut(ISpShortcutVtbl): IUnknown(IUnknownVtbl) {
+ fn AddShortcut(
+ &mut self, pszDisplay: ::LPCWSTR, LangID: ::WORD, pszSpoken: ::LPCWSTR,
+ shType: SPSHORTCUTTYPE
+ ) -> ::HRESULT,
+ fn RemoveShortcut(
+ &mut self, pszDisplay: ::LPCWSTR, LangID: ::WORD, pszSpoken: ::LPCWSTR,
+ shType: SPSHORTCUTTYPE
+ ) -> ::HRESULT,
+ fn GetShortcuts(
+ &mut self, LangId: ::WORD, pShortcutpairList: *mut SPSHORTCUTPAIRLIST
+ ) -> ::HRESULT,
+ fn GetGeneration(&mut self, pdwGeneration: *mut ::DWORD) -> ::HRESULT,
+ fn GetWordsFromGenerationChange(
+ &mut self, pdwGeneration: *mut ::DWORD, pWordList: *mut SPWORDLIST
+ ) -> ::HRESULT,
+ fn GetWords(
+ &mut self, pdwGeneration: *mut ::DWORD, pdwCookie: *mut ::DWORD, pWordList: *mut SPWORDLIST
+ ) -> ::HRESULT,
+ fn GetShortcutsForGeneration(
+ &mut self, pdwGeneration: *mut ::DWORD, pdwCookie: *mut ::DWORD,
+ pShortcutpairList: *mut SPSHORTCUTPAIRLIST
+ ) -> ::HRESULT,
+ fn GetGenerationChange(
+ &mut self, pdwGeneration: *mut ::DWORD, pShortcutpairList: *mut SPSHORTCUTPAIRLIST
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpPhoneConverter(ISpPhoneConverterVtbl): ISpObjectWithToken(ISpObjectWithTokenVtbl) {
+ fn PhoneToId(&mut self, pszPhone: ::LPCWSTR, pId: *mut SPPHONEID) -> ::HRESULT,
+ fn IdToPhone(&mut self, pId: PCSPPHONEID, pszPhone: *mut ::WCHAR) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpPhoneticAlphabetConverter(ISpPhoneticAlphabetConverterVtbl): IUnknown(IUnknownVtbl) {
+ fn GetLangId(&mut self, pLangID: *mut ::WORD) -> ::HRESULT,
+ fn SetLangId(&mut self, LangID: *mut ::WORD) -> ::HRESULT,
+ fn SAPI2UPS(
+ &mut self, pszSAPIId: *const SPPHONEID, pszUPSId: *mut SPPHONEID, cMaxLength: ::DWORD
+ ) -> ::HRESULT,
+ fn UPS2SAPI(
+ &mut self, pszUPSId: *const SPPHONEID, pszSAPIId: *mut SPPHONEID, cMaxLength: ::DWORD
+ ) -> ::HRESULT,
+ fn GetMaxConvertLength(
+ &mut self, cSrcLength: ::DWORD, bSAPI2UPS: ::BOOL, pcMaxDestLength: *mut ::DWORD
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpPhoneticAlphabetSelection(ISpPhoneticAlphabetSelectionVtbl): IUnknown(IUnknownVtbl) {
+ fn IsAlphabetUPS(&mut self, pfIsUPS: *mut ::BOOL) -> ::HRESULT,
+ fn SetAlphabetToUPS(&mut self, fForceUPS: ::BOOL) -> ::HRESULT
+}
+);
+STRUCT!{struct SPVPITCH {
+ MiddleAdj: ::c_long,
+ RangeAdj: ::c_long,
+}}
+ENUM!{enum SPVACTIONS {
+ SPVA_Speak = 0,
+ SPVA_Silence,
+ SPVA_Pronounce,
+ SPVA_Bookmark,
+ SPVA_SpellOut,
+ SPVA_Section,
+ SPVA_ParseUnknownTag,
+}}
+STRUCT!{struct SPVCONTEXT {
+ pCategory: ::LPCWSTR,
+ pBefore: ::LPCWSTR,
+ pAfter: ::LPCWSTR,
+}}
+STRUCT!{struct SPVSTATE {
+ eAction: SPVACTIONS,
+ LangID: ::WORD,
+ wReserved: ::WORD,
+ EmphAdj: ::c_long,
+ RateAdj: ::c_long,
+ Volume: ::ULONG,
+ PitchAdj: SPVPITCH,
+ SilenceMSecs: ::ULONG,
+ pPhoneIds: *mut SPPHONEID,
+ ePartOfSpeech: SPPARTOFSPEECH,
+ Context: SPVCONTEXT,
+}}
+ENUM!{enum SPRUNSTATE {
+ SPRS_DONE = 1 << 0,
+ SPRS_IS_SPEAKING = 1 << 1,
+}}
+ENUM!{enum SPVLIMITS {
+ SPMIN_VOLUME = 0,
+ SPMAX_VOLUME = 100,
+ SPMIN_RATE = -10i32 as u32,
+ SPMAX_RATE = 10,
+}}
+ENUM!{enum SPVPRIORITY {
+ SPVPRI_NORMAL = 0,
+ SPVPRI_ALERT = 1 << 0,
+ SPVPRI_OVER = 1 << 1,
+}}
+STRUCT!{struct SPVOICESTATUS {
+ ulCurrentStream: ::ULONG,
+ ulLastStreamQueued: ::ULONG,
+ hrLastResult: ::HRESULT,
+ dwRunningState: ::DWORD,
+ ulInputWordPos: ::ULONG,
+ ulInputWordLen: ::ULONG,
+ ulInputSentPos: ::ULONG,
+ ulInputSentLen: ::ULONG,
+ lBookmarkId: ::LONG,
+ PhonemeId: SPPHONEID,
+ VisemeId: SPVISEMES,
+ dwReserved1: ::DWORD,
+ dwReserved2: ::DWORD,
+}}
+FLAGS!{enum SPEAKFLAGS {
+ SPF_DEFAULT = 0,
+ SPF_ASYNC = 1 << 0,
+ SPF_PURGEBEFORESPEAK = 1 << 1,
+ SPF_IS_FILENAME = 1 << 2,
+ SPF_IS_XML = 1 << 3,
+ SPF_IS_NOT_XML = 1 << 4,
+ SPF_PERSIST_XML = 1 << 5,
+ SPF_NLP_SPEAK_PUNC = 1 << 6,
+ SPF_PARSE_SAPI = 1 << 7,
+ SPF_PARSE_SSML = 1 << 8,
+}}
+pub const SPF_PARSE_AUTODETECT: SPEAKFLAGS = SPF_DEFAULT;
+pub const SPF_NLP_MASK: SPEAKFLAGS = SPF_NLP_SPEAK_PUNC;
+pub const SPF_PARSE_MASK: i32 = SPF_PARSE_SAPI.0 as i32 | SPF_PARSE_SSML.0 as i32;
+pub const SPF_VOICE_MASK: i32 =
+ SPF_ASYNC.0 as i32 | SPF_PURGEBEFORESPEAK.0 as i32 | SPF_IS_FILENAME.0 as i32 | SPF_IS_XML.0 as i32 |
+ SPF_IS_NOT_XML.0 as i32 | SPF_NLP_MASK.0 as i32 | SPF_PERSIST_XML.0 as i32 | SPF_PARSE_MASK;
+pub const SPF_UNUSED_FLAGS: i32 = !SPF_VOICE_MASK;
+RIDL!(
+interface ISpVoice(ISpVoiceVtbl): ISpEventSource(ISpEventSourceVtbl) {
+ fn SetOutput(&mut self, pUnkOutput: *mut ::IUnknown, fAllowFormatChanges: ::BOOL) -> ::HRESULT,
+ fn GetOutputObjectToken(&mut self, ppObjectToken: *mut *mut ISpObjectToken) -> ::HRESULT,
+ fn GetOutputStream(&mut self, ppStream: *mut *mut ISpStreamFormat) -> ::HRESULT,
+ fn Pause(&mut self) -> ::HRESULT,
+ fn Resume(&mut self) -> ::HRESULT,
+ fn SetVoice(&mut self, pToken: *mut ISpObjectToken) -> ::HRESULT,
+ fn GetVoice(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT,
+ fn Speak(
+ &mut self, pwcs: ::LPCWSTR, dwFlags: ::DWORD, pulStreamNumber: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn SpeakStream(
+ &mut self, pStream: *mut ::IStream, dwFlags: ::DWORD, pulStreamNumber: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn GetStatus(
+ &mut self, pStatus: *mut SPVOICESTATUS, ppszLastBookmark: *mut ::LPWSTR
+ ) -> ::HRESULT,
+ fn Skip(
+ &mut self, pItemType: ::LPCWSTR, lNumItems: ::c_long, pulNumSkipped: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn SetPriority(&mut self, ePriority: SPVPRIORITY) -> ::HRESULT,
+ fn GetPriority(&mut self, pePriority: *mut SPVPRIORITY) -> ::HRESULT,
+ fn SetAlertBoundary(&mut self, eBoundary: SPEVENTENUM) -> ::HRESULT,
+ fn GetAlertBoundary(&mut self, peBoundary: *mut SPEVENTENUM) -> ::HRESULT,
+ fn SetRate(&mut self, RateAdjust: ::c_long) -> ::HRESULT,
+ fn GetRate(&mut self, pRateAdjust: *mut ::c_long) -> ::HRESULT,
+ fn SetVolume(&mut self, usVolume: ::USHORT) -> ::HRESULT,
+ fn GetVolume(&mut self, pusVolume: *mut ::USHORT) -> ::HRESULT,
+ fn WaitUntilDone(&mut self, msTimeout: ::ULONG) -> ::HRESULT,
+ fn SetSyncSpeakTimeout(&mut self, msTimeout: ::ULONG) -> ::HRESULT,
+ fn GetSyncSpeakTimeout(&mut self, pmsTimeout: *mut ::ULONG) -> ::HRESULT,
+ fn SpeakCompleteEvent(&mut self) -> ::HANDLE,
+ fn IsUISupported(
+ &mut self, pszTypeOfUI: ::LPCWSTR, pvExtraData: *mut ::c_void, cbExtraData: ::ULONG,
+ pfSupported: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn DisplayUI(
+ &mut self, hwndParent: ::HWND, pszTitle: ::LPCWSTR, pszTypeOfUI: ::LPCWSTR,
+ pvExtraData: *mut ::c_void, cbExtraData: ::ULONG
+ ) -> ::HRESULT
+}
+);
+DEFINE_GUID!(
+ UuidOfISpVoice,
+ 0x6C44DF74, 0x72B9, 0x4992, 0xA1, 0xEC, 0xEF, 0x99, 0x6E, 0x04, 0x22, 0xD4
+);
+RIDL!(
+interface ISpPhrase(ISpPhraseVtbl): IUnknown(IUnknownVtbl) {
+ fn GetPhrase(&mut self, ppCoMemPhrase: *mut *mut SPPHRASE) -> ::HRESULT,
+ fn GetSerializedPhrase(&mut self, ppCoMemPhrase: *mut *mut SPSERIALIZEDPHRASE) -> ::HRESULT,
+ fn GetText(
+ &mut self, ulStart: ::ULONG, ulCount: ::ULONG, fUseTextReplacements: ::BOOL,
+ ppszCoMemText: *mut ::LPWSTR, pbDisplayAttributes: *mut ::BYTE
+ ) -> ::HRESULT,
+ fn Discard(&mut self, dwValueTypes: ::DWORD) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpPhraseAlt(ISpPhraseAltVtbl): ISpPhrase(ISpPhraseVtbl) {
+ fn GetAltInfo(
+ &mut self, pParent: *mut *mut ISpPhrase, pulStartElementInParent: *mut ::ULONG,
+ pcElementsInParent: *mut ::ULONG, pcElementsInAlt: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn Commit(&mut self) -> ::HRESULT
+}
+);
+ENUM!{enum SPXMLRESULTOPTIONS {
+ SPXRO_SML = 0,
+ SPXRO_Alternates_SML = 1,
+}}
+RIDL!(
+interface ISpPhrase2(ISpPhrase2Vtbl): ISpPhrase(ISpPhraseVtbl) {
+ fn GetXMLResult(
+ &mut self, ppszCoMemXMLResult: *mut ::LPWSTR, Options: SPXMLRESULTOPTIONS
+ ) -> ::HRESULT,
+ fn GetXMLErrorInfo(&mut self, pSemanticErrorInfo: *mut SPSEMANTICERRORINFO) -> ::HRESULT,
+ fn GetAudio(
+ &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, ppStream: *mut *mut ISpStreamFormat
+ ) -> ::HRESULT
+}
+);
+STRUCT!{struct SPRECORESULTTIMES {
+ ftStreamTime: ::FILETIME,
+ ullLength: ::ULONGLONG,
+ dwTickCount: ::DWORD,
+ ullStart: ::ULONGLONG,
+}}
+STRUCT!{struct SPSERIALIZEDRESULT {
+ ulSerializedSize: ::ULONG,
+}}
+RIDL!(
+interface ISpRecoResult(ISpRecoResultVtbl): ISpPhrase(ISpPhraseVtbl) {
+ fn GetResultTimes(&mut self, pTimes: *mut SPRECORESULTTIMES) -> ::HRESULT,
+ fn GetAlternates(
+ &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, ulRequestCount: ::ULONG,
+ ppPhrases: *mut *mut ISpPhraseAlt, pcPhrasesReturned: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn GetAudio(
+ &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, ppStream: *mut *mut ISpStreamFormat
+ ) -> ::HRESULT,
+ fn SpeakAudio(
+ &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, dwFlags: ::DWORD,
+ pulStreamNumber: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn Serialize(&mut self, ppCoMemSerializedResult: *mut *mut SPSERIALIZEDRESULT) -> ::HRESULT,
+ fn ScaleAudio(
+ &mut self, pAudioFormatId: *const ::GUID, pWaveFormatEx: *const ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn GetRecoContext(&mut self, ppRecoContext: *mut *mut ISpRecoContext) -> ::HRESULT
+}
+);
+FLAGS!{enum SPCOMMITFLAGS {
+ SPCF_NONE = 0,
+ SPCF_ADD_TO_USER_LEXICON = 1 << 0,
+ SPCF_DEFINITE_CORRECTION = 1 << 1,
+}}
+RIDL!(
+interface ISpRecoResult2(ISpRecoResult2Vtbl): ISpRecoResult(ISpRecoResultVtbl) {
+ fn CommitAlternate(
+ &mut self, pPhraseAlt: *mut ISpPhraseAlt, ppNewResult: *mut *mut ISpRecoResult
+ ) -> ::HRESULT,
+ fn CommitText(
+ &mut self, ulStartElement: ::ULONG, cElements: ::ULONG, pszCorrectedData: ::LPCWSTR,
+ eCommitFlags: ::DWORD
+ ) -> ::HRESULT,
+ fn SetTextFeedback(&mut self, pszFeedback: ::LPCWSTR, fSuccessful: ::BOOL) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpXMLRecoResult(ISpXMLRecoResultVtbl): ISpRecoResult(ISpRecoResultVtbl) {
+ fn GetXMLResult(
+ &mut self, ppszCoMemXMLResult: *mut ::LPWSTR, Options: SPXMLRESULTOPTIONS
+ ) -> ::HRESULT,
+ fn GetXMLErrorInfo(&mut self, pSemanticErrorInfo: *mut SPSEMANTICERRORINFO) -> ::HRESULT
+}
+);
+STRUCT!{struct SPTEXTSELECTIONINFO {
+ ulStartActiveOffset: ::ULONG,
+ cchActiveChars: ::ULONG,
+ ulStartSelection: ::ULONG,
+ cchSelection: ::ULONG,
+}}
+ENUM!{enum SPWORDPRONOUNCEABLE {
+ SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE = 0,
+ SPWP_UNKNOWN_WORD_PRONOUNCEABLE = 1,
+ SPWP_KNOWN_WORD_PRONOUNCEABLE = 2,
+}}
+ENUM!{enum SPGRAMMARSTATE {
+ SPGS_DISABLED = 0,
+ SPGS_ENABLED = 1,
+ SPGS_EXCLUSIVE = 3,
+}}
+ENUM!{enum SPCONTEXTSTATE {
+ SPCS_DISABLED = 0,
+ SPCS_ENABLED = 1,
+}}
+ENUM!{enum SPRULESTATE {
+ SPRS_INACTIVE = 0,
+ SPRS_ACTIVE = 1,
+ SPRS_ACTIVE_WITH_AUTO_PAUSE = 3,
+ SPRS_ACTIVE_USER_DELIMITED = 4,
+}}
+pub const SP_STREAMPOS_ASAP: ::INT = 0;
+pub const SP_STREAMPOS_REALTIME: ::INT = -1;
+pub const SPRULETRANS_TEXTBUFFER: SPSTATEHANDLE = -1isize as SPSTATEHANDLE;
+pub const SPRULETRANS_WILDCARD: SPSTATEHANDLE = -2isize as SPSTATEHANDLE;
+pub const SPRULETRANS_DICTATION: SPSTATEHANDLE = -3isize as SPSTATEHANDLE;
+ENUM!{enum SPGRAMMARWORDTYPE {
+ SPWT_DISPLAY = 0,
+ SPWT_LEXICAL = 1,
+ SPWT_PRONUNCIATION = 2,
+ SPWT_LEXICAL_NO_SPECIAL_CHARS = 3,
+}}
+STRUCT!{struct SPPROPERTYINFO {
+ pszName: ::LPCWSTR,
+ ulId: ::ULONG,
+ pszValue: ::LPCWSTR,
+ vValue: ::VARIANT,
+}}
+FLAGS!{enum SPCFGRULEATTRIBUTES {
+ SPRAF_TopLevel = 1 << 0,
+ SPRAF_Active = 1 << 1,
+ SPRAF_Export = 1 << 2,
+ SPRAF_Import = 1 << 3,
+ SPRAF_Interpreter = 1 << 4,
+ SPRAF_Dynamic = 1 << 5,
+ SPRAF_Root = 1 << 6,
+ SPRAF_AutoPause = 1 << 16,
+ SPRAF_UserDelimited = 1 << 17,
+}}
+RIDL!(
+interface ISpGrammarBuilder(ISpGrammarBuilderVtbl): IUnknown(IUnknownVtbl) {
+ fn ResetGrammar(&mut self, NewLanguage: ::WORD) -> ::HRESULT,
+ fn GetRule(
+ &mut self, pszRuleName: ::LPCWSTR, dwRuleId: ::DWORD, dwAttributes: ::DWORD,
+ fCreateIfNotExist: ::BOOL, phInitialState: *mut SPSTATEHANDLE
+ ) -> ::HRESULT,
+ fn ClearRule(&mut self, hState: SPSTATEHANDLE) -> ::HRESULT,
+ fn CreateNewState(&mut self, hState: SPSTATEHANDLE, phState: *mut SPSTATEHANDLE) -> ::HRESULT,
+ fn AddWordTransition(
+ &mut self, hFromState: SPSTATEHANDLE, hToState: SPSTATEHANDLE, psz: ::LPCWSTR,
+ pszSeparators: ::LPCWSTR, eWordType: SPGRAMMARWORDTYPE, Weight: ::c_float,
+ pPropInfo: *const SPPROPERTYINFO
+ ) -> ::HRESULT,
+ fn AddRuleTransition(
+ &mut self, hFromState: SPSTATEHANDLE, hToState: SPSTATEHANDLE, hRule: SPSTATEHANDLE,
+ Weight: ::c_float, pPropInfo: *const SPPROPERTYINFO
+ ) -> ::HRESULT,
+ fn AddResource(
+ &mut self, hRuleState: SPSTATEHANDLE, pszResourceName: ::LPCWSTR,
+ pszResourceValue: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn Commit(&mut self, dwReserved: ::DWORD) -> ::HRESULT
+}
+);
+ENUM!{enum SPLOADOPTIONS {
+ SPLO_STATIC = 0,
+ SPLO_DYNAMIC = 1,
+}}
+RIDL!(
+interface ISpRecoGrammar(ISpRecoGrammarVtbl): ISpGrammarBuilder(ISpGrammarBuilderVtbl) {
+ fn GetGrammarId(&mut self, pullGrammarId: *mut ::ULONGLONG) -> ::HRESULT,
+ fn GetRecoContext(&mut self, ppRecoCtxt: *mut *mut ISpRecoContext) -> ::HRESULT,
+ fn LoadCmdFromFile(&mut self, pszFileName: ::LPCWSTR, Options: SPLOADOPTIONS) -> ::HRESULT,
+ fn LoadCmdFromObject(
+ &mut self, rcid: ::REFCLSID, pszGrammarName: ::LPCWSTR, Options: SPLOADOPTIONS
+ ) -> ::HRESULT,
+ fn LoadCmdFromResource(
+ &mut self, hModule: ::HMODULE, pszResourceName: ::LPCWSTR, pszResourceType: ::LPCWSTR,
+ wLanguage: ::WORD, Options: SPLOADOPTIONS
+ ) -> ::HRESULT,
+ fn LoadCmdFromMemory(
+ &mut self, pGrammar: *const SPBINARYGRAMMAR, Options: SPLOADOPTIONS
+ ) -> ::HRESULT,
+ fn LoadCmdFromProprietaryGrammar(
+ &mut self, rguidParam: ::REFGUID, pszStringParam: ::LPCWSTR, pvDataPrarm: *const ::c_void,
+ cbDataSize: ::ULONG, Options: SPLOADOPTIONS
+ ) -> ::HRESULT,
+ fn SetRuleState(
+ &mut self, pszName: ::LPCWSTR, pReserved: *mut ::c_void, NewState: SPRULESTATE
+ ) -> ::HRESULT,
+ fn SetRuleIdState(&mut self, ulRuleId: ::ULONG, NewState: SPRULESTATE) -> ::HRESULT,
+ fn LoadDictation(&mut self, pszTopicName: ::LPCWSTR, Options: SPLOADOPTIONS) -> ::HRESULT,
+ fn UnloadDictation(&mut self) -> ::HRESULT,
+ fn SetDictationState(&mut self, NewState: SPRULESTATE) -> ::HRESULT,
+ fn SetWordSequenceData(
+ &mut self, pText: *const ::WCHAR, cchText: ::ULONG, pInfo: *const SPTEXTSELECTIONINFO
+ ) -> ::HRESULT,
+ fn SetTextSelection(&mut self, pInfo: *const SPTEXTSELECTIONINFO) -> ::HRESULT,
+ fn IsPronounceable(
+ &mut self, pszWord: ::LPCWSTR, pWordPronounceable: *mut SPWORDPRONOUNCEABLE
+ ) -> ::HRESULT,
+ fn SetGrammarState(&mut self, eGrammarState: SPGRAMMARSTATE) -> ::HRESULT,
+ fn SaveCmd(&mut self, pStream: *mut ::IStream, ppszCoMemErrorText: *mut ::LPWSTR) -> ::HRESULT,
+ fn GetGrammarState(&mut self, peGrammarState: *mut SPGRAMMARSTATE) -> ::HRESULT
+}
+);
+ENUM!{enum SPMATCHINGMODE {
+ AllWords = 0,
+ Subsequence = 1,
+ OrderedSubset = 3,
+ SubsequenceContentRequired = 5,
+ OrderedSubsetContentRequired = 7,
+}}
+ENUM!{enum PHONETICALPHABET {
+ PA_Ipa = 0,
+ PA_Ups = 1,
+ PA_Sapi = 2,
+}}
+RIDL!(
+interface ISpGrammarBuilder2(ISpGrammarBuilder2Vtbl): IUnknown(IUnknownVtbl) {
+ fn AddTextSubset(
+ &mut self, hFromState: SPSTATEHANDLE, hToState: SPSTATEHANDLE, psz: ::LPCWSTR,
+ eMatchMode: SPMATCHINGMODE
+ ) -> ::HRESULT,
+ fn SetPhoneticAlphabet(&mut self, phoneticALphabet: PHONETICALPHABET) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpRecoGrammar2(ISpRecoGrammar2Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetRules(&mut self, ppCoMemRules: *mut *mut SPRULE, puNumRules: *mut ::UINT) -> ::HRESULT,
+ fn LoadCmdFromFile2(
+ &mut self, pszFileName: ::LPCWSTR, Options: SPLOADOPTIONS, pszSharingUri: ::LPCWSTR,
+ pszBaseUri: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn LoadCmdFromMemory2(
+ &mut self, pGrammar: *const SPBINARYGRAMMAR, Options: SPLOADOPTIONS,
+ pszSharingUri: ::LPCWSTR, pszBaseUri: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SetRulePriority(
+ &mut self, pszRuleName: ::LPCWSTR, ulRuleId: ::ULONG, nRulePriority: ::c_int
+ ) -> ::HRESULT,
+ fn SetRuleWeight(
+ &mut self, pszRuleName: ::LPCWSTR, ulRuleId: ::ULONG, flWeight: ::c_float
+ ) -> ::HRESULT,
+ fn SetDictationWeight(&mut self, flWeight: ::c_float) -> ::HRESULT,
+ fn SetGrammarLoader(&mut self, pLoader: *mut ISpeechResourceLoader) -> ::HRESULT,
+ fn SetSMLSecurityManager(
+ &mut self, pSMLSecurityManager: *mut ::IInternetSecurityManager
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechResourceLoader(ISpeechResourceLoaderVtbl): IDispatch(IDispatchVtbl) {
+ fn LoadResource(
+ &mut self, bstrResourceUri: ::BSTR, fAlwaysReload: ::VARIANT_BOOL,
+ pStream: *mut *mut ::IUnknown, pbstrMIMEType: *mut ::BSTR, pfModified: *mut ::VARIANT_BOOL,
+ pbstrRedirectUrl: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn GetLocalCopy(
+ &mut self, bstrResourceUri: ::BSTR, pbstrLocalPath: *mut ::BSTR,
+ pbstrMIMEType: *mut ::BSTR, pbstrRedirectUrl: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn ReleaseLocalCopy(&mut self, pbstrLocalPath: ::BSTR) -> ::HRESULT
+}
+);
+STRUCT!{nodebug struct SPRECOCONTEXTSTATUS {
+ eInterference: SPINTERFERENCE,
+ szRequestTypeOfUI: [::WCHAR; 255],
+ dwReserved1: ::DWORD,
+ dwReserved2: ::DWORD,
+}}
+FLAGS!{enum SPBOOKMARKOPTIONS {
+ SPBO_NONE = 0,
+ SPBO_PAUSE = 1 << 0,
+ SPBO_AHEAD = 1 << 1,
+ SPBO_TIME_UNITS = 1 << 2,
+}}
+FLAGS!{enum SPAUDIOOPTIONS {
+ SPAO_NONE = 0,
+ SPAO_RETAIN_AUDIO = 1 << 0,
+}}
+RIDL!(
+interface ISpRecoContext(ISpRecoContextVtbl): ISpEventSource(ISpEventSourceVtbl) {
+ fn GetRecognizer(&mut self, ppRecognizer: *mut *mut ISpRecognizer) -> ::HRESULT,
+ fn CreateGrammer(
+ &mut self, ullGrammarId: ::ULONGLONG, ppGrammar: *mut *mut ISpRecoGrammar
+ ) -> ::HRESULT,
+ fn GetStatus(&mut self, pState: *mut SPRECOCONTEXTSTATUS) -> ::HRESULT,
+ fn GetMaxAlternates(&mut self, pcAlternates: *mut ::ULONG) -> ::HRESULT,
+ fn SetMaxAlternates(&mut self, cAlternates: ::ULONG) -> ::HRESULT,
+ fn SetAudioOptions(
+ &mut self, Options: SPAUDIOOPTIONS, pAudioFormatId: *const ::GUID,
+ pWaveFormatEx: *const ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn GetAudioOptions(
+ &mut self, pOptions: *mut SPAUDIOOPTIONS, pAudioFormatId: *mut ::GUID,
+ ppCoMemWFEX: *mut *mut ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn DeserializeResult(
+ &mut self, pSerializedResult: *const SPSERIALIZEDRESULT, ppResult: *mut *mut ISpRecoResult
+ ) -> ::HRESULT,
+ fn Bookmark(
+ &mut self, Options: SPBOOKMARKOPTIONS, ullStreamPosition: ::ULONGLONG,
+ lparamEvent: ::LPARAM
+ ) -> ::HRESULT,
+ fn SetAdaptionData(&mut self, pAdaptionData: ::LPCWSTR, cch: ::ULONG) -> ::HRESULT,
+ fn Pause(&mut self, dwReserved: ::DWORD) -> ::HRESULT,
+ fn Resume(&mut self, dwReserved: ::DWORD) -> ::HRESULT,
+ fn SetVoice(&mut self, pVoice: *mut ISpVoice, fAllowFormatChanges: ::BOOL) -> ::HRESULT,
+ fn GetVoice(&mut self, ppVoice: *mut *mut ISpVoice) -> ::HRESULT,
+ fn SetVoicePurgeEvent(&mut self, ullEventIntereset: ::ULONGLONG) -> ::HRESULT,
+ fn GetVoicePurgeEvent(&mut self, pullEventIntereset: *mut ::ULONGLONG) -> ::HRESULT,
+ fn SetContextState(&mut self, eContextState: SPCONTEXTSTATE) -> ::HRESULT,
+ fn GetContextState(&mut self, peContextState: *mut SPCONTEXTSTATE) -> ::HRESULT
+}
+);
+FLAGS!{enum SPGRAMMAROPTIONS {
+ SPGO_SAPI = 0x1,
+ SPGO_SRGS = 0x2,
+ SPGO_UPS = 0x4,
+ SPGO_SRGS_MS_SCRIPT = 0x8,
+ SPGO_SRGS_W3C_SCRIPT = 0x100,
+ SPGO_SRGS_STG_SCRIPT = 0x200,
+ SPGO_SRGS_SCRIPT =
+ SPGO_SRGS.0 | SPGO_SRGS_MS_SCRIPT.0 | SPGO_SRGS_W3C_SCRIPT.0 |
+ SPGO_SRGS_STG_SCRIPT.0,
+ SPGO_FILE = 0x10,
+ SPGO_HTTP = 0x20,
+ SPGO_RES = 0x40,
+ SPGO_OBJECT = 0x80,
+ SPGO_DEFAULT = 0x3fb,
+ SPGO_ALL = 0x3ff,
+}}
+FLAGS!{enum SPADAPTATIONSETTINGS {
+ SPADS_Default = 0,
+ SPADS_CurrentRecognizer = 0x1,
+ SPADS_RecoProfile = 0x2,
+ SPADS_Immediate = 0x4,
+ SPADS_Reset = 0x8,
+ SPADS_HighVolumeDataSource = 0x10,
+}}
+ENUM!{enum SPADAPTATIONRELEVANCE {
+ SPAR_Unknown = 0,
+ SPAR_Low = 1,
+ SPAR_Medium = 2,
+ SPAR_High = 3,
+}}
+RIDL!(
+interface ISpRecoContext2(ISpRecoContext2Vtbl): IUnknown(IUnknownVtbl) {
+ fn SetGrammarOptions(&mut self, eGrammarOptions: ::DWORD) -> ::HRESULT,
+ fn GetGrammarOptions(&mut self, peGrammarOptions: *mut ::DWORD) -> ::HRESULT,
+ fn SetAdaptationData2(
+ &mut self, pAdaptationData: ::LPCWSTR, cch: ::ULONG, pTopicName: ::LPCWSTR,
+ eAdaptationSettings: ::DWORD, eRelevance: SPADAPTATIONRELEVANCE
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpProperties(ISpPropertiesVtbl): IUnknown(IUnknownVtbl) {
+ fn SetPropertyNum(&mut self, pName: ::LPCWSTR, lValue: ::LONG) -> ::HRESULT,
+ fn GetPropertyNum(&mut self, pName: ::LPCWSTR, plValue: *mut ::LONG) -> ::HRESULT,
+ fn SetPropertyString(&mut self, pName: ::LPCWSTR, pValue: ::LPCWSTR) -> ::HRESULT,
+ fn GetPropertyString(&mut self, pName: ::LPCWSTR, ppCoMemValue: *mut ::LPWSTR) -> ::HRESULT
+}
+);
+STRUCT!{struct SPRECOGNIZERSTATUS {
+ AudioStatus: SPAUDIOSTATUS,
+ ullRecognitionStreamPos: ::ULONGLONG,
+ ulStreamNumber: ::ULONG,
+ ulNumActive: ::ULONG,
+ clsidEngine: ::CLSID,
+ cLangIDs: ::ULONG,
+ aLangID: [::WORD; 20],
+ ullRecognitionStreamTime: ::ULONGLONG,
+}}
+ENUM!{enum SPWAVEFORMATTYPE {
+ SPWF_INPUT = 0,
+ SPWF_SRENGINE = 1,
+}}
+pub type SPSTREAMFORMATTYPE = SPWAVEFORMATTYPE;
+ENUM!{enum SPRECOSTATE {
+ SPRST_INACTIVE = 0,
+ SPRST_ACTIVE = 1,
+ SPRST_ACTIVE_ALWAYS = 2,
+ SPRST_INACTIVE_WITH_PURGE = 3,
+ SPRST_NUM_STATES = 4,
+}}
+RIDL!(
+interface ISpRecognizer(ISpRecognizerVtbl): ISpProperties(ISpPropertiesVtbl) {
+ fn SetRecognizer(&mut self, pRecognizer: *mut ISpObjectToken) -> ::HRESULT,
+ fn GetRecognizer(&mut self, ppRecognizer: *mut *mut ISpObjectToken) -> ::HRESULT,
+ fn SetInput(&mut self, pUnkInput: *mut ::IUnknown, fAllowFormatChanges: ::BOOL) -> ::HRESULT,
+ fn GetInputObjectToken(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT,
+ fn GetInputStream(&mut self, ppStream: *mut *mut ISpStreamFormat) -> ::HRESULT,
+ fn CreateRecoContext(&mut self, ppNewCtxt: *mut *mut ISpRecoContext) -> ::HRESULT,
+ fn GetRecoProfile(&mut self, ppToken: *mut *mut ISpObjectToken) -> ::HRESULT,
+ fn SetRecoProfile(&mut self, pToken: *mut ISpObjectToken) -> ::HRESULT,
+ fn IsSharedInstance(&mut self) -> ::HRESULT,
+ fn GetRecoState(&mut self, pState: *mut SPRECOSTATE) -> ::HRESULT,
+ fn SetRecoState(&mut self, NewState: SPRECOSTATE) -> ::HRESULT,
+ fn GetStatus(&mut self, pStatus: *mut SPRECOGNIZERSTATUS) -> ::HRESULT,
+ fn GetFormat(
+ &mut self, WaveFormatType: SPSTREAMFORMATTYPE, pFormatId: *mut ::GUID,
+ ppCoMemWFEX: *mut ::WAVEFORMATEX
+ ) -> ::HRESULT,
+ fn IsUISupported(
+ &mut self, pszTypeOfUI: ::LPCWSTR, pvExtraData: *mut ::c_void, cbExtraData: ::ULONG,
+ pfSupported: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn DisplayUI(
+ &mut self, hwndParent: ::HWND, pszTitle: ::LPCWSTR, pszTypeOfUI: ::LPCWSTR,
+ pvExtraData: *mut ::c_void, cbExtraData: ::ULONG
+ ) -> ::HRESULT,
+ fn EmulateRecognition(&mut self, pPhrase: *mut ISpPhrase) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpSerializeState(ISpSerializeStateVtbl): IUnknown(IUnknownVtbl) {
+ fn GetSerializedState(
+ &mut self, ppbData: *mut *mut ::BYTE, pulSize: *mut ::ULONG, dwReserved: ::DWORD
+ ) -> ::HRESULT,
+ fn SetSerializedState(
+ &mut self, pbData: *mut ::BYTE, ulSize: ::ULONG, dwReserved: ::DWORD
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpRecognizer2(ISpRecognizer2Vtbl): IUnknown(IUnknownVtbl) {
+ fn EmulateRecognitionEx(
+ &mut self, pPhrase: *mut ISpPhrase, dwCompareFlags: ::DWORD
+ ) -> ::HRESULT,
+ fn SetTrainingState(
+ &mut self, fDoingTraining: ::BOOL, fAdaptFromTrainingData: ::BOOL
+ ) -> ::HRESULT,
+ fn ResetAcousticModelAdaptation(&mut self) -> ::HRESULT
+}
+);
+ENUM!{enum SPCATEGORYTYPE {
+ SPCT_COMMAND = 0,
+ SPCT_DICTATION,
+ SPCT_SLEEP,
+ SPCT_SUB_COMMAND,
+ SPCT_SUB_DICTATION,
+}}
+RIDL!(
+interface ISpRecoCategory(ISpRecoCategoryVtbl): IUnknown(IUnknownVtbl) {
+ fn GetType(&mut self, peCategoryType: *mut SPCATEGORYTYPE) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpRecognizer3(ISpRecognizer3Vtbl): IUnknown(IUnknownVtbl) {
+ fn GetCategory(
+ &mut self, categoryType: SPCATEGORYTYPE, ppCategory: *mut *mut ISpRecoCategory
+ ) -> ::HRESULT,
+ fn SetActiveCategory(&mut self, pCategory: *mut ISpRecoCategory) -> ::HRESULT,
+ fn GetActiveCategory(&mut self, ppCategory: *mut *mut ISpRecoCategory) -> ::HRESULT
+}
+);
+STRUCT!{struct SPNORMALIZATIONLIST {
+ ulSize: ::ULONG,
+ ppszzNormalizedList: *mut *mut ::WCHAR,
+}}
+RIDL!(
+interface ISpEnginePronunciation(ISpEnginePronunciationVtbl): IUnknown(IUnknownVtbl) {
+ fn Normalize(
+ &mut self, pszWord: ::LPCWSTR, pszLeftContext: ::LPCWSTR, pszRightContext: ::LPCWSTR,
+ LangID: ::WORD, pNormalizationList: *mut SPNORMALIZATIONLIST
+ ) -> ::HRESULT,
+ fn GetPronunciations(
+ &mut self, pszWord: ::LPCWSTR, pszLeftContext: ::LPCWSTR, pszRightContext: ::LPCWSTR,
+ LangID: ::WORD, pEnginePronunciationList: *mut SPWORDPRONUNCIATIONLIST
+ ) -> ::HRESULT
+}
+);
+STRUCT!{struct SPDISPLAYTOKEN {
+ pszLexical: *const ::WCHAR,
+ pszDisplay: *const ::WCHAR,
+ bDisplayAttributes: ::BYTE,
+}}
+STRUCT!{struct SPDISPLAYPHRASE {
+ ulNumTokens: ::ULONG,
+ pTokens: *mut SPDISPLAYTOKEN,
+}}
+RIDL!(
+interface ISpDisplayAlternates(ISpDisplayAlternatesVtbl): IUnknown(IUnknownVtbl) {
+ fn GetDisplayAlternates(
+ &mut self, pPhrase: *const SPDISPLAYPHRASE, cRequestCount: ::ULONG,
+ ppCoMemPhrases: *mut *mut SPDISPLAYPHRASE, pcPhrasesReturned: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn SetFullStopTrailSpace(&mut self, ulTrailSpace: ::ULONG) -> ::HRESULT
+}
+);
+pub type SpeechLanguageId = ::c_long;
+ENUM!{enum DISPID_SpeechDataKey {
+ DISPID_SDKSetBinaryValue = 1,
+ DISPID_SDKGetBinaryValue,
+ DISPID_SDKSetStringValue,
+ DISPID_SDKGetStringValue,
+ DISPID_SDKSetLongValue,
+ DISPID_SDKGetlongValue,
+ DISPID_SDKOpenKey,
+ DISPID_SDKCreateKey,
+ DISPID_SDKDeleteKey,
+ DISPID_SDKDeleteValue,
+ DISPID_SDKEnumKeys,
+ DISPID_SDKEnumValues,
+}}
+ENUM!{enum DISPID_SpeechObjectToken {
+ DISPID_SOTId = 1,
+ DISPID_SOTDataKey,
+ DISPID_SOTCategory,
+ DISPID_SOTGetDescription,
+ DISPID_SOTSetId,
+ DISPID_SOTGetAttribute,
+ DISPID_SOTCreateInstance,
+ DISPID_SOTRemove,
+ DISPID_SOTGetStorageFileName,
+ DISPID_SOTRemoveStorageFileName,
+ DISPID_SOTIsUISupported,
+ DISPID_SOTDisplayUI,
+ DISPID_SOTMatchesAttributes,
+}}
+ENUM!{enum SpeechDataKeyLocation {
+ SDKLDefaultLocation = SPDKL_DefaultLocation.0,
+ SDKLCurrentUser = SPDKL_CurrentUser.0,
+ SDKLLocalMachine = SPDKL_LocalMachine.0,
+ SDKLCurrentConfig = SPDKL_CurrentConfig.0,
+}}
+ENUM!{enum SpeechTokenContext {
+ STCInprocServer = ::CLSCTX_INPROC_SERVER,
+ STCInprocHandler = ::CLSCTX_INPROC_HANDLER,
+ STCLocalServer = ::CLSCTX_LOCAL_SERVER,
+ STCRemoteServer = ::CLSCTX_REMOTE_SERVER,
+ STCAll = ::CLSCTX_INPROC_SERVER | ::CLSCTX_INPROC_HANDLER |
+ ::CLSCTX_LOCAL_SERVER | ::CLSCTX_REMOTE_SERVER,
+}}
+ENUM!{enum SpeechTokenShellFolder {
+ STSF_AppData = 0x1a,
+ STSF_LocalAppData = 0x1c,
+ STSF_CommonAppData = 0x23,
+ STSF_FlagCreate = 0x8000,
+}}
+ENUM!{enum DISPID_SpeechObjectTokens {
+ DISPID_SOTsCount = 1,
+ DISPID_SOTsItem = ::DISPID_VALUE as u32,
+ DISPID_SOTs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechObjectTokenCategory {
+ DISPID_SOTCId = 1,
+ DISPID_SOTCDefault,
+ DISPID_SOTCSetId,
+ DISPID_SOTCGetDataKey,
+ DISPID_SOTCEnumerateTokens,
+}}
+ENUM!{enum SpeechAudioFormatType {
+ SAFTDefault = -1i32 as u32,
+ SAFTNoAssignedFormat = 0,
+ SAFTText = 1,
+ SAFTNonStandardFormat = 2,
+ SAFTExtendedAudioFormat = 3,
+ SAFT8kHz8BitMono = 4,
+ SAFT8kHz8BitStereo = 5,
+ SAFT8kHz16BitMono = 6,
+ SAFT8kHz16BitStereo = 7,
+ SAFT11kHz8BitMono = 8,
+ SAFT11kHz8BitStereo = 9,
+ SAFT11kHz16BitMono = 10,
+ SAFT11kHz16BitStereo = 11,
+ SAFT12kHz8BitMono = 12,
+ SAFT12kHz8BitStereo = 13,
+ SAFT12kHz16BitMono = 14,
+ SAFT12kHz16BitStereo = 15,
+ SAFT16kHz8BitMono = 16,
+ SAFT16kHz8BitStereo = 17,
+ SAFT16kHz16BitMono = 18,
+ SAFT16kHz16BitStereo = 19,
+ SAFT22kHz8BitMono = 20,
+ SAFT22kHz8BitStereo = 21,
+ SAFT22kHz16BitMono = 22,
+ SAFT22kHz16BitStereo = 23,
+ SAFT24kHz8BitMono = 24,
+ SAFT24kHz8BitStereo = 25,
+ SAFT24kHz16BitMono = 26,
+ SAFT24kHz16BitStereo = 27,
+ SAFT32kHz8BitMono = 28,
+ SAFT32kHz8BitStereo = 29,
+ SAFT32kHz16BitMono = 30,
+ SAFT32kHz16BitStereo = 31,
+ SAFT44kHz8BitMono = 32,
+ SAFT44kHz8BitStereo = 33,
+ SAFT44kHz16BitMono = 34,
+ SAFT44kHz16BitStereo = 35,
+ SAFT48kHz8BitMono = 36,
+ SAFT48kHz8BitStereo = 37,
+ SAFT48kHz16BitMono = 38,
+ SAFT48kHz16BitStereo = 39,
+ SAFTTrueSpeech_8kHz1BitMono = 40,
+ SAFTCCITT_ALaw_8kHzMono = 41,
+ SAFTCCITT_ALaw_8kHzStereo = 42,
+ SAFTCCITT_ALaw_11kHzMono = 43,
+ SAFTCCITT_ALaw_11kHzStereo = 44,
+ SAFTCCITT_ALaw_22kHzMono = 45,
+ SAFTCCITT_ALaw_22kHzStereo = 46,
+ SAFTCCITT_ALaw_44kHzMono = 47,
+ SAFTCCITT_ALaw_44kHzStereo = 48,
+ SAFTCCITT_uLaw_8kHzMono = 49,
+ SAFTCCITT_uLaw_8kHzStereo = 50,
+ SAFTCCITT_uLaw_11kHzMono = 51,
+ SAFTCCITT_uLaw_11kHzStereo = 52,
+ SAFTCCITT_uLaw_22kHzMono = 53,
+ SAFTCCITT_uLaw_22kHzStereo = 54,
+ SAFTCCITT_uLaw_44kHzMono = 55,
+ SAFTCCITT_uLaw_44kHzStereo = 56,
+ SAFTADPCM_8kHzMono = 57,
+ SAFTADPCM_8kHzStereo = 58,
+ SAFTADPCM_11kHzMono = 59,
+ SAFTADPCM_11kHzStereo = 60,
+ SAFTADPCM_22kHzMono = 61,
+ SAFTADPCM_22kHzStereo = 62,
+ SAFTADPCM_44kHzMono = 63,
+ SAFTADPCM_44kHzStereo = 64,
+ SAFTGSM610_8kHzMono = 65,
+ SAFTGSM610_11kHzMono = 66,
+ SAFTGSM610_22kHzMono = 67,
+ SAFTGSM610_44kHzMono = 68,
+}}
+ENUM!{enum DISPID_SpeechAudioFormat {
+ DISPID_SAFType = 1,
+ DISPID_SAFGuid,
+ DISPID_SAFGetWaveFormatEx,
+ DISPID_SAFSetWaveFormatEx,
+}}
+ENUM!{enum DISPID_SpeechBaseStream {
+ DISPID_SBSFormat = 1,
+ DISPID_SBSRead,
+ DISPID_SBSWrite,
+ DISPID_SBSSeek,
+}}
+ENUM!{enum SpeechStreamSeekPositionType {
+ SSSPTRelativeToStart = ::STREAM_SEEK_SET.0,
+ SSSPTRelativeToCurrentPosition = ::STREAM_SEEK_CUR.0,
+ SSSPTRelativeToEnd = ::STREAM_SEEK_END.0,
+}}
+ENUM!{enum DISPID_SpeechAudio {
+ DISPID_SAStatus = 200,
+ DISPID_SABufferInfo,
+ DISPID_SADefaultFormat,
+ DISPID_SAVolume,
+ DISPID_SABufferNotifySize,
+ DISPID_SAEventHandle,
+ DISPID_SASetState,
+}}
+ENUM!{enum SpeechAudioState {
+ SASClosed = SPAS_CLOSED.0,
+ SASStop = SPAS_STOP.0,
+ SASPause = SPAS_PAUSE.0,
+ SASRun = SPAS_RUN.0,
+}}
+ENUM!{enum DISPID_SpeechMMSysAudio {
+ DISPID_SMSADeviceId = 300,
+ DISPID_SMSALineId,
+ DISPID_SMSAMMHandle,
+}}
+ENUM!{enum DISPID_SpeechFileStream {
+ DISPID_SFSOpen = 100,
+ DISPID_SFSClose,
+}}
+ENUM!{enum SpeechStreamFileMode {
+ SSFMOpenForRead = SPFM_OPEN_READONLY.0,
+ SSFMOpenReadWrite = SPFM_OPEN_READWRITE.0,
+ SSFMCreate = SPFM_CREATE.0,
+ SSFMCreateForWrite = SPFM_CREATE_ALWAYS.0,
+}}
+ENUM!{enum DISPID_SpeechCustomStream {
+ DISPID_SCSBaseStream = 100,
+}}
+ENUM!{enum DISPID_SpeechMemoryStream {
+ DISPID_SMSSetData = 100,
+ DISPID_SMSGetData,
+}}
+ENUM!{enum DISPID_SpeechAudioStatus {
+ DISPID_SASFreeBufferSpace = 1,
+ DISPID_SASNonBlockingIO,
+ DISPID_SASState,
+ DISPID_SASCurrentSeekPosition,
+ DISPID_SASCurrentDevicePosition,
+}}
+ENUM!{enum DISPID_SpeechAudioBufferInfo {
+ DISPID_SABIMinNotification = 1,
+ DISPID_SABIBufferSize,
+ DISPID_SABIEventBias,
+}}
+ENUM!{enum DISPID_SpeechWaveFormatEx {
+ DISPID_SWFEFormatTag = 1,
+ DISPID_SWFEChannels,
+ DISPID_SWFESamplesPerSec,
+ DISPID_SWFEAvgBytesPerSec,
+ DISPID_SWFEBlockAlign,
+ DISPID_SWFEBitsPerSample,
+ DISPID_SWFEExtraData,
+}}
+ENUM!{enum DISPID_SpeechVoice {
+ DISPID_SVStatus = 1,
+ DISPID_SVVoice,
+ DISPID_SVAudioOutput,
+ DISPID_SVAudioOutputStream,
+ DISPID_SVRate,
+ DISPID_SVVolume,
+ DISPID_SVAllowAudioOuputFormatChangesOnNextSet,
+ DISPID_SVEventInterests,
+ DISPID_SVPriority,
+ DISPID_SVAlertBoundary,
+ DISPID_SVSyncronousSpeakTimeout,
+ DISPID_SVSpeak,
+ DISPID_SVSpeakStream,
+ DISPID_SVPause,
+ DISPID_SVResume,
+ DISPID_SVSkip,
+ DISPID_SVGetVoices,
+ DISPID_SVGetAudioOutputs,
+ DISPID_SVWaitUntilDone,
+ DISPID_SVSpeakCompleteEvent,
+ DISPID_SVIsUISupported,
+ DISPID_SVDisplayUI,
+}}
+ENUM!{enum SpeechVoicePriority {
+ SVPNormal = SPVPRI_NORMAL.0,
+ SVPAlert = SPVPRI_ALERT.0,
+ SVPOver = SPVPRI_OVER.0,
+}}
+FLAGS!{enum SpeechVoiceSpeakFlags {
+ SVSFDefault = SPF_DEFAULT.0,
+ SVSFlagsAsync = SPF_ASYNC.0,
+ SVSFPurgeBeforeSpeak = SPF_PURGEBEFORESPEAK.0,
+ SVSFIsFilename = SPF_IS_FILENAME.0,
+ SVSFIsXML = SPF_IS_XML.0,
+ SVSFIsNotXML = SPF_IS_NOT_XML.0,
+ SVSFPersistXML = SPF_PERSIST_XML.0,
+ SVSFNLPSpeakPunc = SPF_NLP_SPEAK_PUNC.0,
+ SVSFParseSapi = SPF_PARSE_SAPI.0,
+ SVSFParseSsml = SPF_PARSE_SSML.0,
+ SVSFParseMask = SPF_PARSE_MASK as u32,
+ SVSFVoiceMask = SPF_VOICE_MASK as u32,
+ SVSFUnusedFlags = SPF_UNUSED_FLAGS as u32,
+}}
+pub const SVSFParseAutodetect: SpeechVoiceSpeakFlags = SVSFDefault;
+pub const SVSFNLPMask: SpeechVoiceSpeakFlags = SVSFNLPSpeakPunc;
+FLAGS!{enum SpeechVoiceEvents {
+ SVEStartInputStream = 1 << 1,
+ SVEEndInputStream = 1 << 2,
+ SVEVoiceChange = 1 << 3,
+ SVEBookmark = 1 << 4,
+ SVEWordBoundary = 1 << 5,
+ SVEPhoneme = 1 << 6,
+ SVESentenceBoundary = 1 << 7,
+ SVEViseme = 1 << 8,
+ SVEAudioLevel = 1 << 9,
+ SVEPrivate = 1 << 15,
+ SVEAllEvents = 0x83fe,
+}}
+ENUM!{enum DISPID_SpeechVoiceStatus {
+ DISPID_SVSCurrentStreamNumber = 1,
+ DISPID_SVSLastStreamNumberQueued,
+ DISPID_SVSLastResult,
+ DISPID_SVSRunningState,
+ DISPID_SVSInputWordPosition,
+ DISPID_SVSInputWordLength,
+ DISPID_SVSInputSentencePosition,
+ DISPID_SVSInputSentenceLength,
+ DISPID_SVSLastBookmark,
+ DISPID_SVSLastBookmarkId,
+ DISPID_SVSPhonemeId,
+ DISPID_SVSVisemeId,
+}}
+ENUM!{enum SpeechRunState {
+ SRSEDone = SPRS_DONE.0,
+ SRSEIsSpeaking = SPRS_IS_SPEAKING.0,
+}}
+ENUM!{enum SpeechVisemeType {
+ SVP_0 = 0,
+ SVP_1,
+ SVP_2,
+ SVP_3,
+ SVP_4,
+ SVP_5,
+ SVP_6,
+ SVP_7,
+ SVP_8,
+ SVP_9,
+ SVP_10,
+ SVP_11,
+ SVP_12,
+ SVP_13,
+ SVP_14,
+ SVP_15,
+ SVP_16,
+ SVP_17,
+ SVP_18,
+ SVP_19,
+ SVP_20,
+ SVP_21,
+}}
+ENUM!{enum SpeechVisemeFeature {
+ SVF_None = 0,
+ SVF_Stressed = SPVFEATURE_STRESSED.0,
+ SVF_Emphasis = SPVFEATURE_EMPHASIS.0,
+}}
+ENUM!{enum DISPID_SpeechVoiceEvent {
+ DISPID_SVEStreamStart = 1,
+ DISPID_SVEStreamEnd,
+ DISPID_SVEVoiceChange,
+ DISPID_SVEBookmark,
+ DISPID_SVEWord,
+ DISPID_SVEPhoneme,
+ DISPID_SVESentenceBoundary,
+ DISPID_SVEViseme,
+ DISPID_SVEAudioLevel,
+ DISPID_SVEEnginePrivate,
+}}
+ENUM!{enum DISPID_SpeechRecognizer {
+ DISPID_SRRecognizer = 1,
+ DISPID_SRAllowAudioInputFormatChangesOnNextSet,
+ DISPID_SRAudioInput,
+ DISPID_SRAudioInputStream,
+ DISPID_SRIsShared,
+ DISPID_SRState,
+ DISPID_SRStatus,
+ DISPID_SRProfile,
+ DISPID_SREmulateRecognition,
+ DISPID_SRCreateRecoContext,
+ DISPID_SRGetFormat,
+ DISPID_SRSetPropertyNumber,
+ DISPID_SRGetPropertyNumber,
+ DISPID_SRSetPropertyString,
+ DISPID_SRGetPropertyString,
+ DISPID_SRIsUISupported,
+ DISPID_SRDisplayUI,
+ DISPID_SRGetRecognizers,
+ DISPID_SVGetAudioInputs,
+ DISPID_SVGetProfiles,
+}}
+ENUM!{enum SpeechRecognizerState {
+ SRSInactive = SPRST_INACTIVE.0,
+ SRSActive = SPRST_ACTIVE.0,
+ SRSActiveAlways = SPRST_ACTIVE_ALWAYS.0,
+ SRSInactiveWithPurge = SPRST_INACTIVE_WITH_PURGE.0,
+}}
+ENUM!{enum SpeechDisplayAttributes {
+ SDA_No_Trailing_Space = 0,
+ SDA_One_Trailing_Space = SPAF_ONE_TRAILING_SPACE.0,
+ SDA_Two_Trailing_Spaces = SPAF_TWO_TRAILING_SPACES.0,
+ SDA_Consume_Leading_Spaces = SPAF_CONSUME_LEADING_SPACES.0,
+}}
+ENUM!{enum SpeechFormatType {
+ SFTInput = SPWF_INPUT.0,
+ SFTSREngine = SPWF_SRENGINE.0,
+}}
+FLAGS!{enum SpeechEmulationCompareFlags {
+ SECFIgnoreCase = 0x1,
+ SECFIgnoreKanaType = 0x10000,
+ SECFIgnoreWidth = 0x20000,
+ SECFNoSpecialChars = 0x20000000,
+ SECFEmulateResult = 0x40000000,
+ SECFDefault = SECFIgnoreCase.0 | SECFIgnoreKanaType.0 | SECFIgnoreWidth.0,
+}}
+ENUM!{enum DISPID_SpeechRecognizerStatus {
+ DISPID_SRSAudioStatus = 1,
+ DISPID_SRSCurrentStreamPosition,
+ DISPID_SRSCurrentStreamNumber,
+ DISPID_SRSNumberOfActiveRules,
+ DISPID_SRSClsidEngine,
+ DISPID_SRSSupportedLanguages,
+}}
+ENUM!{enum DISPID_SpeechRecoContext {
+ DISPID_SRCRecognizer = 1,
+ DISPID_SRCAudioInInterferenceStatus,
+ DISPID_SRCRequestedUIType,
+ DISPID_SRCVoice,
+ DISPID_SRAllowVoiceFormatMatchingOnNextSet,
+ DISPID_SRCVoicePurgeEvent,
+ DISPID_SRCEventInterests,
+ DISPID_SRCCmdMaxAlternates,
+ DISPID_SRCState,
+ DISPID_SRCRetainedAudio,
+ DISPID_SRCRetainedAudioFormat,
+ DISPID_SRCPause,
+ DISPID_SRCResume,
+ DISPID_SRCCreateGrammar,
+ DISPID_SRCCreateResultFromMemory,
+ DISPID_SRCBookmark,
+ DISPID_SRCSetAdaptationData,
+}}
+ENUM!{enum SpeechRetainedAudioOptions {
+ SRAONone = SPAO_NONE.0,
+ SRAORetainAudio = SPAO_RETAIN_AUDIO.0,
+}}
+ENUM!{enum SpeechBookmarkOptions {
+ SBONone = SPBO_NONE.0,
+ SBOPause = SPBO_PAUSE.0,
+}}
+ENUM!{enum SpeechInterference {
+ SINone = SPINTERFERENCE_NONE.0,
+ SINoise = SPINTERFERENCE_NOISE.0,
+ SINoSignal = SPINTERFERENCE_NOSIGNAL.0,
+ SITooLoud = SPINTERFERENCE_TOOLOUD.0,
+ SITooQuiet = SPINTERFERENCE_TOOQUIET.0,
+ SITooFast = SPINTERFERENCE_TOOFAST.0,
+ SITooSlow = SPINTERFERENCE_TOOSLOW.0,
+}}
+FLAGS!{enum SpeechRecoEvents {
+ SREStreamEnd = 1 << 0,
+ SRESoundStart = 1 << 1,
+ SRESoundEnd = 1 << 2,
+ SREPhraseStart = 1 << 3,
+ SRERecognition = 1 << 4,
+ SREHypothesis = 1 << 5,
+ SREBookmark = 1 << 6,
+ SREPropertyNumChange = 1 << 7,
+ SREPropertyStringChange = 1 << 8,
+ SREFalseRecognition = 1 << 9,
+ SREInterference = 1 << 10,
+ SRERequestUI = 1 << 11,
+ SREStateChange = 1 << 12,
+ SREAdaptation = 1 << 13,
+ SREStreamStart = 1 << 14,
+ SRERecoOtherContext = 1 << 15,
+ SREAudioLevel = 1 << 16,
+ SREPrivate = 1 << 18,
+ SREAllEvents = 0x5ffff,
+}}
+ENUM!{enum SpeechRecoContextState {
+ SRCS_Disabled = SPCS_DISABLED.0,
+ SRCS_Enabled = SPCS_ENABLED.0,
+}}
+ENUM!{enum DISPIDSPRG {
+ DISPID_SRGId = 1,
+ DISPID_SRGRecoContext,
+ DISPID_SRGState,
+ DISPID_SRGRules,
+ DISPID_SRGReset,
+ DISPID_SRGCommit,
+ DISPID_SRGCmdLoadFromFile,
+ DISPID_SRGCmdLoadFromObject,
+ DISPID_SRGCmdLoadFromResource,
+ DISPID_SRGCmdLoadFromMemory,
+ DISPID_SRGCmdLoadFromProprietaryGrammar,
+ DISPID_SRGCmdSetRuleState,
+ DISPID_SRGCmdSetRuleIdState,
+ DISPID_SRGDictationLoad,
+ DISPID_SRGDictationUnload,
+ DISPID_SRGDictationSetState,
+ DISPID_SRGSetWordSequenceData,
+ DISPID_SRGSetTextSelection,
+ DISPID_SRGIsPronounceable,
+}}
+ENUM!{enum SpeechLoadOption {
+ SLOStatic = SPLO_STATIC.0,
+ SLODynamic = SPLO_DYNAMIC.0,
+}}
+ENUM!{enum SpeechWordPronounceable {
+ SWPUnknownWordUnpronounceable = SPWP_UNKNOWN_WORD_UNPRONOUNCEABLE.0,
+ SWPUnknownWordPronounceable = SPWP_UNKNOWN_WORD_PRONOUNCEABLE.0,
+ SWPKnownWordPronounceable = SPWP_KNOWN_WORD_PRONOUNCEABLE.0,
+}}
+ENUM!{enum SpeechGrammarState {
+ SGSEnabled = SPGS_ENABLED.0,
+ SGSDisabled = SPGS_DISABLED.0,
+ SGSExclusive = SPGS_EXCLUSIVE.0,
+}}
+ENUM!{enum SpeechRuleState {
+ SGDSInactive = SPRS_INACTIVE.0,
+ SGDSActive = SPRS_ACTIVE.0,
+ SGDSActiveWithAutoPause = SPRS_ACTIVE_WITH_AUTO_PAUSE.0,
+ SGDSActiveUserDelimited = SPRS_ACTIVE_USER_DELIMITED.0,
+}}
+ENUM!{enum SpeechRuleAttributes {
+ SRATopLevel = SPRAF_TopLevel.0,
+ SRADefaultToActive = SPRAF_Active.0,
+ SRAExport = SPRAF_Export.0,
+ SRAImport = SPRAF_Import.0,
+ SRAInterpreter = SPRAF_Interpreter.0,
+ SRADynamic = SPRAF_Dynamic.0,
+ SRARoot = SPRAF_Root.0,
+}}
+ENUM!{enum SpeechGrammarWordType {
+ SGDisplay = SPWT_DISPLAY.0,
+ SGLexical = SPWT_LEXICAL.0,
+ SGPronounciation = SPWT_PRONUNCIATION.0,
+ SGLexicalNoSpecialChars = SPWT_LEXICAL_NO_SPECIAL_CHARS.0,
+}}
+ENUM!{enum DISPID_SpeechRecoContextEvents {
+ DISPID_SRCEStartStream = 1,
+ DISPID_SRCEEndStream,
+ DISPID_SRCEBookmark,
+ DISPID_SRCESoundStart,
+ DISPID_SRCESoundEnd,
+ DISPID_SRCEPhraseStart,
+ DISPID_SRCERecognition,
+ DISPID_SRCEHypothesis,
+ DISPID_SRCEPropertyNumberChange,
+ DISPID_SRCEPropertyStringChange,
+ DISPID_SRCEFalseRecognition,
+ DISPID_SRCEInterference,
+ DISPID_SRCERequestUI,
+ DISPID_SRCERecognizerStateChange,
+ DISPID_SRCEAdaptation,
+ DISPID_SRCERecognitionForOtherContext,
+ DISPID_SRCEAudioLevel,
+ DISPID_SRCEEnginePrivate,
+}}
+ENUM!{enum SpeechRecognitionType {
+ SRTStandard = 0,
+ SRTAutopause = SPREF_AutoPause.0,
+ SRTEmulated = SPREF_Emulated.0,
+ SRTSMLTimeout = SPREF_SMLTimeout.0,
+ SRTExtendableParse = SPREF_ExtendableParse.0,
+ SRTReSent = SPREF_ReSent.0,
+}}
+ENUM!{enum DISPID_SpeechGrammarRule {
+ DISPID_SGRAttributes = 1,
+ DISPID_SGRInitialState,
+ DISPID_SGRName,
+ DISPID_SGRId,
+ DISPID_SGRClear,
+ DISPID_SGRAddResource,
+ DISPID_SGRAddState,
+}}
+ENUM!{enum DISPID_SpeechGrammarRules {
+ DISPID_SGRsCount = 1,
+ DISPID_SGRsDynamic,
+ DISPID_SGRsAdd,
+ DISPID_SGRsCommit,
+ DISPID_SGRsCommitAndSave,
+ DISPID_SGRsFindRule,
+ DISPID_SGRsItem = ::DISPID_VALUE as u32,
+ DISPID_SGRs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechGrammarRuleState {
+ DISPID_SGRSRule = 1,
+ DISPID_SGRSTransitions,
+ DISPID_SGRSAddWordTransition,
+ DISPID_SGRSAddRuleTransition,
+ DISPID_SGRSAddSpecialTransition,
+}}
+ENUM!{enum SpeechSpecialTransitionType {
+ SSTTWildcard = 1,
+ SSTTDictation,
+ SSTTTextBuffer,
+}}
+ENUM!{enum DISPID_SpeechGrammarRuleStateTransitions {
+ DISPID_SGRSTsCount = 1,
+ DISPID_SGRSTsItem = ::DISPID_VALUE as u32,
+ DISPID_SGRSTs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechGrammarRuleStateTransition {
+ DISPID_SGRSTType = 1,
+ DISPID_SGRSTText,
+ DISPID_SGRSTRule,
+ DISPID_SGRSTWeight,
+ DISPID_SGRSTPropertyName,
+ DISPID_SGRSTPropertyId,
+ DISPID_SGRSTPropertyValue,
+ DISPID_SGRSTNextState,
+}}
+ENUM!{enum SpeechGrammarRuleStateTransitionType {
+ SGRSTTEpsilon = 0,
+ SGRSTTWord,
+ SGRSTTRule,
+ SGRSTTDictation,
+ SGRSTTWildcard,
+ SGRSTTTextBuffer,
+}}
+ENUM!{enum DISPIDSPTSI {
+ DISPIDSPTSI_ActiveOffset = 1,
+ DISPIDSPTSI_ActiveLength,
+ DISPIDSPTSI_SelectionOffset,
+ DISPIDSPTSI_SelectionLength,
+}}
+ENUM!{enum DISPID_SpeechRecoResult {
+ DISPID_SRRRecoContext = 1,
+ DISPID_SRRTimes,
+ DISPID_SRRAudioFormat,
+ DISPID_SRRPhraseInfo,
+ DISPID_SRRAlternates,
+ DISPID_SRRAudio,
+ DISPID_SRRSpeakAudio,
+ DISPID_SRRSaveToMemory,
+ DISPID_SRRDiscardResultInfo,
+}}
+ENUM!{enum SpeechDiscardType {
+ SDTProperty = SPDF_PROPERTY.0,
+ SDTReplacement = SPDF_REPLACEMENT.0,
+ SDTRule = SPDF_RULE.0,
+ SDTDisplayText = SPDF_DISPLAYTEXT.0,
+ SDTLexicalForm = SPDF_LEXICALFORM.0,
+ SDTPronunciation = SPDF_PRONUNCIATION.0,
+ SDTAudio = SPDF_AUDIO.0,
+ SDTAlternates = SPDF_ALTERNATES.0,
+ SDTAll = SPDF_ALL.0,
+}}
+ENUM!{enum DISPID_SpeechXMLRecoResult {
+ DISPID_SRRGetXMLResult,
+ DISPID_SRRGetXMLErrorInfo,
+}}
+ENUM!{enum DISPID_SpeechRecoResult2 {
+ DISPID_SRRSetTextFeedback,
+}}
+ENUM!{enum DISPID_SpeechPhraseBuilder {
+ DISPID_SPPBRestorePhraseFromMemory = 1,
+}}
+ENUM!{enum DISPID_SpeechRecoResultTimes {
+ DISPID_SRRTStreamTime = 1,
+ DISPID_SRRTLength,
+ DISPID_SRRTTickCount,
+ DISPID_SRRTOffsetFromStart,
+}}
+ENUM!{enum DISPID_SpeechPhraseAlternate {
+ DISPID_SPARecoResult = 1,
+ DISPID_SPAStartElementInResult,
+ DISPID_SPANumberOfElementsInResult,
+ DISPID_SPAPhraseInfo,
+ DISPID_SPACommit,
+}}
+ENUM!{enum DISPID_SpeechPhraseAlternates {
+ DISPID_SPAsCount = 1,
+ DISPID_SPAsItem = ::DISPID_VALUE as u32,
+ DISPID_SPAs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechPhraseInfo {
+ DISPID_SPILanguageId = 1,
+ DISPID_SPIGrammarId,
+ DISPID_SPIStartTime,
+ DISPID_SPIAudioStreamPosition,
+ DISPID_SPIAudioSizeBytes,
+ DISPID_SPIRetainedSizeBytes,
+ DISPID_SPIAudioSizeTime,
+ DISPID_SPIRule,
+ DISPID_SPIProperties,
+ DISPID_SPIElements,
+ DISPID_SPIReplacements,
+ DISPID_SPIEngineId,
+ DISPID_SPIEnginePrivateData,
+ DISPID_SPISaveToMemory,
+ DISPID_SPIGetText,
+ DISPID_SPIGetDisplayAttributes,
+}}
+ENUM!{enum DISPID_SpeechPhraseElement {
+ DISPID_SPEAudioTimeOffset = 1,
+ DISPID_SPEAudioSizeTime,
+ DISPID_SPEAudioStreamOffset,
+ DISPID_SPEAudioSizeBytes,
+ DISPID_SPERetainedStreamOffset,
+ DISPID_SPERetainedSizeBytes,
+ DISPID_SPEDisplayText,
+ DISPID_SPELexicalForm,
+ DISPID_SPEPronunciation,
+ DISPID_SPEDisplayAttributes,
+ DISPID_SPERequiredConfidence,
+ DISPID_SPEActualConfidence,
+ DISPID_SPEEngineConfidence,
+}}
+ENUM!{enum SpeechEngineConfidence {
+ SECLowConfidence = -1i32 as u32,
+ SECNormalConfidence = 0,
+ SECHighConfidence = 1,
+}}
+ENUM!{enum DISPID_SpeechPhraseElements {
+ DISPID_SPEsCount = 1,
+ DISPID_SPEsItem = ::DISPID_VALUE as u32,
+ DISPID_SPEs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechPhraseReplacement {
+ DISPID_SPRDisplayAttributes = 1,
+ DISPID_SPRText,
+ DISPID_SPRFirstElement,
+ DISPID_SPRNumberOfElements,
+}}
+ENUM!{enum DISPID_SpeechPhraseReplacements {
+ DISPID_SPRsCount = 1,
+ DISPID_SPRsItem = ::DISPID_VALUE as u32,
+ DISPID_SPRs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechPhraseProperty {
+ DISPID_SPPName = 1,
+ DISPID_SPPId,
+ DISPID_SPPValue,
+ DISPID_SPPFirstElement,
+ DISPID_SPPNumberOfElements,
+ DISPID_SPPEngineConfidence,
+ DISPID_SPPConfidence,
+ DISPID_SPPParent,
+ DISPID_SPPChildren,
+}}
+ENUM!{enum DISPID_SpeechPhraseProperties {
+ DISPID_SPPsCount = 1,
+ DISPID_SPPsItem = ::DISPID_VALUE as u32,
+ DISPID_SPPs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechPhraseRule {
+ DISPID_SPRuleName = 1,
+ DISPID_SPRuleId,
+ DISPID_SPRuleFirstElement,
+ DISPID_SPRuleNumberOfElements,
+ DISPID_SPRuleParent,
+ DISPID_SPRuleChildren,
+ DISPID_SPRuleConfidence,
+ DISPID_SPRuleEngineConfidence,
+}}
+ENUM!{enum DISPID_SpeechPhraseRules {
+ DISPID_SPRulesCount = 1,
+ DISPID_SPRulesItem = ::DISPID_VALUE as u32,
+ DISPID_SPRules_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechLexicon {
+ DISPID_SLGenerationId = 1,
+ DISPID_SLGetWords,
+ DISPID_SLAddPronunciation,
+ DISPID_SLAddPronunciationByPhoneIds,
+ DISPID_SLRemovePronunciation,
+ DISPID_SLRemovePronunciationByPhoneIds,
+ DISPID_SLGetPronunciations,
+ DISPID_SLGetGenerationChange,
+}}
+ENUM!{enum SpeechLexiconType {
+ SLTUser = eLEXTYPE_USER.0,
+ SLTApp = eLEXTYPE_APP.0,
+}}
+ENUM!{enum SpeechPartOfSpeech {
+ SPSNotOverriden = SPPS_NotOverriden.0,
+ SPSUnknown = SPPS_Unknown.0,
+ SPSNoun = SPPS_Noun.0,
+ SPSVerb = SPPS_Verb.0,
+ SPSModifier = SPPS_Modifier.0,
+ SPSFunction = SPPS_Function.0,
+ SPSInterjection = SPPS_Interjection.0,
+ SPSLMA = SPPS_LMA.0,
+ SPSSuppressWord = SPPS_SuppressWord.0,
+}}
+ENUM!{enum DISPID_SpeechLexiconWords {
+ DISPID_SLWsCount = 1,
+ DISPID_SLWsItem = ::DISPID_VALUE as u32,
+ DISPID_SLWs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum SpeechWordType {
+ SWTAdded = eWORDTYPE_ADDED.0,
+ SWTDeleted = eWORDTYPE_DELETED.0,
+}}
+ENUM!{enum DISPID_SpeechLexiconWord {
+ DISPID_SLWLangId = 1,
+ DISPID_SLWType,
+ DISPID_SLWWord,
+ DISPID_SLWPronunciations,
+}}
+ENUM!{enum DISPID_SpeechLexiconProns {
+ DISPID_SLPsCount = 1,
+ DISPID_SLPsItem = ::DISPID_VALUE as u32,
+ DISPID_SLPs_NewEnum = ::DISPID_NEWENUM as u32,
+}}
+ENUM!{enum DISPID_SpeechLexiconPronunciation {
+ DISPID_SLPType = 1,
+ DISPID_SLPLangId,
+ DISPID_SLPPartOfSpeech,
+ DISPID_SLPPhoneIds,
+ DISPID_SLPSymbolic,
+}}
+ENUM!{enum DISPID_SpeechPhoneConverter {
+ DISPID_SPCLangId = 1,
+ DISPID_SPCPhoneToId,
+ DISPID_SPCIdToPhone,
+}}
+RIDL!(
+interface ISpeechDataKey(ISpeechDataKeyVtbl): IDispatch(IDispatchVtbl) {
+ fn SetBinaryValue(&mut self, ValueName: ::BSTR, Value: ::VARIANT) -> ::HRESULT,
+ fn GetBinaryValue(&mut self, ValueName: ::BSTR, Value: *mut ::VARIANT) -> ::HRESULT,
+ fn SetStringValue(&mut self, ValueName: ::BSTR, Value: ::BSTR) -> ::HRESULT,
+ fn GetStringValue(&mut self, ValueName: ::BSTR, Value: *mut ::BSTR) -> ::HRESULT,
+ fn SetLongValue(&mut self, ValueName: ::BSTR, Value: ::c_long) -> ::HRESULT,
+ fn GetLongValue(&mut self, ValueName: ::BSTR, Value: *mut ::c_long) -> ::HRESULT,
+ fn OpenKey(&mut self, SubKeyName: ::BSTR, SubKey: *mut *mut ISpeechDataKey) -> ::HRESULT,
+ fn CreateKey(&mut self, SubKeyName: ::BSTR, SubKey: *mut *mut ISpeechDataKey) -> ::HRESULT,
+ fn DeleteKey(&mut self, SubKeyName: ::BSTR) -> ::HRESULT,
+ fn DeleteValue(&mut self, ValueName: ::BSTR) -> ::HRESULT,
+ fn EnumKeys(&mut self, Index: ::c_long, SubKeyName: *mut ::BSTR) -> ::HRESULT,
+ fn EnumValues(&mut self, Index: ::c_long, ValueName: *mut ::BSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechObjectToken(ISpeechObjectTokenVtbl): IDispatch(IDispatchVtbl) {
+ fn get_Id(&mut self, ObjectId: *mut ::BSTR) -> ::HRESULT,
+ fn get_DataKey(&mut self, DataKey: *mut *mut ISpeechDataKey) -> ::HRESULT,
+ fn get_Category(&mut self, Category: *mut *mut ISpeechObjectTokenCategory) -> ::HRESULT,
+ fn GetDescription(&mut self, Locale: ::c_long, Description: *mut ::BSTR) -> ::HRESULT,
+ fn SetId(
+ &mut self, Id: ::BSTR, CategoryId: ::BSTR, CreateIfNotExist: ::VARIANT_BOOL
+ ) -> ::HRESULT,
+ fn GetAttribute(&mut self, AttributeName: ::BSTR, AttributeValue: *mut ::BSTR) -> ::HRESULT,
+ fn CreateInstance(
+ &mut self, pUnkOuter: *mut ::IUnknown, ClsContext: SpeechTokenContext,
+ Object: *mut *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn Remove(&mut self, ObjectStorageCLSID: ::BSTR) -> ::HRESULT,
+ fn GetStorageFileName(
+ &mut self, ObjectStorageCLSID: ::BSTR, KeyName: ::BSTR, FileName: ::BSTR, Folder: ::BSTR,
+ FilePath: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn RemoveStorageFileName(
+ &mut self, ObjectStorageCLSID: ::BSTR, KeyName: ::BSTR, DeleteFile: ::VARIANT_BOOL
+ ) -> ::HRESULT,
+ fn IsUISupported(
+ &mut self, TypeOfUI: ::BSTR, ExtraData: *const ::VARIANT, Object: *mut ::IUnknown,
+ Supported: *mut ::VARIANT_BOOL
+ ) -> ::HRESULT,
+ fn DisplayUI(
+ &mut self, hWnd: ::c_long, Title: ::BSTR, TypeOfUI: ::BSTR, ExtraData: *const ::VARIANT,
+ Object: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn MatchesAttributes(&mut self, Attributes: ::BSTR, Matches: *mut ::VARIANT_BOOL) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechObjectTokens(ISpeechObjectTokensVtbl): IDispatch(IDispatchVtbl) {
+ fn get_Count(&mut self, Count: *mut ::c_long) -> ::HRESULT,
+ fn Item(&mut self, Index: ::c_long, Token: *mut *mut ISpeechObjectToken) -> ::HRESULT,
+ fn get__NewEnum(&mut self, ppEnumVARIANT: *mut *mut ::IUnknown) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechObjectTokenCategory(ISpeechObjectTokenCategoryVtbl): IDispatch(IDispatchVtbl) {
+ fn get_Id(&mut self, Id: *mut ::BSTR) -> ::HRESULT,
+ fn put_Default(&mut self, TokenId: ::BSTR) -> ::HRESULT,
+ fn get_Default(&mut self, TokenId: *mut ::BSTR) -> ::HRESULT,
+ fn SetId(&mut self, Id: ::BSTR, CreateIfNotExist: ::VARIANT_BOOL) -> ::HRESULT,
+ fn GetDataKey(
+ &mut self, Location: SpeechDataKeyLocation, DataKey: *mut *mut ISpeechDataKey
+ ) -> ::HRESULT,
+ fn EnumerateTokens(
+ &mut self, RequiredAttributes: ::BSTR, OptionalAttributes: ::BSTR,
+ Tokens: *mut *mut ISpeechObjectTokens
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechAudioBufferInfo(ISpeechAudioBufferInfoVtbl): IDispatch(IDispatchVtbl) {
+ fn get_MinNotification(&mut self, MinNotification: *mut ::c_long) -> ::HRESULT,
+ fn put_MinNotification(&mut self, MinNotification: ::c_long) -> ::HRESULT,
+ fn get_BufferSize(&mut self, BufferSize: *mut ::c_long) -> ::HRESULT,
+ fn put_BufferSize(&mut self, BufferSize: ::c_long) -> ::HRESULT,
+ fn get_EventBias(&mut self, EventBias: *mut ::c_long) -> ::HRESULT,
+ fn put_EventBias(&mut self, EventBias: ::c_long) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechAudioStatus(ISpeechAudioStatusVtbl): IDispatch(IDispatchVtbl) {
+ fn get_FreeBufferSpace(&mut self, FreeBufferSpace: *mut ::c_long) -> ::HRESULT,
+ fn get_NonBlockingIO(&mut self, NonBlockingIO: *mut ::c_long) -> ::HRESULT,
+ fn get_State(&mut self, State: *mut SpeechAudioState) -> ::HRESULT,
+ fn get_CurrentSeekPosition(&mut self, CurrentSeekPosition: *mut ::VARIANT) -> ::HRESULT,
+ fn get_CurrentDevicePosition(&mut self, CurrentDevicePosition: *mut ::VARIANT) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechAudioFormat(ISpeechAudioFormatVtbl): IDispatch(IDispatchVtbl) {
+ fn get_Type(&mut self, AudioFormat: *mut SpeechAudioFormatType) -> ::HRESULT,
+ fn put_Type(&mut self, AudioFormat: SpeechAudioFormatType) -> ::HRESULT,
+ fn get_Guid(&mut self, Guid: *mut ::BSTR) -> ::HRESULT,
+ fn put_Guid(&mut self, Guid: ::BSTR) -> ::HRESULT,
+ fn GetWaveFormatEx(&mut self, SpeechWaveFormatEx: *mut *mut ISpeechWaveFormatEx) -> ::HRESULT,
+ fn SetWaveFormatEx(&mut self, SpeechWaveFormatEx: *mut ISpeechWaveFormatEx) -> ::HRESULT
+}
+);
+RIDL!(
+interface ISpeechWaveFormatEx(ISpeechWaveFormatExVtbl): IDispatch(IDispatchVtbl) {
+ fn get_FormatTag(&mut self, FormatTag: *mut ::c_short) -> ::HRESULT,
+ fn put_FormatTag(&mut self, FormatTag: ::c_short) -> ::HRESULT,
+ fn get_Channels(&mut self, Channels: *mut ::c_short) -> ::HRESULT,
+ fn put_Channels(&mut self, Channels: ::c_short) -> ::HRESULT,
+ fn get_SamplesPerSec(&mut self, SamplesPerSec: *mut ::c_long) -> ::HRESULT,
+ fn put_SamplesPerSec(&mut self, SamplesPerSec: ::c_long) -> ::HRESULT,
+ fn get_AvgBytesPerSec(&mut self, AvgBytesPerSec: *mut ::c_long) -> ::HRESULT,
+ fn put_AvgBytesPerSec(&mut self, AvgBytesPerSec: ::c_long) -> ::HRESULT,
+ fn get_BlockAlign(&mut self, BlockAlign: *mut ::c_short) -> ::HRESULT,
+ fn put_BlockAlign(&mut self, BlockAlign: ::c_short) -> ::HRESULT,
+ fn get_BitsPerSample(&mut self, BitsPerSample: *mut ::c_short) -> ::HRESULT,
+ fn put_BitsPerSample(&mut self, BitsPerSample: ::c_short) -> ::HRESULT,
+ fn get_ExtraData(&mut self, ExtraData: *mut ::VARIANT) -> ::HRESULT,
+ fn put_ExtraData(&mut self, ExtraData: ::VARIANT) -> ::HRESULT
+}
+);
diff --git a/third_party/rust/winapi-0.2.8/src/schannel.rs b/third_party/rust/winapi-0.2.8/src/schannel.rs
new file mode 100644
index 0000000000..d57aec82fe
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/schannel.rs
@@ -0,0 +1,333 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Public Definitions for SCHANNEL Security Provider
+pub const UNISP_NAME: &'static str = "Microsoft Unified Security Protocol Provider";
+pub const SSL2SP_NAME: &'static str = "Microsoft SSL 2.0";
+pub const SSL3SP_NAME: &'static str = "Microsoft SSL 3.0";
+pub const TLS1SP_NAME: &'static str = "Microsoft TLS 1.0";
+pub const PCT1SP_NAME: &'static str = "Microsoft PCT 1.0";
+pub const SCHANNEL_NAME: &'static str = "Schannel";
+ENUM!{enum eTlsSignatureAlgorithm {
+ TlsSignatureAlgorithm_Anonymous = 0,
+ TlsSignatureAlgorithm_Rsa = 1,
+ TlsSignatureAlgorithm_Dsa = 2,
+ TlsSignatureAlgorithm_Ecdsa = 3,
+}}
+ENUM!{enum eTlsHashAlgorithm {
+ TlsHashAlgorithm_None = 0,
+ TlsHashAlgorithm_Md5 = 1,
+ TlsHashAlgorithm_Sha1 = 2,
+ TlsHashAlgorithm_Sha224 = 3,
+ TlsHashAlgorithm_Sha256 = 4,
+ TlsHashAlgorithm_Sha384 = 5,
+ TlsHashAlgorithm_Sha512 = 6,
+}}
+pub const UNISP_RPC_ID: ::DWORD = 14;
+STRUCT!{struct SecPkgContext_RemoteCredentialInfo {
+ cbCertificateChain: ::DWORD,
+ pbCertificateChain: ::PBYTE,
+ cCertificates: ::DWORD,
+ fFlags: ::DWORD,
+ dwBits: ::DWORD,
+}}
+pub type PSecPkgContext_RemoteCredentialInfo = *mut SecPkgContext_RemoteCredentialInfo;
+pub type SecPkgContext_RemoteCredenitalInfo = SecPkgContext_RemoteCredentialInfo;
+pub type PSecPkgContext_RemoteCredenitalInfo = *mut SecPkgContext_RemoteCredentialInfo;
+pub const RCRED_STATUS_NOCRED: ::DWORD = 0x00000000;
+pub const RCRED_CRED_EXISTS: ::DWORD = 0x00000001;
+pub const RCRED_STATUS_UNKNOWN_ISSUER: ::DWORD = 0x00000002;
+STRUCT!{struct SecPkgContext_LocalCredentialInfo {
+ cbCertificateChain: ::DWORD,
+ pbCertificateChain: ::PBYTE,
+ cCertificates: ::DWORD,
+ fFlags: ::DWORD,
+ dwBits: ::DWORD,
+}}
+pub type PSecPkgContext_LocalCredentialInfo = *mut SecPkgContext_LocalCredentialInfo;
+pub type SecPkgContext_LocalCredenitalInfo = SecPkgContext_LocalCredentialInfo;
+pub type PSecPkgContext_LocalCredenitalInfo = *mut SecPkgContext_LocalCredentialInfo;
+pub const LCRED_STATUS_NOCRED: ::DWORD = 0x00000000;
+pub const LCRED_CRED_EXISTS: ::DWORD = 0x00000001;
+pub const LCRED_STATUS_UNKNOWN_ISSUER: ::DWORD = 0x00000002;
+STRUCT!{struct SecPkgContext_ClientCertPolicyResult {
+ dwPolicyResult: ::HRESULT,
+ guidPolicyId: ::GUID,
+}}
+pub type PSecPkgContext_ClientCertPolicyResult = *mut SecPkgContext_ClientCertPolicyResult;
+STRUCT!{struct SecPkgContext_IssuerListInfoEx {
+ aIssuers: ::PCERT_NAME_BLOB,
+ cIssuers: ::DWORD,
+}}
+pub type PSecPkgContext_IssuerListInfoEx = *mut SecPkgContext_IssuerListInfoEx;
+STRUCT!{struct SecPkgContext_ConnectionInfo {
+ dwProtocol: ::DWORD,
+ aiCipher: ::ALG_ID,
+ dwCipherStrength: ::DWORD,
+ aiHash: ::ALG_ID,
+ dwHashStrength: ::DWORD,
+ aiExch: ::ALG_ID,
+ dwExchStrength: ::DWORD,
+}}
+pub type PSecPkgContext_ConnectionInfo = *mut SecPkgContext_ConnectionInfo;
+pub const SZ_ALG_MAX_SIZE: usize = 64;
+pub const SECPKGCONTEXT_CIPHERINFO_V1: ::DWORD = 1;
+STRUCT!{nodebug struct SecPkgContext_CipherInfo {
+ dwVersion: ::DWORD,
+ dwProtocol: ::DWORD,
+ dwCipherSuite: ::DWORD,
+ dwBaseCipherSuite: ::DWORD,
+ szCipherSuite: [::WCHAR; SZ_ALG_MAX_SIZE],
+ szCipher: [::WCHAR; SZ_ALG_MAX_SIZE],
+ dwCipherLen: ::DWORD,
+ dwCipherBlockLen: ::DWORD,
+ szHash: [::WCHAR; SZ_ALG_MAX_SIZE],
+ dwHashLen: ::DWORD,
+ szExchange: [::WCHAR; SZ_ALG_MAX_SIZE],
+ dwMinExchangeLen: ::DWORD,
+ dwMaxExchangeLen: ::DWORD,
+ szCertificate: [::WCHAR; SZ_ALG_MAX_SIZE],
+ dwKeyType: ::DWORD,
+}}
+pub type PSecPkgContext_CipherInfo = *mut SecPkgContext_CipherInfo;
+STRUCT!{nodebug struct SecPkgContext_EapKeyBlock {
+ rgbKeys: [::BYTE; 128],
+ rgbIVs: [::BYTE; 64],
+}}
+pub type PSecPkgContext_EapKeyBlock = *mut SecPkgContext_EapKeyBlock;
+STRUCT!{struct SecPkgContext_MappedCredAttr {
+ dwAttribute: ::DWORD,
+ pvBuffer: ::PVOID,
+}}
+pub type PSecPkgContext_MappedCredAttr = *mut SecPkgContext_MappedCredAttr;
+pub const SSL_SESSION_RECONNECT: ::DWORD = 1;
+STRUCT!{struct SecPkgContext_SessionInfo {
+ dwFlags: ::DWORD,
+ cbSessionId: ::DWORD,
+ rgbSessionId: [::BYTE; 32],
+}}
+pub type PSecPkgContext_SessionInfo = *mut SecPkgContext_SessionInfo;
+STRUCT!{struct SecPkgContext_SessionAppData {
+ dwFlags: ::DWORD,
+ cbAppData: ::DWORD,
+ pbAppData: ::PBYTE,
+}}
+pub type PSecPkgContext_SessionAppData = *mut SecPkgContext_SessionAppData;
+STRUCT!{struct SecPkgContext_EapPrfInfo {
+ dwVersion: ::DWORD,
+ cbPrfData: ::DWORD,
+ pbPrfData: ::PBYTE,
+}}
+pub type PSecPkgContext_EapPrfInfo = *mut SecPkgContext_EapPrfInfo;
+STRUCT!{struct SecPkgContext_SupportedSignatures {
+ cSignatureAndHashAlgorithms: ::WORD,
+ pSignatureAndHashAlgorithms: *mut ::WORD,
+}}
+pub type PSecPkgContext_SupportedSignatures = *mut SecPkgContext_SupportedSignatures;
+STRUCT!{struct SecPkgContext_Certificates {
+ cCertificates: ::DWORD,
+ cbCertificateChain: ::DWORD,
+ pbCertificateChain: ::PBYTE,
+}}
+pub type PSecPkgContext_Certificates = *mut SecPkgContext_Certificates;
+STRUCT!{struct SecPkgContext_CertInfo {
+ dwVersion: ::DWORD,
+ cbSubjectName: ::DWORD,
+ pwszSubjectName: ::LPWSTR,
+ cbIssuerName: ::DWORD,
+ pwszIssuerName: ::LPWSTR,
+ dwKeySize: ::DWORD,
+}}
+pub type PSecPkgContext_CertInfo = *mut SecPkgContext_CertInfo;
+pub const KERN_CONTEXT_CERT_INFO_V1: ::DWORD = 0x00000000;
+STRUCT!{struct SecPkgContext_UiInfo {
+ hParentWindow: ::HWND,
+}}
+pub type PSecPkgContext_UiInfo = *mut SecPkgContext_UiInfo;
+STRUCT!{struct SecPkgContext_EarlyStart {
+ dwEarlyStartFlags: ::DWORD,
+}}
+pub type PSecPkgContext_EarlyStart = *mut SecPkgContext_EarlyStart;
+pub const ENABLE_TLS_CLIENT_EARLY_START: ::DWORD = 0x00000001;
+pub const SCH_CRED_V1: ::DWORD = 0x00000001;
+pub const SCH_CRED_V2: ::DWORD = 0x00000002;
+pub const SCH_CRED_VERSION: ::DWORD = 0x00000002;
+pub const SCH_CRED_V3: ::DWORD = 0x00000003;
+pub const SCHANNEL_CRED_VERSION: ::DWORD = 0x00000004;
+pub enum _HMAPPER {}
+STRUCT!{struct SCHANNEL_CRED {
+ dwVersion: ::DWORD,
+ cCreds: ::DWORD,
+ paCred: *mut ::PCCERT_CONTEXT,
+ hRootStore: ::HCERTSTORE,
+ cMappers: ::DWORD,
+ aphMappers: *mut *mut _HMAPPER,
+ cSupportedAlgs: ::DWORD,
+ palgSupportedAlgs: *mut ::ALG_ID,
+ grbitEnabledProtocols: ::DWORD,
+ dwMinimumCipherStrength: ::DWORD,
+ dwMaximumCipherStrength: ::DWORD,
+ dwSessionLifespan: ::DWORD,
+ dwFlags: ::DWORD,
+ dwCredFormat: ::DWORD,
+}}
+pub type PSCHANNEL_CRED = *mut SCHANNEL_CRED;
+pub const SCH_CRED_FORMAT_CERT_CONTEXT: ::DWORD = 0x00000000;
+pub const SCH_CRED_FORMAT_CERT_HASH: ::DWORD = 0x00000001;
+pub const SCH_CRED_FORMAT_CERT_HASH_STORE: ::DWORD = 0x00000002;
+pub const SCH_CRED_MAX_STORE_NAME_SIZE: usize = 128;
+pub const SCH_CRED_MAX_SUPPORTED_ALGS: ::DWORD = 256;
+pub const SCH_CRED_MAX_SUPPORTED_CERTS: ::DWORD = 100;
+STRUCT!{struct SCHANNEL_CERT_HASH {
+ dwLength: ::DWORD,
+ dwFlags: ::DWORD,
+ hProv: ::HCRYPTPROV,
+ ShaHash: [::BYTE; 20],
+}}
+pub type PSCHANNEL_CERT_HASH = *mut SCHANNEL_CERT_HASH;
+STRUCT!{nodebug struct SCHANNEL_CERT_HASH_STORE {
+ dwLength: ::DWORD,
+ dwFlags: ::DWORD,
+ hProv: ::HCRYPTPROV,
+ ShaHash: [::BYTE; 20],
+ pwszStoreName: [::WCHAR; SCH_CRED_MAX_STORE_NAME_SIZE],
+}}
+pub type PSCHANNEL_CERT_HASH_STORE = *mut SCHANNEL_CERT_HASH_STORE;
+pub const SCH_MACHINE_CERT_HASH: ::DWORD = 0x00000001;
+pub const SCH_CRED_NO_SYSTEM_MAPPER: ::DWORD = 0x00000002;
+pub const SCH_CRED_NO_SERVERNAME_CHECK: ::DWORD = 0x00000004;
+pub const SCH_CRED_MANUAL_CRED_VALIDATION: ::DWORD = 0x00000008;
+pub const SCH_CRED_NO_DEFAULT_CREDS: ::DWORD = 0x00000010;
+pub const SCH_CRED_AUTO_CRED_VALIDATION: ::DWORD = 0x00000020;
+pub const SCH_CRED_USE_DEFAULT_CREDS: ::DWORD = 0x00000040;
+pub const SCH_CRED_DISABLE_RECONNECTS: ::DWORD = 0x00000080;
+pub const SCH_CRED_REVOCATION_CHECK_END_CERT: ::DWORD = 0x00000100;
+pub const SCH_CRED_REVOCATION_CHECK_CHAIN: ::DWORD = 0x00000200;
+pub const SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT: ::DWORD = 0x00000400;
+pub const SCH_CRED_IGNORE_NO_REVOCATION_CHECK: ::DWORD = 0x00000800;
+pub const SCH_CRED_IGNORE_REVOCATION_OFFLINE: ::DWORD = 0x00001000;
+pub const SCH_CRED_RESTRICTED_ROOTS: ::DWORD = 0x00002000;
+pub const SCH_CRED_REVOCATION_CHECK_CACHE_ONLY: ::DWORD = 0x00004000;
+pub const SCH_CRED_CACHE_ONLY_URL_RETRIEVAL: ::DWORD = 0x00008000;
+pub const SCH_CRED_MEMORY_STORE_CERT: ::DWORD = 0x00010000;
+pub const SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE: ::DWORD = 0x00020000;
+pub const SCH_SEND_ROOT_CERT: ::DWORD = 0x00040000;
+pub const SCH_CRED_SNI_CREDENTIAL: ::DWORD = 0x00080000;
+pub const SCH_CRED_SNI_ENABLE_OCSP: ::DWORD = 0x00100000;
+pub const SCH_SEND_AUX_RECORD: ::DWORD = 0x00200000;
+pub const SCH_USE_STRONG_CRYPTO: ::DWORD = 0x00400000;
+pub const SCHANNEL_RENEGOTIATE: ::DWORD = 0;
+pub const SCHANNEL_SHUTDOWN: ::DWORD = 1;
+pub const SCHANNEL_ALERT: ::DWORD = 2;
+pub const SCHANNEL_SESSION: ::DWORD = 3;
+STRUCT!{struct SCHANNEL_ALERT_TOKEN {
+ dwTokenType: ::DWORD,
+ dwAlertType: ::DWORD,
+ dwAlertNumber: ::DWORD,
+}}
+pub const TLS1_ALERT_WARNING: ::DWORD = 1;
+pub const TLS1_ALERT_FATAL: ::DWORD = 2;
+pub const TLS1_ALERT_CLOSE_NOTIFY: ::DWORD = 0;
+pub const TLS1_ALERT_UNEXPECTED_MESSAGE: ::DWORD = 10;
+pub const TLS1_ALERT_BAD_RECORD_MAC: ::DWORD = 20;
+pub const TLS1_ALERT_DECRYPTION_FAILED: ::DWORD = 21;
+pub const TLS1_ALERT_RECORD_OVERFLOW: ::DWORD = 22;
+pub const TLS1_ALERT_DECOMPRESSION_FAIL: ::DWORD = 30;
+pub const TLS1_ALERT_HANDSHAKE_FAILURE: ::DWORD = 40;
+pub const TLS1_ALERT_BAD_CERTIFICATE: ::DWORD = 42;
+pub const TLS1_ALERT_UNSUPPORTED_CERT: ::DWORD = 43;
+pub const TLS1_ALERT_CERTIFICATE_REVOKED: ::DWORD = 44;
+pub const TLS1_ALERT_CERTIFICATE_EXPIRED: ::DWORD = 45;
+pub const TLS1_ALERT_CERTIFICATE_UNKNOWN: ::DWORD = 46;
+pub const TLS1_ALERT_ILLEGAL_PARAMETER: ::DWORD = 47;
+pub const TLS1_ALERT_UNKNOWN_CA: ::DWORD = 48;
+pub const TLS1_ALERT_ACCESS_DENIED: ::DWORD = 49;
+pub const TLS1_ALERT_DECODE_ERROR: ::DWORD = 50;
+pub const TLS1_ALERT_DECRYPT_ERROR: ::DWORD = 51;
+pub const TLS1_ALERT_EXPORT_RESTRICTION: ::DWORD = 60;
+pub const TLS1_ALERT_PROTOCOL_VERSION: ::DWORD = 70;
+pub const TLS1_ALERT_INSUFFIENT_SECURITY: ::DWORD = 71;
+pub const TLS1_ALERT_INTERNAL_ERROR: ::DWORD = 80;
+pub const TLS1_ALERT_USER_CANCELED: ::DWORD = 90;
+pub const TLS1_ALERT_NO_RENEGOTIATION: ::DWORD = 100;
+pub const TLS1_ALERT_UNSUPPORTED_EXT: ::DWORD = 110;
+pub const TLS1_ALERT_NO_APP_PROTOCOL: ::DWORD = 120;
+pub const SSL_SESSION_ENABLE_RECONNECTS: ::DWORD = 1;
+pub const SSL_SESSION_DISABLE_RECONNECTS: ::DWORD = 2;
+STRUCT!{struct SCHANNEL_SESSION_TOKEN {
+ dwTokenType: ::DWORD,
+ dwFlags: ::DWORD,
+}}
+STRUCT!{nodebug struct SCHANNEL_CLIENT_SIGNATURE {
+ cbLength: ::DWORD,
+ aiHash: ::ALG_ID,
+ cbHash: ::DWORD,
+ HashValue: [::BYTE; 36],
+ CertThumbprint: [::BYTE; 20],
+}}
+pub type PSCHANNEL_CLIENT_SIGNATURE = *mut SCHANNEL_CLIENT_SIGNATURE;
+pub const SP_PROT_PCT1_SERVER: ::DWORD = 0x00000001;
+pub const SP_PROT_PCT1_CLIENT: ::DWORD = 0x00000002;
+pub const SP_PROT_PCT1: ::DWORD = SP_PROT_PCT1_SERVER | SP_PROT_PCT1_CLIENT;
+pub const SP_PROT_SSL2_SERVER: ::DWORD = 0x00000004;
+pub const SP_PROT_SSL2_CLIENT: ::DWORD = 0x00000008;
+pub const SP_PROT_SSL2: ::DWORD = SP_PROT_SSL2_SERVER | SP_PROT_SSL2_CLIENT;
+pub const SP_PROT_SSL3_SERVER: ::DWORD = 0x00000010;
+pub const SP_PROT_SSL3_CLIENT: ::DWORD = 0x00000020;
+pub const SP_PROT_SSL3: ::DWORD = SP_PROT_SSL3_SERVER | SP_PROT_SSL3_CLIENT;
+pub const SP_PROT_TLS1_SERVER: ::DWORD = 0x00000040;
+pub const SP_PROT_TLS1_CLIENT: ::DWORD = 0x00000080;
+pub const SP_PROT_TLS1: ::DWORD = SP_PROT_TLS1_SERVER | SP_PROT_TLS1_CLIENT;
+pub const SP_PROT_SSL3TLS1_CLIENTS: ::DWORD = SP_PROT_TLS1_CLIENT | SP_PROT_SSL3_CLIENT;
+pub const SP_PROT_SSL3TLS1_SERVERS: ::DWORD = SP_PROT_TLS1_SERVER | SP_PROT_SSL3_SERVER;
+pub const SP_PROT_SSL3TLS1: ::DWORD = SP_PROT_SSL3 | SP_PROT_TLS1;
+pub const SP_PROT_UNI_SERVER: ::DWORD = 0x40000000;
+pub const SP_PROT_UNI_CLIENT: ::DWORD = 0x80000000;
+pub const SP_PROT_UNI: ::DWORD = SP_PROT_UNI_SERVER | SP_PROT_UNI_CLIENT;
+pub const SP_PROT_ALL: ::DWORD = 0xffffffff;
+pub const SP_PROT_NONE: ::DWORD = 0;
+pub const SP_PROT_CLIENTS: ::DWORD = SP_PROT_PCT1_CLIENT | SP_PROT_SSL2_CLIENT
+ | SP_PROT_SSL3_CLIENT | SP_PROT_UNI_CLIENT | SP_PROT_TLS1_CLIENT;
+pub const SP_PROT_SERVERS: ::DWORD = SP_PROT_PCT1_SERVER | SP_PROT_SSL2_SERVER
+ | SP_PROT_SSL3_SERVER | SP_PROT_UNI_SERVER | SP_PROT_TLS1_SERVER;
+pub const SP_PROT_TLS1_0_SERVER: ::DWORD = SP_PROT_TLS1_SERVER;
+pub const SP_PROT_TLS1_0_CLIENT: ::DWORD = SP_PROT_TLS1_CLIENT;
+pub const SP_PROT_TLS1_0: ::DWORD = SP_PROT_TLS1_0_SERVER | SP_PROT_TLS1_0_CLIENT;
+pub const SP_PROT_TLS1_1_SERVER: ::DWORD = 0x00000100;
+pub const SP_PROT_TLS1_1_CLIENT: ::DWORD = 0x00000200;
+pub const SP_PROT_TLS1_1: ::DWORD = SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_1_CLIENT;
+pub const SP_PROT_TLS1_2_SERVER: ::DWORD = 0x00000400;
+pub const SP_PROT_TLS1_2_CLIENT: ::DWORD = 0x00000800;
+pub const SP_PROT_TLS1_2: ::DWORD = SP_PROT_TLS1_2_SERVER | SP_PROT_TLS1_2_CLIENT;
+pub const SP_PROT_DTLS_SERVER: ::DWORD = 0x00010000;
+pub const SP_PROT_DTLS_CLIENT: ::DWORD = 0x00020000;
+pub const SP_PROT_DTLS: ::DWORD = SP_PROT_DTLS_SERVER | SP_PROT_DTLS_CLIENT;
+pub const SP_PROT_DTLS1_0_SERVER: ::DWORD = SP_PROT_DTLS_SERVER;
+pub const SP_PROT_DTLS1_0_CLIENT: ::DWORD = SP_PROT_DTLS_CLIENT;
+pub const SP_PROT_DTLS1_0: ::DWORD = SP_PROT_DTLS1_0_SERVER | SP_PROT_DTLS1_0_CLIENT;
+pub const SP_PROT_DTLS1_X_SERVER: ::DWORD = SP_PROT_DTLS1_0_SERVER;
+pub const SP_PROT_DTLS1_X_CLIENT: ::DWORD = SP_PROT_DTLS1_0_CLIENT;
+pub const SP_PROT_DTLS1_X: ::DWORD = SP_PROT_DTLS1_X_SERVER | SP_PROT_DTLS1_X_CLIENT;
+pub const SP_PROT_TLS1_1PLUS_SERVER: ::DWORD = SP_PROT_TLS1_1_SERVER | SP_PROT_TLS1_2_SERVER;
+pub const SP_PROT_TLS1_1PLUS_CLIENT: ::DWORD = SP_PROT_TLS1_1_CLIENT | SP_PROT_TLS1_2_CLIENT;
+pub const SP_PROT_TLS1_1PLUS: ::DWORD = SP_PROT_TLS1_1PLUS_SERVER | SP_PROT_TLS1_1PLUS_CLIENT;
+pub const SP_PROT_TLS1_X_SERVER: ::DWORD = SP_PROT_TLS1_0_SERVER | SP_PROT_TLS1_1_SERVER
+ | SP_PROT_TLS1_2_SERVER;
+pub const SP_PROT_TLS1_X_CLIENT: ::DWORD = SP_PROT_TLS1_0_CLIENT | SP_PROT_TLS1_1_CLIENT
+ | SP_PROT_TLS1_2_CLIENT;
+pub const SP_PROT_TLS1_X: ::DWORD = SP_PROT_TLS1_X_SERVER | SP_PROT_TLS1_X_CLIENT;
+pub const SP_PROT_SSL3TLS1_X_CLIENTS: ::DWORD = SP_PROT_TLS1_X_CLIENT | SP_PROT_SSL3_CLIENT;
+pub const SP_PROT_SSL3TLS1_X_SERVERS: ::DWORD = SP_PROT_TLS1_X_SERVER | SP_PROT_SSL3_SERVER;
+pub const SP_PROT_SSL3TLS1_X: ::DWORD = SP_PROT_SSL3 | SP_PROT_TLS1_X;
+pub const SP_PROT_X_CLIENTS: ::DWORD = SP_PROT_CLIENTS | SP_PROT_TLS1_X_CLIENT
+ | SP_PROT_DTLS1_X_CLIENT;
+pub const SP_PROT_X_SERVERS: ::DWORD = SP_PROT_SERVERS | SP_PROT_TLS1_X_SERVER
+ | SP_PROT_DTLS1_X_SERVER;
+//716
+pub const SCHANNEL_SECRET_TYPE_CAPI: ::DWORD = 0x00000001;
+pub const SCHANNEL_SECRET_PRIVKEY: ::DWORD = 0x00000002;
+pub const SCH_CRED_X509_CERTCHAIN: ::DWORD = 0x00000001;
+pub const SCH_CRED_X509_CAPI: ::DWORD = 0x00000002;
+pub const SCH_CRED_CERT_CONTEXT: ::DWORD = 0x00000003;
+//838
+pub const SSL_CRACK_CERTIFICATE_NAME: &'static str = "SslCrackCertificate";
+pub const SSL_FREE_CERTIFICATE_NAME: &'static str = "SslFreeCertificate";
diff --git a/third_party/rust/winapi-0.2.8/src/servprov.rs b/third_party/rust/winapi-0.2.8/src/servprov.rs
new file mode 100644
index 0000000000..8b37ba8b6c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/servprov.rs
@@ -0,0 +1,11 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of servprov.h
+pub type LPSERVICEPROVIDER = *mut IServiceProvider;
+RIDL!(
+interface IServiceProvider(IServiceProviderVtbl): IUnknown(IUnknownVtbl) {
+ fn QueryService(
+ &mut self, guidService: ::REFGUID, riid: ::REFIID, ppvObject: *mut *mut ::c_void
+ ) -> ::HRESULT
+}
+);
diff --git a/third_party/rust/winapi-0.2.8/src/setupapi.rs b/third_party/rust/winapi-0.2.8/src/setupapi.rs
new file mode 100644
index 0000000000..cf3149d79f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/setupapi.rs
@@ -0,0 +1,1301 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Windows NT Setup and Device Installer services
+pub const LINE_LEN: usize = 256;
+pub const MAX_INF_STRING_LENGTH: usize = 4096;
+pub const MAX_INF_SECTION_NAME_LENGTH: usize = 255;
+pub const MAX_TITLE_LEN: usize = 60;
+pub const MAX_INSTRUCTION_LEN: usize = 256;
+pub const MAX_LABEL_LEN: usize = 30;
+pub const MAX_SERVICE_NAME_LEN: usize = 256;
+pub const MAX_SUBTITLE_LEN: usize = 256;
+pub const SP_MAX_MACHINENAME_LENGTH: usize = ::MAX_PATH + 3;
+pub type HINF = ::PVOID;
+STRUCT!{struct INFCONTEXT {
+ Inf: ::PVOID,
+ CurrentInf: ::PVOID,
+ Section: ::UINT,
+ Line: ::UINT,
+}}
+pub type PINFCONTEXT = *mut INFCONTEXT;
+STRUCT!{struct SP_INF_INFORMATION {
+ InfStyle: ::DWORD,
+ InfCount: ::DWORD,
+ VersionData: [::BYTE; ::ANYSIZE_ARRAY],
+}}
+pub type PSP_INF_INFORMATION = *mut SP_INF_INFORMATION;
+STRUCT!{struct SP_ALTPLATFORM_INFO_V2 {
+ cbSize: ::DWORD,
+ Platform: ::DWORD,
+ MajorVersion: ::DWORD,
+ MinorVersion: ::DWORD,
+ ProcessorArchitecture: ::WORD,
+ Reserved: ::WORD,
+ FirstValidatedMajorVersion: ::DWORD,
+ FirstValidatedMinorVersion: ::DWORD,
+}}
+UNION!(SP_ALTPLATFORM_INFO_V2, Reserved, Flags, Flags_mut, ::WORD);
+pub type PSP_ALTPLATFORM_INFO_V2 = *mut SP_ALTPLATFORM_INFO_V2;
+STRUCT!{struct SP_ALTPLATFORM_INFO_V1 {
+ cbSize: ::DWORD,
+ Platform: ::DWORD,
+ MajorVersion: ::DWORD,
+ MinorVersion: ::DWORD,
+ ProcessorArchitecture: ::WORD,
+ Reserved: ::WORD,
+}}
+pub type PSP_ALTPLATFORM_INFO_V1 = *mut SP_ALTPLATFORM_INFO_V1;
+pub type SP_ALTPLATFORM_INFO = SP_ALTPLATFORM_INFO_V2;
+pub type PSP_ALTPLATFORM_INFO = PSP_ALTPLATFORM_INFO_V2;
+pub const SP_ALTPLATFORM_FLAGS_VERSION_RANGE: ::WORD = 0x0001;
+STRUCT!{nodebug struct SP_ORIGINAL_FILE_INFO_A {
+ cbSize: ::DWORD,
+ OriginalInfName: [::CHAR; ::MAX_PATH],
+ OriginalCatalogName: [::CHAR; ::MAX_PATH],
+}}
+pub type PSP_ORIGINAL_FILE_INFO_A = *mut SP_ORIGINAL_FILE_INFO_A;
+STRUCT!{nodebug struct SP_ORIGINAL_FILE_INFO_W {
+ cbSize: ::DWORD,
+ OriginalInfName: [::WCHAR; ::MAX_PATH],
+ OriginalCatalogName: [::WCHAR; ::MAX_PATH],
+}}
+pub type PSP_ORIGINAL_FILE_INFO_W = *mut SP_ORIGINAL_FILE_INFO_W;
+pub const INF_STYLE_NONE: ::DWORD = 0x00000000;
+pub const INF_STYLE_OLDNT: ::DWORD = 0x00000001;
+pub const INF_STYLE_WIN4: ::DWORD = 0x00000002;
+pub const INF_STYLE_CACHE_ENABLE: ::DWORD = 0x00000010;
+pub const INF_STYLE_CACHE_DISABLE: ::DWORD = 0x00000020;
+pub const INF_STYLE_CACHE_IGNORE: ::DWORD = 0x00000040;
+pub const DIRID_ABSOLUTE: ::DWORD = -1i32 as ::DWORD;
+pub const DIRID_ABSOLUTE_16BIT: ::DWORD = 0xffff;
+pub const DIRID_NULL: ::DWORD = 0;
+pub const DIRID_SRCPATH: ::DWORD = 1;
+pub const DIRID_WINDOWS: ::DWORD = 10;
+pub const DIRID_SYSTEM: ::DWORD = 11;
+pub const DIRID_DRIVERS: ::DWORD = 12;
+pub const DIRID_IOSUBSYS: ::DWORD = DIRID_DRIVERS;
+pub const DIRID_DRIVER_STORE: ::DWORD = 13;
+pub const DIRID_INF: ::DWORD = 17;
+pub const DIRID_HELP: ::DWORD = 18;
+pub const DIRID_FONTS: ::DWORD = 20;
+pub const DIRID_VIEWERS: ::DWORD = 21;
+pub const DIRID_COLOR: ::DWORD = 23;
+pub const DIRID_APPS: ::DWORD = 24;
+pub const DIRID_SHARED: ::DWORD = 25;
+pub const DIRID_BOOT: ::DWORD = 30;
+pub const DIRID_SYSTEM16: ::DWORD = 50;
+pub const DIRID_SPOOL: ::DWORD = 51;
+pub const DIRID_SPOOLDRIVERS: ::DWORD = 52;
+pub const DIRID_USERPROFILE: ::DWORD = 53;
+pub const DIRID_LOADER: ::DWORD = 54;
+pub const DIRID_PRINTPROCESSOR: ::DWORD = 55;
+pub const DIRID_DEFAULT: ::DWORD = DIRID_SYSTEM;
+pub const DIRID_COMMON_STARTMENU: ::DWORD = 16406;
+pub const DIRID_COMMON_PROGRAMS: ::DWORD = 16407;
+pub const DIRID_COMMON_STARTUP: ::DWORD = 16408;
+pub const DIRID_COMMON_DESKTOPDIRECTORY: ::DWORD = 16409;
+pub const DIRID_COMMON_FAVORITES: ::DWORD = 16415;
+pub const DIRID_COMMON_APPDATA: ::DWORD = 16419;
+pub const DIRID_PROGRAM_FILES: ::DWORD = 16422;
+pub const DIRID_SYSTEM_X86: ::DWORD = 16425;
+pub const DIRID_PROGRAM_FILES_X86: ::DWORD = 16426;
+pub const DIRID_PROGRAM_FILES_COMMON: ::DWORD = 16427;
+pub const DIRID_PROGRAM_FILES_COMMONX86: ::DWORD = 16428;
+pub const DIRID_COMMON_TEMPLATES: ::DWORD = 16429;
+pub const DIRID_COMMON_DOCUMENTS: ::DWORD = 16430;
+pub const DIRID_USER: ::DWORD = 0x8000;
+pub type PSP_FILE_CALLBACK_A = Option<unsafe extern "system" fn(
+ Context: ::PVOID, Notification: ::UINT, Param1: ::UINT_PTR, Param2: ::UINT_PTR,
+) -> ::UINT>;
+pub type PSP_FILE_CALLBACK_W = Option<unsafe extern "system" fn(
+ Context: ::PVOID, Notification: ::UINT, Param1: ::UINT_PTR, Param2: ::UINT_PTR,
+) -> ::UINT>;
+pub const SPFILENOTIFY_STARTQUEUE: ::UINT = 0x00000001;
+pub const SPFILENOTIFY_ENDQUEUE: ::UINT = 0x00000002;
+pub const SPFILENOTIFY_STARTSUBQUEUE: ::UINT = 0x00000003;
+pub const SPFILENOTIFY_ENDSUBQUEUE: ::UINT = 0x00000004;
+pub const SPFILENOTIFY_STARTDELETE: ::UINT = 0x00000005;
+pub const SPFILENOTIFY_ENDDELETE: ::UINT = 0x00000006;
+pub const SPFILENOTIFY_DELETEERROR: ::UINT = 0x00000007;
+pub const SPFILENOTIFY_STARTRENAME: ::UINT = 0x00000008;
+pub const SPFILENOTIFY_ENDRENAME: ::UINT = 0x00000009;
+pub const SPFILENOTIFY_RENAMEERROR: ::UINT = 0x0000000a;
+pub const SPFILENOTIFY_STARTCOPY: ::UINT = 0x0000000b;
+pub const SPFILENOTIFY_ENDCOPY: ::UINT = 0x0000000c;
+pub const SPFILENOTIFY_COPYERROR: ::UINT = 0x0000000d;
+pub const SPFILENOTIFY_NEEDMEDIA: ::UINT = 0x0000000e;
+pub const SPFILENOTIFY_QUEUESCAN: ::UINT = 0x0000000f;
+pub const SPFILENOTIFY_CABINETINFO: ::UINT = 0x00000010;
+pub const SPFILENOTIFY_FILEINCABINET: ::UINT = 0x00000011;
+pub const SPFILENOTIFY_NEEDNEWCABINET: ::UINT = 0x00000012;
+pub const SPFILENOTIFY_FILEEXTRACTED: ::UINT = 0x00000013;
+pub const SPFILENOTIFY_FILEOPDELAYED: ::UINT = 0x00000014;
+pub const SPFILENOTIFY_STARTBACKUP: ::UINT = 0x00000015;
+pub const SPFILENOTIFY_BACKUPERROR: ::UINT = 0x00000016;
+pub const SPFILENOTIFY_ENDBACKUP: ::UINT = 0x00000017;
+pub const SPFILENOTIFY_QUEUESCAN_EX: ::UINT = 0x00000018;
+pub const SPFILENOTIFY_STARTREGISTRATION: ::UINT = 0x00000019;
+pub const SPFILENOTIFY_ENDREGISTRATION: ::UINT = 0x00000020;
+pub const SPFILENOTIFY_QUEUESCAN_SIGNERINFO: ::UINT = 0x00000040;
+pub const SPFILENOTIFY_LANGMISMATCH: ::UINT = 0x00010000;
+pub const SPFILENOTIFY_TARGETEXISTS: ::UINT = 0x00020000;
+pub const SPFILENOTIFY_TARGETNEWER: ::UINT = 0x00040000;
+pub const FILEOP_COPY: ::UINT = 0;
+pub const FILEOP_RENAME: ::UINT = 1;
+pub const FILEOP_DELETE: ::UINT = 2;
+pub const FILEOP_BACKUP: ::UINT = 3;
+pub const FILEOP_ABORT: ::UINT = 0;
+pub const FILEOP_DOIT: ::UINT = 1;
+pub const FILEOP_SKIP: ::UINT = 2;
+pub const FILEOP_RETRY: ::UINT = FILEOP_DOIT;
+pub const FILEOP_NEWPATH: ::UINT = 4;
+pub const COPYFLG_WARN_IF_SKIP: ::UINT = 0x00000001;
+pub const COPYFLG_NOSKIP: ::UINT = 0x00000002;
+pub const COPYFLG_NOVERSIONCHECK: ::UINT = 0x00000004;
+pub const COPYFLG_FORCE_FILE_IN_USE: ::UINT = 0x00000008;
+pub const COPYFLG_NO_OVERWRITE: ::UINT = 0x00000010;
+pub const COPYFLG_NO_VERSION_DIALOG: ::UINT = 0x00000020;
+pub const COPYFLG_OVERWRITE_OLDER_ONLY: ::UINT = 0x00000040;
+pub const COPYFLG_PROTECTED_WINDOWS_DRIVER_FILE: ::UINT = 0x00000100;
+pub const COPYFLG_REPLACEONLY: ::UINT = 0x00000400;
+pub const COPYFLG_NODECOMP: ::UINT = 0x00000800;
+pub const COPYFLG_REPLACE_BOOT_FILE: ::UINT = 0x00001000;
+pub const COPYFLG_NOPRUNE: ::UINT = 0x00002000;
+pub const COPYFLG_IN_USE_TRY_RENAME: ::UINT = 0x00004000;
+pub const DELFLG_IN_USE: ::UINT = 0x00000001;
+pub const DELFLG_IN_USE1: ::UINT = 0x00010000;
+STRUCT!{struct FILEPATHS_A {
+ Target: ::PCSTR,
+ Source: ::PCSTR,
+ Win32Error: ::UINT,
+ Flags: ::DWORD,
+}}
+pub type PFILEPATHS_A = *mut FILEPATHS_A;
+STRUCT!{struct FILEPATHS_W {
+ Target: ::PCWSTR,
+ Source: ::PCWSTR,
+ Win32Error: ::UINT,
+ Flags: ::DWORD,
+}}
+pub type PFILEPATHS_W = *mut FILEPATHS_W;
+STRUCT!{struct FILEPATHS_SIGNERINFO_A {
+ Target: ::PCSTR,
+ Source: ::PCSTR,
+ Win32Error: ::UINT,
+ Flags: ::DWORD,
+ DigitalSigner: ::PCSTR,
+ Version: ::PCSTR,
+ CatalogFile: ::PCSTR,
+}}
+pub type PFILEPATHS_SIGNERINFO_A = *mut FILEPATHS_SIGNERINFO_A;
+STRUCT!{struct FILEPATHS_SIGNERINFO_W {
+ Target: ::PCWSTR,
+ Source: ::PCWSTR,
+ Win32Error: ::UINT,
+ Flags: ::DWORD,
+ DigitalSigner: ::PCWSTR,
+ Version: ::PCWSTR,
+ CatalogFile: ::PCWSTR,
+}}
+pub type PFILEPATHS_SIGNERINFO_W = *mut FILEPATHS_SIGNERINFO_W;
+STRUCT!{struct SOURCE_MEDIA_A {
+ Reserved: ::PCSTR,
+ Tagfile: ::PCSTR,
+ Description: ::PCSTR,
+ SourcePath: ::PCSTR,
+ SourceFile: ::PCSTR,
+ Flags: ::DWORD,
+}}
+pub type PSOURCE_MEDIA_A = *mut SOURCE_MEDIA_A;
+STRUCT!{struct SOURCE_MEDIA_W {
+ Reserved: ::PCWSTR,
+ Tagfile: ::PCWSTR,
+ Description: ::PCWSTR,
+ SourcePath: ::PCWSTR,
+ SourceFile: ::PCWSTR,
+ Flags: ::DWORD,
+}}
+pub type PSOURCE_MEDIA_W = *mut SOURCE_MEDIA_W;
+STRUCT!{struct CABINET_INFO_A {
+ CabinetPath: ::PCSTR,
+ CabinetFile: ::PCSTR,
+ DiskName: ::PCSTR,
+ SetId: ::USHORT,
+ CabinetNumber: ::USHORT,
+}}
+pub type PCABINET_INFO_A = *mut CABINET_INFO_A;
+STRUCT!{struct CABINET_INFO_W {
+ CabinetPath: ::PCWSTR,
+ CabinetFile: ::PCWSTR,
+ DiskName: ::PCWSTR,
+ SetId: ::USHORT,
+ CabinetNumber: ::USHORT,
+}}
+pub type PCABINET_INFO_W = *mut CABINET_INFO_W;
+STRUCT!{nodebug struct FILE_IN_CABINET_INFO_A {
+ NameInCabinet: ::PCSTR,
+ FileSize: ::DWORD,
+ Win32Error: ::DWORD,
+ DosDate: ::WORD,
+ DosTime: ::WORD,
+ DosAttribs: ::WORD,
+ FullTargetName: [::CHAR; ::MAX_PATH],
+}}
+pub type PFILE_IN_CABINET_INFO_A = *mut FILE_IN_CABINET_INFO_A;
+STRUCT!{nodebug struct FILE_IN_CABINET_INFO_W {
+ NameInCabinet: ::PCWSTR,
+ FileSize: ::DWORD,
+ Win32Error: ::DWORD,
+ DosDate: ::WORD,
+ DosTime: ::WORD,
+ DosAttribs: ::WORD,
+ FullTargetName: [::WCHAR; ::MAX_PATH],
+}}
+pub type PFILE_IN_CABINET_INFO_W = *mut FILE_IN_CABINET_INFO_W;
+STRUCT!{struct SP_REGISTER_CONTROL_STATUSA {
+ cbSize: ::DWORD,
+ FileName: ::PCSTR,
+ Win32Error: ::DWORD,
+ FailureCode: ::DWORD,
+}}
+pub type PSP_REGISTER_CONTROL_STATUSA = *mut SP_REGISTER_CONTROL_STATUSA;
+STRUCT!{struct SP_REGISTER_CONTROL_STATUSW {
+ cbSize: ::DWORD,
+ FileName: ::PCWSTR,
+ Win32Error: ::DWORD,
+ FailureCode: ::DWORD,
+}}
+pub type PSP_REGISTER_CONTROL_STATUSW = *mut SP_REGISTER_CONTROL_STATUSW;
+pub const SPREG_SUCCESS: ::DWORD = 0x00000000;
+pub const SPREG_LOADLIBRARY: ::DWORD = 0x00000001;
+pub const SPREG_GETPROCADDR: ::DWORD = 0x00000002;
+pub const SPREG_REGSVR: ::DWORD = 0x00000003;
+pub const SPREG_DLLINSTALL: ::DWORD = 0x00000004;
+pub const SPREG_TIMEOUT: ::DWORD = 0x00000005;
+pub const SPREG_UNKNOWN: ::DWORD = 0xFFFFFFFF;
+pub type HSPFILEQ = ::PVOID;
+STRUCT!{struct SP_FILE_COPY_PARAMS_A {
+ cbSize: ::DWORD,
+ QueueHandle: HSPFILEQ,
+ SourceRootPath: ::PCSTR,
+ SourcePath: ::PCSTR,
+ SourceFilename: ::PCSTR,
+ SourceDescription: ::PCSTR,
+ SourceTagfile: ::PCSTR,
+ TargetDirectory: ::PCSTR,
+ TargetFilename: ::PCSTR,
+ CopyStyle: ::DWORD,
+ LayoutInf: HINF,
+ SecurityDescriptor: ::PCSTR,
+}}
+pub type PSP_FILE_COPY_PARAMS_A = *mut SP_FILE_COPY_PARAMS_A;
+STRUCT!{struct SP_FILE_COPY_PARAMS_W {
+ cbSize: ::DWORD,
+ QueueHandle: HSPFILEQ,
+ SourceRootPath: ::PCWSTR,
+ SourcePath: ::PCWSTR,
+ SourceFilename: ::PCWSTR,
+ SourceDescription: ::PCWSTR,
+ SourceTagfile: ::PCWSTR,
+ TargetDirectory: ::PCWSTR,
+ TargetFilename: ::PCWSTR,
+ CopyStyle: ::DWORD,
+ LayoutInf: HINF,
+ SecurityDescriptor: ::PCWSTR,
+}}
+pub type PSP_FILE_COPY_PARAMS_W = *mut SP_FILE_COPY_PARAMS_W;
+pub type HDSKSPC = ::PVOID;
+pub type HDEVINFO = ::PVOID;
+STRUCT!{struct SP_DEVINFO_DATA {
+ cbSize: ::DWORD,
+ ClassGuid: ::GUID,
+ DevInst: ::DWORD,
+ Reserved: ::ULONG_PTR,
+}}
+pub type PSP_DEVINFO_DATA = *mut SP_DEVINFO_DATA;
+STRUCT!{struct SP_DEVICE_INTERFACE_DATA {
+ cbSize: ::DWORD,
+ InterfaceClassGuid: ::GUID,
+ Flags: ::DWORD,
+ Reserved: ::ULONG_PTR,
+}}
+pub type PSP_DEVICE_INTERFACE_DATA = *mut SP_DEVICE_INTERFACE_DATA;
+pub const SPINT_ACTIVE: ::DWORD = 0x00000001;
+pub const SPINT_DEFAULT: ::DWORD = 0x00000002;
+pub const SPINT_REMOVED: ::DWORD = 0x00000004;
+pub type SP_INTERFACE_DEVICE_DATA = SP_DEVICE_INTERFACE_DATA;
+pub type PSP_INTERFACE_DEVICE_DATA = PSP_DEVICE_INTERFACE_DATA;
+pub const SPID_ACTIVE: ::DWORD = SPINT_ACTIVE;
+pub const SPID_DEFAULT: ::DWORD = SPINT_DEFAULT;
+pub const SPID_REMOVED: ::DWORD = SPINT_REMOVED;
+STRUCT!{struct SP_DEVICE_INTERFACE_DETAIL_DATA_A {
+ cbSize: ::DWORD,
+ DevicePath: [::CHAR; ::ANYSIZE_ARRAY],
+}}
+pub type PSP_DEVICE_INTERFACE_DETAIL_DATA_A = *mut SP_DEVICE_INTERFACE_DETAIL_DATA_A;
+STRUCT!{struct SP_DEVICE_INTERFACE_DETAIL_DATA_W {
+ cbSize: ::DWORD,
+ DevicePath: [::WCHAR; ::ANYSIZE_ARRAY],
+}}
+pub type PSP_DEVICE_INTERFACE_DETAIL_DATA_W = *mut SP_DEVICE_INTERFACE_DETAIL_DATA_W;
+STRUCT!{nodebug struct SP_DEVINFO_LIST_DETAIL_DATA_A {
+ cbSize: ::DWORD,
+ ClassGuid: ::GUID,
+ RemoteMachineHandle: ::HANDLE,
+ RemoteMachineName: [::CHAR; SP_MAX_MACHINENAME_LENGTH],
+}}
+pub type PSP_DEVINFO_LIST_DETAIL_DATA_A = *mut SP_DEVINFO_LIST_DETAIL_DATA_A;
+STRUCT!{nodebug struct SP_DEVINFO_LIST_DETAIL_DATA_W {
+ cbSize: ::DWORD,
+ ClassGuid: ::GUID,
+ RemoteMachineHandle: ::HANDLE,
+ RemoteMachineName: [::WCHAR; SP_MAX_MACHINENAME_LENGTH],
+}}
+pub type PSP_DEVINFO_LIST_DETAIL_DATA_W = *mut SP_DEVINFO_LIST_DETAIL_DATA_W;
+pub const DIF_SELECTDEVICE: DI_FUNCTION = 0x00000001;
+pub const DIF_INSTALLDEVICE: DI_FUNCTION = 0x00000002;
+pub const DIF_ASSIGNRESOURCES: DI_FUNCTION = 0x00000003;
+pub const DIF_PROPERTIES: DI_FUNCTION = 0x00000004;
+pub const DIF_REMOVE: DI_FUNCTION = 0x00000005;
+pub const DIF_FIRSTTIMESETUP: DI_FUNCTION = 0x00000006;
+pub const DIF_FOUNDDEVICE: DI_FUNCTION = 0x00000007;
+pub const DIF_SELECTCLASSDRIVERS: DI_FUNCTION = 0x00000008;
+pub const DIF_VALIDATECLASSDRIVERS: DI_FUNCTION = 0x00000009;
+pub const DIF_INSTALLCLASSDRIVERS: DI_FUNCTION = 0x0000000A;
+pub const DIF_CALCDISKSPACE: DI_FUNCTION = 0x0000000B;
+pub const DIF_DESTROYPRIVATEDATA: DI_FUNCTION = 0x0000000C;
+pub const DIF_VALIDATEDRIVER: DI_FUNCTION = 0x0000000D;
+pub const DIF_DETECT: DI_FUNCTION = 0x0000000F;
+pub const DIF_INSTALLWIZARD: DI_FUNCTION = 0x00000010;
+pub const DIF_DESTROYWIZARDDATA: DI_FUNCTION = 0x00000011;
+pub const DIF_PROPERTYCHANGE: DI_FUNCTION = 0x00000012;
+pub const DIF_ENABLECLASS: DI_FUNCTION = 0x00000013;
+pub const DIF_DETECTVERIFY: DI_FUNCTION = 0x00000014;
+pub const DIF_INSTALLDEVICEFILES: DI_FUNCTION = 0x00000015;
+pub const DIF_UNREMOVE: DI_FUNCTION = 0x00000016;
+pub const DIF_SELECTBESTCOMPATDRV: DI_FUNCTION = 0x00000017;
+pub const DIF_ALLOW_INSTALL: DI_FUNCTION = 0x00000018;
+pub const DIF_REGISTERDEVICE: DI_FUNCTION = 0x00000019;
+pub const DIF_NEWDEVICEWIZARD_PRESELECT: DI_FUNCTION = 0x0000001A;
+pub const DIF_NEWDEVICEWIZARD_SELECT: DI_FUNCTION = 0x0000001B;
+pub const DIF_NEWDEVICEWIZARD_PREANALYZE: DI_FUNCTION = 0x0000001C;
+pub const DIF_NEWDEVICEWIZARD_POSTANALYZE: DI_FUNCTION = 0x0000001D;
+pub const DIF_NEWDEVICEWIZARD_FINISHINSTALL: DI_FUNCTION = 0x0000001E;
+pub const DIF_UNUSED1: DI_FUNCTION = 0x0000001F;
+pub const DIF_INSTALLINTERFACES: DI_FUNCTION = 0x00000020;
+pub const DIF_DETECTCANCEL: DI_FUNCTION = 0x00000021;
+pub const DIF_REGISTER_COINSTALLERS: DI_FUNCTION = 0x00000022;
+pub const DIF_ADDPROPERTYPAGE_ADVANCED: DI_FUNCTION = 0x00000023;
+pub const DIF_ADDPROPERTYPAGE_BASIC: DI_FUNCTION = 0x00000024;
+pub const DIF_RESERVED1: DI_FUNCTION = 0x00000025;
+pub const DIF_TROUBLESHOOTER: DI_FUNCTION = 0x00000026;
+pub const DIF_POWERMESSAGEWAKE: DI_FUNCTION = 0x00000027;
+pub const DIF_ADDREMOTEPROPERTYPAGE_ADVANCED: DI_FUNCTION = 0x00000028;
+pub const DIF_UPDATEDRIVER_UI: DI_FUNCTION = 0x00000029;
+pub const DIF_FINISHINSTALL_ACTION: DI_FUNCTION = 0x0000002A;
+pub const DIF_RESERVED2: DI_FUNCTION = 0x00000030;
+pub const DIF_MOVEDEVICE: DI_FUNCTION = 0x0000000E;
+pub type DI_FUNCTION = ::UINT;
+STRUCT!{nodebug struct SP_DEVINSTALL_PARAMS_A {
+ cbSize: ::DWORD,
+ Flags: ::DWORD,
+ FlagsEx: ::DWORD,
+ hwndParent: ::HWND,
+ InstallMsgHandler: PSP_FILE_CALLBACK_A,
+ InstallMsgHandlerContext: ::PVOID,
+ FileQueue: HSPFILEQ,
+ ClassInstallReserved: ::ULONG_PTR,
+ Reserved: ::DWORD,
+ DriverPath: [::CHAR; ::MAX_PATH],
+}}
+pub type PSP_DEVINSTALL_PARAMS_A = *mut SP_DEVINSTALL_PARAMS_A;
+STRUCT!{nodebug struct SP_DEVINSTALL_PARAMS_W {
+ cbSize: ::DWORD,
+ Flags: ::DWORD,
+ FlagsEx: ::DWORD,
+ hwndParent: ::HWND,
+ InstallMsgHandler: PSP_FILE_CALLBACK_W,
+ InstallMsgHandlerContext: ::PVOID,
+ FileQueue: HSPFILEQ,
+ ClassInstallReserved: ::ULONG_PTR,
+ Reserved: ::DWORD,
+ DriverPath: [::WCHAR; ::MAX_PATH],
+}}
+pub type PSP_DEVINSTALL_PARAMS_W = *mut SP_DEVINSTALL_PARAMS_W;
+pub const DI_SHOWOEM: ::DWORD = 0x00000001;
+pub const DI_SHOWCOMPAT: ::DWORD = 0x00000002;
+pub const DI_SHOWCLASS: ::DWORD = 0x00000004;
+pub const DI_SHOWALL: ::DWORD = 0x00000007;
+pub const DI_NOVCP: ::DWORD = 0x00000008;
+pub const DI_DIDCOMPAT: ::DWORD = 0x00000010;
+pub const DI_DIDCLASS: ::DWORD = 0x00000020;
+pub const DI_AUTOASSIGNRES: ::DWORD = 0x00000040;
+pub const DI_NEEDRESTART: ::DWORD = 0x00000080;
+pub const DI_NEEDREBOOT: ::DWORD = 0x00000100;
+pub const DI_NOBROWSE: ::DWORD = 0x00000200;
+pub const DI_MULTMFGS: ::DWORD = 0x00000400;
+pub const DI_DISABLED: ::DWORD = 0x00000800;
+pub const DI_GENERALPAGE_ADDED: ::DWORD = 0x00001000;
+pub const DI_RESOURCEPAGE_ADDED: ::DWORD = 0x00002000;
+pub const DI_PROPERTIES_CHANGE: ::DWORD = 0x00004000;
+pub const DI_INF_IS_SORTED: ::DWORD = 0x00008000;
+pub const DI_ENUMSINGLEINF: ::DWORD = 0x00010000;
+pub const DI_DONOTCALLCONFIGMG: ::DWORD = 0x00020000;
+pub const DI_INSTALLDISABLED: ::DWORD = 0x00040000;
+pub const DI_COMPAT_FROM_CLASS: ::DWORD = 0x00080000;
+pub const DI_CLASSINSTALLPARAMS: ::DWORD = 0x00100000;
+pub const DI_NODI_DEFAULTACTION: ::DWORD = 0x00200000;
+pub const DI_QUIETINSTALL: ::DWORD = 0x00800000;
+pub const DI_NOFILECOPY: ::DWORD = 0x01000000;
+pub const DI_FORCECOPY: ::DWORD = 0x02000000;
+pub const DI_DRIVERPAGE_ADDED: ::DWORD = 0x04000000;
+pub const DI_USECI_SELECTSTRINGS: ::DWORD = 0x08000000;
+pub const DI_OVERRIDE_INFFLAGS: ::DWORD = 0x10000000;
+pub const DI_PROPS_NOCHANGEUSAGE: ::DWORD = 0x20000000;
+pub const DI_NOSELECTICONS: ::DWORD = 0x40000000;
+pub const DI_NOWRITE_IDS: ::DWORD = 0x80000000;
+pub const DI_FLAGSEX_RESERVED2: ::DWORD = 0x00000001;
+pub const DI_FLAGSEX_RESERVED3: ::DWORD = 0x00000002;
+pub const DI_FLAGSEX_CI_FAILED: ::DWORD = 0x00000004;
+pub const DI_FLAGSEX_FINISHINSTALL_ACTION: ::DWORD = 0x00000008;
+pub const DI_FLAGSEX_DIDINFOLIST: ::DWORD = 0x00000010;
+pub const DI_FLAGSEX_DIDCOMPATINFO: ::DWORD = 0x00000020;
+pub const DI_FLAGSEX_FILTERCLASSES: ::DWORD = 0x00000040;
+pub const DI_FLAGSEX_SETFAILEDINSTALL: ::DWORD = 0x00000080;
+pub const DI_FLAGSEX_DEVICECHANGE: ::DWORD = 0x00000100;
+pub const DI_FLAGSEX_ALWAYSWRITEIDS: ::DWORD = 0x00000200;
+pub const DI_FLAGSEX_PROPCHANGE_PENDING: ::DWORD = 0x00000400;
+pub const DI_FLAGSEX_ALLOWEXCLUDEDDRVS: ::DWORD = 0x00000800;
+pub const DI_FLAGSEX_NOUIONQUERYREMOVE: ::DWORD = 0x00001000;
+pub const DI_FLAGSEX_USECLASSFORCOMPAT: ::DWORD = 0x00002000;
+pub const DI_FLAGSEX_RESERVED4: ::DWORD = 0x00004000;
+pub const DI_FLAGSEX_NO_DRVREG_MODIFY: ::DWORD = 0x00008000;
+pub const DI_FLAGSEX_IN_SYSTEM_SETUP: ::DWORD = 0x00010000;
+pub const DI_FLAGSEX_INET_DRIVER: ::DWORD = 0x00020000;
+pub const DI_FLAGSEX_APPENDDRIVERLIST: ::DWORD = 0x00040000;
+pub const DI_FLAGSEX_PREINSTALLBACKUP: ::DWORD = 0x00080000;
+pub const DI_FLAGSEX_BACKUPONREPLACE: ::DWORD = 0x00100000;
+pub const DI_FLAGSEX_DRIVERLIST_FROM_URL: ::DWORD = 0x00200000;
+pub const DI_FLAGSEX_RESERVED1: ::DWORD = 0x00400000;
+pub const DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS: ::DWORD = 0x00800000;
+pub const DI_FLAGSEX_POWERPAGE_ADDED: ::DWORD = 0x01000000;
+pub const DI_FLAGSEX_FILTERSIMILARDRIVERS: ::DWORD = 0x02000000;
+pub const DI_FLAGSEX_INSTALLEDDRIVER: ::DWORD = 0x04000000;
+pub const DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE: ::DWORD = 0x08000000;
+pub const DI_FLAGSEX_ALTPLATFORM_DRVSEARCH: ::DWORD = 0x10000000;
+pub const DI_FLAGSEX_RESTART_DEVICE_ONLY: ::DWORD = 0x20000000;
+pub const DI_FLAGSEX_RECURSIVESEARCH: ::DWORD = 0x40000000;
+pub const DI_FLAGSEX_SEARCH_PUBLISHED_INFS: ::DWORD = 0x80000000;
+STRUCT!{struct SP_CLASSINSTALL_HEADER {
+ cbSize: ::DWORD,
+ InstallFunction: DI_FUNCTION,
+}}
+pub type PSP_CLASSINSTALL_HEADER = *mut SP_CLASSINSTALL_HEADER;
+STRUCT!{struct SP_ENABLECLASS_PARAMS {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ ClassGuid: ::GUID,
+ EnableMessage: ::DWORD,
+}}
+pub type PSP_ENABLECLASS_PARAMS = *mut SP_ENABLECLASS_PARAMS;
+pub const ENABLECLASS_QUERY: ::DWORD = 0;
+pub const ENABLECLASS_SUCCESS: ::DWORD = 1;
+pub const ENABLECLASS_FAILURE: ::DWORD = 2;
+pub const DICS_ENABLE: ::DWORD = 0x00000001;
+pub const DICS_DISABLE: ::DWORD = 0x00000002;
+pub const DICS_PROPCHANGE: ::DWORD = 0x00000003;
+pub const DICS_START: ::DWORD = 0x00000004;
+pub const DICS_STOP: ::DWORD = 0x00000005;
+pub const DICS_FLAG_GLOBAL: ::DWORD = 0x00000001;
+pub const DICS_FLAG_CONFIGSPECIFIC: ::DWORD = 0x00000002;
+pub const DICS_FLAG_CONFIGGENERAL: ::DWORD = 0x00000004;
+STRUCT!{struct SP_PROPCHANGE_PARAMS {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ StateChange: ::DWORD,
+ Scope: ::DWORD,
+ HwProfile: ::DWORD,
+}}
+pub type PSP_PROPCHANGE_PARAMS = *mut SP_PROPCHANGE_PARAMS;
+STRUCT!{struct SP_REMOVEDEVICE_PARAMS {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ Scope: ::DWORD,
+ HwProfile: ::DWORD,
+}}
+pub type PSP_REMOVEDEVICE_PARAMS = *mut SP_REMOVEDEVICE_PARAMS;
+pub const DI_REMOVEDEVICE_GLOBAL: ::DWORD = 0x00000001;
+pub const DI_REMOVEDEVICE_CONFIGSPECIFIC: ::DWORD = 0x00000002;
+STRUCT!{struct SP_UNREMOVEDEVICE_PARAMS {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ Scope: ::DWORD,
+ HwProfile: ::DWORD,
+}}
+pub type PSP_UNREMOVEDEVICE_PARAMS = *mut SP_UNREMOVEDEVICE_PARAMS;
+pub const DI_UNREMOVEDEVICE_CONFIGSPECIFIC: ::DWORD = 0x00000002;
+STRUCT!{nodebug struct SP_SELECTDEVICE_PARAMS_A {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ Title: [::CHAR; MAX_TITLE_LEN],
+ Instructions: [::CHAR; MAX_INSTRUCTION_LEN],
+ ListLabel: [::CHAR; MAX_LABEL_LEN],
+ SubTitle: [::CHAR; MAX_SUBTITLE_LEN],
+ Reserved: [::BYTE; 2],
+}}
+pub type PSP_SELECTDEVICE_PARAMS_A = *mut SP_SELECTDEVICE_PARAMS_A;
+STRUCT!{nodebug struct SP_SELECTDEVICE_PARAMS_W {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ Title: [::WCHAR; MAX_TITLE_LEN],
+ Instructions: [::WCHAR; MAX_INSTRUCTION_LEN],
+ ListLabel: [::WCHAR; MAX_LABEL_LEN],
+ SubTitle: [::WCHAR; MAX_SUBTITLE_LEN],
+}}
+pub type PSP_SELECTDEVICE_PARAMS_W = *mut SP_SELECTDEVICE_PARAMS_W;
+pub type PDETECT_PROGRESS_NOTIFY = Option<unsafe extern "system" fn(
+ ProgressNotifyParam: ::PVOID, DetectComplete: ::DWORD,
+) -> ::BOOL>;
+STRUCT!{nodebug struct SP_DETECTDEVICE_PARAMS {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ DetectProgressNotify: PDETECT_PROGRESS_NOTIFY,
+ ProgressNotifyParam: ::PVOID,
+}}
+pub type PSP_DETECTDEVICE_PARAMS = *mut SP_DETECTDEVICE_PARAMS;
+pub const MAX_INSTALLWIZARD_DYNAPAGES: usize = 20;
+STRUCT!{struct SP_INSTALLWIZARD_DATA {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ Flags: ::DWORD,
+ DynamicPages: [::HPROPSHEETPAGE; MAX_INSTALLWIZARD_DYNAPAGES],
+ NumDynamicPages: ::DWORD,
+ DynamicPageFlags: ::DWORD,
+ PrivateFlags: ::DWORD,
+ PrivateData: ::LPARAM,
+ hwndWizardDlg: ::HWND,
+}}
+pub type PSP_INSTALLWIZARD_DATA = *mut SP_INSTALLWIZARD_DATA;
+pub const NDW_INSTALLFLAG_DIDFACTDEFS: ::DWORD = 0x00000001;
+pub const NDW_INSTALLFLAG_HARDWAREALLREADYIN: ::DWORD = 0x00000002;
+pub const NDW_INSTALLFLAG_NEEDRESTART: ::DWORD = DI_NEEDRESTART;
+pub const NDW_INSTALLFLAG_NEEDREBOOT: ::DWORD = DI_NEEDREBOOT;
+pub const NDW_INSTALLFLAG_NEEDSHUTDOWN: ::DWORD = 0x00000200;
+pub const NDW_INSTALLFLAG_EXPRESSINTRO: ::DWORD = 0x00000400;
+pub const NDW_INSTALLFLAG_SKIPISDEVINSTALLED: ::DWORD = 0x00000800;
+pub const NDW_INSTALLFLAG_NODETECTEDDEVS: ::DWORD = 0x00001000;
+pub const NDW_INSTALLFLAG_INSTALLSPECIFIC: ::DWORD = 0x00002000;
+pub const NDW_INSTALLFLAG_SKIPCLASSLIST: ::DWORD = 0x00004000;
+pub const NDW_INSTALLFLAG_CI_PICKED_OEM: ::DWORD = 0x00008000;
+pub const NDW_INSTALLFLAG_PCMCIAMODE: ::DWORD = 0x00010000;
+pub const NDW_INSTALLFLAG_PCMCIADEVICE: ::DWORD = 0x00020000;
+pub const NDW_INSTALLFLAG_USERCANCEL: ::DWORD = 0x00040000;
+pub const NDW_INSTALLFLAG_KNOWNCLASS: ::DWORD = 0x00080000;
+pub const DYNAWIZ_FLAG_PAGESADDED: ::DWORD = 0x00000001;
+pub const DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT: ::DWORD = 0x00000008;
+pub const DYNAWIZ_FLAG_INSTALLDET_NEXT: ::DWORD = 0x00000002;
+pub const DYNAWIZ_FLAG_INSTALLDET_PREV: ::DWORD = 0x00000004;
+pub const MIN_IDD_DYNAWIZ_RESOURCE_ID: ::c_int = 10000;
+pub const MAX_IDD_DYNAWIZ_RESOURCE_ID: ::c_int = 11000;
+pub const IDD_DYNAWIZ_FIRSTPAGE: ::c_int = 10000;
+pub const IDD_DYNAWIZ_SELECT_PREVPAGE: ::c_int = 10001;
+pub const IDD_DYNAWIZ_SELECT_NEXTPAGE: ::c_int = 10002;
+pub const IDD_DYNAWIZ_ANALYZE_PREVPAGE: ::c_int = 10003;
+pub const IDD_DYNAWIZ_ANALYZE_NEXTPAGE: ::c_int = 10004;
+pub const IDD_DYNAWIZ_SELECTDEV_PAGE: ::c_int = 10009;
+pub const IDD_DYNAWIZ_ANALYZEDEV_PAGE: ::c_int = 10010;
+pub const IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE: ::c_int = 10011;
+pub const IDD_DYNAWIZ_SELECTCLASS_PAGE: ::c_int = 10012;
+pub const IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE: ::c_int = 10006;
+pub const IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE: ::c_int = 10007;
+pub const IDD_DYNAWIZ_INSTALLDETECTED_NODEVS: ::c_int = 10008;
+STRUCT!{struct SP_NEWDEVICEWIZARD_DATA {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ Flags: ::DWORD,
+ DynamicPages: [::HPROPSHEETPAGE; MAX_INSTALLWIZARD_DYNAPAGES],
+ NumDynamicPages: ::DWORD,
+ hwndWizardDlg: ::HWND,
+}}
+pub type PSP_NEWDEVICEWIZARD_DATA = *mut SP_NEWDEVICEWIZARD_DATA;
+pub type SP_ADDPROPERTYPAGE_DATA = SP_NEWDEVICEWIZARD_DATA;
+pub type PSP_ADDPROPERTYPAGE_DATA = PSP_NEWDEVICEWIZARD_DATA;
+STRUCT!{nodebug struct SP_TROUBLESHOOTER_PARAMS_A {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ ChmFile: [::CHAR; ::MAX_PATH],
+ HtmlTroubleShooter: [::CHAR; ::MAX_PATH],
+}}
+pub type PSP_TROUBLESHOOTER_PARAMS_A = *mut SP_TROUBLESHOOTER_PARAMS_A;
+STRUCT!{nodebug struct SP_TROUBLESHOOTER_PARAMS_W {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ ChmFile: [::WCHAR; ::MAX_PATH],
+ HtmlTroubleShooter: [::WCHAR; ::MAX_PATH],
+}}
+pub type PSP_TROUBLESHOOTER_PARAMS_W = *mut SP_TROUBLESHOOTER_PARAMS_W;
+STRUCT!{nodebug struct SP_POWERMESSAGEWAKE_PARAMS_A {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ PowerMessageWake: [::CHAR; LINE_LEN * 2],
+}}
+pub type PSP_POWERMESSAGEWAKE_PARAMS_A = *mut SP_POWERMESSAGEWAKE_PARAMS_A;
+STRUCT!{nodebug struct SP_POWERMESSAGEWAKE_PARAMS_W {
+ ClassInstallHeader: SP_CLASSINSTALL_HEADER,
+ PowerMessageWake: [::WCHAR; LINE_LEN * 2],
+}}
+pub type PSP_POWERMESSAGEWAKE_PARAMS_W = *mut SP_POWERMESSAGEWAKE_PARAMS_W;
+STRUCT!{nodebug struct SP_DRVINFO_DATA_V2_A {
+ cbSize: ::DWORD,
+ DriverType: ::DWORD,
+ Reserved: ::ULONG_PTR,
+ Description: [::CHAR; LINE_LEN],
+ MfgName: [::CHAR; LINE_LEN],
+ ProviderName: [::CHAR; LINE_LEN],
+ DriverDate: ::FILETIME,
+ DriverVersion: ::DWORDLONG,
+}}
+pub type PSP_DRVINFO_DATA_V2_A = *mut SP_DRVINFO_DATA_V2_A;
+STRUCT!{nodebug struct SP_DRVINFO_DATA_V2_W {
+ cbSize: ::DWORD,
+ DriverType: ::DWORD,
+ Reserved: ::ULONG_PTR,
+ Description: [::WCHAR; LINE_LEN],
+ MfgName: [::WCHAR; LINE_LEN],
+ ProviderName: [::WCHAR; LINE_LEN],
+ DriverDate: ::FILETIME,
+ DriverVersion: ::DWORDLONG,
+}}
+pub type PSP_DRVINFO_DATA_V2_W = *mut SP_DRVINFO_DATA_V2_W;
+STRUCT!{nodebug struct SP_DRVINFO_DATA_V1_A {
+ cbSize: ::DWORD,
+ DriverType: ::DWORD,
+ Reserved: ::ULONG_PTR,
+ Description: [::CHAR; LINE_LEN],
+ MfgName: [::CHAR; LINE_LEN],
+ ProviderName: [::CHAR; LINE_LEN],
+}}
+pub type PSP_DRVINFO_DATA_V1_A = *mut SP_DRVINFO_DATA_V1_A;
+STRUCT!{nodebug struct SP_DRVINFO_DATA_V1_W {
+ cbSize: ::DWORD,
+ DriverType: ::DWORD,
+ Reserved: ::ULONG_PTR,
+ Description: [::WCHAR; LINE_LEN],
+ MfgName: [::WCHAR; LINE_LEN],
+ ProviderName: [::WCHAR; LINE_LEN],
+}}
+pub type PSP_DRVINFO_DATA_V1_W = *mut SP_DRVINFO_DATA_V1_W;
+pub type SP_DRVINFO_DATA_A = SP_DRVINFO_DATA_V2_A;
+pub type PSP_DRVINFO_DATA_A = PSP_DRVINFO_DATA_V2_A;
+pub type SP_DRVINFO_DATA_W = SP_DRVINFO_DATA_V2_W;
+pub type PSP_DRVINFO_DATA_W = PSP_DRVINFO_DATA_V2_W;
+STRUCT!{nodebug struct SP_DRVINFO_DETAIL_DATA_A {
+ cbSize: ::DWORD,
+ InfDate: ::FILETIME,
+ CompatIDsOffset: ::DWORD,
+ CompatIDsLength: ::DWORD,
+ Reserved: ::ULONG_PTR,
+ SectionName: [::CHAR; LINE_LEN],
+ InfFileName: [::CHAR; ::MAX_PATH],
+ DrvDescription: [::CHAR; LINE_LEN],
+ HardwareID: [::CHAR; ::ANYSIZE_ARRAY],
+}}
+pub type PSP_DRVINFO_DETAIL_DATA_A = *mut SP_DRVINFO_DETAIL_DATA_A;
+STRUCT!{nodebug struct SP_DRVINFO_DETAIL_DATA_W {
+ cbSize: ::DWORD,
+ InfDate: ::FILETIME,
+ CompatIDsOffset: ::DWORD,
+ CompatIDsLength: ::DWORD,
+ Reserved: ::ULONG_PTR,
+ SectionName: [::WCHAR; LINE_LEN],
+ InfFileName: [::WCHAR; ::MAX_PATH],
+ DrvDescription: [::WCHAR; LINE_LEN],
+ HardwareID: [::WCHAR; ::ANYSIZE_ARRAY],
+}}
+pub type PSP_DRVINFO_DETAIL_DATA_W = *mut SP_DRVINFO_DETAIL_DATA_W;
+STRUCT!{struct SP_DRVINSTALL_PARAMS {
+ cbSize: ::DWORD,
+ Rank: ::DWORD,
+ Flags: ::DWORD,
+ PrivateData: ::DWORD_PTR,
+ Reserved: ::DWORD,
+}}
+pub type PSP_DRVINSTALL_PARAMS = *mut SP_DRVINSTALL_PARAMS;
+pub const DNF_DUPDESC: ::DWORD = 0x00000001;
+pub const DNF_OLDDRIVER: ::DWORD = 0x00000002;
+pub const DNF_EXCLUDEFROMLIST: ::DWORD = 0x00000004;
+pub const DNF_NODRIVER: ::DWORD = 0x00000008;
+pub const DNF_LEGACYINF: ::DWORD = 0x00000010;
+pub const DNF_CLASS_DRIVER: ::DWORD = 0x00000020;
+pub const DNF_COMPATIBLE_DRIVER: ::DWORD = 0x00000040;
+pub const DNF_INET_DRIVER: ::DWORD = 0x00000080;
+pub const DNF_UNUSED1: ::DWORD = 0x00000100;
+pub const DNF_UNUSED2: ::DWORD = 0x00000200;
+pub const DNF_OLD_INET_DRIVER: ::DWORD = 0x00000400;
+pub const DNF_BAD_DRIVER: ::DWORD = 0x00000800;
+pub const DNF_DUPPROVIDER: ::DWORD = 0x00001000;
+pub const DNF_INF_IS_SIGNED: ::DWORD = 0x00002000;
+pub const DNF_OEM_F6_INF: ::DWORD = 0x00004000;
+pub const DNF_DUPDRIVERVER: ::DWORD = 0x00008000;
+pub const DNF_BASIC_DRIVER: ::DWORD = 0x00010000;
+pub const DNF_AUTHENTICODE_SIGNED: ::DWORD = 0x00020000;
+pub const DNF_INSTALLEDDRIVER: ::DWORD = 0x00040000;
+pub const DNF_ALWAYSEXCLUDEFROMLIST: ::DWORD = 0x00080000;
+pub const DNF_INBOX_DRIVER: ::DWORD = 0x00100000;
+pub const DNF_REQUESTADDITIONALSOFTWARE: ::DWORD = 0x00200000;
+pub const DNF_UNUSED_22: ::DWORD = 0x00400000;
+pub const DNF_UNUSED_23: ::DWORD = 0x00800000;
+pub const DNF_UNUSED_24: ::DWORD = 0x01000000;
+pub const DNF_UNUSED_25: ::DWORD = 0x02000000;
+pub const DNF_UNUSED_26: ::DWORD = 0x04000000;
+pub const DNF_UNUSED_27: ::DWORD = 0x08000000;
+pub const DNF_UNUSED_28: ::DWORD = 0x10000000;
+pub const DNF_UNUSED_29: ::DWORD = 0x20000000;
+pub const DNF_UNUSED_30: ::DWORD = 0x40000000;
+pub const DNF_UNUSED_31: ::DWORD = 0x80000000;
+pub type PSP_DETSIG_CMPPROC = Option<unsafe extern "system" fn(
+ DeviceInfoSet: HDEVINFO, NewDeviceData: PSP_DEVINFO_DATA, ExistingDeviceData: PSP_DEVINFO_DATA,
+ CompareContext: ::PVOID,
+) -> ::DWORD>;
+STRUCT!{struct COINSTALLER_CONTEXT_DATA {
+ PostProcessing: ::BOOL,
+ InstallResult: ::DWORD,
+ PrivateData: ::PVOID,
+}}
+pub type PCOINSTALLER_CONTEXT_DATA = *mut COINSTALLER_CONTEXT_DATA;
+STRUCT!{struct SP_CLASSIMAGELIST_DATA {
+ cbSize: ::DWORD,
+ ImageList: ::HIMAGELIST,
+ Reserved: ::ULONG_PTR,
+}}
+pub type PSP_CLASSIMAGELIST_DATA = *mut SP_CLASSIMAGELIST_DATA;
+STRUCT!{struct SP_PROPSHEETPAGE_REQUEST {
+ cbSize: ::DWORD,
+ PageRequested: ::DWORD,
+ DeviceInfoSet: HDEVINFO,
+ DeviceInfoData: PSP_DEVINFO_DATA,
+}}
+pub type PSP_PROPSHEETPAGE_REQUEST = *mut SP_PROPSHEETPAGE_REQUEST;
+pub const SPPSR_SELECT_DEVICE_RESOURCES: ::DWORD = 1;
+pub const SPPSR_ENUM_BASIC_DEVICE_PROPERTIES: ::DWORD = 2;
+pub const SPPSR_ENUM_ADV_DEVICE_PROPERTIES: ::DWORD = 3;
+STRUCT!{nodebug struct SP_BACKUP_QUEUE_PARAMS_V2_A {
+ cbSize: ::DWORD,
+ FullInfPath: [::CHAR; ::MAX_PATH],
+ FilenameOffset: ::INT,
+ ReinstallInstance: [::CHAR; ::MAX_PATH],
+}}
+pub type PSP_BACKUP_QUEUE_PARAMS_V2_A = *mut SP_BACKUP_QUEUE_PARAMS_V2_A;
+STRUCT!{nodebug struct SP_BACKUP_QUEUE_PARAMS_V2_W {
+ cbSize: ::DWORD,
+ FullInfPath: [::WCHAR; ::MAX_PATH],
+ FilenameOffset: ::INT,
+ ReinstallInstance: [::WCHAR; ::MAX_PATH],
+}}
+pub type PSP_BACKUP_QUEUE_PARAMS_V2_W = *mut SP_BACKUP_QUEUE_PARAMS_V2_W;
+STRUCT!{nodebug struct SP_BACKUP_QUEUE_PARAMS_V1_A {
+ cbSize: ::DWORD,
+ FullInfPath: [::CHAR; ::MAX_PATH],
+ FilenameOffset: ::INT,
+}}
+pub type PSP_BACKUP_QUEUE_PARAMS_V1_A = *mut SP_BACKUP_QUEUE_PARAMS_V1_A;
+STRUCT!{nodebug struct SP_BACKUP_QUEUE_PARAMS_V1_W {
+ cbSize: ::DWORD,
+ FullInfPath: [::WCHAR; ::MAX_PATH],
+ FilenameOffset: ::INT,
+}}
+pub type PSP_BACKUP_QUEUE_PARAMS_V1_W = *mut SP_BACKUP_QUEUE_PARAMS_V1_W;
+pub type SP_BACKUP_QUEUE_PARAMS_A = SP_BACKUP_QUEUE_PARAMS_V2_A;
+pub type PSP_BACKUP_QUEUE_PARAMS_A = PSP_BACKUP_QUEUE_PARAMS_V2_A;
+pub type SP_BACKUP_QUEUE_PARAMS_W = SP_BACKUP_QUEUE_PARAMS_V2_W;
+pub type PSP_BACKUP_QUEUE_PARAMS_W = PSP_BACKUP_QUEUE_PARAMS_V2_W;
+pub const ERROR_EXPECTED_SECTION_NAME: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0;
+pub const ERROR_BAD_SECTION_NAME_LINE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 1;
+pub const ERROR_SECTION_NAME_TOO_LONG: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 2;
+pub const ERROR_GENERAL_SYNTAX: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 3;
+pub const ERROR_WRONG_INF_STYLE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x100;
+pub const ERROR_SECTION_NOT_FOUND: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x101;
+pub const ERROR_LINE_NOT_FOUND: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x102;
+pub const ERROR_NO_BACKUP: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x103;
+pub const ERROR_NO_ASSOCIATED_CLASS: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x200;
+pub const ERROR_CLASS_MISMATCH: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x201;
+pub const ERROR_DUPLICATE_FOUND: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x202;
+pub const ERROR_NO_DRIVER_SELECTED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x203;
+pub const ERROR_KEY_DOES_NOT_EXIST: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x204;
+pub const ERROR_INVALID_DEVINST_NAME: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x205;
+pub const ERROR_INVALID_CLASS: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x206;
+pub const ERROR_DEVINST_ALREADY_EXISTS: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x207;
+pub const ERROR_DEVINFO_NOT_REGISTERED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x208;
+pub const ERROR_INVALID_REG_PROPERTY: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x209;
+pub const ERROR_NO_INF: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x20A;
+pub const ERROR_NO_SUCH_DEVINST: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x20B;
+pub const ERROR_CANT_LOAD_CLASS_ICON: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x20C;
+pub const ERROR_INVALID_CLASS_INSTALLER: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x20D;
+pub const ERROR_DI_DO_DEFAULT: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x20E;
+pub const ERROR_DI_NOFILECOPY: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x20F;
+pub const ERROR_INVALID_HWPROFILE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x210;
+pub const ERROR_NO_DEVICE_SELECTED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x211;
+pub const ERROR_DEVINFO_LIST_LOCKED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x212;
+pub const ERROR_DEVINFO_DATA_LOCKED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x213;
+pub const ERROR_DI_BAD_PATH: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x214;
+pub const ERROR_NO_CLASSINSTALL_PARAMS: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x215;
+pub const ERROR_FILEQUEUE_LOCKED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x216;
+pub const ERROR_BAD_SERVICE_INSTALLSECT: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x217;
+pub const ERROR_NO_CLASS_DRIVER_LIST: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x218;
+pub const ERROR_NO_ASSOCIATED_SERVICE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x219;
+pub const ERROR_NO_DEFAULT_DEVICE_INTERFACE: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x21A;
+pub const ERROR_DEVICE_INTERFACE_ACTIVE: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x21B;
+pub const ERROR_DEVICE_INTERFACE_REMOVED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x21C;
+pub const ERROR_BAD_INTERFACE_INSTALLSECT: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x21D;
+pub const ERROR_NO_SUCH_INTERFACE_CLASS: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x21E;
+pub const ERROR_INVALID_REFERENCE_STRING: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x21F;
+pub const ERROR_INVALID_MACHINENAME: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x220;
+pub const ERROR_REMOTE_COMM_FAILURE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x221;
+pub const ERROR_MACHINE_UNAVAILABLE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x222;
+pub const ERROR_NO_CONFIGMGR_SERVICES: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x223;
+pub const ERROR_INVALID_PROPPAGE_PROVIDER: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x224;
+pub const ERROR_NO_SUCH_DEVICE_INTERFACE: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x225;
+pub const ERROR_DI_POSTPROCESSING_REQUIRED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x226;
+pub const ERROR_INVALID_COINSTALLER: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x227;
+pub const ERROR_NO_COMPAT_DRIVERS: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x228;
+pub const ERROR_NO_DEVICE_ICON: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x229;
+pub const ERROR_INVALID_INF_LOGCONFIG: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x22A;
+pub const ERROR_DI_DONT_INSTALL: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x22B;
+pub const ERROR_INVALID_FILTER_DRIVER: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x22C;
+pub const ERROR_NON_WINDOWS_NT_DRIVER: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x22D;
+pub const ERROR_NON_WINDOWS_DRIVER: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x22E;
+pub const ERROR_NO_CATALOG_FOR_OEM_INF: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x22F;
+pub const ERROR_DEVINSTALL_QUEUE_NONNATIVE: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x230;
+pub const ERROR_NOT_DISABLEABLE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x231;
+pub const ERROR_CANT_REMOVE_DEVINST: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x232;
+pub const ERROR_INVALID_TARGET: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x233;
+pub const ERROR_DRIVER_NONNATIVE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x234;
+pub const ERROR_IN_WOW64: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x235;
+pub const ERROR_SET_SYSTEM_RESTORE_POINT: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x236;
+pub const ERROR_SCE_DISABLED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR | 0x238;
+pub const ERROR_UNKNOWN_EXCEPTION: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x239;
+pub const ERROR_PNP_REGISTRY_ERROR: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x23A;
+pub const ERROR_REMOTE_REQUEST_UNSUPPORTED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x23B;
+pub const ERROR_NOT_AN_INSTALLED_OEM_INF: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x23C;
+pub const ERROR_INF_IN_USE_BY_DEVICES: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x23D;
+pub const ERROR_DI_FUNCTION_OBSOLETE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x23E;
+pub const ERROR_NO_AUTHENTICODE_CATALOG: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x23F;
+pub const ERROR_AUTHENTICODE_DISALLOWED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x240;
+pub const ERROR_AUTHENTICODE_TRUSTED_PUBLISHER: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x241;
+pub const ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x242;
+pub const ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x243;
+pub const ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x244;
+pub const ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x245;
+pub const ERROR_DEVICE_INSTALLER_NOT_READY: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x246;
+pub const ERROR_DRIVER_STORE_ADD_FAILED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x247;
+pub const ERROR_DEVICE_INSTALL_BLOCKED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x248;
+pub const ERROR_DRIVER_INSTALL_BLOCKED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x249;
+pub const ERROR_WRONG_INF_TYPE: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x24A;
+pub const ERROR_FILE_HASH_NOT_IN_CATALOG: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x24B;
+pub const ERROR_DRIVER_STORE_DELETE_FAILED: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x24C;
+pub const ERROR_UNRECOVERABLE_STACK_OVERFLOW: ::DWORD = ::APPLICATION_ERROR_MASK
+ | ::ERROR_SEVERITY_ERROR | 0x300;
+pub const EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW: ::DWORD =
+ ERROR_UNRECOVERABLE_STACK_OVERFLOW;
+pub const ERROR_NO_DEFAULT_INTERFACE_DEVICE: ::DWORD = ERROR_NO_DEFAULT_DEVICE_INTERFACE;
+pub const ERROR_INTERFACE_DEVICE_ACTIVE: ::DWORD = ERROR_DEVICE_INTERFACE_ACTIVE;
+pub const ERROR_INTERFACE_DEVICE_REMOVED: ::DWORD = ERROR_DEVICE_INTERFACE_REMOVED;
+pub const ERROR_NO_SUCH_INTERFACE_DEVICE: ::DWORD = ERROR_NO_SUCH_DEVICE_INTERFACE;
+pub const ERROR_NOT_INSTALLED: ::DWORD = ::APPLICATION_ERROR_MASK | ::ERROR_SEVERITY_ERROR
+ | 0x1000;
+pub const INFINFO_INF_SPEC_IS_HINF: ::DWORD = 1;
+pub const INFINFO_INF_NAME_IS_ABSOLUTE: ::DWORD = 2;
+pub const INFINFO_DEFAULT_SEARCH: ::DWORD = 3;
+pub const INFINFO_REVERSE_DEFAULT_SEARCH: ::DWORD = 4;
+pub const INFINFO_INF_PATH_LIST_SEARCH: ::DWORD = 5;
+pub const FILE_COMPRESSION_NONE: ::UINT = 0;
+pub const FILE_COMPRESSION_WINLZA: ::UINT = 1;
+pub const FILE_COMPRESSION_MSZIP: ::UINT = 2;
+pub const FILE_COMPRESSION_NTCAB: ::UINT = 3;
+pub const SRCLIST_TEMPORARY: ::DWORD = 0x00000001;
+pub const SRCLIST_NOBROWSE: ::DWORD = 0x00000002;
+pub const SRCLIST_SYSTEM: ::DWORD = 0x00000010;
+pub const SRCLIST_USER: ::DWORD = 0x00000020;
+pub const SRCLIST_SYSIFADMIN: ::DWORD = 0x00000040;
+pub const SRCLIST_SUBDIRS: ::DWORD = 0x00000100;
+pub const SRCLIST_APPEND: ::DWORD = 0x00000200;
+pub const SRCLIST_NOSTRIPPLATFORM: ::DWORD = 0x00000400;
+pub const IDF_NOBROWSE: ::DWORD = 0x00000001;
+pub const IDF_NOSKIP: ::DWORD = 0x00000002;
+pub const IDF_NODETAILS: ::DWORD = 0x00000004;
+pub const IDF_NOCOMPRESSED: ::DWORD = 0x00000008;
+pub const IDF_CHECKFIRST: ::DWORD = 0x00000100;
+pub const IDF_NOBEEP: ::DWORD = 0x00000200;
+pub const IDF_NOFOREGROUND: ::DWORD = 0x00000400;
+pub const IDF_WARNIFSKIP: ::DWORD = 0x00000800;
+pub const IDF_NOREMOVABLEMEDIAPROMPT: ::DWORD = 0x00001000;
+pub const IDF_USEDISKNAMEASPROMPT: ::DWORD = 0x00002000;
+pub const IDF_OEMDISK: ::DWORD = 0x80000000;
+pub const DPROMPT_SUCCESS: ::UINT = 0;
+pub const DPROMPT_CANCEL: ::UINT = 1;
+pub const DPROMPT_SKIPFILE: ::UINT = 2;
+pub const DPROMPT_BUFFERTOOSMALL: ::UINT = 3;
+pub const DPROMPT_OUTOFMEMORY: ::UINT = 4;
+pub const SETDIRID_NOT_FULL_PATH: ::DWORD = 0x00000001;
+pub const SRCINFO_PATH: ::UINT = 1;
+pub const SRCINFO_TAGFILE: ::UINT = 2;
+pub const SRCINFO_DESCRIPTION: ::UINT = 3;
+pub const SRCINFO_FLAGS: ::UINT = 4;
+pub const SRCINFO_TAGFILE2: ::UINT = 4;
+pub const SRC_FLAGS_CABFILE: ::UINT = 0x0010;
+pub const SP_COPY_DELETESOURCE: ::DWORD = 0x0000001;
+pub const SP_COPY_REPLACEONLY: ::DWORD = 0x0000002;
+pub const SP_COPY_NEWER: ::DWORD = 0x0000004;
+pub const SP_COPY_NEWER_OR_SAME: ::DWORD = SP_COPY_NEWER;
+pub const SP_COPY_NOOVERWRITE: ::DWORD = 0x0000008;
+pub const SP_COPY_NODECOMP: ::DWORD = 0x0000010;
+pub const SP_COPY_LANGUAGEAWARE: ::DWORD = 0x0000020;
+pub const SP_COPY_SOURCE_ABSOLUTE: ::DWORD = 0x0000040;
+pub const SP_COPY_SOURCEPATH_ABSOLUTE: ::DWORD = 0x0000080;
+pub const SP_COPY_IN_USE_NEEDS_REBOOT: ::DWORD = 0x0000100;
+pub const SP_COPY_FORCE_IN_USE: ::DWORD = 0x0000200;
+pub const SP_COPY_NOSKIP: ::DWORD = 0x0000400;
+pub const SP_FLAG_CABINETCONTINUATION: ::DWORD = 0x0000800;
+pub const SP_COPY_FORCE_NOOVERWRITE: ::DWORD = 0x0001000;
+pub const SP_COPY_FORCE_NEWER: ::DWORD = 0x0002000;
+pub const SP_COPY_WARNIFSKIP: ::DWORD = 0x0004000;
+pub const SP_COPY_NOBROWSE: ::DWORD = 0x0008000;
+pub const SP_COPY_NEWER_ONLY: ::DWORD = 0x0010000;
+pub const SP_COPY_RESERVED: ::DWORD = 0x0020000;
+pub const SP_COPY_OEMINF_CATALOG_ONLY: ::DWORD = 0x0040000;
+pub const SP_COPY_REPLACE_BOOT_FILE: ::DWORD = 0x0080000;
+pub const SP_COPY_NOPRUNE: ::DWORD = 0x0100000;
+pub const SP_COPY_OEM_F6_INF: ::DWORD = 0x0200000;
+pub const SP_COPY_ALREADYDECOMP: ::DWORD = 0x0400000;
+pub const SP_COPY_WINDOWS_SIGNED: ::DWORD = 0x1000000;
+pub const SP_COPY_PNPLOCKED: ::DWORD = 0x2000000;
+pub const SP_COPY_IN_USE_TRY_RENAME: ::DWORD = 0x4000000;
+pub const SP_COPY_INBOX_INF: ::DWORD = 0x8000000;
+pub const SP_COPY_HARDLINK: ::DWORD = 0x10000000;
+pub const SP_BACKUP_BACKUPPASS: ::DWORD = 0x00000001;
+pub const SP_BACKUP_DEMANDPASS: ::DWORD = 0x00000002;
+pub const SP_BACKUP_SPECIAL: ::DWORD = 0x00000004;
+pub const SP_BACKUP_BOOTFILE: ::DWORD = 0x00000008;
+pub const SPQ_SCAN_FILE_PRESENCE: ::DWORD = 0x00000001;
+pub const SPQ_SCAN_FILE_VALIDITY: ::DWORD = 0x00000002;
+pub const SPQ_SCAN_USE_CALLBACK: ::DWORD = 0x00000004;
+pub const SPQ_SCAN_USE_CALLBACKEX: ::DWORD = 0x00000008;
+pub const SPQ_SCAN_INFORM_USER: ::DWORD = 0x00000010;
+pub const SPQ_SCAN_PRUNE_COPY_QUEUE: ::DWORD = 0x00000020;
+pub const SPQ_SCAN_USE_CALLBACK_SIGNERINFO: ::DWORD = 0x00000040;
+pub const SPQ_SCAN_PRUNE_DELREN: ::DWORD = 0x00000080;
+pub const SPQ_SCAN_FILE_PRESENCE_WITHOUT_SOURCE: ::DWORD = 0x00000100;
+pub const SPQ_SCAN_FILE_COMPARISON: ::DWORD = 0x00000200;
+pub const SPQ_SCAN_ACTIVATE_DRP: ::DWORD = 0x00000400;
+pub const SPQ_DELAYED_COPY: ::DWORD = 0x00000001;
+pub const SPQ_FLAG_BACKUP_AWARE: ::DWORD = 0x00000001;
+pub const SPQ_FLAG_ABORT_IF_UNSIGNED: ::DWORD = 0x00000002;
+pub const SPQ_FLAG_FILES_MODIFIED: ::DWORD = 0x00000004;
+pub const SPQ_FLAG_DO_SHUFFLEMOVE: ::DWORD = 0x00000008;
+pub const SPQ_FLAG_VALID: ::DWORD = 0x0000000F;
+pub const SPOST_NONE: ::DWORD = 0;
+pub const SPOST_PATH: ::DWORD = 1;
+pub const SPOST_URL: ::DWORD = 2;
+pub const SPOST_MAX: ::DWORD = 3;
+pub const SUOI_FORCEDELETE: ::DWORD = 0x00000001;
+pub const SUOI_INTERNAL1: ::DWORD = 0x00000002;
+pub const SPDSL_IGNORE_DISK: ::UINT = 0x00000001;
+pub const SPDSL_DISALLOW_NEGATIVE_ADJUST: ::UINT = 0x00000002;
+pub const SPFILEQ_FILE_IN_USE: ::INT = 0x00000001;
+pub const SPFILEQ_REBOOT_RECOMMENDED: ::INT = 0x00000002;
+pub const SPFILEQ_REBOOT_IN_PROGRESS: ::INT = 0x00000004;
+pub const FLG_ADDREG_DELREG_BIT: ::DWORD = 0x00008000;
+pub const FLG_ADDREG_BINVALUETYPE: ::DWORD = 0x00000001;
+pub const FLG_ADDREG_NOCLOBBER: ::DWORD = 0x00000002;
+pub const FLG_ADDREG_DELVAL: ::DWORD = 0x00000004;
+pub const FLG_ADDREG_APPEND: ::DWORD = 0x00000008;
+pub const FLG_ADDREG_KEYONLY: ::DWORD = 0x00000010;
+pub const FLG_ADDREG_OVERWRITEONLY: ::DWORD = 0x00000020;
+pub const FLG_ADDREG_64BITKEY: ::DWORD = 0x00001000;
+pub const FLG_ADDREG_KEYONLY_COMMON: ::DWORD = 0x00002000;
+pub const FLG_ADDREG_32BITKEY: ::DWORD = 0x00004000;
+pub const FLG_ADDREG_TYPE_MASK: ::DWORD = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE;
+pub const FLG_ADDREG_TYPE_SZ: ::DWORD = 0x00000000;
+pub const FLG_ADDREG_TYPE_MULTI_SZ: ::DWORD = 0x00010000;
+pub const FLG_ADDREG_TYPE_EXPAND_SZ: ::DWORD = 0x00020000;
+pub const FLG_ADDREG_TYPE_BINARY: ::DWORD = 0x00000000 | FLG_ADDREG_BINVALUETYPE;
+pub const FLG_ADDREG_TYPE_DWORD: ::DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE;
+pub const FLG_ADDREG_TYPE_NONE: ::DWORD = 0x00020000 | FLG_ADDREG_BINVALUETYPE;
+pub const FLG_DELREG_VALUE: ::DWORD = 0x00000000;
+pub const FLG_DELREG_TYPE_MASK: ::DWORD = FLG_ADDREG_TYPE_MASK;
+pub const FLG_DELREG_TYPE_SZ: ::DWORD = FLG_ADDREG_TYPE_SZ;
+pub const FLG_DELREG_TYPE_MULTI_SZ: ::DWORD = FLG_ADDREG_TYPE_MULTI_SZ;
+pub const FLG_DELREG_TYPE_EXPAND_SZ: ::DWORD = FLG_ADDREG_TYPE_EXPAND_SZ;
+pub const FLG_DELREG_TYPE_BINARY: ::DWORD = FLG_ADDREG_TYPE_BINARY;
+pub const FLG_DELREG_TYPE_DWORD: ::DWORD = FLG_ADDREG_TYPE_DWORD;
+pub const FLG_DELREG_TYPE_NONE: ::DWORD = FLG_ADDREG_TYPE_NONE;
+pub const FLG_DELREG_64BITKEY: ::DWORD = FLG_ADDREG_64BITKEY;
+pub const FLG_DELREG_KEYONLY_COMMON: ::DWORD = FLG_ADDREG_KEYONLY_COMMON;
+pub const FLG_DELREG_32BITKEY: ::DWORD = FLG_ADDREG_32BITKEY;
+pub const FLG_DELREG_OPERATION_MASK: ::DWORD = 0x000000FE;
+pub const FLG_DELREG_MULTI_SZ_DELSTRING: ::DWORD = FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT
+ | 0x00000002;
+pub const FLG_BITREG_CLEARBITS: ::DWORD = 0x00000000;
+pub const FLG_BITREG_SETBITS: ::DWORD = 0x00000001;
+pub const FLG_BITREG_64BITKEY: ::DWORD = 0x00001000;
+pub const FLG_BITREG_32BITKEY: ::DWORD = 0x00004000;
+pub const FLG_INI2REG_64BITKEY: ::DWORD = 0x00001000;
+pub const FLG_INI2REG_32BITKEY: ::DWORD = 0x00004000;
+pub const FLG_REGSVR_DLLREGISTER: ::DWORD = 0x00000001;
+pub const FLG_REGSVR_DLLINSTALL: ::DWORD = 0x00000002;
+pub const FLG_PROFITEM_CURRENTUSER: ::DWORD = 0x00000001;
+pub const FLG_PROFITEM_DELETE: ::DWORD = 0x00000002;
+pub const FLG_PROFITEM_GROUP: ::DWORD = 0x00000004;
+pub const FLG_PROFITEM_CSIDL: ::DWORD = 0x00000008;
+pub const FLG_ADDPROPERTY_NOCLOBBER: ::DWORD = 0x00000001;
+pub const FLG_ADDPROPERTY_OVERWRITEONLY: ::DWORD = 0x00000002;
+pub const FLG_ADDPROPERTY_APPEND: ::DWORD = 0x00000004;
+pub const FLG_ADDPROPERTY_OR: ::DWORD = 0x00000008;
+pub const FLG_ADDPROPERTY_AND: ::DWORD = 0x00000010;
+pub const FLG_DELPROPERTY_MULTI_SZ_DELSTRING: ::DWORD = 0x00000001;
+pub const SPINST_LOGCONFIG: ::UINT = 0x00000001;
+pub const SPINST_INIFILES: ::UINT = 0x00000002;
+pub const SPINST_REGISTRY: ::UINT = 0x00000004;
+pub const SPINST_INI2REG: ::UINT = 0x00000008;
+pub const SPINST_FILES: ::UINT = 0x00000010;
+pub const SPINST_BITREG: ::UINT = 0x00000020;
+pub const SPINST_REGSVR: ::UINT = 0x00000040;
+pub const SPINST_UNREGSVR: ::UINT = 0x00000080;
+pub const SPINST_PROFILEITEMS: ::UINT = 0x00000100;
+pub const SPINST_COPYINF: ::UINT = 0x00000200;
+pub const SPINST_PROPERTIES: ::UINT = 0x00000400;
+pub const SPINST_ALL: ::UINT = 0x000007ff;
+pub const SPINST_SINGLESECTION: ::UINT = 0x00010000;
+pub const SPINST_LOGCONFIG_IS_FORCED: ::UINT = 0x00020000;
+pub const SPINST_LOGCONFIGS_ARE_OVERRIDES: ::UINT = 0x00040000;
+pub const SPINST_REGISTERCALLBACKAWARE: ::UINT = 0x00080000;
+pub const SPINST_DEVICEINSTALL: ::UINT = 0x00100000;
+pub const SPSVCINST_TAGTOFRONT: ::DWORD = 0x00000001;
+pub const SPSVCINST_ASSOCSERVICE: ::DWORD = 0x00000002;
+pub const SPSVCINST_DELETEEVENTLOGENTRY: ::DWORD = 0x00000004;
+pub const SPSVCINST_NOCLOBBER_DISPLAYNAME: ::DWORD = 0x00000008;
+pub const SPSVCINST_NOCLOBBER_STARTTYPE: ::DWORD = 0x00000010;
+pub const SPSVCINST_NOCLOBBER_ERRORCONTROL: ::DWORD = 0x00000020;
+pub const SPSVCINST_NOCLOBBER_LOADORDERGROUP: ::DWORD = 0x00000040;
+pub const SPSVCINST_NOCLOBBER_DEPENDENCIES: ::DWORD = 0x00000080;
+pub const SPSVCINST_NOCLOBBER_DESCRIPTION: ::DWORD = 0x00000100;
+pub const SPSVCINST_STOPSERVICE: ::DWORD = 0x00000200;
+pub const SPSVCINST_CLOBBER_SECURITY: ::DWORD = 0x00000400;
+pub const SPSVCINST_STARTSERVICE: ::DWORD = 0x00000800;
+pub const SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES: ::DWORD = 0x00001000;
+pub type HSPFILELOG = ::PVOID;
+pub const SPFILELOG_SYSTEMLOG: ::DWORD = 0x00000001;
+pub const SPFILELOG_FORCENEW: ::DWORD = 0x00000002;
+pub const SPFILELOG_QUERYONLY: ::DWORD = 0x00000004;
+pub const SPFILELOG_OEMFILE: ::DWORD = 0x00000001;
+ENUM!{enum SetupFileLogInfo {
+ SetupFileLogSourceFilename,
+ SetupFileLogChecksum,
+ SetupFileLogDiskTagfile,
+ SetupFileLogDiskDescription,
+ SetupFileLogOtherInfo,
+ SetupFileLogMax,
+}}
+pub type LogSeverity = ::DWORD;
+pub const LogSevInformation: LogSeverity = 0x00000000;
+pub const LogSevWarning: LogSeverity = 0x00000001;
+pub const LogSevError: LogSeverity = 0x00000002;
+pub const LogSevFatalError: LogSeverity = 0x00000003;
+pub const LogSevMaximum: LogSeverity = 0x00000004;
+pub const DICD_GENERATE_ID: ::DWORD = 0x00000001;
+pub const DICD_INHERIT_CLASSDRVS: ::DWORD = 0x00000002;
+pub const DIOD_INHERIT_CLASSDRVS: ::DWORD = 0x00000002;
+pub const DIOD_CANCEL_REMOVE: ::DWORD = 0x00000004;
+pub const DIODI_NO_ADD: ::DWORD = 0x00000001;
+pub const SPRDI_FIND_DUPS: ::DWORD = 0x00000001;
+pub const SPDIT_NODRIVER: ::DWORD = 0x00000000;
+pub const SPDIT_CLASSDRIVER: ::DWORD = 0x00000001;
+pub const SPDIT_COMPATDRIVER: ::DWORD = 0x00000002;
+pub const DIGCF_DEFAULT: ::DWORD = 0x00000001;
+pub const DIGCF_PRESENT: ::DWORD = 0x00000002;
+pub const DIGCF_ALLCLASSES: ::DWORD = 0x00000004;
+pub const DIGCF_PROFILE: ::DWORD = 0x00000008;
+pub const DIGCF_DEVICEINTERFACE: ::DWORD = 0x00000010;
+pub const DIBCI_NOINSTALLCLASS: ::DWORD = 0x00000001;
+pub const DIBCI_NODISPLAYCLASS: ::DWORD = 0x00000002;
+pub const DIOCR_INSTALLER: ::DWORD = 0x00000001;
+pub const DIOCR_INTERFACE: ::DWORD = 0x00000002;
+pub const DIREG_DEV: ::DWORD = 0x00000001;
+pub const DIREG_DRV: ::DWORD = 0x00000002;
+pub const DIREG_BOTH: ::DWORD = 0x00000004;
+pub const DICLASSPROP_INSTALLER: ::DWORD = 0x00000001;
+pub const DICLASSPROP_INTERFACE: ::DWORD = 0x00000002;
+pub const SPDRP_DEVICEDESC: ::DWORD = 0x00000000;
+pub const SPDRP_HARDWAREID: ::DWORD = 0x00000001;
+pub const SPDRP_COMPATIBLEIDS: ::DWORD = 0x00000002;
+pub const SPDRP_UNUSED0: ::DWORD = 0x00000003;
+pub const SPDRP_SERVICE: ::DWORD = 0x00000004;
+pub const SPDRP_UNUSED1: ::DWORD = 0x00000005;
+pub const SPDRP_UNUSED2: ::DWORD = 0x00000006;
+pub const SPDRP_CLASS: ::DWORD = 0x00000007;
+pub const SPDRP_CLASSGUID: ::DWORD = 0x00000008;
+pub const SPDRP_DRIVER: ::DWORD = 0x00000009;
+pub const SPDRP_CONFIGFLAGS: ::DWORD = 0x0000000A;
+pub const SPDRP_MFG: ::DWORD = 0x0000000B;
+pub const SPDRP_FRIENDLYNAME: ::DWORD = 0x0000000C;
+pub const SPDRP_LOCATION_INFORMATION: ::DWORD = 0x0000000D;
+pub const SPDRP_PHYSICAL_DEVICE_OBJECT_NAME: ::DWORD = 0x0000000E;
+pub const SPDRP_CAPABILITIES: ::DWORD = 0x0000000F;
+pub const SPDRP_UI_NUMBER: ::DWORD = 0x00000010;
+pub const SPDRP_UPPERFILTERS: ::DWORD = 0x00000011;
+pub const SPDRP_LOWERFILTERS: ::DWORD = 0x00000012;
+pub const SPDRP_BUSTYPEGUID: ::DWORD = 0x00000013;
+pub const SPDRP_LEGACYBUSTYPE: ::DWORD = 0x00000014;
+pub const SPDRP_BUSNUMBER: ::DWORD = 0x00000015;
+pub const SPDRP_ENUMERATOR_NAME: ::DWORD = 0x00000016;
+pub const SPDRP_SECURITY: ::DWORD = 0x00000017;
+pub const SPDRP_SECURITY_SDS: ::DWORD = 0x00000018;
+pub const SPDRP_DEVTYPE: ::DWORD = 0x00000019;
+pub const SPDRP_EXCLUSIVE: ::DWORD = 0x0000001A;
+pub const SPDRP_CHARACTERISTICS: ::DWORD = 0x0000001B;
+pub const SPDRP_ADDRESS: ::DWORD = 0x0000001C;
+pub const SPDRP_UI_NUMBER_DESC_FORMAT: ::DWORD = 0x0000001D;
+pub const SPDRP_DEVICE_POWER_DATA: ::DWORD = 0x0000001E;
+pub const SPDRP_REMOVAL_POLICY: ::DWORD = 0x0000001F;
+pub const SPDRP_REMOVAL_POLICY_HW_DEFAULT: ::DWORD = 0x00000020;
+pub const SPDRP_REMOVAL_POLICY_OVERRIDE: ::DWORD = 0x00000021;
+pub const SPDRP_INSTALL_STATE: ::DWORD = 0x00000022;
+pub const SPDRP_LOCATION_PATHS: ::DWORD = 0x00000023;
+pub const SPDRP_BASE_CONTAINERID: ::DWORD = 0x00000024;
+pub const SPDRP_MAXIMUM_PROPERTY: ::DWORD = 0x00000025;
+pub const SPCRP_UPPERFILTERS: ::DWORD = 0x00000011;
+pub const SPCRP_LOWERFILTERS: ::DWORD = 0x00000012;
+pub const SPCRP_SECURITY: ::DWORD = 0x00000017;
+pub const SPCRP_SECURITY_SDS: ::DWORD = 0x00000018;
+pub const SPCRP_DEVTYPE: ::DWORD = 0x00000019;
+pub const SPCRP_EXCLUSIVE: ::DWORD = 0x0000001A;
+pub const SPCRP_CHARACTERISTICS: ::DWORD = 0x0000001B;
+pub const SPCRP_MAXIMUM_PROPERTY: ::DWORD = 0x0000001C;
+pub const DMI_MASK: ::DWORD = 0x00000001;
+pub const DMI_BKCOLOR: ::DWORD = 0x00000002;
+pub const DMI_USERECT: ::DWORD = 0x00000004;
+pub const DIGCDP_FLAG_BASIC: ::DWORD = 0x00000001;
+pub const DIGCDP_FLAG_ADVANCED: ::DWORD = 0x00000002;
+pub const DIGCDP_FLAG_REMOTE_BASIC: ::DWORD = 0x00000003;
+pub const DIGCDP_FLAG_REMOTE_ADVANCED: ::DWORD = 0x00000004;
+pub const IDI_RESOURCEFIRST: ::c_int = 159;
+pub const IDI_RESOURCE: ::c_int = 159;
+pub const IDI_RESOURCELAST: ::c_int = 161;
+pub const IDI_RESOURCEOVERLAYFIRST: ::c_int = 161;
+pub const IDI_RESOURCEOVERLAYLAST: ::c_int = 161;
+pub const IDI_CONFLICT: ::c_int = 161;
+pub const IDI_CLASSICON_OVERLAYFIRST: ::c_int = 500;
+pub const IDI_CLASSICON_OVERLAYLAST: ::c_int = 502;
+pub const IDI_PROBLEM_OVL: ::c_int = 500;
+pub const IDI_DISABLED_OVL: ::c_int = 501;
+pub const IDI_FORCED_OVL: ::c_int = 502;
+pub const SPWPT_SELECTDEVICE: ::DWORD = 0x00000001;
+pub const SPWP_USE_DEVINFO_DATA: ::DWORD = 0x00000001;
+STRUCT!{nodebug struct SP_INF_SIGNER_INFO_V1_A {
+ cbSize: ::DWORD,
+ CatalogFile: [::CHAR; ::MAX_PATH],
+ DigitalSigner: [::CHAR; ::MAX_PATH],
+ DigitalSignerVersion: [::CHAR; ::MAX_PATH],
+}}
+pub type PSP_INF_SIGNER_INFO_V1_A = *mut SP_INF_SIGNER_INFO_V1_A;
+STRUCT!{nodebug struct SP_INF_SIGNER_INFO_V1_W {
+ cbSize: ::DWORD,
+ CatalogFile: [::WCHAR; ::MAX_PATH],
+ DigitalSigner: [::WCHAR; ::MAX_PATH],
+ DigitalSignerVersion: [::WCHAR; ::MAX_PATH],
+}}
+pub type PSP_INF_SIGNER_INFO_V1_W = *mut SP_INF_SIGNER_INFO_V1_W;
+STRUCT!{nodebug struct SP_INF_SIGNER_INFO_V2_A {
+ cbSize: ::DWORD,
+ CatalogFile: [::CHAR; ::MAX_PATH],
+ DigitalSigner: [::CHAR; ::MAX_PATH],
+ DigitalSignerVersion: [::CHAR; ::MAX_PATH],
+ SignerScore: ::DWORD,
+}}
+pub type PSP_INF_SIGNER_INFO_V2_A = *mut SP_INF_SIGNER_INFO_V2_A;
+STRUCT!{nodebug struct SP_INF_SIGNER_INFO_V2_W {
+ cbSize: ::DWORD,
+ CatalogFile: [::WCHAR; ::MAX_PATH],
+ DigitalSigner: [::WCHAR; ::MAX_PATH],
+ DigitalSignerVersion: [::WCHAR; ::MAX_PATH],
+ SignerScore: ::DWORD,
+}}
+pub type PSP_INF_SIGNER_INFO_V2_W = *mut SP_INF_SIGNER_INFO_V2_W;
+pub type SP_INF_SIGNER_INFO_A = SP_INF_SIGNER_INFO_V2_A;
+pub type PSP_INF_SIGNER_INFO_A = PSP_INF_SIGNER_INFO_V2_A;
+pub type SP_INF_SIGNER_INFO_W = SP_INF_SIGNER_INFO_V2_W;
+pub type PSP_INF_SIGNER_INFO_W = PSP_INF_SIGNER_INFO_V2_W;
+pub const SIGNERSCORE_UNKNOWN: ::DWORD = 0xFF000000;
+pub const SIGNERSCORE_W9X_SUSPECT: ::DWORD = 0xC0000000;
+pub const SIGNERSCORE_UNSIGNED: ::DWORD = 0x80000000;
+pub const SIGNERSCORE_AUTHENTICODE: ::DWORD = 0x0F000000;
+pub const SIGNERSCORE_WHQL: ::DWORD = 0x0D000005;
+pub const SIGNERSCORE_UNCLASSIFIED: ::DWORD = 0x0D000004;
+pub const SIGNERSCORE_INBOX: ::DWORD = 0x0D000003;
+pub const SIGNERSCORE_LOGO_STANDARD: ::DWORD = 0x0D000002;
+pub const SIGNERSCORE_LOGO_PREMIUM: ::DWORD = 0x0D000001;
+pub const SIGNERSCORE_MASK: ::DWORD = 0xFF000000;
+pub const SIGNERSCORE_SIGNED_MASK: ::DWORD = 0xF0000000;
+pub const DICUSTOMDEVPROP_MERGE_MULTISZ: ::DWORD = 0x00000001;
+pub const SCWMI_CLOBBER_SECURITY: ::DWORD = 0x00000001;
diff --git a/third_party/rust/winapi-0.2.8/src/shellapi.rs b/third_party/rust/winapi-0.2.8/src/shellapi.rs
new file mode 100644
index 0000000000..6f253cfd15
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/shellapi.rs
@@ -0,0 +1,62 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+// STUB
+DECLARE_HANDLE!(HDROP, HDROP__);
+
+pub const NIM_ADD: ::DWORD = 0x00000000;
+pub const NIM_MODIFY: ::DWORD = 0x00000001;
+pub const NIM_DELETE: ::DWORD = 0x00000002;
+pub const NIM_SETFOCUS: ::DWORD = 0x00000003;
+pub const NIM_SETVERSION: ::DWORD = 0x00000004;
+pub const NIF_MESSAGE: ::UINT = 0x00000001;
+pub const NIF_ICON: ::UINT = 0x00000002;
+pub const NIF_TIP: ::UINT = 0x00000004;
+pub const NIF_STATE: ::UINT = 0x00000008;
+pub const NIF_INFO: ::UINT = 0x00000010;
+pub const NIF_GUID: ::UINT = 0x00000020;
+pub const NIF_REALTIME: ::UINT = 0x00000040;
+pub const NIF_SHOWTIP: ::UINT = 0x00000080;
+pub const NOTIFYICON_VERSION: ::UINT = 3;
+pub const NOTIFYICON_VERSION_4: ::UINT = 4;
+
+STRUCT!{nodebug struct NOTIFYICONDATAA {
+ cbSize: ::DWORD,
+ hWnd: ::HWND,
+ uID: ::UINT,
+ uFlags: ::UINT,
+ uCallbackMessage: ::UINT,
+ hIcon: ::HICON,
+ szTip: [::CHAR; 128],
+ dwState: ::DWORD,
+ dwStateMask: ::DWORD,
+ szInfo: [::CHAR; 256],
+ uTimeout: ::UINT,
+ szInfoTitle: [::CHAR; 64],
+ dwInfoFlags: ::DWORD,
+ guidItem: ::GUID,
+ hBalloonIcon: ::HICON,
+}}
+UNION!(NOTIFYICONDATAA, uTimeout, uTimeout, uTimeout_mut, ::UINT);
+UNION!(NOTIFYICONDATAA, uTimeout, uVersion, uVersion_mut, ::UINT);
+pub type PNOTIFYICONDATAA = *mut NOTIFYICONDATAA;
+
+STRUCT!{nodebug struct NOTIFYICONDATAW {
+ cbSize: ::DWORD,
+ hWnd: ::HWND,
+ uID: ::UINT,
+ uFlags: ::UINT,
+ uCallbackMessage: ::UINT,
+ hIcon: ::HICON,
+ szTip: [::WCHAR; 128],
+ dwState: ::DWORD,
+ dwStateMask: ::DWORD,
+ szInfo: [::WCHAR; 256],
+ uTimeout: ::UINT,
+ szInfoTitle: [::WCHAR; 64],
+ dwInfoFlags: ::DWORD,
+ guidItem: ::GUID,
+ hBalloonIcon: ::HICON,
+}}
+UNION!(NOTIFYICONDATAW, uTimeout, uTimeout, uTimeout_mut, ::UINT);
+UNION!(NOTIFYICONDATAW, uTimeout, uVersion, uVersion_mut, ::UINT); // used with NIM_SETVERSION, values 0, 3 and 4
+pub type PNOTIFYICONDATAW = *mut NOTIFYICONDATAW;
diff --git a/third_party/rust/winapi-0.2.8/src/shellscalingapi.rs b/third_party/rust/winapi-0.2.8/src/shellscalingapi.rs
new file mode 100644
index 0000000000..d313ddef92
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/shellscalingapi.rs
@@ -0,0 +1,19 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+// ShellScalingApi.h
+ENUM!{enum PROCESS_DPI_AWARENESS {
+ Process_DPI_Unaware = 0,
+ Process_System_DPI_Aware = 1,
+ Process_Per_Monitor_DPI_Aware = 2,
+}}
+ENUM!{enum SHELL_UI_COMPONENT {
+ SHELL_UI_COMPONENT_TASKBARS = 0,
+ SHELL_UI_COMPONENT_NOTIFICATIONAREA = 1,
+ SHELL_UI_COMPONENT_DESKBAND = 2,
+}}
+ENUM!{enum MONITOR_DPI_TYPE {
+ MDT_EFFECTIVE_DPI = 0,
+ MDT_ANGULAR_DPI = 1,
+ MDT_RAW_DPI = 2,
+}}
+pub const MDT_DEFAULT: MONITOR_DPI_TYPE = MDT_EFFECTIVE_DPI;
diff --git a/third_party/rust/winapi-0.2.8/src/shlguid.rs b/third_party/rust/winapi-0.2.8/src/shlguid.rs
new file mode 100644
index 0000000000..f01b4e4522
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/shlguid.rs
@@ -0,0 +1,2 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
diff --git a/third_party/rust/winapi-0.2.8/src/shlobj.rs b/third_party/rust/winapi-0.2.8/src/shlobj.rs
new file mode 100644
index 0000000000..d551f9215c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/shlobj.rs
@@ -0,0 +1,94 @@
+// Copyright © 2015, Peter Atashian, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+pub const INVALID_HANDLE_VALUE: ::HANDLE = -1isize as ::HANDLE;
+pub type GPFIDL_FLAGS = ::c_int;
+ENUM!{enum KNOWN_FOLDER_FLAG {
+ KF_FLAG_DEFAULT = 0x00000000,
+ KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000,
+ KF_FLAG_CREATE = 0x00008000,
+ KF_FLAG_DONT_VERIFY = 0x00004000,
+ KF_FLAG_DONT_UNEXPAND = 0x00002000,
+ KF_FLAG_NO_ALIAS = 0x00001000,
+ KF_FLAG_INIT = 0x00000800,
+ KF_FLAG_DEFAULT_PATH = 0x00000400,
+ KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200,
+ KF_FLAG_SIMPLE_IDLIST = 0x00000100,
+ KF_FLAG_ALIAS_ONLY = 0x80000000,
+}}
+pub const IDO_SHGIOI_SHARE: ::c_int = 0x0FFFFFFF;
+pub const IDO_SHGIOI_LINK: ::c_int = 0x0FFFFFFE;
+// Yes, these values are supposed to overflow. Blame Microsoft.
+pub const IDO_SHGIOI_SLOWFILE: ::c_int = 0xFFFFFFFDu32 as ::c_int;
+pub const IDO_SHGIOI_DEFAULT: ::c_int = 0xFFFFFFFCu32 as ::c_int;
+pub const GPFIDL_DEFAULT: GPFIDL_FLAGS = 0x0000;
+pub const GPFIDL_ALTNAME: GPFIDL_FLAGS = 0x0001;
+pub const GPFIDL_UNCPRINTER: GPFIDL_FLAGS = 0x0002;
+pub const OFASI_EDIT: ::DWORD = 0x0001;
+pub const OFASI_OPENDESKTOP: ::DWORD = 0x0002;
+// 1204
+pub const CSIDL_DESKTOP: ::c_int = 0x0000;
+pub const CSIDL_INTERNET: ::c_int = 0x0001;
+pub const CSIDL_PROGRAMS: ::c_int = 0x0002;
+pub const CSIDL_CONTROLS: ::c_int = 0x0003;
+pub const CSIDL_PRINTERS: ::c_int = 0x0004;
+pub const CSIDL_PERSONAL: ::c_int = 0x0005;
+pub const CSIDL_FAVORITES: ::c_int = 0x0006;
+pub const CSIDL_STARTUP: ::c_int = 0x0007;
+pub const CSIDL_RECENT: ::c_int = 0x0008;
+pub const CSIDL_SENDTO: ::c_int = 0x0009;
+pub const CSIDL_BITBUCKET: ::c_int = 0x000a;
+pub const CSIDL_STARTMENU: ::c_int = 0x000b;
+pub const CSIDL_MYDOCUMENTS: ::c_int = CSIDL_PERSONAL;
+pub const CSIDL_MYMUSIC: ::c_int = 0x000d;
+pub const CSIDL_MYVIDEO: ::c_int = 0x000e;
+pub const CSIDL_DESKTOPDIRECTORY: ::c_int = 0x0010;
+pub const CSIDL_DRIVES: ::c_int = 0x0011;
+pub const CSIDL_NETWORK: ::c_int = 0x0012;
+pub const CSIDL_NETHOOD: ::c_int = 0x0013;
+pub const CSIDL_FONTS: ::c_int = 0x0014;
+pub const CSIDL_TEMPLATES: ::c_int = 0x0015;
+pub const CSIDL_COMMON_STARTMENU: ::c_int = 0x0016;
+pub const CSIDL_COMMON_PROGRAMS: ::c_int = 0x0017;
+pub const CSIDL_COMMON_STARTUP: ::c_int = 0x0018;
+pub const CSIDL_COMMON_DESKTOPDIRECTORY: ::c_int = 0x0019;
+pub const CSIDL_APPDATA: ::c_int = 0x001a;
+pub const CSIDL_PRINTHOOD: ::c_int = 0x001b;
+pub const CSIDL_LOCAL_APPDATA: ::c_int = 0x001c;
+pub const CSIDL_ALTSTARTUP: ::c_int = 0x001d;
+pub const CSIDL_COMMON_ALTSTARTUP: ::c_int = 0x001e;
+pub const CSIDL_COMMON_FAVORITES: ::c_int = 0x001f;
+pub const CSIDL_INTERNET_CACHE: ::c_int = 0x0020;
+pub const CSIDL_COOKIES: ::c_int = 0x0021;
+pub const CSIDL_HISTORY: ::c_int = 0x0022;
+pub const CSIDL_COMMON_APPDATA: ::c_int = 0x0023;
+pub const CSIDL_WINDOWS: ::c_int = 0x0024;
+pub const CSIDL_SYSTEM: ::c_int = 0x0025;
+pub const CSIDL_PROGRAM_FILES: ::c_int = 0x0026;
+pub const CSIDL_MYPICTURES: ::c_int = 0x0027;
+pub const CSIDL_PROFILE: ::c_int = 0x0028;
+pub const CSIDL_SYSTEMX86: ::c_int = 0x0029;
+pub const CSIDL_PROGRAM_FILESX86: ::c_int = 0x002a;
+pub const CSIDL_PROGRAM_FILES_COMMON: ::c_int = 0x002b;
+pub const CSIDL_PROGRAM_FILES_COMMONX86: ::c_int = 0x002c;
+pub const CSIDL_COMMON_TEMPLATES: ::c_int = 0x002d;
+pub const CSIDL_COMMON_DOCUMENTS: ::c_int = 0x002e;
+pub const CSIDL_COMMON_ADMINTOOLS: ::c_int = 0x002f;
+pub const CSIDL_ADMINTOOLS: ::c_int = 0x0030;
+pub const CSIDL_CONNECTIONS: ::c_int = 0x0031;
+pub const CSIDL_COMMON_MUSIC: ::c_int = 0x0035;
+pub const CSIDL_COMMON_PICTURES: ::c_int = 0x0036;
+pub const CSIDL_COMMON_VIDEO: ::c_int = 0x0037;
+pub const CSIDL_RESOURCES: ::c_int = 0x0038;
+pub const CSIDL_RESOURCES_LOCALIZED: ::c_int = 0x0039;
+pub const CSIDL_COMMON_OEM_LINKS: ::c_int = 0x003a;
+pub const CSIDL_CDBURN_AREA: ::c_int = 0x003b;
+pub const CSIDL_COMPUTERSNEARME: ::c_int = 0x003d;
+pub const CSIDL_FLAG_CREATE: ::c_int = 0x8000;
+pub const CSIDL_FLAG_DONT_VERIFY: ::c_int = 0x4000;
+pub const CSIDL_FLAG_DONT_UNEXPAND: ::c_int = 0x2000;
+pub const CSIDL_FLAG_NO_ALIAS: ::c_int = 0x1000;
+pub const CSIDL_FLAG_PER_USER_INIT: ::c_int = 0x0800;
+pub const CSIDL_FLAG_MASK: ::c_int = 0xff00;
+//1312
+pub const SHGFP_TYPE_CURRENT: ::DWORD = 0;
+pub const SHGFP_TYPE_DEFAULT: ::DWORD = 1;
diff --git a/third_party/rust/winapi-0.2.8/src/shobjidl.rs b/third_party/rust/winapi-0.2.8/src/shobjidl.rs
new file mode 100644
index 0000000000..ef7caa1c37
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/shobjidl.rs
@@ -0,0 +1,652 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+//Terrible forward declarations that need to be filled in
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IContextMenu;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IContextMenu2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IContextMenu3;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExecuteCommand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPersistFolder;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IRunnableTask;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellTaskScheduler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IQueryCodePage;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPersistFolder2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPersistFolder3;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPersistIDList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumIDList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumFullIDList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFileSyncMergeHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectWithFolderEnumMode;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IParseAndCreateItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellFolder;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumExtraSearch;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellFolder2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderViewOptions;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellView;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellView2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellView3;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderView;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ISearchBoxInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderView2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderViewSettings;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPreviewHandlerVisuals;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IVisualProperties;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICommDlgBrowser;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICommDlgBrowser2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICommDlgBrowser3;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IColumnManager;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderFilterSite;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderFilter;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInputObjectSite;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInputObject;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInputObject2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellIcon;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellBrowser;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IProfferService;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellItem2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellItemImageFactory;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IUserAccountChangeCallback;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumShellItems;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITransferAdviseSink;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITransferSource;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumResources;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellItemResources;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITransferDestination;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IStreamAsync;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IStreamUnbufferedInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInitializeWithItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectWithSelection;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectWithBackReferences;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPropertyUI;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICategoryProvider;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICategorizer;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDropTargetHelper;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDragSourceHelper;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDragSourceHelper2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellLinkA;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellLinkW;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellLinkDataList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IResolveShellLink;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IActionProgressDialog;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IHWEventHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IHWEventHandler2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IQueryCancelAutoPlay;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDynamicHWHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IActionProgress;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellExtInit;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellPropSheetExt;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IRemoteComputer;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IQueryContinue;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectWithCancelEvent;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IUserNotification;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IUserNotificationCallback;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IUserNotification2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IItemNameLimits;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ISearchFolderItemFactory;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExtractImage;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExtractImage2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IThumbnailHandlerFactory;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IParentAndItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDockingWindow;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDeskBand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDeskBandInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDeskBand2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITaskbarList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITaskbarList2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITaskbarList3;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITaskbarList4;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IStartMenuPinnedList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICDBurn;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IWizardSite;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IWizardExtension;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IWebWizardExtension;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPublishingWizard;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderViewHost;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExplorerBrowserEvents;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExplorerBrowser;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAccessibleObject;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IResultsFolder;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumObjects;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IOperationsProgressDialog;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IIOCancelInformation;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFileOperation;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectProvider;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INamespaceWalkCB;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INamespaceWalkCB2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INamespaceWalk;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAutoCompleteDropDown;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IBandSite;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICDBurnExt;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IContextMenuSite;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumReadyCallback;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumerableView;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInsertItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IMenuBand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFolderBandPriv;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IRegTreeItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IImageRecompress;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDeskBar;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IMenuPopup;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFileIsInUse;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationAssociationRegistration;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationAssociationRegistrationUI;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDelegateFolder;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IBrowserFrameOptions;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INewWindowManager;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAttachmentExecute;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellMenuCallback;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellMenu;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellRunDll;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IKnownFolder;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IKnownFolderManager;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ISharingConfigurationManager;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPreviousVersionsInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IRelatedItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IIdentityName;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDelegateItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICurrentItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITransferMediumItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IUseToBrowseItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDisplayItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IViewStateIdentityItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPreviewItem;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDestinationStreamFactory;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INewMenuClient;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInitializeWithBindCtx;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeControl;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeControl2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeControlEvents;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeControlDropHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeAccessible;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeControlCustomDraw;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct INameSpaceTreeControlFolderCapabilities;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPreviewHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPreviewHandlerFrame;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ITrayDeskBand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IBandHost;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExplorerPaneVisibility;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IContextMenuCB;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDefaultExtractIconInit;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExplorerCommand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExplorerCommandState;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInitializeCommand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumExplorerCommand;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExplorerCommandProvider;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IMarkupCallback;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IControlMarkup;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInitializeNetworkFolder;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IOpenControlPanel;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IComputerInfoChangeNotify;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFileSystemBindData;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFileSystemBindData2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ICustomDestinationList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationDestinations;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationDocumentLists;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectWithAppUserModelID;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IObjectWithProgID;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IUpdateIDList;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDesktopGadget;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDesktopWallpaper;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IHomeGroup;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInitializeWithPropertyStore;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IOpenSearchSource;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IShellLibrary;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDefaultFolderMenuInitialize;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationActivationManager;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAssocHandlerInvoker;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAssocHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IEnumAssocHandlers;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDataObjectProvider;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IDataTransferManagerInterop;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFrameworkInputPaneHandler;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IFrameworkInputPane;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAccessibilityDockingServiceCallback;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAccessibilityDockingService;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAppVisibilityEvents;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IAppVisibility;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPackageExecutionStateChangeNotification;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IPackageDebugSettings;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ISuspensionDependencyManager;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExecuteCommandApplicationHostEnvironment;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IExecuteCommandHost;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationDesignModeSettings;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IApplicationDesignModeSettings2;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ILaunchTargetMonitor;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ILaunchSourceViewSizePreference;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ILaunchTargetViewSizePreference;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct ILaunchSourceAppUserModelId;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInitializeWithWindow;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IHandlerInfo;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IHandlerActivationHost;
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IContactManagerInterop;
+//4498
+pub type SFGAOF = ::ULONG;
+//9466
+ENUM!{enum SIGDN {
+ SIGDN_NORMALDISPLAY = 0,
+ SIGDN_PARENTRELATIVEPARSING = 0x80018001,
+ SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000,
+ SIGDN_PARENTRELATIVEEDITING = 0x80031001,
+ SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000,
+ SIGDN_FILESYSPATH = 0x80058000,
+ SIGDN_URL = 0x80068000,
+ SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001,
+ SIGDN_PARENTRELATIVE = 0x80080001,
+ SIGDN_PARENTRELATIVEFORUI = 0x80094001,
+}}
+ENUM!{enum SICHINTF {
+ SICHINT_DISPLAY = 0,
+ SICHINT_ALLFIELDS = 0x80000000,
+ SICHINT_CANONICAL = 0x10000000,
+ SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000,
+}}
+//9498
+RIDL!(
+interface IShellItem(IShellItemVtbl): IUnknown(IUnknownVtbl) {
+ fn BindToHandler(
+ &mut self, pbc: *mut ::IBindCtx, bhid: ::REFGUID, riid: ::REFIID, ppv: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn GetParent(&mut self, ppsi: *mut *mut IShellItem) -> ::HRESULT,
+ fn GetDisplayName(&mut self, sigdnName: SIGDN, ppszName: *mut ::LPWSTR) -> ::HRESULT,
+ fn GetAttributes(&mut self, sfgaoMask: SFGAOF, psfgaoAttribs: *mut SFGAOF) -> ::HRESULT,
+ fn Compare(&mut self, psi: *mut IShellItem, hint: SICHINTF, piOrder: *mut ::c_int) -> ::HRESULT
+}
+);
+//11963
+pub type IFileOperationProgressSink = ::IUnknown; // TODO
+pub type IShellItemArray = ::IUnknown; // TODO
+//20869
+RIDL!(
+interface IModalWindow(IModalWindowVtbl): IUnknown(IUnknownVtbl) {
+ fn Show(&mut self, hwndOwner: ::HWND) -> ::HRESULT
+}
+);
+//22307
+ENUM!{enum FDE_OVERWRITE_RESPONSE {
+ FDEOR_DEFAULT = 0,
+ FDEOR_ACCEPT = 1,
+ FDEOR_REFUSE = 2,
+}}
+ENUM!{enum FDE_SHAREVIOLATION_RESPONSE {
+ FDESVR_DEFAULT = 0,
+ FDESVR_ACCEPT = 1,
+ FDESVR_REFUSE = 2,
+}}
+ENUM!{enum FDAP {
+ FDAP_BOTTOM = 0,
+ FDAP_TOP = 1,
+}}
+RIDL!(
+interface IFileDialogEvents(IFileDialogEventsVtbl): IUnknown(IUnknownVtbl) {
+ fn OnFileOk(&mut self, pfd: *mut IFileDialog) -> ::HRESULT,
+ fn OnFolderChanging(&mut self, pfd: *mut IFileDialog, psiFolder: *mut IShellItem) -> ::HRESULT,
+ fn OnFolderChange(&mut self, pfd: *mut IFileDialog) -> ::HRESULT,
+ fn OnSelectionChange(&mut self, pfd: *mut IFileDialog) -> ::HRESULT,
+ fn OnShareViolation(
+ &mut self, pfd: *mut IFileDialog, psi: *mut IShellItem,
+ pResponse: *mut FDE_SHAREVIOLATION_RESPONSE
+ ) -> ::HRESULT,
+ fn OnTypeChange(&mut self, pfd: *mut IFileDialog) -> ::HRESULT,
+ fn OnOverwrite(
+ &mut self, pfd: *mut IFileDialog, psi: *mut IShellItem,
+ pResponse: *mut FDE_OVERWRITE_RESPONSE
+ ) -> ::HRESULT
+}
+);
+FLAGS!{enum FILEOPENDIALOGOPTIONS {
+ FOS_OVERWRITEPROMPT = 0x2,
+ FOS_STRICTFILETYPES = 0x4,
+ FOS_NOCHANGEDIR = 0x8,
+ FOS_PICKFOLDERS = 0x20,
+ FOS_FORCEFILESYSTEM = 0x40,
+ FOS_ALLNONSTORAGEITEMS = 0x80,
+ FOS_NOVALIDATE = 0x100,
+ FOS_ALLOWMULTISELECT = 0x200,
+ FOS_PATHMUSTEXIST = 0x800,
+ FOS_FILEMUSTEXIST = 0x1000,
+ FOS_CREATEPROMPT = 0x2000,
+ FOS_SHAREAWARE = 0x4000,
+ FOS_NOREADONLYRETURN = 0x8000,
+ FOS_NOTESTFILECREATE = 0x10000,
+ FOS_HIDEMRUPLACES = 0x20000,
+ FOS_HIDEPINNEDPLACES = 0x40000,
+ FOS_NODEREFERENCELINKS = 0x100000,
+ FOS_DONTADDTORECENT = 0x2000000,
+ FOS_FORCESHOWHIDDEN = 0x10000000,
+ FOS_DEFAULTNOMINIMODE = 0x20000000,
+ FOS_FORCEPREVIEWPANEON = 0x40000000,
+ FOS_SUPPORTSTREAMABLEITEMS = 0x80000000,
+}}
+RIDL!(
+interface IFileDialog(IFileDialogVtbl): IModalWindow(IModalWindowVtbl) {
+ fn SetFileTypes(
+ &mut self, cFileTypes: ::UINT, rgFilterSpec: *const ::COMDLG_FILTERSPEC
+ ) -> ::HRESULT,
+ fn SetFileTypeIndex(&mut self, iFileType: ::UINT) -> ::HRESULT,
+ fn GetFileTypeIndex(&mut self, piFileType: *mut ::UINT) -> ::HRESULT,
+ fn Advise(&mut self, pfde: *mut IFileDialogEvents, pdwCookie: *mut ::DWORD) -> ::HRESULT,
+ fn Unadvise(&mut self, dwCookie: ::DWORD) -> ::HRESULT,
+ fn SetOptions(&mut self, fos: FILEOPENDIALOGOPTIONS) -> ::HRESULT,
+ fn GetOptions(&mut self, pfos: *mut FILEOPENDIALOGOPTIONS) -> ::HRESULT,
+ fn SetDefaultFolder(&mut self, psi: *mut IShellItem) -> ::HRESULT,
+ fn SetFolder(&mut self, psi: *mut IShellItem) -> ::HRESULT,
+ fn GetFolder(&mut self, ppsi: *mut *mut IShellItem) -> ::HRESULT,
+ fn GetCurrentSelection(&mut self, ppsi: *mut *mut IShellItem) -> ::HRESULT,
+ fn SetFileName(&mut self, pszName: ::LPCWSTR) -> ::HRESULT,
+ fn GetFileName(&mut self, pszName: *mut ::LPWSTR) -> ::HRESULT,
+ fn SetTitle(&mut self, pszTitle: ::LPCWSTR) -> ::HRESULT,
+ fn SetOkButtonLabel(&mut self, pszText: ::LPCWSTR) -> ::HRESULT,
+ fn SetFileNameLabel(&mut self, pszLabel: ::LPCWSTR) -> ::HRESULT,
+ fn GetResult(&mut self, ppsi: *mut *mut IShellItem) -> ::HRESULT,
+ fn AddPlace(&mut self, psi: *mut IShellItem, fdap: FDAP) -> ::HRESULT,
+ fn SetDefaultExtension(&mut self, pszDefaultExtension: ::LPCWSTR) -> ::HRESULT,
+ fn Close(&mut self, hr: ::HRESULT) -> ::HRESULT,
+ fn SetClientGuid(&mut self, guid: ::REFGUID) -> ::HRESULT,
+ fn ClearClientData(&mut self) -> ::HRESULT,
+ fn SetFilter(&mut self, pFilter: *mut IShellItemFilter) -> ::HRESULT
+}
+);
+RIDL!(
+interface IFileSaveDialog(IFileSaveDialogVtbl): IFileDialog(IFileDialogVtbl) {
+ fn SetSaveAsItem(&mut self, psi: *mut IShellItem) -> ::HRESULT,
+ fn SetProperties(&mut self, pStore: *mut ::IPropertyStore) -> ::HRESULT,
+ fn SetCollectedProperties(
+ &mut self, pList: *mut ::IPropertyDescriptionList, fAppendDefault: ::BOOL
+ ) -> ::HRESULT,
+ fn GetProperties(&mut self, ppStore: *mut *mut ::IPropertyStore) -> ::HRESULT,
+ fn ApplyProperties(
+ &mut self, psi: *mut IShellItem, pStore: *mut ::IPropertyStore, hwnd: ::HWND,
+ pSink: *mut IFileOperationProgressSink
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IFileOpenDialog(IFileOpenDialogVtbl): IFileDialog(IFileDialogVtbl) {
+ fn GetResults(&mut self, ppenum: *mut *mut IShellItemArray) -> ::HRESULT,
+ fn GetSelectedItems(&mut self, ppsai: *mut *mut IShellItemArray) -> ::HRESULT
+}
+);
+ENUM!{enum CDCONTROLSTATE {
+ CDCS_INACTIVE = 0x00000000,
+ CDCS_ENABLED = 0x00000001,
+ CDCS_VISIBLE = 0x00000002,
+ CDCS_ENABLEDVISIBLE = 0x00000003,
+}}
+RIDL!(
+interface IFileDialogCustomize(IFileDialogCustomizeVtbl): IUnknown(IUnknownVtbl) {
+ fn EnableOpenDropDown(&mut self, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn AddMenu(&mut self, dwIDCtl: ::DWORD, pszLabel: ::LPCWSTR) -> ::HRESULT,
+ fn AddPushButton(&mut self, dwIDCtl: ::DWORD, pszLabel: ::LPCWSTR) -> ::HRESULT,
+ fn AddComboBox(&mut self, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn AddRadioButtonList(&mut self, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn AddCheckButton(
+ &mut self, dwIDCtl: ::DWORD, pszLabel: ::LPCWSTR, bChecked: ::BOOL
+ ) -> ::HRESULT,
+ fn AddEditBox(&mut self, dwIDCtl: ::DWORD, pszText: ::LPCWSTR) -> ::HRESULT,
+ fn AddSeparator(&mut self, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn AddText(&mut self, dwIDCtl: ::DWORD, pszText: ::LPCWSTR) -> ::HRESULT,
+ fn SetControlLabel(&mut self, dwIDCtl: ::DWORD, pszLabel: ::LPCWSTR) -> ::HRESULT,
+ fn GetControlState(&mut self, dwIDCtl: ::DWORD, pdwState: *mut CDCONTROLSTATE) -> ::HRESULT,
+ fn SetControlState(&mut self, dwIDCtl: ::DWORD, dwState: CDCONTROLSTATE) -> ::HRESULT,
+ fn GetEditBoxText(&mut self, dwIDCtl: ::DWORD, ppszText: *mut *mut ::WCHAR) -> ::HRESULT,
+ fn SetEditBoxText(&mut self, dwIDCtl: ::DWORD, pszText: ::LPCWSTR) -> ::HRESULT,
+ fn GetCheckButtonState(&mut self, dwIDCtl: ::DWORD, pbChecked: *mut ::BOOL) -> ::HRESULT,
+ fn SetCheckButtonState(&mut self, dwIDCtl: ::DWORD, bChecked: ::BOOL) -> ::HRESULT,
+ fn AddControlItem(
+ &mut self, dwIDCtl: ::DWORD, dwIDItem: ::DWORD, pszLabel: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn RemoveControlItem(&mut self, dwIDCtl: ::DWORD, dwIDItem: ::DWORD) -> ::HRESULT,
+ fn RemoveAllControlItems(&mut self, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn GetControlItemState(
+ &mut self, dwIDCtl: ::DWORD, dwIDItem: ::DWORD, pdwState: *mut CDCONTROLSTATE
+ ) -> ::HRESULT,
+ fn SetControlItemState(
+ &mut self, dwIDCtl: ::DWORD, dwIDItem: ::DWORD, dwState: CDCONTROLSTATE
+ ) -> ::HRESULT,
+ fn GetSelectedControlItem(&mut self, dwIDCtl: ::DWORD, pdwIDItem: *mut ::DWORD) -> ::HRESULT,
+ fn SetSelectedControlItem(&mut self, dwIDCtl: ::DWORD, dwIDItem: ::DWORD) -> ::HRESULT,
+ fn StartVisualGroup(&mut self, dwIDCtl: ::DWORD, pszLabel: ::LPCWSTR) -> ::HRESULT,
+ fn EndVisualGroup(&mut self) -> ::HRESULT,
+ fn MakeProminent(&mut self, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn SetControlItemText(&mut self, dwIDCtl: ::DWORD, dwIDItem: ::DWORD, pszLabel: ::LPCWSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface IFileDialogControlEvents(IFileDialogControlEventsVtbl): IUnknown(IUnknownVtbl) {
+ fn OnItemSelected(
+ &mut self, pfdc: *mut IFileDialogCustomize, dwIDCtl: ::DWORD, dwIDItem: ::DWORD
+ ) -> ::HRESULT,
+ fn OnButtonClicked(&mut self, pfdc: *mut IFileDialogCustomize, dwIDCtl: ::DWORD) -> ::HRESULT,
+ fn OnCheckButtonToggled(
+ &mut self, pfdc: *mut IFileDialogCustomize, dwIDCtl: ::DWORD, bChecked: ::BOOL
+ ) -> ::HRESULT,
+ fn OnControlActivating(
+ &mut self, pfdc: *mut IFileDialogCustomize, dwIDCtl: ::DWORD
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IFileDialog2(IFileDialog2Vtbl): IFileDialog(IFileDialogVtbl) {
+ fn SetCancelButtonLabel(&mut self, pszLabel: ::LPCWSTR) -> ::HRESULT,
+ fn SetNavigationRoot(&mut self, psi: IShellItem) -> ::HRESULT
+}
+);
+//27457
+pub type IShellItemFilter = ::IUnknown; // TODO
diff --git a/third_party/rust/winapi-0.2.8/src/shtypes.rs b/third_party/rust/winapi-0.2.8/src/shtypes.rs
new file mode 100644
index 0000000000..0bea4b1f70
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/shtypes.rs
@@ -0,0 +1,40 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+#[repr(C)] #[allow(missing_copy_implementations)]
+pub struct SHITEMID {
+ pub cb: ::USHORT,
+ pub abID: [::BYTE; 0],
+}
+pub type LPSHITEMID = *mut SHITEMID;
+pub type LPCSHITEMID = *const SHITEMID;
+#[repr(C)]
+pub struct ITEMIDLIST {
+ pub mkid: SHITEMID,
+}
+pub type ITEMIDLIST_RELATIVE = ITEMIDLIST;
+pub type ITEMID_CHILD = ITEMIDLIST;
+pub type ITEMIDLIST_ABSOLUTE = ITEMIDLIST;
+pub type LPITEMIDLIST = *mut ITEMIDLIST;
+pub type LPCITEMIDLIST = *const ITEMIDLIST;
+pub type PIDLIST_ABSOLUTE = *mut ITEMIDLIST_ABSOLUTE;
+pub type PCIDLIST_ABSOLUTE = *const ITEMIDLIST_ABSOLUTE;
+pub type PCUIDLIST_ABSOLUTE = *const ITEMIDLIST_ABSOLUTE;
+pub type PIDLIST_RELATIVE = *mut ITEMIDLIST_RELATIVE;
+pub type PCIDLIST_RELATIVE = *const ITEMIDLIST_RELATIVE;
+pub type PUIDLIST_RELATIVE = *mut ITEMIDLIST_RELATIVE;
+pub type PCUIDLIST_RELATIVE = *const ITEMIDLIST_RELATIVE;
+pub type PITEMID_CHILD = *mut ITEMID_CHILD;
+pub type PCITEMID_CHILD = *const ITEMID_CHILD;
+pub type PUITEMID_CHILD = *mut ITEMID_CHILD;
+pub type PCUITEMID_CHILD = *const ITEMID_CHILD;
+pub type PCUITEMID_CHILD_ARRAY = *const PCUITEMID_CHILD;
+pub type PCUIDLIST_RELATIVE_ARRAY = *const PCUIDLIST_RELATIVE;
+pub type PCIDLIST_ABSOLUTE_ARRAY = *const PCIDLIST_ABSOLUTE;
+pub type PCUIDLIST_ABSOLUTE_ARRAY = *const PCUIDLIST_ABSOLUTE;
+STRUCT!{struct COMDLG_FILTERSPEC {
+ pszName: ::LPCWSTR,
+ pszSpec: ::LPCWSTR,
+}}
+pub type KNOWNFOLDERID = ::GUID;
+pub type REFKNOWNFOLDERID = *const KNOWNFOLDERID;
diff --git a/third_party/rust/winapi-0.2.8/src/spapidef.rs b/third_party/rust/winapi-0.2.8/src/spapidef.rs
new file mode 100644
index 0000000000..05861ddc80
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/spapidef.rs
@@ -0,0 +1,48 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Windows NT Setup and Device Installer services
+pub type SP_LOG_TOKEN = ::DWORDLONG;
+pub type PSP_LOG_TOKEN = *mut ::DWORDLONG;
+pub const LOGTOKEN_TYPE_MASK: SP_LOG_TOKEN = 3;
+pub const LOGTOKEN_UNSPECIFIED: SP_LOG_TOKEN = 0;
+pub const LOGTOKEN_NO_LOG: SP_LOG_TOKEN = 1;
+pub const LOGTOKEN_SETUPAPI_APPLOG: SP_LOG_TOKEN = 2;
+pub const LOGTOKEN_SETUPAPI_DEVLOG: SP_LOG_TOKEN = 3;
+pub const TXTLOG_SETUPAPI_DEVLOG: ::DWORD = 0x00000001;
+pub const TXTLOG_SETUPAPI_CMDLINE: ::DWORD = 0x00000002;
+pub const TXTLOG_SETUPAPI_BITS: ::DWORD = 0x00000003;
+pub const TXTLOG_ERROR: ::DWORD = 0x1;
+pub const TXTLOG_WARNING: ::DWORD = 0x2;
+pub const TXTLOG_SYSTEM_STATE_CHANGE: ::DWORD = 0x3;
+pub const TXTLOG_SUMMARY: ::DWORD = 0x4;
+pub const TXTLOG_DETAILS: ::DWORD = 0x5;
+pub const TXTLOG_VERBOSE: ::DWORD = 0x6;
+pub const TXTLOG_VERY_VERBOSE: ::DWORD = 0x7;
+pub const TXTLOG_RESERVED_FLAGS: ::DWORD = 0x0000FFF0;
+pub const TXTLOG_TIMESTAMP: ::DWORD = 0x00010000;
+pub const TXTLOG_DEPTH_INCR: ::DWORD = 0x00020000;
+pub const TXTLOG_DEPTH_DECR: ::DWORD = 0x00040000;
+pub const TXTLOG_TAB_1: ::DWORD = 0x00080000;
+pub const TXTLOG_FLUSH_FILE: ::DWORD = 0x00100000;
+#[inline] #[allow(dead_code)]
+pub fn TXTLOG_LEVEL(flags: ::DWORD) -> ::DWORD {
+ return flags & 0xf;
+}
+pub const TXTLOG_DEVINST: ::DWORD = 0x00000001;
+pub const TXTLOG_INF: ::DWORD = 0x00000002;
+pub const TXTLOG_FILEQ: ::DWORD = 0x00000004;
+pub const TXTLOG_COPYFILES: ::DWORD = 0x00000008;
+pub const TXTLOG_SIGVERIF: ::DWORD = 0x00000020;
+pub const TXTLOG_BACKUP: ::DWORD = 0x00000080;
+pub const TXTLOG_UI: ::DWORD = 0x00000100;
+pub const TXTLOG_UTIL: ::DWORD = 0x00000200;
+pub const TXTLOG_INFDB: ::DWORD = 0x00000400;
+pub const TXTLOG_POLICY: ::DWORD = 0x00800000;
+pub const TXTLOG_NEWDEV: ::DWORD = 0x01000000;
+pub const TXTLOG_UMPNPMGR: ::DWORD = 0x02000000;
+pub const TXTLOG_DRIVER_STORE: ::DWORD = 0x04000000;
+pub const TXTLOG_SETUP: ::DWORD = 0x08000000;
+pub const TXTLOG_CMI: ::DWORD = 0x10000000;
+pub const TXTLOG_DEVMGR: ::DWORD = 0x20000000;
+pub const TXTLOG_INSTALLER: ::DWORD = 0x40000000;
+pub const TXTLOG_VENDOR: ::DWORD = 0x80000000;
diff --git a/third_party/rust/winapi-0.2.8/src/sql.rs b/third_party/rust/winapi-0.2.8/src/sql.rs
new file mode 100644
index 0000000000..503fa81629
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/sql.rs
@@ -0,0 +1,179 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub const SQL_NULL_DATA: SQLLEN = -1;
+pub const SQL_DATA_AT_EXEC: SQLLEN = -2;
+pub const SQL_SUCCESS: SQLRETURN = 0;
+pub const SQL_SUCCESS_WITH_INFO: SQLRETURN = 1;
+pub const SQL_NO_DATA: SQLRETURN = 100;
+pub const SQL_PARAM_DATA_AVAILABLE: SQLRETURN = 101;
+pub const SQL_ERROR: SQLRETURN = -1;
+pub const SQL_INVALID_HANDLE: SQLRETURN = -2;
+pub const SQL_STILL_EXECUTING: SQLRETURN = 2;
+pub const SQL_NEED_DATA: SQLRETURN = 99;
+pub const SQL_NTS: SQLSMALLINT = -3;
+pub const SQL_MAX_MESSAGE_LENGTH: usize = 512;
+pub const SQL_DATE_LEN: usize = 10;
+pub const SQL_TIME_LEN: usize = 8;
+pub const SQL_TIMESTAMP_LEN: usize = 19;
+pub const SQL_HANDLE_ENV: SQLSMALLINT = 1;
+pub const SQL_HANDLE_DBC: SQLSMALLINT = 2;
+pub const SQL_HANDLE_STMT: SQLSMALLINT = 3;
+pub const SQL_HANDLE_DESC: SQLSMALLINT = 4;
+pub const SQL_ATTR_OUTPUT_NTS: SQLINTEGER = 10001;
+pub const SQL_ATTR_AUTO_IPD: SQLINTEGER = 10001;
+pub const SQL_ATTR_METADATA_ID: SQLINTEGER = 10014;
+pub const SQL_ATTR_APP_ROW_DESC: SQLINTEGER = 10010;
+pub const SQL_ATTR_APP_PARAM_DESC: SQLINTEGER = 10011;
+pub const SQL_ATTR_IMP_ROW_DESC: SQLINTEGER = 10012;
+pub const SQL_ATTR_IMP_PARAM_DESC: SQLINTEGER = 10013;
+pub const SQL_ATTR_CURSOR_SCROLLABLE: SQLINTEGER = -1;
+pub const SQL_ATTR_CURSOR_SENSITIVITY: SQLINTEGER = -2;
+
+//Null handle used in place of parent handle when allocating HENV
+pub const SQL_NULL_HANDLE: SQLHANDLE = 0 as SQLHANDLE;
+
+//Special length/indicator values
+
+//Return values from functions
+
+
+//Values of NULLABLE field in descriptor
+pub const SQL_NO_NULLS: SQLSMALLINT = 0;
+pub const SQL_NULLABLE: SQLSMALLINT = 1;
+pub const SQL_NULLABLE_UNKNOWN: SQLSMALLINT = 2;
+
+//Env attribute
+pub const SQL_ATTR_ODBC_VERSION: SQLINTEGER = 200;
+pub const SQL_ATTR_CONNECTION_POOLING: SQLINTEGER = 201;
+pub const SQL_ATTR_CP_MATCH: SQLINTEGER = 202;
+
+//Values for SQL_ATTR_ODBC_VERSION
+pub const SQL_OV_ODBC2: SQLINTEGER = 2;
+pub const SQL_OV_ODBC3: SQLINTEGER = 3;
+pub const SQL_OV_ODBC3_80: SQLINTEGER = 380;
+
+//Connection attributes
+pub const SQL_ACCESS_MODE: SQLINTEGER = 101;
+pub const SQL_AUTOCOMMIT: SQLINTEGER = 102;
+pub const SQL_LOGIN_TIMEOUT: SQLINTEGER = 103;
+pub const SQL_OPT_TRACE: SQLINTEGER = 104;
+pub const SQL_OPT_TRACEFILE: SQLINTEGER = 105;
+pub const SQL_TRANSLATE_DLL: SQLINTEGER = 106;
+pub const SQL_TRANSLATE_OPTION: SQLINTEGER = 107;
+pub const SQL_TXN_ISOLATION: SQLINTEGER = 108;
+pub const SQL_CURRENT_QUALIFIER: SQLINTEGER = 109;
+pub const SQL_ODBC_CURSORS: SQLINTEGER = 110;
+pub const SQL_QUIET_MODE: SQLINTEGER = 111;
+pub const SQL_PACKET_SIZE: SQLINTEGER = 112;
+
+//Connection attributes with new names
+pub const SQL_ATTR_ACCESS_MODE: SQLINTEGER = SQL_ACCESS_MODE;
+pub const SQL_ATTR_AUTOCOMMIT: SQLINTEGER = SQL_AUTOCOMMIT;
+pub const SQL_ATTR_CONNECTION_TIMEOUT: SQLINTEGER = 113;
+pub const SQL_ATTR_CURRENT_CATALOG: SQLINTEGER = SQL_CURRENT_QUALIFIER;
+pub const SQL_ATTR_DISCONNECT_BEHAVIOR: SQLINTEGER = 114;
+pub const SQL_ATTR_ENLIST_IN_DTC: SQLINTEGER = 1207;
+pub const SQL_ATTR_ENLIST_IN_XA: SQLINTEGER = 1208;
+pub const SQL_ATTR_LOGIN_TIMEOUT: SQLINTEGER = SQL_LOGIN_TIMEOUT;
+pub const SQL_ATTR_ODBC_CURSORS: SQLINTEGER = SQL_ODBC_CURSORS;
+pub const SQL_ATTR_PACKET_SIZE: SQLINTEGER = SQL_PACKET_SIZE;
+pub const SQL_ATTR_QUIET_MODE: SQLINTEGER = SQL_QUIET_MODE;
+pub const SQL_ATTR_TRACE: SQLINTEGER = SQL_OPT_TRACE;
+pub const SQL_ATTR_TRACEFILE: SQLINTEGER = SQL_OPT_TRACEFILE;
+pub const SQL_ATTR_TRANSLATE_LIB: SQLINTEGER = SQL_TRANSLATE_DLL;
+pub const SQL_ATTR_TRANSLATE_OPTION: SQLINTEGER = SQL_TRANSLATE_OPTION;
+pub const SQL_ATTR_TXN_ISOLATION: SQLINTEGER = SQL_TXN_ISOLATION;
+pub const SQL_ATTR_CONNECTION_DEAD: SQLINTEGER = 1209;
+
+//Flags for null-terminated string
+pub const SQL_NTS: SQLSMALLINT = -3;
+
+//Options for SQLDriverConnect
+pub const SQL_DRIVER_NOPROMPT: SQLUSMALLINT = 0;
+pub const SQL_DRIVER_COMPLETE: SQLUSMALLINT = 1;
+pub const SQL_DRIVER_PROMPT: SQLUSMALLINT = 2;
+pub const SQL_DRIVER_COMPLETE_REQUIRED: SQLUSMALLINT = 3;
+
+//Whether an attribute is a pointer or not
+pub const SQL_IS_POINTER: SQLINTEGER = -4;
+pub const SQL_IS_UINTEGER: SQLINTEGER = -5;
+pub const SQL_IS_INTEGER: SQLINTEGER = -6;
+pub const SQL_IS_USMALLINT: SQLINTEGER = -7;
+pub const SQL_IS_SMALLINT: SQLINTEGER = -8;
+
+//FreeStmt options
+pub const SQL_CLOSE: SQLUSMALLINT = 0;
+pub const SQL_DROP: SQLUSMALLINT = 1;
+pub const SQL_UNBIND: SQLUSMALLINT = 2;
+pub const SQL_RESET_PARAMS: SQLUSMALLINT = 3;
+
+//C datatype to SQL datatype mapping
+pub const SQL_UNKNOWN_TYPE: SQLSMALLINT = 0;
+pub const SQL_CHAR: SQLSMALLINT = 1;
+pub const SQL_NUMERIC: SQLSMALLINT = 2;
+pub const SQL_DECIMAL: SQLSMALLINT = 3;
+pub const SQL_INTEGER: SQLSMALLINT = 4;
+pub const SQL_SMALLINT: SQLSMALLINT = 5;
+pub const SQL_FLOAT: SQLSMALLINT = 6;
+pub const SQL_REAL: SQLSMALLINT = 7;
+pub const SQL_DOUBLE: SQLSMALLINT = 8;
+pub const SQL_DATETIME: SQLSMALLINT = 9;
+pub const SQL_VARCHAR: SQLSMALLINT = 12;
+
+pub const SQL_TYPE_DATE: SQLSMALLINT = 91;
+pub const SQL_TYPE_TIME: SQLSMALLINT = 92;
+pub const SQL_TYPE_TIMESTAMP: SQLSMALLINT = 93;
+
+pub const SQL_DATE: SQLSMALLINT = 9;
+pub const SQL_INTERVAL: SQLSMALLINT = 10;
+pub const SQL_TIME: SQLSMALLINT = 10;
+pub const SQL_TIMESTAMP: SQLSMALLINT = 11;
+pub const SQL_LONGVARCHAR: SQLSMALLINT = -1;
+pub const SQL_BINARY: SQLSMALLINT = -2;
+pub const SQL_VARBINARY: SQLSMALLINT = -3;
+pub const SQL_LONGVARBINARY: SQLSMALLINT = -4;
+pub const SQL_BIGINT: SQLSMALLINT = -5;
+pub const SQL_TINYINT: SQLSMALLINT = -6;
+pub const SQL_BIT: SQLSMALLINT = -7;
+pub const SQL_GUID: SQLSMALLINT = -11;
+
+pub const SQL_C_CHAR: SQLSMALLINT = SQL_CHAR;
+pub const SQL_C_LONG: SQLSMALLINT = SQL_INTEGER;
+pub const SQL_C_SHORT: SQLSMALLINT = SQL_SMALLINT;
+pub const SQL_C_FLOAT: SQLSMALLINT = SQL_REAL;
+pub const SQL_C_DOUBLE: SQLSMALLINT = SQL_DOUBLE;
+pub const SQL_C_NUMERIC: SQLSMALLINT = SQL_NUMERIC;
+pub const SQL_C_DEFAULT: SQLSMALLINT = 99;
+
+pub const SQL_SIGNED_OFFSET: SQLSMALLINT = -20;
+pub const SQL_UNSIGNED_OFFSET: SQLSMALLINT = -22;
+
+pub const SQL_C_DATE: SQLSMALLINT = SQL_DATE;
+pub const SQL_C_TIME: SQLSMALLINT = SQL_TIME;
+pub const SQL_C_TIMESTAMP: SQLSMALLINT = SQL_TIMESTAMP;
+
+pub const SQL_C_TYPE_DATE: SQLSMALLINT = SQL_TYPE_DATE;
+pub const SQL_C_TYPE_TIME: SQLSMALLINT = SQL_TYPE_TIME;
+pub const SQL_C_TYPE_TIMESTAMP: SQLSMALLINT = SQL_TYPE_TIMESTAMP;
+
+pub const SQL_C_BINARY: SQLSMALLINT = SQL_BINARY;
+pub const SQL_C_BIT: SQLSMALLINT = SQL_BIT;
+pub const SQL_C_SBIGINT: SQLSMALLINT = SQL_BIGINT + SQL_SIGNED_OFFSET;
+pub const SQL_C_UBIGINT: SQLSMALLINT = SQL_BIGINT + SQL_UNSIGNED_OFFSET;
+pub const SQL_C_TINYINT: SQLSMALLINT = SQL_TINYINT;
+pub const SQL_C_SLONG: SQLSMALLINT = SQL_C_LONG + SQL_SIGNED_OFFSET;
+pub const SQL_C_SSHORT: SQLSMALLINT = SQL_C_SHORT + SQL_SIGNED_OFFSET;
+pub const SQL_C_STINYINT: SQLSMALLINT = SQL_TINYINT + SQL_SIGNED_OFFSET;
+pub const SQL_C_ULONG: SQLSMALLINT = SQL_C_LONG + SQL_UNSIGNED_OFFSET;
+pub const SQL_C_USHORT: SQLSMALLINT = SQL_C_SHORT + SQL_UNSIGNED_OFFSET;
+pub const SQL_C_UTINYINT: SQLSMALLINT = SQL_TINYINT + SQL_UNSIGNED_OFFSET;
+
+pub const SQL_C_GUID: SQLSMALLINT = SQL_GUID;
+
+pub const SQL_WCHAR: SQLSMALLINT = -8;
+pub const SQL_WVARCHAR: SQLSMALLINT = -9;
+pub const SQL_WLONGVARCHAR: SQLSMALLINT = -10;
+pub const SQL_C_WCHAR: SQLSMALLINT = SQL_WCHAR;
+
+pub const SQL_TYPE_NULL: SQLSMALLINT = 0;
+
diff --git a/third_party/rust/winapi-0.2.8/src/sqltypes.rs b/third_party/rust/winapi-0.2.8/src/sqltypes.rs
new file mode 100644
index 0000000000..a5ded3afcc
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/sqltypes.rs
@@ -0,0 +1,130 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub type SQLCHAR = ::c_uchar;
+pub type SQLSCHAR = ::c_schar;
+pub type SQLDATE = ::c_uchar;
+pub type SQLDECIMAL = ::c_uchar;
+pub type SQLDOUBLE = ::c_double;
+pub type SQLFLOAT = ::c_double;
+pub type SQLINTEGER = ::c_long;
+pub type SQLUINTEGER = ::c_ulong;
+#[cfg(target_arch = "x86_64")]
+pub type SQLLEN = ::INT64;
+#[cfg(target_arch = "x86_64")]
+pub type SQLULEN = ::UINT64;
+#[cfg(target_arch = "x86_64")]
+pub type SQLSETPOSIROW = ::UINT64;
+#[cfg(target_arch = "x86")]
+pub type SQLLEN = SQLINTEGER;
+#[cfg(target_arch = "x86")]
+pub type SQLULEN = SQLUINTEGER;
+#[cfg(target_arch = "x86")]
+pub type SQLSETPOSIROW = SQLUSMALLINT;
+pub type SQLROWCOUNT = SQLULEN;
+pub type SQLROWSETSIZE = SQLULEN;
+pub type SQLTRANSID = SQLULEN;
+pub type SQLROWOFFSET = SQLLEN;
+pub type SQLNUMERIC = ::c_uchar;
+pub type SQLPOINTER = *mut ::c_void;
+pub type SQLREAL = ::c_float;
+pub type SQLSMALLINT = ::c_short;
+pub type SQLUSMALLINT = ::c_ushort;
+pub type SQLTIME = ::c_uchar;
+pub type SQLTIMESTAMP = ::c_uchar;
+pub type SQLVARCHAR = ::c_uchar;
+pub type SQLRETURN = SQLSMALLINT;
+pub type SQLHANDLE = *mut ::c_void;
+pub type SQLHENV = SQLHANDLE;
+pub type SQLHDBC = SQLHANDLE;
+pub type SQLHSTMT = SQLHANDLE;
+pub type SQLHDESC = SQLHANDLE;
+//pub type UCHAR = ::c_uchar;
+pub type SCHAR = ::c_schar;
+//pub type SQLSCHAR = SCHAR;
+pub type SDWORD = ::c_long;
+pub type SWORD = ::c_short;
+pub type UDWORD = ::c_ulong;
+//pub type UWORD = ::c_ushort;
+//#[cfg(target_arch = "x86")]
+//pub type SQLUINTEGER = ::UDWORD;
+pub type SLONG = ::c_long;
+pub type SSHORT = ::c_short;
+//pub type ULONG = ::c_ulong;
+//pub type USHORT = ::c_ushort;
+pub type SDOUBLE = ::c_double;
+pub type LDOUBLE = ::c_double;
+pub type SFLOAT = ::c_float;
+pub type PTR = *mut ::c_void;
+pub type HENV = *mut ::c_void;
+pub type HDBC = *mut ::c_void;
+pub type HSTMT = *mut ::c_void;
+pub type RETCODE = ::c_short;
+pub type SQLHWND = ::HWND;
+STRUCT!{struct DATE_STRUCT {
+ year: SQLSMALLINT,
+ month: SQLUSMALLINT,
+ day: SQLUSMALLINT,
+}}
+pub type SQL_DATE_STRUCT = DATE_STRUCT;
+STRUCT!{struct TIME_STRUCT {
+ hour: SQLUSMALLINT,
+ minute: SQLUSMALLINT,
+ second: SQLUSMALLINT,
+}}
+pub type SQL_TIME_STRUCT = TIME_STRUCT;
+STRUCT!{struct TIMESTAMP_STRUCT {
+ year: SQLSMALLINT,
+ month: SQLUSMALLINT,
+ day: SQLUSMALLINT,
+ hour: SQLUSMALLINT,
+ minute: SQLUSMALLINT,
+ second: SQLUSMALLINT,
+ fraction: SQLUINTEGER,
+}}
+pub type SQL_TIMESTAMP_STRUCT = TIMESTAMP_STRUCT;
+ENUM!{enum SQLINTERVAL {
+ SQL_IS_YEAR = 1,
+ SQL_IS_MONTH = 2,
+ SQL_IS_DAY = 3,
+ SQL_IS_HOUR = 4,
+ SQL_IS_MINUTE = 5,
+ SQL_IS_SECOND = 6,
+ SQL_IS_YEAR_TO_MONTH = 7,
+ SQL_IS_DAY_TO_HOUR = 8,
+ SQL_IS_DAY_TO_MINUTE = 9,
+ SQL_IS_DAY_TO_SECOND = 10,
+ SQL_IS_HOUR_TO_MINUTE = 11,
+ SQL_IS_HOUR_TO_SECOND = 12,
+ SQL_IS_MINUTE_TO_SECOND = 13,
+}}
+STRUCT!{struct SQL_YEAR_MONTH_STRUCT {
+ year: SQLUINTEGER,
+ month: SQLUINTEGER,
+}}
+STRUCT!{struct SQL_DAY_SECOND_STRUCT {
+ day: SQLUINTEGER,
+ hour: SQLUINTEGER,
+ minute: SQLUINTEGER,
+ second: SQLUINTEGER,
+ fraction: SQLUINTEGER,
+}}
+STRUCT!{struct SQL_INTERVAL_STRUCT {
+ interval_type: SQLINTERVAL,
+ interval_sign: SQLSMALLINT,
+ intval: [u32; 5],
+}}
+UNION!{SQL_INTERVAL_STRUCT, intval, year_month, year_month_mut, SQL_YEAR_MONTH_STRUCT}
+UNION!{SQL_INTERVAL_STRUCT, intval, day_second, day_second_mut, SQL_DAY_SECOND_STRUCT}
+pub type ODBCINT64 = ::__int64;
+pub type SQLBIGINT = ODBCINT64;
+pub type SQLUBIGINT = ::__uint64;
+pub const SQL_MAX_NUMERIC_LEN: usize = 16;
+STRUCT!{struct SQL_NUMERIC_STRUCT {
+ precision: SQLCHAR,
+ scale: SQLSCHAR,
+ sign: SQLCHAR,
+ val: [SQLCHAR; SQL_MAX_NUMERIC_LEN],
+}}
+pub type SQLGUID = ::GUID;
+pub type BOOKMARK = SQLULEN;
+pub type SQLWCHAR = ::wchar_t;
diff --git a/third_party/rust/winapi-0.2.8/src/sspi.rs b/third_party/rust/winapi-0.2.8/src/sspi.rs
new file mode 100644
index 0000000000..688fe70c74
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/sspi.rs
@@ -0,0 +1,657 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Security Support Provider Interface Prototypes and structure definitions
+pub type SEC_WCHAR = ::WCHAR;
+pub type SEC_CHAR = ::CHAR;
+pub type SECURITY_STATUS = ::LONG;
+STRUCT!{struct SecHandle {
+ dwLower: ::ULONG_PTR,
+ dwUpper: ::ULONG_PTR,
+}}
+pub type PSecHandle = *mut SecHandle;
+pub const SEC_DELETED_HANDLE: ::ULONG_PTR = 2;
+pub type CredHandle = SecHandle;
+pub type PCredHandle = PSecHandle;
+pub type CtxtHandle = SecHandle;
+pub type PCtxtHandle = PSecHandle;
+pub type SECURITY_INTEGER = ::LARGE_INTEGER;
+pub type PSECURITY_INTEGER = *mut ::LARGE_INTEGER;
+pub type TimeStamp = SECURITY_INTEGER;
+pub type PTimeStamp = *mut SECURITY_INTEGER;
+STRUCT!{struct SECURITY_STRING {
+ Length: ::c_ushort,
+ MaximumLength: ::c_ushort,
+ Buffer: *mut ::c_ushort,
+}}
+pub type PSECURITY_STRING = *mut SECURITY_STRING;
+STRUCT!{struct SecPkgInfoW {
+ fCapabilities: ::c_ulong,
+ wVersion: ::c_ushort,
+ wRPCID: ::c_ushort,
+ cbMaxToken: ::c_ulong,
+ Name: *mut SEC_WCHAR,
+ Comment: *mut SEC_WCHAR,
+}}
+pub type PSecPkgInfoW = *mut SecPkgInfoW;
+STRUCT!{struct SecPkgInfoA {
+ fCapabilities: ::c_ulong,
+ wVersion: ::c_ushort,
+ wRPCID: ::c_ushort,
+ cbMaxToken: ::c_ulong,
+ Name: *mut SEC_CHAR,
+ Comment: *mut SEC_CHAR,
+}}
+pub type PSecPkgInfoA = *mut SecPkgInfoA;
+pub const SECPKG_FLAG_INTEGRITY: ::c_ulong = 0x00000001;
+pub const SECPKG_FLAG_PRIVACY: ::c_ulong = 0x00000002;
+pub const SECPKG_FLAG_TOKEN_ONLY: ::c_ulong = 0x00000004;
+pub const SECPKG_FLAG_DATAGRAM: ::c_ulong = 0x00000008;
+pub const SECPKG_FLAG_CONNECTION: ::c_ulong = 0x00000010;
+pub const SECPKG_FLAG_MULTI_REQUIRED: ::c_ulong = 0x00000020;
+pub const SECPKG_FLAG_CLIENT_ONLY: ::c_ulong = 0x00000040;
+pub const SECPKG_FLAG_EXTENDED_ERROR: ::c_ulong = 0x00000080;
+pub const SECPKG_FLAG_IMPERSONATION: ::c_ulong = 0x00000100;
+pub const SECPKG_FLAG_ACCEPT_WIN32_NAME: ::c_ulong = 0x00000200;
+pub const SECPKG_FLAG_STREAM: ::c_ulong = 0x00000400;
+pub const SECPKG_FLAG_NEGOTIABLE: ::c_ulong = 0x00000800;
+pub const SECPKG_FLAG_GSS_COMPATIBLE: ::c_ulong = 0x00001000;
+pub const SECPKG_FLAG_LOGON: ::c_ulong = 0x00002000;
+pub const SECPKG_FLAG_ASCII_BUFFERS: ::c_ulong = 0x00004000;
+pub const SECPKG_FLAG_FRAGMENT: ::c_ulong = 0x00008000;
+pub const SECPKG_FLAG_MUTUAL_AUTH: ::c_ulong = 0x00010000;
+pub const SECPKG_FLAG_DELEGATION: ::c_ulong = 0x00020000;
+pub const SECPKG_FLAG_READONLY_WITH_CHECKSUM: ::c_ulong = 0x00040000;
+pub const SECPKG_FLAG_RESTRICTED_TOKENS: ::c_ulong = 0x00080000;
+pub const SECPKG_FLAG_NEGO_EXTENDER: ::c_ulong = 0x00100000;
+pub const SECPKG_FLAG_NEGOTIABLE2: ::c_ulong = 0x00200000;
+pub const SECPKG_FLAG_APPCONTAINER_PASSTHROUGH: ::c_ulong = 0x00400000;
+pub const SECPKG_FLAG_APPCONTAINER_CHECKS: ::c_ulong = 0x00800000;
+pub const SECPKG_ID_NONE: ::c_ulong = 0xFFFF;
+pub const SECPKG_CALLFLAGS_APPCONTAINER: ::c_ulong = 0x00000001;
+pub const SECPKG_CALLFLAGS_APPCONTAINER_AUTHCAPABLE: ::c_ulong = 0x00000002;
+pub const SECPKG_CALLFLAGS_FORCE_SUPPLIED: ::c_ulong = 0x00000004;
+STRUCT!{struct SecBuffer {
+ cbBuffer: ::c_ulong,
+ BufferType: ::c_ulong,
+ pvBuffer: *mut ::c_void,
+}}
+pub type PSecBuffer = *mut SecBuffer;
+STRUCT!{struct SecBufferDesc {
+ ulVersion: ::c_ulong,
+ cBuffers: ::c_ulong,
+ pBuffers: PSecBuffer,
+}}
+pub type PSecBufferDesc = *mut SecBufferDesc;
+pub const SECBUFFER_VERSION: ::c_ulong = 0;
+pub const SECBUFFER_EMPTY: ::c_ulong = 0;
+pub const SECBUFFER_DATA: ::c_ulong = 1;
+pub const SECBUFFER_TOKEN: ::c_ulong = 2;
+pub const SECBUFFER_PKG_PARAMS: ::c_ulong = 3;
+pub const SECBUFFER_MISSING: ::c_ulong = 4;
+pub const SECBUFFER_EXTRA: ::c_ulong = 5;
+pub const SECBUFFER_STREAM_TRAILER: ::c_ulong = 6;
+pub const SECBUFFER_STREAM_HEADER: ::c_ulong = 7;
+pub const SECBUFFER_NEGOTIATION_INFO: ::c_ulong = 8;
+pub const SECBUFFER_PADDING: ::c_ulong = 9;
+pub const SECBUFFER_STREAM: ::c_ulong = 10;
+pub const SECBUFFER_MECHLIST: ::c_ulong = 11;
+pub const SECBUFFER_MECHLIST_SIGNATURE: ::c_ulong = 12;
+pub const SECBUFFER_TARGET: ::c_ulong = 13;
+pub const SECBUFFER_CHANNEL_BINDINGS: ::c_ulong = 14;
+pub const SECBUFFER_CHANGE_PASS_RESPONSE: ::c_ulong = 15;
+pub const SECBUFFER_TARGET_HOST: ::c_ulong = 16;
+pub const SECBUFFER_ALERT: ::c_ulong = 17;
+pub const SECBUFFER_APPLICATION_PROTOCOLS: ::c_ulong = 18;
+pub const SECBUFFER_ATTRMASK: ::c_ulong = 0xF0000000;
+pub const SECBUFFER_READONLY: ::c_ulong = 0x80000000;
+pub const SECBUFFER_READONLY_WITH_CHECKSUM: ::c_ulong = 0x10000000;
+pub const SECBUFFER_RESERVED: ::c_ulong = 0x60000000;
+STRUCT!{struct SEC_NEGOTIATION_INFO {
+ Size: ::c_ulong,
+ NameLength: ::c_ulong,
+ Name: *mut SEC_WCHAR,
+ Reserved: *mut ::c_void,
+}}
+pub type PSEC_NEGOTIATION_INFO = *mut SEC_NEGOTIATION_INFO;
+STRUCT!{struct SEC_CHANNEL_BINDINGS {
+ dwInitiatorAddrType: ::c_ulong,
+ cbInitiatorLength: ::c_ulong,
+ dwInitiatorOffset: ::c_ulong,
+ dwAcceptorAddrType: ::c_ulong,
+ cbAcceptorLength: ::c_ulong,
+ dwAcceptorOffset: ::c_ulong,
+ cbApplicationDataLength: ::c_ulong,
+ dwApplicationDataOffset: ::c_ulong,
+}}
+pub type PSEC_CHANNEL_BINDINGS = *mut SEC_CHANNEL_BINDINGS;
+ENUM!{enum SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT {
+ SecApplicationProtocolNegotiationExt_None,
+ SecApplicationProtocolNegotiationExt_NPN,
+ SecApplicationProtocolNegotiationExt_ALPN,
+}}
+pub type PSEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT = *mut SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT;
+STRUCT!{struct SEC_APPLICATION_PROTOCOL_LIST {
+ ProtoNegoExt: ::SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT,
+ ProtocolListSize: ::c_ushort,
+ ProtocolList: [::c_uchar; 0],
+}}
+STRUCT!{struct SEC_APPLICATION_PROTOCOLS {
+ ProtocolListsSize: ::c_ulong,
+ ProtocolLists: [SEC_APPLICATION_PROTOCOL_LIST; 0],
+}}
+pub type PSEC_APPLICATION_PROTOCOLS = *mut SEC_APPLICATION_PROTOCOLS;
+pub const SECURITY_NATIVE_DREP: ::c_ulong = 0x00000010;
+pub const SECURITY_NETWORK_DREP: ::c_ulong = 0x00000000;
+pub const SECPKG_CRED_INBOUND: ::c_ulong = 0x00000001;
+pub const SECPKG_CRED_OUTBOUND: ::c_ulong = 0x00000002;
+pub const SECPKG_CRED_BOTH: ::c_ulong = 0x00000003;
+pub const SECPKG_CRED_DEFAULT: ::c_ulong = 0x00000004;
+pub const SECPKG_CRED_RESERVED: ::c_ulong = 0xF0000000;
+pub const SECPKG_CRED_AUTOLOGON_RESTRICTED: ::c_ulong = 0x00000010;
+pub const SECPKG_CRED_PROCESS_POLICY_ONLY: ::c_ulong = 0x00000020;
+pub const ISC_REQ_DELEGATE: ::c_ulong = 0x00000001;
+pub const ISC_REQ_MUTUAL_AUTH: ::c_ulong = 0x00000002;
+pub const ISC_REQ_REPLAY_DETECT: ::c_ulong = 0x00000004;
+pub const ISC_REQ_SEQUENCE_DETECT: ::c_ulong = 0x00000008;
+pub const ISC_REQ_CONFIDENTIALITY: ::c_ulong = 0x00000010;
+pub const ISC_REQ_USE_SESSION_KEY: ::c_ulong = 0x00000020;
+pub const ISC_REQ_PROMPT_FOR_CREDS: ::c_ulong = 0x00000040;
+pub const ISC_REQ_USE_SUPPLIED_CREDS: ::c_ulong = 0x00000080;
+pub const ISC_REQ_ALLOCATE_MEMORY: ::c_ulong = 0x00000100;
+pub const ISC_REQ_USE_DCE_STYLE: ::c_ulong = 0x00000200;
+pub const ISC_REQ_DATAGRAM: ::c_ulong = 0x00000400;
+pub const ISC_REQ_CONNECTION: ::c_ulong = 0x00000800;
+pub const ISC_REQ_CALL_LEVEL: ::c_ulong = 0x00001000;
+pub const ISC_REQ_FRAGMENT_SUPPLIED: ::c_ulong = 0x00002000;
+pub const ISC_REQ_EXTENDED_ERROR: ::c_ulong = 0x00004000;
+pub const ISC_REQ_STREAM: ::c_ulong = 0x00008000;
+pub const ISC_REQ_INTEGRITY: ::c_ulong = 0x00010000;
+pub const ISC_REQ_IDENTIFY: ::c_ulong = 0x00020000;
+pub const ISC_REQ_NULL_SESSION: ::c_ulong = 0x00040000;
+pub const ISC_REQ_MANUAL_CRED_VALIDATION: ::c_ulong = 0x00080000;
+pub const ISC_REQ_RESERVED1: ::c_ulong = 0x00100000;
+pub const ISC_REQ_FRAGMENT_TO_FIT: ::c_ulong = 0x00200000;
+pub const ISC_REQ_FORWARD_CREDENTIALS: ::c_ulong = 0x00400000;
+pub const ISC_REQ_NO_INTEGRITY: ::c_ulong = 0x00800000;
+pub const ISC_REQ_USE_HTTP_STYLE: ::c_ulong = 0x01000000;
+pub const ISC_REQ_UNVERIFIED_TARGET_NAME: ::c_ulong = 0x20000000;
+pub const ISC_REQ_CONFIDENTIALITY_ONLY: ::c_ulong = 0x40000000;
+pub const ISC_RET_DELEGATE: ::c_ulong = 0x00000001;
+pub const ISC_RET_MUTUAL_AUTH: ::c_ulong = 0x00000002;
+pub const ISC_RET_REPLAY_DETECT: ::c_ulong = 0x00000004;
+pub const ISC_RET_SEQUENCE_DETECT: ::c_ulong = 0x00000008;
+pub const ISC_RET_CONFIDENTIALITY: ::c_ulong = 0x00000010;
+pub const ISC_RET_USE_SESSION_KEY: ::c_ulong = 0x00000020;
+pub const ISC_RET_USED_COLLECTED_CREDS: ::c_ulong = 0x00000040;
+pub const ISC_RET_USED_SUPPLIED_CREDS: ::c_ulong = 0x00000080;
+pub const ISC_RET_ALLOCATED_MEMORY: ::c_ulong = 0x00000100;
+pub const ISC_RET_USED_DCE_STYLE: ::c_ulong = 0x00000200;
+pub const ISC_RET_DATAGRAM: ::c_ulong = 0x00000400;
+pub const ISC_RET_CONNECTION: ::c_ulong = 0x00000800;
+pub const ISC_RET_INTERMEDIATE_RETURN: ::c_ulong = 0x00001000;
+pub const ISC_RET_CALL_LEVEL: ::c_ulong = 0x00002000;
+pub const ISC_RET_EXTENDED_ERROR: ::c_ulong = 0x00004000;
+pub const ISC_RET_STREAM: ::c_ulong = 0x00008000;
+pub const ISC_RET_INTEGRITY: ::c_ulong = 0x00010000;
+pub const ISC_RET_IDENTIFY: ::c_ulong = 0x00020000;
+pub const ISC_RET_NULL_SESSION: ::c_ulong = 0x00040000;
+pub const ISC_RET_MANUAL_CRED_VALIDATION: ::c_ulong = 0x00080000;
+pub const ISC_RET_RESERVED1: ::c_ulong = 0x00100000;
+pub const ISC_RET_FRAGMENT_ONLY: ::c_ulong = 0x00200000;
+pub const ISC_RET_FORWARD_CREDENTIALS: ::c_ulong = 0x00400000;
+pub const ISC_RET_USED_HTTP_STYLE: ::c_ulong = 0x01000000;
+pub const ISC_RET_NO_ADDITIONAL_TOKEN: ::c_ulong = 0x02000000;
+pub const ISC_RET_REAUTHENTICATION: ::c_ulong = 0x08000000;
+pub const ISC_RET_CONFIDENTIALITY_ONLY: ::c_ulong = 0x40000000;
+pub const ASC_REQ_DELEGATE: ::c_ulong = 0x00000001;
+pub const ASC_REQ_MUTUAL_AUTH: ::c_ulong = 0x00000002;
+pub const ASC_REQ_REPLAY_DETECT: ::c_ulong = 0x00000004;
+pub const ASC_REQ_SEQUENCE_DETECT: ::c_ulong = 0x00000008;
+pub const ASC_REQ_CONFIDENTIALITY: ::c_ulong = 0x00000010;
+pub const ASC_REQ_USE_SESSION_KEY: ::c_ulong = 0x00000020;
+pub const ASC_REQ_SESSION_TICKET: ::c_ulong = 0x00000040;
+pub const ASC_REQ_ALLOCATE_MEMORY: ::c_ulong = 0x00000100;
+pub const ASC_REQ_USE_DCE_STYLE: ::c_ulong = 0x00000200;
+pub const ASC_REQ_DATAGRAM: ::c_ulong = 0x00000400;
+pub const ASC_REQ_CONNECTION: ::c_ulong = 0x00000800;
+pub const ASC_REQ_CALL_LEVEL: ::c_ulong = 0x00001000;
+pub const ASC_REQ_EXTENDED_ERROR: ::c_ulong = 0x00008000;
+pub const ASC_REQ_STREAM: ::c_ulong = 0x00010000;
+pub const ASC_REQ_INTEGRITY: ::c_ulong = 0x00020000;
+pub const ASC_REQ_LICENSING: ::c_ulong = 0x00040000;
+pub const ASC_REQ_IDENTIFY: ::c_ulong = 0x00080000;
+pub const ASC_REQ_ALLOW_NULL_SESSION: ::c_ulong = 0x00100000;
+pub const ASC_REQ_ALLOW_NON_USER_LOGONS: ::c_ulong = 0x00200000;
+pub const ASC_REQ_ALLOW_CONTEXT_REPLAY: ::c_ulong = 0x00400000;
+pub const ASC_REQ_FRAGMENT_TO_FIT: ::c_ulong = 0x00800000;
+pub const ASC_REQ_FRAGMENT_SUPPLIED: ::c_ulong = 0x00002000;
+pub const ASC_REQ_NO_TOKEN: ::c_ulong = 0x01000000;
+pub const ASC_REQ_PROXY_BINDINGS: ::c_ulong = 0x04000000;
+pub const ASC_REQ_ALLOW_MISSING_BINDINGS: ::c_ulong = 0x10000000;
+pub const ASC_RET_DELEGATE: ::c_ulong = 0x00000001;
+pub const ASC_RET_MUTUAL_AUTH: ::c_ulong = 0x00000002;
+pub const ASC_RET_REPLAY_DETECT: ::c_ulong = 0x00000004;
+pub const ASC_RET_SEQUENCE_DETECT: ::c_ulong = 0x00000008;
+pub const ASC_RET_CONFIDENTIALITY: ::c_ulong = 0x00000010;
+pub const ASC_RET_USE_SESSION_KEY: ::c_ulong = 0x00000020;
+pub const ASC_RET_SESSION_TICKET: ::c_ulong = 0x00000040;
+pub const ASC_RET_ALLOCATED_MEMORY: ::c_ulong = 0x00000100;
+pub const ASC_RET_USED_DCE_STYLE: ::c_ulong = 0x00000200;
+pub const ASC_RET_DATAGRAM: ::c_ulong = 0x00000400;
+pub const ASC_RET_CONNECTION: ::c_ulong = 0x00000800;
+pub const ASC_RET_CALL_LEVEL: ::c_ulong = 0x00002000;
+pub const ASC_RET_THIRD_LEG_FAILED: ::c_ulong = 0x00004000;
+pub const ASC_RET_EXTENDED_ERROR: ::c_ulong = 0x00008000;
+pub const ASC_RET_STREAM: ::c_ulong = 0x00010000;
+pub const ASC_RET_INTEGRITY: ::c_ulong = 0x00020000;
+pub const ASC_RET_LICENSING: ::c_ulong = 0x00040000;
+pub const ASC_RET_IDENTIFY: ::c_ulong = 0x00080000;
+pub const ASC_RET_NULL_SESSION: ::c_ulong = 0x00100000;
+pub const ASC_RET_ALLOW_NON_USER_LOGONS: ::c_ulong = 0x00200000;
+pub const ASC_RET_ALLOW_CONTEXT_REPLAY: ::c_ulong = 0x00400000;
+pub const ASC_RET_FRAGMENT_ONLY: ::c_ulong = 0x00800000;
+pub const ASC_RET_NO_TOKEN: ::c_ulong = 0x01000000;
+pub const ASC_RET_NO_ADDITIONAL_TOKEN: ::c_ulong = 0x02000000;
+pub const SECPKG_CRED_ATTR_NAMES: ::c_ulong = 1;
+pub const SECPKG_CRED_ATTR_SSI_PROVIDER: ::c_ulong = 2;
+pub const SECPKG_CRED_ATTR_KDC_PROXY_SETTINGS: ::c_ulong = 3;
+pub const SECPKG_CRED_ATTR_CERT: ::c_ulong = 4;
+STRUCT!{struct SecPkgCredentials_NamesW {
+ sUserName: *mut SEC_WCHAR,
+}}
+pub type PSecPkgCredentials_NamesW = *mut SecPkgCredentials_NamesW;
+STRUCT!{struct SecPkgCredentials_NamesA {
+ sUserName: *mut SEC_CHAR,
+}}
+pub type PSecPkgCredentials_NamesA = *mut SecPkgCredentials_NamesA;
+STRUCT!{struct SecPkgCredentials_SSIProviderW {
+ sProviderName: *mut SEC_WCHAR,
+ ProviderInfoLength: ::c_ulong,
+ ProviderInfo: *mut ::c_char,
+}}
+pub type PSecPkgCredentials_SSIProviderW = *mut SecPkgCredentials_SSIProviderW;
+STRUCT!{struct SecPkgCredentials_SSIProviderA {
+ sProviderName: *mut SEC_CHAR,
+ ProviderInfoLength: ::c_ulong,
+ ProviderInfo: *mut ::c_char,
+}}
+pub type PSecPkgCredentials_SSIProviderA = *mut SecPkgCredentials_SSIProviderA;
+pub const KDC_PROXY_SETTINGS_V1: ::ULONG = 1;
+pub const KDC_PROXY_SETTINGS_FLAGS_FORCEPROXY: ::ULONG = 0x1;
+STRUCT!{struct SecPkgCredentials_KdcProxySettingsW {
+ Version: ::ULONG,
+ Flags: ::ULONG,
+ ProxyServerOffset: ::USHORT,
+ ProxyServerLength: ::USHORT,
+ ClientTlsCredOffset: ::USHORT,
+ ClientTlsCredLength: ::USHORT,
+}}
+pub type PSecPkgCredentials_KdcProxySettingsW = *mut SecPkgCredentials_KdcProxySettingsW;
+STRUCT!{struct SecPkgCredentials_Cert {
+ EncodedCertSize: ::c_ulong,
+ EncodedCert: *mut ::c_uchar,
+}}
+pub type PSecPkgCredentials_Cert = *mut SecPkgCredentials_Cert;
+pub const SECPKG_ATTR_SIZES: ::c_ulong = 0;
+pub const SECPKG_ATTR_NAMES: ::c_ulong = 1;
+pub const SECPKG_ATTR_LIFESPAN: ::c_ulong = 2;
+pub const SECPKG_ATTR_DCE_INFO: ::c_ulong = 3;
+pub const SECPKG_ATTR_STREAM_SIZES: ::c_ulong = 4;
+pub const SECPKG_ATTR_KEY_INFO: ::c_ulong = 5;
+pub const SECPKG_ATTR_AUTHORITY: ::c_ulong = 6;
+pub const SECPKG_ATTR_PROTO_INFO: ::c_ulong = 7;
+pub const SECPKG_ATTR_PASSWORD_EXPIRY: ::c_ulong = 8;
+pub const SECPKG_ATTR_SESSION_KEY: ::c_ulong = 9;
+pub const SECPKG_ATTR_PACKAGE_INFO: ::c_ulong = 10;
+pub const SECPKG_ATTR_USER_FLAGS: ::c_ulong = 11;
+pub const SECPKG_ATTR_NEGOTIATION_INFO: ::c_ulong = 12;
+pub const SECPKG_ATTR_NATIVE_NAMES: ::c_ulong = 13;
+pub const SECPKG_ATTR_FLAGS: ::c_ulong = 14;
+pub const SECPKG_ATTR_USE_VALIDATED: ::c_ulong = 15;
+pub const SECPKG_ATTR_CREDENTIAL_NAME: ::c_ulong = 16;
+pub const SECPKG_ATTR_TARGET_INFORMATION: ::c_ulong = 17;
+pub const SECPKG_ATTR_ACCESS_TOKEN: ::c_ulong = 18;
+pub const SECPKG_ATTR_TARGET: ::c_ulong = 19;
+pub const SECPKG_ATTR_AUTHENTICATION_ID: ::c_ulong = 20;
+pub const SECPKG_ATTR_LOGOFF_TIME: ::c_ulong = 21;
+pub const SECPKG_ATTR_NEGO_KEYS: ::c_ulong = 22;
+pub const SECPKG_ATTR_PROMPTING_NEEDED: ::c_ulong = 24;
+pub const SECPKG_ATTR_UNIQUE_BINDINGS: ::c_ulong = 25;
+pub const SECPKG_ATTR_ENDPOINT_BINDINGS: ::c_ulong = 26;
+pub const SECPKG_ATTR_CLIENT_SPECIFIED_TARGET: ::c_ulong = 27;
+pub const SECPKG_ATTR_LAST_CLIENT_TOKEN_STATUS: ::c_ulong = 30;
+pub const SECPKG_ATTR_NEGO_PKG_INFO: ::c_ulong = 31;
+pub const SECPKG_ATTR_NEGO_STATUS: ::c_ulong = 32;
+pub const SECPKG_ATTR_CONTEXT_DELETED: ::c_ulong = 33;
+pub const SECPKG_ATTR_DTLS_MTU: ::c_ulong = 34;
+pub const SECPKG_ATTR_DATAGRAM_SIZES: ::c_ulong = SECPKG_ATTR_STREAM_SIZES;
+pub const SECPKG_ATTR_SUBJECT_SECURITY_ATTRIBUTES: ::c_ulong = 128;
+pub const SECPKG_ATTR_APPLICATION_PROTOCOL: ::c_ulong = 35;
+STRUCT!{struct SecPkgContext_SubjectAttributes {
+ AttributeInfo: *mut ::c_void,
+}}
+pub type PSecPkgContext_SubjectAttributes = *mut SecPkgContext_SubjectAttributes;
+pub const SECPKG_ATTR_NEGO_INFO_FLAG_NO_KERBEROS: ::c_ulong = 0x1;
+pub const SECPKG_ATTR_NEGO_INFO_FLAG_NO_NTLM: ::c_ulong = 0x2;
+ENUM!{enum SECPKG_CRED_CLASS {
+ SecPkgCredClass_None = 0,
+ SecPkgCredClass_Ephemeral = 10,
+ SecPkgCredClass_PersistedGeneric = 20,
+ SecPkgCredClass_PersistedSpecific = 30,
+ SecPkgCredClass_Explicit = 40,
+}}
+pub type PSECPKG_CRED_CLASS = *mut SECPKG_CRED_CLASS;
+STRUCT!{struct SecPkgContext_CredInfo {
+ CredClass: SECPKG_CRED_CLASS,
+ IsPromptingNeeded: ::c_ulong,
+}}
+pub type PSecPkgContext_CredInfo = *mut SecPkgContext_CredInfo;
+STRUCT!{struct SecPkgContext_NegoPackageInfo {
+ PackageMask: ::c_ulong,
+}}
+pub type PSecPkgContext_NegoPackageInfo = *mut SecPkgContext_NegoPackageInfo;
+STRUCT!{struct SecPkgContext_NegoStatus {
+ LastStatus: ::c_ulong,
+}}
+pub type PSecPkgContext_NegoStatus = *mut SecPkgContext_NegoStatus;
+STRUCT!{struct SecPkgContext_Sizes {
+ cbMaxToken: ::c_ulong,
+ cbMaxSignature: ::c_ulong,
+ cbBlockSize: ::c_ulong,
+ cbSecurityTrailer: ::c_ulong,
+}}
+pub type PSecPkgContext_Sizes = *mut SecPkgContext_Sizes;
+STRUCT!{struct SecPkgContext_StreamSizes {
+ cbHeader: ::c_ulong,
+ cbTrailer: ::c_ulong,
+ cbMaximumMessage: ::c_ulong,
+ cBuffers: ::c_ulong,
+ cbBlockSize: ::c_ulong,
+}}
+pub type PSecPkgContext_StreamSizes = *mut SecPkgContext_StreamSizes;
+pub type SecPkgContext_DatagramSizes = SecPkgContext_StreamSizes;
+pub type PSecPkgContext_DatagramSizes = PSecPkgContext_StreamSizes;
+STRUCT!{struct SecPkgContext_NamesW {
+ sUserName: *mut SEC_WCHAR,
+}}
+pub type PSecPkgContext_NamesW = *mut SecPkgContext_NamesW;
+ENUM!{enum SECPKG_ATTR_LCT_STATUS {
+ SecPkgAttrLastClientTokenYes,
+ SecPkgAttrLastClientTokenNo,
+ SecPkgAttrLastClientTokenMaybe,
+}}
+pub type PSECPKG_ATTR_LCT_STATUS = *mut SECPKG_ATTR_LCT_STATUS;
+STRUCT!{struct SecPkgContext_LastClientTokenStatus {
+ LastClientTokenStatus: SECPKG_ATTR_LCT_STATUS,
+}}
+pub type PSecPkgContext_LastClientTokenStatus = *mut SecPkgContext_LastClientTokenStatus;
+STRUCT!{struct SecPkgContext_NamesA {
+ sUserName: *mut SEC_CHAR,
+}}
+pub type PSecPkgContext_NamesA = *mut SecPkgContext_NamesA;
+STRUCT!{struct SecPkgContext_Lifespan {
+ tsStart: TimeStamp,
+ tsExpiry: TimeStamp,
+}}
+pub type PSecPkgContext_Lifespan = *mut SecPkgContext_Lifespan;
+STRUCT!{struct SecPkgContext_DceInfo {
+ AuthzSvc: ::c_ulong,
+ pPac: *mut ::c_void,
+}}
+pub type PSecPkgContext_DceInfo = *mut SecPkgContext_DceInfo;
+STRUCT!{struct SecPkgContext_KeyInfoA {
+ sSignatureAlgorithmName: *mut ::SEC_CHAR,
+ sEncryptAlgorithmName: *mut ::SEC_CHAR,
+ KeySize: ::c_ulong,
+ SignatureAlgorithm: ::c_ulong,
+ EncryptAlgorithm: ::c_ulong,
+}}
+pub type PSecPkgContext_KeyInfoA = *mut SecPkgContext_KeyInfoA;
+STRUCT!{struct SecPkgContext_KeyInfoW {
+ sSignatureAlgorithmName: *mut ::SEC_WCHAR,
+ sEncryptAlgorithmName: *mut ::SEC_WCHAR,
+ KeySize: ::c_ulong,
+ SignatureAlgorithm: ::c_ulong,
+ EncryptAlgorithm: ::c_ulong,
+}}
+pub type PSecPkgContext_KeyInfoW = *mut SecPkgContext_KeyInfoW;
+STRUCT!{struct SecPkgContext_AuthorityA {
+ sAuthorityName: *mut SEC_CHAR,
+}}
+pub type PSecPkgContext_AuthorityA = *mut SecPkgContext_AuthorityA;
+STRUCT!{struct SecPkgContext_AuthorityW {
+ sAuthorityName: *mut SEC_WCHAR,
+}}
+pub type PSecPkgContext_AuthorityW = *mut SecPkgContext_AuthorityW;
+STRUCT!{struct SecPkgContext_ProtoInfoA {
+ sProtocolName: *mut SEC_CHAR,
+ majorVersion: ::c_ulong,
+ minorVersion: ::c_ulong,
+}}
+pub type PSecPkgContext_ProtoInfoA = *mut SecPkgContext_ProtoInfoA;
+STRUCT!{struct SecPkgContext_ProtoInfoW {
+ sProtocolName: *mut SEC_WCHAR,
+ majorVersion: ::c_ulong,
+ minorVersion: ::c_ulong,
+}}
+pub type PSecPkgContext_ProtoInfoW = *mut SecPkgContext_ProtoInfoW;
+STRUCT!{struct SecPkgContext_PasswordExpiry {
+ tsPasswordExpires: TimeStamp,
+}}
+pub type PSecPkgContext_PasswordExpiry = *mut SecPkgContext_PasswordExpiry;
+STRUCT!{struct SecPkgContext_LogoffTime {
+ tsLogoffTime: TimeStamp,
+}}
+pub type PSecPkgContext_LogoffTime = *mut SecPkgContext_LogoffTime;
+STRUCT!{struct SecPkgContext_SessionKey {
+ SessionKeyLength: ::c_ulong,
+ SessionKey: *mut ::c_uchar,
+}}
+pub type PSecPkgContext_SessionKey = *mut SecPkgContext_SessionKey;
+STRUCT!{struct SecPkgContext_NegoKeys {
+ KeyType: ::c_ulong,
+ KeyLength: ::c_ushort,
+ KeyValue: *mut ::c_uchar,
+ VerifyKeyType: ::c_ulong,
+ VerifyKeyLength: ::c_ushort,
+ VerifyKeyValue: *mut ::c_uchar,
+}}
+pub type PSecPkgContext_NegoKeys = *mut SecPkgContext_NegoKeys;
+STRUCT!{struct SecPkgContext_PackageInfoW {
+ PackageInfo: PSecPkgInfoW,
+}}
+pub type PSecPkgContext_PackageInfoW = *mut SecPkgContext_PackageInfoW;
+STRUCT!{struct SecPkgContext_PackageInfoA {
+ PackageInfo: PSecPkgInfoA,
+}}
+pub type PSecPkgContext_PackageInfoA = *mut SecPkgContext_PackageInfoA;
+STRUCT!{struct SecPkgContext_UserFlags {
+ UserFlags: ::c_ulong,
+}}
+pub type PSecPkgContext_UserFlags = *mut SecPkgContext_UserFlags;
+STRUCT!{struct SecPkgContext_Flags {
+ Flags: ::c_ulong,
+}}
+pub type PSecPkgContext_Flags = *mut SecPkgContext_Flags;
+STRUCT!{struct SecPkgContext_NegotiationInfoA {
+ PackageInfo: PSecPkgInfoA,
+ NegotiationState: ::c_ulong,
+}}
+pub type PSecPkgContext_NegotiationInfoA = *mut SecPkgContext_NegotiationInfoA;
+STRUCT!{struct SecPkgContext_NegotiationInfoW {
+ PackageInfo: PSecPkgInfoW,
+ NegotiationState: ::c_ulong,
+}}
+pub type PSecPkgContext_NegotiationInfoW = *mut SecPkgContext_NegotiationInfoW;
+pub const SECPKG_NEGOTIATION_COMPLETE: ::c_ulong = 0;
+pub const SECPKG_NEGOTIATION_OPTIMISTIC: ::c_ulong = 1;
+pub const SECPKG_NEGOTIATION_IN_PROGRESS: ::c_ulong = 2;
+pub const SECPKG_NEGOTIATION_DIRECT: ::c_ulong = 3;
+pub const SECPKG_NEGOTIATION_TRY_MULTICRED: ::c_ulong = 4;
+STRUCT!{struct SecPkgContext_NativeNamesW {
+ sClientName: SEC_WCHAR,
+ sServerName: SEC_WCHAR,
+}}
+pub type PSecPkgContext_NativeNamesW = *mut SecPkgContext_NativeNamesW;
+STRUCT!{struct SecPkgContext_NativeNamesA {
+ sClientName: SEC_CHAR,
+ sServerName: SEC_CHAR,
+}}
+pub type PSecPkgContext_NativeNamesA = *mut SecPkgContext_NativeNamesA;
+STRUCT!{struct SecPkgContext_CredentialNameW {
+ CredentialType: ::c_ulong,
+ sCredentialName: *mut SEC_WCHAR,
+}}
+pub type PSecPkgContext_CredentialNameW = *mut SecPkgContext_CredentialNameW;
+STRUCT!{struct SecPkgContext_CredentialNameA {
+ CredentialType: ::c_ulong,
+ sCredentialName: *mut SEC_CHAR,
+}}
+pub type PSecPkgContext_CredentialNameA = *mut SecPkgContext_CredentialNameA;
+STRUCT!{struct SecPkgContext_AccessToken {
+ AccessToken: *mut ::c_void,
+}}
+pub type PSecPkgContext_AccessToken = *mut SecPkgContext_AccessToken;
+STRUCT!{struct SecPkgContext_TargetInformation {
+ MarshalledTargetInfoLength: ::c_ulong,
+ MarshalledTargetInfo: *mut ::c_uchar,
+}}
+pub type PSecPkgContext_TargetInformation = *mut SecPkgContext_TargetInformation;
+STRUCT!{struct SecPkgContext_AuthzID {
+ AuthzIDLength: ::c_ulong,
+ AuthzID: *mut ::c_char,
+}}
+pub type PSecPkgContext_AuthzID = *mut SecPkgContext_AuthzID;
+STRUCT!{struct SecPkgContext_Target {
+ TargetLength: ::c_ulong,
+ Target: *mut ::c_char,
+}}
+pub type PSecPkgContext_Target = *mut SecPkgContext_Target;
+STRUCT!{struct SecPkgContext_ClientSpecifiedTarget {
+ sTargetName: *mut SEC_WCHAR,
+}}
+pub type PSecPkgContext_ClientSpecifiedTarget = *mut SecPkgContext_ClientSpecifiedTarget;
+STRUCT!{struct SecPkgContext_Bindings {
+ BindingsLength: ::c_ulong,
+ Bindings: *mut SEC_CHANNEL_BINDINGS,
+}}
+pub type PSecPkgContext_Bindings = *mut SecPkgContext_Bindings;
+ENUM!{enum SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS {
+ SecApplicationProtocolNegotiationStatus_None,
+ SecApplicationProtocolNegotiationStatus_Success,
+ SecApplicationProtocolNegotiationStatus_SelectedClientOnly,
+}}
+pub type PSEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS =
+ *mut SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS;
+pub const MAX_PROTOCOL_ID_SIZE: usize = 0xff;
+STRUCT!{nodebug struct SecPkgContext_ApplicationProtocol {
+ ProtoNegoStatus: SEC_APPLICATION_PROTOCOL_NEGOTIATION_STATUS,
+ ProtoNegoExt: SEC_APPLICATION_PROTOCOL_NEGOTIATION_EXT,
+ ProtocolIdSize: ::c_uchar,
+ ProtocolId: [::c_uchar; MAX_PROTOCOL_ID_SIZE],
+}}
+pub type PSecPkgContext_ApplicationProtocol = *mut SecPkgContext_ApplicationProtocol;
+pub type SEC_GET_KEY_FN = Option<unsafe extern "system" fn(
+ Arg: *mut ::c_void, Principal: *mut ::c_void, KeyVer: ::c_ulong, Key: *mut *mut ::c_void,
+ Status: *mut SECURITY_STATUS,
+)>;
+pub const SECPKG_CONTEXT_EXPORT_RESET_NEW: ::c_ulong = 0x00000001;
+pub const SECPKG_CONTEXT_EXPORT_DELETE_OLD: ::c_ulong = 0x00000002;
+pub const SECPKG_CONTEXT_EXPORT_TO_KERNEL: ::c_ulong = 0x00000004;
+pub type ACQUIRE_CREDENTIALS_HANDLE_FN_W = Option<unsafe extern "system" fn(
+ *mut SEC_WCHAR, *mut SEC_WCHAR, ::c_ulong, *mut ::c_void, *mut ::c_void, SEC_GET_KEY_FN,
+ *mut ::c_void, PCredHandle, PTimeStamp,
+) -> SECURITY_STATUS>;
+pub type ACQUIRE_CREDENTIALS_HANDLE_FN_A = Option<unsafe extern "system" fn(
+ *mut SEC_CHAR, *mut SEC_CHAR, ::c_ulong, *mut ::c_void, *mut ::c_void, SEC_GET_KEY_FN,
+ *mut ::c_void, PCredHandle, PTimeStamp,
+) -> SECURITY_STATUS>;
+pub type FREE_CREDENTIALS_HANDLE_FN = Option<unsafe extern "system" fn(
+ PCredHandle,
+) -> SECURITY_STATUS>;
+pub type ADD_CREDENTIALS_FN_W = Option<unsafe extern "system" fn(
+ PCredHandle, *mut SEC_WCHAR, *mut SEC_WCHAR, ::c_ulong, *mut ::c_void, SEC_GET_KEY_FN,
+ *mut ::c_void, PTimeStamp,
+) -> SECURITY_STATUS>;
+pub type ADD_CREDENTIALS_FN_A = Option<unsafe extern "system" fn(
+ PCredHandle, *mut SEC_CHAR, *mut SEC_CHAR, ::c_ulong, *mut ::c_void, SEC_GET_KEY_FN,
+ *mut ::c_void, PTimeStamp,
+) -> SECURITY_STATUS>;
+pub type CHANGE_PASSWORD_FN_W = Option<unsafe extern "system" fn(
+ *mut SEC_WCHAR, *mut SEC_WCHAR, *mut SEC_WCHAR, *mut SEC_WCHAR, *mut SEC_WCHAR, ::BOOLEAN,
+ ::c_ulong, PSecBufferDesc,
+) -> SECURITY_STATUS>;
+pub type CHANGE_PASSWORD_FN_A = Option<unsafe extern "system" fn(
+ *mut SEC_CHAR, *mut SEC_CHAR, *mut SEC_CHAR, *mut SEC_CHAR, *mut SEC_CHAR, ::BOOLEAN,
+ ::c_ulong, PSecBufferDesc,
+) -> SECURITY_STATUS>;
+//1844
+ENUM!{enum SecDelegationType {
+ SecFull,
+ SecService,
+ SecTree,
+ SecDirectory,
+ SecObject,
+}}
+pub type PSecDelegationType = *mut SecDelegationType;
+STRUCT!{struct SEC_WINNT_AUTH_BYTE_VECTOR {
+ ByteArrayOffset: ::c_ulong,
+ ByteArrayLength: ::c_ushort,
+}}
+pub type PSEC_WINNT_AUTH_BYTE_VECTOR = *mut SEC_WINNT_AUTH_BYTE_VECTOR;
+STRUCT!{struct SEC_WINNT_AUTH_DATA {
+ CredType: ::GUID,
+ CredData: SEC_WINNT_AUTH_BYTE_VECTOR,
+}}
+pub type PSEC_WINNT_AUTH_DATA = *mut SEC_WINNT_AUTH_DATA;
+STRUCT!{struct SEC_WINNT_AUTH_PACKED_CREDENTIALS {
+ cbHeaderLength: ::c_ushort,
+ cbStructureLength: ::c_ushort,
+ AuthData: SEC_WINNT_AUTH_DATA,
+}}
+pub type PSEC_WINNT_AUTH_PACKED_CREDENTIALS = *mut SEC_WINNT_AUTH_PACKED_CREDENTIALS;
+DEFINE_GUID!(SEC_WINNT_AUTH_DATA_TYPE_PASSWORD, 0x28bfc32f, 0x10f6, 0x4738,
+ 0x98, 0xd1, 0x1a, 0xc0, 0x61, 0xdf, 0x71, 0x6a);
+DEFINE_GUID!(SEC_WINNT_AUTH_DATA_TYPE_CERT, 0x235f69ad, 0x73fb, 0x4dbc,
+ 0x82, 0x3, 0x6, 0x29, 0xe7, 0x39, 0x33, 0x9b);
+STRUCT!{struct SEC_WINNT_AUTH_DATA_PASSWORD {
+ UnicodePassword: SEC_WINNT_AUTH_BYTE_VECTOR,
+}}
+pub type PSEC_WINNT_AUTH_DATA_PASSWORD = *mut SEC_WINNT_AUTH_DATA_PASSWORD;
+DEFINE_GUID!(SEC_WINNT_AUTH_DATA_TYPE_CSP_DATA, 0x68fd9879, 0x79c, 0x4dfe,
+ 0x82, 0x81, 0x57, 0x8a, 0xad, 0xc1, 0xc1, 0x0);
+STRUCT!{struct SEC_WINNT_AUTH_CERTIFICATE_DATA {
+ cbHeaderLength: ::c_ushort,
+ cbStructureLength: ::c_ushort,
+ Certificate: SEC_WINNT_AUTH_BYTE_VECTOR,
+}}
+pub type PSEC_WINNT_AUTH_CERTIFICATE_DATA = *mut SEC_WINNT_AUTH_CERTIFICATE_DATA;
+STRUCT!{struct SEC_WINNT_CREDUI_CONTEXT_VECTOR {
+ CredUIContextArrayOffset: ::ULONG,
+ CredUIContextCount: ::USHORT,
+}}
+pub type PSEC_WINNT_CREDUI_CONTEXT_VECTOR = *mut SEC_WINNT_CREDUI_CONTEXT_VECTOR;
+STRUCT!{struct SEC_WINNT_AUTH_SHORT_VECTOR {
+ ShortArrayOffset: ::ULONG,
+ ShortArrayCount: ::USHORT,
+}}
+pub type PSEC_WINNT_AUTH_SHORT_VECTOR = *mut SEC_WINNT_AUTH_SHORT_VECTOR;
+STRUCT!{struct CREDUIWIN_MARSHALED_CONTEXT {
+ StructureType: ::GUID,
+ cbHeaderLength: ::USHORT,
+ LogonId: ::LUID,
+ MarshaledDataType: ::GUID,
+ MarshaledDataOffset: ::ULONG,
+ MarshaledDataLength: ::USHORT,
+}}
+pub type PCREDUIWIN_MARSHALED_CONTEXT = *mut CREDUIWIN_MARSHALED_CONTEXT;
+STRUCT!{struct SEC_WINNT_CREDUI_CONTEXT {
+ cbHeaderLength: ::USHORT,
+ CredUIContextHandle: ::HANDLE,
+ UIInfo: ::PCREDUI_INFOW,
+ dwAuthError: ::ULONG,
+ pInputAuthIdentity: PSEC_WINNT_AUTH_IDENTITY_OPAQUE,
+ TargetName: ::PUNICODE_STRING,
+}}
+pub type PSEC_WINNT_CREDUI_CONTEXT = *mut SEC_WINNT_CREDUI_CONTEXT;
+pub type PSEC_WINNT_AUTH_IDENTITY_OPAQUE = ::PVOID;
diff --git a/third_party/rust/winapi-0.2.8/src/strmif.rs b/third_party/rust/winapi-0.2.8/src/strmif.rs
new file mode 100644
index 0000000000..0edfe72c99
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/strmif.rs
@@ -0,0 +1,4 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub type REFERENCE_TIME = LONGLONG;
diff --git a/third_party/rust/winapi-0.2.8/src/subauth.rs b/third_party/rust/winapi-0.2.8/src/subauth.rs
new file mode 100644
index 0000000000..d84dc8cad2
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/subauth.rs
@@ -0,0 +1,198 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Types and macros for Subauthentication Packages.
+STRUCT!{struct UNICODE_STRING {
+ Length: ::USHORT,
+ MaximumLength: ::USHORT,
+ Buffer: ::PWSTR,
+}}
+pub type PUNICODE_STRING = *mut UNICODE_STRING;
+STRUCT!{struct STRING {
+ Length: ::USHORT,
+ MaximumLength: ::USHORT,
+ Buffer: ::PCHAR,
+}}
+pub type PSTRING = *mut STRING;
+STRUCT!{struct OLD_LARGE_INTEGER {
+ LowPart: ::ULONG,
+ HighPart: ::LONG,
+}}
+pub type POLD_LARGE_INTEGER = *mut OLD_LARGE_INTEGER;
+pub type SAM_HANDLE = ::PVOID;
+pub type PSAM_HANDLE = *mut ::PVOID;
+pub const USER_ACCOUNT_DISABLED: ::ULONG = 0x00000001;
+pub const USER_HOME_DIRECTORY_REQUIRED: ::ULONG = 0x00000002;
+pub const USER_PASSWORD_NOT_REQUIRED: ::ULONG = 0x00000004;
+pub const USER_TEMP_DUPLICATE_ACCOUNT: ::ULONG = 0x00000008;
+pub const USER_NORMAL_ACCOUNT: ::ULONG = 0x00000010;
+pub const USER_MNS_LOGON_ACCOUNT: ::ULONG = 0x00000020;
+pub const USER_INTERDOMAIN_TRUST_ACCOUNT: ::ULONG = 0x00000040;
+pub const USER_WORKSTATION_TRUST_ACCOUNT: ::ULONG = 0x00000080;
+pub const USER_SERVER_TRUST_ACCOUNT: ::ULONG = 0x00000100;
+pub const USER_DONT_EXPIRE_PASSWORD: ::ULONG = 0x00000200;
+pub const USER_ACCOUNT_AUTO_LOCKED: ::ULONG = 0x00000400;
+pub const USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED: ::ULONG = 0x00000800;
+pub const USER_SMARTCARD_REQUIRED: ::ULONG = 0x00001000;
+pub const USER_TRUSTED_FOR_DELEGATION: ::ULONG = 0x00002000;
+pub const USER_NOT_DELEGATED: ::ULONG = 0x00004000;
+pub const USER_USE_DES_KEY_ONLY: ::ULONG = 0x00008000;
+pub const USER_DONT_REQUIRE_PREAUTH: ::ULONG = 0x00010000;
+pub const USER_PASSWORD_EXPIRED: ::ULONG = 0x00020000;
+pub const USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION: ::ULONG = 0x00040000;
+pub const USER_NO_AUTH_DATA_REQUIRED: ::ULONG = 0x00080000;
+pub const USER_PARTIAL_SECRETS_ACCOUNT: ::ULONG = 0x00100000;
+pub const USER_USE_AES_KEYS: ::ULONG = 0x00200000;
+pub const NEXT_FREE_ACCOUNT_CONTROL_BIT: ::ULONG = USER_USE_AES_KEYS << 1;
+pub const USER_MACHINE_ACCOUNT_MASK: ::ULONG = USER_INTERDOMAIN_TRUST_ACCOUNT
+ | USER_WORKSTATION_TRUST_ACCOUNT | USER_SERVER_TRUST_ACCOUNT;
+pub const USER_ACCOUNT_TYPE_MASK: ::ULONG = USER_TEMP_DUPLICATE_ACCOUNT | USER_NORMAL_ACCOUNT
+ | USER_MACHINE_ACCOUNT_MASK;
+pub const USER_COMPUTED_ACCOUNT_CONTROL_BITS: ::ULONG = USER_ACCOUNT_AUTO_LOCKED
+| USER_PASSWORD_EXPIRED;
+pub const SAM_DAYS_PER_WEEK: ::USHORT = 7;
+pub const SAM_HOURS_PER_WEEK: ::USHORT = 24 * SAM_DAYS_PER_WEEK;
+pub const SAM_MINUTES_PER_WEEK: ::USHORT = 60 * SAM_HOURS_PER_WEEK;
+STRUCT!{struct LOGON_HOURS {
+ UnitsPerWeek: ::USHORT,
+ LogonHours: ::PUCHAR,
+}}
+pub type PLOGON_HOURS = *mut LOGON_HOURS;
+STRUCT!{struct SR_SECURITY_DESCRIPTOR {
+ Length: ::ULONG,
+ SecurityDescriptor: ::PUCHAR,
+}}
+pub type PSR_SECURITY_DESCRIPTOR = *mut SR_SECURITY_DESCRIPTOR;
+STRUCT!{struct USER_ALL_INFORMATION {
+ LastLogon: ::LARGE_INTEGER,
+ LastLogoff: ::LARGE_INTEGER,
+ PasswordLastSet: ::LARGE_INTEGER,
+ AccountExpires: ::LARGE_INTEGER,
+ PasswordCanChange: ::LARGE_INTEGER,
+ PasswordMustChange: ::LARGE_INTEGER,
+ UserName: UNICODE_STRING,
+ FullName: UNICODE_STRING,
+ HomeDirectory: UNICODE_STRING,
+ HomeDirectoryDrive: UNICODE_STRING,
+ ScriptPath: UNICODE_STRING,
+ ProfilePath: UNICODE_STRING,
+ AdminComment: UNICODE_STRING,
+ WorkStations: UNICODE_STRING,
+ UserComment: UNICODE_STRING,
+ Parameters: UNICODE_STRING,
+ LmPassword: UNICODE_STRING,
+ NtPassword: UNICODE_STRING,
+ PrivateData: UNICODE_STRING,
+ SecurityDescriptor: SR_SECURITY_DESCRIPTOR,
+ UserId: ::ULONG,
+ PrimaryGroupId: ::ULONG,
+ UserAccountControl: ::ULONG,
+ WhichFields: ::ULONG,
+ LogonHours: LOGON_HOURS,
+ BadPasswordCount: ::USHORT,
+ LogonCount: ::USHORT,
+ CountryCode: ::USHORT,
+ CodePage: ::USHORT,
+ LmPasswordPresent: ::BOOLEAN,
+ NtPasswordPresent: ::BOOLEAN,
+ PasswordExpired: ::BOOLEAN,
+ PrivateDataSensitive: ::BOOLEAN,
+}}
+pub type PUSER_ALL_INFORMATION = *mut USER_ALL_INFORMATION;
+pub const USER_ALL_PARAMETERS: ::ULONG = 0x00200000;
+pub const CLEAR_BLOCK_LENGTH: usize = 8;
+STRUCT!{struct CLEAR_BLOCK {
+ data: [::CHAR; CLEAR_BLOCK_LENGTH],
+}}
+pub type PCLEAR_BLOCK = *mut CLEAR_BLOCK;
+pub const CYPHER_BLOCK_LENGTH: usize = 8;
+STRUCT!{struct CYPHER_BLOCK {
+ data: [::CHAR; CYPHER_BLOCK_LENGTH],
+}}
+pub type PCYPHER_BLOCK = *mut CYPHER_BLOCK;
+STRUCT!{struct LM_OWF_PASSWORD {
+ data: [CYPHER_BLOCK; 2],
+}}
+pub type PLM_OWF_PASSWORD = *mut LM_OWF_PASSWORD;
+pub type LM_CHALLENGE = CLEAR_BLOCK;
+pub type PLM_CHALLENGE = *mut LM_CHALLENGE;
+pub type NT_OWF_PASSWORD = LM_OWF_PASSWORD;
+pub type PNT_OWF_PASSWORD = *mut NT_OWF_PASSWORD;
+pub type NT_CHALLENGE = LM_CHALLENGE;
+pub type PNT_CHALLENGE = *mut NT_CHALLENGE;
+pub const USER_SESSION_KEY_LENGTH: usize = CYPHER_BLOCK_LENGTH * 2;
+STRUCT!{struct USER_SESSION_KEY {
+ data: [CYPHER_BLOCK; 2],
+}}
+pub type PUSER_SESSION_KEY = *mut USER_SESSION_KEY;
+ENUM!{enum NETLOGON_LOGON_INFO_CLASS {
+ NetlogonInteractiveInformation = 1,
+ NetlogonNetworkInformation,
+ NetlogonServiceInformation,
+ NetlogonGenericInformation,
+ NetlogonInteractiveTransitiveInformation,
+ NetlogonNetworkTransitiveInformation,
+ NetlogonServiceTransitiveInformation,
+}}
+STRUCT!{struct NETLOGON_LOGON_IDENTITY_INFO {
+ LogonDomainName: UNICODE_STRING,
+ ParameterControl: ::ULONG,
+ LogonId: OLD_LARGE_INTEGER,
+ UserName: UNICODE_STRING,
+ Workstation: UNICODE_STRING,
+}}
+pub type PNETLOGON_LOGON_IDENTITY_INFO = *mut NETLOGON_LOGON_IDENTITY_INFO;
+STRUCT!{struct NETLOGON_INTERACTIVE_INFO {
+ Identity: NETLOGON_LOGON_IDENTITY_INFO,
+ LmOwfPassword: LM_OWF_PASSWORD,
+ NtOwfPassword: NT_OWF_PASSWORD,
+}}
+pub type PNETLOGON_INTERACTIVE_INFO = *mut NETLOGON_INTERACTIVE_INFO;
+STRUCT!{struct NETLOGON_SERVICE_INFO {
+ Identity: NETLOGON_LOGON_IDENTITY_INFO,
+ LmOwfPassword: LM_OWF_PASSWORD,
+ NtOwfPassword: NT_OWF_PASSWORD,
+}}
+pub type PNETLOGON_SERVICE_INFO = *mut NETLOGON_SERVICE_INFO;
+STRUCT!{struct NETLOGON_NETWORK_INFO {
+ Identity: NETLOGON_LOGON_IDENTITY_INFO,
+ LmChallenge: LM_CHALLENGE,
+ NtChallengeResponse: STRING,
+ LmChallengeResponse: STRING,
+}}
+pub type PNETLOGON_NETWORK_INFO = *mut NETLOGON_NETWORK_INFO;
+STRUCT!{struct NETLOGON_GENERIC_INFO {
+ Identity: NETLOGON_LOGON_IDENTITY_INFO,
+ PackageName: UNICODE_STRING,
+ DataLength: ::ULONG,
+ LogonData: ::PUCHAR,
+}}
+pub type PNETLOGON_GENERIC_INFO = *mut NETLOGON_GENERIC_INFO;
+pub const MSV1_0_PASSTHRU: ::ULONG = 0x01;
+pub const MSV1_0_GUEST_LOGON: ::ULONG = 0x02;
+STRUCT!{struct MSV1_0_VALIDATION_INFO {
+ LogoffTime: ::LARGE_INTEGER,
+ KickoffTime: ::LARGE_INTEGER,
+ LogonServer: UNICODE_STRING,
+ LogonDomainName: UNICODE_STRING,
+ SessionKey: USER_SESSION_KEY,
+ Authoritative: ::BOOLEAN,
+ UserFlags: ::ULONG,
+ WhichFields: ::ULONG,
+ UserId: ::ULONG,
+}}
+pub type PMSV1_0_VALIDATION_INFO = *mut MSV1_0_VALIDATION_INFO;
+pub const MSV1_0_VALIDATION_LOGOFF_TIME: ::ULONG = 0x00000001;
+pub const MSV1_0_VALIDATION_KICKOFF_TIME: ::ULONG = 0x00000002;
+pub const MSV1_0_VALIDATION_LOGON_SERVER: ::ULONG = 0x00000004;
+pub const MSV1_0_VALIDATION_LOGON_DOMAIN: ::ULONG = 0x00000008;
+pub const MSV1_0_VALIDATION_SESSION_KEY: ::ULONG = 0x00000010;
+pub const MSV1_0_VALIDATION_USER_FLAGS: ::ULONG = 0x00000020;
+pub const MSV1_0_VALIDATION_USER_ID: ::ULONG = 0x00000040;
+pub const MSV1_0_SUBAUTH_ACCOUNT_DISABLED: ::ULONG = 0x00000001;
+pub const MSV1_0_SUBAUTH_PASSWORD: ::ULONG = 0x00000002;
+pub const MSV1_0_SUBAUTH_WORKSTATIONS: ::ULONG = 0x00000004;
+pub const MSV1_0_SUBAUTH_LOGON_HOURS: ::ULONG = 0x00000008;
+pub const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY: ::ULONG = 0x00000010;
+pub const MSV1_0_SUBAUTH_PASSWORD_EXPIRY: ::ULONG = 0x00000020;
+pub const MSV1_0_SUBAUTH_ACCOUNT_TYPE: ::ULONG = 0x00000040;
+pub const MSV1_0_SUBAUTH_LOCKOUT: ::ULONG = 0x00000080;
diff --git a/third_party/rust/winapi-0.2.8/src/synchapi.rs b/third_party/rust/winapi-0.2.8/src/synchapi.rs
new file mode 100644
index 0000000000..2eb9d1af25
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/synchapi.rs
@@ -0,0 +1,14 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-synch-l1
+pub type SRWLOCK = ::RTL_SRWLOCK;
+pub type PSRWLOCK = *mut ::RTL_SRWLOCK;
+pub type SYNCHRONIZATION_BARRIER = ::RTL_BARRIER;
+pub type PSYNCHRONIZATION_BARRIER = ::PRTL_BARRIER;
+pub type LPSYNCHRONIZATION_BARRIER = ::PRTL_BARRIER;
+pub type PINIT_ONCE_FN = Option<unsafe extern "system" fn(
+ InitOnce: ::PINIT_ONCE, Parameter: ::PVOID, Context: *mut ::PVOID,
+) -> ::BOOL>;
+pub type PTIMERAPCROUTINE = Option<unsafe extern "system" fn(
+ lpArgToCompletionRoutine: ::LPVOID, dwTimerLowValue: ::DWORD, dwTimerHighValue: ::DWORD,
+)>;
diff --git a/third_party/rust/winapi-0.2.8/src/sysinfoapi.rs b/third_party/rust/winapi-0.2.8/src/sysinfoapi.rs
new file mode 100644
index 0000000000..95c38c64a8
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/sysinfoapi.rs
@@ -0,0 +1,46 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-sysinfo-l1.
+STRUCT!{struct SYSTEM_INFO {
+ wProcessorArchitecture: ::WORD,
+ wReserved: ::WORD,
+ dwPageSize: ::DWORD,
+ lpMinimumApplicationAddress: ::LPVOID,
+ lpMaximumApplicationAddress: ::LPVOID,
+ dwActiveProcessorMask: ::DWORD_PTR,
+ dwNumberOfProcessors: ::DWORD,
+ dwProcessorType: ::DWORD,
+ dwAllocationGranularity: ::DWORD,
+ wProcessorLevel: ::WORD,
+ wProcessorRevision: ::WORD,
+}}
+UNION!(SYSTEM_INFO, wProcessorArchitecture, dwOemId, dwOemId_mut, ::DWORD);
+pub type LPSYSTEM_INFO = *mut SYSTEM_INFO;
+STRUCT!{struct MEMORYSTATUSEX {
+ dwLength: ::DWORD,
+ dwMemoryLoad: ::DWORD,
+ ullTotalPhys: ::DWORDLONG,
+ ullAvailPhys: ::DWORDLONG,
+ ullTotalPageFile: ::DWORDLONG,
+ ullAvailPageFile: ::DWORDLONG,
+ ullTotalVirtual: ::DWORDLONG,
+ ullAvailVirtual: ::DWORDLONG,
+ ullAvailExtendedVirtual: ::DWORDLONG,
+}}
+pub type LPMEMORYSTATUSEX = *mut MEMORYSTATUSEX;
+ENUM!{enum COMPUTER_NAME_FORMAT {
+ ComputerNameNetBIOS,
+ ComputerNameDnsHostname,
+ ComputerNameDnsDomain,
+ ComputerNameDnsFullyQualified,
+ ComputerNamePhysicalNetBIOS,
+ ComputerNamePhysicalDnsHostname,
+ ComputerNamePhysicalDnsDomain,
+ ComputerNamePhysicalDnsFullyQualified,
+ ComputerNameMax,
+}}
+pub type INIT_ONCE = ::RTL_RUN_ONCE;
+pub type PINIT_ONCE = ::PRTL_RUN_ONCE;
+pub type LPINIT_ONCE = ::PRTL_RUN_ONCE;
+pub type CONDITION_VARIABLE = ::RTL_CONDITION_VARIABLE;
+pub type PCONDITION_VARIABLE = *mut CONDITION_VARIABLE;
diff --git a/third_party/rust/winapi-0.2.8/src/threadpoolapi.rs b/third_party/rust/winapi-0.2.8/src/threadpoolapi.rs
new file mode 100644
index 0000000000..ec21aa05bc
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/threadpoolapi.rs
@@ -0,0 +1,7 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-threadpool-l1.
+pub type PTP_WIN32_IO_CALLBACK = Option<unsafe extern "system" fn(
+ Instance: ::PTP_CALLBACK_INSTANCE, Context: ::PVOID, Overlapped: ::PVOID, IoResult: ::ULONG,
+ NumberOfBytesTransferred: ::ULONG_PTR, Io: ::PTP_IO,
+)>;
diff --git a/third_party/rust/winapi-0.2.8/src/timezoneapi.rs b/third_party/rust/winapi-0.2.8/src/timezoneapi.rs
new file mode 100644
index 0000000000..3c84b209fc
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/timezoneapi.rs
@@ -0,0 +1,27 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! ApiSet Contract for api-ms-win-core-timezone-l1
+pub const TIME_ZONE_ID_INVALID: ::DWORD = 0xFFFFFFFF;
+STRUCT!{struct TIME_ZONE_INFORMATION {
+ Bias: ::LONG,
+ StandardName: [::WCHAR; 32],
+ StandardDate: ::SYSTEMTIME,
+ StandardBias: ::LONG,
+ DaylightName: [::WCHAR; 32],
+ DaylightDate: ::SYSTEMTIME,
+ DaylightBias: ::LONG,
+}}
+pub type PTIME_ZONE_INFORMATION = *mut TIME_ZONE_INFORMATION;
+pub type LPTIME_ZONE_INFORMATION = *mut TIME_ZONE_INFORMATION;
+STRUCT!{nodebug struct DYNAMIC_TIME_ZONE_INFORMATION {
+ Bias: ::LONG,
+ StandardName: [::WCHAR; 32],
+ StandardDate: ::SYSTEMTIME,
+ StandardBias: ::LONG,
+ DaylightName: [::WCHAR; 32],
+ DaylightDate: ::SYSTEMTIME,
+ DaylightBias: ::LONG,
+ TimeZoneKeyName: [::WCHAR; 128],
+ DynamicDaylightTimeDisabled: ::BOOLEAN,
+}}
+pub type PDYNAMIC_TIME_ZONE_INFORMATION = *mut DYNAMIC_TIME_ZONE_INFORMATION;
diff --git a/third_party/rust/winapi-0.2.8/src/tlhelp32.rs b/third_party/rust/winapi-0.2.8/src/tlhelp32.rs
new file mode 100644
index 0000000000..2e809b25d9
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/tlhelp32.rs
@@ -0,0 +1,104 @@
+// Copyright © 2015, Gigih Aji Ibrahim
+// Licensed under the MIT License <LICENSE.md>
+pub const MAX_MODULE_NAME32: usize = 255;
+pub const TH32CS_SNAPHEAPLIST: ::DWORD = 0x00000001;
+pub const TH32CS_SNAPPROCESS: ::DWORD = 0x00000002;
+pub const TH32CS_SNAPTHREAD: ::DWORD = 0x00000004;
+pub const TH32CS_SNAPMODULE: ::DWORD = 0x00000008;
+pub const TH32CS_SNAPMODULE32: ::DWORD = 0x00000010;
+pub const TH32CS_SNAPALL: ::DWORD =
+ (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE);
+pub const TH32CS_INHERIT: ::DWORD = 0x80000000;
+STRUCT!{struct HEAPLIST32 {
+ dwSize: ::SIZE_T,
+ th32ProcessID: ::DWORD,
+ th32HeapID: :: ULONG_PTR,
+ dwFlags: ::DWORD,
+}}
+pub type PHEAPLIST32 = *mut HEAPLIST32;
+pub type LPHEAPLIST32 = *mut HEAPLIST32;
+pub const HF32_DEFAULT: ::DWORD = 1;
+pub const HF32_SHARED: ::DWORD = 2;
+STRUCT!{struct HEAPENTRY32 {
+ dwSize: ::SIZE_T,
+ hHandle: ::HANDLE,
+ dwAddress: ::ULONG_PTR,
+ dwBlockSize: ::SIZE_T,
+ dwFlags: ::DWORD,
+ dwLockCount: ::DWORD,
+ dwResvd: ::DWORD,
+ th32ProcessID: ::DWORD,
+ th32HeapID: ::ULONG_PTR,
+}}
+pub type PHEAPENTRY32 = *mut HEAPENTRY32;
+pub type LPHEAPENTRY32 = *mut HEAPENTRY32;
+pub const LF32_FIXED: ::DWORD = 0x00000001;
+pub const LF32_FREE: ::DWORD = 0x00000002;
+pub const LF32_MOVEABLE: ::DWORD = 0x00000004;
+STRUCT!{nodebug struct PROCESSENTRY32W {
+ dwSize: ::DWORD,
+ cntUsage: ::DWORD,
+ th32ProcessID: ::DWORD,
+ th32DefaultHeapID: ::ULONG_PTR,
+ th32ModuleID: ::DWORD,
+ cntThreads: ::DWORD,
+ th32ParentProcessID: ::DWORD,
+ pcPriClassBase: ::LONG,
+ dwFlags: ::DWORD,
+ szExeFile: [::WCHAR; ::MAX_PATH],
+}}
+pub type PPROCESSENTRY32W = *mut PROCESSENTRY32W;
+pub type LPPROCESSENTRY32W = *mut PROCESSENTRY32W;
+STRUCT!{nodebug struct PROCESSENTRY32 {
+ dwSize: ::DWORD,
+ cntUsage: ::DWORD,
+ th32ProcessID: ::DWORD,
+ th32DefaultHeapID: ::ULONG_PTR,
+ th32ModuleID: ::DWORD,
+ cntThreads: ::DWORD,
+ th32ParentProcessID: ::DWORD,
+ pcPriClassBase: ::LONG,
+ dwFlags: ::DWORD,
+ szExeFile: [::CHAR; ::MAX_PATH],
+}}
+pub type PPROCESSENTRY32 = *mut PROCESSENTRY32;
+pub type LPPROCESSENTRY32 = *mut PROCESSENTRY32;
+STRUCT!{struct THREADENTRY32 {
+ dwSize: ::DWORD,
+ cntUsage: ::DWORD,
+ th32ThreadID: ::DWORD,
+ th32OwnerProcessID: ::DWORD,
+ tpBasePri: ::LONG,
+ tpDeltaPri: ::LONG,
+ dwFlags: ::DWORD,
+}}
+pub type PTHREADENTRY32 = *mut THREADENTRY32;
+pub type LPTHREADENTRY32 = *mut THREADENTRY32;
+STRUCT!{nodebug struct MODULEENTRY32W {
+ dwSize: ::DWORD,
+ th32ModuleID: ::DWORD,
+ th32ProcessID: ::DWORD,
+ GlblcntUsage: ::DWORD,
+ ProccntUsage: ::DWORD,
+ modBaseAddr: *mut ::BYTE,
+ modBaseSize: ::DWORD,
+ hModule: ::HMODULE,
+ szModule: [::WCHAR; ::MAX_MODULE_NAME32 + 1],
+ szExePath: [::WCHAR; ::MAX_PATH],
+}}
+pub type PMODULEENTRY32W = *mut MODULEENTRY32W;
+pub type LPMODULEENTRY32W = *mut MODULEENTRY32W;
+STRUCT!{nodebug struct MODULEENTRY32 {
+ dwSize: ::DWORD,
+ th32ModuleID: ::DWORD,
+ th32ProcessID: ::DWORD,
+ GlblcntUsage: ::DWORD,
+ ProccntUsage: ::DWORD,
+ modBaseAddr: *mut ::BYTE,
+ modBaseSize: ::DWORD,
+ hModule: ::HMODULE,
+ szModule: [::CHAR; ::MAX_MODULE_NAME32 + 1],
+ szExePath: [::CHAR; ::MAX_PATH],
+}}
+pub type PMODULEENTRY32 = *mut MODULEENTRY32;
+pub type LPMODULEENTRY32 = *mut MODULEENTRY32;
diff --git a/third_party/rust/winapi-0.2.8/src/unknwnbase.rs b/third_party/rust/winapi-0.2.8/src/unknwnbase.rs
new file mode 100644
index 0000000000..2112561adb
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/unknwnbase.rs
@@ -0,0 +1,29 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! this ALWAYS GENERATED file contains the definitions for the interfaces
+RIDL!(
+interface IUnknown(IUnknownVtbl) {
+ fn QueryInterface(&mut self, riid: ::REFIID, ppvObject: *mut *mut ::c_void) -> ::HRESULT,
+ fn AddRef(&mut self) -> ::ULONG,
+ fn Release(&mut self) -> ::ULONG
+}
+);
+pub type LPUNKNOWN = *mut IUnknown;
+RIDL!(
+interface AsyncIUnknown(AsyncIUnknownVtbl): IUnknown(IUnknownVtbl) {
+ fn Begin_QueryInterface(&mut self, riid: ::REFIID) -> ::HRESULT,
+ fn Finish_QueryInterface(&mut self, ppvObject: *mut *mut ::c_void) -> ::HRESULT,
+ fn Begin_AddRef(&mut self) -> ::HRESULT,
+ fn Finish_AddRef(&mut self) -> ::ULONG,
+ fn Begin_Release(&mut self) -> ::HRESULT,
+ fn Finish_Release(&mut self) -> ::ULONG
+}
+);
+RIDL!(
+interface IClassFactory(IClassFactoryVtbl): IUnknown(IUnknownVtbl) {
+ fn CreateInstance(
+ &mut self, pUnkOuter: *mut IUnknown, riid: ::REFIID, ppvObject: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn LockServer(&mut self, fLock: ::BOOL) -> ::HRESULT
+}
+);
diff --git a/third_party/rust/winapi-0.2.8/src/urlhist.rs b/third_party/rust/winapi-0.2.8/src/urlhist.rs
new file mode 100644
index 0000000000..b6fc2db155
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/urlhist.rs
@@ -0,0 +1,56 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Url History Interfaces
+pub const STATURL_QUERYFLAG_ISCACHED: ::DWORD = 0x00010000;
+pub const STATURL_QUERYFLAG_NOURL: ::DWORD = 0x00020000;
+pub const STATURL_QUERYFLAG_NOTITLE: ::DWORD = 0x00040000;
+pub const STATURL_QUERYFLAG_TOPLEVEL: ::DWORD = 0x00080000;
+pub const STATURLFLAG_ISCACHED: ::DWORD = 0x00000001;
+pub const STATURLFLAG_ISTOPLEVEL: ::DWORD = 0x00000002;
+ENUM!{enum ADDURL_FLAG {
+ ADDURL_FIRST = 0,
+ ADDURL_ADDTOHISTORYANDCACHE = 0,
+ ADDURL_ADDTOCACHE = 1,
+ ADDURL_Max = 2147483647,
+}}
+pub type LPENUMSTATURL = *mut IEnumSTATURL;
+STRUCT!{struct STATURL {
+ cbSize: ::DWORD,
+ pwcsUrl: ::LPWSTR,
+ pwcsTitle: ::LPWSTR,
+ ftLastVisited: ::FILETIME,
+ ftLastUpdated: ::FILETIME,
+ ftExpires: ::FILETIME,
+ dwFlags: ::DWORD,
+}}
+pub type LPSTATURL = *mut STATURL;
+RIDL!{interface IEnumSTATURL(IEnumSTATURLVtbl): IUnknown(IUnknownVtbl) {
+ fn Next(&mut self, celt: ::ULONG, rgelt: LPSTATURL, pceltFetched: *mut ::ULONG) -> ::HRESULT,
+ fn Skip(&mut self, celt: ::ULONG) -> ::HRESULT,
+ fn Reset(&mut self) -> ::HRESULT,
+ fn Clone(&mut self, ppenum: *mut *mut ::IEnumSTATURL) -> ::HRESULT,
+ fn SetFilter(&mut self, poszFilter: ::LPCOLESTR, dwFlags: ::DWORD) -> ::HRESULT
+}}
+pub type LPURLHISTORYSTG = *mut IUrlHistoryStg;
+RIDL!{interface IUrlHistoryStg(IUrlHistoryStgVtbl): IUnknown(IUnknownVtbl) {
+ fn AddUrl(&mut self, pocsUrl: ::LPCOLESTR) -> ::HRESULT,
+ fn DeleteUrl(&mut self, pocsUrl: ::LPCOLESTR, dwFlags: ::DWORD) -> ::HRESULT,
+ fn QueryUrl(
+ &mut self, pocsUrl: ::LPCOLESTR, dwFlags: ::DWORD, lpSTATURL: LPSTATURL
+ ) -> ::HRESULT,
+ fn BindToObject(
+ &mut self, pocsUrl: ::LPCOLESTR, riid: ::REFIID, ppvOut: *mut *mut ::c_void
+ ) -> ::HRESULT,
+ fn EnumUrls(&mut self, ppEnum: *mut *mut ::IEnumSTATURL) -> ::HRESULT
+}}
+pub type LPURLHISTORYSTG2 = *mut IUrlHistoryStg2;
+RIDL!{interface IUrlHistoryStg2(IUrlHistoryStg2Vtbl): IUrlHistoryStg(IUrlHistoryStgVtbl) {
+ fn AddUrlAndNotify(
+ &mut self, pocsUrl: ::LPCOLESTR, pocsTitle: ::LPCOLESTR, dwFlags: ::DWORD,
+ fWriteHistory: ::BOOL, poctNotify: *mut ::IOleCommandTarget, punkISFolder: *mut ::IUnknown
+ ) -> ::HRESULT,
+ fn ClearHistory(&mut self) -> ::HRESULT
+}}
+pub type LPURLHISTORYNOTIFY = *mut IUrlHistoryNotify;
+RIDL!{interface IUrlHistoryNotify(IUrlHistoryNotifyVtbl):
+ IOleCommandTarget(IOleCommandTargetVtbl) {}}
diff --git a/third_party/rust/winapi-0.2.8/src/urlmon.rs b/third_party/rust/winapi-0.2.8/src/urlmon.rs
new file mode 100644
index 0000000000..e0a5e93562
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/urlmon.rs
@@ -0,0 +1,6 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of Urlmon.h
+// FIXME: Implement these interfaces
+#[repr(C)] #[derive(Clone, Copy, Debug)]
+pub struct IInternetSecurityManager;
diff --git a/third_party/rust/winapi-0.2.8/src/usb.rs b/third_party/rust/winapi-0.2.8/src/usb.rs
new file mode 100644
index 0000000000..5a5904ec5e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/usb.rs
@@ -0,0 +1,18 @@
+// Copyright © 2016, bitbegin
+// Licensed under the MIT License <LICENSE.md>
+//! USB Definitions.
+ENUM!{enum USBD_PIPE_TYPE {
+ UsbdPipeTypeControl,
+ UsbdPipeTypeIsochronous,
+ UsbdPipeTypeBulk,
+ UsbdPipeTypeInterrupt,
+}}
+
+pub type USBD_STATUS = ::LONG;
+
+STRUCT!{struct USBD_ISO_PACKET_DESCRIPTOR {
+ Offset: ::ULONG,
+ Length: ::ULONG,
+ Status: ::USBD_STATUS,
+}}
+pub type PUSBD_ISO_PACKET_DESCRIPTOR = *mut USBD_ISO_PACKET_DESCRIPTOR;
diff --git a/third_party/rust/winapi-0.2.8/src/usbspec.rs b/third_party/rust/winapi-0.2.8/src/usbspec.rs
new file mode 100644
index 0000000000..6b9605ba47
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/usbspec.rs
@@ -0,0 +1,41 @@
+// Copyright © 2016, bitbegin
+// Licensed under the MIT License <LICENSE.md>
+//! USB Spec Definitions.
+ENUM!{enum USB_DEVICE_SPEED {
+ UsbLowSpeed = 0,
+ UsbFullSpeed,
+ UsbHighSpeed,
+ UsbSuperSpeed,
+}}
+ENUM!{enum USB_DEVICE_TYPE {
+ Usb11Device = 0,
+ Usb20Device,
+}}
+STRUCT!{struct BM_REQUEST_TYPE {
+ _BM: ::UCHAR,
+ B: ::UCHAR,
+}}
+BITFIELD!{BM_REQUEST_TYPE _BM: ::UINT8 [
+ Recipient set_Recipient[0..2],
+ Reserved set_Reserved[2..5],
+ Type set_Type[5..7],
+ Dir set_Dir[7..8],
+]}
+pub type PBM_REQUEST_TYPE = *mut BM_REQUEST_TYPE;
+
+STRUCT!{#[repr(packed)] struct USB_CONFIGURATION_DESCRIPTOR {
+ bLength: ::UCHAR,
+ bDescriptorType: ::UCHAR,
+ wTotalLength: ::USHORT,
+ bNumInterfaces: ::UCHAR,
+ bConfigurationValue: ::UCHAR,
+ iConfiguration: ::UCHAR,
+ bmAttributes: ::UCHAR,
+ MaxPower: ::UCHAR,
+}}
+pub type PUSB_CONFIGURATION_DESCRIPTOR = *mut USB_CONFIGURATION_DESCRIPTOR;
+#[test]
+fn test_USB_CONFIGURATION_DESCRIPTOR_size() {
+ use std::mem::size_of;
+ assert_eq!(size_of::<USB_CONFIGURATION_DESCRIPTOR>(), 9)
+}
diff --git a/third_party/rust/winapi-0.2.8/src/usp10.rs b/third_party/rust/winapi-0.2.8/src/usp10.rs
new file mode 100644
index 0000000000..6c7b42bcd3
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/usp10.rs
@@ -0,0 +1,201 @@
+// Copyright © 2015, Jordan Miner
+// Licensed under the MIT License <LICENSE.md>
+//! Uniscribe structure declarations and constant definitions
+pub const SCRIPT_UNDEFINED: ::WORD = 0;
+pub const USP_E_SCRIPT_NOT_IN_FONT: ::HRESULT = MAKE_HRESULT!(
+ ::SEVERITY_ERROR, ::FACILITY_ITF, 0x200
+);
+DECLARE_HANDLE!(SCRIPT_CACHE, SCRIPT_CACHE__);
+STRUCT!{struct SCRIPT_CONTROL {
+ bit_fields: ::DWORD,
+}}
+BITFIELD!(SCRIPT_CONTROL bit_fields: ::DWORD [
+ uDefaultLanguage set_uDefaultLanguage[0..16],
+ fContextDigits set_fContextDigits[16..17],
+ fInvertPreBoundDir set_fInvertPreBoundDir[17..18],
+ fInvertPostBoundDir set_fInvertPostBoundDir[18..19],
+ fLinkStringBefore set_fLinkStringBefore[19..20],
+ fLinkStringAfter set_fLinkStringAfter[20..21],
+ fNeutralOverride set_fNeutralOverride[21..22],
+ fNumericOverride set_fNumericOverride[22..23],
+ fLegacyBidiClass set_fLegacyBidiClass[23..24],
+ fMergeNeutralItems set_fMergeNeutralItems[24..25],
+ fReserved set_fReserved[25..32],
+]);
+STRUCT!{struct SCRIPT_STATE {
+ bit_fields: ::WORD,
+}}
+BITFIELD!(SCRIPT_STATE bit_fields: ::WORD [
+ uBidiLevel set_uBidiLevel[0..5],
+ fOverrideDirection set_fOverrideDirection[5..6],
+ fInhibitSymSwap set_fInhibitSymSwap[6..7],
+ fCharShape set_fCharShape[7..8],
+ fDigitSubstitute set_fDigitSubstitute[8..9],
+ fInhibitLigate set_fInhibitLigate[9..10],
+ fDisplayZWG set_fDisplayZWG[10..11],
+ fArabicNumContext set_fArabicNumContext[11..12],
+ fGcpClusters set_fGcpClusters[12..13],
+ fReserved set_fReserved[13..14],
+ fEngineReserved set_fEngineReserved[14..16],
+]);
+STRUCT!{struct SCRIPT_ANALYSIS {
+ bit_fields: ::WORD,
+ s: SCRIPT_STATE,
+}}
+BITFIELD!(SCRIPT_ANALYSIS bit_fields: ::WORD [
+ eScript set_eScript[0..10],
+ fRTL set_fRTL[10..11],
+ fLayoutRTL set_fLayoutRTL[11..12],
+ fLinkBefore set_fLinkBefore[12..13],
+ fLinkAfter set_fLinkAfter[13..14],
+ fLogicalOrder set_fLogicalOrder[14..15],
+ fNoGlyphIndex set_fNoGlyphIndex[15..16],
+]);
+STRUCT!{struct SCRIPT_ITEM {
+ iCharPos: ::c_int,
+ a: SCRIPT_ANALYSIS,
+}}
+//490
+pub const SCRIPT_JUSTIFY_NONE: ::WORD = 0;
+pub const SCRIPT_JUSTIFY_ARABIC_BLANK: ::WORD = 1;
+pub const SCRIPT_JUSTIFY_CHARACTER: ::WORD = 2;
+pub const SCRIPT_JUSTIFY_RESERVED1: ::WORD = 3;
+pub const SCRIPT_JUSTIFY_BLANK: ::WORD = 4;
+pub const SCRIPT_JUSTIFY_RESERVED2: ::WORD = 5;
+pub const SCRIPT_JUSTIFY_RESERVED3: ::WORD = 6;
+pub const SCRIPT_JUSTIFY_ARABIC_NORMAL: ::WORD = 7;
+pub const SCRIPT_JUSTIFY_ARABIC_KASHIDA: ::WORD = 8;
+pub const SCRIPT_JUSTIFY_ARABIC_ALEF: ::WORD = 9;
+pub const SCRIPT_JUSTIFY_ARABIC_HA: ::WORD = 10;
+pub const SCRIPT_JUSTIFY_ARABIC_RA: ::WORD = 11;
+pub const SCRIPT_JUSTIFY_ARABIC_BA: ::WORD = 12;
+pub const SCRIPT_JUSTIFY_ARABIC_BARA: ::WORD = 13;
+pub const SCRIPT_JUSTIFY_ARABIC_SEEN: ::WORD = 14;
+pub const SCRIPT_JUSTIFY_ARABIC_SEEN_M: ::WORD = 15;
+STRUCT!{struct SCRIPT_VISATTR {
+ bit_fields: ::WORD,
+}}
+BITFIELD!(SCRIPT_VISATTR bit_fields: ::WORD [
+ uJustification set_uJustification[0..4],
+ fClusterStart set_fClusterStart[4..5],
+ fDiacritic set_fDiacritic[5..6],
+ fZeroWidth set_fZeroWidth[6..7],
+ fReserved set_fReserved[7..8],
+ fShapeReserved set_fShapeReserved[8..16],
+]);
+STRUCT!{struct GOFFSET {
+ du: ::LONG,
+ dv: ::LONG,
+}}
+STRUCT!{struct SCRIPT_LOGATTR {
+ bit_fields: ::BYTE,
+}}
+BITFIELD!(SCRIPT_LOGATTR bit_fields: ::BYTE [
+ fSoftBreak set_fSoftBreak[0..1],
+ fWhiteSpace set_fWhiteSpace[1..2],
+ fCharStop set_fCharStop[2..3],
+ fWordStop set_fWordStop[3..4],
+ fInvalid set_fInvalid[4..5],
+ fReserved set_fReserved[5..8],
+]);
+pub const SGCM_RTL: ::DWORD = 0x00000001;
+STRUCT!{struct SCRIPT_PROPERTIES {
+ bit_fields1: ::DWORD,
+ bit_fields2: ::DWORD,
+}}
+BITFIELD!(SCRIPT_PROPERTIES bit_fields1: ::DWORD [
+ langid set_langid[0..16],
+ fNumeric set_fNumeric[16..17],
+ fComplex set_fComplex[17..18],
+ fNeedsWordBreaking set_fNeedsWordBreaking[18..19],
+ fNeedsCaretInfo set_fNeedsCaretInfo[19..20],
+ bCharSet set_bCharSet[20..28],
+ fControl set_fControl[28..29],
+ fPrivateUseArea set_fPrivateUseArea[29..30],
+ fNeedsCharacterJustify set_fNeedsCharacterJustify[30..31],
+ fInvalidGlyph set_fInvalidGlyph[31..32],
+]);
+BITFIELD!(SCRIPT_PROPERTIES bit_fields2: ::DWORD [
+ fInvalidLogAttr set_fInvalidLogAttr[0..1],
+ fCDM set_fCDM[1..2],
+ fAmbiguousCharSet set_fAmbiguousCharSet[2..3],
+ fClusterSizeVaries set_fClusterSizeVaries[3..4],
+ fRejectInvalid set_fRejectInvalid[4..5],
+]);
+STRUCT!{struct SCRIPT_FONTPROPERTIES {
+ cBytes: ::c_int,
+ wgBlank: ::WORD,
+ wgDefault: ::WORD,
+ wgInvalid: ::WORD,
+ wgKashida: ::WORD,
+ iKashidaWidth: ::c_int,
+}}
+//1440
+pub const SSA_PASSWORD: ::DWORD = 0x00000001;
+pub const SSA_TAB: ::DWORD = 0x00000002;
+pub const SSA_CLIP: ::DWORD = 0x00000004;
+pub const SSA_FIT: ::DWORD = 0x00000008;
+pub const SSA_DZWG: ::DWORD = 0x00000010;
+pub const SSA_FALLBACK: ::DWORD = 0x00000020;
+pub const SSA_BREAK: ::DWORD = 0x00000040;
+pub const SSA_GLYPHS: ::DWORD = 0x00000080;
+pub const SSA_RTL: ::DWORD = 0x00000100;
+pub const SSA_GCP: ::DWORD = 0x00000200;
+pub const SSA_HOTKEY: ::DWORD = 0x00000400;
+pub const SSA_METAFILE: ::DWORD = 0x00000800;
+pub const SSA_LINK: ::DWORD = 0x00001000;
+pub const SSA_HIDEHOTKEY: ::DWORD = 0x00002000;
+pub const SSA_HOTKEYONLY: ::DWORD = 0x00002400;
+pub const SSA_FULLMEASURE: ::DWORD = 0x04000000;
+pub const SSA_LPKANSIFALLBACK: ::DWORD = 0x08000000;
+pub const SSA_PIDX: ::DWORD = 0x10000000;
+pub const SSA_LAYOUTRTL: ::DWORD = 0x20000000;
+pub const SSA_DONTGLYPH: ::DWORD = 0x40000000;
+pub const SSA_NOKASHIDA: ::DWORD = 0x80000000;
+STRUCT!{struct SCRIPT_TABDEF {
+ cTabStops: ::c_int,
+ iScale: ::c_int,
+ pTabStops: *mut ::c_int,
+ iTabOrigin: ::c_int,
+}}
+DECLARE_HANDLE!(SCRIPT_STRING_ANALYSIS, SCRIPT_STRING_ANALYSIS__);
+pub const SIC_COMPLEX: ::DWORD = 1;
+pub const SIC_ASCIIDIGIT: ::DWORD = 2;
+pub const SIC_NEUTRAL: ::DWORD = 4;
+STRUCT!{struct SCRIPT_DIGITSUBSTITUTE {
+ bit_fields1: ::DWORD,
+ bit_fields2: ::DWORD,
+ dwReserved: ::DWORD,
+}}
+BITFIELD!(SCRIPT_DIGITSUBSTITUTE bit_fields1: ::DWORD [
+ NationalDigitLanguage set_NationalDigitLanguage[0..16],
+ TraditionalDigitLanguage set_TraditionalDigitLanguage[16..32],
+]);
+BITFIELD!(SCRIPT_DIGITSUBSTITUTE bit_fields2: ::DWORD [
+ DigitSubstitute set_DigitSubstitute[0..8],
+]);
+pub const SCRIPT_DIGITSUBSTITUTE_CONTEXT: ::BYTE = 0;
+pub const SCRIPT_DIGITSUBSTITUTE_NONE: ::BYTE = 1;
+pub const SCRIPT_DIGITSUBSTITUTE_NATIONAL: ::BYTE = 2;
+pub const SCRIPT_DIGITSUBSTITUTE_TRADITIONAL: ::BYTE = 3;
+pub type OPENTYPE_TAG = ::ULONG;
+pub const SCRIPT_TAG_UNKNOWN: OPENTYPE_TAG = 0x00000000;
+STRUCT!{struct OPENTYPE_FEATURE_RECORD {
+ tagFeature: OPENTYPE_TAG,
+ lParameter: ::LONG,
+}}
+STRUCT!{struct TEXTRANGE_PROPERTIES {
+ potfRecords: *mut OPENTYPE_FEATURE_RECORD,
+ cotfRecords: ::c_int,
+}}
+STRUCT!{struct SCRIPT_CHARPROP {
+ bit_fields: ::WORD,
+}}
+BITFIELD!(SCRIPT_CHARPROP bit_fields: ::WORD [
+ fCanGlyphAlone set_fCanGlyphAlone[0..1],
+ reserved set_reserved[1..16],
+]);
+STRUCT!{struct SCRIPT_GLYPHPROP {
+ sva: SCRIPT_VISATTR,
+ reserved: ::WORD,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/vadefs.rs b/third_party/rust/winapi-0.2.8/src/vadefs.rs
new file mode 100644
index 0000000000..c482026f0e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/vadefs.rs
@@ -0,0 +1,7 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Definitions of macro helpers used by <stdarg.h>. This is the topmost header in the CRT header
+//! lattice, and is always the first CRT header to be included, explicitly or implicitly.
+//! Therefore, this header also has several definitions that are used throughout the CRT.
+//39
+pub type va_list = *mut ::c_char;
diff --git a/third_party/rust/winapi-0.2.8/src/vsbackup.rs b/third_party/rust/winapi-0.2.8/src/vsbackup.rs
new file mode 100644
index 0000000000..5f6036a40d
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/vsbackup.rs
@@ -0,0 +1,303 @@
+// Copyright © 2015, Brian Vincent
+// Licensed under the MIT License <LICENSE.md>
+//! VSS backup interfaces
+DEFINE_GUID!(IID_IVssExamineWriterMetadata, 0x902fcf7f, 0xb7fd, 0x42f8,
+ 0x81, 0xf1, 0xb2, 0xe4, 0x00, 0xb1, 0xe5, 0xbd);
+DEFINE_GUID!(IID_IVssExamineWriterMetadataEx, 0x0c0e5ec0, 0xca44, 0x472b,
+ 0xb7, 0x02, 0xe6, 0x52, 0xdb, 0x1c, 0x04, 0x51);
+DEFINE_GUID!(IID_IVssBackupComponents, 0x665c1d5f, 0xc218, 0x414d,
+ 0xa0, 0x5d, 0x7f, 0xef, 0x5f, 0x9d, 0x5c, 0x86);
+DEFINE_GUID!(IID_IVssBackupComponentsEx, 0x963f03ad, 0x9e4c, 0x4a34,
+ 0xac, 0x15, 0xe4, 0xb6, 0x17, 0x4e, 0x50, 0x36);
+STRUCT!{struct VSS_COMPONENTINFO {
+ type_: ::VSS_COMPONENT_TYPE, // type is a keyword in rust
+ bstrLogicalPath: ::BSTR,
+ bstrComponentName: ::BSTR,
+ bstrCaption: ::BSTR,
+ pbIcon: *mut ::BYTE,
+ cbIcon: ::UINT,
+ bRestoreMetadata: bool,
+ bNotifyOnBackupComplete: bool,
+ bSelectable: bool,
+ bSelectableForRestore: bool,
+ dwComponentFlags: ::DWORD,
+ cFileCount: ::UINT,
+ cDatabases: ::UINT,
+ cLogFiles: ::UINT,
+ cDependencies: ::UINT,
+}}
+pub type PVSSCOMPONENTINFO = *const ::VSS_COMPONENTINFO;
+RIDL!(
+interface IVssWMComponent(IVssWMComponentVtbl): IUnknown(IUnknownVtbl) {
+ fn GetComponentInfo(&mut self, ppInfo: *mut ::PVSSCOMPONENTINFO) -> ::HRESULT,
+ fn FreeComponentInfo(&mut self, pInfo: ::PVSSCOMPONENTINFO) -> ::HRESULT,
+ fn GetFile(&mut self, iFile: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc) -> ::HRESULT,
+ fn GetDatabaseFile(
+ &mut self, iDBFile: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn GetDatabaseLogFile(
+ &mut self, iDbLogFile: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn GetDependency(
+ &mut self, iDependency: ::UINT, ppDependency: *mut *mut ::IVssWMDependency
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssExamineWriterMetadata(IVssExamineWriterMetadataVtbl): IUnknown(IUnknownVtbl) {
+ fn GetIdentity(
+ &mut self, pidInstance: *mut ::VSS_ID, pidWriter: *mut ::VSS_ID,
+ pbstrWriterName: *mut ::BSTR, pUsage: *mut ::VSS_USAGE_TYPE,
+ pSource: *mut ::VSS_SOURCE_TYPE
+ ) -> ::HRESULT,
+ fn GetFileCounts(&mut self, pcIncludeFiles: *mut ::UINT, pcExcludeFiles: *mut ::UINT,
+ pcComponents: *mut ::UINT
+ ) -> ::HRESULT,
+ fn GetIncludeFile(
+ &mut self, iFile: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn GetExcludeFile(
+ &mut self, iFile: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn GetComponent(
+ &mut self, iComponent: ::UINT, ppComponent: *mut *mut ::IVssWMComponent
+ ) -> ::HRESULT,
+ fn GetRestoreMethod(
+ &mut self, pMethod: *mut ::VSS_RESTOREMETHOD_ENUM, pbstrService: *mut ::BSTR,
+ pbstrUserProcedure: *mut ::BSTR, pwriterRestore: *mut ::VSS_WRITERRESTORE_ENUM,
+ pbRebootRequired: *mut bool, pcMappings: *mut ::UINT
+ ) -> ::HRESULT,
+ fn GetAlternateLocationMapping(
+ &mut self, iMapping: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn GetBackupSchema(&mut self, pdwSchemaMask: *mut ::DWORD) -> ::HRESULT,
+ fn GetDocument(&mut self, pDoc: *mut ::c_void) -> ::HRESULT, //TODO IXMLDOMDocument
+ fn SaveAsXML(&mut self, pbstrXML: *mut ::BSTR) -> ::HRESULT,
+ fn LoadFromXML(&mut self, pbstrXML: *mut ::BSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssExamineWriterMetadataEx(IVssExamineWriterMetadataExVtbl):
+ IVssExamineWriterMetadata(IVssExamineWriterMetadataVtbl) {
+ fn GetIdentityEx(
+ &mut self, pidInstance: *mut ::VSS_ID, pidWriter: *mut ::VSS_ID,
+ pbstrWriterName: *mut ::BSTR, pbstrInstanceName: *mut ::BSTR,
+ pUsage: *mut ::VSS_USAGE_TYPE, pSource: *mut ::VSS_SOURCE_TYPE
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssExamineWriterMetadataEx2(IVssExamineWriterMetadataEx2Vtbl):
+ IVssExamineWriterMetadataEx(IVssExamineWriterMetadataExVtbl) {
+ fn GetVersion(
+ &mut self, pdwMajorVersion: *mut ::DWORD, pdwMinorVersion: *mut ::DWORD
+ ) -> ::HRESULT,
+ fn GetExcludeFromSnapshotCount(&mut self, pcExcludedFromSnapshot: *mut ::UINT) -> ::HRESULT,
+ fn GetExcludeFromSnapshotFile(
+ &mut self, iFile: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT
+}
+);
+#[repr(C)]
+pub struct IVssWriterComponentsExt {
+ pub lpVtbl: *const IVssWriterComponentsExtVtbl,
+}
+#[repr(C)]
+pub struct IVssWriterComponentsExtVtbl {
+ pub parent1: ::IVssWriterComponentsVtbl,
+ pub parent2: ::IUnknownVtbl,
+}
+RIDL!(
+interface IVssBackupComponents(IVssBackupComponentsVtbl): IUnknown(IUnknownVtbl) {
+ fn GetWriterComponentsCount(&mut self, pcComponents: *mut ::UINT) -> ::HRESULT,
+ fn GetWriterComponents(
+ &mut self, iWriter: ::UINT, ppWriter: *mut *mut IVssWriterComponentsExt
+ ) -> ::HRESULT,
+ fn InitializeForBackup(&mut self, bstrXML: ::BSTR) -> ::HRESULT,
+ fn SetBackupState(
+ &mut self, bSelectComponents: bool, bBackupBootableSystemState: bool,
+ backupType: ::VSS_BACKUP_TYPE, bPartialFileSupport: bool
+ ) -> ::HRESULT,
+ fn InitializeForRestore(&mut self, bstrXML: ::BSTR) -> ::HRESULT,
+ fn SetRestoreState(&mut self, restoreType: ::VSS_RESTORE_TYPE) -> ::HRESULT,
+ fn GatherWriterMetadata(&mut self, pAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn GetWriterMetadataCount(&mut self, pcWriters: *mut ::UINT) -> ::HRESULT,
+ fn GetWriterMetadata(
+ &mut self, iWriter: ::UINT, pidInstance: *mut ::VSS_ID,
+ ppMetadata: *mut *mut IVssExamineWriterMetadata
+ ) -> ::HRESULT,
+ fn FreeWriterMetadata(&mut self) -> ::HRESULT,
+ fn AddComponent(
+ &mut self, instanceId: ::VSS_ID, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE,
+ wszLogicalPath: ::LPCWSTR, wszComponentName: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn PrepareForBackup(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn AbortBackup(&mut self) -> ::HRESULT,
+ fn GatherWriterStatus(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn GetWriterStatusCount(&mut self, pcWriters: *mut ::UINT) -> ::HRESULT,
+ fn FreeWriterStatus(&mut self) -> ::HRESULT,
+ fn GetWriterStatus(
+ &mut self, iWriter: ::UINT, pidInstance: *mut ::VSS_ID, pidWriter: *mut ::VSS_ID,
+ pbstrWriter: *mut ::BSTR, pnStatus: *mut ::VSS_WRITER_STATE,
+ phResultFailure: *mut ::HRESULT
+ ) -> ::HRESULT,
+ fn SetBackupSucceeded(
+ &mut self, instanceId: ::VSS_ID, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE,
+ wszLogicalPath: ::LPCWSTR, wszComponentName: ::LPCWSTR, bSucceded: bool
+ ) -> ::HRESULT,
+ fn SetBackupOptions(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszBackupOptions: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SetSelectedForRestore(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, bSelectedForRestore: bool
+ ) -> ::HRESULT,
+ fn SetRestoreOptions(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszRestoreOptions: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SetAdditionalRestores(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, bAdditionalRestores: bool
+ ) -> ::HRESULT,
+ fn SetPreviousBackupStamp(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszPreviousBackupStamp: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SaveAsXML(&mut self, pbstrXML: *mut ::BSTR) -> ::HRESULT,
+ fn BackupComplete(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn AddAlternativeLocationMapping(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool,
+ wszDestination: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn AddRestoreSubcomponent(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszSubComponentLogicalPath: ::LPCWSTR,
+ wszSubComponentName: ::LPCWSTR, bRepair: bool
+ ) -> ::HRESULT,
+ fn SetFileRestoreStatus(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, status: ::VSS_FILE_RESTORE_STATUS
+ ) -> ::HRESULT,
+ fn AddNewTarget(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszPath: ::LPCWSTR, wszFileName: ::LPCWSTR, bRecursive: bool,
+ wszAlternatePath: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SetRangesFilePath(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, iPartialFile: ::UINT, wszRangesFile: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn PreRestore(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn PostRestore(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn SetContext(&mut self, lContext: ::LONG) -> ::HRESULT,
+ fn StartSnapshotSet(&mut self, pSnapshotSetId: *mut ::VSS_ID) -> ::HRESULT,
+ fn AddToSnapshotSet(
+ &mut self, pwszVolumeName: ::VSS_PWSZ, ProviderId: ::VSS_ID, pidSnapshot: *mut ::VSS_ID
+ ) -> ::HRESULT,
+ fn DoSnapshotSet(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn DeleteSnapshots(
+ &mut self, SourceObjectId: ::VSS_ID, eSourceObjectType: ::VSS_OBJECT_TYPE,
+ bForceDelete: ::BOOL, plDeletedSnapshots: *mut ::LONG, pNondeletedSnapshotID: *mut ::VSS_ID
+ ) -> ::HRESULT,
+ fn ImportSnapshots(&mut self, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn BreakSnapshotSet(&mut self, SnapshotSetId: ::VSS_ID) -> ::HRESULT,
+ fn GetSnapshotProperties(
+ &mut self, SnapshotId: ::VSS_ID,
+ pProp: *mut ::VSS_SNAPSHOT_PROP
+ ) -> ::HRESULT,
+ fn Query(&mut self, QueriedObjectId: ::VSS_ID, eQueriedObjectType: ::VSS_OBJECT_TYPE,
+ eReturnedObjectsType: ::VSS_OBJECT_TYPE, ppEnum: *mut *mut ::IVssEnumObject) -> ::HRESULT,
+ fn IsVolumeSupported(
+ &mut self, ProviderId: ::VSS_ID, pwszVolumeName: ::VSS_PWSZ,
+ pbSupportedByThisProvider: *mut ::BOOL
+ ) -> ::HRESULT,
+ fn DisableWriterClasses(
+ &mut self, rgWriterClassId: *const ::VSS_ID, cClassId: ::UINT
+ ) -> ::HRESULT,
+ fn EnableWriterClasses(
+ &mut self, rgWriterClassId: *const ::VSS_ID, cClassId: ::UINT
+ ) -> ::HRESULT,
+ fn DisableWriterInstances(
+ &mut self, rgWriterInstanceId: *const ::VSS_ID, cInstanceId: ::UINT
+ ) -> ::HRESULT,
+ fn ExposeSnapshot(&mut self, SnapshotId: ::VSS_ID, wszPathFromRoot: ::VSS_PWSZ,
+ lAttributes: ::LONG, wszExpose: ::VSS_PWSZ, pwszExposed: ::VSS_PWSZ
+ ) -> ::HRESULT,
+ fn RevertToSnapshot(&mut self, SnapshotId: ::VSS_ID, bForceDismount: ::BOOL) -> ::HRESULT,
+ fn QueryRevertStatus(
+ &mut self, pwszVolume: ::VSS_PWSZ, ppAsync: *mut *mut ::IVssAsync
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssBackupComponentsEx(IVssBackupComponentsExVtbl):
+ IVssBackupComponents(IVssBackupComponentsVtbl) {
+ fn GetWriterMetadataEx(
+ &mut self, iWriter: ::UINT, pidInstance: *mut ::VSS_ID,
+ ppMetadata: *mut *mut ::IVssExamineWriterMetadataEx
+ ) -> ::HRESULT,
+ fn SetSelectedForRestoreEx(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, bSelectedForRestore: bool, instanceId: ::VSS_ID
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssBackupComponentsEx2(IVssBackupComponentsEx2Vtbl):
+ IVssBackupComponentsEx(IVssBackupComponentsExVtbl) {
+ fn UnexposeSnapshot(&mut self, snapshotId: ::VSS_ID) -> ::HRESULT,
+ fn SetAuthoritativeRestore(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, bAuth: bool
+ ) -> ::HRESULT,
+ fn SetRollForward(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, rollType: ::VSS_ROLLFORWARD_TYPE,
+ wszRollForwardPoint: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SetRestoreName(
+ &mut self, writerId: ::VSS_ID, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszRestoreName: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn BreakSnapshotSetEx(
+ &mut self, SnapshotSetID: ::VSS_ID, dwBreakFlags: ::DWORD, ppAsync: *mut *mut ::IVssAsync
+ ) -> ::HRESULT,
+ fn PreFastRecovery(
+ &mut self, SnapshotSetID: ::VSS_ID, dwPreFastRecoveryFlags: ::DWORD,
+ ppAsync: *mut *mut ::IVssAsync
+ ) -> ::HRESULT,
+ fn FastRecovery(
+ &mut self, SnapshotSetID: ::VSS_ID, dwFastRecoveryFlags: ::DWORD,
+ ppAsync: *mut *mut ::IVssAsync
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssBackupComponentsEx3(IVssBackupComponentsEx3Vtbl):
+ IVssBackupComponentsEx2(IVssBackupComponentsEx2Vtbl) {
+ fn GetWriterStatusEx(
+ &mut self, iWriter: ::UINT, pidInstance: *mut ::VSS_ID, pidWriter: *mut ::VSS_ID,
+ pbstrWriter: *mut ::BSTR, pnStatus: *mut ::VSS_WRITER_STATE,
+ phrFailureWriter: *mut ::HRESULT, phrApplication: *mut ::HRESULT,
+ pbstrApplicationMessage: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn AddSnapshotToRecoverySet(
+ &mut self, snapshotId: ::VSS_ID, dwFlags: ::DWORD, pwszDestinationVolume: ::VSS_PWSZ
+ ) -> ::HRESULT,
+ fn RecoverSet(&mut self, dwFlags: ::DWORD, ppAsync: *mut *mut ::IVssAsync) -> ::HRESULT,
+ fn GetSessionId(&mut self, idSession: *mut ::VSS_ID) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssBackupComponentsEx4(IVssBackupComponentsEx4Vtbl):
+ IVssBackupComponentsEx3(IVssBackupComponentsEx3Vtbl) {
+ fn GetRootAndLogicalPrefixPaths(
+ &mut self, pwszFilePath: ::VSS_PWSZ, ppwszRootPath: *mut ::VSS_PWSZ,
+ ppwszLogicalPrefix: *mut ::VSS_PWSZ, bNormalizeFQDNforRootPath: ::BOOL
+ ) -> ::HRESULT
+}
+);
+pub const VSS_SW_BOOTABLE_STATE: ::DWORD = 1;
diff --git a/third_party/rust/winapi-0.2.8/src/vss.rs b/third_party/rust/winapi-0.2.8/src/vss.rs
new file mode 100644
index 0000000000..259f181068
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/vss.rs
@@ -0,0 +1,256 @@
+// Copyright © 2015, Brian Vincent
+// Licensed under the MIT License <LICENSE.md>
+//! VSS header file
+ENUM!{enum VSS_OBJECT_TYPE {
+ VSS_OBJECT_UNKNOWN = 0,
+ VSS_OBJECT_NONE = 1,
+ VSS_OBJECT_SNAPSHOT_SET = 2,
+ VSS_OBJECT_SNAPSHOT = 3,
+ VSS_OBJECT_PROVIDER = 4,
+ VSS_OBJECT_TYPE_COUNT = 5,
+}}
+pub type PVSS_OBJECT_TYPE = *mut VSS_OBJECT_TYPE;
+ENUM!{enum VSS_SNAPSHOT_STATE {
+ VSS_SS_UNKNOWN = 0x00,
+ VSS_SS_PREPARING = 0x01,
+ VSS_SS_PROCESSING_PREPARE = 0x02,
+ VSS_SS_PREPARED = 0x03,
+ VSS_SS_PROCESSING_PRECOMMIT = 0x04,
+ VSS_SS_PRECOMMITTED = 0x05,
+ VSS_SS_PROCESSING_COMMIT = 0x06,
+ VSS_SS_COMMITTED = 0x07,
+ VSS_SS_PROCESSING_POSTCOMMIT = 0x08,
+ VSS_SS_PROCESSING_PREFINALCOMMIT = 0x09,
+ VSS_SS_PREFINALCOMMITTED = 0x0a,
+ VSS_SS_PROCESSING_POSTFINALCOMMIT = 0x0b,
+ VSS_SS_CREATED = 0x0c,
+ VSS_SS_ABORTED = 0x0d,
+ VSS_SS_DELETED = 0x0e,
+ VSS_SS_POSTCOMMITTED = 0x0f,
+ VSS_SS_COUNT = 0x10,
+}}
+pub type PVSS_SNAPSHOT_STATE = *mut VSS_SNAPSHOT_STATE;
+pub type VSS_VOLUME_SNAPSHOT_ATTRIBUTES = ::LONG;
+pub const VSS_VOLSNAP_ATTR_PERSISTENT: ::LONG = 0x00000001;
+pub const VSS_VOLSNAP_ATTR_NO_AUTORECOVERY: ::LONG = 0x00000002;
+pub const VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE: ::LONG = 0x00000004;
+pub const VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE: ::LONG = 0x00000008;
+pub const VSS_VOLSNAP_ATTR_NO_WRITERS: ::LONG = 0x00000010;
+pub const VSS_VOLSNAP_ATTR_TRANSPORTABLE: ::LONG = 0x00000020;
+pub const VSS_VOLSNAP_ATTR_NOT_SURFACED: ::LONG = 0x00000040;
+pub const VSS_VOLSNAP_ATTR_NOT_TRANSACTED: ::LONG = 0x00000080;
+pub const VSS_VOLSNAP_ATTR_HARDWARE_ASSISTED: ::LONG = 0x00010000;
+pub const VSS_VOLSNAP_ATTR_DIFFERENTIAL: ::LONG = 0x00020000;
+pub const VSS_VOLSNAP_ATTR_PLEX: ::LONG = 0x00040000;
+pub const VSS_VOLSNAP_ATTR_IMPORTED: ::LONG = 0x00080000;
+pub const VSS_VOLSNAP_ATTR_EXPOSED_LOCALLY: ::LONG = 0x00100000;
+pub const VSS_VOLSNAP_ATTR_EXPOSED_REMOTELY: ::LONG = 0x00200000;
+pub const VSS_VOLSNAP_ATTR_AUTORECOVER: ::LONG = 0x00400000;
+pub const VSS_VOLSNAP_ATTR_ROLLBACK_RECOVERY: ::LONG = 0x00800000;
+pub const VSS_VOLSNAP_ATTR_DELAYED_POSTSNAPSHOT: ::LONG = 0x01000000;
+pub const VSS_VOLSNAP_ATTR_TXF_RECOVERY: ::LONG = 0x02000000;
+pub const VSS_VOLSNAP_ATTR_FILE_SHARE: ::LONG = 0x04000000;
+pub type PVSS_VOLUME_SNAPSHOT_ATTRIBUTES = *mut VSS_VOLUME_SNAPSHOT_ATTRIBUTES;
+pub type VSS_SNAPSHOT_CONTEXT = ::LONG;
+pub type PVSS_SNAPSHOT_CONTEXT = *mut VSS_SNAPSHOT_CONTEXT;
+pub const VSS_CTX_BACKUP: ::LONG = 0;
+pub const VSS_CTX_FILE_SHARE_BACKUP: ::LONG = VSS_VOLSNAP_ATTR_NO_WRITERS;
+pub const VSS_CTX_NAS_ROLLBACK: ::LONG = VSS_VOLSNAP_ATTR_PERSISTENT
+ | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE | VSS_VOLSNAP_ATTR_NO_WRITERS;
+pub const VSS_CTX_APP_ROLLBACK: ::LONG = VSS_VOLSNAP_ATTR_PERSISTENT
+ | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE;
+pub const VSS_CTX_CLIENT_ACCESSIBLE: ::LONG = VSS_VOLSNAP_ATTR_PERSISTENT
+ | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE
+ | VSS_VOLSNAP_ATTR_NO_WRITERS;
+pub const VSS_CTX_CLIENT_ACCESSIBLE_WRITERS: ::LONG = VSS_VOLSNAP_ATTR_PERSISTENT
+ | VSS_VOLSNAP_ATTR_CLIENT_ACCESSIBLE | VSS_VOLSNAP_ATTR_NO_AUTO_RELEASE;
+pub const VSS_CTX_ALL: ::LONG = 0xffffffffu32 as ::LONG;
+pub type VSS_PROVIDER_CAPABILITIES = ::DWORD;
+pub type PVSS_PROVIDER_CAPABILITIES = *mut VSS_PROVIDER_CAPABILITIES;
+pub const VSS_PRV_CAPABILITY_LEGACY: ::DWORD = 0x1;
+pub const VSS_PRV_CAPABILITY_COMPLIANT: ::DWORD = 0x2;
+pub const VSS_PRV_CAPABILITY_LUN_REPOINT: ::DWORD = 0x4;
+pub const VSS_PRV_CAPABILITY_LUN_RESYNC: ::DWORD = 0x8;
+pub const VSS_PRV_CAPABILITY_OFFLINE_CREATION: ::DWORD = 0x10;
+pub const VSS_PRV_CAPABILITY_MULTIPLE_IMPORT: ::DWORD = 0x20;
+pub const VSS_PRV_CAPABILITY_RECYCLING: ::DWORD = 0x40;
+pub const VSS_PRV_CAPABILITY_PLEX: ::DWORD = 0x80;
+pub const VSS_PRV_CAPABILITY_DIFFERENTIAL: ::DWORD = 0x100;
+pub const VSS_PRV_CAPABILITY_CLUSTERED: ::DWORD = 0x200;
+pub type VSS_HARDWARE_OPTIONS = ::DWORD;
+pub type PVSS_HARDWARE_OPTIONS = *mut VSS_HARDWARE_OPTIONS;
+pub const VSS_BREAKEX_FLAG_MASK_LUNS: ::DWORD = 0x1;
+pub const VSS_BREAKEX_FLAG_MAKE_READ_WRITE: ::DWORD = 0x2;
+pub const VSS_BREAKEX_FLAG_REVERT_IDENTITY_ALL: ::DWORD = 0x4;
+pub const VSS_BREAKEX_FLAG_REVERT_IDENTITY_NONE: ::DWORD = 0x8;
+pub const VSS_ONLUNSTATECHANGE_NOTIFY_READ_WRITE: ::DWORD = 0x100;
+pub const VSS_ONLUNSTATECHANGE_NOTIFY_LUN_PRE_RECOVERY: ::DWORD = 0x200;
+pub const VSS_ONLUNSTATECHANGE_NOTIFY_LUN_POST_RECOVERY: ::DWORD = 0x400;
+pub const VSS_ONLUNSTATECHANGE_DO_MASK_LUNS: ::DWORD = 0x800;
+pub type VSS_RECOVERY_OPTIONS = ::DWORD;
+pub type PVSS_RECOVERY_OPTIONS = *mut VSS_RECOVERY_OPTIONS;
+pub const VSS_RECOVERY_REVERT_IDENTITY_ALL: ::DWORD = 0x00000100;
+pub const VSS_RECOVERY_NO_VOLUME_CHECK: ::DWORD = 0x00000200;
+ENUM!{enum VSS_WRITER_STATE {
+ VSS_WS_UNKNOWN = 0,
+ VSS_WS_STABLE = 1,
+ VSS_WS_WAITING_FOR_FREEZE = 2,
+ VSS_WS_WAITING_FOR_THAW = 3,
+ VSS_WS_WAITING_FOR_POST_SNAPSHOT = 4,
+ VSS_WS_WAITING_FOR_BACKUP_COMPLETE = 5,
+ VSS_WS_FAILED_AT_IDENTIFY = 6,
+ VSS_WS_FAILED_AT_PREPARE_BACKUP = 7,
+ VSS_WS_FAILED_AT_PREPARE_SNAPSHOT = 8,
+ VSS_WS_FAILED_AT_FREEZE = 9,
+ VSS_WS_FAILED_AT_THAW = 10,
+ VSS_WS_FAILED_AT_POST_SNAPSHOT = 11,
+ VSS_WS_FAILED_AT_BACKUP_COMPLETE = 12,
+ VSS_WS_FAILED_AT_PRE_RESTORE = 13,
+ VSS_WS_FAILED_AT_POST_RESTORE = 14,
+ VSS_WS_FAILED_AT_BACKUPSHUTDOWN = 15,
+ VSS_WS_COUNT = 16,
+}}
+pub type PVSS_WRITER_STATE = *mut VSS_WRITER_STATE;
+ENUM!{enum VSS_BACKUP_TYPE {
+ VSS_BT_UNDEFINED = 0,
+ VSS_BT_FULL = 1,
+ VSS_BT_INCREMENTAL = 2,
+ VSS_BT_DIFFERENTIAL = 3,
+ VSS_BT_LOG = 4,
+ VSS_BT_COPY = 5,
+ VSS_BT_OTHER = 6,
+}}
+pub type PVSS_BACKUP_TYPE = *mut VSS_BACKUP_TYPE;
+ENUM!{enum VSS_RESTORE_TYPE {
+ VSS_RTYPE_UNDEFINED = 0,
+ VSS_RTYPE_BY_COPY = 1,
+ VSS_RTYPE_IMPORT = 2,
+ VSS_RTYPE_OTHER = 3,
+}}
+pub type PVSS_RESTORE_TYPE = *mut VSS_RESTORE_TYPE;
+ENUM!{enum VSS_ROLLFORWARD_TYPE {
+ VSS_RF_UNDEFINED = 0,
+ VSS_RF_NONE = 1,
+ VSS_RF_ALL = 2,
+ VSS_RF_PARTIAL = 3,
+}}
+pub type PVSS_ROLLFORWARD_TYPE = *mut VSS_ROLLFORWARD_TYPE;
+ENUM!{enum VSS_PROVIDER_TYPE {
+ VSS_PROV_UNKNOWN = 0,
+ VSS_PROV_SYSTEM = 1,
+ VSS_PROV_SOFTWARE = 2,
+ VSS_PROV_HARDWARE = 3,
+ VSS_PROV_FILESHARE = 4,
+}}
+pub type PVSS_PROVIDER_TYPE = *mut VSS_PROVIDER_TYPE;
+ENUM!{enum VSS_APPLICATION_LEVEL {
+ VSS_APP_UNKNOWN = 0,
+ VSS_APP_SYSTEM = 1,
+ VSS_APP_BACK_END = 2,
+ VSS_APP_FRONT_END = 3,
+ VSS_APP_SYSTEM_RM = 4,
+ VSS_APP_AUTO = -1i32 as u32,
+}}
+pub type PVSS_APPLICATION_LEVEL = *mut VSS_APPLICATION_LEVEL;
+ENUM!{enum VSS_SNAPSHOT_PROPERTY_ID {
+ VSS_SPROPID_UNKNOWN = 0,
+ VSS_SPROPID_SNAPSHOT_ID = 0x1,
+ VSS_SPROPID_SNAPSHOT_SET_ID = 0x2,
+ VSS_SPROPID_SNAPSHOTS_COUNT = 0x3,
+ VSS_SPROPID_SNAPSHOT_DEVICE = 0x4,
+ VSS_SPROPID_ORIGINAL_VOLUME = 0x5,
+ VSS_SPROPID_ORIGINATING_MACHINE = 0x6,
+ VSS_SPROPID_SERVICE_MACHINE = 0x7,
+ VSS_SPROPID_EXPOSED_NAME = 0x8,
+ VSS_SPROPID_EXPOSED_PATH = 0x9,
+ VSS_SPROPID_PROVIDER_ID = 0xa,
+ VSS_SPROPID_SNAPSHOT_ATTRIBUTES = 0xb,
+ VSS_SPROPID_CREATION_TIMESTAMP = 0xc,
+ VSS_SPROPID_STATUS = 0xd,
+}}
+pub type PVSS_SNAPSHOT_PROPERTY_ID = *mut VSS_SNAPSHOT_PROPERTY_ID;
+pub type VSS_FILE_SPEC_BACKUP_TYPE = ::DWORD;
+pub type PVSS_FILE_SPEC_BACKUP_TYPE = *mut VSS_FILE_SPEC_BACKUP_TYPE;
+pub const VSS_FSBT_FULL_BACKUP_REQUIRED: ::DWORD = 0x1;
+pub const VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED: ::DWORD = 0x2;
+pub const VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED: ::DWORD = 0x4;
+pub const VSS_FSBT_LOG_BACKUP_REQUIRED: ::DWORD = 0x8;
+pub const VSS_FSBT_FULL_SNAPSHOT_REQUIRED: ::DWORD = 0x100;
+pub const VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED: ::DWORD = 0x200;
+pub const VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED: ::DWORD = 0x400;
+pub const VSS_FSBT_LOG_SNAPSHOT_REQUIRED: ::DWORD = 0x800;
+pub const VSS_FSBT_CREATED_DURING_BACKUP: ::DWORD = 0x10000;
+pub const VSS_FSBT_ALL_BACKUP_REQUIRED: ::DWORD = 0xf;
+pub const VSS_FSBT_ALL_SNAPSHOT_REQUIRED: ::DWORD = 0xf00;
+pub type VSS_BACKUP_SCHEMA = ::DWORD;
+pub type PVSS_BACKUP_SCHEMA = *mut VSS_BACKUP_SCHEMA;
+pub const VSS_BS_UNDEFINED: ::DWORD = 0;
+pub const VSS_BS_DIFFERENTIAL: ::DWORD = 0x1;
+pub const VSS_BS_INCREMENTAL: ::DWORD = 0x2;
+pub const VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL: ::DWORD = 0x4;
+pub const VSS_BS_LOG: ::DWORD = 0x8;
+pub const VSS_BS_COPY: ::DWORD = 0x10;
+pub const VSS_BS_TIMESTAMPED: ::DWORD = 0x20;
+pub const VSS_BS_LAST_MODIFY: ::DWORD = 0x40;
+pub const VSS_BS_LSN: ::DWORD = 0x80;
+pub const VSS_BS_WRITER_SUPPORTS_NEW_TARGET: ::DWORD = 0x100;
+pub const VSS_BS_WRITER_SUPPORTS_RESTORE_WITH_MOVE: ::DWORD = 0x200;
+pub const VSS_BS_INDEPENDENT_SYSTEM_STATE: ::DWORD = 0x400;
+pub const VSS_BS_ROLLFORWARD_RESTORE: ::DWORD = 0x1000;
+pub const VSS_BS_RESTORE_RENAME: ::DWORD = 0x2000;
+pub const VSS_BS_AUTHORITATIVE_RESTORE: ::DWORD = 0x4000;
+pub const VSS_BS_WRITER_SUPPORTS_PARALLEL_RESTORES: ::DWORD = 0x8000;
+pub type VSS_ID = ::GUID;
+pub type VSS_PWSZ = *mut ::WCHAR;
+pub type VSS_TIMESTAMP = ::LONGLONG;
+STRUCT!{struct VSS_SNAPSHOT_PROP {
+ m_SnapshotId: ::VSS_ID,
+ m_SnapshotSetId: ::VSS_ID,
+ m_lSnapshotsCount: ::LONG,
+ m_pwszSnapshotDeviceObject: ::VSS_PWSZ,
+ m_pwszOriginalVolumeName: ::VSS_PWSZ,
+ m_pwszOriginatingMachine: ::VSS_PWSZ,
+ m_pwszServiceMachine: ::VSS_PWSZ,
+ m_pwszExposedName: ::VSS_PWSZ,
+ m_pwszExposedPath: ::VSS_PWSZ,
+ m_ProviderId: ::VSS_ID,
+ m_lSnapshotAttributes: ::LONG,
+ m_tsCreationTimestamp: ::VSS_TIMESTAMP,
+ m_eStatus: ::VSS_SNAPSHOT_STATE,
+}}
+type PVSS_SNAPSHOT_PROP = *mut VSS_SNAPSHOT_PROP;
+STRUCT!{struct VSS_PROVIDER_PROP {
+ m_ProviderId: ::VSS_ID,
+ m_pwszProviderName: ::VSS_PWSZ,
+ m_eProviderType: ::VSS_PROVIDER_TYPE,
+ m_pwszProviderVersion: ::VSS_PWSZ,
+ m_ProviderVersionId: ::VSS_ID,
+ m_ClassId: ::CLSID,
+}}
+type PVSS_PROVIDER_PROP = *mut VSS_PROVIDER_PROP;
+STRUCT!{struct VSS_OBJECT_UNION {
+ Snap: ::VSS_SNAPSHOT_PROP,
+}}
+UNION!(VSS_OBJECT_UNION, Snap, Prov, Prov_mut, VSS_PROVIDER_PROP);
+STRUCT!{struct VSS_OBJECT_PROP {
+ Type: ::VSS_OBJECT_TYPE,
+ Obj: ::VSS_OBJECT_UNION,
+}}
+type PVSS_OBJECT_PROP = *mut VSS_OBJECT_PROP;
+RIDL!(
+interface IVssEnumObject(IVssEnumObjectVtbl): IUnknown(IUnknownVtbl) {
+ fn Next(
+ &mut self, celt: ::ULONG, rgelt: *mut ::VSS_OBJECT_PROP, pceltFetched: *mut ::ULONG
+ ) -> ::HRESULT,
+ fn Skip(&mut self, celt: ::ULONG) -> ::HRESULT,
+ fn Reset(&mut self) -> ::HRESULT,
+ fn Clone(&mut self, ppenum: *mut *mut ::IVssEnumObject) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssAsync(IVssAsyncVtbl): IUnknown(IUnknownVtbl) {
+ fn Cancel(&mut self) -> ::HRESULT,
+ fn Wait(&mut self, dwMilliseconds: ::DWORD) -> ::HRESULT,
+ fn QueryStatus(&mut self, pHrResult: *mut ::HRESULT, pReserved: *mut ::INT) -> ::HRESULT
+}
+);
diff --git a/third_party/rust/winapi-0.2.8/src/vsserror.rs b/third_party/rust/winapi-0.2.8/src/vsserror.rs
new file mode 100644
index 0000000000..ef84af0f08
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/vsserror.rs
@@ -0,0 +1,85 @@
+// Copyright © 2015, Brian Vincent
+// Licensed under the MIT License <LICENSE.md>
+//! VSS Error header file
+pub const VSS_E_BAD_STATE: ::HRESULT = 0x80042301u32 as i32;
+pub const VSS_E_UNEXPECTED: ::HRESULT = 0x80042302u32 as i32;
+pub const VSS_E_PROVIDER_ALREADY_REGISTERED: ::HRESULT = 0x80042303u32 as i32;
+pub const VSS_E_PROVIDER_NOT_REGISTERED: ::HRESULT = 0x80042304u32 as i32;
+pub const VSS_E_PROVIDER_VETO: ::HRESULT = 0x80042306u32 as i32;
+pub const VSS_E_PROVIDER_IN_USE: ::HRESULT = 0x80042307u32 as i32;
+pub const VSS_E_OBJECT_NOT_FOUND: ::HRESULT = 0x80042308u32 as i32;
+pub const VSS_S_ASYNC_PENDING: ::HRESULT = 0x00042309u32 as i32;
+pub const VSS_S_ASYNC_FINISHED: ::HRESULT = 0x0004230Au32 as i32;
+pub const VSS_S_ASYNC_CANCELLED: ::HRESULT = 0x0004230Bu32 as i32;
+pub const VSS_E_VOLUME_NOT_SUPPORTED: ::HRESULT = 0x8004230Cu32 as i32;
+pub const VSS_E_VOLUME_NOT_SUPPORTED_BY_PROVIDER: ::HRESULT = 0x8004230Eu32 as i32;
+pub const VSS_E_OBJECT_ALREADY_EXISTS: ::HRESULT = 0x8004230Du32 as i32;
+pub const VSS_E_UNEXPECTED_PROVIDER_ERROR: ::HRESULT = 0x8004230Fu32 as i32;
+pub const VSS_E_CORRUPT_XML_DOCUMENT: ::HRESULT = 0x80042310u32 as i32;
+pub const VSS_E_INVALID_XML_DOCUMENT: ::HRESULT = 0x80042311u32 as i32;
+pub const VSS_E_MAXIMUM_NUMBER_OF_VOLUMES_REACHED: ::HRESULT = 0x80042312u32 as i32;
+pub const VSS_E_FLUSH_WRITES_TIMEOUT: ::HRESULT = 0x80042313u32 as i32;
+pub const VSS_E_HOLD_WRITES_TIMEOUT: ::HRESULT = 0x80042314u32 as i32;
+pub const VSS_E_UNEXPECTED_WRITER_ERROR: ::HRESULT = 0x80042315u32 as i32;
+pub const VSS_E_SNAPSHOT_SET_IN_PROGRESS: ::HRESULT = 0x80042316u32 as i32;
+pub const VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED: ::HRESULT = 0x80042317u32 as i32;
+pub const VSS_E_WRITER_INFRASTRUCTURE: ::HRESULT = 0x80042318u32 as i32;
+pub const VSS_E_WRITER_NOT_RESPONDING: ::HRESULT = 0x80042319u32 as i32;
+pub const VSS_E_WRITER_ALREADY_SUBSCRIBED: ::HRESULT = 0x8004231Au32 as i32;
+pub const VSS_E_UNSUPPORTED_CONTEXT: ::HRESULT = 0x8004231Bu32 as i32;
+pub const VSS_E_VOLUME_IN_USE: ::HRESULT = 0x8004231Du32 as i32;
+pub const VSS_E_MAXIMUM_DIFFAREA_ASSOCIATIONS_REACHED: ::HRESULT = 0x8004231Eu32 as i32;
+pub const VSS_E_INSUFFICIENT_STORAGE: ::HRESULT = 0x8004231Fu32 as i32;
+pub const VSS_E_NO_SNAPSHOTS_IMPORTED: ::HRESULT = 0x80042320u32 as i32;
+pub const VSS_S_SOME_SNAPSHOTS_NOT_IMPORTED: ::HRESULT = 0x00042321u32 as i32;
+pub const VSS_E_SOME_SNAPSHOTS_NOT_IMPORTED: ::HRESULT = 0x80042321u32 as i32;
+pub const VSS_E_MAXIMUM_NUMBER_OF_REMOTE_MACHINES_REACHED: ::HRESULT = 0x80042322u32 as i32;
+pub const VSS_E_REMOTE_SERVER_UNAVAILABLE: ::HRESULT = 0x80042323u32 as i32;
+pub const VSS_E_REMOTE_SERVER_UNSUPPORTED: ::HRESULT = 0x80042324u32 as i32;
+pub const VSS_E_REVERT_IN_PROGRESS: ::HRESULT = 0x80042325u32 as i32;
+pub const VSS_E_REVERT_VOLUME_LOST: ::HRESULT = 0x80042326u32 as i32;
+pub const VSS_E_REBOOT_REQUIRED: ::HRESULT = 0x80042327u32 as i32;
+pub const VSS_E_TRANSACTION_FREEZE_TIMEOUT: ::HRESULT = 0x80042328u32 as i32;
+pub const VSS_E_TRANSACTION_THAW_TIMEOUT: ::HRESULT = 0x80042329u32 as i32;
+pub const VSS_E_VOLUME_NOT_LOCAL: ::HRESULT = 0x8004232Du32 as i32;
+pub const VSS_E_CLUSTER_TIMEOUT: ::HRESULT = 0x8004232Eu32 as i32;
+pub const VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT: ::HRESULT = 0x800423F0u32 as i32;
+pub const VSS_E_WRITERERROR_OUTOFRESOURCES: ::HRESULT = 0x800423F1u32 as i32;
+pub const VSS_E_WRITERERROR_TIMEOUT: ::HRESULT = 0x800423F2u32 as i32;
+pub const VSS_E_WRITERERROR_RETRYABLE: ::HRESULT = 0x800423F3u32 as i32;
+pub const VSS_E_WRITERERROR_NONRETRYABLE: ::HRESULT = 0x800423F4u32 as i32;
+pub const VSS_E_WRITERERROR_RECOVERY_FAILED: ::HRESULT = 0x800423F5u32 as i32;
+pub const VSS_E_BREAK_REVERT_ID_FAILED: ::HRESULT = 0x800423F6u32 as i32;
+pub const VSS_E_LEGACY_PROVIDER: ::HRESULT = 0x800423F7u32 as i32;
+pub const VSS_E_MISSING_DISK: ::HRESULT = 0x800423F8u32 as i32;
+pub const VSS_E_MISSING_HIDDEN_VOLUME: ::HRESULT = 0x800423F9u32 as i32;
+pub const VSS_E_MISSING_VOLUME: ::HRESULT = 0x800423FAu32 as i32;
+pub const VSS_E_AUTORECOVERY_FAILED: ::HRESULT = 0x800423FBu32 as i32;
+pub const VSS_E_DYNAMIC_DISK_ERROR: ::HRESULT = 0x800423FCu32 as i32;
+pub const VSS_E_NONTRANSPORTABLE_BCD: ::HRESULT = 0x800423FDu32 as i32;
+pub const VSS_E_CANNOT_REVERT_DISKID: ::HRESULT = 0x800423FEu32 as i32;
+pub const VSS_E_RESYNC_IN_PROGRESS: ::HRESULT = 0x800423FFu32 as i32;
+pub const VSS_E_CLUSTER_ERROR: ::HRESULT = 0x80042400u32 as i32;
+pub const VSS_E_UNSELECTED_VOLUME: ::HRESULT = 0x8004232Au32 as i32;
+pub const VSS_E_SNAPSHOT_NOT_IN_SET: ::HRESULT = 0x8004232Bu32 as i32;
+pub const VSS_E_NESTED_VOLUME_LIMIT: ::HRESULT = 0x8004232Cu32 as i32;
+pub const VSS_E_NOT_SUPPORTED: ::HRESULT = 0x8004232Fu32 as i32;
+pub const VSS_E_WRITERERROR_PARTIAL_FAILURE: ::HRESULT = 0x80042336u32 as i32;
+pub const VSS_E_ASRERROR_DISK_ASSIGNMENT_FAILED: ::HRESULT = 0x80042401u32 as i32;
+pub const VSS_E_ASRERROR_DISK_RECREATION_FAILED: ::HRESULT = 0x80042402u32 as i32;
+pub const VSS_E_ASRERROR_NO_ARCPATH: ::HRESULT = 0x80042403u32 as i32;
+pub const VSS_E_ASRERROR_MISSING_DYNDISK: ::HRESULT = 0x80042404u32 as i32;
+pub const VSS_E_ASRERROR_SHARED_CRIDISK: ::HRESULT = 0x80042405u32 as i32;
+pub const VSS_E_ASRERROR_DATADISK_RDISK0: ::HRESULT = 0x80042406u32 as i32;
+pub const VSS_E_ASRERROR_RDISK0_TOOSMALL: ::HRESULT = 0x80042407u32 as i32;
+pub const VSS_E_ASRERROR_CRITICAL_DISKS_TOO_SMALL: ::HRESULT = 0x80042408u32 as i32;
+pub const VSS_E_WRITER_STATUS_NOT_AVAILABLE: ::HRESULT = 0x80042409u32 as i32;
+pub const VSS_E_ASRERROR_DYNAMIC_VHD_NOT_SUPPORTED: ::HRESULT = 0x8004240Au32 as i32;
+pub const VSS_E_CRITICAL_VOLUME_ON_INVALID_DISK: ::HRESULT = 0x80042411u32 as i32;
+pub const VSS_E_ASRERROR_RDISK_FOR_SYSTEM_DISK_NOT_FOUND: ::HRESULT = 0x80042412u32 as i32;
+pub const VSS_E_ASRERROR_NO_PHYSICAL_DISK_AVAILABLE: ::HRESULT = 0x80042413u32 as i32;
+pub const VSS_E_ASRERROR_FIXED_PHYSICAL_DISK_AVAILABLE_AFTER_DISK_EXCLUSION: ::HRESULT =
+ 0x80042414u32 as i32;
+pub const VSS_E_ASRERROR_CRITICAL_DISK_CANNOT_BE_EXCLUDED: ::HRESULT = 0x80042415u32 as i32;
+pub const VSS_E_ASRERROR_SYSTEM_PARTITION_HIDDEN: ::HRESULT = 0x80042416u32 as i32;
+pub const VSS_E_FSS_TIMEOUT: ::HRESULT = 0x80042417u32 as i32;
diff --git a/third_party/rust/winapi-0.2.8/src/vswriter.rs b/third_party/rust/winapi-0.2.8/src/vswriter.rs
new file mode 100644
index 0000000000..fd1509c814
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/vswriter.rs
@@ -0,0 +1,241 @@
+// Copyright © 2015, Brian Vincent
+// Licensed under the MIT License <LICENSE.md>
+//! VSS Writer header file
+ENUM!{enum VSS_USAGE_TYPE {
+ VSS_UT_UNDEFINED = 0,
+ VSS_UT_BOOTABLESYSTEMSTATE = 1,
+ VSS_UT_SYSTEMSERVICE = 2,
+ VSS_UT_USERDATA = 3,
+ VSS_UT_OTHER = 4,
+}}
+ENUM!{enum VSS_SOURCE_TYPE {
+ VSS_ST_UNDEFINED = 0,
+ VSS_ST_TRANSACTEDDB = 1,
+ VSS_ST_NONTRANSACTEDDB = 2,
+ VSS_ST_OTHER = 3,
+}}
+ENUM!{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,
+}}
+ENUM!{enum VSS_WRITERRESTORE_ENUM {
+ VSS_WRE_UNDEFINED = 0,
+ VSS_WRE_NEVER = 1,
+ VSS_WRE_IF_REPLACE_FAILS = 2,
+ VSS_WRE_ALWAYS = 3,
+}}
+ENUM!{enum VSS_COMPONENT_TYPE {
+ VSS_CT_UNDEFINED = 0,
+ VSS_CT_DATABASE = 1,
+ VSS_CT_FILEGROUP = 2,
+}}
+ENUM!{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,
+}}
+pub type VSS_SUBSCRIBE_MASK = ::DWORD;
+pub const VSS_SM_POST_SNAPSHOT_FLAG: ::DWORD = 0x00000001;
+pub const VSS_SM_BACKUP_EVENTS_FLAG: ::DWORD = 0x00000002;
+pub const VSS_SM_RESTORE_EVENTS_FLAG: ::DWORD = 0x00000004;
+pub const VSS_SM_IO_THROTTLING_FLAG: ::DWORD = 0x00000008;
+pub const VSS_SM_ALL_FLAGS: ::DWORD = 0xffffffff;
+ENUM!{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,
+}}
+ENUM!{enum VSS_FILE_RESTORE_STATUS {
+ VSS_RS_UNDEFINED = 0,
+ VSS_RS_NONE = 1,
+ VSS_RS_ALL = 2,
+ VSS_RS_FAILED = 3,
+}}
+pub type VSS_COMPONENT_FLAGS = ::DWORD;
+pub const VSS_CF_BACKUP_RECOVERY: ::DWORD = 0x00000001;
+pub const VSS_CF_APP_ROLLBACK_RECOVERY: ::DWORD = 0x00000002;
+pub const VSS_CF_NOT_SYSTEM_STATE: ::DWORD = 0x00000004;
+RIDL!(
+interface IVssWMFiledesc(IVssWMFiledescVtbl): IUnknown(IUnknownVtbl) {
+ fn GetPath(&mut self, pbstrPath: *mut ::BSTR) -> ::HRESULT,
+ fn GetFilespec(&mut self, pbstrFilespec: *mut ::BSTR) -> ::HRESULT,
+ fn GetRecursive(&mut self, pbRecursive: *mut bool) -> ::HRESULT,
+ fn GetAlternateLocation(&mut self, pbstrAlternateLocation: *mut ::BSTR) -> ::HRESULT,
+ fn GetBackupTypeMask(&mut self, pdwTypeMask: *mut ::DWORD) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssWMDependency(IVssWMDependencyVtbl): IUnknown(IUnknownVtbl) {
+ fn GetWriterId(&mut self, pWriterId: *mut ::VSS_ID) -> ::HRESULT,
+ fn GetLogicalPath(&mut self, pbstrLogicalPath: *mut ::BSTR) -> ::HRESULT,
+ fn GetComponentName(&mut self, pbstrComponentName: *mut ::BSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssComponent(IVssComponentVtbl): IUnknown(IUnknownVtbl) {
+ fn GetLogicalPath(&mut self, pbstrPath: *mut ::BSTR) -> ::HRESULT,
+ fn GetComponentType(&mut self, pct: *mut ::VSS_COMPONENT_TYPE) -> ::HRESULT,
+ fn GetComponentName(&mut self, pbstrName: *mut ::BSTR) -> ::HRESULT,
+ fn GetBackupSucceeded(&mut self, pbSucceeded: *mut bool) -> ::HRESULT,
+ fn GetAlternateLocationMappingCount(&mut self, pcMappings: *mut ::UINT) -> ::HRESULT,
+ fn GetAlternateLocationMapping(
+ &mut self, iMapping: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn SetBackupMetadata(&mut self, wszData: ::LPCWSTR) -> ::HRESULT,
+ fn GetBackupMetadata(&mut self, pbstrData: *mut ::BSTR) -> ::HRESULT,
+ fn AddPartialFile(
+ &mut self, wszPath: ::LPCWSTR, wszFilename: ::LPCWSTR, wszRanges: ::LPCWSTR,
+ wszMetadata: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn GetPartialFileCount(&mut self, pcPartialFiles: *mut ::UINT) -> ::HRESULT,
+ fn GetPartialFile(
+ &mut self, iPartialFile: ::UINT, pbstrPath: *mut ::BSTR, pbstrFilename: *mut ::BSTR,
+ pbstrRange: *mut ::BSTR, pbstrMetadata: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn IsSelectedForRestore(&mut self, pbSelectedForRestore: *mut bool) -> ::HRESULT,
+ fn GetAdditionalRestores(&mut self, pbAdditionalRestores: *mut bool) -> ::HRESULT,
+ fn GetNewTargetCount(&mut self, pcNewTarget: *mut ::UINT) -> ::HRESULT,
+ fn GetNewTarget(
+ &mut self, iNewTarget: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc
+ ) -> ::HRESULT,
+ fn AddDirectedTarget(
+ &mut self, wszSourcePath: ::LPCWSTR, wszSourceFilename: ::LPCWSTR,
+ wszSourceRangeList: ::LPCWSTR, wszDestinationPath: ::LPCWSTR,
+ wszDestinationFilename: ::LPCWSTR, wszDestinationRangeList: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn GetDirectedTargetCount(&mut self, pcDirectedTarget: *mut ::UINT) -> ::HRESULT,
+ fn GetDirectedTarget(
+ &mut self, iDirectedTarget: ::UINT, pbstrSourcePath: *mut ::BSTR,
+ pbstrSourceFileName: *mut ::BSTR, pbstrSourceRangeList: *mut ::BSTR,
+ pbstrDestinationPath: *mut ::BSTR, pbstrDestinationFilename: *mut ::BSTR,
+ pbstrDestinationRangeList: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn SetRestoreMetadata(&mut self, wszRestoreMetadata: ::LPCWSTR) -> ::HRESULT,
+ fn GetRestoreMetadata(&mut self, pbstrRestoreMetadata: *mut ::BSTR) -> ::HRESULT,
+ fn SetRestoreTarget(&mut self, target: ::VSS_RESTORE_TARGET) -> ::HRESULT,
+ fn GetRestoreTarget(&mut self, pTarget: *mut ::VSS_RESTORE_TARGET) -> ::HRESULT,
+ fn SetPreRestoreFailureMsg(&mut self, wszPreRestoreFailureMsg: ::LPCWSTR) -> ::HRESULT,
+ fn GetPreRestoreFailureMsg(&mut self, pbstrPreRestoreFailureMsg: *mut ::BSTR) -> ::HRESULT,
+ fn SetPostRestoreFailureMsg(&mut self, wszPostRestoreFailureMsg: ::LPCWSTR) -> ::HRESULT,
+ fn GetPostRestoreFailureMsg(&mut self, pbstrPostRestoreFailureMsg: *mut ::BSTR) -> ::HRESULT,
+ fn SetBackupStamp(&mut self, wszBackupStamp: ::LPCWSTR) -> ::HRESULT,
+ fn GetBackupStamp(&mut self, pbstrBackupStamp: *mut ::BSTR) -> ::HRESULT,
+ fn GetPreviousBackupStamp(&mut self, pbstrBackupStamp: *mut ::BSTR) -> ::HRESULT,
+ fn GetBackupOptions(&mut self, pbstrBackupOptions: *mut ::BSTR) -> ::HRESULT,
+ fn GetRestoreOptions(&mut self, pbstrRestoreOptions: *mut ::BSTR) -> ::HRESULT,
+ fn GetRestoreSubcomponentCount(&mut self, pcRestoreSubcomponent: *mut ::UINT) -> ::HRESULT,
+ fn GetRestoreSubcomponent(
+ &mut self, iComponent: ::UINT, pbstrLogicalPath: *mut ::BSTR,
+ pbstrComponentName: *mut ::BSTR, pbRepair: *mut bool
+ ) -> ::HRESULT,
+ fn GetFileRestoreStatus(&mut self, pStatus: *mut VSS_FILE_RESTORE_STATUS) -> ::HRESULT,
+ fn AddDifferencedFilesByLastModifyTime(
+ &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: ::BOOL,
+ ftLastModifyTime: ::FILETIME
+ ) -> ::HRESULT,
+ fn AddDifferencedFilesByLastModifyLSN(
+ &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: ::BOOL,
+ bstrLsnString: ::BSTR
+ ) -> ::HRESULT,
+ fn GetDifferencedFilesCount(&mut self, pcDifferencedFiles: *mut ::UINT) -> ::HRESULT,
+ fn GetDifferencedFile(
+ &mut self, iDifferencedFile: ::UINT, pbstrPath: *mut ::BSTR, pbstrFilespec: *mut ::BSTR,
+ pbRecursive: *mut ::BOOL, pbstrLsnString: *mut ::BSTR, pftLastModifyTime: *mut ::FILETIME
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssWriterComponents(IVssWriterComponentsVtbl) {
+ fn GetComponentCount(&mut self, pcComponents: *mut ::UINT) -> ::HRESULT,
+ fn GetWriterInfo(
+ &mut self, pidInstance: *mut ::VSS_ID, pidWriter: *mut ::VSS_ID
+ ) -> ::HRESULT,
+ fn GetComponent(
+ &mut self, iComponent: ::UINT, ppComponent: *mut *mut ::IVssComponent
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssComponentEx(IVssComponentExVtbl): IVssComponent(IVssComponentVtbl) {
+ fn SetPrepareForBackupFailureMsg(&mut self, wszFailureMsg: ::LPCWSTR) -> ::HRESULT,
+ fn SetPostSnapshotFailureMsg(&mut self, wszFailureMsg: ::LPCWSTR) -> ::HRESULT,
+ fn GetPrepareForBackupFailureMsg(&mut self, pbstrFailureMsg: *mut ::BSTR) -> ::HRESULT,
+ fn GetPostSnapshotFailureMsg(&mut self, pbstrFailureMsg: *mut ::BSTR) -> ::HRESULT,
+ fn GetAuthoritativeRestore(&mut self, pbAuth: *mut bool) -> ::HRESULT,
+ fn GetRollForward(
+ &mut self, pRollType: *mut ::VSS_ROLLFORWARD_TYPE, pbstrPoint: *mut ::BSTR
+ ) -> ::HRESULT,
+ fn GetRestoreName(&mut self, pbstrName: *mut ::BSTR) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssComponentEx2(IVssComponentEx2Vtbl): IVssComponentEx(IVssComponentExVtbl) {
+ fn SetFailure(
+ &mut self, hr: ::HRESULT, hrApplication: ::HRESULT, wszApplicationMessage: ::LPCWSTR,
+ dwReserved: ::DWORD
+ ) -> ::HRESULT,
+ fn GetFailure(
+ &mut self, phr: *mut ::HRESULT, phrApplication: *mut ::HRESULT,
+ pbstrApplicationMessage: *mut ::BSTR, pdwReserved: *mut ::DWORD
+ ) -> ::HRESULT
+}
+);
+RIDL!(
+interface IVssCreateWriterMetadata(IVssCreateWriterMetadataVtbl) {
+ fn AddIncludeFiles(
+ &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool,
+ wszAlternateLocation: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn AddExcludeFiles(
+ &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool
+ ) -> ::HRESULT,
+ fn AddComponent(
+ &mut self, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR,
+ wszComponentName: ::LPCWSTR, wszCaption: ::LPCWSTR, pbIcon: *const ::BYTE, cbIcon: ::UINT,
+ bRestoreMetadata: bool, bNotifyOnBackupComplete: bool, bSelectableForRestore: bool,
+ dwComponentFlags: ::DWORD
+ ) -> ::HRESULT,
+ fn AddDatabaseFiles(
+ &mut self, wszLogicalPath: ::LPCWSTR, wszDatabaseName: ::LPCWSTR, wszPath: ::LPCWSTR,
+ wszFilespec: ::LPCWSTR, dwBackupTypeMask: ::DWORD
+ ) -> ::HRESULT,
+ fn AddDatabaseLogFiles(&mut self, wszLogicalPath: ::LPCWSTR, wszDatabaseName: ::LPCWSTR,
+ wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, dwBackupTypeMask: ::DWORD
+ ) -> ::HRESULT,
+ fn AddFilesToFileGroup(&mut self, wszLogicalPath: ::LPCWSTR, wszGroupName: ::LPCWSTR,
+ wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool,
+ wszAlternateLocation: ::LPCWSTR, dwBackupTypeMask: ::DWORD
+ ) -> ::HRESULT,
+ fn SetRestoreMethod(&mut self, method: ::VSS_RESTOREMETHOD_ENUM, wszService: ::LPCWSTR,
+ wszUserProcedure: ::LPCWSTR, writerRestore: ::VSS_WRITERRESTORE_ENUM,
+ bRebootRequired: bool
+ ) -> ::HRESULT,
+ fn AddAlternateLocationMapping(&mut self, wszSourcePath: ::LPCWSTR,
+ wszSourceFilespec: ::LPCWSTR, bRecursive: bool, wszDestination: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn AddComponentDependency(&mut self, wszForLogicalPath: ::LPCWSTR,
+ wszForComponentName: ::LPCWSTR, onWriterId: ::VSS_ID, wszOnLogicalPath: ::LPCWSTR,
+ wszOnComponentName: ::LPCWSTR
+ ) -> ::HRESULT,
+ fn SetBackupSchema(&mut self, dwSchemaMask: ::DWORD) -> ::HRESULT,
+ fn GetDocument(&mut self, pDoc: *mut *mut ::VOID) -> ::HRESULT, //TODO IXMLDOMDocument
+ fn SaveAsXML(&mut self, pbstrXML: *mut ::BSTR) -> ::HRESULT
+}
+);
+//IVssCreateWriterMetadataEx
+//IVssWriterImpl
+//IVssCreateExpressWriterMetadata
+//IVssExpressWriter
+//CVssWriter
+//CVssWriterEx
+//CVssWriterEx2
diff --git a/third_party/rust/winapi-0.2.8/src/werapi.rs b/third_party/rust/winapi-0.2.8/src/werapi.rs
new file mode 100644
index 0000000000..33a5a50d7e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/werapi.rs
@@ -0,0 +1,8 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Function prototypes for Windows Error Reporting (WER)
+ENUM!{enum WER_REGISTER_FILE_TYPE {
+ WerRegFileTypeUserDocument = 1,
+ WerRegFileTypeOther = 2,
+ WerRegFileTypeMax,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/winbase.rs b/third_party/rust/winapi-0.2.8/src/winbase.rs
new file mode 100644
index 0000000000..59e3988a17
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winbase.rs
@@ -0,0 +1,552 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This module defines the 32-Bit Windows Base APIs
+pub const FILE_BEGIN: ::DWORD = 0;
+pub const FILE_CURRENT: ::DWORD = 1;
+pub const FILE_END: ::DWORD = 2;
+pub const WAIT_FAILED: ::DWORD = 0xFFFFFFFF;
+pub const WAIT_OBJECT_0: ::DWORD = ::STATUS_WAIT_0 as ::DWORD;
+pub const WAIT_ABANDONED: ::DWORD = ::STATUS_ABANDONED_WAIT_0 as ::DWORD;
+pub const WAIT_ABANDONED_0: ::DWORD = ::STATUS_ABANDONED_WAIT_0 as ::DWORD;
+pub const WAIT_IO_COMPLETION: ::DWORD = ::STATUS_USER_APC as ::DWORD;
+pub const FILE_FLAG_WRITE_THROUGH: ::DWORD = 0x80000000;
+pub const FILE_FLAG_OVERLAPPED: ::DWORD = 0x40000000;
+pub const FILE_FLAG_NO_BUFFERING: ::DWORD = 0x20000000;
+pub const FILE_FLAG_RANDOM_ACCESS: ::DWORD = 0x10000000;
+pub const FILE_FLAG_SEQUENTIAL_SCAN: ::DWORD = 0x08000000;
+pub const FILE_FLAG_DELETE_ON_CLOSE: ::DWORD = 0x04000000;
+pub const FILE_FLAG_BACKUP_SEMANTICS: ::DWORD = 0x02000000;
+pub const FILE_FLAG_POSIX_SEMANTICS: ::DWORD = 0x01000000;
+pub const FILE_FLAG_SESSION_AWARE: ::DWORD = 0x00800000;
+pub const FILE_FLAG_OPEN_REPARSE_POINT: ::DWORD = 0x00200000;
+pub const FILE_FLAG_OPEN_NO_RECALL: ::DWORD = 0x00100000;
+pub const FILE_FLAG_FIRST_PIPE_INSTANCE: ::DWORD = 0x00080000;
+pub const FILE_FLAG_OPEN_REQUIRING_OPLOCK: ::DWORD = 0x00040000;
+pub const PROGRESS_CONTINUE: ::DWORD = 0;
+pub const PROGRESS_CANCEL: ::DWORD = 1;
+pub const PROGRESS_STOP: ::DWORD = 2;
+pub const PROGRESS_QUIET: ::DWORD = 3;
+pub const CALLBACK_CHUNK_FINISHED: ::DWORD = 0x00000000;
+pub const CALLBACK_STREAM_SWITCH: ::DWORD = 0x00000001;
+pub const COPY_FILE_FAIL_IF_EXISTS: ::DWORD = 0x00000001;
+pub const COPY_FILE_RESTARTABLE: ::DWORD = 0x00000002;
+pub const COPY_FILE_OPEN_SOURCE_FOR_WRITE: ::DWORD = 0x00000004;
+pub const COPY_FILE_ALLOW_DECRYPTED_DESTINATION: ::DWORD = 0x00000008;
+pub const COPY_FILE_COPY_SYMLINK: ::DWORD = 0x00000800;
+pub const COPY_FILE_NO_BUFFERING: ::DWORD = 0x00001000;
+pub const COPY_FILE_REQUEST_SECURITY_PRIVILEGES: ::DWORD = 0x00002000;
+pub const COPY_FILE_RESUME_FROM_PAUSE: ::DWORD = 0x00004000;
+pub const COPY_FILE_NO_OFFLOAD: ::DWORD = 0x00040000;
+pub const REPLACEFILE_WRITE_THROUGH: ::DWORD = 0x00000001;
+pub const REPLACEFILE_IGNORE_MERGE_ERRORS: ::DWORD = 0x00000002;
+pub const REPLACEFILE_IGNORE_ACL_ERRORS: ::DWORD = 0x00000004;
+pub const PIPE_ACCESS_INBOUND: ::DWORD = 0x00000001;
+pub const PIPE_ACCESS_OUTBOUND: ::DWORD = 0x00000002;
+pub const PIPE_ACCESS_DUPLEX: ::DWORD = 0x00000003;
+pub const PIPE_CLIENT_END: ::DWORD = 0x00000000;
+pub const PIPE_SERVER_END: ::DWORD = 0x00000001;
+pub const PIPE_WAIT: ::DWORD = 0x00000000;
+pub const PIPE_NOWAIT: ::DWORD = 0x00000001;
+pub const PIPE_READMODE_BYTE: ::DWORD = 0x00000000;
+pub const PIPE_READMODE_MESSAGE: ::DWORD = 0x00000002;
+pub const PIPE_TYPE_BYTE: ::DWORD = 0x00000000;
+pub const PIPE_TYPE_MESSAGE: ::DWORD = 0x00000004;
+pub const PIPE_ACCEPT_REMOTE_CLIENTS: ::DWORD = 0x00000000;
+pub const PIPE_REJECT_REMOTE_CLIENTS: ::DWORD = 0x00000008;
+pub const PIPE_UNLIMITED_INSTANCES: ::DWORD = 255;
+//270
+pub const SECURITY_CONTEXT_TRACKING: ::DWORD = 0x00040000;
+pub const SECURITY_EFFECTIVE_ONLY: ::DWORD = 0x00080000;
+pub const SECURITY_SQOS_PRESENT: ::DWORD = 0x00100000;
+pub const SECURITY_VALID_SQOS_FLAGS: ::DWORD = 0x001F0000;
+//282
+pub type PFIBER_START_ROUTINE = Option<unsafe extern "system" fn(lpFiberParameter: ::LPVOID)>;
+pub type LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE;
+pub type PFIBER_CALLOUT_ROUTINE = Option<unsafe extern "system" fn(
+ lpParameter: ::LPVOID,
+) -> ::LPVOID>;
+//299
+pub type LPLDT_ENTRY = ::LPVOID; // TODO - fix this for 32-bit
+//405
+STRUCT!{struct COMMPROP {
+ wPacketLength: ::WORD,
+ wPacketVersion: ::WORD,
+ dwServiceMask: ::DWORD,
+ dwReserved1: ::DWORD,
+ dwMaxTxQueue: ::DWORD,
+ dwMaxRxQueue: ::DWORD,
+ dwMaxBaud: ::DWORD,
+ dwProvSubType: ::DWORD,
+ dwProvCapabilities: ::DWORD,
+ dwSettableParams: ::DWORD,
+ dwSettableBaud: ::DWORD,
+ wSettableData: ::WORD,
+ wSettableStopParity: ::WORD,
+ dwCurrentTxQueue: ::DWORD,
+ dwCurrentRxQueue: ::DWORD,
+ dwProvSpec1: ::DWORD,
+ dwProvSpec2: ::DWORD,
+ wcProvChar: [::WCHAR; 1],
+}}
+pub type LPCOMMPROP = *mut COMMPROP;
+//432
+STRUCT!{struct COMSTAT {
+ BitFields: ::DWORD,
+ cbInQue: ::DWORD,
+ cbOutQue : ::DWORD,
+}}
+BITFIELD!(COMSTAT BitFields: ::DWORD [
+ fCtsHold set_fCtsHold[0..1],
+ fDsrHold set_fDsrHold[1..2],
+ fRlsdHold set_fRlsdHold[2..3],
+ fXoffHold set_fXoffHold[3..4],
+ fXoffSent set_fXoffSent[4..5],
+ fEof set_fEof[5..6],
+ fTxim set_fTxim[6..7],
+ fReserved set_fReserved[7..32],
+]);
+pub type LPCOMSTAT = *mut COMSTAT;
+//460
+STRUCT!{struct DCB {
+ DCBlength: ::DWORD,
+ BaudRate: ::DWORD,
+ BitFields: ::DWORD,
+ wReserved: ::WORD,
+ XonLim: ::WORD,
+ XoffLim: ::WORD,
+ ByteSize: ::BYTE,
+ Parity: ::BYTE,
+ StopBits: ::BYTE,
+ XonChar: ::c_char,
+ XoffChar: ::c_char,
+ ErrorChar: ::c_char,
+ EofChar: ::c_char,
+ EvtChar: ::c_char,
+ wReserved1: ::WORD,
+}}
+BITFIELD!(DCB BitFields: ::DWORD [
+ fBinary set_fBinary[0..1],
+ fParity set_fParity[1..2],
+ fOutxCtsFlow set_fOutxCtsFlow[2..3],
+ fOutxDsrFlow set_fOutxDsrFlow[3..4],
+ fDtrControl set_fDtrControl[4..6],
+ fDsrSensitivity set_fDsrSensitivity[6..7],
+ fTXContinueOnXoff set_fTXContinueOnXoff[7..8],
+ fOutX set_fOutX[8..9],
+ fInX set_fInX[9..10],
+ fErrorChar set_fErrorChar[10..11],
+ fNull set_fNull[11..12],
+ fRtsControl set_fRtsControl[12..14],
+ fAbortOnError set_fAbortOnError[14..15],
+ fDummy2 set_fDummy2[15..32],
+]);
+pub type LPDCB = *mut DCB;
+STRUCT!{struct COMMTIMEOUTS {
+ ReadIntervalTimeout: ::DWORD,
+ ReadTotalTimeoutMultiplier: ::DWORD,
+ ReadTotalTimeoutConstant: ::DWORD,
+ WriteTotalTimeoutMultiplier: ::DWORD,
+ WriteTotalTimeoutConstant: ::DWORD,
+}}
+pub type LPCOMMTIMEOUTS = *mut COMMTIMEOUTS;
+STRUCT!{struct COMMCONFIG {
+ dwSize: ::DWORD,
+ wVersion: ::WORD,
+ wReserved: ::WORD,
+ dcb: DCB,
+ dwProviderSubType: ::DWORD,
+ dwProviderOffset: ::DWORD,
+ dwProviderSize: ::DWORD,
+ wcProviderData: [::WCHAR; 1],
+}}
+pub type LPCOMMCONFIG = *mut COMMCONFIG;
+//547
+STRUCT!{struct MEMORYSTATUS {
+ dwLength: ::DWORD,
+ dwMemoryLoad: ::DWORD,
+ dwTotalPhys: ::SIZE_T,
+ dwAvailPhys: ::SIZE_T,
+ dwTotalPageFile: ::SIZE_T,
+ dwAvailPageFile: ::SIZE_T,
+ dwTotalVirtual: ::SIZE_T,
+ dwAvailVirtual: ::SIZE_T,
+}}
+pub type LPMEMORYSTATUS = *mut MEMORYSTATUS;
+//568
+pub const DEBUG_PROCESS: ::DWORD = 0x00000001;
+pub const DEBUG_ONLY_THIS_PROCESS: ::DWORD = 0x00000002;
+pub const CREATE_SUSPENDED: ::DWORD = 0x00000004;
+pub const DETACHED_PROCESS: ::DWORD = 0x00000008;
+pub const CREATE_NEW_CONSOLE: ::DWORD = 0x00000010;
+pub const NORMAL_PRIORITY_CLASS: ::DWORD = 0x00000020;
+pub const IDLE_PRIORITY_CLASS: ::DWORD = 0x00000040;
+pub const HIGH_PRIORITY_CLASS: ::DWORD = 0x00000080;
+pub const REALTIME_PRIORITY_CLASS: ::DWORD = 0x00000100;
+pub const CREATE_NEW_PROCESS_GROUP: ::DWORD = 0x00000200;
+pub const CREATE_UNICODE_ENVIRONMENT: ::DWORD = 0x00000400;
+pub const CREATE_SEPARATE_WOW_VDM: ::DWORD = 0x00000800;
+pub const CREATE_SHARED_WOW_VDM: ::DWORD = 0x00001000;
+pub const CREATE_FORCEDOS: ::DWORD = 0x00002000;
+pub const BELOW_NORMAL_PRIORITY_CLASS: ::DWORD = 0x00004000;
+pub const ABOVE_NORMAL_PRIORITY_CLASS: ::DWORD = 0x00008000;
+pub const INHERIT_PARENT_AFFINITY: ::DWORD = 0x00010000;
+pub const INHERIT_CALLER_PRIORITY: ::DWORD = 0x00020000;
+pub const CREATE_PROTECTED_PROCESS: ::DWORD = 0x00040000;
+pub const EXTENDED_STARTUPINFO_PRESENT: ::DWORD = 0x00080000;
+pub const PROCESS_MODE_BACKGROUND_BEGIN: ::DWORD = 0x00100000;
+pub const PROCESS_MODE_BACKGROUND_END: ::DWORD = 0x00200000;
+pub const CREATE_BREAKAWAY_FROM_JOB: ::DWORD = 0x01000000;
+pub const CREATE_PRESERVE_CODE_AUTHZ_LEVEL: ::DWORD = 0x02000000;
+pub const CREATE_DEFAULT_ERROR_MODE: ::DWORD = 0x04000000;
+pub const CREATE_NO_WINDOW: ::DWORD = 0x08000000;
+pub const PROFILE_USER: ::DWORD = 0x10000000;
+pub const PROFILE_KERNEL: ::DWORD = 0x20000000;
+pub const PROFILE_SERVER: ::DWORD = 0x40000000;
+pub const CREATE_IGNORE_SYSTEM_DEFAULT: ::DWORD = 0x80000000;
+//618
+pub const THREAD_PRIORITY_LOWEST: ::DWORD = ::THREAD_BASE_PRIORITY_MIN;
+pub const THREAD_PRIORITY_BELOW_NORMAL: ::DWORD = THREAD_PRIORITY_LOWEST + 1;
+pub const THREAD_PRIORITY_NORMAL: ::DWORD = 0;
+pub const THREAD_PRIORITY_HIGHEST: ::DWORD = ::THREAD_BASE_PRIORITY_MAX;
+pub const THREAD_PRIORITY_ABOVE_NORMAL: ::DWORD = THREAD_PRIORITY_HIGHEST - 1;
+pub const THREAD_PRIORITY_ERROR_RETURN: ::DWORD = ::MAXLONG as ::DWORD;
+pub const THREAD_PRIORITY_TIME_CRITICAL: ::DWORD = ::THREAD_BASE_PRIORITY_LOWRT;
+pub const THREAD_PRIORITY_IDLE: ::DWORD = ::THREAD_BASE_PRIORITY_IDLE;
+pub const THREAD_MODE_BACKGROUND_BEGIN: ::DWORD = 0x00010000;
+pub const THREAD_MODE_BACKGROUND_END: ::DWORD = 0x00020000;
+//666
+pub const DRIVE_UNKNOWN: ::DWORD = 0;
+pub const DRIVE_NO_ROOT_DIR: ::DWORD = 1;
+pub const DRIVE_REMOVABLE: ::DWORD = 2;
+pub const DRIVE_FIXED: ::DWORD = 3;
+pub const DRIVE_REMOTE: ::DWORD = 4;
+pub const DRIVE_CDROM: ::DWORD = 5;
+pub const DRIVE_RAMDISK: ::DWORD = 6;
+pub const FILE_TYPE_UNKNOWN: ::DWORD = 0x0000;
+pub const FILE_TYPE_DISK: ::DWORD = 0x0001;
+pub const FILE_TYPE_CHAR: ::DWORD = 0x0002;
+pub const FILE_TYPE_PIPE: ::DWORD = 0x0003;
+pub const FILE_TYPE_REMOTE: ::DWORD = 0x8000;
+pub const STD_INPUT_HANDLE: ::DWORD = 0xFFFFFFF6;
+pub const STD_OUTPUT_HANDLE: ::DWORD = 0xFFFFFFF5;
+pub const STD_ERROR_HANDLE: ::DWORD = 0xFFFFFFF4;
+pub const NOPARITY: ::DWORD = 0;
+pub const ODDPARITY: ::DWORD = 1;
+pub const EVENPARITY: ::DWORD = 2;
+pub const MARKPARITY: ::DWORD = 3;
+pub const SPACEPARITY: ::DWORD = 4;
+pub const ONESTOPBIT: ::DWORD = 0;
+pub const ONE5STOPBITS: ::DWORD = 1;
+pub const TWOSTOPBITS: ::DWORD = 2;
+pub const IGNORE: ::DWORD = 0;
+pub const INFINITE: ::DWORD = 0xFFFFFFFF;
+//1729
+pub const SEM_FAILCRITICALERRORS: ::UINT = 0x0001;
+pub const SEM_NOGPFAULTERRORBOX: ::UINT = 0x0002;
+pub const SEM_NOALIGNMENTFAULTEXCEPT: ::UINT = 0x0004;
+pub const SEM_NOOPENFILEERRORBOX: ::UINT = 0x8000;
+//2320
+pub const FORMAT_MESSAGE_IGNORE_INSERTS: ::DWORD = 0x00000200;
+pub const FORMAT_MESSAGE_FROM_STRING: ::DWORD = 0x00000400;
+pub const FORMAT_MESSAGE_FROM_HMODULE: ::DWORD = 0x00000800;
+pub const FORMAT_MESSAGE_FROM_SYSTEM: ::DWORD = 0x00001000;
+pub const FORMAT_MESSAGE_ARGUMENT_ARRAY: ::DWORD = 0x00002000;
+pub const FORMAT_MESSAGE_MAX_WIDTH_MASK: ::DWORD = 0x000000FF;
+pub const FORMAT_MESSAGE_ALLOCATE_BUFFER: ::DWORD = 0x00000100;
+//2873
+pub const STARTF_USESHOWWINDOW: ::DWORD = 0x00000001;
+pub const STARTF_USESIZE: ::DWORD = 0x00000002;
+pub const STARTF_USEPOSITION: ::DWORD = 0x00000004;
+pub const STARTF_USECOUNTCHARS: ::DWORD = 0x00000008;
+pub const STARTF_USEFILLATTRIBUTE: ::DWORD = 0x00000010;
+pub const STARTF_RUNFULLSCREEN: ::DWORD = 0x00000020;
+pub const STARTF_FORCEONFEEDBACK: ::DWORD = 0x00000040;
+pub const STARTF_FORCEOFFFEEDBACK: ::DWORD = 0x00000080;
+pub const STARTF_USESTDHANDLES: ::DWORD = 0x00000100;
+pub const STARTF_USEHOTKEY: ::DWORD = 0x00000200;
+pub const STARTF_TITLEISLINKNAME: ::DWORD = 0x00000800;
+pub const STARTF_TITLEISAPPID: ::DWORD = 0x00001000;
+pub const STARTF_PREVENTPINNING: ::DWORD = 0x00002000;
+pub const STARTF_UNTRUSTEDSOURCE: ::DWORD = 0x00008000;
+//5002
+pub type LPPROGRESS_ROUTINE = Option<unsafe extern "system" fn(
+ TotalFileSize: ::LARGE_INTEGER, TotalBytesTransferred: ::LARGE_INTEGER,
+ StreamSize: ::LARGE_INTEGER, StreamBytesTransferred: ::LARGE_INTEGER, dwStreamNumber: ::DWORD,
+ dwCallbackReason: ::DWORD, hSourceFile: ::HANDLE, hDestinationFile: ::HANDLE, lpData: ::LPVOID,
+) -> ::DWORD>;
+//5095
+ENUM!{enum COPYFILE2_MESSAGE_TYPE {
+ COPYFILE2_CALLBACK_NONE = 0,
+ COPYFILE2_CALLBACK_CHUNK_STARTED,
+ COPYFILE2_CALLBACK_CHUNK_FINISHED,
+ COPYFILE2_CALLBACK_STREAM_STARTED,
+ COPYFILE2_CALLBACK_STREAM_FINISHED,
+ COPYFILE2_CALLBACK_POLL_CONTINUE,
+ COPYFILE2_CALLBACK_ERROR,
+ COPYFILE2_CALLBACK_MAX,
+}}
+ENUM!{enum COPYFILE2_MESSAGE_ACTION {
+ COPYFILE2_PROGRESS_CONTINUE = 0,
+ COPYFILE2_PROGRESS_CANCEL,
+ COPYFILE2_PROGRESS_STOP,
+ COPYFILE2_PROGRESS_QUIET,
+ COPYFILE2_PROGRESS_PAUSE,
+}}
+ENUM!{enum COPYFILE2_COPY_PHASE {
+ COPYFILE2_PHASE_NONE = 0,
+ COPYFILE2_PHASE_PREPARE_SOURCE,
+ COPYFILE2_PHASE_PREPARE_DEST,
+ COPYFILE2_PHASE_READ_SOURCE,
+ COPYFILE2_PHASE_WRITE_DESTINATION,
+ COPYFILE2_PHASE_SERVER_COPY,
+ COPYFILE2_PHASE_NAMEGRAFT_COPY,
+ COPYFILE2_PHASE_MAX,
+}}
+//5129
+STRUCT!{struct COPYFILE2_MESSAGE_ChunkStarted {
+ dwStreamNumber: ::DWORD,
+ dwReserved: ::DWORD,
+ hSourceFile: ::HANDLE,
+ hDestinationFile: ::HANDLE,
+ uliChunkNumber: ::ULARGE_INTEGER,
+ uliChunkSize: ::ULARGE_INTEGER,
+ uliStreamSize: ::ULARGE_INTEGER,
+ uliTotalFileSize: ::ULARGE_INTEGER,
+}}
+STRUCT!{struct COPYFILE2_MESSAGE_ChunkFinished {
+ dwStreamNumber: ::DWORD,
+ dwFlags: ::DWORD,
+ hSourceFile: ::HANDLE,
+ hDestinationFile: ::HANDLE,
+ uliChunkNumber: ::ULARGE_INTEGER,
+ uliChunkSize: ::ULARGE_INTEGER,
+ uliStreamSize: ::ULARGE_INTEGER,
+ uliStreamBytesTransferred: ::ULARGE_INTEGER,
+ uliTotalFileSize: ::ULARGE_INTEGER,
+ uliTotalBytesTransferred: ::ULARGE_INTEGER,
+}}
+STRUCT!{struct COPYFILE2_MESSAGE_StreamStarted {
+ dwStreamNumber: ::DWORD,
+ dwReserved: ::DWORD,
+ hSourceFile: ::HANDLE,
+ hDestinationFile: ::HANDLE,
+ uliStreamSize: ::ULARGE_INTEGER,
+ uliTotalFileSize: ::ULARGE_INTEGER,
+}}
+STRUCT!{struct COPYFILE2_MESSAGE_StreamFinished {
+ dwStreamNumber: ::DWORD,
+ dwReserved: ::DWORD,
+ hSourceFile: ::HANDLE,
+ hDestinationFile: ::HANDLE,
+ uliStreamSize: ::ULARGE_INTEGER,
+ uliStreamBytesTransferred: ::ULARGE_INTEGER,
+ uliTotalFileSize: ::ULARGE_INTEGER,
+ uliTotalBytesTransferred: ::ULARGE_INTEGER,
+}}
+STRUCT!{struct COPYFILE2_MESSAGE_PollContinue {
+ dwReserved: ::DWORD,
+}}
+STRUCT!{struct COPYFILE2_MESSAGE_Error {
+ CopyPhase: COPYFILE2_COPY_PHASE,
+ dwStreamNumber: ::DWORD,
+ hrFailure: ::HRESULT,
+ dwReserved: ::DWORD,
+ uliChunkNumber: ::ULARGE_INTEGER,
+ uliStreamSize: ::ULARGE_INTEGER,
+ uliStreamBytesTransferred: ::ULARGE_INTEGER,
+ uliTotalFileSize: ::ULARGE_INTEGER,
+ uliTotalBytesTransferred: ::ULARGE_INTEGER,
+}}
+#[cfg(target_arch="x86")]
+STRUCT!{struct COPYFILE2_MESSAGE {
+ Type: COPYFILE2_MESSAGE_TYPE,
+ dwPadding: ::DWORD,
+ Info: [u64; 8],
+}}
+#[cfg(target_arch="x86_64")]
+STRUCT!{struct COPYFILE2_MESSAGE {
+ Type: COPYFILE2_MESSAGE_TYPE,
+ dwPadding: ::DWORD,
+ Info: [u64; 9],
+}}
+UNION!{COPYFILE2_MESSAGE, Info, ChunkStarted, ChunkStarted_mut, COPYFILE2_MESSAGE_ChunkStarted}
+UNION!{COPYFILE2_MESSAGE, Info, ChunkFinished, ChunkFinished_mut, COPYFILE2_MESSAGE_ChunkFinished}
+UNION!{COPYFILE2_MESSAGE, Info, StreamStarted, StreamStarted_mut, COPYFILE2_MESSAGE_StreamStarted}
+UNION!{COPYFILE2_MESSAGE, Info, StreamFinished, StreamFinished_mut,
+ COPYFILE2_MESSAGE_StreamFinished}
+UNION!{COPYFILE2_MESSAGE, Info, PollContinue, PollContinue_mut, COPYFILE2_MESSAGE_PollContinue}
+UNION!{COPYFILE2_MESSAGE, Info, Error, Error_mut, COPYFILE2_MESSAGE_Error}
+pub type PCOPYFILE2_PROGRESS_ROUTINE = Option<unsafe extern "system" fn(
+ pMessage: *const COPYFILE2_MESSAGE, pvCallbackContext: ::PVOID,
+) -> COPYFILE2_MESSAGE_ACTION>;
+STRUCT!{nodebug struct COPYFILE2_EXTENDED_PARAMETERS {
+ dwSize: ::DWORD,
+ dwCopyFlags: ::DWORD,
+ pfCancel: *mut ::BOOL,
+ pProgressRoutine: PCOPYFILE2_PROGRESS_ROUTINE,
+ pvCallbackContext: ::PVOID,
+}}
+//5377
+pub const MOVEFILE_REPLACE_EXISTING: ::DWORD = 0x00000001;
+pub const MOVEFILE_COPY_ALLOWED: ::DWORD = 0x00000002;
+pub const MOVEFILE_DELAY_UNTIL_REBOOT: ::DWORD = 0x00000004;
+pub const MOVEFILE_WRITE_THROUGH: ::DWORD = 0x00000008;
+pub const MOVEFILE_CREATE_HARDLINK: ::DWORD = 0x00000010;
+pub const MOVEFILE_FAIL_IF_NOT_TRACKABLE: ::DWORD = 0x00000020;
+//7176
+pub const HW_PROFILE_GUIDLEN: usize = 39;
+//pub const MAX_PROFILE_LEN: usize = 80;
+pub const DOCKINFO_UNDOCKED: ::DWORD = 0x1;
+pub const DOCKINFO_DOCKED: ::DWORD = 0x2;
+pub const DOCKINFO_USER_SUPPLIED: ::DWORD = 0x4;
+pub const DOCKINFO_USER_UNDOCKED: ::DWORD = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED;
+pub const DOCKINFO_USER_DOCKED: ::DWORD = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED;
+STRUCT!{nodebug struct HW_PROFILE_INFOA {
+ dwDockInfo: ::DWORD,
+ szHwProfileGuid: [::CHAR; HW_PROFILE_GUIDLEN],
+ szHwProfileName: [::CHAR; ::MAX_PROFILE_LEN],
+}}
+pub type LPHW_PROFILE_INFOA = *mut HW_PROFILE_INFOA;
+STRUCT!{nodebug struct HW_PROFILE_INFOW {
+ dwDockInfo: ::DWORD,
+ szHwProfileGuid: [::WCHAR; HW_PROFILE_GUIDLEN],
+ szHwProfileName: [::WCHAR; ::MAX_PROFILE_LEN],
+}}
+pub type LPHW_PROFILE_INFOW = *mut HW_PROFILE_INFOW;
+//7574
+STRUCT!{struct ACTCTXA {
+ cbSize: ::ULONG,
+ dwFlags: ::DWORD,
+ lpSource: ::LPCSTR,
+ wProcessorArchitecture: ::USHORT,
+ wLangId: ::LANGID,
+ lpAssemblyDirectory: ::LPCSTR,
+ lpResourceName: ::LPCSTR,
+ lpApplicationName: ::LPCSTR,
+ hModule: ::HMODULE,
+}}
+pub type PACTCTXA = *mut ACTCTXA;
+STRUCT!{struct ACTCTXW {
+ cbSize: ::ULONG,
+ dwFlags: ::DWORD,
+ lpSource: ::LPCWSTR,
+ wProcessorArchitecture: ::USHORT,
+ wLangId: ::LANGID,
+ lpAssemblyDirectory: ::LPCWSTR,
+ lpResourceName: ::LPCWSTR,
+ lpApplicationName: ::LPCWSTR,
+ hModule: ::HMODULE,
+}}
+pub type PACTCTXW = *mut ACTCTXW;
+pub type PCACTCTXA = *const ACTCTXA;
+pub type PCACTCTXW = *const ACTCTXW;
+//
+pub type PUMS_CONTEXT = *mut ::c_void;
+pub type PUMS_COMPLETION_LIST = *mut ::c_void;
+pub type UMS_THREAD_INFO_CLASS = ::RTL_UMS_THREAD_INFO_CLASS;
+pub type PUMS_THREAD_INFO_CLASS = *mut UMS_THREAD_INFO_CLASS;
+pub type PUMS_SCHEDULER_ENTRY_POINT = ::PRTL_UMS_SCHEDULER_ENTRY_POINT;
+STRUCT!{nodebug struct UMS_SCHEDULER_STARTUP_INFO {
+ UmsVersion: ::ULONG,
+ CompletionList: PUMS_COMPLETION_LIST,
+ SchedulerProc: PUMS_SCHEDULER_ENTRY_POINT,
+ SchedulerParam: ::PVOID,
+}}
+pub type PUMS_SCHEDULER_STARTUP_INFO = *mut UMS_SCHEDULER_STARTUP_INFO;
+STRUCT!{struct UMS_SYSTEM_THREAD_INFORMATION {
+ UmsVersion: ::ULONG,
+ BitFields: ::ULONG,
+}}
+BITFIELD!(UMS_SYSTEM_THREAD_INFORMATION BitFields: ::ULONG [
+ IsUmsSchedulerThread set_IsUmsSchedulerThread[0..1],
+ IsUmsWorkerThread set_IsUmsWorkerThread[1..2],
+]);
+UNION!(
+ UMS_SYSTEM_THREAD_INFORMATION, BitFields, ThreadUmsFlags, ThreadUmsFlags_mut,
+ ::ULONG
+);
+pub type PUMS_SYSTEM_THREAD_INFORMATION = *mut UMS_SYSTEM_THREAD_INFORMATION;
+STRUCT!{struct ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
+ lpInformation: ::PVOID,
+ lpSectionBase: ::PVOID,
+ ulSectionLength: ::ULONG,
+ lpSectionGlobalDataBase: ::PVOID,
+ ulSectionGlobalDataLength: ::ULONG,
+}}
+pub type PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA =
+ *mut ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
+pub type PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA =
+ *const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
+STRUCT!{struct ACTCTX_SECTION_KEYED_DATA {
+ cbSize: ::ULONG,
+ ulDataFormatVersion: ::ULONG,
+ lpData: ::PVOID,
+ ulLength: ::ULONG,
+ lpSectionGlobalData: ::PVOID,
+ ulSectionGlobalDataLength: ::ULONG,
+ lpSectionBase: ::PVOID,
+ ulSectionTotalLength: ::ULONG,
+ hActCtx: ::HANDLE,
+ ulAssemblyRosterIndex: ::ULONG,
+ ulFlags: ::ULONG,
+ AssemblyMetadata: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,
+}}
+pub type PACTCTX_SECTION_KEYED_DATA = *mut ACTCTX_SECTION_KEYED_DATA;
+pub type PCACTCTX_SECTION_KEYED_DATA = *const ACTCTX_SECTION_KEYED_DATA;
+ENUM!{enum STREAM_INFO_LEVELS {
+ FindStreamInfoStandard,
+ FindStreamInfoMaxInfoLevel,
+}}
+ENUM!{enum PROCESS_INFORMATION_CLASS {
+ ProcessMemoryPriority,
+ ProcessInformationClassMax,
+}}
+ENUM!{enum DEP_SYSTEM_POLICY_TYPE {
+ DEPPolicyAlwaysOff = 0,
+ DEPPolicyAlwaysOn,
+ DEPPolicyOptIn,
+ DEPPolicyOptOut,
+ DEPTotalPolicyCount,
+}}
+ENUM!{enum PIPE_ATTRIBUTE_TYPE {
+ PipeAttribute,
+ PipeConnectionAttribute,
+ PipeHandleAttribute,
+}}
+pub type APPLICATION_RECOVERY_CALLBACK = Option<unsafe extern "system" fn(
+ pvParameter: ::PVOID
+) -> ::DWORD>;
+STRUCT!{struct SYSTEM_POWER_STATUS {
+ ACLineStatus: ::BYTE,
+ BatteryFlag: ::BYTE,
+ BatteryLifePercent: ::BYTE,
+ Reserved1: ::BYTE,
+ BatteryLifeTime: ::DWORD,
+ BatteryFullLifeTime: ::DWORD,
+}}
+pub type LPSYSTEM_POWER_STATUS = *mut SYSTEM_POWER_STATUS;
+pub const OFS_MAXPATHNAME: usize = 128;
+STRUCT!{nodebug struct OFSTRUCT {
+ cBytes: ::BYTE,
+ fFixedDisk: ::BYTE,
+ nErrCode: ::WORD,
+ Reserved1: ::WORD,
+ Reserved2: ::WORD,
+ szPathName: [::CHAR; OFS_MAXPATHNAME],
+}}
+pub type POFSTRUCT = *mut OFSTRUCT;
+pub type LPOFSTRUCT = *mut OFSTRUCT;
+ENUM!{enum FILE_ID_TYPE {
+ FileIdType,
+ ObjectIdType,
+ ExtendedFileIdType,
+ MaximumFileIdType,
+}}
+STRUCT!{struct FILE_ID_DESCRIPTOR {
+ dwSize: ::DWORD,
+ Type: FILE_ID_TYPE,
+ ObjectId: ::GUID,
+}}
+UNION!(FILE_ID_DESCRIPTOR, ObjectId, FileId, FileId_mut, ::LARGE_INTEGER);
+UNION!(FILE_ID_DESCRIPTOR, ObjectId, ExtendedFileId, ExtendedFileId_mut, ::FILE_ID_128);
+pub type LPFILE_ID_DESCRIPTOR = *mut FILE_ID_DESCRIPTOR;
diff --git a/third_party/rust/winapi-0.2.8/src/wincon.rs b/third_party/rust/winapi-0.2.8/src/wincon.rs
new file mode 100644
index 0000000000..23c2e74244
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/wincon.rs
@@ -0,0 +1,198 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This module contains the public data structures, data types, and procedures exported by the NT
+//! console subsystem.
+STRUCT!{struct COORD {
+ X: ::SHORT,
+ Y: ::SHORT,
+}}
+pub type PCOORD = *mut COORD;
+STRUCT!{struct SMALL_RECT {
+ Left: ::SHORT,
+ Top: ::SHORT,
+ Right: ::SHORT,
+ Bottom: ::SHORT,
+}}
+pub type PSMALL_RECT = *mut SMALL_RECT;
+STRUCT!{struct KEY_EVENT_RECORD {
+ bKeyDown: ::BOOL,
+ wRepeatCount: ::WORD,
+ wVirtualKeyCode: ::WORD,
+ wVirtualScanCode: ::WORD,
+ UnicodeChar: ::WCHAR,
+ dwControlKeyState: ::DWORD,
+}}
+UNION!{KEY_EVENT_RECORD, UnicodeChar, AsciiChar, AsciiChar_mut, ::CHAR}
+pub type PKEY_EVENT_RECORD = *mut KEY_EVENT_RECORD;
+pub const RIGHT_ALT_PRESSED: ::DWORD = 0x0001;
+pub const LEFT_ALT_PRESSED: ::DWORD = 0x0002;
+pub const RIGHT_CTRL_PRESSED: ::DWORD = 0x0004;
+pub const LEFT_CTRL_PRESSED: ::DWORD = 0x0008;
+pub const SHIFT_PRESSED: ::DWORD = 0x0010;
+pub const NUMLOCK_ON: ::DWORD = 0x0020;
+pub const SCROLLLOCK_ON: ::DWORD = 0x0040;
+pub const CAPSLOCK_ON: ::DWORD = 0x0080;
+pub const ENHANCED_KEY: ::DWORD = 0x0100;
+pub const NLS_DBCSCHAR: ::DWORD = 0x00010000;
+pub const NLS_ALPHANUMERIC: ::DWORD = 0x00000000;
+pub const NLS_KATAKANA: ::DWORD = 0x00020000;
+pub const NLS_HIRAGANA: ::DWORD = 0x00040000;
+pub const NLS_ROMAN: ::DWORD = 0x00400000;
+pub const NLS_IME_CONVERSION: ::DWORD = 0x00800000;
+pub const NLS_IME_DISABLE: ::DWORD = 0x20000000;
+STRUCT!{struct MOUSE_EVENT_RECORD {
+ dwMousePosition: COORD,
+ dwButtonState: ::DWORD,
+ dwControlKeyState: ::DWORD,
+ dwEventFlags: ::DWORD,
+}}
+pub type PMOUSE_EVENT_RECORD = *mut MOUSE_EVENT_RECORD;
+pub const FROM_LEFT_1ST_BUTTON_PRESSED: ::DWORD = 0x0001;
+pub const RIGHTMOST_BUTTON_PRESSED: ::DWORD = 0x0002;
+pub const FROM_LEFT_2ND_BUTTON_PRESSED: ::DWORD = 0x0004;
+pub const FROM_LEFT_3RD_BUTTON_PRESSED: ::DWORD = 0x0008;
+pub const FROM_LEFT_4TH_BUTTON_PRESSED: ::DWORD = 0x0010;
+pub const MOUSE_MOVED: ::DWORD = 0x0001;
+pub const DOUBLE_CLICK: ::DWORD = 0x0002;
+pub const MOUSE_WHEELED: ::DWORD = 0x0004;
+pub const MOUSE_HWHEELED: ::DWORD = 0x0008;
+STRUCT!{struct WINDOW_BUFFER_SIZE_RECORD {
+ dwSize: COORD,
+}}
+pub type PWINDOW_BUFFER_SIZE_RECORD = *mut WINDOW_BUFFER_SIZE_RECORD;
+STRUCT!{struct MENU_EVENT_RECORD {
+ dwCommandId: ::UINT,
+}}
+pub type PMENU_EVENT_RECORD = *mut MENU_EVENT_RECORD;
+STRUCT!{struct FOCUS_EVENT_RECORD {
+ bSetFocus: ::BOOL,
+}}
+pub type PFOCUS_EVENT_RECORD = *mut FOCUS_EVENT_RECORD;
+STRUCT!{struct INPUT_RECORD {
+ EventType: ::WORD,
+ Event: [u32; 4],
+}}
+UNION!{INPUT_RECORD, Event, KeyEvent, KeyEvent_mut, KEY_EVENT_RECORD}
+UNION!{INPUT_RECORD, Event, MouseEvent, MouseEvent_mut, MOUSE_EVENT_RECORD}
+UNION!{INPUT_RECORD, Event, WindowBufferSizeEvent, WindowBufferSizeEvent_mut,
+ WINDOW_BUFFER_SIZE_RECORD}
+UNION!{INPUT_RECORD, Event, MenuEvent, MenuEvent_mut, MENU_EVENT_RECORD}
+UNION!{INPUT_RECORD, Event, FocusEvent, FocusEvent_mut, FOCUS_EVENT_RECORD}
+pub type PINPUT_RECORD = *mut INPUT_RECORD;
+pub const KEY_EVENT: ::WORD = 0x0001;
+pub const MOUSE_EVENT: ::WORD = 0x0002;
+pub const WINDOW_BUFFER_SIZE_EVENT: ::WORD = 0x0004;
+pub const MENU_EVENT: ::WORD = 0x0008;
+pub const FOCUS_EVENT: ::WORD = 0x0010;
+STRUCT!{struct CHAR_INFO {
+ UnicodeChar: ::WCHAR,
+ Attributes: ::WORD,
+}}
+UNION!{CHAR_INFO, UnicodeChar, AsciiChar, AsciiChar_mut, ::CHAR}
+pub type PCHAR_INFO = *mut CHAR_INFO;
+pub const FOREGROUND_BLUE: ::DWORD = 0x0001;
+pub const FOREGROUND_GREEN: ::DWORD = 0x0002;
+pub const FOREGROUND_RED: ::DWORD = 0x0004;
+pub const FOREGROUND_INTENSITY: ::DWORD = 0x0008;
+pub const BACKGROUND_BLUE: ::DWORD = 0x0010;
+pub const BACKGROUND_GREEN: ::DWORD = 0x0020;
+pub const BACKGROUND_RED: ::DWORD = 0x0040;
+pub const BACKGROUND_INTENSITY: ::DWORD = 0x0080;
+pub const COMMON_LVB_LEADING_BYTE: ::DWORD = 0x0100;
+pub const COMMON_LVB_TRAILING_BYTE: ::DWORD = 0x0200;
+pub const COMMON_LVB_GRID_HORIZONTAL: ::DWORD = 0x0400;
+pub const COMMON_LVB_GRID_LVERTICAL: ::DWORD = 0x0800;
+pub const COMMON_LVB_GRID_RVERTICAL: ::DWORD = 0x1000;
+pub const COMMON_LVB_REVERSE_VIDEO: ::DWORD = 0x4000;
+pub const COMMON_LVB_UNDERSCORE: ::DWORD = 0x8000;
+pub const COMMON_LVB_SBCSDBCS: ::DWORD = 0x0300;
+STRUCT!{struct CONSOLE_SCREEN_BUFFER_INFO {
+ dwSize: COORD,
+ dwCursorPosition: COORD,
+ wAttributes: ::WORD,
+ srWindow: SMALL_RECT,
+ dwMaximumWindowSize: COORD,
+}}
+pub type PCONSOLE_SCREEN_BUFFER_INFO = *mut CONSOLE_SCREEN_BUFFER_INFO;
+STRUCT!{struct CONSOLE_SCREEN_BUFFER_INFOEX {
+ cbSize: ::ULONG,
+ dwSize: COORD,
+ dwCursorPosition: COORD,
+ wAttributes: ::WORD,
+ srWindow: SMALL_RECT,
+ dwMaximumWindowSize: COORD,
+ wPopupAttributes: ::WORD,
+ bFullscreenSupported: ::BOOL,
+ ColorTable: [::COLORREF; 16],
+}}
+pub type PCONSOLE_SCREEN_BUFFER_INFOEX = *mut CONSOLE_SCREEN_BUFFER_INFOEX;
+STRUCT!{struct CONSOLE_CURSOR_INFO {
+ dwSize: ::DWORD,
+ bVisible: ::BOOL,
+}}
+pub type PCONSOLE_CURSOR_INFO = *mut CONSOLE_CURSOR_INFO;
+STRUCT!{struct CONSOLE_FONT_INFO {
+ nFont: ::DWORD,
+ dwFontSize: ::COORD,
+}}
+pub type PCONSOLE_FONT_INFO = *mut CONSOLE_FONT_INFO;
+STRUCT!{struct CONSOLE_FONT_INFOEX {
+ cbSize: ::ULONG,
+ nFont: ::DWORD,
+ dwFontSize: COORD,
+ FontFamily: ::UINT,
+ FontWeight: ::UINT,
+ FaceName: [::WCHAR; ::LF_FACESIZE],
+}}
+pub type PCONSOLE_FONT_INFOEX = *mut CONSOLE_FONT_INFOEX;
+pub const HISTORY_NO_DUP_FLAG: ::DWORD = 0x1;
+STRUCT!{struct CONSOLE_HISTORY_INFO {
+ cbSize: ::UINT,
+ HistoryBufferSize: ::UINT,
+ NumberOfHistoryBuffers: ::UINT,
+ dwFlags: ::DWORD,
+}}
+pub type PCONSOLE_HISTORY_INFO = *mut CONSOLE_HISTORY_INFO;
+STRUCT!{struct CONSOLE_SELECTION_INFO {
+ dwFlags: ::DWORD,
+ dwSelectionAnchor: COORD,
+ srSelection: SMALL_RECT,
+}}
+pub type PCONSOLE_SELECTION_INFO = *mut CONSOLE_SELECTION_INFO;
+pub const CONSOLE_NO_SELECTION: ::DWORD = 0x0000;
+pub const CONSOLE_SELECTION_IN_PROGRESS: ::DWORD = 0x0001;
+pub const CONSOLE_SELECTION_NOT_EMPTY: ::DWORD = 0x0002;
+pub const CONSOLE_MOUSE_SELECTION: ::DWORD = 0x0004;
+pub const CONSOLE_MOUSE_DOWN: ::DWORD = 0x0008;
+pub type PHANDLER_ROUTINE = Option<unsafe extern "system" fn(CtrlType: ::DWORD) -> ::BOOL>;
+pub const CTRL_C_EVENT: ::DWORD = 0;
+pub const CTRL_BREAK_EVENT: ::DWORD = 1;
+pub const CTRL_CLOSE_EVENT: ::DWORD = 2;
+pub const CTRL_LOGOFF_EVENT: ::DWORD = 5;
+pub const CTRL_SHUTDOWN_EVENT: ::DWORD = 6;
+pub const ENABLE_PROCESSED_INPUT: ::DWORD = 0x0001;
+pub const ENABLE_LINE_INPUT: ::DWORD = 0x0002;
+pub const ENABLE_ECHO_INPUT: ::DWORD = 0x0004;
+pub const ENABLE_WINDOW_INPUT: ::DWORD = 0x0008;
+pub const ENABLE_MOUSE_INPUT: ::DWORD = 0x0010;
+pub const ENABLE_INSERT_MODE: ::DWORD = 0x0020;
+pub const ENABLE_QUICK_EDIT_MODE: ::DWORD = 0x0040;
+pub const ENABLE_EXTENDED_FLAGS: ::DWORD = 0x0080;
+pub const ENABLE_AUTO_POSITION: ::DWORD = 0x0100;
+pub const ENABLE_PROCESSED_OUTPUT: ::DWORD = 0x0001;
+pub const ENABLE_WRAP_AT_EOL_OUTPUT: ::DWORD = 0x0002;
+pub const CONSOLE_REAL_OUTPUT_HANDLE: *mut ::c_void = -2isize as *mut ::c_void;
+pub const CONSOLE_REAL_INPUT_HANDLE: *mut ::c_void = -3isize as *mut ::c_void;
+pub const ATTACH_PARENT_PROCESS: ::DWORD = 0xFFFFFFFF;
+STRUCT!{struct CONSOLE_READCONSOLE_CONTROL {
+ nLength: ::ULONG,
+ nInitialChars: ::ULONG,
+ dwCtrlWakeupMask: ::ULONG,
+ dwControlKeyState: ::ULONG,
+}}
+pub type PCONSOLE_READCONSOLE_CONTROL = *mut CONSOLE_READCONSOLE_CONTROL;
+pub const CONSOLE_TEXTMODE_BUFFER: ::DWORD = 1;
+pub const CONSOLE_FULLSCREEN: ::DWORD = 1;
+pub const CONSOLE_FULLSCREEN_HARDWARE: ::DWORD = 2;
+pub const CONSOLE_FULLSCREEN_MODE: ::DWORD = 1;
+pub const CONSOLE_WINDOWED_MODE: ::DWORD = 2;
diff --git a/third_party/rust/winapi-0.2.8/src/wincred.rs b/third_party/rust/winapi-0.2.8/src/wincred.rs
new file mode 100644
index 0000000000..af98bd928d
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/wincred.rs
@@ -0,0 +1,209 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Authentication API Prototypes and Definitions
+pub const NERR_BASE: ::DWORD = 2100;
+pub const NERR_PasswordExpired: ::DWORD = NERR_BASE+142;
+pub const CRED_MAX_STRING_LENGTH: ::DWORD = 256;
+pub const CRED_MAX_USERNAME_LENGTH: ::DWORD = 256+1+256;
+pub const CRED_MAX_GENERIC_TARGET_NAME_LENGTH: ::DWORD = 32767;
+pub const CRED_MAX_DOMAIN_TARGET_NAME_LENGTH: ::DWORD = 256+1+80;
+pub const CRED_MAX_TARGETNAME_NAMESPACE_LENGTH: ::DWORD = 256;
+pub const CRED_MAX_TARGETNAME_ATTRIBUTE_LENGTH: ::DWORD = 256;
+pub const CRED_MAX_VALUE_SIZE: ::DWORD = 256;
+pub const CRED_MAX_ATTRIBUTES: ::DWORD = 64;
+pub const CRED_LOGON_TYPES_MASK: ::DWORD = 0xF000;
+pub const CRED_FLAGS_PASSWORD_FOR_CERT: ::DWORD = 0x0001;
+pub const CRED_FLAGS_PROMPT_NOW: ::DWORD = 0x0002;
+pub const CRED_FLAGS_USERNAME_TARGET: ::DWORD = 0x0004;
+pub const CRED_FLAGS_OWF_CRED_BLOB: ::DWORD = 0x0008;
+pub const CRED_FLAGS_REQUIRE_CONFIRMATION: ::DWORD = 0x0010;
+pub const CRED_FLAGS_WILDCARD_MATCH: ::DWORD = 0x0020;
+pub const CRED_FLAGS_VALID_FLAGS: ::DWORD = 0xF03F;
+pub const CRED_FLAGS_VALID_INPUT_FLAGS: ::DWORD = 0xF01F;
+pub const CRED_TYPE_GENERIC: ::DWORD = 1;
+pub const CRED_TYPE_DOMAIN_PASSWORD: ::DWORD = 2;
+pub const CRED_TYPE_DOMAIN_CERTIFICATE: ::DWORD = 3;
+pub const CRED_TYPE_DOMAIN_VISIBLE_PASSWORD: ::DWORD = 4;
+pub const CRED_TYPE_GENERIC_CERTIFICATE: ::DWORD = 5;
+pub const CRED_TYPE_DOMAIN_EXTENDED: ::DWORD = 6;
+pub const CRED_TYPE_MAXIMUM: ::DWORD = 7;
+pub const CRED_TYPE_MAXIMUM_EX: ::DWORD = CRED_TYPE_MAXIMUM+1000;
+pub const CRED_MAX_CREDENTIAL_BLOB_SIZE: ::DWORD = 5*512;
+pub const CRED_PERSIST_NONE: ::DWORD = 0;
+pub const CRED_PERSIST_SESSION: ::DWORD = 1;
+pub const CRED_PERSIST_LOCAL_MACHINE: ::DWORD = 2;
+pub const CRED_PERSIST_ENTERPRISE: ::DWORD = 3;
+STRUCT!{struct CREDENTIAL_ATTRIBUTEA {
+ Keyword: ::LPSTR,
+ Flags: ::DWORD,
+ ValueSize: ::DWORD,
+ Value: ::LPBYTE,
+}}
+pub type PCREDENTIAL_ATTRIBUTEA = *mut CREDENTIAL_ATTRIBUTEA;
+STRUCT!{struct CREDENTIAL_ATTRIBUTEW {
+ Keyword: ::LPWSTR,
+ Flags: ::DWORD,
+ ValueSize: ::DWORD,
+ Value: ::LPBYTE,
+}}
+pub type PCREDENTIAL_ATTRIBUTEW = *mut CREDENTIAL_ATTRIBUTEW;
+STRUCT!{struct CREDENTIALA {
+ Flags: ::DWORD,
+ Type: ::DWORD,
+ TargetName: ::LPSTR,
+ Comment: ::LPSTR,
+ LastWritten: ::FILETIME,
+ CredentialBlobSize: ::DWORD,
+ CredentialBlob: ::LPBYTE,
+ Persist: ::DWORD,
+ AttributeCount: ::DWORD,
+ Attributes: PCREDENTIAL_ATTRIBUTEA,
+ TargetAlias: ::LPSTR,
+ UserName: ::LPSTR,
+}}
+pub type PCREDENTIALA = *mut CREDENTIALA;
+STRUCT!{struct CREDENTIALW {
+ Flags: ::DWORD,
+ Type: ::DWORD,
+ TargetName: ::LPWSTR,
+ Comment: ::LPWSTR,
+ LastWritten: ::FILETIME,
+ CredentialBlobSize: ::DWORD,
+ CredentialBlob: ::LPBYTE,
+ Persist: ::DWORD,
+ AttributeCount: ::DWORD,
+ Attributes: PCREDENTIAL_ATTRIBUTEW,
+ TargetAlias: ::LPWSTR,
+ UserName: ::LPWSTR,
+}}
+pub type PCREDENTIALW = *mut CREDENTIALW;
+pub const CRED_TI_SERVER_FORMAT_UNKNOWN: ::ULONG = 0x0001;
+pub const CRED_TI_DOMAIN_FORMAT_UNKNOWN: ::ULONG = 0x0002;
+pub const CRED_TI_ONLY_PASSWORD_REQUIRED: ::ULONG = 0x0004;
+pub const CRED_TI_USERNAME_TARGET: ::ULONG = 0x0008;
+pub const CRED_TI_CREATE_EXPLICIT_CRED: ::ULONG = 0x0010;
+pub const CRED_TI_WORKGROUP_MEMBER: ::ULONG = 0x0020;
+pub const CRED_TI_VALID_FLAGS: ::ULONG = 0xF07F;
+STRUCT!{struct CREDENTIAL_TARGET_INFORMATIONA {
+ TargetName: ::LPSTR,
+ NetbiosServerName: ::LPSTR,
+ DnsServerName: ::LPSTR,
+ NetbiosDomainName: ::LPSTR,
+ DnsDomainName: ::LPSTR,
+ DnsTreeName: ::LPSTR,
+ PackageName: ::LPSTR,
+ Flags: ::ULONG,
+ CredTypeCount: ::DWORD,
+ CredTypes: ::LPDWORD,
+}}
+pub type PCREDENTIAL_TARGET_INFORMATIONA = *mut CREDENTIAL_TARGET_INFORMATIONA;
+STRUCT!{struct CREDENTIAL_TARGET_INFORMATIONW {
+ TargetName: ::LPWSTR,
+ NetbiosServerName: ::LPWSTR,
+ DnsServerName: ::LPWSTR,
+ NetbiosDomainName: ::LPWSTR,
+ DnsDomainName: ::LPWSTR,
+ DnsTreeName: ::LPWSTR,
+ PackageName: ::LPWSTR,
+ Flags: ::ULONG,
+ CredTypeCount: ::DWORD,
+ CredTypes: ::LPDWORD,
+}}
+pub type PCREDENTIAL_TARGET_INFORMATIONW = *mut CREDENTIAL_TARGET_INFORMATIONW;
+pub const CERT_HASH_LENGTH: usize = 20;
+STRUCT!{struct CERT_CREDENTIAL_INFO {
+ cbSize: ::ULONG,
+ rgbHashOfCert: [::UCHAR; CERT_HASH_LENGTH],
+}}
+pub type PCERT_CREDENTIAL_INFO = *mut CERT_CREDENTIAL_INFO;
+STRUCT!{struct USERNAME_TARGET_CREDENTIAL_INFO {
+ UserName: ::LPWSTR,
+}}
+pub type PUSERNAME_TARGET_CREDENTIAL_INFO = *mut USERNAME_TARGET_CREDENTIAL_INFO;
+STRUCT!{struct BINARY_BLOB_CREDENTIAL_INFO {
+ cbBlob: ::ULONG,
+ pbBlob: ::LPBYTE,
+}}
+pub type PBINARY_BLOB_CREDENTIAL_INFO = *mut BINARY_BLOB_CREDENTIAL_INFO;
+ENUM!{enum CRED_MARSHAL_TYPE {
+ CertCredential = 1,
+ UsernameTargetCredential,
+ BinaryBlobCredential,
+ UsernameForPackedCredentials,
+}}
+pub type PCRED_MARSHAL_TYPE = *mut CRED_MARSHAL_TYPE;
+ENUM!{enum CRED_PROTECTION_TYPE {
+ CredUnprotected,
+ CredUserProtection,
+ CredTrustedProtection,
+}}
+pub type PCRED_PROTECTION_TYPE = *mut CRED_PROTECTION_TYPE;
+pub const CRED_PACK_PROTECTED_CREDENTIALS: ::DWORD = 0x1;
+pub const CRED_PACK_WOW_BUFFER: ::DWORD = 0x2;
+pub const CRED_PACK_GENERIC_CREDENTIALS: ::DWORD = 0x4;
+pub const CRED_PACK_ID_PROVIDER_CREDENTIALS: ::DWORD = 0x8;
+STRUCT!{struct CREDUI_INFOA {
+ cbSize: ::DWORD,
+ hwndParent: ::HWND,
+ pszMessageText: ::PCSTR,
+ pszCaptionText: ::PCSTR,
+ hbmBanner: ::HBITMAP,
+}}
+pub type PCREDUI_INFOA = *mut CREDUI_INFOA;
+STRUCT!{struct CREDUI_INFOW {
+ cbSize: ::DWORD,
+ hwndParent: ::HWND,
+ pszMessageText: ::PCWSTR,
+ pszCaptionText: ::PCWSTR,
+ hbmBanner: ::HBITMAP,
+}}
+pub type PCREDUI_INFOW = *mut CREDUI_INFOW;
+pub const CREDUI_MAX_MESSAGE_LENGTH: ::DWORD = 1024;
+pub const CREDUI_MAX_CAPTION_LENGTH: ::DWORD = 128;
+pub const CREDUI_MAX_GENERIC_TARGET_LENGTH: ::DWORD = CRED_MAX_GENERIC_TARGET_NAME_LENGTH;
+pub const CREDUI_MAX_DOMAIN_TARGET_LENGTH: ::DWORD = CRED_MAX_DOMAIN_TARGET_NAME_LENGTH;
+pub const CREDUI_MAX_USERNAME_LENGTH: ::DWORD = CRED_MAX_USERNAME_LENGTH;
+pub const CREDUI_MAX_PASSWORD_LENGTH: ::DWORD = 512 / 2;
+pub const CREDUI_FLAGS_INCORRECT_PASSWORD: ::DWORD = 0x00001;
+pub const CREDUI_FLAGS_DO_NOT_PERSIST: ::DWORD = 0x00002;
+pub const CREDUI_FLAGS_REQUEST_ADMINISTRATOR: ::DWORD = 0x00004;
+pub const CREDUI_FLAGS_EXCLUDE_CERTIFICATES: ::DWORD = 0x00008;
+pub const CREDUI_FLAGS_REQUIRE_CERTIFICATE: ::DWORD = 0x00010;
+pub const CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX: ::DWORD = 0x00040;
+pub const CREDUI_FLAGS_ALWAYS_SHOW_UI: ::DWORD = 0x00080;
+pub const CREDUI_FLAGS_REQUIRE_SMARTCARD: ::DWORD = 0x00100;
+pub const CREDUI_FLAGS_PASSWORD_ONLY_OK: ::DWORD = 0x00200;
+pub const CREDUI_FLAGS_VALIDATE_USERNAME: ::DWORD = 0x00400;
+pub const CREDUI_FLAGS_COMPLETE_USERNAME: ::DWORD = 0x00800;
+pub const CREDUI_FLAGS_PERSIST: ::DWORD = 0x01000;
+pub const CREDUI_FLAGS_SERVER_CREDENTIAL: ::DWORD = 0x04000;
+pub const CREDUI_FLAGS_EXPECT_CONFIRMATION: ::DWORD = 0x20000;
+pub const CREDUI_FLAGS_GENERIC_CREDENTIALS: ::DWORD = 0x40000;
+pub const CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS: ::DWORD = 0x80000;
+pub const CREDUI_FLAGS_KEEP_USERNAME: ::DWORD = 0x100000;
+pub const CREDUI_FLAGS_PROMPT_VALID: ::DWORD = CREDUI_FLAGS_INCORRECT_PASSWORD
+ | CREDUI_FLAGS_DO_NOT_PERSIST | CREDUI_FLAGS_REQUEST_ADMINISTRATOR
+ | CREDUI_FLAGS_EXCLUDE_CERTIFICATES | CREDUI_FLAGS_REQUIRE_CERTIFICATE
+ | CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX | CREDUI_FLAGS_ALWAYS_SHOW_UI
+ | CREDUI_FLAGS_REQUIRE_SMARTCARD | CREDUI_FLAGS_PASSWORD_ONLY_OK
+ | CREDUI_FLAGS_VALIDATE_USERNAME | CREDUI_FLAGS_COMPLETE_USERNAME | CREDUI_FLAGS_PERSIST
+ | CREDUI_FLAGS_SERVER_CREDENTIAL | CREDUI_FLAGS_EXPECT_CONFIRMATION
+ | CREDUI_FLAGS_GENERIC_CREDENTIALS | CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS
+ | CREDUI_FLAGS_KEEP_USERNAME;
+pub const CREDUIWIN_GENERIC: ::DWORD = 0x00000001;
+pub const CREDUIWIN_CHECKBOX: ::DWORD = 0x00000002;
+pub const CREDUIWIN_AUTHPACKAGE_ONLY: ::DWORD = 0x00000010;
+pub const CREDUIWIN_IN_CRED_ONLY: ::DWORD = 0x00000020;
+pub const CREDUIWIN_ENUMERATE_ADMINS: ::DWORD = 0x00000100;
+pub const CREDUIWIN_ENUMERATE_CURRENT_USER: ::DWORD = 0x00000200;
+pub const CREDUIWIN_SECURE_PROMPT: ::DWORD = 0x00001000;
+pub const CREDUIWIN_PREPROMPTING: ::DWORD = 0x00002000;
+pub const CREDUIWIN_PACK_32_WOW: ::DWORD = 0x10000000;
+pub const CREDUIWIN_VALID_FLAGS: ::DWORD = CREDUIWIN_GENERIC | CREDUIWIN_CHECKBOX
+ | CREDUIWIN_AUTHPACKAGE_ONLY | CREDUIWIN_IN_CRED_ONLY | CREDUIWIN_ENUMERATE_ADMINS
+ | CREDUIWIN_ENUMERATE_CURRENT_USER | CREDUIWIN_SECURE_PROMPT | CREDUIWIN_PREPROMPTING
+ | CREDUIWIN_PACK_32_WOW;
+pub const CRED_PRESERVE_CREDENTIAL_BLOB: ::DWORD = 0x1;
+pub const CRED_ENUMERATE_ALL_CREDENTIALS: ::DWORD = 0x1;
+pub const CRED_CACHE_TARGET_INFORMATION: ::DWORD = 0x1;
+pub const CRED_ALLOW_NAME_RESOLUTION: ::DWORD = 0x1;
diff --git a/third_party/rust/winapi-0.2.8/src/wincrypt.rs b/third_party/rust/winapi-0.2.8/src/wincrypt.rs
new file mode 100644
index 0000000000..5b3e748cc9
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/wincrypt.rs
@@ -0,0 +1,2206 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Cryptographic API Prototypes and Definitions
+//108
+pub const ALG_CLASS_ANY: ALG_ID = 0;
+pub const ALG_CLASS_SIGNATURE: ALG_ID = 1 << 13;
+pub const ALG_CLASS_MSG_ENCRYPT: ALG_ID = 2 << 13;
+pub const ALG_CLASS_DATA_ENCRYPT: ALG_ID = 3 << 13;
+pub const ALG_CLASS_HASH: ALG_ID = 4 << 13;
+pub const ALG_CLASS_KEY_EXCHANGE: ALG_ID = 5 << 13;
+pub const ALG_CLASS_ALL: ALG_ID = 7 << 13;
+pub const ALG_TYPE_ANY: ALG_ID = 0;
+pub const ALG_TYPE_DSS: ALG_ID = 1 << 9;
+pub const ALG_TYPE_RSA: ALG_ID = 2 << 9;
+pub const ALG_TYPE_BLOCK: ALG_ID = 3 << 9;
+pub const ALG_TYPE_STREAM: ALG_ID = 4 << 9;
+pub const ALG_TYPE_DH: ALG_ID = 5 << 9;
+pub const ALG_TYPE_SECURECHANNEL: ALG_ID = 6 << 9;
+pub const ALG_SID_ANY: ALG_ID = 0;
+pub const ALG_SID_RSA_ANY: ALG_ID = 0;
+pub const ALG_SID_RSA_PKCS: ALG_ID = 1;
+pub const ALG_SID_RSA_MSATWORK: ALG_ID = 2;
+pub const ALG_SID_RSA_ENTRUST: ALG_ID = 3;
+pub const ALG_SID_RSA_PGP: ALG_ID = 4;
+pub const ALG_SID_DSS_ANY: ALG_ID = 0;
+pub const ALG_SID_DSS_PKCS: ALG_ID = 1;
+pub const ALG_SID_DSS_DMS: ALG_ID = 2;
+pub const ALG_SID_ECDSA: ALG_ID = 3;
+pub const ALG_SID_DES: ALG_ID = 1;
+pub const ALG_SID_3DES: ALG_ID = 3;
+pub const ALG_SID_DESX: ALG_ID = 4;
+pub const ALG_SID_IDEA: ALG_ID = 5;
+pub const ALG_SID_CAST: ALG_ID = 6;
+pub const ALG_SID_SAFERSK64: ALG_ID = 7;
+pub const ALG_SID_SAFERSK128: ALG_ID = 8;
+pub const ALG_SID_3DES_112: ALG_ID = 9;
+pub const ALG_SID_CYLINK_MEK: ALG_ID = 12;
+pub const ALG_SID_RC5: ALG_ID = 13;
+pub const ALG_SID_AES_128: ALG_ID = 14;
+pub const ALG_SID_AES_192: ALG_ID = 15;
+pub const ALG_SID_AES_256: ALG_ID = 16;
+pub const ALG_SID_AES: ALG_ID = 17;
+pub const ALG_SID_SKIPJACK: ALG_ID = 10;
+pub const ALG_SID_TEK: ALG_ID = 11;
+pub const CRYPT_MODE_CBCI: ALG_ID = 6;
+pub const CRYPT_MODE_CFBP: ALG_ID = 7;
+pub const CRYPT_MODE_OFBP: ALG_ID = 8;
+pub const CRYPT_MODE_CBCOFM: ALG_ID = 9;
+pub const CRYPT_MODE_CBCOFMI: ALG_ID = 10;
+pub const ALG_SID_RC2: ALG_ID = 2;
+pub const ALG_SID_RC4: ALG_ID = 1;
+pub const ALG_SID_SEAL: ALG_ID = 2;
+pub const ALG_SID_DH_SANDF: ALG_ID = 1;
+pub const ALG_SID_DH_EPHEM: ALG_ID = 2;
+pub const ALG_SID_AGREED_KEY_ANY: ALG_ID = 3;
+pub const ALG_SID_KEA: ALG_ID = 4;
+pub const ALG_SID_ECDH: ALG_ID = 5;
+pub const ALG_SID_MD2: ALG_ID = 1;
+pub const ALG_SID_MD4: ALG_ID = 2;
+pub const ALG_SID_MD5: ALG_ID = 3;
+pub const ALG_SID_SHA: ALG_ID = 4;
+pub const ALG_SID_SHA1: ALG_ID = 4;
+pub const ALG_SID_MAC: ALG_ID = 5;
+pub const ALG_SID_RIPEMD: ALG_ID = 6;
+pub const ALG_SID_RIPEMD160: ALG_ID = 7;
+pub const ALG_SID_SSL3SHAMD5: ALG_ID = 8;
+pub const ALG_SID_HMAC: ALG_ID = 9;
+pub const ALG_SID_TLS1PRF: ALG_ID = 10;
+pub const ALG_SID_HASH_REPLACE_OWF: ALG_ID = 11;
+pub const ALG_SID_SHA_256: ALG_ID = 12;
+pub const ALG_SID_SHA_384: ALG_ID = 13;
+pub const ALG_SID_SHA_512: ALG_ID = 14;
+pub const ALG_SID_SSL3_MASTER: ALG_ID = 1;
+pub const ALG_SID_SCHANNEL_MASTER_HASH: ALG_ID = 2;
+pub const ALG_SID_SCHANNEL_MAC_KEY: ALG_ID = 3;
+pub const ALG_SID_PCT1_MASTER: ALG_ID = 4;
+pub const ALG_SID_SSL2_MASTER: ALG_ID = 5;
+pub const ALG_SID_TLS1_MASTER: ALG_ID = 6;
+pub const ALG_SID_SCHANNEL_ENC_KEY: ALG_ID = 7;
+pub const ALG_SID_ECMQV: ALG_ID = 1;
+pub const ALG_SID_EXAMPLE: ALG_ID = 80;
+pub type ALG_ID = ::c_uint;
+pub const CALG_MD2: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2;
+pub const CALG_MD4: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4;
+pub const CALG_MD5: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5;
+pub const CALG_SHA: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA;
+pub const CALG_SHA1: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1;
+pub const CALG_MAC: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC;
+pub const CALG_RSA_SIGN: ALG_ID = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY;
+pub const CALG_DSS_SIGN: ALG_ID = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY;
+pub const CALG_NO_SIGN: ALG_ID = ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY;
+pub const CALG_RSA_KEYX: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY;
+pub const CALG_DES: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES;
+pub const CALG_3DES_112: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_3DES_112;
+pub const CALG_3DES: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_3DES;
+pub const CALG_DESX: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX;
+pub const CALG_RC2: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2;
+pub const CALG_RC4: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4;
+pub const CALG_SEAL: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL;
+pub const CALG_DH_SF: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_SANDF;
+pub const CALG_DH_EPHEM: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_EPHEM;
+pub const CALG_AGREEDKEY_ANY: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH
+ | ALG_SID_AGREED_KEY_ANY;
+pub const CALG_KEA_KEYX: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_KEA;
+pub const CALG_HUGHES_MD5: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_MD5;
+pub const CALG_SKIPJACK: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_SKIPJACK;
+pub const CALG_TEK: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_TEK;
+pub const CALG_CYLINK_MEK: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_CYLINK_MEK;
+pub const CALG_SSL3_SHAMD5: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5;
+pub const CALG_SSL3_MASTER: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_SSL3_MASTER;
+pub const CALG_SCHANNEL_MASTER_HASH: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_SCHANNEL_MASTER_HASH;
+pub const CALG_SCHANNEL_MAC_KEY: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_SCHANNEL_MAC_KEY;
+pub const CALG_SCHANNEL_ENC_KEY: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_SCHANNEL_ENC_KEY;
+pub const CALG_PCT1_MASTER: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_PCT1_MASTER;
+pub const CALG_SSL2_MASTER: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_SSL2_MASTER;
+pub const CALG_TLS1_MASTER: ALG_ID = ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL
+ | ALG_SID_TLS1_MASTER;
+pub const CALG_RC5: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC5;
+pub const CALG_HMAC: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC;
+pub const CALG_TLS1PRF: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF;
+pub const CALG_HASH_REPLACE_OWF: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF;
+pub const CALG_AES_128: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128;
+pub const CALG_AES_192: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192;
+pub const CALG_AES_256: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256;
+pub const CALG_AES: ALG_ID = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES;
+pub const CALG_SHA_256: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256;
+pub const CALG_SHA_384: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384;
+pub const CALG_SHA_512: ALG_ID = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512;
+pub const CALG_ECDH: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH;
+pub const CALG_ECMQV: ALG_ID = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV;
+pub const CALG_ECDSA: ALG_ID = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA;
+pub type HCRYPTPROV = ::ULONG_PTR;
+pub type HCRYPTKEY = ::ULONG_PTR;
+pub type HCRYPTHASH = ::ULONG_PTR;
+pub const CRYPT_VERIFYCONTEXT: ::DWORD = 0xF0000000;
+pub const CRYPT_NEWKEYSET: ::DWORD = 0x00000008;
+pub const CRYPT_DELETEKEYSET: ::DWORD = 0x00000010;
+pub const CRYPT_MACHINE_KEYSET: ::DWORD = 0x00000020;
+pub const CRYPT_SILENT: ::DWORD = 0x00000040;
+pub const CRYPT_DEFAULT_CONTAINER_OPTIONAL: ::DWORD = 0x00000080;
+pub const CRYPT_EXPORTABLE: ::DWORD = 0x00000001;
+pub const CRYPT_USER_PROTECTED: ::DWORD = 0x00000002;
+pub const CRYPT_CREATE_SALT: ::DWORD = 0x00000004;
+pub const CRYPT_UPDATE_KEY: ::DWORD = 0x00000008;
+pub const CRYPT_NO_SALT: ::DWORD = 0x00000010;
+pub const CRYPT_PREGEN: ::DWORD = 0x00000040;
+pub const CRYPT_RECIPIENT: ::DWORD = 0x00000010;
+pub const CRYPT_INITIATOR: ::DWORD = 0x00000040;
+pub const CRYPT_ONLINE: ::DWORD = 0x00000080;
+pub const CRYPT_SF: ::DWORD = 0x00000100;
+pub const CRYPT_CREATE_IV: ::DWORD = 0x00000200;
+pub const CRYPT_KEK: ::DWORD = 0x00000400;
+pub const CRYPT_DATA_KEY: ::DWORD = 0x00000800;
+pub const CRYPT_VOLATILE: ::DWORD = 0x00001000;
+pub const CRYPT_SGCKEY: ::DWORD = 0x00002000;
+pub const CRYPT_USER_PROTECTED_STRONG: ::DWORD = 0x00100000;
+pub const CRYPT_ARCHIVABLE: ::DWORD = 0x00004000;
+pub const CRYPT_FORCE_KEY_PROTECTION_HIGH: ::DWORD = 0x00008000;
+pub const RSA1024BIT_KEY: ::DWORD = 0x04000000;
+pub const CRYPT_SERVER: ::DWORD = 0x00000400;
+pub const KEY_LENGTH_MASK: ::DWORD = 0xFFFF0000;
+pub const CRYPT_Y_ONLY: ::DWORD = 0x00000001;
+pub const CRYPT_SSL2_FALLBACK: ::DWORD = 0x00000002;
+pub const CRYPT_DESTROYKEY: ::DWORD = 0x00000004;
+pub const CRYPT_OAEP: ::DWORD = 0x00000040;
+pub const CRYPT_BLOB_VER3: ::DWORD = 0x00000080;
+pub const CRYPT_IPSEC_HMAC_KEY: ::DWORD = 0x00000100;
+pub const CRYPT_DECRYPT_RSA_NO_PADDING_CHECK: ::DWORD = 0x00000020;
+pub const CRYPT_SECRETDIGEST: ::DWORD = 0x00000001;
+pub const CRYPT_OWF_REPL_LM_HASH: ::DWORD = 0x00000001;
+pub const CRYPT_LITTLE_ENDIAN: ::DWORD = 0x00000001;
+pub const CRYPT_NOHASHOID: ::DWORD = 0x00000001;
+pub const CRYPT_TYPE2_FORMAT: ::DWORD = 0x00000002;
+pub const CRYPT_X931_FORMAT: ::DWORD = 0x00000004;
+pub const CRYPT_MACHINE_DEFAULT: ::DWORD = 0x00000001;
+pub const CRYPT_USER_DEFAULT: ::DWORD = 0x00000002;
+pub const CRYPT_DELETE_DEFAULT: ::DWORD = 0x00000004;
+pub const SIMPLEBLOB: ::DWORD = 0x1;
+pub const PUBLICKEYBLOB: ::DWORD = 0x6;
+pub const PRIVATEKEYBLOB: ::DWORD = 0x7;
+pub const PLAINTEXTKEYBLOB: ::DWORD = 0x8;
+pub const OPAQUEKEYBLOB: ::DWORD = 0x9;
+pub const PUBLICKEYBLOBEX: ::DWORD = 0xA;
+pub const SYMMETRICWRAPKEYBLOB: ::DWORD = 0xB;
+pub const KEYSTATEBLOB: ::DWORD = 0xC;
+pub const AT_KEYEXCHANGE: ::DWORD = 1;
+pub const AT_SIGNATURE: ::DWORD = 2;
+pub const CRYPT_USERDATA: ::DWORD = 1;
+pub const KP_IV: ::DWORD = 1;
+pub const KP_SALT: ::DWORD = 2;
+pub const KP_PADDING: ::DWORD = 3;
+pub const KP_MODE: ::DWORD = 4;
+pub const KP_MODE_BITS: ::DWORD = 5;
+pub const KP_PERMISSIONS: ::DWORD = 6;
+pub const KP_ALGID: ::DWORD = 7;
+pub const KP_BLOCKLEN: ::DWORD = 8;
+pub const KP_KEYLEN: ::DWORD = 9;
+pub const KP_SALT_EX: ::DWORD = 10;
+pub const KP_P: ::DWORD = 11;
+pub const KP_G: ::DWORD = 12;
+pub const KP_Q: ::DWORD = 13;
+pub const KP_X: ::DWORD = 14;
+pub const KP_Y: ::DWORD = 15;
+pub const KP_RA: ::DWORD = 16;
+pub const KP_RB: ::DWORD = 17;
+pub const KP_INFO: ::DWORD = 18;
+pub const KP_EFFECTIVE_KEYLEN: ::DWORD = 19;
+pub const KP_SCHANNEL_ALG: ::DWORD = 20;
+pub const KP_CLIENT_RANDOM: ::DWORD = 21;
+pub const KP_SERVER_RANDOM: ::DWORD = 22;
+pub const KP_RP: ::DWORD = 23;
+pub const KP_PRECOMP_MD5: ::DWORD = 24;
+pub const KP_PRECOMP_SHA: ::DWORD = 25;
+pub const KP_CERTIFICATE: ::DWORD = 26;
+pub const KP_CLEAR_KEY: ::DWORD = 27;
+pub const KP_PUB_EX_LEN: ::DWORD = 28;
+pub const KP_PUB_EX_VAL: ::DWORD = 29;
+pub const KP_KEYVAL: ::DWORD = 30;
+pub const KP_ADMIN_PIN: ::DWORD = 31;
+pub const KP_KEYEXCHANGE_PIN: ::DWORD = 32;
+pub const KP_SIGNATURE_PIN: ::DWORD = 33;
+pub const KP_PREHASH: ::DWORD = 34;
+pub const KP_ROUNDS: ::DWORD = 35;
+pub const KP_OAEP_PARAMS: ::DWORD = 36;
+pub const KP_CMS_KEY_INFO: ::DWORD = 37;
+pub const KP_CMS_DH_KEY_INFO: ::DWORD = 38;
+pub const KP_PUB_PARAMS: ::DWORD = 39;
+pub const KP_VERIFY_PARAMS: ::DWORD = 40;
+pub const KP_HIGHEST_VERSION: ::DWORD = 41;
+pub const KP_GET_USE_COUNT: ::DWORD = 42;
+pub const KP_PIN_ID: ::DWORD = 43;
+pub const KP_PIN_INFO: ::DWORD = 44;
+pub const PKCS5_PADDING: ::DWORD = 1;
+pub const RANDOM_PADDING: ::DWORD = 2;
+pub const ZERO_PADDING: ::DWORD = 3;
+pub const CRYPT_MODE_CBC: ::DWORD = 1;
+pub const CRYPT_MODE_ECB: ::DWORD = 2;
+pub const CRYPT_MODE_OFB: ::DWORD = 3;
+pub const CRYPT_MODE_CFB: ::DWORD = 4;
+pub const CRYPT_MODE_CTS: ::DWORD = 5;
+pub const CRYPT_ENCRYPT: ::DWORD = 0x0001;
+pub const CRYPT_DECRYPT: ::DWORD = 0x0002;
+pub const CRYPT_EXPORT: ::DWORD = 0x0004;
+pub const CRYPT_READ: ::DWORD = 0x0008;
+pub const CRYPT_WRITE: ::DWORD = 0x0010;
+pub const CRYPT_MAC: ::DWORD = 0x0020;
+pub const CRYPT_EXPORT_KEY: ::DWORD = 0x0040;
+pub const CRYPT_IMPORT_KEY: ::DWORD = 0x0080;
+pub const CRYPT_ARCHIVE: ::DWORD = 0x0100;
+pub const HP_ALGID: ::DWORD = 0x0001;
+pub const HP_HASHVAL: ::DWORD = 0x0002;
+pub const HP_HASHSIZE: ::DWORD = 0x0004;
+pub const HP_HMAC_INFO: ::DWORD = 0x0005;
+pub const HP_TLS1PRF_LABEL: ::DWORD = 0x0006;
+pub const HP_TLS1PRF_SEED: ::DWORD = 0x0007;
+pub const CRYPT_FAILED: ::BOOL = ::FALSE;
+pub const CRYPT_SUCCEED: ::BOOL = ::TRUE;
+pub const PP_ENUMALGS: ::DWORD = 1;
+pub const PP_ENUMCONTAINERS: ::DWORD = 2;
+pub const PP_IMPTYPE: ::DWORD = 3;
+pub const PP_NAME: ::DWORD = 4;
+pub const PP_VERSION: ::DWORD = 5;
+pub const PP_CONTAINER: ::DWORD = 6;
+pub const PP_CHANGE_PASSWORD: ::DWORD = 7;
+pub const PP_KEYSET_SEC_DESCR: ::DWORD = 8;
+pub const PP_CERTCHAIN: ::DWORD = 9;
+pub const PP_KEY_TYPE_SUBTYPE: ::DWORD = 10;
+pub const PP_PROVTYPE: ::DWORD = 16;
+pub const PP_KEYSTORAGE: ::DWORD = 17;
+pub const PP_APPLI_CERT: ::DWORD = 18;
+pub const PP_SYM_KEYSIZE: ::DWORD = 19;
+pub const PP_SESSION_KEYSIZE: ::DWORD = 20;
+pub const PP_UI_PROMPT: ::DWORD = 21;
+pub const PP_ENUMALGS_EX: ::DWORD = 22;
+pub const PP_ENUMMANDROOTS: ::DWORD = 25;
+pub const PP_ENUMELECTROOTS: ::DWORD = 26;
+pub const PP_KEYSET_TYPE: ::DWORD = 27;
+pub const PP_ADMIN_PIN: ::DWORD = 31;
+pub const PP_KEYEXCHANGE_PIN: ::DWORD = 32;
+pub const PP_SIGNATURE_PIN: ::DWORD = 33;
+pub const PP_SIG_KEYSIZE_INC: ::DWORD = 34;
+pub const PP_KEYX_KEYSIZE_INC: ::DWORD = 35;
+pub const PP_UNIQUE_CONTAINER: ::DWORD = 36;
+pub const PP_SGC_INFO: ::DWORD = 37;
+pub const PP_USE_HARDWARE_RNG: ::DWORD = 38;
+pub const PP_KEYSPEC: ::DWORD = 39;
+pub const PP_ENUMEX_SIGNING_PROT: ::DWORD = 40;
+pub const PP_CRYPT_COUNT_KEY_USE: ::DWORD = 41;
+pub const PP_USER_CERTSTORE: ::DWORD = 42;
+pub const PP_SMARTCARD_READER: ::DWORD = 43;
+pub const PP_SMARTCARD_GUID: ::DWORD = 45;
+pub const PP_ROOT_CERTSTORE: ::DWORD = 46;
+pub const PP_SMARTCARD_READER_ICON: ::DWORD = 47;
+pub const CRYPT_FIRST: ::DWORD = 1;
+pub const CRYPT_NEXT: ::DWORD = 2;
+pub const CRYPT_SGC_ENUM: ::DWORD = 4;
+pub const CRYPT_IMPL_HARDWARE: ::DWORD = 1;
+pub const CRYPT_IMPL_SOFTWARE: ::DWORD = 2;
+pub const CRYPT_IMPL_MIXED: ::DWORD = 3;
+pub const CRYPT_IMPL_UNKNOWN: ::DWORD = 4;
+pub const CRYPT_IMPL_REMOVABLE: ::DWORD = 8;
+pub const CRYPT_SEC_DESCR: ::DWORD = 0x00000001;
+pub const CRYPT_PSTORE: ::DWORD = 0x00000002;
+pub const CRYPT_UI_PROMPT: ::DWORD = 0x00000004;
+pub const CRYPT_FLAG_PCT1: ::DWORD = 0x0001;
+pub const CRYPT_FLAG_SSL2: ::DWORD = 0x0002;
+pub const CRYPT_FLAG_SSL3: ::DWORD = 0x0004;
+pub const CRYPT_FLAG_TLS1: ::DWORD = 0x0008;
+pub const CRYPT_FLAG_IPSEC: ::DWORD = 0x0010;
+pub const CRYPT_FLAG_SIGNING: ::DWORD = 0x0020;
+pub const CRYPT_SGC: ::DWORD = 0x0001;
+pub const CRYPT_FASTSGC: ::DWORD = 0x0002;
+pub const PP_CLIENT_HWND: ::DWORD = 1;
+pub const PP_CONTEXT_INFO: ::DWORD = 11;
+pub const PP_KEYEXCHANGE_KEYSIZE: ::DWORD = 12;
+pub const PP_SIGNATURE_KEYSIZE: ::DWORD = 13;
+pub const PP_KEYEXCHANGE_ALG: ::DWORD = 14;
+pub const PP_SIGNATURE_ALG: ::DWORD = 15;
+pub const PP_DELETEKEY: ::DWORD = 24;
+pub const PP_PIN_PROMPT_STRING: ::DWORD = 44;
+pub const PP_SECURE_KEYEXCHANGE_PIN: ::DWORD = 47;
+pub const PP_SECURE_SIGNATURE_PIN: ::DWORD = 48;
+pub const PROV_RSA_FULL: ::DWORD = 1;
+pub const PROV_RSA_SIG: ::DWORD = 2;
+pub const PROV_DSS: ::DWORD = 3;
+pub const PROV_FORTEZZA: ::DWORD = 4;
+pub const PROV_MS_EXCHANGE: ::DWORD = 5;
+pub const PROV_SSL: ::DWORD = 6;
+pub const PROV_RSA_SCHANNEL: ::DWORD = 12;
+pub const PROV_DSS_DH: ::DWORD = 13;
+pub const PROV_EC_ECDSA_SIG: ::DWORD = 14;
+pub const PROV_EC_ECNRA_SIG: ::DWORD = 15;
+pub const PROV_EC_ECDSA_FULL: ::DWORD = 16;
+pub const PROV_EC_ECNRA_FULL: ::DWORD = 17;
+pub const PROV_DH_SCHANNEL: ::DWORD = 18;
+pub const PROV_SPYRUS_LYNKS: ::DWORD = 20;
+pub const PROV_RNG: ::DWORD = 21;
+pub const PROV_INTEL_SEC: ::DWORD = 22;
+pub const PROV_REPLACE_OWF: ::DWORD = 23;
+pub const PROV_RSA_AES: ::DWORD = 24;
+pub const MS_DEF_PROV: &'static str = "Microsoft Base Cryptographic Provider v1.0";
+pub const MS_ENHANCED_PROV: &'static str = "Microsoft Enhanced Cryptographic Provider v1.0";
+pub const MS_STRONG_PROV: &'static str = "Microsoft Strong Cryptographic Provider";
+pub const MS_DEF_RSA_SIG_PROV: &'static str = "Microsoft RSA Signature Cryptographic Provider";
+pub const MS_DEF_RSA_SCHANNEL_PROV: &'static str = "Microsoft RSA SChannel Cryptographic Provider";
+pub const MS_DEF_DSS_PROV: &'static str = "Microsoft Base DSS Cryptographic Provider";
+pub const MS_DEF_DSS_DH_PROV: &'static str =
+ "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider";
+pub const MS_ENH_DSS_DH_PROV: &'static str =
+ "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider";
+pub const MS_DEF_DH_SCHANNEL_PROV: &'static str = "Microsoft DH SChannel Cryptographic Provider";
+pub const MS_SCARD_PROV: &'static str = "Microsoft Base Smart Card Crypto Provider";
+pub const MS_ENH_RSA_AES_PROV: &'static str =
+ "Microsoft Enhanced RSA and AES Cryptographic Provider";
+pub const MS_ENH_RSA_AES_PROV_XP: &'static str =
+ "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
+pub const MAXUIDLEN: usize = 64;
+pub const EXPO_OFFLOAD_REG_VALUE: &'static str = "ExpoOffload";
+pub const EXPO_OFFLOAD_FUNC_NAME: &'static str = "OffloadModExpo";
+pub const szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS: &'static str =
+ "Software\\Policies\\Microsoft\\Cryptography";
+pub const szKEY_CACHE_ENABLED: &'static str = "CachePrivateKeys";
+pub const szKEY_CACHE_SECONDS: &'static str = "PrivateKeyLifetimeSeconds";
+pub const szPRIV_KEY_CACHE_MAX_ITEMS: &'static str = "PrivKeyCacheMaxItems";
+pub const cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT: ::DWORD = 20;
+pub const szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS: &'static str =
+ "PrivKeyCachePurgeIntervalSeconds";
+pub const cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT: ::DWORD = 86400;
+pub const CUR_BLOB_VERSION: ::DWORD = 2;
+STRUCT!{struct CMS_KEY_INFO {
+ dwVersion: ::DWORD,
+ Algid: ALG_ID,
+ pbOID: *mut ::BYTE,
+ cbOID: ::DWORD,
+}}
+pub type PCMS_KEY_INFO = *mut CMS_KEY_INFO;
+STRUCT!{struct HMAC_INFO {
+ HashAlgid: ALG_ID,
+ pbInnerString: *mut ::BYTE,
+ cbInnerString: ::DWORD,
+ pbOuterString: *mut ::BYTE,
+ cbOuterString: ::DWORD,
+}}
+pub type PHMAC_INFO = *mut HMAC_INFO;
+STRUCT!{struct SCHANNEL_ALG {
+ dwUse: ::DWORD,
+ Algid: ALG_ID,
+ cBits: ::DWORD,
+ dwFlags: ::DWORD,
+ dwReserved: ::DWORD,
+}}
+pub type PSCHANNEL_ALG = *mut SCHANNEL_ALG;
+pub const SCHANNEL_MAC_KEY: ::DWORD = 0x00000000;
+pub const SCHANNEL_ENC_KEY: ::DWORD = 0x00000001;
+pub const INTERNATIONAL_USAGE: ::DWORD = 0x00000001;
+STRUCT!{struct PROV_ENUMALGS {
+ aiAlgid: ALG_ID,
+ dwBitLen: ::DWORD,
+ dwNameLen: ::DWORD,
+ szName: [::CHAR; 20],
+}}
+STRUCT!{nodebug struct PROV_ENUMALGS_EX {
+ aiAlgid: ALG_ID,
+ dwDefaultLen: ::DWORD,
+ dwMinLen: ::DWORD,
+ dwMaxLen: ::DWORD,
+ dwProtocols: ::DWORD,
+ dwNameLen: ::DWORD,
+ szName: [::CHAR; 20],
+ dwLongNameLen: ::DWORD,
+ szLongName: [::CHAR; 40],
+}}
+STRUCT!{struct BLOBHEADER {
+ bType: ::BYTE,
+ bVersion: ::BYTE,
+ reserved: ::WORD,
+ aiKeyAlg: ::ALG_ID,
+}}
+pub type PUBLICKEYSTRUC = BLOBHEADER;
+STRUCT!{struct RSAPUBKEY {
+ magic: ::DWORD,
+ bitlen: ::DWORD,
+ pubexp: ::DWORD,
+}}
+STRUCT!{struct DHPUBKEY {
+ magic: ::DWORD,
+ bitlen: ::DWORD,
+}}
+pub type DSSPUBKEY = DHPUBKEY;
+pub type KEAPUBKEY = DHPUBKEY;
+pub type TEKPUBKEY = DHPUBKEY;
+STRUCT!{struct DSSSEED {
+ counter: ::DWORD,
+ seed: [::BYTE; 20],
+}}
+STRUCT!{struct DHPUBKEY_VER3 {
+ magic: ::DWORD,
+ bitlenP: ::DWORD,
+ bitlenQ: ::DWORD,
+ bitlenJ: ::DWORD,
+ DSSSeed: DSSSEED,
+}}
+pub type DSSPUBKEY_VER3 = DHPUBKEY_VER3;
+STRUCT!{struct DHPRIVKEY_VER3 {
+ magic: ::DWORD,
+ bitlenP: ::DWORD,
+ bitlenQ: ::DWORD,
+ bitlenJ: ::DWORD,
+ bitlenX: ::DWORD,
+ DSSSeed: DSSSEED,
+}}
+pub type DSSPRIVKEY_VER3 = DHPRIVKEY_VER3;
+STRUCT!{struct KEY_TYPE_SUBTYPE {
+ dwKeySpec: ::DWORD,
+ Type: ::GUID,
+ Subtype: ::GUID,
+}}
+pub type PKEY_TYPE_SUBTYPE = *mut KEY_TYPE_SUBTYPE;
+STRUCT!{nodebug struct CERT_FORTEZZA_DATA_PROP {
+ SerialNumber: [::c_uchar; 8],
+ CertIndex: ::c_int,
+ CertLabel: [::c_uchar; 36],
+}}
+STRUCT!{nodebug struct CRYPT_RC4_KEY_STATE {
+ Key: [::c_uchar; 16],
+ SBox: [::c_uchar; 256],
+ i: ::c_uchar,
+ j: ::c_uchar,
+}}
+pub type PCRYPT_RC4_KEY_STATE = *mut CRYPT_RC4_KEY_STATE;
+STRUCT!{struct CRYPT_DES_KEY_STATE {
+ Key: [::c_uchar; 8],
+ IV: [::c_uchar; 8],
+ Feedback: [::c_uchar; 8],
+}}
+pub type PCRYPT_DES_KEY_STATE = *mut CRYPT_DES_KEY_STATE;
+STRUCT!{struct CRYPT_3DES_KEY_STATE {
+ Key: [::c_uchar; 24],
+ IV: [::c_uchar; 8],
+ Feedback: [::c_uchar; 8],
+}}
+pub type PCRYPT_3DES_KEY_STATE = *mut CRYPT_3DES_KEY_STATE;
+STRUCT!{struct CRYPT_AES_128_KEY_STATE {
+ Key: [::c_uchar; 16],
+ IV: [::c_uchar; 16],
+ EncryptionState: [[::c_uchar; 16]; 11],
+ DecryptionState: [[::c_uchar; 16]; 11],
+ Feedback: [::c_uchar; 16],
+}}
+pub type PCRYPT_AES_128_KEY_STATE = *mut CRYPT_AES_128_KEY_STATE;
+STRUCT!{struct CRYPT_AES_256_KEY_STATE {
+ Key: [::c_uchar; 32],
+ IV: [::c_uchar; 16],
+ EncryptionState: [[::c_uchar; 16]; 15],
+ DecryptionState: [[::c_uchar; 16]; 15],
+ Feedback: [::c_uchar; 16],
+}}
+pub type PCRYPT_AES_256_KEY_STATE = *mut CRYPT_AES_256_KEY_STATE;
+STRUCT!{struct CRYPTOAPI_BLOB {
+ cbData: ::DWORD,
+ pbData: *mut ::BYTE,
+}}
+pub type CRYPT_INTEGER_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_INTEGER_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_UINT_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_UINT_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_OBJID_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_OBJID_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CERT_NAME_BLOB = CRYPTOAPI_BLOB;
+pub type PCERT_NAME_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CERT_RDN_VALUE_BLOB = CRYPTOAPI_BLOB;
+pub type PCERT_RDN_VALUE_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CERT_BLOB = CRYPTOAPI_BLOB;
+pub type PCERT_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRL_BLOB = CRYPTOAPI_BLOB;
+pub type PCRL_BLOB = *mut CRYPTOAPI_BLOB;
+pub type DATA_BLOB = CRYPTOAPI_BLOB;
+pub type PDATA_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_DATA_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_DATA_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_HASH_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_HASH_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_DIGEST_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_DIGEST_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_DER_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_DER_BLOB = *mut CRYPTOAPI_BLOB;
+pub type CRYPT_ATTR_BLOB = CRYPTOAPI_BLOB;
+pub type PCRYPT_ATTR_BLOB = *mut CRYPTOAPI_BLOB;
+STRUCT!{struct CMS_DH_KEY_INFO {
+ dwVersion: ::DWORD,
+ Algid: ALG_ID,
+ pszContentEncObjId: ::LPSTR,
+ PubInfo: CRYPT_DATA_BLOB,
+ pReserved: *mut ::c_void,
+}}
+pub type PCMS_DH_KEY_INFO = *mut CMS_DH_KEY_INFO;
+pub type HCRYPTPROV_OR_NCRYPT_KEY_HANDLE = ::ULONG_PTR;
+pub type HCRYPTPROV_LEGACY = ::ULONG_PTR;
+STRUCT!{struct CRYPT_BIT_BLOB {
+ cbData: ::DWORD,
+ pbData: *mut ::BYTE,
+ cUnusedBits: ::DWORD,
+}}
+pub type PCRYPT_BIT_BLOB = *mut CRYPT_BIT_BLOB;
+STRUCT!{struct CRYPT_ALGORITHM_IDENTIFIER {
+ pszObjId: ::LPSTR,
+ Parameters: CRYPT_OBJID_BLOB,
+}}
+pub type PCRYPT_ALGORITHM_IDENTIFIER = *mut CRYPT_ALGORITHM_IDENTIFIER;
+pub const szOID_RSA: &'static str = "1.2.840.113549";
+pub const szOID_PKCS: &'static str = "1.2.840.113549.1";
+pub const szOID_RSA_HASH: &'static str = "1.2.840.113549.2";
+pub const szOID_RSA_ENCRYPT: &'static str = "1.2.840.113549.3";
+pub const szOID_PKCS_1: &'static str = "1.2.840.113549.1.1";
+pub const szOID_PKCS_2: &'static str = "1.2.840.113549.1.2";
+pub const szOID_PKCS_3: &'static str = "1.2.840.113549.1.3";
+pub const szOID_PKCS_4: &'static str = "1.2.840.113549.1.4";
+pub const szOID_PKCS_5: &'static str = "1.2.840.113549.1.5";
+pub const szOID_PKCS_6: &'static str = "1.2.840.113549.1.6";
+pub const szOID_PKCS_7: &'static str = "1.2.840.113549.1.7";
+pub const szOID_PKCS_8: &'static str = "1.2.840.113549.1.8";
+pub const szOID_PKCS_9: &'static str = "1.2.840.113549.1.9";
+pub const szOID_PKCS_10: &'static str = "1.2.840.113549.1.10";
+pub const szOID_PKCS_12: &'static str = "1.2.840.113549.1.12";
+pub const szOID_RSA_RSA: &'static str = "1.2.840.113549.1.1.1";
+pub const szOID_RSA_MD2RSA: &'static str = "1.2.840.113549.1.1.2";
+pub const szOID_RSA_MD4RSA: &'static str = "1.2.840.113549.1.1.3";
+pub const szOID_RSA_MD5RSA: &'static str = "1.2.840.113549.1.1.4";
+pub const szOID_RSA_SHA1RSA: &'static str = "1.2.840.113549.1.1.5";
+pub const szOID_RSA_SETOAEP_RSA: &'static str = "1.2.840.113549.1.1.6";
+pub const szOID_RSAES_OAEP: &'static str = "1.2.840.113549.1.1.7";
+pub const szOID_RSA_MGF1: &'static str = "1.2.840.113549.1.1.8";
+pub const szOID_RSA_PSPECIFIED: &'static str = "1.2.840.113549.1.1.9";
+pub const szOID_RSA_SSA_PSS: &'static str = "1.2.840.113549.1.1.10";
+pub const szOID_RSA_SHA256RSA: &'static str = "1.2.840.113549.1.1.11";
+pub const szOID_RSA_SHA384RSA: &'static str = "1.2.840.113549.1.1.12";
+pub const szOID_RSA_SHA512RSA: &'static str = "1.2.840.113549.1.1.13";
+pub const szOID_RSA_DH: &'static str = "1.2.840.113549.1.3.1";
+pub const szOID_RSA_data: &'static str = "1.2.840.113549.1.7.1";
+pub const szOID_RSA_signedData: &'static str = "1.2.840.113549.1.7.2";
+pub const szOID_RSA_envelopedData: &'static str = "1.2.840.113549.1.7.3";
+pub const szOID_RSA_signEnvData: &'static str = "1.2.840.113549.1.7.4";
+pub const szOID_RSA_digestedData: &'static str = "1.2.840.113549.1.7.5";
+pub const szOID_RSA_hashedData: &'static str = "1.2.840.113549.1.7.5";
+pub const szOID_RSA_encryptedData: &'static str = "1.2.840.113549.1.7.6";
+pub const szOID_RSA_emailAddr: &'static str = "1.2.840.113549.1.9.1";
+pub const szOID_RSA_unstructName: &'static str = "1.2.840.113549.1.9.2";
+pub const szOID_RSA_contentType: &'static str = "1.2.840.113549.1.9.3";
+pub const szOID_RSA_messageDigest: &'static str = "1.2.840.113549.1.9.4";
+pub const szOID_RSA_signingTime: &'static str = "1.2.840.113549.1.9.5";
+pub const szOID_RSA_counterSign: &'static str = "1.2.840.113549.1.9.6";
+pub const szOID_RSA_challengePwd: &'static str = "1.2.840.113549.1.9.7";
+pub const szOID_RSA_unstructAddr: &'static str = "1.2.840.113549.1.9.8";
+pub const szOID_RSA_extCertAttrs: &'static str = "1.2.840.113549.1.9.9";
+pub const szOID_RSA_certExtensions: &'static str = "1.2.840.113549.1.9.14";
+pub const szOID_RSA_SMIMECapabilities: &'static str = "1.2.840.113549.1.9.15";
+pub const szOID_RSA_preferSignedData: &'static str = "1.2.840.113549.1.9.15.1";
+pub const szOID_TIMESTAMP_TOKEN: &'static str = "1.2.840.113549.1.9.16.1.4";
+pub const szOID_RFC3161_counterSign: &'static str = "1.3.6.1.4.1.311.3.3.1";
+pub const szOID_RSA_SMIMEalg: &'static str = "1.2.840.113549.1.9.16.3";
+pub const szOID_RSA_SMIMEalgESDH: &'static str = "1.2.840.113549.1.9.16.3.5";
+pub const szOID_RSA_SMIMEalgCMS3DESwrap: &'static str = "1.2.840.113549.1.9.16.3.6";
+pub const szOID_RSA_SMIMEalgCMSRC2wrap: &'static str = "1.2.840.113549.1.9.16.3.7";
+pub const szOID_RSA_MD2: &'static str = "1.2.840.113549.2.2";
+pub const szOID_RSA_MD4: &'static str = "1.2.840.113549.2.4";
+pub const szOID_RSA_MD5: &'static str = "1.2.840.113549.2.5";
+pub const szOID_RSA_RC2CBC: &'static str = "1.2.840.113549.3.2";
+pub const szOID_RSA_RC4: &'static str = "1.2.840.113549.3.4";
+pub const szOID_RSA_DES_EDE3_CBC: &'static str = "1.2.840.113549.3.7";
+pub const szOID_RSA_RC5_CBCPad: &'static str = "1.2.840.113549.3.9";
+pub const szOID_ANSI_X942: &'static str = "1.2.840.10046";
+pub const szOID_ANSI_X942_DH: &'static str = "1.2.840.10046.2.1";
+pub const szOID_X957: &'static str = "1.2.840.10040";
+pub const szOID_X957_DSA: &'static str = "1.2.840.10040.4.1";
+pub const szOID_X957_SHA1DSA: &'static str = "1.2.840.10040.4.3";
+pub const szOID_ECC_PUBLIC_KEY: &'static str = "1.2.840.10045.2.1";
+pub const szOID_ECC_CURVE_P256: &'static str = "1.2.840.10045.3.1.7";
+pub const szOID_ECC_CURVE_P384: &'static str = "1.3.132.0.34";
+pub const szOID_ECC_CURVE_P521: &'static str = "1.3.132.0.35";
+pub const szOID_ECDSA_SHA1: &'static str = "1.2.840.10045.4.1";
+pub const szOID_ECDSA_SPECIFIED: &'static str = "1.2.840.10045.4.3";
+pub const szOID_ECDSA_SHA256: &'static str = "1.2.840.10045.4.3.2";
+pub const szOID_ECDSA_SHA384: &'static str = "1.2.840.10045.4.3.3";
+pub const szOID_ECDSA_SHA512: &'static str = "1.2.840.10045.4.3.4";
+pub const szOID_NIST_AES128_CBC: &'static str = "2.16.840.1.101.3.4.1.2";
+pub const szOID_NIST_AES192_CBC: &'static str = "2.16.840.1.101.3.4.1.22";
+pub const szOID_NIST_AES256_CBC: &'static str = "2.16.840.1.101.3.4.1.42";
+pub const szOID_NIST_AES128_WRAP: &'static str = "2.16.840.1.101.3.4.1.5";
+pub const szOID_NIST_AES192_WRAP: &'static str = "2.16.840.1.101.3.4.1.25";
+pub const szOID_NIST_AES256_WRAP: &'static str = "2.16.840.1.101.3.4.1.45";
+pub const szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF: &'static str = "1.3.133.16.840.63.0.2";
+pub const szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF: &'static str = "1.3.132.1.11.1";
+pub const szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF: &'static str = "1.3.132.1.11.2";
+pub const szOID_DS: &'static str = "2.5";
+pub const szOID_DSALG: &'static str = "2.5.8";
+pub const szOID_DSALG_CRPT: &'static str = "2.5.8.1";
+pub const szOID_DSALG_HASH: &'static str = "2.5.8.2";
+pub const szOID_DSALG_SIGN: &'static str = "2.5.8.3";
+pub const szOID_DSALG_RSA: &'static str = "2.5.8.1.1";
+pub const szOID_OIW: &'static str = "1.3.14";
+pub const szOID_OIWSEC: &'static str = "1.3.14.3.2";
+pub const szOID_OIWSEC_md4RSA: &'static str = "1.3.14.3.2.2";
+pub const szOID_OIWSEC_md5RSA: &'static str = "1.3.14.3.2.3";
+pub const szOID_OIWSEC_md4RSA2: &'static str = "1.3.14.3.2.4";
+pub const szOID_OIWSEC_desECB: &'static str = "1.3.14.3.2.6";
+pub const szOID_OIWSEC_desCBC: &'static str = "1.3.14.3.2.7";
+pub const szOID_OIWSEC_desOFB: &'static str = "1.3.14.3.2.8";
+pub const szOID_OIWSEC_desCFB: &'static str = "1.3.14.3.2.9";
+pub const szOID_OIWSEC_desMAC: &'static str = "1.3.14.3.2.10";
+pub const szOID_OIWSEC_rsaSign: &'static str = "1.3.14.3.2.11";
+pub const szOID_OIWSEC_dsa: &'static str = "1.3.14.3.2.12";
+pub const szOID_OIWSEC_shaDSA: &'static str = "1.3.14.3.2.13";
+pub const szOID_OIWSEC_mdc2RSA: &'static str = "1.3.14.3.2.14";
+pub const szOID_OIWSEC_shaRSA: &'static str = "1.3.14.3.2.15";
+pub const szOID_OIWSEC_dhCommMod: &'static str = "1.3.14.3.2.16";
+pub const szOID_OIWSEC_desEDE: &'static str = "1.3.14.3.2.17";
+pub const szOID_OIWSEC_sha: &'static str = "1.3.14.3.2.18";
+pub const szOID_OIWSEC_mdc2: &'static str = "1.3.14.3.2.19";
+pub const szOID_OIWSEC_dsaComm: &'static str = "1.3.14.3.2.20";
+pub const szOID_OIWSEC_dsaCommSHA: &'static str = "1.3.14.3.2.21";
+pub const szOID_OIWSEC_rsaXchg: &'static str = "1.3.14.3.2.22";
+pub const szOID_OIWSEC_keyHashSeal: &'static str = "1.3.14.3.2.23";
+pub const szOID_OIWSEC_md2RSASign: &'static str = "1.3.14.3.2.24";
+pub const szOID_OIWSEC_md5RSASign: &'static str = "1.3.14.3.2.25";
+pub const szOID_OIWSEC_sha1: &'static str = "1.3.14.3.2.26";
+pub const szOID_OIWSEC_dsaSHA1: &'static str = "1.3.14.3.2.27";
+pub const szOID_OIWSEC_dsaCommSHA1: &'static str = "1.3.14.3.2.28";
+pub const szOID_OIWSEC_sha1RSASign: &'static str = "1.3.14.3.2.29";
+pub const szOID_OIWDIR: &'static str = "1.3.14.7.2";
+pub const szOID_OIWDIR_CRPT: &'static str = "1.3.14.7.2.1";
+pub const szOID_OIWDIR_HASH: &'static str = "1.3.14.7.2.2";
+pub const szOID_OIWDIR_SIGN: &'static str = "1.3.14.7.2.3";
+pub const szOID_OIWDIR_md2: &'static str = "1.3.14.7.2.2.1";
+pub const szOID_OIWDIR_md2RSA: &'static str = "1.3.14.7.2.3.1";
+pub const szOID_INFOSEC: &'static str = "2.16.840.1.101.2.1";
+pub const szOID_INFOSEC_sdnsSignature: &'static str = "2.16.840.1.101.2.1.1.1";
+pub const szOID_INFOSEC_mosaicSignature: &'static str = "2.16.840.1.101.2.1.1.2";
+pub const szOID_INFOSEC_sdnsConfidentiality: &'static str = "2.16.840.1.101.2.1.1.3";
+pub const szOID_INFOSEC_mosaicConfidentiality: &'static str = "2.16.840.1.101.2.1.1.4";
+pub const szOID_INFOSEC_sdnsIntegrity: &'static str = "2.16.840.1.101.2.1.1.5";
+pub const szOID_INFOSEC_mosaicIntegrity: &'static str = "2.16.840.1.101.2.1.1.6";
+pub const szOID_INFOSEC_sdnsTokenProtection: &'static str = "2.16.840.1.101.2.1.1.7";
+pub const szOID_INFOSEC_mosaicTokenProtection: &'static str = "2.16.840.1.101.2.1.1.8";
+pub const szOID_INFOSEC_sdnsKeyManagement: &'static str = "2.16.840.1.101.2.1.1.9";
+pub const szOID_INFOSEC_mosaicKeyManagement: &'static str = "2.16.840.1.101.2.1.1.10";
+pub const szOID_INFOSEC_sdnsKMandSig: &'static str = "2.16.840.1.101.2.1.1.11";
+pub const szOID_INFOSEC_mosaicKMandSig: &'static str = "2.16.840.1.101.2.1.1.12";
+pub const szOID_INFOSEC_SuiteASignature: &'static str = "2.16.840.1.101.2.1.1.13";
+pub const szOID_INFOSEC_SuiteAConfidentiality: &'static str = "2.16.840.1.101.2.1.1.14";
+pub const szOID_INFOSEC_SuiteAIntegrity: &'static str = "2.16.840.1.101.2.1.1.15";
+pub const szOID_INFOSEC_SuiteATokenProtection: &'static str = "2.16.840.1.101.2.1.1.16";
+pub const szOID_INFOSEC_SuiteAKeyManagement: &'static str = "2.16.840.1.101.2.1.1.17";
+pub const szOID_INFOSEC_SuiteAKMandSig: &'static str = "2.16.840.1.101.2.1.1.18";
+pub const szOID_INFOSEC_mosaicUpdatedSig: &'static str = "2.16.840.1.101.2.1.1.19";
+pub const szOID_INFOSEC_mosaicKMandUpdSig: &'static str = "2.16.840.1.101.2.1.1.20";
+pub const szOID_INFOSEC_mosaicUpdatedInteg: &'static str = "2.16.840.1.101.2.1.1.21";
+pub const szOID_NIST_sha256: &'static str = "2.16.840.1.101.3.4.2.1";
+pub const szOID_NIST_sha384: &'static str = "2.16.840.1.101.3.4.2.2";
+pub const szOID_NIST_sha512: &'static str = "2.16.840.1.101.3.4.2.3";
+STRUCT!{struct CRYPT_OBJID_TABLE {
+ dwAlgId: ::DWORD,
+ pszObjId: ::LPCSTR,
+}}
+pub type PCRYPT_OBJID_TABLE = *mut CRYPT_OBJID_TABLE;
+STRUCT!{struct CRYPT_HASH_INFO {
+ HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ Hash: CRYPT_HASH_BLOB,
+}}
+pub type PCRYPT_HASH_INFO = *mut CRYPT_HASH_INFO;
+STRUCT!{struct CERT_EXTENSION {
+ pszObjId: ::LPSTR,
+ fCritical: ::BOOL,
+ Value: CRYPT_OBJID_BLOB,
+}}
+pub type PCERT_EXTENSION = *mut CERT_EXTENSION;
+pub type PCCERT_EXTENSION = *const CERT_EXTENSION;
+STRUCT!{struct CRYPT_ATTRIBUTE_TYPE_VALUE {
+ pszObjId: ::LPSTR,
+ Value: CRYPT_OBJID_BLOB,
+}}
+pub type PCRYPT_ATTRIBUTE_TYPE_VALUE = *mut CRYPT_ATTRIBUTE_TYPE_VALUE;
+STRUCT!{struct CRYPT_ATTRIBUTE {
+ pszObjId: ::LPSTR,
+ cValue: ::DWORD,
+ rgValue: PCRYPT_ATTR_BLOB,
+}}
+pub type PCRYPT_ATTRIBUTE = *mut CRYPT_ATTRIBUTE;
+STRUCT!{struct CRYPT_ATTRIBUTES {
+ cAttr: ::DWORD,
+ rgAttr: PCRYPT_ATTRIBUTE,
+}}
+pub type PCRYPT_ATTRIBUTES = *mut CRYPT_ATTRIBUTES;
+STRUCT!{struct CERT_RDN_ATTR {
+ pszObjId: ::LPSTR,
+ dwValueType: ::DWORD,
+ Value: CERT_RDN_VALUE_BLOB,
+}}
+pub type PCERT_RDN_ATTR = *mut CERT_RDN_ATTR;
+pub const szOID_COMMON_NAME: &'static str = "2.5.4.3";
+pub const szOID_SUR_NAME: &'static str = "2.5.4.4";
+pub const szOID_DEVICE_SERIAL_NUMBER: &'static str = "2.5.4.5";
+pub const szOID_COUNTRY_NAME: &'static str = "2.5.4.6";
+pub const szOID_LOCALITY_NAME: &'static str = "2.5.4.7";
+pub const szOID_STATE_OR_PROVINCE_NAME: &'static str = "2.5.4.8";
+pub const szOID_STREET_ADDRESS: &'static str = "2.5.4.9";
+pub const szOID_ORGANIZATION_NAME: &'static str = "2.5.4.10";
+pub const szOID_ORGANIZATIONAL_UNIT_NAME: &'static str = "2.5.4.11";
+pub const szOID_TITLE: &'static str = "2.5.4.12";
+pub const szOID_DESCRIPTION: &'static str = "2.5.4.13";
+pub const szOID_SEARCH_GUIDE: &'static str = "2.5.4.14";
+pub const szOID_BUSINESS_CATEGORY: &'static str = "2.5.4.15";
+pub const szOID_POSTAL_ADDRESS: &'static str = "2.5.4.16";
+pub const szOID_POSTAL_CODE: &'static str = "2.5.4.17";
+pub const szOID_POST_OFFICE_BOX: &'static str = "2.5.4.18";
+pub const szOID_PHYSICAL_DELIVERY_OFFICE_NAME: &'static str = "2.5.4.19";
+pub const szOID_TELEPHONE_NUMBER: &'static str = "2.5.4.20";
+pub const szOID_TELEX_NUMBER: &'static str = "2.5.4.21";
+pub const szOID_TELETEXT_TERMINAL_IDENTIFIER: &'static str = "2.5.4.22";
+pub const szOID_FACSIMILE_TELEPHONE_NUMBER: &'static str = "2.5.4.23";
+pub const szOID_X21_ADDRESS: &'static str = "2.5.4.24";
+pub const szOID_INTERNATIONAL_ISDN_NUMBER: &'static str = "2.5.4.25";
+pub const szOID_REGISTERED_ADDRESS: &'static str = "2.5.4.26";
+pub const szOID_DESTINATION_INDICATOR: &'static str = "2.5.4.27";
+pub const szOID_PREFERRED_DELIVERY_METHOD: &'static str = "2.5.4.28";
+pub const szOID_PRESENTATION_ADDRESS: &'static str = "2.5.4.29";
+pub const szOID_SUPPORTED_APPLICATION_CONTEXT: &'static str = "2.5.4.30";
+pub const szOID_MEMBER: &'static str = "2.5.4.31";
+pub const szOID_OWNER: &'static str = "2.5.4.32";
+pub const szOID_ROLE_OCCUPANT: &'static str = "2.5.4.33";
+pub const szOID_SEE_ALSO: &'static str = "2.5.4.34";
+pub const szOID_USER_PASSWORD: &'static str = "2.5.4.35";
+pub const szOID_USER_CERTIFICATE: &'static str = "2.5.4.36";
+pub const szOID_CA_CERTIFICATE: &'static str = "2.5.4.37";
+pub const szOID_AUTHORITY_REVOCATION_LIST: &'static str = "2.5.4.38";
+pub const szOID_CERTIFICATE_REVOCATION_LIST: &'static str = "2.5.4.39";
+pub const szOID_CROSS_CERTIFICATE_PAIR: &'static str = "2.5.4.40";
+pub const szOID_GIVEN_NAME: &'static str = "2.5.4.42";
+pub const szOID_INITIALS: &'static str = "2.5.4.43";
+pub const szOID_DN_QUALIFIER: &'static str = "2.5.4.46";
+pub const szOID_DOMAIN_COMPONENT: &'static str = "0.9.2342.19200300.100.1.25";
+pub const szOID_PKCS_12_FRIENDLY_NAME_ATTR: &'static str = "1.2.840.113549.1.9.20";
+pub const szOID_PKCS_12_LOCAL_KEY_ID: &'static str = "1.2.840.113549.1.9.21";
+pub const szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR: &'static str = "1.3.6.1.4.1.311.17.1";
+pub const szOID_LOCAL_MACHINE_KEYSET: &'static str = "1.3.6.1.4.1.311.17.2";
+pub const szOID_PKCS_12_EXTENDED_ATTRIBUTES: &'static str = "1.3.6.1.4.1.311.17.3";
+pub const szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID: &'static str =
+ "1.3.6.1.4.1.311.17.4";
+pub const szOID_KEYID_RDN: &'static str = "1.3.6.1.4.1.311.10.7.1";
+pub const szOID_EV_RDN_LOCALE: &'static str = "1.3.6.1.4.1.311.60.2.1.1";
+pub const szOID_EV_RDN_STATE_OR_PROVINCE: &'static str = "1.3.6.1.4.1.311.60.2.1.2";
+pub const szOID_EV_RDN_COUNTRY: &'static str = "1.3.6.1.4.1.311.60.2.1.3";
+pub const CERT_RDN_ANY_TYPE: ::DWORD = 0;
+pub const CERT_RDN_ENCODED_BLOB: ::DWORD = 1;
+pub const CERT_RDN_OCTET_STRING: ::DWORD = 2;
+pub const CERT_RDN_NUMERIC_STRING: ::DWORD = 3;
+pub const CERT_RDN_PRINTABLE_STRING: ::DWORD = 4;
+pub const CERT_RDN_TELETEX_STRING: ::DWORD = 5;
+pub const CERT_RDN_T61_STRING: ::DWORD = 5;
+pub const CERT_RDN_VIDEOTEX_STRING: ::DWORD = 6;
+pub const CERT_RDN_IA5_STRING: ::DWORD = 7;
+pub const CERT_RDN_GRAPHIC_STRING: ::DWORD = 8;
+pub const CERT_RDN_VISIBLE_STRING: ::DWORD = 9;
+pub const CERT_RDN_ISO646_STRING: ::DWORD = 9;
+pub const CERT_RDN_GENERAL_STRING: ::DWORD = 10;
+pub const CERT_RDN_UNIVERSAL_STRING: ::DWORD = 11;
+pub const CERT_RDN_INT4_STRING: ::DWORD = 11;
+pub const CERT_RDN_BMP_STRING: ::DWORD = 12;
+pub const CERT_RDN_UNICODE_STRING: ::DWORD = 12;
+pub const CERT_RDN_UTF8_STRING: ::DWORD = 13;
+pub const CERT_RDN_TYPE_MASK: ::DWORD = 0x000000FF;
+pub const CERT_RDN_FLAGS_MASK: ::DWORD = 0xFF000000;
+pub const CERT_RDN_ENABLE_T61_UNICODE_FLAG: ::DWORD = 0x80000000;
+pub const CERT_RDN_ENABLE_UTF8_UNICODE_FLAG: ::DWORD = 0x20000000;
+pub const CERT_RDN_FORCE_UTF8_UNICODE_FLAG: ::DWORD = 0x10000000;
+pub const CERT_RDN_DISABLE_CHECK_TYPE_FLAG: ::DWORD = 0x40000000;
+pub const CERT_RDN_DISABLE_IE4_UTF8_FLAG: ::DWORD = 0x01000000;
+pub const CERT_RDN_ENABLE_PUNYCODE_FLAG: ::DWORD = 0x02000000;
+STRUCT!{struct CERT_RDN {
+ cRDNAttr: ::DWORD,
+ rgRDNAttr: PCERT_RDN_ATTR,
+}}
+pub type PCERT_RDN = *mut CERT_RDN;
+STRUCT!{struct CERT_NAME_INFO {
+ cRDN: ::DWORD,
+ rgRDN: PCERT_RDN,
+}}
+pub type PCERT_NAME_INFO = *mut CERT_NAME_INFO;
+STRUCT!{struct CERT_NAME_VALUE {
+ dwValueType: ::DWORD,
+ Value: CERT_RDN_VALUE_BLOB,
+}}
+pub type PCERT_NAME_VALUE = *mut CERT_NAME_VALUE;
+STRUCT!{struct CERT_PUBLIC_KEY_INFO {
+ Algorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ PublicKey: CRYPT_BIT_BLOB,
+}}
+pub type PCERT_PUBLIC_KEY_INFO = *mut CERT_PUBLIC_KEY_INFO;
+pub const CERT_RSA_PUBLIC_KEY_OBJID: &'static str = szOID_RSA_RSA;
+pub const CERT_DEFAULT_OID_PUBLIC_KEY_SIGN: &'static str = szOID_RSA_RSA;
+pub const CERT_DEFAULT_OID_PUBLIC_KEY_XCHG: &'static str = szOID_RSA_RSA;
+STRUCT!{struct CRYPT_ECC_PRIVATE_KEY_INFO {
+ dwVersion: ::DWORD,
+ PrivateKey: CRYPT_DER_BLOB,
+ szCurveOid: ::LPSTR,
+ PublicKey: CRYPT_BIT_BLOB,
+}}
+pub type PCRYPT_ECC_PRIVATE_KEY_INFO = *mut CRYPT_ECC_PRIVATE_KEY_INFO;
+pub const CRYPT_ECC_PRIVATE_KEY_INFO_v1: ::DWORD = 1;
+STRUCT!{struct CRYPT_PRIVATE_KEY_INFO {
+ Version: ::DWORD,
+ Algorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ PrivateKey: CRYPT_DER_BLOB,
+ pAttributes: PCRYPT_ATTRIBUTES,
+}}
+pub type PCRYPT_PRIVATE_KEY_INFO = *mut CRYPT_PRIVATE_KEY_INFO;
+STRUCT!{struct CRYPT_ENCRYPTED_PRIVATE_KEY_INFO {
+ EncryptionAlgorithm: ::CRYPT_ALGORITHM_IDENTIFIER,
+ EncryptedPrivateKey: ::CRYPT_DATA_BLOB,
+}}
+pub type PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO = *mut CRYPT_ENCRYPTED_PRIVATE_KEY_INFO;
+pub type PCRYPT_DECRYPT_PRIVATE_KEY_FUNC = Option<unsafe extern "system" fn(
+ Algorithm: CRYPT_ALGORITHM_IDENTIFIER, EncryptedPrivateKey: CRYPT_DATA_BLOB,
+ pbClearTextKey: *mut ::BYTE, pcbClearTextKey: *mut ::DWORD, pVoidDecryptFunc: ::LPVOID,
+) -> ::BOOL>;
+pub type PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC = Option<unsafe extern "system" fn(
+ Algorithm: *mut CRYPT_ALGORITHM_IDENTIFIER, pClearTextPrivateKey: *mut CRYPT_DATA_BLOB,
+ pbEncryptedKey: *mut ::BYTE, pcbEncryptedKey: *mut ::DWORD, pVoidEncryptFunc: ::LPVOID,
+) -> ::BOOL>;
+pub type PCRYPT_RESOLVE_HCRYPTPROV_FUNC = Option<unsafe extern "system" fn(
+ pPrivateKeyInfo: *mut CRYPT_PRIVATE_KEY_INFO, phCryptProv: *mut HCRYPTPROV,
+ pVoidResolveFunc: ::LPVOID,
+) -> ::BOOL>;
+STRUCT!{nodebug struct CRYPT_PKCS8_IMPORT_PARAMS {
+ PrivateKey: CRYPT_DIGEST_BLOB,
+ pResolvehCryptProvFunc: PCRYPT_RESOLVE_HCRYPTPROV_FUNC,
+ pVoidResolveFunc: ::LPVOID,
+ pDecryptPrivateKeyFunc: PCRYPT_DECRYPT_PRIVATE_KEY_FUNC,
+ pVoidDecryptFunc: ::LPVOID,
+}}
+pub type PCRYPT_PKCS8_IMPORT_PARAMS = *mut CRYPT_PKCS8_IMPORT_PARAMS;
+pub type CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS = CRYPT_PKCS8_IMPORT_PARAMS;
+pub type PPCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS = *mut CRYPT_PKCS8_IMPORT_PARAMS;
+STRUCT!{nodebug struct CRYPT_PKCS8_EXPORT_PARAMS {
+ hCryptProv: HCRYPTPROV,
+ dwKeySpec: ::DWORD,
+ pszPrivateKeyObjId: ::LPSTR,
+ pEncryptPrivateKeyFunc: PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC,
+ pVoidEncryptFunc: ::LPVOID,
+}}
+pub type PCRYPT_PKCS8_EXPORT_PARAMS = *mut CRYPT_PKCS8_EXPORT_PARAMS;
+STRUCT!{struct CERT_INFO {
+ dwVersion: ::DWORD,
+ SerialNumber: CRYPT_INTEGER_BLOB,
+ SignatureAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ Issuer: CERT_NAME_BLOB,
+ NotBefore: ::FILETIME,
+ NotAfter: ::FILETIME,
+ Subject: CERT_NAME_BLOB,
+ SubjectPublicKeyInfo: CERT_PUBLIC_KEY_INFO,
+ IssuerUniqueId: CRYPT_BIT_BLOB,
+ SubjectUniqueId: CRYPT_BIT_BLOB,
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCERT_INFO = *mut CERT_INFO;
+pub const CERT_V1: ::DWORD = 0;
+pub const CERT_V2: ::DWORD = 1;
+pub const CERT_V3: ::DWORD = 2;
+pub const CERT_INFO_VERSION_FLAG: ::DWORD = 1;
+pub const CERT_INFO_SERIAL_NUMBER_FLAG: ::DWORD = 2;
+pub const CERT_INFO_SIGNATURE_ALGORITHM_FLAG: ::DWORD = 3;
+pub const CERT_INFO_ISSUER_FLAG: ::DWORD = 4;
+pub const CERT_INFO_NOT_BEFORE_FLAG: ::DWORD = 5;
+pub const CERT_INFO_NOT_AFTER_FLAG: ::DWORD = 6;
+pub const CERT_INFO_SUBJECT_FLAG: ::DWORD = 7;
+pub const CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG: ::DWORD = 8;
+pub const CERT_INFO_ISSUER_UNIQUE_ID_FLAG: ::DWORD = 9;
+pub const CERT_INFO_SUBJECT_UNIQUE_ID_FLAG: ::DWORD = 10;
+pub const CERT_INFO_EXTENSION_FLAG: ::DWORD = 11;
+STRUCT!{struct CRL_ENTRY {
+ SerialNumber: CRYPT_INTEGER_BLOB,
+ RevocationDate: ::FILETIME,
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCRL_ENTRY = *mut CRL_ENTRY;
+STRUCT!{struct CRL_INFO {
+ dwVersion: ::DWORD,
+ SignatureAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ Issuer: CERT_NAME_BLOB,
+ ThisUpdate: ::FILETIME,
+ NextUpdate: ::FILETIME,
+ cCRLEntry: ::DWORD,
+ rgCRLEntry: PCRL_ENTRY,
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCRL_INFO = *mut CRL_INFO;
+pub const CRL_V1: ::DWORD = 0;
+pub const CRL_V2: ::DWORD = 1;
+pub const CERT_BUNDLE_CERTIFICATE: ::DWORD = 0;
+pub const CERT_BUNDLE_CRL: ::DWORD = 1;
+STRUCT!{struct CERT_OR_CRL_BLOB {
+ dwChoice: ::DWORD,
+ cbEncoded: ::DWORD,
+ pbEncoded: *mut ::BYTE,
+}}
+pub type PCERT_OR_CRL_BLOB = *mut CERT_OR_CRL_BLOB;
+STRUCT!{struct CERT_OR_CRL_BUNDLE {
+ cItem: ::DWORD,
+ rgItem: PCERT_OR_CRL_BLOB,
+}}
+pub type PCERT_OR_CRL_BUNDLE = *mut CERT_OR_CRL_BUNDLE;
+STRUCT!{struct CERT_REQUEST_INFO {
+ dwVersion: ::DWORD,
+ Subject: CERT_NAME_BLOB,
+ SubjectPublicKeyInfo: CERT_PUBLIC_KEY_INFO,
+ cAttribute: ::DWORD,
+ rgAttribute: PCRYPT_ATTRIBUTE,
+}}
+pub type PCERT_REQUEST_INFO = *mut CERT_REQUEST_INFO;
+pub const CERT_REQUEST_V1: ::DWORD = 0;
+STRUCT!{struct CERT_KEYGEN_REQUEST_INFO {
+ dwVersion: ::DWORD,
+ SubjectPublicKeyInfo: CERT_PUBLIC_KEY_INFO,
+ pwszChallengeString: ::LPWSTR,
+}}
+pub type PCERT_KEYGEN_REQUEST_INFO = *mut CERT_KEYGEN_REQUEST_INFO;
+pub const CERT_KEYGEN_REQUEST_V1: ::DWORD = 0;
+STRUCT!{struct CERT_SIGNED_CONTENT_INFO {
+ ToBeSigned: CRYPT_DER_BLOB,
+ SignatureAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ Signature: CRYPT_BIT_BLOB,
+}}
+pub type PCERT_SIGNED_CONTENT_INFO = *mut CERT_SIGNED_CONTENT_INFO;
+STRUCT!{struct CTL_USAGE {
+ cUsageIdentifier: ::DWORD,
+ rgpszUsageIdentifier: *mut ::LPSTR,
+}}
+pub type PCTL_USAGE = *mut CTL_USAGE;
+pub type CERT_ENHKEY_USAGE = CTL_USAGE;
+pub type PCERT_ENHKEY_USAGE = *mut CERT_ENHKEY_USAGE;
+pub type PCCTL_USAGE = *const CTL_USAGE;
+pub type PCCERT_ENHKEY_USAGE = *const CERT_ENHKEY_USAGE;
+STRUCT!{struct CTL_ENTRY {
+ SubjectIdentifier: CRYPT_DATA_BLOB,
+ cAttribute: ::DWORD,
+ rgAttribute: PCRYPT_ATTRIBUTE,
+}}
+pub type PCTL_ENTRY = *mut CTL_ENTRY;
+STRUCT!{struct CTL_INFO {
+ dwVersion: ::DWORD,
+ SubjectUsage: CTL_USAGE,
+ ListIdentifier: CRYPT_DATA_BLOB,
+ SequenceNumber: CRYPT_INTEGER_BLOB,
+ ThisUpdate: ::FILETIME,
+ NextUpdate: ::FILETIME,
+ SubjectAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ cCTLEntry: ::DWORD,
+ rgCTLEntry: PCTL_ENTRY,
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCTL_INFO = *mut CTL_INFO;
+pub const CTL_V1: ::DWORD = 0;
+STRUCT!{struct CRYPT_TIME_STAMP_REQUEST_INFO {
+ pszTimeStampAlgorithm: ::LPSTR,
+ pszContentType: ::LPSTR,
+ Content: CRYPT_OBJID_BLOB,
+ cAttribute: ::DWORD,
+ rgAttribute: PCRYPT_ATTRIBUTE,
+}}
+pub type PCRYPT_TIME_STAMP_REQUEST_INFO = *mut CRYPT_TIME_STAMP_REQUEST_INFO;
+STRUCT!{struct CRYPT_ENROLLMENT_NAME_VALUE_PAIR {
+ pwszName: ::LPWSTR,
+ pwszValue: ::LPWSTR,
+}}
+pub type PCRYPT_ENROLLMENT_NAME_VALUE_PAIR = *mut CRYPT_ENROLLMENT_NAME_VALUE_PAIR;
+STRUCT!{struct CRYPT_CSP_PROVIDER {
+ dwKeySpec: ::DWORD,
+ pwszProviderName: ::LPWSTR,
+ Signature: CRYPT_BIT_BLOB,
+}}
+pub type PCRYPT_CSP_PROVIDER = *mut CRYPT_CSP_PROVIDER;
+pub const CERT_ENCODING_TYPE_MASK: ::DWORD = 0x0000FFFF;
+pub const CMSG_ENCODING_TYPE_MASK: ::DWORD = 0xFFFF0000;
+pub const CRYPT_ASN_ENCODING: ::DWORD = 0x00000001;
+pub const CRYPT_NDR_ENCODING: ::DWORD = 0x00000002;
+pub const X509_ASN_ENCODING: ::DWORD = 0x00000001;
+pub const X509_NDR_ENCODING: ::DWORD = 0x00000002;
+pub const PKCS_7_ASN_ENCODING: ::DWORD = 0x00010000;
+pub const PKCS_7_NDR_ENCODING: ::DWORD = 0x00020000;
+pub const CRYPT_FORMAT_STR_MULTI_LINE: ::DWORD = 0x0001;
+pub const CRYPT_FORMAT_STR_NO_HEX: ::DWORD = 0x0010;
+pub const CRYPT_FORMAT_SIMPLE: ::DWORD = 0x0001;
+pub const CRYPT_FORMAT_X509: ::DWORD = 0x0002;
+pub const CRYPT_FORMAT_OID: ::DWORD = 0x0004;
+pub const CRYPT_FORMAT_RDN_SEMICOLON: ::DWORD = 0x0100;
+pub const CRYPT_FORMAT_RDN_CRLF: ::DWORD = 0x0200;
+pub const CRYPT_FORMAT_RDN_UNQUOTE: ::DWORD = 0x0400;
+pub const CRYPT_FORMAT_RDN_REVERSE: ::DWORD = 0x0800;
+pub const CRYPT_FORMAT_COMMA: ::DWORD = 0x1000;
+pub const CRYPT_FORMAT_SEMICOLON: ::DWORD = CRYPT_FORMAT_RDN_SEMICOLON;
+pub const CRYPT_FORMAT_CRLF: ::DWORD = CRYPT_FORMAT_RDN_CRLF;
+pub type PFN_CRYPT_ALLOC = Option<unsafe extern "system" fn(cbSize: ::size_t)>;
+pub type PFN_CRYPT_FREE = Option<unsafe extern "system" fn(pv: ::LPVOID)>;
+STRUCT!{nodebug struct CRYPT_ENCODE_PARA {
+ cbSize: ::DWORD,
+ pfnAlloc: PFN_CRYPT_ALLOC,
+ pfnFree: PFN_CRYPT_FREE,
+}}
+pub type PCRYPT_ENCODE_PARA = *mut CRYPT_ENCODE_PARA;
+pub const CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG: ::DWORD = 0x8;
+pub const CRYPT_ENCODE_ALLOC_FLAG: ::DWORD = 0x8000;
+pub const CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG: ::DWORD =
+ CERT_RDN_ENABLE_T61_UNICODE_FLAG;
+pub const CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG: ::DWORD =
+ CERT_RDN_ENABLE_UTF8_UNICODE_FLAG;
+pub const CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG: ::DWORD =
+ CERT_RDN_FORCE_UTF8_UNICODE_FLAG;
+pub const CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG: ::DWORD =
+ CERT_RDN_DISABLE_CHECK_TYPE_FLAG;
+pub const CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG: ::DWORD = 0x10000;
+pub const CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG: ::DWORD = 0x20000;
+pub const CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG: ::DWORD = 0x40000;
+pub const CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG: ::DWORD = CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG
+ | CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG;
+STRUCT!{nodebug struct CRYPT_DECODE_PARA {
+ cbSize: ::DWORD,
+ pfnAlloc: PFN_CRYPT_ALLOC,
+ pfnFree: PFN_CRYPT_FREE,
+}}
+pub type PCRYPT_DECODE_PARA = *mut CRYPT_DECODE_PARA;
+pub const CRYPT_DECODE_NOCOPY_FLAG: ::DWORD = 0x1;
+pub const CRYPT_DECODE_TO_BE_SIGNED_FLAG: ::DWORD = 0x2;
+pub const CRYPT_DECODE_SHARE_OID_STRING_FLAG: ::DWORD = 0x4;
+pub const CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG: ::DWORD = 0x8;
+pub const CRYPT_DECODE_ALLOC_FLAG: ::DWORD = 0x8000;
+pub const CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG: ::DWORD =
+ CERT_RDN_DISABLE_IE4_UTF8_FLAG;
+pub const CRYPT_DECODE_ENABLE_PUNYCODE_FLAG: ::DWORD = 0x02000000;
+pub const CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG: ::DWORD = 0x04000000;
+pub const CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG: ::DWORD = CRYPT_DECODE_ENABLE_PUNYCODE_FLAG
+ | CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG;
+pub const CRYPT_ENCODE_DECODE_NONE: ::LPCSTR = 0 as ::LPCSTR;
+pub const X509_CERT: ::LPCSTR = 1 as ::LPCSTR;
+pub const X509_CERT_TO_BE_SIGNED: ::LPCSTR = 2 as ::LPCSTR;
+pub const X509_CERT_CRL_TO_BE_SIGNED: ::LPCSTR = 3 as ::LPCSTR;
+pub const X509_CERT_REQUEST_TO_BE_SIGNED: ::LPCSTR = 4 as ::LPCSTR;
+pub const X509_EXTENSIONS: ::LPCSTR = 5 as ::LPCSTR;
+pub const X509_NAME_VALUE: ::LPCSTR = 6 as ::LPCSTR;
+pub const X509_NAME: ::LPCSTR = 7 as ::LPCSTR;
+pub const X509_PUBLIC_KEY_INFO: ::LPCSTR = 8 as ::LPCSTR;
+pub const X509_AUTHORITY_KEY_ID: ::LPCSTR = 9 as ::LPCSTR;
+pub const X509_KEY_ATTRIBUTES: ::LPCSTR = 10 as ::LPCSTR;
+pub const X509_KEY_USAGE_RESTRICTION: ::LPCSTR = 11 as ::LPCSTR;
+pub const X509_ALTERNATE_NAME: ::LPCSTR = 12 as ::LPCSTR;
+pub const X509_BASIC_CONSTRAINTS: ::LPCSTR = 13 as ::LPCSTR;
+pub const X509_KEY_USAGE: ::LPCSTR = 14 as ::LPCSTR;
+pub const X509_BASIC_CONSTRAINTS2: ::LPCSTR = 15 as ::LPCSTR;
+pub const X509_CERT_POLICIES: ::LPCSTR = 16 as ::LPCSTR;
+pub const PKCS_UTC_TIME: ::LPCSTR = 17 as ::LPCSTR;
+pub const PKCS_TIME_REQUEST: ::LPCSTR = 18 as ::LPCSTR;
+pub const RSA_CSP_PUBLICKEYBLOB: ::LPCSTR = 19 as ::LPCSTR;
+pub const X509_UNICODE_NAME: ::LPCSTR = 20 as ::LPCSTR;
+pub const X509_KEYGEN_REQUEST_TO_BE_SIGNED: ::LPCSTR = 21 as ::LPCSTR;
+pub const PKCS_ATTRIBUTE: ::LPCSTR = 22 as ::LPCSTR;
+pub const PKCS_CONTENT_INFO_SEQUENCE_OF_ANY: ::LPCSTR = 23 as ::LPCSTR;
+pub const X509_UNICODE_NAME_VALUE: ::LPCSTR = 24 as ::LPCSTR;
+pub const X509_ANY_STRING: ::LPCSTR = X509_NAME_VALUE;
+pub const X509_UNICODE_ANY_STRING: ::LPCSTR = X509_UNICODE_NAME_VALUE;
+pub const X509_OCTET_STRING: ::LPCSTR = 25 as ::LPCSTR;
+pub const X509_BITS: ::LPCSTR = 26 as ::LPCSTR;
+pub const X509_INTEGER: ::LPCSTR = 27 as ::LPCSTR;
+pub const X509_MULTI_BYTE_INTEGER: ::LPCSTR = 28 as ::LPCSTR;
+pub const X509_ENUMERATED: ::LPCSTR = 29 as ::LPCSTR;
+pub const X509_CHOICE_OF_TIME: ::LPCSTR = 30 as ::LPCSTR;
+pub const X509_AUTHORITY_KEY_ID2: ::LPCSTR = 31 as ::LPCSTR;
+pub const X509_AUTHORITY_INFO_ACCESS: ::LPCSTR = 32 as ::LPCSTR;
+pub const X509_SUBJECT_INFO_ACCESS: ::LPCSTR = X509_AUTHORITY_INFO_ACCESS;
+pub const X509_CRL_REASON_CODE: ::LPCSTR = X509_ENUMERATED;
+pub const PKCS_CONTENT_INFO: ::LPCSTR = 33 as ::LPCSTR;
+pub const X509_SEQUENCE_OF_ANY: ::LPCSTR = 34 as ::LPCSTR;
+pub const X509_CRL_DIST_POINTS: ::LPCSTR = 35 as ::LPCSTR;
+pub const X509_ENHANCED_KEY_USAGE: ::LPCSTR = 36 as ::LPCSTR;
+pub const PKCS_CTL: ::LPCSTR = 37 as ::LPCSTR;
+pub const X509_MULTI_BYTE_UINT: ::LPCSTR = 38 as ::LPCSTR;
+pub const X509_DSS_PUBLICKEY: ::LPCSTR = X509_MULTI_BYTE_UINT;
+pub const X509_DSS_PARAMETERS: ::LPCSTR = 39 as ::LPCSTR;
+pub const X509_DSS_SIGNATURE: ::LPCSTR = 40 as ::LPCSTR;
+pub const PKCS_RC2_CBC_PARAMETERS: ::LPCSTR = 41 as ::LPCSTR;
+pub const PKCS_SMIME_CAPABILITIES: ::LPCSTR = 42 as ::LPCSTR;
+pub const X509_QC_STATEMENTS_EXT: ::LPCSTR = 42 as ::LPCSTR;
+pub const PKCS_RSA_PRIVATE_KEY: ::LPCSTR = 43 as ::LPCSTR;
+pub const PKCS_PRIVATE_KEY_INFO: ::LPCSTR = 44 as ::LPCSTR;
+pub const PKCS_ENCRYPTED_PRIVATE_KEY_INFO: ::LPCSTR = 45 as ::LPCSTR;
+pub const X509_PKIX_POLICY_QUALIFIER_USERNOTICE: ::LPCSTR = 46 as ::LPCSTR;
+pub const X509_DH_PUBLICKEY: ::LPCSTR = X509_MULTI_BYTE_UINT;
+pub const X509_DH_PARAMETERS: ::LPCSTR = 47 as ::LPCSTR;
+pub const PKCS_ATTRIBUTES: ::LPCSTR = 48 as ::LPCSTR;
+pub const PKCS_SORTED_CTL: ::LPCSTR = 49 as ::LPCSTR;
+pub const X509_ECC_SIGNATURE: ::LPCSTR = 47 as ::LPCSTR;
+pub const X942_DH_PARAMETERS: ::LPCSTR = 50 as ::LPCSTR;
+pub const X509_BITS_WITHOUT_TRAILING_ZEROES: ::LPCSTR = 51 as ::LPCSTR;
+pub const X942_OTHER_INFO: ::LPCSTR = 52 as ::LPCSTR;
+pub const X509_CERT_PAIR: ::LPCSTR = 53 as ::LPCSTR;
+pub const X509_ISSUING_DIST_POINT: ::LPCSTR = 54 as ::LPCSTR;
+pub const X509_NAME_CONSTRAINTS: ::LPCSTR = 55 as ::LPCSTR;
+pub const X509_POLICY_MAPPINGS: ::LPCSTR = 56 as ::LPCSTR;
+pub const X509_POLICY_CONSTRAINTS: ::LPCSTR = 57 as ::LPCSTR;
+pub const X509_CROSS_CERT_DIST_POINTS: ::LPCSTR = 58 as ::LPCSTR;
+pub const CMC_DATA: ::LPCSTR = 59 as ::LPCSTR;
+pub const CMC_RESPONSE: ::LPCSTR = 60 as ::LPCSTR;
+pub const CMC_STATUS: ::LPCSTR = 61 as ::LPCSTR;
+pub const CMC_ADD_EXTENSIONS: ::LPCSTR = 62 as ::LPCSTR;
+pub const CMC_ADD_ATTRIBUTES: ::LPCSTR = 63 as ::LPCSTR;
+pub const X509_CERTIFICATE_TEMPLATE: ::LPCSTR = 64 as ::LPCSTR;
+pub const OCSP_SIGNED_REQUEST: ::LPCSTR = 65 as ::LPCSTR;
+pub const OCSP_REQUEST: ::LPCSTR = 66 as ::LPCSTR;
+pub const OCSP_RESPONSE: ::LPCSTR = 67 as ::LPCSTR;
+pub const OCSP_BASIC_SIGNED_RESPONSE: ::LPCSTR = 68 as ::LPCSTR;
+pub const OCSP_BASIC_RESPONSE: ::LPCSTR = 69 as ::LPCSTR;
+pub const X509_LOGOTYPE_EXT: ::LPCSTR = 70 as ::LPCSTR;
+pub const X509_BIOMETRIC_EXT: ::LPCSTR = 71 as ::LPCSTR;
+pub const CNG_RSA_PUBLIC_KEY_BLOB: ::LPCSTR = 72 as ::LPCSTR;
+pub const X509_OBJECT_IDENTIFIER: ::LPCSTR = 73 as ::LPCSTR;
+pub const X509_ALGORITHM_IDENTIFIER: ::LPCSTR = 74 as ::LPCSTR;
+pub const PKCS_RSA_SSA_PSS_PARAMETERS: ::LPCSTR = 75 as ::LPCSTR;
+pub const PKCS_RSAES_OAEP_PARAMETERS: ::LPCSTR = 76 as ::LPCSTR;
+pub const ECC_CMS_SHARED_INFO: ::LPCSTR = 77 as ::LPCSTR;
+pub const TIMESTAMP_REQUEST: ::LPCSTR = 78 as ::LPCSTR;
+pub const TIMESTAMP_RESPONSE: ::LPCSTR = 79 as ::LPCSTR;
+pub const TIMESTAMP_INFO: ::LPCSTR = 80 as ::LPCSTR;
+pub const X509_CERT_BUNDLE: ::LPCSTR = 81 as ::LPCSTR;
+pub const X509_ECC_PRIVATE_KEY: ::LPCSTR = 82 as ::LPCSTR;
+pub const CNG_RSA_PRIVATE_KEY_BLOB: ::LPCSTR = 83 as ::LPCSTR;
+pub const X509_SUBJECT_DIR_ATTRS: ::LPCSTR = 84 as ::LPCSTR;
+pub const PKCS7_SIGNER_INFO: ::LPCSTR = 500 as ::LPCSTR;
+pub const CMS_SIGNER_INFO: ::LPCSTR = 501 as ::LPCSTR;
+pub const szOID_AUTHORITY_KEY_IDENTIFIER: &'static str = "2.5.29.1";
+pub const szOID_KEY_ATTRIBUTES: &'static str = "2.5.29.2";
+pub const szOID_CERT_POLICIES_95: &'static str = "2.5.29.3";
+pub const szOID_KEY_USAGE_RESTRICTION: &'static str = "2.5.29.4";
+pub const szOID_SUBJECT_ALT_NAME: &'static str = "2.5.29.7";
+pub const szOID_ISSUER_ALT_NAME: &'static str = "2.5.29.8";
+pub const szOID_BASIC_CONSTRAINTS: &'static str = "2.5.29.10";
+pub const szOID_KEY_USAGE: &'static str = "2.5.29.15";
+pub const szOID_PRIVATEKEY_USAGE_PERIOD: &'static str = "2.5.29.16";
+pub const szOID_BASIC_CONSTRAINTS2: &'static str = "2.5.29.19";
+pub const szOID_CERT_POLICIES: &'static str = "2.5.29.32";
+pub const szOID_ANY_CERT_POLICY: &'static str = "2.5.29.32.0";
+pub const szOID_INHIBIT_ANY_POLICY: &'static str = "2.5.29.54";
+pub const szOID_AUTHORITY_KEY_IDENTIFIER2: &'static str = "2.5.29.35";
+pub const szOID_SUBJECT_KEY_IDENTIFIER: &'static str = "2.5.29.14";
+pub const szOID_SUBJECT_ALT_NAME2: &'static str = "2.5.29.17";
+pub const szOID_ISSUER_ALT_NAME2: &'static str = "2.5.29.18";
+pub const szOID_CRL_REASON_CODE: &'static str = "2.5.29.21";
+pub const szOID_REASON_CODE_HOLD: &'static str = "2.5.29.23";
+pub const szOID_CRL_DIST_POINTS: &'static str = "2.5.29.31";
+pub const szOID_ENHANCED_KEY_USAGE: &'static str = "2.5.29.37";
+pub const szOID_ANY_ENHANCED_KEY_USAGE: &'static str = "2.5.29.37.0";
+pub const szOID_CRL_NUMBER: &'static str = "2.5.29.20";
+pub const szOID_DELTA_CRL_INDICATOR: &'static str = "2.5.29.27";
+pub const szOID_ISSUING_DIST_POINT: &'static str = "2.5.29.28";
+pub const szOID_FRESHEST_CRL: &'static str = "2.5.29.46";
+pub const szOID_NAME_CONSTRAINTS: &'static str = "2.5.29.30";
+pub const szOID_POLICY_MAPPINGS: &'static str = "2.5.29.33";
+pub const szOID_LEGACY_POLICY_MAPPINGS: &'static str = "2.5.29.5";
+pub const szOID_POLICY_CONSTRAINTS: &'static str = "2.5.29.36";
+pub const szOID_RENEWAL_CERTIFICATE: &'static str = "1.3.6.1.4.1.311.13.1";
+pub const szOID_ENROLLMENT_NAME_VALUE_PAIR: &'static str = "1.3.6.1.4.1.311.13.2.1";
+pub const szOID_ENROLLMENT_CSP_PROVIDER: &'static str = "1.3.6.1.4.1.311.13.2.2";
+pub const szOID_OS_VERSION: &'static str = "1.3.6.1.4.1.311.13.2.3";
+pub const szOID_ENROLLMENT_AGENT: &'static str = "1.3.6.1.4.1.311.20.2.1";
+pub const szOID_PKIX: &'static str = "1.3.6.1.5.5.7";
+pub const szOID_PKIX_PE: &'static str = "1.3.6.1.5.5.7.1";
+pub const szOID_AUTHORITY_INFO_ACCESS: &'static str = "1.3.6.1.5.5.7.1.1";
+pub const szOID_SUBJECT_INFO_ACCESS: &'static str = "1.3.6.1.5.5.7.1.11";
+pub const szOID_BIOMETRIC_EXT: &'static str = "1.3.6.1.5.5.7.1.2";
+pub const szOID_QC_STATEMENTS_EXT: &'static str = "1.3.6.1.5.5.7.1.3";
+pub const szOID_LOGOTYPE_EXT: &'static str = "1.3.6.1.5.5.7.1.12";
+pub const szOID_CERT_EXTENSIONS: &'static str = "1.3.6.1.4.1.311.2.1.14";
+pub const szOID_NEXT_UPDATE_LOCATION: &'static str = "1.3.6.1.4.1.311.10.2";
+pub const szOID_REMOVE_CERTIFICATE: &'static str = "1.3.6.1.4.1.311.10.8.1";
+pub const szOID_CROSS_CERT_DIST_POINTS: &'static str = "1.3.6.1.4.1.311.10.9.1";
+pub const szOID_CTL: &'static str = "1.3.6.1.4.1.311.10.1";
+pub const szOID_SORTED_CTL: &'static str = "1.3.6.1.4.1.311.10.1.1";
+pub const szOID_SERIALIZED: &'static str = "1.3.6.1.4.1.311.10.3.3.1";
+pub const szOID_NT_PRINCIPAL_NAME: &'static str = "1.3.6.1.4.1.311.20.2.3";
+pub const szOID_INTERNATIONALIZED_EMAIL_ADDRESS: &'static str = "1.3.6.1.4.1.311.20.2.4";
+pub const szOID_PRODUCT_UPDATE: &'static str = "1.3.6.1.4.1.311.31.1";
+pub const szOID_ANY_APPLICATION_POLICY: &'static str = "1.3.6.1.4.1.311.10.12.1";
+pub const szOID_AUTO_ENROLL_CTL_USAGE: &'static str = "1.3.6.1.4.1.311.20.1";
+pub const szOID_ENROLL_CERTTYPE_EXTENSION: &'static str = "1.3.6.1.4.1.311.20.2";
+pub const szOID_CERT_MANIFOLD: &'static str = "1.3.6.1.4.1.311.20.3";
+pub const szOID_CERTSRV_CA_VERSION: &'static str = "1.3.6.1.4.1.311.21.1";
+pub const szOID_CERTSRV_PREVIOUS_CERT_HASH: &'static str = "1.3.6.1.4.1.311.21.2";
+pub const szOID_CRL_VIRTUAL_BASE: &'static str = "1.3.6.1.4.1.311.21.3";
+pub const szOID_CRL_NEXT_PUBLISH: &'static str = "1.3.6.1.4.1.311.21.4";
+pub const szOID_KP_CA_EXCHANGE: &'static str = "1.3.6.1.4.1.311.21.5";
+pub const szOID_KP_KEY_RECOVERY_AGENT: &'static str = "1.3.6.1.4.1.311.21.6";
+pub const szOID_CERTIFICATE_TEMPLATE: &'static str = "1.3.6.1.4.1.311.21.7";
+pub const szOID_ENTERPRISE_OID_ROOT: &'static str = "1.3.6.1.4.1.311.21.8";
+pub const szOID_RDN_DUMMY_SIGNER: &'static str = "1.3.6.1.4.1.311.21.9";
+pub const szOID_APPLICATION_CERT_POLICIES: &'static str = "1.3.6.1.4.1.311.21.10";
+pub const szOID_APPLICATION_POLICY_MAPPINGS: &'static str = "1.3.6.1.4.1.311.21.11";
+pub const szOID_APPLICATION_POLICY_CONSTRAINTS: &'static str = "1.3.6.1.4.1.311.21.12";
+pub const szOID_ARCHIVED_KEY_ATTR: &'static str = "1.3.6.1.4.1.311.21.13";
+pub const szOID_CRL_SELF_CDP: &'static str = "1.3.6.1.4.1.311.21.14";
+pub const szOID_REQUIRE_CERT_CHAIN_POLICY: &'static str = "1.3.6.1.4.1.311.21.15";
+pub const szOID_ARCHIVED_KEY_CERT_HASH: &'static str = "1.3.6.1.4.1.311.21.16";
+pub const szOID_ISSUED_CERT_HASH: &'static str = "1.3.6.1.4.1.311.21.17";
+pub const szOID_DS_EMAIL_REPLICATION: &'static str = "1.3.6.1.4.1.311.21.19";
+pub const szOID_REQUEST_CLIENT_INFO: &'static str = "1.3.6.1.4.1.311.21.20";
+pub const szOID_ENCRYPTED_KEY_HASH: &'static str = "1.3.6.1.4.1.311.21.21";
+pub const szOID_CERTSRV_CROSSCA_VERSION: &'static str = "1.3.6.1.4.1.311.21.22";
+pub const szOID_NTDS_REPLICATION: &'static str = "1.3.6.1.4.1.311.25.1";
+pub const szOID_SUBJECT_DIR_ATTRS: &'static str = "2.5.29.9";
+pub const szOID_PKIX_KP: &'static str = "1.3.6.1.5.5.7.3";
+pub const szOID_PKIX_KP_SERVER_AUTH: &'static str = "1.3.6.1.5.5.7.3.1";
+pub const szOID_PKIX_KP_CLIENT_AUTH: &'static str = "1.3.6.1.5.5.7.3.2";
+pub const szOID_PKIX_KP_CODE_SIGNING: &'static str = "1.3.6.1.5.5.7.3.3";
+pub const szOID_PKIX_KP_EMAIL_PROTECTION: &'static str = "1.3.6.1.5.5.7.3.4";
+pub const szOID_PKIX_KP_IPSEC_END_SYSTEM: &'static str = "1.3.6.1.5.5.7.3.5";
+pub const szOID_PKIX_KP_IPSEC_TUNNEL: &'static str = "1.3.6.1.5.5.7.3.6";
+pub const szOID_PKIX_KP_IPSEC_USER: &'static str = "1.3.6.1.5.5.7.3.7";
+pub const szOID_PKIX_KP_TIMESTAMP_SIGNING: &'static str = "1.3.6.1.5.5.7.3.8";
+pub const szOID_PKIX_KP_OCSP_SIGNING: &'static str = "1.3.6.1.5.5.7.3.9";
+pub const szOID_PKIX_OCSP_NOCHECK: &'static str = "1.3.6.1.5.5.7.48.1.5";
+pub const szOID_PKIX_OCSP_NONCE: &'static str = "1.3.6.1.5.5.7.48.1.2";
+pub const szOID_IPSEC_KP_IKE_INTERMEDIATE: &'static str = "1.3.6.1.5.5.8.2.2";
+pub const szOID_PKINIT_KP_KDC: &'static str = "1.3.6.1.5.2.3.5";
+pub const szOID_KP_CTL_USAGE_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.1";
+pub const szOID_KP_TIME_STAMP_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.2";
+pub const szOID_SERVER_GATED_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.3";
+pub const szOID_SGC_NETSCAPE: &'static str = "2.16.840.1.113730.4.1";
+pub const szOID_KP_EFS: &'static str = "1.3.6.1.4.1.311.10.3.4";
+pub const szOID_EFS_RECOVERY: &'static str = "1.3.6.1.4.1.311.10.3.4.1";
+pub const szOID_WHQL_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.5";
+pub const szOID_NT5_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.6";
+pub const szOID_OEM_WHQL_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.7";
+pub const szOID_EMBEDDED_NT_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.8";
+pub const szOID_ROOT_LIST_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.9";
+pub const szOID_KP_QUALIFIED_SUBORDINATION: &'static str = "1.3.6.1.4.1.311.10.3.10";
+pub const szOID_KP_KEY_RECOVERY: &'static str = "1.3.6.1.4.1.311.10.3.11";
+pub const szOID_KP_DOCUMENT_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.12";
+pub const szOID_KP_LIFETIME_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.13";
+pub const szOID_KP_MOBILE_DEVICE_SOFTWARE: &'static str = "1.3.6.1.4.1.311.10.3.14";
+pub const szOID_KP_SMART_DISPLAY: &'static str = "1.3.6.1.4.1.311.10.3.15";
+pub const szOID_KP_CSP_SIGNATURE: &'static str = "1.3.6.1.4.1.311.10.3.16";
+pub const szOID_DRM: &'static str = "1.3.6.1.4.1.311.10.5.1";
+pub const szOID_DRM_INDIVIDUALIZATION: &'static str = "1.3.6.1.4.1.311.10.5.2";
+pub const szOID_LICENSES: &'static str = "1.3.6.1.4.1.311.10.6.1";
+pub const szOID_LICENSE_SERVER: &'static str = "1.3.6.1.4.1.311.10.6.2";
+pub const szOID_KP_SMARTCARD_LOGON: &'static str = "1.3.6.1.4.1.311.20.2.2";
+pub const szOID_KP_KERNEL_MODE_CODE_SIGNING: &'static str = "1.3.6.1.4.1.311.61.1.1";
+pub const szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING: &'static str = "1.3.6.1.4.1.311.61.4.1";
+pub const szOID_REVOKED_LIST_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.19";
+pub const szOID_WINDOWS_KITS_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.20";
+pub const szOID_WINDOWS_RT_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.21";
+pub const szOID_PROTECTED_PROCESS_LIGHT_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.22";
+pub const szOID_WINDOWS_TCB_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.23";
+pub const szOID_PROTECTED_PROCESS_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.24";
+pub const szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.25";
+pub const szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.26";
+pub const szOID_DISALLOWED_LIST: &'static str = "1.3.6.1.4.1.311.10.3.30";
+pub const szOID_SYNC_ROOT_CTL_EXT: &'static str = "1.3.6.1.4.1.311.10.3.50";
+pub const szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING: &'static str = "1.3.6.1.4.1.311.61.5.1";
+pub const szOID_WINDOWS_STORE_SIGNER: &'static str = "1.3.6.1.4.1.311.76.3.1";
+pub const szOID_DYNAMIC_CODE_GEN_SIGNER: &'static str = "1.3.6.1.4.1.311.76.5.1";
+pub const szOID_MICROSOFT_PUBLISHER_SIGNER: &'static str = "1.3.6.1.4.1.311.76.8.1";
+pub const szOID_YESNO_TRUST_ATTR: &'static str = "1.3.6.1.4.1.311.10.4.1";
+pub const szOID_PKIX_POLICY_QUALIFIER_CPS: &'static str = "1.3.6.1.5.5.7.2.1";
+pub const szOID_PKIX_POLICY_QUALIFIER_USERNOTICE: &'static str = "1.3.6.1.5.5.7.2.2";
+pub const szOID_ROOT_PROGRAM_FLAGS: &'static str = "1.3.6.1.4.1.311.60.1.1";
+//6992
+pub type HCRYPTMSG = *mut ::c_void;
+//9353
+pub type HCERTSTORE = *mut ::c_void;
+STRUCT!{struct CERT_CONTEXT {
+ dwCertEncodingType: ::DWORD,
+ pbCertEncoded: *mut ::BYTE,
+ cbCertEncoded: ::DWORD,
+ pCertInfo: ::PCERT_INFO,
+ hCertStore: HCERTSTORE,
+}}
+pub type PCERT_CONTEXT = *mut CERT_CONTEXT;
+pub type PCCERT_CONTEXT = *const CERT_CONTEXT;
+STRUCT!{struct CRL_CONTEXT {
+ dwCertEncodingType: ::DWORD,
+ pbCrlEncoded: *mut ::BYTE,
+ cbCrlEncoded: ::DWORD,
+ pCrlInfo: ::PCRL_INFO,
+ hCertStore: HCERTSTORE,
+}}
+pub type PCRL_CONTEXT = *mut CRL_CONTEXT;
+pub type PCCRL_CONTEXT = *const CRL_CONTEXT;
+STRUCT!{struct CTL_CONTEXT {
+ dwMsgAndCertEncodingType: ::DWORD,
+ pbCtlEncoded: *mut ::BYTE,
+ cbCtlEncoded: ::DWORD,
+ pCtlInfo: ::PCTL_INFO,
+ hCertStore: HCERTSTORE,
+ hCryptMsg: HCRYPTMSG,
+ pbCtlContent: *mut ::BYTE,
+ cbCtlContent: ::DWORD,
+}}
+pub type PCTL_CONTEXT = *mut CTL_CONTEXT;
+pub type PCCTL_CONTEXT = *const CTL_CONTEXT;
+pub const CERT_STORE_PROV_MSG: ::DWORD = 1;
+pub const CERT_STORE_PROV_MEMORY: ::DWORD = 2;
+pub const CERT_STORE_PROV_FILE: ::DWORD = 3;
+pub const CERT_STORE_PROV_REG: ::DWORD = 4;
+pub const CERT_STORE_PROV_PKCS7: ::DWORD = 5;
+pub const CERT_STORE_PROV_SERIALIZED: ::DWORD = 6;
+pub const CERT_STORE_PROV_FILENAME_A: ::DWORD = 7;
+pub const CERT_STORE_PROV_FILENAME_W: ::DWORD = 8;
+pub const CERT_STORE_PROV_FILENAME: ::DWORD = CERT_STORE_PROV_FILENAME_W;
+pub const CERT_STORE_PROV_SYSTEM_A: ::DWORD = 9;
+pub const CERT_STORE_PROV_SYSTEM_W: ::DWORD = 10;
+pub const CERT_STORE_PROV_SYSTEM: ::DWORD = CERT_STORE_PROV_SYSTEM_W;
+pub const CERT_STORE_PROV_COLLECTION: ::DWORD = 11;
+pub const CERT_STORE_PROV_SYSTEM_REGISTRY_A: ::DWORD = 12;
+pub const CERT_STORE_PROV_SYSTEM_REGISTRY_W: ::DWORD = 13;
+pub const CERT_STORE_PROV_SYSTEM_REGISTRY: ::DWORD = CERT_STORE_PROV_SYSTEM_REGISTRY_W;
+pub const CERT_STORE_PROV_PHYSICAL_W: ::DWORD = 14;
+pub const CERT_STORE_PROV_PHYSICAL: ::DWORD = CERT_STORE_PROV_PHYSICAL_W;
+pub const CERT_STORE_PROV_SMART_CARD_W: ::DWORD = 15;
+pub const CERT_STORE_PROV_SMART_CARD: ::DWORD = CERT_STORE_PROV_SMART_CARD_W;
+pub const CERT_STORE_PROV_LDAP_W: ::DWORD = 16;
+pub const CERT_STORE_PROV_LDAP: ::DWORD = CERT_STORE_PROV_LDAP_W;
+pub const CERT_STORE_NO_CRYPT_RELEASE_FLAG: ::DWORD = 0x00000001;
+pub const CERT_STORE_SET_LOCALIZED_NAME_FLAG: ::DWORD = 0x00000002;
+pub const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG: ::DWORD = 0x00000004;
+pub const CERT_STORE_DELETE_FLAG: ::DWORD = 0x00000010;
+pub const CERT_STORE_SHARE_STORE_FLAG: ::DWORD = 0x00000040;
+pub const CERT_STORE_SHARE_CONTEXT_FLAG: ::DWORD = 0x00000080;
+pub const CERT_STORE_MANIFOLD_FLAG: ::DWORD = 0x00000100;
+pub const CERT_STORE_ENUM_ARCHIVED_FLAG: ::DWORD = 0x00000200;
+pub const CERT_STORE_UPDATE_KEYID_FLAG: ::DWORD = 0x00000400;
+pub const CERT_STORE_BACKUP_RESTORE_FLAG: ::DWORD = 0x00000800;
+pub const CERT_STORE_READONLY_FLAG: ::DWORD = 0x00008000;
+pub const CERT_STORE_OPEN_EXISTING_FLAG: ::DWORD = 0x00004000;
+pub const CERT_STORE_CREATE_NEW_FLAG: ::DWORD = 0x00002000;
+pub const CERT_STORE_MAXIMUM_ALLOWED_FLAG: ::DWORD = 0x00001000;
+pub const CERT_SYSTEM_STORE_UNPROTECTED_FLAG: ::DWORD = 0x40000000;
+pub const CERT_SYSTEM_STORE_LOCATION_MASK: ::DWORD = 0x00FF0000;
+pub const CERT_SYSTEM_STORE_LOCATION_SHIFT: ::DWORD = 16;
+pub const CERT_SYSTEM_STORE_CURRENT_USER_ID: ::DWORD = 1;
+pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_ID: ::DWORD = 2;
+pub const CERT_SYSTEM_STORE_CURRENT_SERVICE_ID: ::DWORD = 4;
+pub const CERT_SYSTEM_STORE_SERVICES_ID: ::DWORD = 5;
+pub const CERT_SYSTEM_STORE_USERS_ID: ::DWORD = 6;
+pub const CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID: ::DWORD = 7;
+pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID: ::DWORD = 8;
+pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID: ::DWORD = 9;
+pub const CERT_SYSTEM_STORE_CURRENT_USER: ::DWORD = CERT_SYSTEM_STORE_CURRENT_USER_ID
+ << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_LOCAL_MACHINE: ::DWORD = CERT_SYSTEM_STORE_LOCAL_MACHINE_ID
+ << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_CURRENT_SERVICE: ::DWORD = CERT_SYSTEM_STORE_CURRENT_SERVICE_ID
+ << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_SERVICES: ::DWORD = CERT_SYSTEM_STORE_SERVICES_ID
+ << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_USERS: ::DWORD = CERT_SYSTEM_STORE_USERS_ID
+ << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY: ::DWORD =
+ CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY: ::DWORD =
+ CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE: ::DWORD =
+ CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT;
+pub const CERT_NAME_EMAIL_TYPE: ::DWORD = 1;
+pub const CERT_NAME_RDN_TYPE: ::DWORD = 2;
+pub const CERT_NAME_ATTR_TYPE: ::DWORD = 3;
+pub const CERT_NAME_SIMPLE_DISPLAY_TYPE: ::DWORD = 4;
+pub const CERT_NAME_FRIENDLY_DISPLAY_TYPE: ::DWORD = 5;
+pub const CERT_NAME_DNS_TYPE: ::DWORD = 6;
+pub const CERT_NAME_URL_TYPE: ::DWORD = 7;
+pub const CERT_NAME_UPN_TYPE: ::DWORD = 8;
+pub const CERT_SIMPLE_NAME_STR: ::DWORD = 1;
+pub const CERT_OID_NAME_STR: ::DWORD = 2;
+pub const CERT_X500_NAME_STR: ::DWORD = 3;
+
+pub const CERT_NAME_STR_SEMICOLON_FLAG: ::DWORD = 0x40000000;
+pub const CERT_NAME_STR_NO_PLUS_FLAG: ::DWORD = 0x20000000;
+pub const CERT_NAME_STR_NO_QUOTING_FLAG: ::DWORD = 0x10000000;
+pub const CERT_NAME_STR_CRLF_FLAG: ::DWORD = 0x08000000;
+pub const CERT_NAME_STR_COMMA_FLAG: ::DWORD = 0x04000000;
+pub const CERT_NAME_STR_REVERSE_FLAG: ::DWORD = 0x02000000;
+
+pub const CERT_NAME_ISSUER_FLAG: ::DWORD = 0x1;
+pub const CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG: ::DWORD = 0x00010000;
+pub const CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG: ::DWORD = 0x00020000;
+pub const CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG: ::DWORD = 0x00040000;
+pub const CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG: ::DWORD = 0x00080000;
+pub const CERT_DELETE_KEYSET_PROP_ID: ::DWORD = 101;
+pub const CERT_COMPARE_MASK: ::DWORD = 0xFFFF;
+pub const CERT_COMPARE_SHIFT: ::DWORD = 16;
+pub const CERT_COMPARE_ANY: ::DWORD = 0;
+pub const CERT_COMPARE_SHA1_HASH: ::DWORD = 1;
+pub const CERT_COMPARE_NAME: ::DWORD = 2;
+pub const CERT_COMPARE_ATTR: ::DWORD = 3;
+pub const CERT_COMPARE_MD5_HASH: ::DWORD = 4;
+pub const CERT_COMPARE_PROPERTY: ::DWORD = 5;
+pub const CERT_COMPARE_PUBLIC_KEY: ::DWORD = 6;
+pub const CERT_COMPARE_HASH: ::DWORD = CERT_COMPARE_SHA1_HASH;
+pub const CERT_COMPARE_NAME_STR_A: ::DWORD = 7;
+pub const CERT_COMPARE_NAME_STR_W: ::DWORD = 8;
+pub const CERT_COMPARE_KEY_SPEC: ::DWORD = 9;
+pub const CERT_COMPARE_ENHKEY_USAGE: ::DWORD = 10;
+pub const CERT_COMPARE_CTL_USAGE: ::DWORD = CERT_COMPARE_ENHKEY_USAGE;
+pub const CERT_COMPARE_SUBJECT_CERT: ::DWORD = 11;
+pub const CERT_COMPARE_ISSUER_OF: ::DWORD = 12;
+pub const CERT_COMPARE_EXISTING: ::DWORD = 13;
+pub const CERT_COMPARE_SIGNATURE_HASH: ::DWORD = 14;
+pub const CERT_COMPARE_KEY_IDENTIFIER: ::DWORD = 15;
+pub const CERT_COMPARE_CERT_ID: ::DWORD = 16;
+pub const CERT_COMPARE_CROSS_CERT_DIST_POINTS: ::DWORD = 17;
+pub const CERT_COMPARE_PUBKEY_MD5_HASH: ::DWORD = 18;
+pub const CERT_FIND_ANY: ::DWORD = CERT_COMPARE_ANY << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_SHA1_HASH: ::DWORD = CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_MD5_HASH: ::DWORD = CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_SIGNATURE_HASH: ::DWORD = CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_KEY_IDENTIFIER: ::DWORD = CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_HASH: ::DWORD = CERT_FIND_SHA1_HASH;
+pub const CERT_FIND_PROPERTY: ::DWORD = CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_PUBLIC_KEY: ::DWORD = CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_SUBJECT_NAME: ::DWORD = (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT)
+ | CERT_INFO_SUBJECT_FLAG;
+pub const CERT_FIND_SUBJECT_ATTR: ::DWORD = (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT)
+ | CERT_INFO_SUBJECT_FLAG;
+pub const CERT_FIND_ISSUER_NAME: ::DWORD = (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT)
+ | CERT_INFO_ISSUER_FLAG;
+pub const CERT_FIND_ISSUER_ATTR: ::DWORD = (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT)
+ | CERT_INFO_ISSUER_FLAG;
+pub const CERT_FIND_SUBJECT_STR_A: ::DWORD = (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT)
+ | CERT_INFO_SUBJECT_FLAG;
+pub const CERT_FIND_SUBJECT_STR_W: ::DWORD = (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT)
+ | CERT_INFO_SUBJECT_FLAG;
+pub const CERT_FIND_SUBJECT_STR: ::DWORD = CERT_FIND_SUBJECT_STR_W;
+pub const CERT_FIND_ISSUER_STR_A: ::DWORD = (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT)
+ | CERT_INFO_ISSUER_FLAG;
+pub const CERT_FIND_ISSUER_STR_W: ::DWORD = (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT)
+ | CERT_INFO_ISSUER_FLAG;
+pub const CERT_FIND_ISSUER_STR: ::DWORD = CERT_FIND_ISSUER_STR_W;
+pub const CERT_FIND_KEY_SPEC: ::DWORD = CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_ENHKEY_USAGE: ::DWORD = CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_CTL_USAGE: ::DWORD = CERT_FIND_ENHKEY_USAGE;
+pub const CERT_FIND_SUBJECT_CERT: ::DWORD = CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_ISSUER_OF: ::DWORD = CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_EXISTING: ::DWORD = CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_CERT_ID: ::DWORD = CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_CROSS_CERT_DIST_POINTS: ::DWORD = CERT_COMPARE_CROSS_CERT_DIST_POINTS
+ << CERT_COMPARE_SHIFT;
+pub const CERT_FIND_PUBKEY_MD5_HASH: ::DWORD = CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT;
+pub const CERT_ENCIPHER_ONLY_KEY_USAGE: ::DWORD = 0x0001;
+pub const CERT_CRL_SIGN_KEY_USAGE: ::DWORD = 0x0002;
+pub const CERT_KEY_CERT_SIGN_KEY_USAGE: ::DWORD = 0x0004;
+pub const CERT_KEY_AGREEMENT_KEY_USAGE: ::DWORD = 0x0008;
+pub const CERT_DATA_ENCIPHERMENT_KEY_USAGE: ::DWORD = 0x0010;
+pub const CERT_KEY_ENCIPHERMENT_KEY_USAGE: ::DWORD = 0x0020;
+pub const CERT_NON_REPUDIATION_KEY_USAGE: ::DWORD = 0x0040;
+pub const CERT_DIGITAL_SIGNATURE_KEY_USAGE: ::DWORD = 0x0080;
+pub const CERT_DECIPHER_ONLY_KEY_USAGE: ::DWORD = 0x8000;
+pub const CERT_STORE_ADD_NEW: ::DWORD = 1;
+pub const CERT_STORE_ADD_USE_EXISTING: ::DWORD = 2;
+pub const CERT_STORE_ADD_REPLACE_EXISTING: ::DWORD = 3;
+pub const CERT_STORE_ADD_ALWAYS: ::DWORD = 4;
+pub const CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES: ::DWORD = 5;
+pub const CERT_STORE_ADD_NEWER: ::DWORD = 6;
+pub const CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES: ::DWORD = 7;
+pub const CERT_STORE_SAVE_AS_STORE: ::DWORD = 1;
+pub const CERT_STORE_SAVE_AS_PKCS7: ::DWORD = 2;
+pub const CERT_STORE_SAVE_TO_FILE: ::DWORD = 1;
+pub const CERT_STORE_SAVE_TO_MEMORY: ::DWORD = 2;
+pub const CERT_STORE_SAVE_TO_FILENAME_A: ::DWORD = 3;
+pub const CERT_STORE_SAVE_TO_FILENAME_W: ::DWORD = 4;
+pub const CERT_STORE_SAVE_TO_FILENAME: ::DWORD = CERT_STORE_SAVE_TO_FILENAME_W;
+pub const CERT_CA_SUBJECT_FLAG: ::DWORD = 0x80;
+pub const CERT_END_ENTITY_SUBJECT_FLAG: ::DWORD = 0x40;
+pub const CERT_CHAIN_POLICY_BASE: ::DWORD = 1;
+pub const CERT_CHAIN_POLICY_AUTHENTICODE: ::DWORD = 2;
+pub const CERT_CHAIN_POLICY_AUTHENTICODE_TS: ::DWORD = 3;
+pub const CERT_CHAIN_POLICY_SSL: ::DWORD = 4;
+pub const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS: ::DWORD = 5;
+pub const CERT_CHAIN_POLICY_NT_AUTH: ::DWORD = 6;
+pub const CERT_CHAIN_POLICY_MICROSOFT_ROOT: ::DWORD = 7;
+pub const CERT_CHAIN_REVOCATION_CHECK_END_CERT: ::DWORD = 0x10000000;
+pub const CERT_CHAIN_REVOCATION_CHECK_CHAIN: ::DWORD = 0x20000000;
+pub const CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT: ::DWORD = 0x40000000;
+pub const CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY: ::DWORD = 0x80000000;
+pub const CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT: ::DWORD = 0x08000000;
+pub const CERT_TRUST_NO_ERROR: ::DWORD = 0x00000000;
+pub const CERT_TRUST_IS_NOT_TIME_VALID: ::DWORD = 0x00000001;
+pub const CERT_TRUST_IS_NOT_TIME_NESTED: ::DWORD = 0x00000002;
+pub const CERT_TRUST_IS_REVOKED: ::DWORD = 0x00000004;
+pub const CERT_TRUST_IS_NOT_SIGNATURE_VALID: ::DWORD = 0x00000008;
+pub const CERT_TRUST_IS_NOT_VALID_FOR_USAGE: ::DWORD = 0x00000010;
+pub const CERT_TRUST_IS_UNTRUSTED_ROOT: ::DWORD = 0x00000020;
+pub const CERT_TRUST_REVOCATION_STATUS_UNKNOWN: ::DWORD = 0x00000040;
+pub const CERT_TRUST_IS_CYCLIC: ::DWORD = 0x00000080;
+
+pub const CERT_TRUST_INVALID_EXTENSION: ::DWORD = 0x00000100;
+pub const CERT_TRUST_INVALID_POLICY_CONSTRAINTS: ::DWORD = 0x00000200;
+pub const CERT_TRUST_INVALID_BASIC_CONSTRAINTS: ::DWORD = 0x00000400;
+pub const CERT_TRUST_INVALID_NAME_CONSTRAINTS: ::DWORD = 0x00000800;
+pub const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT: ::DWORD = 0x00001000;
+pub const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT: ::DWORD = 0x00002000;
+pub const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT: ::DWORD = 0x00004000;
+pub const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT: ::DWORD = 0x00008000;
+
+pub const CERT_TRUST_IS_OFFLINE_REVOCATION: ::DWORD = 0x01000000;
+pub const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY: ::DWORD = 0x02000000;
+pub const CERT_TRUST_IS_PARTIAL_CHAIN: ::DWORD = 0x00010000;
+pub const CERT_TRUST_CTL_IS_NOT_TIME_VALID: ::DWORD = 0x00020000;
+pub const CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID: ::DWORD = 0x00040000;
+pub const CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE: ::DWORD = 0x00080000;
+pub const CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG: ::DWORD = 0x00000001;
+pub const CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG: ::DWORD = 0x00000002;
+pub const CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG: ::DWORD = 0x00000004;
+pub const CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG: ::DWORD = 0x00000008;
+
+pub const CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG: ::DWORD = 0x00000010;
+pub const CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG: ::DWORD = 0x00000020;
+pub const CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG: ::DWORD = 0x00000040;
+pub const CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG: ::DWORD = 0x00000080;
+
+pub const CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG: ::DWORD = 0x00000100;
+pub const CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG: ::DWORD = 0x00000200;
+pub const CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG: ::DWORD = 0x00000400;
+pub const CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG: ::DWORD = 0x00000800;
+
+pub const CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS: ::DWORD =
+ CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG |
+ CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG |
+ CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG |
+ CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG;
+pub const CERT_TRUST_HAS_EXACT_MATCH_ISSUER: ::DWORD = 0x00000001;
+pub const CERT_TRUST_HAS_KEY_MATCH_ISSUER: ::DWORD = 0x00000002;
+pub const CERT_TRUST_HAS_NAME_MATCH_ISSUER: ::DWORD = 0x00000004;
+pub const CERT_TRUST_IS_SELF_SIGNED: ::DWORD = 0x00000008;
+pub const CERT_TRUST_HAS_PREFERRED_ISSUER: ::DWORD = 0x00000100;
+pub const CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY: ::DWORD = 0x00000200;
+pub const CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS: ::DWORD = 0x00000400;
+pub const CERT_TRUST_IS_COMPLEX_CHAIN: ::DWORD = 0x00010000;
+pub const CERT_ALT_NAME_OTHER_NAME: ::DWORD = 1;
+pub const CERT_ALT_NAME_RFC822_NAME: ::DWORD = 2;
+pub const CERT_ALT_NAME_DNS_NAME: ::DWORD = 3;
+pub const CERT_ALT_NAME_X400_ADDRESS: ::DWORD = 4;
+pub const CERT_ALT_NAME_DIRECTORY_NAME: ::DWORD = 5;
+pub const CERT_ALT_NAME_EDI_PARTY_NAME: ::DWORD = 6;
+pub const CERT_ALT_NAME_URL: ::DWORD = 7;
+pub const CERT_ALT_NAME_IP_ADDRESS: ::DWORD = 8;
+pub const CERT_ALT_NAME_REGISTERED_ID: ::DWORD = 9;
+pub const CERT_STORE_CTRL_RESYNC: ::DWORD = 1;
+pub const CERT_STORE_CTRL_NOTIFY_CHANGE: ::DWORD = 2;
+pub const CERT_STORE_CTRL_COMMIT: ::DWORD = 3;
+pub const CERT_STORE_CTRL_AUTO_RESYNC: ::DWORD = 4;
+pub const CERT_STORE_CTRL_CANCEL_NOTIFY: ::DWORD = 5;
+pub const CERT_ID_ISSUER_SERIAL_NUMBER: ::DWORD = 1;
+pub const CERT_ID_KEY_IDENTIFIER: ::DWORD = 2;
+pub const CERT_ID_SHA1_HASH: ::DWORD = 3;
+pub const CERT_KEY_PROV_HANDLE_PROP_ID: ::DWORD = 1;
+pub const CERT_KEY_PROV_INFO_PROP_ID: ::DWORD = 2;
+pub const CERT_SHA1_HASH_PROP_ID: ::DWORD = 3;
+pub const CERT_MD5_HASH_PROP_ID: ::DWORD = 4;
+pub const CERT_HASH_PROP_ID: ::DWORD = CERT_SHA1_HASH_PROP_ID;
+pub const CERT_KEY_CONTEXT_PROP_ID: ::DWORD = 5;
+pub const CERT_KEY_SPEC_PROP_ID: ::DWORD = 6;
+pub const CERT_IE30_RESERVED_PROP_ID: ::DWORD = 7;
+pub const CERT_PUBKEY_HASH_RESERVED_PROP_ID: ::DWORD = 8;
+pub const CERT_ENHKEY_USAGE_PROP_ID: ::DWORD = 9;
+pub const CERT_CTL_USAGE_PROP_ID: ::DWORD = CERT_ENHKEY_USAGE_PROP_ID;
+pub const CERT_NEXT_UPDATE_LOCATION_PROP_ID: ::DWORD = 10;
+pub const CERT_FRIENDLY_NAME_PROP_ID: ::DWORD = 11;
+pub const CERT_PVK_FILE_PROP_ID: ::DWORD = 12;
+pub const CERT_DESCRIPTION_PROP_ID: ::DWORD = 13;
+pub const CERT_ACCESS_STATE_PROP_ID: ::DWORD = 14;
+pub const CERT_SIGNATURE_HASH_PROP_ID: ::DWORD = 15;
+pub const CERT_SMART_CARD_DATA_PROP_ID: ::DWORD = 16;
+pub const CERT_EFS_PROP_ID: ::DWORD = 17;
+pub const CERT_FORTEZZA_DATA_PROP_ID: ::DWORD = 18;
+pub const CERT_ARCHIVED_PROP_ID: ::DWORD = 19;
+pub const CERT_KEY_IDENTIFIER_PROP_ID: ::DWORD = 20;
+pub const CERT_AUTO_ENROLL_PROP_ID: ::DWORD = 21;
+pub const CERT_PUBKEY_ALG_PARA_PROP_ID: ::DWORD = 22;
+pub const CERT_CROSS_CERT_DIST_POINTS_PROP_ID: ::DWORD = 23;
+pub const CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID: ::DWORD = 24;
+pub const CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID: ::DWORD = 25;
+pub const CERT_ENROLLMENT_PROP_ID: ::DWORD = 26;
+pub const CERT_DATE_STAMP_PROP_ID: ::DWORD = 27;
+pub const CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID: ::DWORD = 28;
+pub const CERT_SUBJECT_NAME_MD5_HASH_PROP_ID: ::DWORD = 29;
+pub const CERT_EXTENDED_ERROR_INFO_PROP_ID: ::DWORD = 30;
+pub const CERT_RENEWAL_PROP_ID: ::DWORD = 64;
+pub const CERT_ARCHIVED_KEY_HASH_PROP_ID: ::DWORD = 65;
+pub const CERT_AUTO_ENROLL_RETRY_PROP_ID: ::DWORD = 66;
+pub const CERT_AIA_URL_RETRIEVED_PROP_ID: ::DWORD = 67;
+pub const CERT_AUTHORITY_INFO_ACCESS_PROP_ID: ::DWORD = 68;
+pub const CERT_BACKED_UP_PROP_ID: ::DWORD = 69;
+pub const CERT_OCSP_RESPONSE_PROP_ID: ::DWORD = 70;
+pub const CERT_REQUEST_ORIGINATOR_PROP_ID: ::DWORD = 71;
+pub const CERT_SOURCE_LOCATION_PROP_ID: ::DWORD = 72;
+pub const CERT_SOURCE_URL_PROP_ID: ::DWORD = 73;
+pub const CERT_NEW_KEY_PROP_ID: ::DWORD = 74;
+pub const CERT_OCSP_CACHE_PREFIX_PROP_ID: ::DWORD = 75;
+pub const CERT_SMART_CARD_ROOT_INFO_PROP_ID: ::DWORD = 76;
+pub const CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID: ::DWORD = 77;
+pub const CERT_NCRYPT_KEY_HANDLE_PROP_ID: ::DWORD = 78;
+pub const CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID: ::DWORD = 79;
+pub const CERT_SUBJECT_INFO_ACCESS_PROP_ID: ::DWORD = 80;
+pub const CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID: ::DWORD = 81;
+pub const CERT_CA_DISABLE_CRL_PROP_ID: ::DWORD = 82;
+pub const CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID: ::DWORD = 83;
+pub const CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID: ::DWORD = 84;
+pub const CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID: ::DWORD = 85;
+pub const CERT_SUBJECT_DISABLE_CRL_PROP_ID: ::DWORD = 86;
+pub const CERT_CEP_PROP_ID: ::DWORD = 87;
+pub const CERT_SIGN_HASH_CNG_ALG_PROP_ID: ::DWORD = 89;
+pub const CERT_SCARD_PIN_ID_PROP_ID: ::DWORD = 90;
+pub const CERT_SCARD_PIN_INFO_PROP_ID: ::DWORD = 91;
+pub const CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID: ::DWORD = 92;
+pub const CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID: ::DWORD = 93;
+pub const CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID: ::DWORD = 94;
+pub const CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID: ::DWORD = 95;
+pub const CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID: ::DWORD = 96;
+pub const CERT_NO_EXPIRE_NOTIFICATION_PROP_ID: ::DWORD = 97;
+pub const CERT_AUTH_ROOT_SHA256_HASH_PROP_ID: ::DWORD = 98;
+pub const CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID: ::DWORD = 99;
+pub const CERT_HCRYPTPROV_TRANSFER_PROP_ID: ::DWORD = 100;
+pub const CERT_SMART_CARD_READER_PROP_ID: ::DWORD = 101;
+pub const CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID: ::DWORD = 102;
+pub const CERT_KEY_REPAIR_ATTEMPTED_PROP_ID: ::DWORD = 103;
+pub const CERT_DISALLOWED_FILETIME_PROP_ID: ::DWORD = 104;
+pub const CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID: ::DWORD = 105;
+pub const CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID: ::DWORD = 106;
+pub const CERT_SHA256_HASH_PROP_ID: ::DWORD = 107;
+pub const CERT_SCEP_SERVER_CERTS_PROP_ID: ::DWORD = 108;
+pub const CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID: ::DWORD = 109;
+pub const CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID: ::DWORD = 110;
+pub const CERT_SCEP_CA_CERT_PROP_ID: ::DWORD = 111;
+pub const CERT_SCEP_SIGNER_CERT_PROP_ID: ::DWORD = 112;
+pub const CERT_SCEP_NONCE_PROP_ID: ::DWORD = 113;
+pub const CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID: ::DWORD = 114;
+pub const CERT_SCEP_FLAGS_PROP_ID: ::DWORD = 115;
+pub const CERT_SCEP_GUID_PROP_ID: ::DWORD = 116;
+pub const CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID: ::DWORD = 117;
+pub const CERT_ISOLATED_KEY_PROP_ID: ::DWORD = 118;
+pub const CERT_FIRST_RESERVED_PROP_ID: ::DWORD = 119;
+pub const CERT_LAST_RESERVED_PROP_ID: ::DWORD = 0x00007FFF;
+pub const CERT_FIRST_USER_PROP_ID: ::DWORD = 0x00008000;
+pub const CERT_LAST_USER_PROP_ID: ::DWORD = 0x0000FFFF;
+pub const szOID_CERT_PROP_ID_PREFIX: &'static str = "1.3.6.1.4.1.311.10.11.";
+pub const szOID_CERT_KEY_IDENTIFIER_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.20";
+pub const szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID: &'static str
+ = "1.3.6.1.4.1.311.10.11.28";
+pub const szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.29";
+pub const szOID_CERT_MD5_HASH_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.4";
+pub const szOID_CERT_SIGNATURE_HASH_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.15";
+pub const szOID_DISALLOWED_HASH: &'static str = szOID_CERT_SIGNATURE_HASH_PROP_ID;
+pub const szOID_CERT_DISALLOWED_FILETIME_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.104";
+pub const CERT_ACCESS_STATE_WRITE_PERSIST_FLAG: ::DWORD = 0x1;
+pub const CERT_ACCESS_STATE_SYSTEM_STORE_FLAG: ::DWORD = 0x2;
+pub const CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG: ::DWORD = 0x4;
+pub const CERT_ACCESS_STATE_GP_SYSTEM_STORE_FLAG: ::DWORD = 0x8;
+pub const CERT_ACCESS_STATE_SHARED_USER_FLAG: ::DWORD = 0x10;
+pub const szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION: &'static str = "1.3.6.1.4.1.311.60.3.1";
+pub const szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION: &'static str = "1.3.6.1.4.1.311.60.3.2";
+pub const szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL: &'static str = "1.3.6.1.4.1.311.60.3.3";
+STRUCT!{struct CRYPT_KEY_PROV_PARAM {
+ dwParam: ::DWORD,
+ pbData: *mut ::BYTE,
+ cbData: ::DWORD,
+ dwFlags: ::DWORD,
+}}
+pub type PCRYPT_KEY_PROV_PARAM = *mut CRYPT_KEY_PROV_PARAM;
+STRUCT!{struct CRYPT_KEY_PROV_INFO {
+ pwszContainerName: ::LPWSTR,
+ pwszProvName: ::LPWSTR,
+ dwProvType: ::DWORD,
+ dwFlags: ::DWORD,
+ cProvParam: ::DWORD,
+ rgProvParam: PCRYPT_KEY_PROV_PARAM,
+ dwKeySpec: ::DWORD,
+}}
+pub type PCRYPT_KEY_PROV_INFO = *mut CRYPT_KEY_PROV_INFO;
+pub const CERT_SET_KEY_PROV_HANDLE_PROP_ID: ::DWORD = 0x00000001;
+pub const CERT_SET_KEY_CONTEXT_PROP_ID: ::DWORD = 0x00000001;
+pub const CERT_NCRYPT_KEY_SPEC: ::DWORD = 0xFFFFFFFF;
+//20213
+pub type HCERT_SERVER_OCSP_RESPONSE = *mut ::c_void;
+STRUCT!{struct CERT_SERVER_OCSP_RESPONSE_CONTEXT {
+ cbSize: ::DWORD,
+ pbEncodedOcspResponse: *mut ::BYTE,
+ cbEncodedOcspResponse: ::DWORD,
+}}
+pub type PCERT_SERVER_OCSP_RESPONSE_CONTEXT = *mut CERT_SERVER_OCSP_RESPONSE_CONTEXT;
+pub type PCCERT_SERVER_OCSP_RESPONSE_CONTEXT = *const CERT_SERVER_OCSP_RESPONSE_CONTEXT;
+
+pub const CERT_CHAIN_CACHE_END_CERT: ::DWORD = 0x00000001;
+pub const CERT_CHAIN_THREAD_STORE_SYNC: ::DWORD = 0x00000002;
+pub const CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL: ::DWORD = 0x00000004;
+pub const CERT_CHAIN_USE_LOCAL_MACHINE_STORE: ::DWORD = 0x00000008;
+pub const CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE: ::DWORD = 0x00000010;
+pub const CERT_CHAIN_ENABLE_SHARE_STORE: ::DWORD = 0x00000020;
+
+STRUCT!{struct CERT_CHAIN_ENGINE_CONFIG {
+ cbSize: ::DWORD,
+ hRestrictedRoot: HCERTSTORE,
+ hRestrictedTrust: HCERTSTORE,
+ hRestrictedOther: HCERTSTORE,
+ cAdditionalStore: ::DWORD,
+ rghAdditionalStore: *mut HCERTSTORE,
+ dwFlags: ::DWORD,
+ dwUrlRetrievalTimeout: ::DWORD,
+ MaximumCachedCertificates: ::DWORD,
+ CycleDetectionModulus: ::DWORD,
+ // #if (NTDDI_VERSION >= NTDDI_WIN7)
+ hExclusiveRoot: HCERTSTORE,
+ hExclusiveTrustedPeople: HCERTSTORE,
+ // #if (NTDDI_VERSION >= NTDDI_WIN8)
+ dwExclusiveFlags: ::DWORD,
+}}
+pub type PCERT_CHAIN_ENGINE_CONFIG = *mut CERT_CHAIN_ENGINE_CONFIG;
+// 18748
+pub type HCERTCHAINENGINE = ::HANDLE;
+pub type PFN_CERT_CREATE_CONTEXT_SORT_FUNC = Option<unsafe extern "system" fn(
+ cbTotalEncoded: ::DWORD, cbRemainEncoded: ::DWORD, cEntry: ::DWORD, pvSort: *mut ::c_void
+) -> ::BOOL>;
+STRUCT!{nodebug struct CERT_CREATE_CONTEXT_PARA {
+ cbSize: ::DWORD,
+ pfnFree: PFN_CRYPT_FREE,
+ pvFree: *mut ::c_void,
+ pfnSort: PFN_CERT_CREATE_CONTEXT_SORT_FUNC,
+ pvSort: *mut ::c_void,
+}}
+pub type PCERT_CREATE_CONTEXT_PARA = *mut CERT_CREATE_CONTEXT_PARA;
+STRUCT!{struct CERT_EXTENSIONS {
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCERT_EXTENSIONS = *mut CERT_EXTENSIONS;
+STRUCT!{struct CERT_REVOCATION_CRL_INFO {
+ cbSize: ::DWORD,
+ pBaseCrlContext: PCCRL_CONTEXT,
+ pDeltaCrlContext: PCCRL_CONTEXT,
+ pCrlEntry: PCRL_ENTRY,
+ fDeltaCrlEntry: ::BOOL,
+}}
+pub type PCERT_REVOCATION_CRL_INFO = *mut CERT_REVOCATION_CRL_INFO;
+STRUCT!{struct CERT_TRUST_STATUS {
+ dwErrorStatus: ::DWORD,
+ dwInfoStatus: ::DWORD,
+}}
+pub type PCERT_TRUST_STATUS = *mut CERT_TRUST_STATUS;
+STRUCT!{struct CERT_REVOCATION_INFO {
+ cbSize: ::DWORD,
+ dwRevocationResult: ::DWORD,
+ pszRevocationOid: ::LPCSTR,
+ pvOidSpecificInfo: ::LPVOID,
+ fHasFreshnessTime: ::BOOL,
+ dwFreshnessTime: ::DWORD,
+ pCrlInfo: PCERT_REVOCATION_CRL_INFO,
+}}
+pub type PCERT_REVOCATION_INFO = *mut CERT_REVOCATION_INFO;
+STRUCT!{struct CERT_TRUST_LIST_INFO {
+ cbSize: ::DWORD,
+ pCtlEntry: PCTL_ENTRY,
+ pCtlContext: PCCTL_CONTEXT,
+}}
+pub type PCERT_TRUST_LIST_INFO = *mut CERT_TRUST_LIST_INFO;
+STRUCT!{struct CERT_CHAIN_ELEMENT {
+ cbSize: ::DWORD,
+ pCertContext: PCCERT_CONTEXT,
+ TrustStatus: CERT_TRUST_STATUS,
+ pRevocationInfo: PCERT_REVOCATION_INFO,
+ pIssuanceUsage: PCERT_ENHKEY_USAGE,
+ pApplicationUsage: PCERT_ENHKEY_USAGE,
+ pwszExtendedErrorInfo: ::LPWSTR,
+}}
+pub type PCERT_CHAIN_ELEMENT = *mut CERT_CHAIN_ELEMENT;
+pub type PCCERT_CHAIN_ELEMENT = *const CERT_CHAIN_ELEMENT;
+STRUCT!{struct CERT_SIMPLE_CHAIN {
+ cbSize: ::DWORD,
+ TrustStatus: CERT_TRUST_STATUS,
+ cElement: ::DWORD,
+ rgpElement: *mut PCERT_CHAIN_ELEMENT,
+ pTrustListInfo: PCERT_TRUST_LIST_INFO,
+ fHasRevocationFreshnessTime: ::BOOL,
+ dwRevocationFreshnessTime: ::DWORD,
+}}
+pub type PCERT_SIMPLE_CHAIN = *mut CERT_SIMPLE_CHAIN;
+pub type PCCERT_SIMPLE_CHAIN = *const CERT_SIMPLE_CHAIN;
+STRUCT!{struct CERT_CHAIN_CONTEXT {
+ cbSize: ::DWORD,
+ TrustStatus: CERT_TRUST_STATUS,
+ cChain: ::DWORD,
+ rgpChain: *mut PCERT_SIMPLE_CHAIN,
+ cLowerQualityChainContext: ::DWORD,
+ rgpLowerQualityChainContext: *mut PCCERT_CHAIN_CONTEXT,
+ fHasRevocationFreshnessTime: ::BOOL,
+ dwRevocationFreshnessTime: ::DWORD,
+ dwCreateFlags: ::DWORD,
+ ChainId: ::GUID,
+}}
+pub type PCERT_CHAIN_CONTEXT = *mut CERT_CHAIN_CONTEXT;
+pub type PCCERT_CHAIN_CONTEXT = *const CERT_CHAIN_CONTEXT;
+STRUCT!{struct CERT_PHYSICAL_STORE_INFO {
+ cbSize: ::DWORD,
+ pszOpenStoreProvider: ::LPSTR,
+ dwOpenEncodingType: ::DWORD,
+ dwOpenFlags: ::DWORD,
+ OpenParameters: CRYPT_DATA_BLOB,
+ dwFlags: ::DWORD,
+ dwPriority: ::DWORD,
+}}
+pub type PCERT_PHYSICAL_STORE_INFO = *mut CERT_PHYSICAL_STORE_INFO;
+STRUCT!{struct CERT_SYSTEM_STORE_INFO {
+ cbSize: ::DWORD,
+}}
+pub type PCERT_SYSTEM_STORE_INFO = *mut CERT_SYSTEM_STORE_INFO;
+//13401
+pub type PFN_CERT_ENUM_SYSTEM_STORE_LOCATION = Option<unsafe extern "system" fn(
+ pwszStoreLocation: ::LPCWSTR, dwFlags: ::DWORD, pvReserved: *mut ::c_void, pvArg: *mut ::c_void,
+) -> ::BOOL>;
+//13408
+pub type PFN_CERT_ENUM_SYSTEM_STORE = Option<unsafe extern "system" fn(
+ pvSystemStore: *const ::c_void, dwFlags: ::DWORD, pStoreInfo: PCERT_SYSTEM_STORE_INFO,
+ pvReserved: *mut ::c_void, pvArg: *mut ::c_void,
+) -> ::BOOL>;
+//13416
+pub type PFN_CERT_ENUM_PHYSICAL_STORE = Option<unsafe extern "system" fn(
+ pvSystemStore: *const ::c_void, dwFlags: ::DWORD, pwszStoreName: ::LPCWSTR,
+ pStoreInfo: PCERT_PHYSICAL_STORE_INFO, pvReserved: *mut ::c_void, pvArg: *mut ::c_void,
+) -> ::BOOL>;
+STRUCT!{struct CERT_STRONG_SIGN_SERIALIZED_INFO {
+ dwFlags: ::DWORD,
+ pwszCNGSignHashAlgids: ::LPWSTR,
+ pwszCNGPubKeyMinBitLengths: ::LPWSTR,
+}}
+pub type PCERT_STRONG_SIGN_SERIALIZED_INFO = *mut CERT_STRONG_SIGN_SERIALIZED_INFO;
+STRUCT!{struct CERT_STRONG_SIGN_PARA {
+ cbSize: ::DWORD,
+ dwInfoChoice: ::DWORD,
+ pvInfo: *mut ::c_void,
+}}
+UNION!(
+ CERT_STRONG_SIGN_PARA, pvInfo, pSerializedInfo, pSerializedInfo_mut,
+ PCERT_STRONG_SIGN_SERIALIZED_INFO
+);
+UNION!(CERT_STRONG_SIGN_PARA, pvInfo, pszOID, pszOID_mut, ::LPSTR);
+pub type PCERT_STRONG_SIGN_PARA = *mut CERT_STRONG_SIGN_PARA;
+pub type PCCERT_STRONG_SIGN_PARA = *const CERT_STRONG_SIGN_PARA;
+pub const USAGE_MATCH_TYPE_AND: ::DWORD = 0x00000000;
+pub const USAGE_MATCH_TYPE_OR: ::DWORD = 0x00000001;
+STRUCT!{struct CERT_USAGE_MATCH {
+ dwType: ::DWORD,
+ Usage: CERT_ENHKEY_USAGE,
+}}
+pub type PCERT_USAGE_MATCH = *mut CERT_USAGE_MATCH;
+STRUCT!{struct CERT_CHAIN_PARA {
+ cbSize: ::DWORD,
+ RequestedUsage: CERT_USAGE_MATCH,
+ RequestedIssuancePolicy: CERT_USAGE_MATCH,
+ dwUrlRetrievalTimeout: ::DWORD,
+ fCheckRevocationFreshnessTime: ::BOOL,
+ dwRevocationFreshnessTime: ::DWORD,
+ pftCacheResync: ::LPFILETIME,
+ pStrongSignPara: PCCERT_STRONG_SIGN_PARA,
+ dwStrongSignFlags: ::DWORD,
+}}
+pub type PCERT_CHAIN_PARA = *mut CERT_CHAIN_PARA;
+STRUCT!{struct CERT_SELECT_CHAIN_PARA {
+ hChainEngine: HCERTCHAINENGINE,
+ pTime: ::PFILETIME,
+ hAdditionalStore: HCERTSTORE,
+ pChainPara: PCERT_CHAIN_PARA,
+ dwFlags: ::DWORD,
+}}
+pub type PCERT_SELECT_CHAIN_PARA = *mut CERT_SELECT_CHAIN_PARA;
+pub type PCCERT_SELECT_CHAIN_PARA = *const CERT_SELECT_CHAIN_PARA;
+STRUCT!{struct CERT_SELECT_CRITERIA {
+ dwType: ::DWORD,
+ cPara: ::DWORD,
+ ppPara: *mut *mut ::c_void,
+}}
+pub type PCERT_SELECT_CRITERIA = *mut CERT_SELECT_CRITERIA;
+pub type PCCERT_SELECT_CRITERIA = *const CERT_SELECT_CRITERIA;
+STRUCT!{struct CTL_VERIFY_USAGE_PARA {
+ cbSize: ::DWORD,
+ ListIdentifier: CRYPT_DATA_BLOB,
+ cCtlStore: ::DWORD,
+ rghCtlStore: *mut HCERTSTORE,
+ cSignerStore: ::DWORD,
+ rghSignerStore: *mut HCERTSTORE,
+}}
+pub type PCTL_VERIFY_USAGE_PARA = *mut CTL_VERIFY_USAGE_PARA;
+STRUCT!{struct CTL_VERIFY_USAGE_STATUS {
+ cbSize: ::DWORD,
+ dwError: ::DWORD,
+ dwFlags: ::DWORD,
+ ppCtl: *mut PCCTL_CONTEXT,
+ dwCtlEntryIndex: ::DWORD,
+ ppSigner: *mut PCCERT_CONTEXT,
+ dwSignerIndex: ::DWORD,
+}}
+pub type PCTL_VERIFY_USAGE_STATUS = *mut CTL_VERIFY_USAGE_STATUS;
+STRUCT!{struct CERT_CHAIN_POLICY_PARA {
+ cbSize: ::DWORD,
+ dwFlags: ::DWORD,
+ pvExtraPolicyPara: *mut ::c_void,
+}}
+pub type PCERT_CHAIN_POLICY_PARA = *mut CERT_CHAIN_POLICY_PARA;
+STRUCT!{struct CERT_CHAIN_POLICY_STATUS {
+ cbSize: ::DWORD,
+ dwError: ::DWORD,
+ lChainIndex: ::LONG,
+ lElementIndex: ::LONG,
+ pvExtraPolicyStatus: *mut ::c_void,
+}}
+pub type PCERT_CHAIN_POLICY_STATUS = *mut CERT_CHAIN_POLICY_STATUS;
+STRUCT!{struct CERT_REVOCATION_CHAIN_PARA {
+ cbSize: ::DWORD,
+ hChainEngine: HCERTCHAINENGINE,
+ hAdditionalStore: HCERTSTORE,
+ dwChainFlags: ::DWORD,
+ dwUrlRetrievalTimeout: ::DWORD,
+ pftCurrentTime: ::LPFILETIME,
+ pftCacheResync: ::LPFILETIME,
+}}
+pub type PCERT_REVOCATION_CHAIN_PARA = *mut CERT_REVOCATION_CHAIN_PARA;
+STRUCT!{struct CERT_REVOCATION_PARA {
+ cbSize: ::DWORD,
+ pIssuerCert: PCCERT_CONTEXT,
+ cCertStore: ::DWORD,
+ rgCertStore: *mut HCERTSTORE,
+ hCrlStore: HCERTSTORE,
+ pftTimeToUse: ::LPFILETIME,
+ dwUrlRetrievalTimeout: ::DWORD,
+ fCheckFreshnessTime: ::BOOL,
+ dwFreshnessTime: ::DWORD,
+ pftCurrentTime: ::LPFILETIME,
+ pCrlInfo: PCERT_REVOCATION_CRL_INFO,
+ pftCacheResync: ::LPFILETIME,
+ pChainPara: PCERT_REVOCATION_CHAIN_PARA,
+}}
+pub type PCERT_REVOCATION_PARA = *mut CERT_REVOCATION_PARA;
+STRUCT!{struct CERT_REVOCATION_STATUS {
+ cbSize: ::DWORD,
+ dwIndex: ::DWORD,
+ dwError: ::DWORD,
+ dwReason: ::DWORD,
+ fHasFreshnessTime: ::BOOL,
+ dwFreshnessTime: ::DWORD,
+}}
+pub type PCERT_REVOCATION_STATUS = *mut CERT_REVOCATION_STATUS;
+//16990
+pub type HCRYPTASYNC = ::HANDLE;
+pub type PHCRYPTASYNC = *mut ::HANDLE;
+STRUCT!{struct CRYPT_ENCRYPT_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgEncodingType: ::DWORD,
+ hCryptProv: HCRYPTPROV_LEGACY,
+ ContentEncryptionAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ pvEncryptionAuxInfo: *mut ::c_void,
+ dwFlags: ::DWORD,
+ dwInnerContentType: ::DWORD,
+}}
+pub type PCRYPT_ENCRYPT_MESSAGE_PARA = *mut CRYPT_DECRYPT_MESSAGE_PARA;
+STRUCT!{struct CRYPT_DECRYPT_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgAndCertEncodingType: ::DWORD,
+ cCertStore: ::DWORD,
+ rghCertStore: *mut HCERTSTORE,
+ dwFlags: ::DWORD,
+}}
+pub type PCRYPT_DECRYPT_MESSAGE_PARA = *mut CRYPT_DECRYPT_MESSAGE_PARA;
+pub type PFN_CRYPT_GET_SIGNER_CERTIFICATE = Option<unsafe extern "system" fn(
+ pvGetArg: *mut ::c_void, dwCertEncodingType: ::DWORD, pSignerId: PCERT_INFO,
+ hMsgCertStore: HCERTSTORE,
+) -> PCCERT_CONTEXT>;
+STRUCT!{nodebug struct CRYPT_VERIFY_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgAndCertEncodingType: ::DWORD,
+ hCryptProv: HCRYPTPROV_LEGACY,
+ pfnGetSignerCertificate: PFN_CRYPT_GET_SIGNER_CERTIFICATE,
+ pvGetArg: *mut ::c_void,
+ pStrongSignPara: PCCERT_STRONG_SIGN_PARA,
+}}
+pub type PCRYPT_VERIFY_MESSAGE_PARA = *mut CRYPT_VERIFY_MESSAGE_PARA;
+STRUCT!{struct CRYPT_OID_INFO {
+ cbSize: ::DWORD,
+ oszOID: ::LPCSTR,
+ pwszName: ::LPCWSTR,
+ dwGroupId: ::DWORD,
+ dwValue: ::DWORD,
+ ExtraInfo: CRYPT_DATA_BLOB,
+ pwszCNGAlgid: ::LPCWSTR,
+ pwszCNGExtraAlgid: ::LPCWSTR,
+}}
+UNION!(CRYPT_OID_INFO, dwValue, Algid, Algid_mut, ALG_ID);
+UNION!(CRYPT_OID_INFO, dwValue, dwLength, dwLength_mut, ::DWORD);
+pub type PCRYPT_OID_INFO = *mut CRYPT_OID_INFO;
+pub type PCCRYPT_OID_INFO = *const CRYPT_OID_INFO;
+//18004
+pub type PFN_CRYPT_ENUM_KEYID_PROP = Option<unsafe extern "system" fn(
+ pKeyIdentifier: *const CRYPT_HASH_BLOB, dwFlags: ::DWORD, pvReserved: *mut ::c_void,
+ pvArg: *mut ::c_void, cProp: ::DWORD, rgdwPropId: *mut ::DWORD, rgpvData: *mut *mut ::c_void,
+ rgcbData: *mut ::DWORD,
+) -> ::BOOL>;
+//6379
+pub type PFN_CRYPT_ENUM_OID_FUNC = Option<unsafe extern "system" fn(
+ dwEncodingType: ::DWORD, pszFuncName: ::LPCSTR, pszOID: ::LPCSTR, cValue: ::DWORD,
+ rgdwValueType: *const ::DWORD, rgpwszValueName: *const ::LPCWSTR,
+ rgpbValueData: *const *const ::BYTE, rgcbValueData: *const ::DWORD, pvArg: *mut ::c_void,
+) -> ::BOOL>;
+//6675
+pub type PFN_CRYPT_ENUM_OID_INFO = Option<unsafe extern "system" fn(
+ pInfo: PCCRYPT_OID_INFO, pvArg: *mut ::c_void,
+) -> ::BOOL>;
+//6022
+pub type HCRYPTOIDFUNCSET = *mut ::c_void;
+pub type HCRYPTOIDFUNCADDR = *mut ::c_void;
+pub type PFN_CRYPT_ASYNC_PARAM_FREE_FUNC = Option<unsafe extern "system" fn(
+ pszParamOid: ::LPSTR, pvParam: ::LPVOID,
+)>;
+STRUCT!{struct CRYPT_HASH_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgEncodingType: ::DWORD,
+ hCryptProv: HCRYPTPROV_LEGACY,
+ HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ pvHashAuxInfo: *mut ::c_void,
+}}
+pub type PCRYPT_HASH_MESSAGE_PARA = *mut CRYPT_HASH_MESSAGE_PARA;
+//14750
+pub type HCRYPTDEFAULTCONTEXT = *mut ::c_void;
+STRUCT!{struct CRYPT_OID_FUNC_ENTRY {
+ pszOID: ::LPCSTR,
+ pvFuncAddr: *mut ::c_void,
+}}
+pub type PCRYPT_OID_FUNC_ENTRY = *mut CRYPT_OID_FUNC_ENTRY;
+STRUCT!{struct CMSG_SIGNER_ENCODE_INFO {
+ cbSize: ::DWORD,
+ pCertInfo: PCERT_INFO,
+ hCryptProv: HCRYPTPROV,
+ dwKeySpec: ::DWORD,
+ HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ pvHashAuxInfo: *mut ::c_void,
+ cAuthAttr: ::DWORD,
+ rgAuthAttr: PCRYPT_ATTRIBUTE,
+ cUnauthAttr: ::DWORD,
+ rgUnauthAttr: PCRYPT_ATTRIBUTE,
+}}
+UNION!(CMSG_SIGNER_ENCODE_INFO, hCryptProv, hNCryptKey, hNCryptKey_mut, ::NCRYPT_KEY_HANDLE);
+pub type PCMSG_SIGNER_ENCODE_INFO = *mut CMSG_SIGNER_ENCODE_INFO;
+STRUCT!{struct CMSG_SIGNED_ENCODE_INFO {
+ cbSize: ::DWORD,
+ cSigners: ::DWORD,
+ rgSigners: PCMSG_SIGNER_ENCODE_INFO,
+ cCertEncoded: ::DWORD,
+ rgCertEncoded: PCERT_BLOB,
+ cCrlEncoded: ::DWORD,
+ rgCrlEncoded: PCRL_BLOB,
+}}
+pub type PCMSG_SIGNED_ENCODE_INFO = *mut CMSG_SIGNED_ENCODE_INFO;
+//7393
+pub type PFN_CMSG_STREAM_OUTPUT = Option<unsafe extern "system" fn(
+ pvArg: *const ::c_void, pbData: *mut ::BYTE, cbData: ::DWORD, fFinal: ::BOOL,
+) -> ::BOOL>;
+STRUCT!{nodebug struct CMSG_STREAM_INFO {
+ cbContent: ::DWORD,
+ pfnStreamOutput: PFN_CMSG_STREAM_OUTPUT,
+ pvArg: *mut ::c_void,
+}}
+pub type PCMSG_STREAM_INFO = *mut CMSG_STREAM_INFO;
+STRUCT!{struct CRYPT_TIMESTAMP_ACCURACY {
+ dwSeconds: ::DWORD,
+ dwMillis: ::DWORD,
+ dwMicros: ::DWORD,
+}}
+pub type PCRYPT_TIMESTAMP_ACCURACY = *mut CRYPT_TIMESTAMP_ACCURACY;
+STRUCT!{struct CRYPT_TIMESTAMP_INFO {
+ dwVersion: ::DWORD,
+ pszTSAPolicyId: ::LPSTR,
+ HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ HashedMessage: CRYPT_DER_BLOB,
+ SerialNumber: CRYPT_INTEGER_BLOB,
+ ftTime: ::FILETIME,
+ pvAccuracy: PCRYPT_TIMESTAMP_ACCURACY,
+ fOrdering: ::BOOL,
+ Nonce: CRYPT_DER_BLOB,
+ Tsa: CRYPT_DER_BLOB,
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCRYPT_TIMESTAMP_INFO = *mut CRYPT_TIMESTAMP_INFO;
+STRUCT!{struct CRYPT_TIMESTAMP_CONTEXT {
+ cbEncoded: ::DWORD,
+ pbEncoded: *mut ::BYTE,
+ pTimeStamp: PCRYPT_TIMESTAMP_INFO,
+}}
+pub type PCRYPT_TIMESTAMP_CONTEXT = *mut CRYPT_TIMESTAMP_CONTEXT;
+STRUCT!{struct CRYPT_TIMESTAMP_PARA {
+ pszTSAPolicyId: ::LPCSTR,
+ fRequestCerts: ::BOOL,
+ Nonce: CRYPT_INTEGER_BLOB,
+ cExtension: ::DWORD,
+ rgExtension: PCERT_EXTENSION,
+}}
+pub type PCRYPT_TIMESTAMP_PARA = *mut CRYPT_TIMESTAMP_PARA;
+STRUCT!{struct CRYPT_SIGN_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgEncodingType: ::DWORD,
+ pSigningCert: PCCERT_CONTEXT,
+ HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ pvHashAuxInfo: *mut ::c_void,
+ cMsgCert: ::DWORD,
+ rgpMsgCert: *mut PCCERT_CONTEXT,
+ cMsgCrl: ::DWORD,
+ rgpMsgCrl: *mut PCCRL_CONTEXT,
+ cAuthAttr: ::DWORD,
+ rgAuthAttr: PCRYPT_ATTRIBUTE,
+ cUnauthAttr: ::DWORD,
+ rgUnauthAttr: PCRYPT_ATTRIBUTE,
+ dwFlags: ::DWORD,
+ dwInnerContentType: ::DWORD,
+}}
+pub type PCRYPT_SIGN_MESSAGE_PARA = *mut CRYPT_SIGN_MESSAGE_PARA;
+STRUCT!{struct CRYPT_KEY_SIGN_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgAndCertEncodingType: ::DWORD,
+ hCryptProv: HCRYPTPROV,
+ dwKeySpec: ::DWORD,
+ HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+ pvHashAuxInfo: *mut ::c_void,
+ PubKeyAlgorithm: CRYPT_ALGORITHM_IDENTIFIER,
+}}
+UNION!(CRYPT_KEY_SIGN_MESSAGE_PARA, hCryptProv, hNCryptKey, hNCryptKey_mut, ::NCRYPT_KEY_HANDLE);
+pub type PCRYPT_KEY_SIGN_MESSAGE_PARA = *mut CRYPT_KEY_SIGN_MESSAGE_PARA;
+STRUCT!{struct CRYPT_KEY_VERIFY_MESSAGE_PARA {
+ cbSize: ::DWORD,
+ dwMsgEncodingType: ::DWORD,
+ hCryptProv: HCRYPTPROV_LEGACY,
+}}
+pub type PCRYPT_KEY_VERIFY_MESSAGE_PARA = *mut CRYPT_KEY_VERIFY_MESSAGE_PARA;
+STRUCT!{struct HTTPSPolicyCallbackData {
+ cbSize: ::DWORD,
+ dwAuthType: ::DWORD,
+ fdwChecks: ::DWORD,
+ pwszServerName: *mut ::WCHAR,
+}}
+pub type PHTTPSPolicyCallbackData = *mut HTTPSPolicyCallbackData;
+pub type SSL_EXTRA_CERT_CHAIN_POLICY_PARA = HTTPSPolicyCallbackData;
+pub type PSSL_EXTRA_CERT_CHAIN_POLICY_PARA = *mut HTTPSPolicyCallbackData;
+pub const AUTHTYPE_CLIENT: ::DWORD = 1;
+pub const AUTHTYPE_SERVER: ::DWORD = 2;
+pub const CTL_ENTRY_FROM_PROP_CHAIN_FLAG: ::DWORD = 0x1;
+pub const CMSG_ENCODE_SORTED_CTL_FLAG: ::DWORD = 0x1;
+pub const CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG: ::DWORD = 0x2;
diff --git a/third_party/rust/winapi-0.2.8/src/windef.rs b/third_party/rust/winapi-0.2.8/src/windef.rs
new file mode 100644
index 0000000000..6493b48c1f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/windef.rs
@@ -0,0 +1,57 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Basic Windows Type Definitions
+DECLARE_HANDLE!(HWND, HWND__);
+DECLARE_HANDLE!(HHOOK, HHOOK__);
+DECLARE_HANDLE!(HEVENT, HEVENT__);
+pub type HGDIOBJ = *mut ::c_void;
+DECLARE_HANDLE!(HACCEL, HACCEL__);
+DECLARE_HANDLE!(HBITMAP, HBITMAP__);
+DECLARE_HANDLE!(HBRUSH, HBRUSH__);
+DECLARE_HANDLE!(HCOLORSPACE, HCOLORSPACE__);
+DECLARE_HANDLE!(HDC, HDC__);
+DECLARE_HANDLE!(HGLRC, HGLRC__);
+DECLARE_HANDLE!(HDESK, HDESK__);
+DECLARE_HANDLE!(HENHMETAFILE, HENHMETAFILE__);
+DECLARE_HANDLE!(HFONT, HFONT__);
+DECLARE_HANDLE!(HICON, HICON__);
+DECLARE_HANDLE!(HMENU, HMENU__);
+DECLARE_HANDLE!(HPALETTE, HPALETTE__);
+DECLARE_HANDLE!(HPEN, HPEN__);
+DECLARE_HANDLE!(HWINEVENTHOOK, HWINEVENTHOOK__);
+DECLARE_HANDLE!(HMONITOR, HMONITOR__);
+DECLARE_HANDLE!(HUMPD, HUMPD__);
+pub type HCURSOR = HICON;
+pub type COLORREF = ::DWORD;
+pub type LPCOLORREF = *mut ::DWORD;
+STRUCT!{struct RECT {
+ left: ::LONG,
+ top: ::LONG,
+ right: ::LONG,
+ bottom: ::LONG,
+}}
+pub type PRECT = *mut RECT;
+pub type NPRECT = *mut RECT;
+pub type LPRECT = *mut RECT;
+pub type LPCRECT = *const RECT;
+STRUCT!{struct RECTL {
+ left: ::LONG,
+ top: ::LONG,
+ right: ::LONG,
+ bottom: ::LONG,
+}}
+pub type PRECTL = *mut RECTL;
+pub type LPRECTL = *mut RECTL;
+pub type LPCRECTL = *const RECTL;
+STRUCT!{struct POINT {
+ x: ::LONG,
+ y: ::LONG,
+}}
+pub type PPOINT = *mut POINT;
+pub type NPPOINT = *mut POINT;
+pub type LPPOINT = *mut POINT;
+STRUCT!{struct POINTL {
+ x: ::LONG,
+ y: ::LONG,
+}}
+pub type PPOINTL = *mut POINTL;
diff --git a/third_party/rust/winapi-0.2.8/src/windowscodecs.rs b/third_party/rust/winapi-0.2.8/src/windowscodecs.rs
new file mode 100644
index 0000000000..37596264c2
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/windowscodecs.rs
@@ -0,0 +1,363 @@
+// Copyright © 2015; Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of wincodec.h
+pub type WICColor = ::UINT32;
+pub type WICInProcPointer = *mut ::BYTE;
+pub type REFWICPixelFormatGUID = ::REFGUID;
+pub type WICPixelFormatGUID = ::GUID;
+STRUCT!{struct WICRect {
+ X: ::INT,
+ Y: ::INT,
+ Width: ::INT,
+ Height: ::INT,
+}}
+ENUM!{enum WICColorContextType {
+ WICColorContextUninitialized = 0,
+ WICColorContextProfile = 0x1,
+ WICColorContextExifColorSpace = 0x2,
+}}
+ENUM!{enum WICBitmapCreateCacheOption {
+ WICBitmapNoCache = 0,
+ WICBitmapCacheOnDemand = 0x1,
+ WICBitmapCacheOnLoad = 0x2,
+}}
+ENUM!{enum WICDecodeOptions {
+ WICDecodeMetadataCacheOnDemand = 0,
+ WICDecodeMetadataCacheOnLoad = 0x1,
+}}
+ENUM!{enum WICBitmapEncoderCacheOption {
+ WICBitmapEncoderCacheInMemory = 0,
+ WICBitmapEncoderCacheTempFile = 0x1,
+ WICBitmapEncoderNoCache = 0x2,
+}}
+FLAGS!{enum WICComponentType {
+ WICDecoder = 0x1,
+ WICEncoder = 0x2,
+ WICPixelFormatConverter = 0x4,
+ WICMetadataReader = 0x8,
+ WICMetadataWriter = 0x10,
+ WICPixelFormat = 0x20,
+ WICAllComponents = 0x3f,
+}}
+FLAGS!{enum WICComponentEnumerateOptions {
+ WICComponentEnumerateDefault = 0,
+ WICComponentEnumerateRefresh = 0x1,
+ WICComponentEnumerateDisabled = 0x80000000,
+ WICComponentEnumerateUnsigned = 0x40000000,
+ WICComponentEnumerateBuiltInOnly = 0x20000000,
+}}
+#[allow(unused_qualifications)]
+STRUCT!{struct WICBitmapPattern {
+ Position: ::ULARGE_INTEGER,
+ Length: ::ULONG,
+ Pattern: *mut ::BYTE,
+ Mask: *mut ::BYTE,
+ EndOfStream: ::BOOL,
+}}
+ENUM!{enum WICBitmapInterpolationMode {
+ WICBitmapInterpolationModeNearestNeighbor = 0,
+ WICBitmapInterpolationModeLinear = 0x1,
+ WICBitmapInterpolationModeCubic = 0x2,
+ WICBitmapInterpolationModeFant = 0x3,
+}}
+ENUM!{enum WICBitmapPaletteType {
+ WICBitmapPaletteTypeCustom = 0,
+ WICBitmapPaletteTypeMedianCut = 0x1,
+ WICBitmapPaletteTypeFixedBW = 0x2,
+ WICBitmapPaletteTypeFixedHalftone8 = 0x3,
+ WICBitmapPaletteTypeFixedHalftone27 = 0x4,
+ WICBitmapPaletteTypeFixedHalftone64 = 0x5,
+ WICBitmapPaletteTypeFixedHalftone125 = 0x6,
+ WICBitmapPaletteTypeFixedHalftone216 = 0x7,
+ WICBitmapPaletteTypeFixedHalftone252 = 0x8,
+ WICBitmapPaletteTypeFixedHalftone256 = 0x9,
+ WICBitmapPaletteTypeFixedGray4 = 0xa,
+ WICBitmapPaletteTypeFixedGray16 = 0xb,
+ WICBitmapPaletteTypeFixedGray256 = 0xc,
+}}
+pub const WICBitmapPaletteTypeFixedWebPalette: WICBitmapPaletteType =
+ WICBitmapPaletteTypeFixedHalftone216;
+ENUM!{enum WICBitmapDitherType {
+ WICBitmapDitherTypeSolid = 0,
+ WICBitmapDitherTypeOrdered4x4 = 0x1,
+ WICBitmapDitherTypeOrdered8x8 = 0x2,
+ WICBitmapDitherTypeOrdered16x16 = 0x3,
+ WICBitmapDitherTypeSpiral4x4 = 0x4,
+ WICBitmapDitherTypeSpiral8x8 = 0x5,
+ WICBitmapDitherTypeDualSpiral4x4 = 0x6,
+ WICBitmapDitherTypeDualSpiral8x8 = 0x7,
+ WICBitmapDitherTypeErrorDiffusion = 0x8,
+}}
+pub const WICBitmapDitherTypeNone: WICBitmapDitherType = WICBitmapDitherTypeSolid;
+ENUM!{enum WICBitmapAlphaChannelOption {
+ WICBitmapUseAlpha = 0,
+ WICBitmapUsePremultipliedAlpha = 0x1,
+ WICBitmapIgnoreAlpha = 0x2,
+}}
+FLAGS!{enum WICBitmapTransformOptions {
+ WICBitmapTransformRotate0 = 0,
+ WICBitmapTransformRotate90 = 0x1,
+ WICBitmapTransformRotate180 = 0x2,
+ WICBitmapTransformRotate270 = 0x3,
+ WICBitmapTransformFlipHorizontal = 0x8,
+ WICBitmapTransformFlipVertical = 0x10,
+}}
+FLAGS!{enum WICBitmapLockFlags {
+ WICBitmapLockRead = 0x1,
+ WICBitmapLockWrite = 0x2,
+}}
+FLAGS!{enum WICBitmapDecoderCapabilities {
+ WICBitmapDecoderCapabilitySameEncoder = 0x1,
+ WICBitmapDecoderCapabilityCanDecodeAllImages = 0x2,
+ WICBitmapDecoderCapabilityCanDecodeSomeImages = 0x4,
+ WICBitmapDecoderCapabilityCanEnumerateMetadata = 0x8,
+ WICBitmapDecoderCapabilityCanDecodeThumbnail = 0x10,
+}}
+FLAGS!{enum WICProgressOperation {
+ WICProgressOperationCopyPixels = 0x1,
+ WICProgressOperationWritePixels = 0x2,
+ WICProgressOperationAll = 0xffff,
+}}
+FLAGS!{enum WICProgressNotification {
+ WICProgressNotificationBegin = 0x10000,
+ WICProgressNotificationEnd = 0x20000,
+ WICProgressNotificationFrequent = 0x40000,
+ WICProgressNotificationAll = 0xffff0000,
+}}
+FLAGS!{enum WICComponentSigning {
+ WICComponentSigned = 0x1,
+ WICComponentUnsigned = 0x2,
+ WICComponentSafe = 0x4,
+ WICComponentDisabled = 0x80000000,
+}}
+ENUM!{enum WICGifLogicalScreenDescriptorProperties {
+ WICGifLogicalScreenSignature = 0x1,
+ WICGifLogicalScreenDescriptorWidth = 0x2,
+ WICGifLogicalScreenDescriptorHeight = 0x3,
+ WICGifLogicalScreenDescriptorGlobalColorTableFlag = 0x4,
+ WICGifLogicalScreenDescriptorColorResolution = 0x5,
+ WICGifLogicalScreenDescriptorSortFlag = 0x6,
+ WICGifLogicalScreenDescriptorGlobalColorTableSize = 0x7,
+ WICGifLogicalScreenDescriptorBackgroundColorIndex = 0x8,
+ WICGifLogicalScreenDescriptorPixelAspectRatio = 0x9,
+}}
+ENUM!{enum WICGifImageDescriptorProperties {
+ WICGifImageDescriptorLeft = 0x1,
+ WICGifImageDescriptorTop = 0x2,
+ WICGifImageDescriptorWidth = 0x3,
+ WICGifImageDescriptorHeight = 0x4,
+ WICGifImageDescriptorLocalColorTableFlag = 0x5,
+ WICGifImageDescriptorInterlaceFlag = 0x6,
+ WICGifImageDescriptorSortFlag = 0x7,
+ WICGifImageDescriptorLocalColorTableSize = 0x8,
+}}
+ENUM!{enum WICGifGraphicControlExtensionProperties {
+ WICGifGraphicControlExtensionDisposal = 0x1,
+ WICGifGraphicControlExtensionUserInputFlag = 0x2,
+ WICGifGraphicControlExtensionTransparencyFlag = 0x3,
+ WICGifGraphicControlExtensionDelay = 0x4,
+ WICGifGraphicControlExtensionTransparentColorIndex = 0x5,
+}}
+ENUM!{enum WICGifApplicationExtensionProperties {
+ WICGifApplicationExtensionApplication = 0x1,
+ WICGifApplicationExtensionData = 0x2,
+}}
+ENUM!{enum WICGifCommentExtensionProperties {
+ WICGifCommentExtensionText = 0x1,
+}}
+ENUM!{enum WICJpegCommentProperties {
+ WICJpegCommentText = 0x1,
+}}
+ENUM!{enum WICJpegLuminanceProperties {
+ WICJpegLuminanceTable = 0x1,
+}}
+ENUM!{enum WICJpegChrominanceProperties {
+ WICJpegChrominanceTable = 0x1,
+}}
+ENUM!{enum WIC8BIMIptcProperties {
+ WIC8BIMIptcPString = 0,
+ WIC8BIMIptcEmbeddedIPTC = 0x1,
+}}
+ENUM!{enum WIC8BIMResolutionInfoProperties {
+ WIC8BIMResolutionInfoPString = 0x1,
+ WIC8BIMResolutionInfoHResolution = 0x2,
+ WIC8BIMResolutionInfoHResolutionUnit = 0x3,
+ WIC8BIMResolutionInfoWidthUnit = 0x4,
+ WIC8BIMResolutionInfoVResolution = 0x5,
+ WIC8BIMResolutionInfoVResolutionUnit = 0x6,
+ WIC8BIMResolutionInfoHeightUnit = 0x7,
+}}
+ENUM!{enum WIC8BIMIptcDigestProperties {
+ WIC8BIMIptcDigestPString = 0x1,
+ WIC8BIMIptcDigestIptcDigest = 0x2,
+}}
+ENUM!{enum WICPngGamaProperties {
+ WICPngGamaGamma = 0x1,
+}}
+ENUM!{enum WICPngBkgdProperties {
+ WICPngBkgdBackgroundColor = 0x1,
+}}
+ENUM!{enum WICPngItxtProperties {
+ WICPngItxtKeyword = 0x1,
+ WICPngItxtCompressionFlag = 0x2,
+ WICPngItxtLanguageTag = 0x3,
+ WICPngItxtTranslatedKeyword = 0x4,
+ WICPngItxtText = 0x5,
+}}
+ENUM!{enum WICPngChrmProperties {
+ WICPngChrmWhitePointX = 0x1,
+ WICPngChrmWhitePointY = 0x2,
+ WICPngChrmRedX = 0x3,
+ WICPngChrmRedY = 0x4,
+ WICPngChrmGreenX = 0x5,
+ WICPngChrmGreenY = 0x6,
+ WICPngChrmBlueX = 0x7,
+ WICPngChrmBlueY = 0x8,
+}}
+ENUM!{enum WICPngHistProperties {
+ WICPngHistFrequencies = 0x1,
+}}
+ENUM!{enum WICPngIccpProperties {
+ WICPngIccpProfileName = 0x1,
+ WICPngIccpProfileData = 0x2,
+}}
+ENUM!{enum WICPngSrgbProperties {
+ WICPngSrgbRenderingIntent = 0x1,
+}}
+ENUM!{enum WICPngTimeProperties {
+ WICPngTimeYear = 0x1,
+ WICPngTimeMonth = 0x2,
+ WICPngTimeDay = 0x3,
+ WICPngTimeHour = 0x4,
+ WICPngTimeMinute = 0x5,
+ WICPngTimeSecond = 0x6,
+}}
+ENUM!{enum WICSectionAccessLevel {
+ WICSectionAccessLevelRead = 0x1,
+ WICSectionAccessLevelReadWrite = 0x3,
+}}
+ENUM!{enum WICPixelFormatNumericRepresentation {
+ WICPixelFormatNumericRepresentationUnspecified = 0,
+ WICPixelFormatNumericRepresentationIndexed = 0x1,
+ WICPixelFormatNumericRepresentationUnsignedInteger = 0x2,
+ WICPixelFormatNumericRepresentationSignedInteger = 0x3,
+ WICPixelFormatNumericRepresentationFixed = 0x4,
+ WICPixelFormatNumericRepresentationFloat = 0x5,
+}}
+ENUM!{enum WICPlanarOptions {
+ WICPlanarOptionsDefault = 0,
+ WICPlanarOptionsPreserveSubsampling = 0x1,
+}}
+#[allow(unused_qualifications)]
+STRUCT!{struct WICImageParameters {
+ PixelFormat: ::D2D1_PIXEL_FORMAT,
+ DpiX: ::FLOAT,
+ DpiY: ::FLOAT,
+ Top: ::FLOAT,
+ Left: ::FLOAT,
+ PixelWidth: ::FLOAT,
+ PixelHeight: ::FLOAT,
+}}
+#[allow(unused_qualifications)]
+STRUCT!{struct WICBitmapPlaneDescription {
+ Format: WICPixelFormatGUID,
+ Width: ::UINT,
+ Height: ::UINT,
+}}
+#[allow(unused_qualifications)]
+STRUCT!{struct WICBitmapPlane {
+ Format: WICPixelFormatGUID,
+ pbBuffer: *mut ::BYTE,
+ cbStride: ::UINT,
+ cbBufferSize: ::UINT,
+}}
+RIDL!(
+interface IWICPalette(IWICPaletteVtbl): IUnknown(IUnknownVtbl) {
+ fn InitializePredefined(
+ &mut self, ePaletteType: WICBitmapPaletteType, fAddTransparentColor: ::BOOL
+ ) -> ::HRESULT,
+ fn InitializeCustom(&mut self, pColors: *mut WICColor, cCount: ::UINT) -> ::HRESULT,
+ fn InitializeFromBitmap(
+ &mut self, pISurface: *mut IWICBitmapSource, cCount: ::UINT, fAddTransparentColor: ::BOOL
+ ) -> ::HRESULT,
+ fn InitializeFromPalette(&mut self, pIPalette: *mut IWICPalette) -> ::HRESULT,
+ fn GetType(&mut self, pePaletteType: *mut WICBitmapPaletteType) -> ::HRESULT,
+ fn GetColorCount(&mut self, pcCount: *mut ::UINT) -> ::HRESULT,
+ fn GetColors(
+ &mut self, cCount: ::UINT, pColros: *mut WICColor, pcActualColors: *mut ::UINT
+ ) -> ::HRESULT,
+ fn IsBlackWhite(&mut self, pfIsBlackWhite: *mut ::BOOL) -> ::HRESULT,
+ fn IsGrayscale(&mut self, pfIsGrayscale: *mut ::BOOL) -> ::HRESULT,
+ fn HasAlpha(&mut self, pfHasAlpha: *mut ::BOOL) -> ::HRESULT
+});
+RIDL!(
+interface IWICBitmapSource(IWICBitmapSourceVtbl): IUnknown(IUnknownVtbl) {
+ fn GetSize(&mut self, puiWidth: *mut ::UINT, puiHeight: ::UINT) -> ::HRESULT,
+ fn GetPixelFormat(&mut self, pPixelFormat: *mut WICPixelFormatGUID) -> ::HRESULT,
+ fn GetResolution(&mut self, pDpiX: *mut f64, pDpiY: *mut f64) -> ::HRESULT,
+ fn CopyPalette(&mut self, pIPalette: *mut IWICPalette) -> ::HRESULT,
+ fn CopyPixels(
+ &mut self, prc: *const WICRect, cbStride: ::UINT, cbBufferSize: ::UINT,
+ pbBuffer: *mut ::BYTE
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IWICFormatConverter(IWICFormatConverterVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) {
+ fn Initialize(
+ &mut self, pISource: *mut IWICBitmapSource, dstFormat: REFWICPixelFormatGUID,
+ dither: WICBitmapDitherType, pIPalette: *mut IWICPalette, alphaThreasholdPercent: f64,
+ paletteTranslate: WICBitmapPaletteType
+ ) -> ::HRESULT,
+ fn CanConvert(
+ &mut self, srcPixelFormat: REFWICPixelFormatGUID, dstPixelFormat: REFWICPixelFormatGUID,
+ pfCanConvert: *mut ::BOOL
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IWICPlanarFormatConverter(IWICPlanarFormatConverterVtbl)
+ : IWICBitmapSource(IWICBitmapSourceVtbl) {
+ fn Initialize(
+ &mut self, ppPlanes: *mut *mut IWICBitmapSource, cPlanes: ::UINT,
+ dstFormat: REFWICPixelFormatGUID, dither: WICBitmapDitherType, pIPalette: *mut IWICPalette,
+ alphaThreasholdPercent: f64, paletteTranslate: WICBitmapPaletteType
+ ) -> ::HRESULT,
+ fn CanConvert(
+ &mut self, pSrcPixelFormats: *const WICPixelFormatGUID, cSrcPlanes: ::UINT,
+ dstPixelFormat: REFWICPixelFormatGUID, pfCanConvert: *mut ::BOOL
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IWICBitmapScaler(IWICBitmapScalerVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) {
+ fn Initialize(
+ &mut self, pISource: *mut IWICBitmapSource, uiWidth: ::UINT, uiHeight: ::UINT,
+ mode: WICBitmapInterpolationMode
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IWICBitmapClipper(IWICBitmapClipperVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) {
+ fn Initialize(&mut self, pISource: *mut IWICBitmapSource, prc: *const WICRect) -> ::HRESULT
+});
+RIDL!(
+interface IWICBitmapFlipRotator(IWICBitmapFlipRotatorVtbl)
+ : IWICBitmapSource(IWICBitmapSourceVtbl) {
+ fn Initialize(
+ &mut self, pISource: *mut IWICBitmapSource, options: WICBitmapTransformOptions
+ ) -> ::HRESULT
+});
+RIDL!(
+interface IWICBitmapLock(IWICBitmapLockVtbl): IUnknown(IUnknownVtbl) {
+ fn GetSize(&mut self, puiWidth: *mut ::UINT, puiHeight: *mut ::UINT) -> ::HRESULT,
+ fn GetStride(&mut self, pcbStride: *mut ::UINT) -> ::HRESULT,
+ fn GetDataPointer(
+ &mut self, pcbBufferSize: *mut ::UINT, ppbData: *mut WICInProcPointer
+ ) -> ::HRESULT,
+ fn GetPixelFormat(&mut self, pPixelFormat: *mut WICPixelFormatGUID) -> ::HRESULT
+});
+RIDL!(
+interface IWICBitmap(IWICBitmapVtbl): IWICBitmapSource(IWICBitmapSourceVtbl) {
+ fn Lock(
+ &mut self, prcLock: *const WICRect, flags: ::DWORD, ppILock: *mut *mut IWICBitmapLock
+ ) -> ::HRESULT,
+ fn SetPalette(&mut self, pIPalette: *mut IWICPalette) -> ::HRESULT,
+ fn SetResolution(&mut self, dpiX: f64, dpiY: f64) -> ::HRESULT
+});
diff --git a/third_party/rust/winapi-0.2.8/src/windowsx.rs b/third_party/rust/winapi-0.2.8/src/windowsx.rs
new file mode 100644
index 0000000000..0441e63a40
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/windowsx.rs
@@ -0,0 +1,22 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Macro APIs, window message crackers, and control APIs
+//1233
+pub fn GET_X_LPARAM(lp: ::LPARAM) -> ::c_int {
+ ::LOWORD(lp as ::DWORD) as ::c_short as ::c_int
+}
+pub fn GET_Y_LPARAM(lp: ::LPARAM) -> ::c_int {
+ ::HIWORD(lp as ::DWORD) as ::c_short as ::c_int
+}
+#[test]
+fn test_get_x_lparam() {
+ assert_eq!(GET_X_LPARAM(0xDEAD1234u32 as ::LPARAM), 0x1234);
+ assert_eq!(GET_X_LPARAM(0xBEEFffffu32 as ::LPARAM), -1);
+ assert_eq!(GET_X_LPARAM(0xCAFEFB2Eu32 as ::LPARAM), -1234);
+}
+#[test]
+fn test_get_y_lparam() {
+ assert_eq!(GET_Y_LPARAM(0x1234DEADu32 as ::LPARAM), 0x1234);
+ assert_eq!(GET_Y_LPARAM(0xffffBEEFu32 as ::LPARAM), -1);
+ assert_eq!(GET_Y_LPARAM(0xFB2ECAFEu32 as ::LPARAM), -1234);
+}
diff --git a/third_party/rust/winapi-0.2.8/src/winerror.rs b/third_party/rust/winapi-0.2.8/src/winerror.rs
new file mode 100644
index 0000000000..6792cf8521
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winerror.rs
@@ -0,0 +1,6065 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! error code definitions for the Win32 API functions
+#[inline]
+pub fn SUCCEEDED(hr: HRESULT) -> bool {
+ hr >= 0
+}
+pub const FACILITY_XPS: HRESULT = 82;
+pub const FACILITY_XAML: HRESULT = 43;
+pub const FACILITY_USN: HRESULT = 129;
+pub const FACILITY_BLBUI: HRESULT = 128;
+pub const FACILITY_SPP: HRESULT = 256;
+pub const FACILITY_WSB_ONLINE: HRESULT = 133;
+pub const FACILITY_DLS: HRESULT = 153;
+pub const FACILITY_BLB_CLI: HRESULT = 121;
+pub const FACILITY_BLB: HRESULT = 120;
+pub const FACILITY_WSBAPP: HRESULT = 122;
+pub const FACILITY_WPN: HRESULT = 62;
+pub const FACILITY_WMAAECMA: HRESULT = 1996;
+pub const FACILITY_WINRM: HRESULT = 51;
+pub const FACILITY_WINPE: HRESULT = 61;
+pub const FACILITY_WINDOWSUPDATE: HRESULT = 36;
+pub const FACILITY_WINDOWS_STORE: HRESULT = 63;
+pub const FACILITY_WINDOWS_SETUP: HRESULT = 48;
+pub const FACILITY_WINDOWS_DEFENDER: HRESULT = 80;
+pub const FACILITY_WINDOWS_CE: HRESULT = 24;
+pub const FACILITY_WINDOWS: HRESULT = 8;
+pub const FACILITY_WINCODEC_DWRITE_DWM: HRESULT = 2200;
+pub const FACILITY_WIA: HRESULT = 33;
+pub const FACILITY_WER: HRESULT = 27;
+pub const FACILITY_WEP: HRESULT = 2049;
+pub const FACILITY_WEB_SOCKET: HRESULT = 886;
+pub const FACILITY_WEB: HRESULT = 885;
+pub const FACILITY_USERMODE_VOLSNAP: HRESULT = 130;
+pub const FACILITY_USERMODE_VOLMGR: HRESULT = 56;
+pub const FACILITY_VISUALCPP: HRESULT = 109;
+pub const FACILITY_USERMODE_VIRTUALIZATION: HRESULT = 55;
+pub const FACILITY_USERMODE_VHD: HRESULT = 58;
+pub const FACILITY_URT: HRESULT = 19;
+pub const FACILITY_UMI: HRESULT = 22;
+pub const FACILITY_UI: HRESULT = 42;
+pub const FACILITY_TPM_SOFTWARE: HRESULT = 41;
+pub const FACILITY_TPM_SERVICES: HRESULT = 40;
+pub const FACILITY_TIERING: HRESULT = 131;
+pub const FACILITY_SYNCENGINE: HRESULT = 2050;
+pub const FACILITY_SXS: HRESULT = 23;
+pub const FACILITY_STORAGE: HRESULT = 3;
+pub const FACILITY_STATE_MANAGEMENT: HRESULT = 34;
+pub const FACILITY_SSPI: HRESULT = 9;
+pub const FACILITY_USERMODE_SPACES: HRESULT = 231;
+pub const FACILITY_SOS: HRESULT = 160;
+pub const FACILITY_SCARD: HRESULT = 16;
+pub const FACILITY_SHELL: HRESULT = 39;
+pub const FACILITY_SETUPAPI: HRESULT = 15;
+pub const FACILITY_SECURITY: HRESULT = 9;
+pub const FACILITY_SDIAG: HRESULT = 60;
+pub const FACILITY_USERMODE_SDBUS: HRESULT = 2305;
+pub const FACILITY_RPC: HRESULT = 1;
+pub const FACILITY_RESTORE: HRESULT = 256;
+pub const FACILITY_SCRIPT: HRESULT = 112;
+pub const FACILITY_PARSE: HRESULT = 113;
+pub const FACILITY_RAS: HRESULT = 83;
+pub const FACILITY_POWERSHELL: HRESULT = 84;
+pub const FACILITY_PLA: HRESULT = 48;
+pub const FACILITY_PIDGENX: HRESULT = 2561;
+pub const FACILITY_P2P_INT: HRESULT = 98;
+pub const FACILITY_P2P: HRESULT = 99;
+pub const FACILITY_OPC: HRESULT = 81;
+pub const FACILITY_ONLINE_ID: HRESULT = 134;
+pub const FACILITY_WIN32: HRESULT = 7;
+pub const FACILITY_CONTROL: HRESULT = 10;
+pub const FACILITY_WEBSERVICES: HRESULT = 61;
+pub const FACILITY_NULL: HRESULT = 0;
+pub const FACILITY_NDIS: HRESULT = 52;
+pub const FACILITY_NAP: HRESULT = 39;
+pub const FACILITY_MOBILE: HRESULT = 1793;
+pub const FACILITY_METADIRECTORY: HRESULT = 35;
+pub const FACILITY_MSMQ: HRESULT = 14;
+pub const FACILITY_MEDIASERVER: HRESULT = 13;
+pub const FACILITY_MBN: HRESULT = 84;
+pub const FACILITY_LINGUISTIC_SERVICES: HRESULT = 305;
+pub const FACILITY_LEAP: HRESULT = 2184;
+pub const FACILITY_JSCRIPT: HRESULT = 2306;
+pub const FACILITY_INTERNET: HRESULT = 12;
+pub const FACILITY_ITF: HRESULT = 4;
+pub const FACILITY_INPUT: HRESULT = 64;
+pub const FACILITY_USERMODE_HYPERVISOR: HRESULT = 53;
+pub const FACILITY_ACCELERATOR: HRESULT = 1536;
+pub const FACILITY_HTTP: HRESULT = 25;
+pub const FACILITY_GRAPHICS: HRESULT = 38;
+pub const FACILITY_FWP: HRESULT = 50;
+pub const FACILITY_FVE: HRESULT = 49;
+pub const FACILITY_USERMODE_FILTER_MANAGER: HRESULT = 31;
+pub const FACILITY_EAS: HRESULT = 85;
+pub const FACILITY_EAP: HRESULT = 66;
+pub const FACILITY_DXGI_DDI: HRESULT = 2171;
+pub const FACILITY_DXGI: HRESULT = 2170;
+pub const FACILITY_DPLAY: HRESULT = 21;
+pub const FACILITY_DMSERVER: HRESULT = 256;
+pub const FACILITY_DISPATCH: HRESULT = 2;
+pub const FACILITY_DIRECTORYSERVICE: HRESULT = 37;
+pub const FACILITY_DIRECTMUSIC: HRESULT = 2168;
+pub const FACILITY_DIRECT3D11: HRESULT = 2172;
+pub const FACILITY_DIRECT3D10: HRESULT = 2169;
+pub const FACILITY_DIRECT2D: HRESULT = 2201;
+pub const FACILITY_DAF: HRESULT = 100;
+pub const FACILITY_DEPLOYMENT_SERVICES_UTIL: HRESULT = 260;
+pub const FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT: HRESULT = 272;
+pub const FACILITY_DEPLOYMENT_SERVICES_TFTP: HRESULT = 264;
+pub const FACILITY_DEPLOYMENT_SERVICES_PXE: HRESULT = 263;
+pub const FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER: HRESULT = 289;
+pub const FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT: HRESULT = 290;
+pub const FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT: HRESULT = 259;
+pub const FACILITY_DEPLOYMENT_SERVICES_IMAGING: HRESULT = 258;
+pub const FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING: HRESULT = 278;
+pub const FACILITY_DEPLOYMENT_SERVICES_SERVER: HRESULT = 257;
+pub const FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER: HRESULT = 293;
+pub const FACILITY_DEPLOYMENT_SERVICES_BINLSVC: HRESULT = 261;
+pub const FACILITY_DEFRAG: HRESULT = 2304;
+pub const FACILITY_DEBUGGERS: HRESULT = 176;
+pub const FACILITY_CONFIGURATION: HRESULT = 33;
+pub const FACILITY_COMPLUS: HRESULT = 17;
+pub const FACILITY_USERMODE_COMMONLOG: HRESULT = 26;
+pub const FACILITY_CMI: HRESULT = 54;
+pub const FACILITY_CERT: HRESULT = 11;
+pub const FACILITY_BLUETOOTH_ATT: HRESULT = 101;
+pub const FACILITY_BCD: HRESULT = 57;
+pub const FACILITY_BACKGROUNDCOPY: HRESULT = 32;
+pub const FACILITY_AUDIOSTREAMING: HRESULT = 1094;
+pub const FACILITY_AUDCLNT: HRESULT = 2185;
+pub const FACILITY_AUDIO: HRESULT = 102;
+pub const FACILITY_ACTION_QUEUE: HRESULT = 44;
+pub const FACILITY_ACS: HRESULT = 20;
+pub const FACILITY_AAF: HRESULT = 18;
+pub const ERROR_SUCCESS: ::DWORD = 0;
+pub const NO_ERROR: ::DWORD = 0;
+pub const SEC_E_OK: HRESULT = 0;
+pub const ERROR_INVALID_FUNCTION: ::DWORD = 1;
+pub const ERROR_FILE_NOT_FOUND: ::DWORD = 2;
+pub const ERROR_PATH_NOT_FOUND: ::DWORD = 3;
+pub const ERROR_TOO_MANY_OPEN_FILES: ::DWORD = 4;
+pub const ERROR_ACCESS_DENIED: ::DWORD = 5;
+pub const ERROR_INVALID_HANDLE: ::DWORD = 6;
+pub const ERROR_ARENA_TRASHED: ::DWORD = 7;
+pub const ERROR_NOT_ENOUGH_MEMORY: ::DWORD = 8;
+pub const ERROR_INVALID_BLOCK: ::DWORD = 9;
+pub const ERROR_BAD_ENVIRONMENT: ::DWORD = 10;
+pub const ERROR_BAD_FORMAT: ::DWORD = 11;
+pub const ERROR_INVALID_ACCESS: ::DWORD = 12;
+pub const ERROR_INVALID_DATA: ::DWORD = 13;
+pub const ERROR_OUTOFMEMORY: ::DWORD = 14;
+pub const ERROR_INVALID_DRIVE: ::DWORD = 15;
+pub const ERROR_CURRENT_DIRECTORY: ::DWORD = 16;
+pub const ERROR_NOT_SAME_DEVICE: ::DWORD = 17;
+pub const ERROR_NO_MORE_FILES: ::DWORD = 18;
+pub const ERROR_WRITE_PROTECT: ::DWORD = 19;
+pub const ERROR_BAD_UNIT: ::DWORD = 20;
+pub const ERROR_NOT_READY: ::DWORD = 21;
+pub const ERROR_BAD_COMMAND: ::DWORD = 22;
+pub const ERROR_CRC: ::DWORD = 23;
+pub const ERROR_BAD_LENGTH: ::DWORD = 24;
+pub const ERROR_SEEK: ::DWORD = 25;
+pub const ERROR_NOT_DOS_DISK: ::DWORD = 26;
+pub const ERROR_SECTOR_NOT_FOUND: ::DWORD = 27;
+pub const ERROR_OUT_OF_PAPER: ::DWORD = 28;
+pub const ERROR_WRITE_FAULT: ::DWORD = 29;
+pub const ERROR_READ_FAULT: ::DWORD = 30;
+pub const ERROR_GEN_FAILURE: ::DWORD = 31;
+pub const ERROR_SHARING_VIOLATION: ::DWORD = 32;
+pub const ERROR_LOCK_VIOLATION: ::DWORD = 33;
+pub const ERROR_WRONG_DISK: ::DWORD = 34;
+pub const ERROR_SHARING_BUFFER_EXCEEDED: ::DWORD = 36;
+pub const ERROR_HANDLE_EOF: ::DWORD = 38;
+pub const ERROR_HANDLE_DISK_FULL: ::DWORD = 39;
+pub const ERROR_NOT_SUPPORTED: ::DWORD = 50;
+pub const ERROR_REM_NOT_LIST: ::DWORD = 51;
+pub const ERROR_DUP_NAME: ::DWORD = 52;
+pub const ERROR_BAD_NETPATH: ::DWORD = 53;
+pub const ERROR_NETWORK_BUSY: ::DWORD = 54;
+pub const ERROR_DEV_NOT_EXIST: ::DWORD = 55;
+pub const ERROR_TOO_MANY_CMDS: ::DWORD = 56;
+pub const ERROR_ADAP_HDW_ERR: ::DWORD = 57;
+pub const ERROR_BAD_NET_RESP: ::DWORD = 58;
+pub const ERROR_UNEXP_NET_ERR: ::DWORD = 59;
+pub const ERROR_BAD_REM_ADAP: ::DWORD = 60;
+pub const ERROR_PRINTQ_FULL: ::DWORD = 61;
+pub const ERROR_NO_SPOOL_SPACE: ::DWORD = 62;
+pub const ERROR_PRINT_CANCELLED: ::DWORD = 63;
+pub const ERROR_NETNAME_DELETED: ::DWORD = 64;
+pub const ERROR_NETWORK_ACCESS_DENIED: ::DWORD = 65;
+pub const ERROR_BAD_DEV_TYPE: ::DWORD = 66;
+pub const ERROR_BAD_NET_NAME: ::DWORD = 67;
+pub const ERROR_TOO_MANY_NAMES: ::DWORD = 68;
+pub const ERROR_TOO_MANY_SESS: ::DWORD = 69;
+pub const ERROR_SHARING_PAUSED: ::DWORD = 70;
+pub const ERROR_REQ_NOT_ACCEP: ::DWORD = 71;
+pub const ERROR_REDIR_PAUSED: ::DWORD = 72;
+pub const ERROR_FILE_EXISTS: ::DWORD = 80;
+pub const ERROR_CANNOT_MAKE: ::DWORD = 82;
+pub const ERROR_FAIL_I24: ::DWORD = 83;
+pub const ERROR_OUT_OF_STRUCTURES: ::DWORD = 84;
+pub const ERROR_ALREADY_ASSIGNED: ::DWORD = 85;
+pub const ERROR_INVALID_PASSWORD: ::DWORD = 86;
+pub const ERROR_INVALID_PARAMETER: ::DWORD = 87;
+pub const ERROR_NET_WRITE_FAULT: ::DWORD = 88;
+pub const ERROR_NO_PROC_SLOTS: ::DWORD = 89;
+pub const ERROR_TOO_MANY_SEMAPHORES: ::DWORD = 100;
+pub const ERROR_EXCL_SEM_ALREADY_OWNED: ::DWORD = 101;
+pub const ERROR_SEM_IS_SET: ::DWORD = 102;
+pub const ERROR_TOO_MANY_SEM_REQUESTS: ::DWORD = 103;
+pub const ERROR_INVALID_AT_INTERRUPT_TIME: ::DWORD = 104;
+pub const ERROR_SEM_OWNER_DIED: ::DWORD = 105;
+pub const ERROR_SEM_USER_LIMIT: ::DWORD = 106;
+pub const ERROR_DISK_CHANGE: ::DWORD = 107;
+pub const ERROR_DRIVE_LOCKED: ::DWORD = 108;
+pub const ERROR_BROKEN_PIPE: ::DWORD = 109;
+pub const ERROR_OPEN_FAILED: ::DWORD = 110;
+pub const ERROR_BUFFER_OVERFLOW: ::DWORD = 111;
+pub const ERROR_DISK_FULL: ::DWORD = 112;
+pub const ERROR_NO_MORE_SEARCH_HANDLES: ::DWORD = 113;
+pub const ERROR_INVALID_TARGET_HANDLE: ::DWORD = 114;
+pub const ERROR_INVALID_CATEGORY: ::DWORD = 117;
+pub const ERROR_INVALID_VERIFY_SWITCH: ::DWORD = 118;
+pub const ERROR_BAD_DRIVER_LEVEL: ::DWORD = 119;
+pub const ERROR_CALL_NOT_IMPLEMENTED: ::DWORD = 120;
+pub const ERROR_SEM_TIMEOUT: ::DWORD = 121;
+pub const ERROR_INSUFFICIENT_BUFFER: ::DWORD = 122;
+pub const ERROR_INVALID_NAME: ::DWORD = 123;
+pub const ERROR_INVALID_LEVEL: ::DWORD = 124;
+pub const ERROR_NO_VOLUME_LABEL: ::DWORD = 125;
+pub const ERROR_MOD_NOT_FOUND: ::DWORD = 126;
+pub const ERROR_PROC_NOT_FOUND: ::DWORD = 127;
+pub const ERROR_WAIT_NO_CHILDREN: ::DWORD = 128;
+pub const ERROR_CHILD_NOT_COMPLETE: ::DWORD = 129;
+pub const ERROR_DIRECT_ACCESS_HANDLE: ::DWORD = 130;
+pub const ERROR_NEGATIVE_SEEK: ::DWORD = 131;
+pub const ERROR_SEEK_ON_DEVICE: ::DWORD = 132;
+pub const ERROR_IS_JOIN_TARGET: ::DWORD = 133;
+pub const ERROR_IS_JOINED: ::DWORD = 134;
+pub const ERROR_IS_SUBSTED: ::DWORD = 135;
+pub const ERROR_NOT_JOINED: ::DWORD = 136;
+pub const ERROR_NOT_SUBSTED: ::DWORD = 137;
+pub const ERROR_JOIN_TO_JOIN: ::DWORD = 138;
+pub const ERROR_SUBST_TO_SUBST: ::DWORD = 139;
+pub const ERROR_JOIN_TO_SUBST: ::DWORD = 140;
+pub const ERROR_SUBST_TO_JOIN: ::DWORD = 141;
+pub const ERROR_BUSY_DRIVE: ::DWORD = 142;
+pub const ERROR_SAME_DRIVE: ::DWORD = 143;
+pub const ERROR_DIR_NOT_ROOT: ::DWORD = 144;
+pub const ERROR_DIR_NOT_EMPTY: ::DWORD = 145;
+pub const ERROR_IS_SUBST_PATH: ::DWORD = 146;
+pub const ERROR_IS_JOIN_PATH: ::DWORD = 147;
+pub const ERROR_PATH_BUSY: ::DWORD = 148;
+pub const ERROR_IS_SUBST_TARGET: ::DWORD = 149;
+pub const ERROR_SYSTEM_TRACE: ::DWORD = 150;
+pub const ERROR_INVALID_EVENT_COUNT: ::DWORD = 151;
+pub const ERROR_TOO_MANY_MUXWAITERS: ::DWORD = 152;
+pub const ERROR_INVALID_LIST_FORMAT: ::DWORD = 153;
+pub const ERROR_LABEL_TOO_LONG: ::DWORD = 154;
+pub const ERROR_TOO_MANY_TCBS: ::DWORD = 155;
+pub const ERROR_SIGNAL_REFUSED: ::DWORD = 156;
+pub const ERROR_DISCARDED: ::DWORD = 157;
+pub const ERROR_NOT_LOCKED: ::DWORD = 158;
+pub const ERROR_BAD_THREADID_ADDR: ::DWORD = 159;
+pub const ERROR_BAD_ARGUMENTS: ::DWORD = 160;
+pub const ERROR_BAD_PATHNAME: ::DWORD = 161;
+pub const ERROR_SIGNAL_PENDING: ::DWORD = 162;
+pub const ERROR_MAX_THRDS_REACHED: ::DWORD = 164;
+pub const ERROR_LOCK_FAILED: ::DWORD = 167;
+pub const ERROR_BUSY: ::DWORD = 170;
+pub const ERROR_DEVICE_SUPPORT_IN_PROGRESS: ::DWORD = 171;
+pub const ERROR_CANCEL_VIOLATION: ::DWORD = 173;
+pub const ERROR_ATOMIC_LOCKS_NOT_SUPPORTED: ::DWORD = 174;
+pub const ERROR_INVALID_SEGMENT_NUMBER: ::DWORD = 180;
+pub const ERROR_INVALID_ORDINAL: ::DWORD = 182;
+pub const ERROR_ALREADY_EXISTS: ::DWORD = 183;
+pub const ERROR_INVALID_FLAG_NUMBER: ::DWORD = 186;
+pub const ERROR_SEM_NOT_FOUND: ::DWORD = 187;
+pub const ERROR_INVALID_STARTING_CODESEG: ::DWORD = 188;
+pub const ERROR_INVALID_STACKSEG: ::DWORD = 189;
+pub const ERROR_INVALID_MODULETYPE: ::DWORD = 190;
+pub const ERROR_INVALID_EXE_SIGNATURE: ::DWORD = 191;
+pub const ERROR_EXE_MARKED_INVALID: ::DWORD = 192;
+pub const ERROR_BAD_EXE_FORMAT: ::DWORD = 193;
+pub const ERROR_ITERATED_DATA_EXCEEDS_64k: ::DWORD = 194;
+pub const ERROR_INVALID_MINALLOCSIZE: ::DWORD = 195;
+pub const ERROR_DYNLINK_FROM_INVALID_RING: ::DWORD = 196;
+pub const ERROR_IOPL_NOT_ENABLED: ::DWORD = 197;
+pub const ERROR_INVALID_SEGDPL: ::DWORD = 198;
+pub const ERROR_AUTODATASEG_EXCEEDS_64k: ::DWORD = 199;
+pub const ERROR_RING2SEG_MUST_BE_MOVABLE: ::DWORD = 200;
+pub const ERROR_RELOC_CHAIN_XEEDS_SEGLIM: ::DWORD = 201;
+pub const ERROR_INFLOOP_IN_RELOC_CHAIN: ::DWORD = 202;
+pub const ERROR_ENVVAR_NOT_FOUND: ::DWORD = 203;
+pub const ERROR_NO_SIGNAL_SENT: ::DWORD = 205;
+pub const ERROR_FILENAME_EXCED_RANGE: ::DWORD = 206;
+pub const ERROR_RING2_STACK_IN_USE: ::DWORD = 207;
+pub const ERROR_META_EXPANSION_TOO_LONG: ::DWORD = 208;
+pub const ERROR_INVALID_SIGNAL_NUMBER: ::DWORD = 209;
+pub const ERROR_THREAD_1_INACTIVE: ::DWORD = 210;
+pub const ERROR_LOCKED: ::DWORD = 212;
+pub const ERROR_TOO_MANY_MODULES: ::DWORD = 214;
+pub const ERROR_NESTING_NOT_ALLOWED: ::DWORD = 215;
+pub const ERROR_EXE_MACHINE_TYPE_MISMATCH: ::DWORD = 216;
+pub const ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY: ::DWORD = 217;
+pub const ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY: ::DWORD = 218;
+pub const ERROR_FILE_CHECKED_OUT: ::DWORD = 220;
+pub const ERROR_CHECKOUT_REQUIRED: ::DWORD = 221;
+pub const ERROR_BAD_FILE_TYPE: ::DWORD = 222;
+pub const ERROR_FILE_TOO_LARGE: ::DWORD = 223;
+pub const ERROR_FORMS_AUTH_REQUIRED: ::DWORD = 224;
+pub const ERROR_VIRUS_INFECTED: ::DWORD = 225;
+pub const ERROR_VIRUS_DELETED: ::DWORD = 226;
+pub const ERROR_PIPE_LOCAL: ::DWORD = 229;
+pub const ERROR_BAD_PIPE: ::DWORD = 230;
+pub const ERROR_PIPE_BUSY: ::DWORD = 231;
+pub const ERROR_NO_DATA: ::DWORD = 232;
+pub const ERROR_PIPE_NOT_CONNECTED: ::DWORD = 233;
+pub const ERROR_MORE_DATA: ::DWORD = 234;
+pub const ERROR_VC_DISCONNECTED: ::DWORD = 240;
+pub const ERROR_INVALID_EA_NAME: ::DWORD = 254;
+pub const ERROR_EA_LIST_INCONSISTENT: ::DWORD = 255;
+pub const WAIT_TIMEOUT: ::DWORD = 258;
+pub const ERROR_NO_MORE_ITEMS: ::DWORD = 259;
+pub const ERROR_CANNOT_COPY: ::DWORD = 266;
+pub const ERROR_DIRECTORY: ::DWORD = 267;
+pub const ERROR_EAS_DIDNT_FIT: ::DWORD = 275;
+pub const ERROR_EA_FILE_CORRUPT: ::DWORD = 276;
+pub const ERROR_EA_TABLE_FULL: ::DWORD = 277;
+pub const ERROR_INVALID_EA_HANDLE: ::DWORD = 278;
+pub const ERROR_EAS_NOT_SUPPORTED: ::DWORD = 282;
+pub const ERROR_NOT_OWNER: ::DWORD = 288;
+pub const ERROR_TOO_MANY_POSTS: ::DWORD = 298;
+pub const ERROR_PARTIAL_COPY: ::DWORD = 299;
+pub const ERROR_OPLOCK_NOT_GRANTED: ::DWORD = 300;
+pub const ERROR_INVALID_OPLOCK_PROTOCOL: ::DWORD = 301;
+pub const ERROR_DISK_TOO_FRAGMENTED: ::DWORD = 302;
+pub const ERROR_DELETE_PENDING: ::DWORD = 303;
+pub const ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING: ::DWORD = 304;
+pub const ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME: ::DWORD = 305;
+pub const ERROR_SECURITY_STREAM_IS_INCONSISTENT: ::DWORD = 306;
+pub const ERROR_INVALID_LOCK_RANGE: ::DWORD = 307;
+pub const ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT: ::DWORD = 308;
+pub const ERROR_NOTIFICATION_GUID_ALREADY_DEFINED: ::DWORD = 309;
+pub const ERROR_INVALID_EXCEPTION_HANDLER: ::DWORD = 310;
+pub const ERROR_DUPLICATE_PRIVILEGES: ::DWORD = 311;
+pub const ERROR_NO_RANGES_PROCESSED: ::DWORD = 312;
+pub const ERROR_NOT_ALLOWED_ON_SYSTEM_FILE: ::DWORD = 313;
+pub const ERROR_DISK_RESOURCES_EXHAUSTED: ::DWORD = 314;
+pub const ERROR_INVALID_TOKEN: ::DWORD = 315;
+pub const ERROR_DEVICE_FEATURE_NOT_SUPPORTED: ::DWORD = 316;
+pub const ERROR_MR_MID_NOT_FOUND: ::DWORD = 317;
+pub const ERROR_SCOPE_NOT_FOUND: ::DWORD = 318;
+pub const ERROR_UNDEFINED_SCOPE: ::DWORD = 319;
+pub const ERROR_INVALID_CAP: ::DWORD = 320;
+pub const ERROR_DEVICE_UNREACHABLE: ::DWORD = 321;
+pub const ERROR_DEVICE_NO_RESOURCES: ::DWORD = 322;
+pub const ERROR_DATA_CHECKSUM_ERROR: ::DWORD = 323;
+pub const ERROR_INTERMIXED_KERNEL_EA_OPERATION: ::DWORD = 324;
+pub const ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED: ::DWORD = 326;
+pub const ERROR_OFFSET_ALIGNMENT_VIOLATION: ::DWORD = 327;
+pub const ERROR_INVALID_FIELD_IN_PARAMETER_LIST: ::DWORD = 328;
+pub const ERROR_OPERATION_IN_PROGRESS: ::DWORD = 329;
+pub const ERROR_BAD_DEVICE_PATH: ::DWORD = 330;
+pub const ERROR_TOO_MANY_DESCRIPTORS: ::DWORD = 331;
+pub const ERROR_SCRUB_DATA_DISABLED: ::DWORD = 332;
+pub const ERROR_NOT_REDUNDANT_STORAGE: ::DWORD = 333;
+pub const ERROR_RESIDENT_FILE_NOT_SUPPORTED: ::DWORD = 334;
+pub const ERROR_COMPRESSED_FILE_NOT_SUPPORTED: ::DWORD = 335;
+pub const ERROR_DIRECTORY_NOT_SUPPORTED: ::DWORD = 336;
+pub const ERROR_NOT_READ_FROM_COPY: ::DWORD = 337;
+pub const ERROR_FT_WRITE_FAILURE: ::DWORD = 338;
+pub const ERROR_FT_DI_SCAN_REQUIRED: ::DWORD = 339;
+pub const ERROR_INVALID_KERNEL_INFO_VERSION: ::DWORD = 340;
+pub const ERROR_INVALID_PEP_INFO_VERSION: ::DWORD = 341;
+pub const ERROR_OBJECT_NOT_EXTERNALLY_BACKED: ::DWORD = 342;
+pub const ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN: ::DWORD = 343;
+pub const ERROR_FAIL_NOACTION_REBOOT: ::DWORD = 350;
+pub const ERROR_FAIL_SHUTDOWN: ::DWORD = 351;
+pub const ERROR_FAIL_RESTART: ::DWORD = 352;
+pub const ERROR_MAX_SESSIONS_REACHED: ::DWORD = 353;
+pub const ERROR_THREAD_MODE_ALREADY_BACKGROUND: ::DWORD = 400;
+pub const ERROR_THREAD_MODE_NOT_BACKGROUND: ::DWORD = 401;
+pub const ERROR_PROCESS_MODE_ALREADY_BACKGROUND: ::DWORD = 402;
+pub const ERROR_PROCESS_MODE_NOT_BACKGROUND: ::DWORD = 403;
+pub const ERROR_DEVICE_HARDWARE_ERROR: ::DWORD = 483;
+pub const ERROR_INVALID_ADDRESS: ::DWORD = 487;
+pub const ERROR_USER_PROFILE_LOAD: ::DWORD = 500;
+pub const ERROR_ARITHMETIC_OVERFLOW: ::DWORD = 534;
+pub const ERROR_PIPE_CONNECTED: ::DWORD = 535;
+pub const ERROR_PIPE_LISTENING: ::DWORD = 536;
+pub const ERROR_VERIFIER_STOP: ::DWORD = 537;
+pub const ERROR_ABIOS_ERROR: ::DWORD = 538;
+pub const ERROR_WX86_WARNING: ::DWORD = 539;
+pub const ERROR_WX86_ERROR: ::DWORD = 540;
+pub const ERROR_TIMER_NOT_CANCELED: ::DWORD = 541;
+pub const ERROR_UNWIND: ::DWORD = 542;
+pub const ERROR_BAD_STACK: ::DWORD = 543;
+pub const ERROR_INVALID_UNWIND_TARGET: ::DWORD = 544;
+pub const ERROR_INVALID_PORT_ATTRIBUTES: ::DWORD = 545;
+pub const ERROR_PORT_MESSAGE_TOO_LONG: ::DWORD = 546;
+pub const ERROR_INVALID_QUOTA_LOWER: ::DWORD = 547;
+pub const ERROR_DEVICE_ALREADY_ATTACHED: ::DWORD = 548;
+pub const ERROR_INSTRUCTION_MISALIGNMENT: ::DWORD = 549;
+pub const ERROR_PROFILING_NOT_STARTED: ::DWORD = 550;
+pub const ERROR_PROFILING_NOT_STOPPED: ::DWORD = 551;
+pub const ERROR_COULD_NOT_INTERPRET: ::DWORD = 552;
+pub const ERROR_PROFILING_AT_LIMIT: ::DWORD = 553;
+pub const ERROR_CANT_WAIT: ::DWORD = 554;
+pub const ERROR_CANT_TERMINATE_SELF: ::DWORD = 555;
+pub const ERROR_UNEXPECTED_MM_CREATE_ERR: ::DWORD = 556;
+pub const ERROR_UNEXPECTED_MM_MAP_ERROR: ::DWORD = 557;
+pub const ERROR_UNEXPECTED_MM_EXTEND_ERR: ::DWORD = 558;
+pub const ERROR_BAD_FUNCTION_TABLE: ::DWORD = 559;
+pub const ERROR_NO_GUID_TRANSLATION: ::DWORD = 560;
+pub const ERROR_INVALID_LDT_SIZE: ::DWORD = 561;
+pub const ERROR_INVALID_LDT_OFFSET: ::DWORD = 563;
+pub const ERROR_INVALID_LDT_DESCRIPTOR: ::DWORD = 564;
+pub const ERROR_TOO_MANY_THREADS: ::DWORD = 565;
+pub const ERROR_THREAD_NOT_IN_PROCESS: ::DWORD = 566;
+pub const ERROR_PAGEFILE_QUOTA_EXCEEDED: ::DWORD = 567;
+pub const ERROR_LOGON_SERVER_CONFLICT: ::DWORD = 568;
+pub const ERROR_SYNCHRONIZATION_REQUIRED: ::DWORD = 569;
+pub const ERROR_NET_OPEN_FAILED: ::DWORD = 570;
+pub const ERROR_IO_PRIVILEGE_FAILED: ::DWORD = 571;
+pub const ERROR_CONTROL_C_EXIT: ::DWORD = 572;
+pub const ERROR_MISSING_SYSTEMFILE: ::DWORD = 573;
+pub const ERROR_UNHANDLED_EXCEPTION: ::DWORD = 574;
+pub const ERROR_APP_INIT_FAILURE: ::DWORD = 575;
+pub const ERROR_PAGEFILE_CREATE_FAILED: ::DWORD = 576;
+pub const ERROR_INVALID_IMAGE_HASH: ::DWORD = 577;
+pub const ERROR_NO_PAGEFILE: ::DWORD = 578;
+pub const ERROR_ILLEGAL_FLOAT_CONTEXT: ::DWORD = 579;
+pub const ERROR_NO_EVENT_PAIR: ::DWORD = 580;
+pub const ERROR_DOMAIN_CTRLR_CONFIG_ERROR: ::DWORD = 581;
+pub const ERROR_ILLEGAL_CHARACTER: ::DWORD = 582;
+pub const ERROR_UNDEFINED_CHARACTER: ::DWORD = 583;
+pub const ERROR_FLOPPY_VOLUME: ::DWORD = 584;
+pub const ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT: ::DWORD = 585;
+pub const ERROR_BACKUP_CONTROLLER: ::DWORD = 586;
+pub const ERROR_MUTANT_LIMIT_EXCEEDED: ::DWORD = 587;
+pub const ERROR_FS_DRIVER_REQUIRED: ::DWORD = 588;
+pub const ERROR_CANNOT_LOAD_REGISTRY_FILE: ::DWORD = 589;
+pub const ERROR_DEBUG_ATTACH_FAILED: ::DWORD = 590;
+pub const ERROR_SYSTEM_PROCESS_TERMINATED: ::DWORD = 591;
+pub const ERROR_DATA_NOT_ACCEPTED: ::DWORD = 592;
+pub const ERROR_VDM_HARD_ERROR: ::DWORD = 593;
+pub const ERROR_DRIVER_CANCEL_TIMEOUT: ::DWORD = 594;
+pub const ERROR_REPLY_MESSAGE_MISMATCH: ::DWORD = 595;
+pub const ERROR_LOST_WRITEBEHIND_DATA: ::DWORD = 596;
+pub const ERROR_CLIENT_SERVER_PARAMETERS_INVALID: ::DWORD = 597;
+pub const ERROR_NOT_TINY_STREAM: ::DWORD = 598;
+pub const ERROR_STACK_OVERFLOW_READ: ::DWORD = 599;
+pub const ERROR_CONVERT_TO_LARGE: ::DWORD = 600;
+pub const ERROR_FOUND_OUT_OF_SCOPE: ::DWORD = 601;
+pub const ERROR_ALLOCATE_BUCKET: ::DWORD = 602;
+pub const ERROR_MARSHALL_OVERFLOW: ::DWORD = 603;
+pub const ERROR_INVALID_VARIANT: ::DWORD = 604;
+pub const ERROR_BAD_COMPRESSION_BUFFER: ::DWORD = 605;
+pub const ERROR_AUDIT_FAILED: ::DWORD = 606;
+pub const ERROR_TIMER_RESOLUTION_NOT_SET: ::DWORD = 607;
+pub const ERROR_INSUFFICIENT_LOGON_INFO: ::DWORD = 608;
+pub const ERROR_BAD_DLL_ENTRYPOINT: ::DWORD = 609;
+pub const ERROR_BAD_SERVICE_ENTRYPOINT: ::DWORD = 610;
+pub const ERROR_IP_ADDRESS_CONFLICT1: ::DWORD = 611;
+pub const ERROR_IP_ADDRESS_CONFLICT2: ::DWORD = 612;
+pub const ERROR_REGISTRY_QUOTA_LIMIT: ::DWORD = 613;
+pub const ERROR_NO_CALLBACK_ACTIVE: ::DWORD = 614;
+pub const ERROR_PWD_TOO_SHORT: ::DWORD = 615;
+pub const ERROR_PWD_TOO_RECENT: ::DWORD = 616;
+pub const ERROR_PWD_HISTORY_CONFLICT: ::DWORD = 617;
+pub const ERROR_UNSUPPORTED_COMPRESSION: ::DWORD = 618;
+pub const ERROR_INVALID_HW_PROFILE: ::DWORD = 619;
+pub const ERROR_INVALID_PLUGPLAY_DEVICE_PATH: ::DWORD = 620;
+pub const ERROR_QUOTA_LIST_INCONSISTENT: ::DWORD = 621;
+pub const ERROR_EVALUATION_EXPIRATION: ::DWORD = 622;
+pub const ERROR_ILLEGAL_DLL_RELOCATION: ::DWORD = 623;
+pub const ERROR_DLL_INIT_FAILED_LOGOFF: ::DWORD = 624;
+pub const ERROR_VALIDATE_CONTINUE: ::DWORD = 625;
+pub const ERROR_NO_MORE_MATCHES: ::DWORD = 626;
+pub const ERROR_RANGE_LIST_CONFLICT: ::DWORD = 627;
+pub const ERROR_SERVER_SID_MISMATCH: ::DWORD = 628;
+pub const ERROR_CANT_ENABLE_DENY_ONLY: ::DWORD = 629;
+pub const ERROR_FLOAT_MULTIPLE_FAULTS: ::DWORD = 630;
+pub const ERROR_FLOAT_MULTIPLE_TRAPS: ::DWORD = 631;
+pub const ERROR_NOINTERFACE: ::DWORD = 632;
+pub const ERROR_DRIVER_FAILED_SLEEP: ::DWORD = 633;
+pub const ERROR_CORRUPT_SYSTEM_FILE: ::DWORD = 634;
+pub const ERROR_COMMITMENT_MINIMUM: ::DWORD = 635;
+pub const ERROR_PNP_RESTART_ENUMERATION: ::DWORD = 636;
+pub const ERROR_SYSTEM_IMAGE_BAD_SIGNATURE: ::DWORD = 637;
+pub const ERROR_PNP_REBOOT_REQUIRED: ::DWORD = 638;
+pub const ERROR_INSUFFICIENT_POWER: ::DWORD = 639;
+pub const ERROR_MULTIPLE_FAULT_VIOLATION: ::DWORD = 640;
+pub const ERROR_SYSTEM_SHUTDOWN: ::DWORD = 641;
+pub const ERROR_PORT_NOT_SET: ::DWORD = 642;
+pub const ERROR_DS_VERSION_CHECK_FAILURE: ::DWORD = 643;
+pub const ERROR_RANGE_NOT_FOUND: ::DWORD = 644;
+pub const ERROR_NOT_SAFE_MODE_DRIVER: ::DWORD = 646;
+pub const ERROR_FAILED_DRIVER_ENTRY: ::DWORD = 647;
+pub const ERROR_DEVICE_ENUMERATION_ERROR: ::DWORD = 648;
+pub const ERROR_MOUNT_POINT_NOT_RESOLVED: ::DWORD = 649;
+pub const ERROR_INVALID_DEVICE_OBJECT_PARAMETER: ::DWORD = 650;
+pub const ERROR_MCA_OCCURED: ::DWORD = 651;
+pub const ERROR_DRIVER_DATABASE_ERROR: ::DWORD = 652;
+pub const ERROR_SYSTEM_HIVE_TOO_LARGE: ::DWORD = 653;
+pub const ERROR_DRIVER_FAILED_PRIOR_UNLOAD: ::DWORD = 654;
+pub const ERROR_VOLSNAP_PREPARE_HIBERNATE: ::DWORD = 655;
+pub const ERROR_HIBERNATION_FAILURE: ::DWORD = 656;
+pub const ERROR_PWD_TOO_LONG: ::DWORD = 657;
+pub const ERROR_FILE_SYSTEM_LIMITATION: ::DWORD = 665;
+pub const ERROR_ASSERTION_FAILURE: ::DWORD = 668;
+pub const ERROR_ACPI_ERROR: ::DWORD = 669;
+pub const ERROR_WOW_ASSERTION: ::DWORD = 670;
+pub const ERROR_PNP_BAD_MPS_TABLE: ::DWORD = 671;
+pub const ERROR_PNP_TRANSLATION_FAILED: ::DWORD = 672;
+pub const ERROR_PNP_IRQ_TRANSLATION_FAILED: ::DWORD = 673;
+pub const ERROR_PNP_INVALID_ID: ::DWORD = 674;
+pub const ERROR_WAKE_SYSTEM_DEBUGGER: ::DWORD = 675;
+pub const ERROR_HANDLES_CLOSED: ::DWORD = 676;
+pub const ERROR_EXTRANEOUS_INFORMATION: ::DWORD = 677;
+pub const ERROR_RXACT_COMMIT_NECESSARY: ::DWORD = 678;
+pub const ERROR_MEDIA_CHECK: ::DWORD = 679;
+pub const ERROR_GUID_SUBSTITUTION_MADE: ::DWORD = 680;
+pub const ERROR_STOPPED_ON_SYMLINK: ::DWORD = 681;
+pub const ERROR_LONGJUMP: ::DWORD = 682;
+pub const ERROR_PLUGPLAY_QUERY_VETOED: ::DWORD = 683;
+pub const ERROR_UNWIND_CONSOLIDATE: ::DWORD = 684;
+pub const ERROR_REGISTRY_HIVE_RECOVERED: ::DWORD = 685;
+pub const ERROR_DLL_MIGHT_BE_INSECURE: ::DWORD = 686;
+pub const ERROR_DLL_MIGHT_BE_INCOMPATIBLE: ::DWORD = 687;
+pub const ERROR_DBG_EXCEPTION_NOT_HANDLED: ::DWORD = 688;
+pub const ERROR_DBG_REPLY_LATER: ::DWORD = 689;
+pub const ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE: ::DWORD = 690;
+pub const ERROR_DBG_TERMINATE_THREAD: ::DWORD = 691;
+pub const ERROR_DBG_TERMINATE_PROCESS: ::DWORD = 692;
+pub const ERROR_DBG_CONTROL_C: ::DWORD = 693;
+pub const ERROR_DBG_PRINTEXCEPTION_C: ::DWORD = 694;
+pub const ERROR_DBG_RIPEXCEPTION: ::DWORD = 695;
+pub const ERROR_DBG_CONTROL_BREAK: ::DWORD = 696;
+pub const ERROR_DBG_COMMAND_EXCEPTION: ::DWORD = 697;
+pub const ERROR_OBJECT_NAME_EXISTS: ::DWORD = 698;
+pub const ERROR_THREAD_WAS_SUSPENDED: ::DWORD = 699;
+pub const ERROR_IMAGE_NOT_AT_BASE: ::DWORD = 700;
+pub const ERROR_RXACT_STATE_CREATED: ::DWORD = 701;
+pub const ERROR_SEGMENT_NOTIFICATION: ::DWORD = 702;
+pub const ERROR_BAD_CURRENT_DIRECTORY: ::DWORD = 703;
+pub const ERROR_FT_READ_RECOVERY_FROM_BACKUP: ::DWORD = 704;
+pub const ERROR_FT_WRITE_RECOVERY: ::DWORD = 705;
+pub const ERROR_IMAGE_MACHINE_TYPE_MISMATCH: ::DWORD = 706;
+pub const ERROR_RECEIVE_PARTIAL: ::DWORD = 707;
+pub const ERROR_RECEIVE_EXPEDITED: ::DWORD = 708;
+pub const ERROR_RECEIVE_PARTIAL_EXPEDITED: ::DWORD = 709;
+pub const ERROR_EVENT_DONE: ::DWORD = 710;
+pub const ERROR_EVENT_PENDING: ::DWORD = 711;
+pub const ERROR_CHECKING_FILE_SYSTEM: ::DWORD = 712;
+pub const ERROR_FATAL_APP_EXIT: ::DWORD = 713;
+pub const ERROR_PREDEFINED_HANDLE: ::DWORD = 714;
+pub const ERROR_WAS_UNLOCKED: ::DWORD = 715;
+pub const ERROR_SERVICE_NOTIFICATION: ::DWORD = 716;
+pub const ERROR_WAS_LOCKED: ::DWORD = 717;
+pub const ERROR_LOG_HARD_ERROR: ::DWORD = 718;
+pub const ERROR_ALREADY_WIN32: ::DWORD = 719;
+pub const ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE: ::DWORD = 720;
+pub const ERROR_NO_YIELD_PERFORMED: ::DWORD = 721;
+pub const ERROR_TIMER_RESUME_IGNORED: ::DWORD = 722;
+pub const ERROR_ARBITRATION_UNHANDLED: ::DWORD = 723;
+pub const ERROR_CARDBUS_NOT_SUPPORTED: ::DWORD = 724;
+pub const ERROR_MP_PROCESSOR_MISMATCH: ::DWORD = 725;
+pub const ERROR_HIBERNATED: ::DWORD = 726;
+pub const ERROR_RESUME_HIBERNATION: ::DWORD = 727;
+pub const ERROR_FIRMWARE_UPDATED: ::DWORD = 728;
+pub const ERROR_DRIVERS_LEAKING_LOCKED_PAGES: ::DWORD = 729;
+pub const ERROR_WAKE_SYSTEM: ::DWORD = 730;
+pub const ERROR_WAIT_1: ::DWORD = 731;
+pub const ERROR_WAIT_2: ::DWORD = 732;
+pub const ERROR_WAIT_3: ::DWORD = 733;
+pub const ERROR_WAIT_63: ::DWORD = 734;
+pub const ERROR_ABANDONED_WAIT_0: ::DWORD = 735;
+pub const ERROR_ABANDONED_WAIT_63: ::DWORD = 736;
+pub const ERROR_USER_APC: ::DWORD = 737;
+pub const ERROR_KERNEL_APC: ::DWORD = 738;
+pub const ERROR_ALERTED: ::DWORD = 739;
+pub const ERROR_ELEVATION_REQUIRED: ::DWORD = 740;
+pub const ERROR_REPARSE: ::DWORD = 741;
+pub const ERROR_OPLOCK_BREAK_IN_PROGRESS: ::DWORD = 742;
+pub const ERROR_VOLUME_MOUNTED: ::DWORD = 743;
+pub const ERROR_RXACT_COMMITTED: ::DWORD = 744;
+pub const ERROR_NOTIFY_CLEANUP: ::DWORD = 745;
+pub const ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED: ::DWORD = 746;
+pub const ERROR_PAGE_FAULT_TRANSITION: ::DWORD = 747;
+pub const ERROR_PAGE_FAULT_DEMAND_ZERO: ::DWORD = 748;
+pub const ERROR_PAGE_FAULT_COPY_ON_WRITE: ::DWORD = 749;
+pub const ERROR_PAGE_FAULT_GUARD_PAGE: ::DWORD = 750;
+pub const ERROR_PAGE_FAULT_PAGING_FILE: ::DWORD = 751;
+pub const ERROR_CACHE_PAGE_LOCKED: ::DWORD = 752;
+pub const ERROR_CRASH_DUMP: ::DWORD = 753;
+pub const ERROR_BUFFER_ALL_ZEROS: ::DWORD = 754;
+pub const ERROR_REPARSE_OBJECT: ::DWORD = 755;
+pub const ERROR_RESOURCE_REQUIREMENTS_CHANGED: ::DWORD = 756;
+pub const ERROR_TRANSLATION_COMPLETE: ::DWORD = 757;
+pub const ERROR_NOTHING_TO_TERMINATE: ::DWORD = 758;
+pub const ERROR_PROCESS_NOT_IN_JOB: ::DWORD = 759;
+pub const ERROR_PROCESS_IN_JOB: ::DWORD = 760;
+pub const ERROR_VOLSNAP_HIBERNATE_READY: ::DWORD = 761;
+pub const ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY: ::DWORD = 762;
+pub const ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED: ::DWORD = 763;
+pub const ERROR_INTERRUPT_STILL_CONNECTED: ::DWORD = 764;
+pub const ERROR_WAIT_FOR_OPLOCK: ::DWORD = 765;
+pub const ERROR_DBG_EXCEPTION_HANDLED: ::DWORD = 766;
+pub const ERROR_DBG_CONTINUE: ::DWORD = 767;
+pub const ERROR_CALLBACK_POP_STACK: ::DWORD = 768;
+pub const ERROR_COMPRESSION_DISABLED: ::DWORD = 769;
+pub const ERROR_CANTFETCHBACKWARDS: ::DWORD = 770;
+pub const ERROR_CANTSCROLLBACKWARDS: ::DWORD = 771;
+pub const ERROR_ROWSNOTRELEASED: ::DWORD = 772;
+pub const ERROR_BAD_ACCESSOR_FLAGS: ::DWORD = 773;
+pub const ERROR_ERRORS_ENCOUNTERED: ::DWORD = 774;
+pub const ERROR_NOT_CAPABLE: ::DWORD = 775;
+pub const ERROR_REQUEST_OUT_OF_SEQUENCE: ::DWORD = 776;
+pub const ERROR_VERSION_PARSE_ERROR: ::DWORD = 777;
+pub const ERROR_BADSTARTPOSITION: ::DWORD = 778;
+pub const ERROR_MEMORY_HARDWARE: ::DWORD = 779;
+pub const ERROR_DISK_REPAIR_DISABLED: ::DWORD = 780;
+pub const ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE: ::DWORD = 781;
+pub const ERROR_SYSTEM_POWERSTATE_TRANSITION: ::DWORD = 782;
+pub const ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION: ::DWORD = 783;
+pub const ERROR_MCA_EXCEPTION: ::DWORD = 784;
+pub const ERROR_ACCESS_AUDIT_BY_POLICY: ::DWORD = 785;
+pub const ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY: ::DWORD = 786;
+pub const ERROR_ABANDON_HIBERFILE: ::DWORD = 787;
+pub const ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED: ::DWORD = 788;
+pub const ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR: ::DWORD = 789;
+pub const ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR: ::DWORD = 790;
+pub const ERROR_BAD_MCFG_TABLE: ::DWORD = 791;
+pub const ERROR_DISK_REPAIR_REDIRECTED: ::DWORD = 792;
+pub const ERROR_DISK_REPAIR_UNSUCCESSFUL: ::DWORD = 793;
+pub const ERROR_CORRUPT_LOG_OVERFULL: ::DWORD = 794;
+pub const ERROR_CORRUPT_LOG_CORRUPTED: ::DWORD = 795;
+pub const ERROR_CORRUPT_LOG_UNAVAILABLE: ::DWORD = 796;
+pub const ERROR_CORRUPT_LOG_DELETED_FULL: ::DWORD = 797;
+pub const ERROR_CORRUPT_LOG_CLEARED: ::DWORD = 798;
+pub const ERROR_ORPHAN_NAME_EXHAUSTED: ::DWORD = 799;
+pub const ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE: ::DWORD = 800;
+pub const ERROR_CANNOT_GRANT_REQUESTED_OPLOCK: ::DWORD = 801;
+pub const ERROR_CANNOT_BREAK_OPLOCK: ::DWORD = 802;
+pub const ERROR_OPLOCK_HANDLE_CLOSED: ::DWORD = 803;
+pub const ERROR_NO_ACE_CONDITION: ::DWORD = 804;
+pub const ERROR_INVALID_ACE_CONDITION: ::DWORD = 805;
+pub const ERROR_FILE_HANDLE_REVOKED: ::DWORD = 806;
+pub const ERROR_IMAGE_AT_DIFFERENT_BASE: ::DWORD = 807;
+pub const ERROR_ENCRYPTED_IO_NOT_POSSIBLE: ::DWORD = 808;
+pub const ERROR_EA_ACCESS_DENIED: ::DWORD = 994;
+pub const ERROR_OPERATION_ABORTED: ::DWORD = 995;
+pub const ERROR_IO_INCOMPLETE: ::DWORD = 996;
+pub const ERROR_IO_PENDING: ::DWORD = 997;
+pub const ERROR_NOACCESS: ::DWORD = 998;
+pub const ERROR_SWAPERROR: ::DWORD = 999;
+pub const ERROR_STACK_OVERFLOW: ::DWORD = 1001;
+pub const ERROR_INVALID_MESSAGE: ::DWORD = 1002;
+pub const ERROR_CAN_NOT_COMPLETE: ::DWORD = 1003;
+pub const ERROR_INVALID_FLAGS: ::DWORD = 1004;
+pub const ERROR_UNRECOGNIZED_VOLUME: ::DWORD = 1005;
+pub const ERROR_FILE_INVALID: ::DWORD = 1006;
+pub const ERROR_FULLSCREEN_MODE: ::DWORD = 1007;
+pub const ERROR_NO_TOKEN: ::DWORD = 1008;
+pub const ERROR_BADDB: ::DWORD = 1009;
+pub const ERROR_BADKEY: ::DWORD = 1010;
+pub const ERROR_CANTOPEN: ::DWORD = 1011;
+pub const ERROR_CANTREAD: ::DWORD = 1012;
+pub const ERROR_CANTWRITE: ::DWORD = 1013;
+pub const ERROR_REGISTRY_RECOVERED: ::DWORD = 1014;
+pub const ERROR_REGISTRY_CORRUPT: ::DWORD = 1015;
+pub const ERROR_REGISTRY_IO_FAILED: ::DWORD = 1016;
+pub const ERROR_NOT_REGISTRY_FILE: ::DWORD = 1017;
+pub const ERROR_KEY_DELETED: ::DWORD = 1018;
+pub const ERROR_NO_LOG_SPACE: ::DWORD = 1019;
+pub const ERROR_KEY_HAS_CHILDREN: ::DWORD = 1020;
+pub const ERROR_CHILD_MUST_BE_VOLATILE: ::DWORD = 1021;
+pub const ERROR_NOTIFY_ENUM_DIR: ::DWORD = 1022;
+pub const ERROR_DEPENDENT_SERVICES_RUNNING: ::DWORD = 1051;
+pub const ERROR_INVALID_SERVICE_CONTROL: ::DWORD = 1052;
+pub const ERROR_SERVICE_REQUEST_TIMEOUT: ::DWORD = 1053;
+pub const ERROR_SERVICE_NO_THREAD: ::DWORD = 1054;
+pub const ERROR_SERVICE_DATABASE_LOCKED: ::DWORD = 1055;
+pub const ERROR_SERVICE_ALREADY_RUNNING: ::DWORD = 1056;
+pub const ERROR_INVALID_SERVICE_ACCOUNT: ::DWORD = 1057;
+pub const ERROR_SERVICE_DISABLED: ::DWORD = 1058;
+pub const ERROR_CIRCULAR_DEPENDENCY: ::DWORD = 1059;
+pub const ERROR_SERVICE_DOES_NOT_EXIST: ::DWORD = 1060;
+pub const ERROR_SERVICE_CANNOT_ACCEPT_CTRL: ::DWORD = 1061;
+pub const ERROR_SERVICE_NOT_ACTIVE: ::DWORD = 1062;
+pub const ERROR_FAILED_SERVICE_CONTROLLER_CONNECT: ::DWORD = 1063;
+pub const ERROR_EXCEPTION_IN_SERVICE: ::DWORD = 1064;
+pub const ERROR_DATABASE_DOES_NOT_EXIST: ::DWORD = 1065;
+pub const ERROR_SERVICE_SPECIFIC_ERROR: ::DWORD = 1066;
+pub const ERROR_PROCESS_ABORTED: ::DWORD = 1067;
+pub const ERROR_SERVICE_DEPENDENCY_FAIL: ::DWORD = 1068;
+pub const ERROR_SERVICE_LOGON_FAILED: ::DWORD = 1069;
+pub const ERROR_SERVICE_START_HANG: ::DWORD = 1070;
+pub const ERROR_INVALID_SERVICE_LOCK: ::DWORD = 1071;
+pub const ERROR_SERVICE_MARKED_FOR_DELETE: ::DWORD = 1072;
+pub const ERROR_SERVICE_EXISTS: ::DWORD = 1073;
+pub const ERROR_ALREADY_RUNNING_LKG: ::DWORD = 1074;
+pub const ERROR_SERVICE_DEPENDENCY_DELETED: ::DWORD = 1075;
+pub const ERROR_BOOT_ALREADY_ACCEPTED: ::DWORD = 1076;
+pub const ERROR_SERVICE_NEVER_STARTED: ::DWORD = 1077;
+pub const ERROR_DUPLICATE_SERVICE_NAME: ::DWORD = 1078;
+pub const ERROR_DIFFERENT_SERVICE_ACCOUNT: ::DWORD = 1079;
+pub const ERROR_CANNOT_DETECT_DRIVER_FAILURE: ::DWORD = 1080;
+pub const ERROR_CANNOT_DETECT_PROCESS_ABORT: ::DWORD = 1081;
+pub const ERROR_NO_RECOVERY_PROGRAM: ::DWORD = 1082;
+pub const ERROR_SERVICE_NOT_IN_EXE: ::DWORD = 1083;
+pub const ERROR_NOT_SAFEBOOT_SERVICE: ::DWORD = 1084;
+pub const ERROR_END_OF_MEDIA: ::DWORD = 1100;
+pub const ERROR_FILEMARK_DETECTED: ::DWORD = 1101;
+pub const ERROR_BEGINNING_OF_MEDIA: ::DWORD = 1102;
+pub const ERROR_SETMARK_DETECTED: ::DWORD = 1103;
+pub const ERROR_NO_DATA_DETECTED: ::DWORD = 1104;
+pub const ERROR_PARTITION_FAILURE: ::DWORD = 1105;
+pub const ERROR_INVALID_BLOCK_LENGTH: ::DWORD = 1106;
+pub const ERROR_DEVICE_NOT_PARTITIONED: ::DWORD = 1107;
+pub const ERROR_UNABLE_TO_LOCK_MEDIA: ::DWORD = 1108;
+pub const ERROR_UNABLE_TO_UNLOAD_MEDIA: ::DWORD = 1109;
+pub const ERROR_MEDIA_CHANGED: ::DWORD = 1110;
+pub const ERROR_BUS_RESET: ::DWORD = 1111;
+pub const ERROR_NO_MEDIA_IN_DRIVE: ::DWORD = 1112;
+pub const ERROR_NO_UNICODE_TRANSLATION: ::DWORD = 1113;
+pub const ERROR_DLL_INIT_FAILED: ::DWORD = 1114;
+pub const ERROR_SHUTDOWN_IN_PROGRESS: ::DWORD = 1115;
+pub const ERROR_NO_SHUTDOWN_IN_PROGRESS: ::DWORD = 1116;
+pub const ERROR_IO_DEVICE: ::DWORD = 1117;
+pub const ERROR_SERIAL_NO_DEVICE: ::DWORD = 1118;
+pub const ERROR_IRQ_BUSY: ::DWORD = 1119;
+pub const ERROR_MORE_WRITES: ::DWORD = 1120;
+pub const ERROR_COUNTER_TIMEOUT: ::DWORD = 1121;
+pub const ERROR_FLOPPY_ID_MARK_NOT_FOUND: ::DWORD = 1122;
+pub const ERROR_FLOPPY_WRONG_CYLINDER: ::DWORD = 1123;
+pub const ERROR_FLOPPY_UNKNOWN_ERROR: ::DWORD = 1124;
+pub const ERROR_FLOPPY_BAD_REGISTERS: ::DWORD = 1125;
+pub const ERROR_DISK_RECALIBRATE_FAILED: ::DWORD = 1126;
+pub const ERROR_DISK_OPERATION_FAILED: ::DWORD = 1127;
+pub const ERROR_DISK_RESET_FAILED: ::DWORD = 1128;
+pub const ERROR_EOM_OVERFLOW: ::DWORD = 1129;
+pub const ERROR_NOT_ENOUGH_SERVER_MEMORY: ::DWORD = 1130;
+pub const ERROR_POSSIBLE_DEADLOCK: ::DWORD = 1131;
+pub const ERROR_MAPPED_ALIGNMENT: ::DWORD = 1132;
+pub const ERROR_SET_POWER_STATE_VETOED: ::DWORD = 1140;
+pub const ERROR_SET_POWER_STATE_FAILED: ::DWORD = 1141;
+pub const ERROR_TOO_MANY_LINKS: ::DWORD = 1142;
+pub const ERROR_OLD_WIN_VERSION: ::DWORD = 1150;
+pub const ERROR_APP_WRONG_OS: ::DWORD = 1151;
+pub const ERROR_SINGLE_INSTANCE_APP: ::DWORD = 1152;
+pub const ERROR_RMODE_APP: ::DWORD = 1153;
+pub const ERROR_INVALID_DLL: ::DWORD = 1154;
+pub const ERROR_NO_ASSOCIATION: ::DWORD = 1155;
+pub const ERROR_DDE_FAIL: ::DWORD = 1156;
+pub const ERROR_DLL_NOT_FOUND: ::DWORD = 1157;
+pub const ERROR_NO_MORE_USER_HANDLES: ::DWORD = 1158;
+pub const ERROR_MESSAGE_SYNC_ONLY: ::DWORD = 1159;
+pub const ERROR_SOURCE_ELEMENT_EMPTY: ::DWORD = 1160;
+pub const ERROR_DESTINATION_ELEMENT_FULL: ::DWORD = 1161;
+pub const ERROR_ILLEGAL_ELEMENT_ADDRESS: ::DWORD = 1162;
+pub const ERROR_MAGAZINE_NOT_PRESENT: ::DWORD = 1163;
+pub const ERROR_DEVICE_REINITIALIZATION_NEEDED: ::DWORD = 1164;
+pub const ERROR_DEVICE_REQUIRES_CLEANING: ::DWORD = 1165;
+pub const ERROR_DEVICE_DOOR_OPEN: ::DWORD = 1166;
+pub const ERROR_DEVICE_NOT_CONNECTED: ::DWORD = 1167;
+pub const ERROR_NOT_FOUND: ::DWORD = 1168;
+pub const ERROR_NO_MATCH: ::DWORD = 1169;
+pub const ERROR_SET_NOT_FOUND: ::DWORD = 1170;
+pub const ERROR_POINT_NOT_FOUND: ::DWORD = 1171;
+pub const ERROR_NO_TRACKING_SERVICE: ::DWORD = 1172;
+pub const ERROR_NO_VOLUME_ID: ::DWORD = 1173;
+pub const ERROR_UNABLE_TO_REMOVE_REPLACED: ::DWORD = 1175;
+pub const ERROR_UNABLE_TO_MOVE_REPLACEMENT: ::DWORD = 1176;
+pub const ERROR_UNABLE_TO_MOVE_REPLACEMENT_2: ::DWORD = 1177;
+pub const ERROR_JOURNAL_DELETE_IN_PROGRESS: ::DWORD = 1178;
+pub const ERROR_JOURNAL_NOT_ACTIVE: ::DWORD = 1179;
+pub const ERROR_POTENTIAL_FILE_FOUND: ::DWORD = 1180;
+pub const ERROR_JOURNAL_ENTRY_DELETED: ::DWORD = 1181;
+pub const ERROR_SHUTDOWN_IS_SCHEDULED: ::DWORD = 1190;
+pub const ERROR_SHUTDOWN_USERS_LOGGED_ON: ::DWORD = 1191;
+pub const ERROR_BAD_DEVICE: ::DWORD = 1200;
+pub const ERROR_CONNECTION_UNAVAIL: ::DWORD = 1201;
+pub const ERROR_DEVICE_ALREADY_REMEMBERED: ::DWORD = 1202;
+pub const ERROR_NO_NET_OR_BAD_PATH: ::DWORD = 1203;
+pub const ERROR_BAD_PROVIDER: ::DWORD = 1204;
+pub const ERROR_CANNOT_OPEN_PROFILE: ::DWORD = 1205;
+pub const ERROR_BAD_PROFILE: ::DWORD = 1206;
+pub const ERROR_NOT_CONTAINER: ::DWORD = 1207;
+pub const ERROR_EXTENDED_ERROR: ::DWORD = 1208;
+pub const ERROR_INVALID_GROUPNAME: ::DWORD = 1209;
+pub const ERROR_INVALID_COMPUTERNAME: ::DWORD = 1210;
+pub const ERROR_INVALID_EVENTNAME: ::DWORD = 1211;
+pub const ERROR_INVALID_DOMAINNAME: ::DWORD = 1212;
+pub const ERROR_INVALID_SERVICENAME: ::DWORD = 1213;
+pub const ERROR_INVALID_NETNAME: ::DWORD = 1214;
+pub const ERROR_INVALID_SHARENAME: ::DWORD = 1215;
+pub const ERROR_INVALID_PASSWORDNAME: ::DWORD = 1216;
+pub const ERROR_INVALID_MESSAGENAME: ::DWORD = 1217;
+pub const ERROR_INVALID_MESSAGEDEST: ::DWORD = 1218;
+pub const ERROR_SESSION_CREDENTIAL_CONFLICT: ::DWORD = 1219;
+pub const ERROR_REMOTE_SESSION_LIMIT_EXCEEDED: ::DWORD = 1220;
+pub const ERROR_DUP_DOMAINNAME: ::DWORD = 1221;
+pub const ERROR_NO_NETWORK: ::DWORD = 1222;
+pub const ERROR_CANCELLED: ::DWORD = 1223;
+pub const ERROR_USER_MAPPED_FILE: ::DWORD = 1224;
+pub const ERROR_CONNECTION_REFUSED: ::DWORD = 1225;
+pub const ERROR_GRACEFUL_DISCONNECT: ::DWORD = 1226;
+pub const ERROR_ADDRESS_ALREADY_ASSOCIATED: ::DWORD = 1227;
+pub const ERROR_ADDRESS_NOT_ASSOCIATED: ::DWORD = 1228;
+pub const ERROR_CONNECTION_INVALID: ::DWORD = 1229;
+pub const ERROR_CONNECTION_ACTIVE: ::DWORD = 1230;
+pub const ERROR_NETWORK_UNREACHABLE: ::DWORD = 1231;
+pub const ERROR_HOST_UNREACHABLE: ::DWORD = 1232;
+pub const ERROR_PROTOCOL_UNREACHABLE: ::DWORD = 1233;
+pub const ERROR_PORT_UNREACHABLE: ::DWORD = 1234;
+pub const ERROR_REQUEST_ABORTED: ::DWORD = 1235;
+pub const ERROR_CONNECTION_ABORTED: ::DWORD = 1236;
+pub const ERROR_RETRY: ::DWORD = 1237;
+pub const ERROR_CONNECTION_COUNT_LIMIT: ::DWORD = 1238;
+pub const ERROR_LOGIN_TIME_RESTRICTION: ::DWORD = 1239;
+pub const ERROR_LOGIN_WKSTA_RESTRICTION: ::DWORD = 1240;
+pub const ERROR_INCORRECT_ADDRESS: ::DWORD = 1241;
+pub const ERROR_ALREADY_REGISTERED: ::DWORD = 1242;
+pub const ERROR_SERVICE_NOT_FOUND: ::DWORD = 1243;
+pub const ERROR_NOT_AUTHENTICATED: ::DWORD = 1244;
+pub const ERROR_NOT_LOGGED_ON: ::DWORD = 1245;
+pub const ERROR_CONTINUE: ::DWORD = 1246;
+pub const ERROR_ALREADY_INITIALIZED: ::DWORD = 1247;
+pub const ERROR_NO_MORE_DEVICES: ::DWORD = 1248;
+pub const ERROR_NO_SUCH_SITE: ::DWORD = 1249;
+pub const ERROR_DOMAIN_CONTROLLER_EXISTS: ::DWORD = 1250;
+pub const ERROR_ONLY_IF_CONNECTED: ::DWORD = 1251;
+pub const ERROR_OVERRIDE_NOCHANGES: ::DWORD = 1252;
+pub const ERROR_BAD_USER_PROFILE: ::DWORD = 1253;
+pub const ERROR_NOT_SUPPORTED_ON_SBS: ::DWORD = 1254;
+pub const ERROR_SERVER_SHUTDOWN_IN_PROGRESS: ::DWORD = 1255;
+pub const ERROR_HOST_DOWN: ::DWORD = 1256;
+pub const ERROR_NON_ACCOUNT_SID: ::DWORD = 1257;
+pub const ERROR_NON_DOMAIN_SID: ::DWORD = 1258;
+pub const ERROR_APPHELP_BLOCK: ::DWORD = 1259;
+pub const ERROR_ACCESS_DISABLED_BY_POLICY: ::DWORD = 1260;
+pub const ERROR_REG_NAT_CONSUMPTION: ::DWORD = 1261;
+pub const ERROR_CSCSHARE_OFFLINE: ::DWORD = 1262;
+pub const ERROR_PKINIT_FAILURE: ::DWORD = 1263;
+pub const ERROR_SMARTCARD_SUBSYSTEM_FAILURE: ::DWORD = 1264;
+pub const ERROR_DOWNGRADE_DETECTED: ::DWORD = 1265;
+pub const ERROR_MACHINE_LOCKED: ::DWORD = 1271;
+pub const ERROR_CALLBACK_SUPPLIED_INVALID_DATA: ::DWORD = 1273;
+pub const ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED: ::DWORD = 1274;
+pub const ERROR_DRIVER_BLOCKED: ::DWORD = 1275;
+pub const ERROR_INVALID_IMPORT_OF_NON_DLL: ::DWORD = 1276;
+pub const ERROR_ACCESS_DISABLED_WEBBLADE: ::DWORD = 1277;
+pub const ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER: ::DWORD = 1278;
+pub const ERROR_RECOVERY_FAILURE: ::DWORD = 1279;
+pub const ERROR_ALREADY_FIBER: ::DWORD = 1280;
+pub const ERROR_ALREADY_THREAD: ::DWORD = 1281;
+pub const ERROR_STACK_BUFFER_OVERRUN: ::DWORD = 1282;
+pub const ERROR_PARAMETER_QUOTA_EXCEEDED: ::DWORD = 1283;
+pub const ERROR_DEBUGGER_INACTIVE: ::DWORD = 1284;
+pub const ERROR_DELAY_LOAD_FAILED: ::DWORD = 1285;
+pub const ERROR_VDM_DISALLOWED: ::DWORD = 1286;
+pub const ERROR_UNIDENTIFIED_ERROR: ::DWORD = 1287;
+pub const ERROR_INVALID_CRUNTIME_PARAMETER: ::DWORD = 1288;
+pub const ERROR_BEYOND_VDL: ::DWORD = 1289;
+pub const ERROR_INCOMPATIBLE_SERVICE_SID_TYPE: ::DWORD = 1290;
+pub const ERROR_DRIVER_PROCESS_TERMINATED: ::DWORD = 1291;
+pub const ERROR_IMPLEMENTATION_LIMIT: ::DWORD = 1292;
+pub const ERROR_PROCESS_IS_PROTECTED: ::DWORD = 1293;
+pub const ERROR_SERVICE_NOTIFY_CLIENT_LAGGING: ::DWORD = 1294;
+pub const ERROR_DISK_QUOTA_EXCEEDED: ::DWORD = 1295;
+pub const ERROR_CONTENT_BLOCKED: ::DWORD = 1296;
+pub const ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE: ::DWORD = 1297;
+pub const ERROR_APP_HANG: ::DWORD = 1298;
+pub const ERROR_INVALID_LABEL: ::DWORD = 1299;
+pub const ERROR_NOT_ALL_ASSIGNED: ::DWORD = 1300;
+pub const ERROR_SOME_NOT_MAPPED: ::DWORD = 1301;
+pub const ERROR_NO_QUOTAS_FOR_ACCOUNT: ::DWORD = 1302;
+pub const ERROR_LOCAL_USER_SESSION_KEY: ::DWORD = 1303;
+pub const ERROR_NULL_LM_PASSWORD: ::DWORD = 1304;
+pub const ERROR_UNKNOWN_REVISION: ::DWORD = 1305;
+pub const ERROR_REVISION_MISMATCH: ::DWORD = 1306;
+pub const ERROR_INVALID_OWNER: ::DWORD = 1307;
+pub const ERROR_INVALID_PRIMARY_GROUP: ::DWORD = 1308;
+pub const ERROR_NO_IMPERSONATION_TOKEN: ::DWORD = 1309;
+pub const ERROR_CANT_DISABLE_MANDATORY: ::DWORD = 1310;
+pub const ERROR_NO_LOGON_SERVERS: ::DWORD = 1311;
+pub const ERROR_NO_SUCH_LOGON_SESSION: ::DWORD = 1312;
+pub const ERROR_NO_SUCH_PRIVILEGE: ::DWORD = 1313;
+pub const ERROR_PRIVILEGE_NOT_HELD: ::DWORD = 1314;
+pub const ERROR_INVALID_ACCOUNT_NAME: ::DWORD = 1315;
+pub const ERROR_USER_EXISTS: ::DWORD = 1316;
+pub const ERROR_NO_SUCH_USER: ::DWORD = 1317;
+pub const ERROR_GROUP_EXISTS: ::DWORD = 1318;
+pub const ERROR_NO_SUCH_GROUP: ::DWORD = 1319;
+pub const ERROR_MEMBER_IN_GROUP: ::DWORD = 1320;
+pub const ERROR_MEMBER_NOT_IN_GROUP: ::DWORD = 1321;
+pub const ERROR_LAST_ADMIN: ::DWORD = 1322;
+pub const ERROR_WRONG_PASSWORD: ::DWORD = 1323;
+pub const ERROR_ILL_FORMED_PASSWORD: ::DWORD = 1324;
+pub const ERROR_PASSWORD_RESTRICTION: ::DWORD = 1325;
+pub const ERROR_LOGON_FAILURE: ::DWORD = 1326;
+pub const ERROR_ACCOUNT_RESTRICTION: ::DWORD = 1327;
+pub const ERROR_INVALID_LOGON_HOURS: ::DWORD = 1328;
+pub const ERROR_INVALID_WORKSTATION: ::DWORD = 1329;
+pub const ERROR_PASSWORD_EXPIRED: ::DWORD = 1330;
+pub const ERROR_ACCOUNT_DISABLED: ::DWORD = 1331;
+pub const ERROR_NONE_MAPPED: ::DWORD = 1332;
+pub const ERROR_TOO_MANY_LUIDS_REQUESTED: ::DWORD = 1333;
+pub const ERROR_LUIDS_EXHAUSTED: ::DWORD = 1334;
+pub const ERROR_INVALID_SUB_AUTHORITY: ::DWORD = 1335;
+pub const ERROR_INVALID_ACL: ::DWORD = 1336;
+pub const ERROR_INVALID_SID: ::DWORD = 1337;
+pub const ERROR_INVALID_SECURITY_DESCR: ::DWORD = 1338;
+pub const ERROR_BAD_INHERITANCE_ACL: ::DWORD = 1340;
+pub const ERROR_SERVER_DISABLED: ::DWORD = 1341;
+pub const ERROR_SERVER_NOT_DISABLED: ::DWORD = 1342;
+pub const ERROR_INVALID_ID_AUTHORITY: ::DWORD = 1343;
+pub const ERROR_ALLOTTED_SPACE_EXCEEDED: ::DWORD = 1344;
+pub const ERROR_INVALID_GROUP_ATTRIBUTES: ::DWORD = 1345;
+pub const ERROR_BAD_IMPERSONATION_LEVEL: ::DWORD = 1346;
+pub const ERROR_CANT_OPEN_ANONYMOUS: ::DWORD = 1347;
+pub const ERROR_BAD_VALIDATION_CLASS: ::DWORD = 1348;
+pub const ERROR_BAD_TOKEN_TYPE: ::DWORD = 1349;
+pub const ERROR_NO_SECURITY_ON_OBJECT: ::DWORD = 1350;
+pub const ERROR_CANT_ACCESS_DOMAIN_INFO: ::DWORD = 1351;
+pub const ERROR_INVALID_SERVER_STATE: ::DWORD = 1352;
+pub const ERROR_INVALID_DOMAIN_STATE: ::DWORD = 1353;
+pub const ERROR_INVALID_DOMAIN_ROLE: ::DWORD = 1354;
+pub const ERROR_NO_SUCH_DOMAIN: ::DWORD = 1355;
+pub const ERROR_DOMAIN_EXISTS: ::DWORD = 1356;
+pub const ERROR_DOMAIN_LIMIT_EXCEEDED: ::DWORD = 1357;
+pub const ERROR_INTERNAL_DB_CORRUPTION: ::DWORD = 1358;
+pub const ERROR_INTERNAL_ERROR: ::DWORD = 1359;
+pub const ERROR_GENERIC_NOT_MAPPED: ::DWORD = 1360;
+pub const ERROR_BAD_DESCRIPTOR_FORMAT: ::DWORD = 1361;
+pub const ERROR_NOT_LOGON_PROCESS: ::DWORD = 1362;
+pub const ERROR_LOGON_SESSION_EXISTS: ::DWORD = 1363;
+pub const ERROR_NO_SUCH_PACKAGE: ::DWORD = 1364;
+pub const ERROR_BAD_LOGON_SESSION_STATE: ::DWORD = 1365;
+pub const ERROR_LOGON_SESSION_COLLISION: ::DWORD = 1366;
+pub const ERROR_INVALID_LOGON_TYPE: ::DWORD = 1367;
+pub const ERROR_CANNOT_IMPERSONATE: ::DWORD = 1368;
+pub const ERROR_RXACT_INVALID_STATE: ::DWORD = 1369;
+pub const ERROR_RXACT_COMMIT_FAILURE: ::DWORD = 1370;
+pub const ERROR_SPECIAL_ACCOUNT: ::DWORD = 1371;
+pub const ERROR_SPECIAL_GROUP: ::DWORD = 1372;
+pub const ERROR_SPECIAL_USER: ::DWORD = 1373;
+pub const ERROR_MEMBERS_PRIMARY_GROUP: ::DWORD = 1374;
+pub const ERROR_TOKEN_ALREADY_IN_USE: ::DWORD = 1375;
+pub const ERROR_NO_SUCH_ALIAS: ::DWORD = 1376;
+pub const ERROR_MEMBER_NOT_IN_ALIAS: ::DWORD = 1377;
+pub const ERROR_MEMBER_IN_ALIAS: ::DWORD = 1378;
+pub const ERROR_ALIAS_EXISTS: ::DWORD = 1379;
+pub const ERROR_LOGON_NOT_GRANTED: ::DWORD = 1380;
+pub const ERROR_TOO_MANY_SECRETS: ::DWORD = 1381;
+pub const ERROR_SECRET_TOO_LONG: ::DWORD = 1382;
+pub const ERROR_INTERNAL_DB_ERROR: ::DWORD = 1383;
+pub const ERROR_TOO_MANY_CONTEXT_IDS: ::DWORD = 1384;
+pub const ERROR_LOGON_TYPE_NOT_GRANTED: ::DWORD = 1385;
+pub const ERROR_NT_CROSS_ENCRYPTION_REQUIRED: ::DWORD = 1386;
+pub const ERROR_NO_SUCH_MEMBER: ::DWORD = 1387;
+pub const ERROR_INVALID_MEMBER: ::DWORD = 1388;
+pub const ERROR_TOO_MANY_SIDS: ::DWORD = 1389;
+pub const ERROR_LM_CROSS_ENCRYPTION_REQUIRED: ::DWORD = 1390;
+pub const ERROR_NO_INHERITANCE: ::DWORD = 1391;
+pub const ERROR_FILE_CORRUPT: ::DWORD = 1392;
+pub const ERROR_DISK_CORRUPT: ::DWORD = 1393;
+pub const ERROR_NO_USER_SESSION_KEY: ::DWORD = 1394;
+pub const ERROR_LICENSE_QUOTA_EXCEEDED: ::DWORD = 1395;
+pub const ERROR_WRONG_TARGET_NAME: ::DWORD = 1396;
+pub const ERROR_MUTUAL_AUTH_FAILED: ::DWORD = 1397;
+pub const ERROR_TIME_SKEW: ::DWORD = 1398;
+pub const ERROR_CURRENT_DOMAIN_NOT_ALLOWED: ::DWORD = 1399;
+pub const ERROR_INVALID_WINDOW_HANDLE: ::DWORD = 1400;
+pub const ERROR_INVALID_MENU_HANDLE: ::DWORD = 1401;
+pub const ERROR_INVALID_CURSOR_HANDLE: ::DWORD = 1402;
+pub const ERROR_INVALID_ACCEL_HANDLE: ::DWORD = 1403;
+pub const ERROR_INVALID_HOOK_HANDLE: ::DWORD = 1404;
+pub const ERROR_INVALID_DWP_HANDLE: ::DWORD = 1405;
+pub const ERROR_TLW_WITH_WSCHILD: ::DWORD = 1406;
+pub const ERROR_CANNOT_FIND_WND_CLASS: ::DWORD = 1407;
+pub const ERROR_WINDOW_OF_OTHER_THREAD: ::DWORD = 1408;
+pub const ERROR_HOTKEY_ALREADY_REGISTERED: ::DWORD = 1409;
+pub const ERROR_CLASS_ALREADY_EXISTS: ::DWORD = 1410;
+pub const ERROR_CLASS_DOES_NOT_EXIST: ::DWORD = 1411;
+pub const ERROR_CLASS_HAS_WINDOWS: ::DWORD = 1412;
+pub const ERROR_INVALID_INDEX: ::DWORD = 1413;
+pub const ERROR_INVALID_ICON_HANDLE: ::DWORD = 1414;
+pub const ERROR_PRIVATE_DIALOG_INDEX: ::DWORD = 1415;
+pub const ERROR_LISTBOX_ID_NOT_FOUND: ::DWORD = 1416;
+pub const ERROR_NO_WILDCARD_CHARACTERS: ::DWORD = 1417;
+pub const ERROR_CLIPBOARD_NOT_OPEN: ::DWORD = 1418;
+pub const ERROR_HOTKEY_NOT_REGISTERED: ::DWORD = 1419;
+pub const ERROR_WINDOW_NOT_DIALOG: ::DWORD = 1420;
+pub const ERROR_CONTROL_ID_NOT_FOUND: ::DWORD = 1421;
+pub const ERROR_INVALID_COMBOBOX_MESSAGE: ::DWORD = 1422;
+pub const ERROR_WINDOW_NOT_COMBOBOX: ::DWORD = 1423;
+pub const ERROR_INVALID_EDIT_HEIGHT: ::DWORD = 1424;
+pub const ERROR_DC_NOT_FOUND: ::DWORD = 1425;
+pub const ERROR_INVALID_HOOK_FILTER: ::DWORD = 1426;
+pub const ERROR_INVALID_FILTER_PROC: ::DWORD = 1427;
+pub const ERROR_HOOK_NEEDS_HMOD: ::DWORD = 1428;
+pub const ERROR_GLOBAL_ONLY_HOOK: ::DWORD = 1429;
+pub const ERROR_JOURNAL_HOOK_SET: ::DWORD = 1430;
+pub const ERROR_HOOK_NOT_INSTALLED: ::DWORD = 1431;
+pub const ERROR_INVALID_LB_MESSAGE: ::DWORD = 1432;
+pub const ERROR_SETCOUNT_ON_BAD_LB: ::DWORD = 1433;
+pub const ERROR_LB_WITHOUT_TABSTOPS: ::DWORD = 1434;
+pub const ERROR_DESTROY_OBJECT_OF_OTHER_THREAD: ::DWORD = 1435;
+pub const ERROR_CHILD_WINDOW_MENU: ::DWORD = 1436;
+pub const ERROR_NO_SYSTEM_MENU: ::DWORD = 1437;
+pub const ERROR_INVALID_MSGBOX_STYLE: ::DWORD = 1438;
+pub const ERROR_INVALID_SPI_VALUE: ::DWORD = 1439;
+pub const ERROR_SCREEN_ALREADY_LOCKED: ::DWORD = 1440;
+pub const ERROR_HWNDS_HAVE_DIFF_PARENT: ::DWORD = 1441;
+pub const ERROR_NOT_CHILD_WINDOW: ::DWORD = 1442;
+pub const ERROR_INVALID_GW_COMMAND: ::DWORD = 1443;
+pub const ERROR_INVALID_THREAD_ID: ::DWORD = 1444;
+pub const ERROR_NON_MDICHILD_WINDOW: ::DWORD = 1445;
+pub const ERROR_POPUP_ALREADY_ACTIVE: ::DWORD = 1446;
+pub const ERROR_NO_SCROLLBARS: ::DWORD = 1447;
+pub const ERROR_INVALID_SCROLLBAR_RANGE: ::DWORD = 1448;
+pub const ERROR_INVALID_SHOWWIN_COMMAND: ::DWORD = 1449;
+pub const ERROR_NO_SYSTEM_RESOURCES: ::DWORD = 1450;
+pub const ERROR_NONPAGED_SYSTEM_RESOURCES: ::DWORD = 1451;
+pub const ERROR_PAGED_SYSTEM_RESOURCES: ::DWORD = 1452;
+pub const ERROR_WORKING_SET_QUOTA: ::DWORD = 1453;
+pub const ERROR_PAGEFILE_QUOTA: ::DWORD = 1454;
+pub const ERROR_COMMITMENT_LIMIT: ::DWORD = 1455;
+pub const ERROR_MENU_ITEM_NOT_FOUND: ::DWORD = 1456;
+pub const ERROR_INVALID_KEYBOARD_HANDLE: ::DWORD = 1457;
+pub const ERROR_HOOK_TYPE_NOT_ALLOWED: ::DWORD = 1458;
+pub const ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION: ::DWORD = 1459;
+pub const ERROR_TIMEOUT: ::DWORD = 1460;
+pub const ERROR_INVALID_MONITOR_HANDLE: ::DWORD = 1461;
+pub const ERROR_INCORRECT_SIZE: ::DWORD = 1462;
+pub const ERROR_SYMLINK_CLASS_DISABLED: ::DWORD = 1463;
+pub const ERROR_SYMLINK_NOT_SUPPORTED: ::DWORD = 1464;
+pub const ERROR_XML_PARSE_ERROR: ::DWORD = 1465;
+pub const ERROR_XMLDSIG_ERROR: ::DWORD = 1466;
+pub const ERROR_RESTART_APPLICATION: ::DWORD = 1467;
+pub const ERROR_WRONG_COMPARTMENT: ::DWORD = 1468;
+pub const ERROR_AUTHIP_FAILURE: ::DWORD = 1469;
+pub const ERROR_NO_NVRAM_RESOURCES: ::DWORD = 1470;
+pub const ERROR_NOT_GUI_PROCESS: ::DWORD = 1471;
+pub const ERROR_EVENTLOG_FILE_CORRUPT: ::DWORD = 1500;
+pub const ERROR_EVENTLOG_CANT_START: ::DWORD = 1501;
+pub const ERROR_LOG_FILE_FULL: ::DWORD = 1502;
+pub const ERROR_EVENTLOG_FILE_CHANGED: ::DWORD = 1503;
+pub const ERROR_INVALID_TASK_NAME: ::DWORD = 1550;
+pub const ERROR_INVALID_TASK_INDEX: ::DWORD = 1551;
+pub const ERROR_THREAD_ALREADY_IN_TASK: ::DWORD = 1552;
+pub const ERROR_INSTALL_SERVICE_FAILURE: ::DWORD = 1601;
+pub const ERROR_INSTALL_USEREXIT: ::DWORD = 1602;
+pub const ERROR_INSTALL_FAILURE: ::DWORD = 1603;
+pub const ERROR_INSTALL_SUSPEND: ::DWORD = 1604;
+pub const ERROR_UNKNOWN_PRODUCT: ::DWORD = 1605;
+pub const ERROR_UNKNOWN_FEATURE: ::DWORD = 1606;
+pub const ERROR_UNKNOWN_COMPONENT: ::DWORD = 1607;
+pub const ERROR_UNKNOWN_PROPERTY: ::DWORD = 1608;
+pub const ERROR_INVALID_HANDLE_STATE: ::DWORD = 1609;
+pub const ERROR_BAD_CONFIGURATION: ::DWORD = 1610;
+pub const ERROR_INDEX_ABSENT: ::DWORD = 1611;
+pub const ERROR_INSTALL_SOURCE_ABSENT: ::DWORD = 1612;
+pub const ERROR_INSTALL_PACKAGE_VERSION: ::DWORD = 1613;
+pub const ERROR_PRODUCT_UNINSTALLED: ::DWORD = 1614;
+pub const ERROR_BAD_QUERY_SYNTAX: ::DWORD = 1615;
+pub const ERROR_INVALID_FIELD: ::DWORD = 1616;
+pub const ERROR_DEVICE_REMOVED: ::DWORD = 1617;
+pub const ERROR_INSTALL_ALREADY_RUNNING: ::DWORD = 1618;
+pub const ERROR_INSTALL_PACKAGE_OPEN_FAILED: ::DWORD = 1619;
+pub const ERROR_INSTALL_PACKAGE_INVALID: ::DWORD = 1620;
+pub const ERROR_INSTALL_UI_FAILURE: ::DWORD = 1621;
+pub const ERROR_INSTALL_LOG_FAILURE: ::DWORD = 1622;
+pub const ERROR_INSTALL_LANGUAGE_UNSUPPORTED: ::DWORD = 1623;
+pub const ERROR_INSTALL_TRANSFORM_FAILURE: ::DWORD = 1624;
+pub const ERROR_INSTALL_PACKAGE_REJECTED: ::DWORD = 1625;
+pub const ERROR_FUNCTION_NOT_CALLED: ::DWORD = 1626;
+pub const ERROR_FUNCTION_FAILED: ::DWORD = 1627;
+pub const ERROR_INVALID_TABLE: ::DWORD = 1628;
+pub const ERROR_DATATYPE_MISMATCH: ::DWORD = 1629;
+pub const ERROR_UNSUPPORTED_TYPE: ::DWORD = 1630;
+pub const ERROR_CREATE_FAILED: ::DWORD = 1631;
+pub const ERROR_INSTALL_TEMP_UNWRITABLE: ::DWORD = 1632;
+pub const ERROR_INSTALL_PLATFORM_UNSUPPORTED: ::DWORD = 1633;
+pub const ERROR_INSTALL_NOTUSED: ::DWORD = 1634;
+pub const ERROR_PATCH_PACKAGE_OPEN_FAILED: ::DWORD = 1635;
+pub const ERROR_PATCH_PACKAGE_INVALID: ::DWORD = 1636;
+pub const ERROR_PATCH_PACKAGE_UNSUPPORTED: ::DWORD = 1637;
+pub const ERROR_PRODUCT_VERSION: ::DWORD = 1638;
+pub const ERROR_INVALID_COMMAND_LINE: ::DWORD = 1639;
+pub const ERROR_INSTALL_REMOTE_DISALLOWED: ::DWORD = 1640;
+pub const ERROR_SUCCESS_REBOOT_INITIATED: ::DWORD = 1641;
+pub const ERROR_PATCH_TARGET_NOT_FOUND: ::DWORD = 1642;
+pub const ERROR_PATCH_PACKAGE_REJECTED: ::DWORD = 1643;
+pub const ERROR_INSTALL_TRANSFORM_REJECTED: ::DWORD = 1644;
+pub const ERROR_INSTALL_REMOTE_PROHIBITED: ::DWORD = 1645;
+pub const ERROR_PATCH_REMOVAL_UNSUPPORTED: ::DWORD = 1646;
+pub const ERROR_UNKNOWN_PATCH: ::DWORD = 1647;
+pub const ERROR_PATCH_NO_SEQUENCE: ::DWORD = 1648;
+pub const ERROR_PATCH_REMOVAL_DISALLOWED: ::DWORD = 1649;
+pub const ERROR_INVALID_PATCH_XML: ::DWORD = 1650;
+pub const ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT: ::DWORD = 1651;
+pub const ERROR_INSTALL_SERVICE_SAFEBOOT: ::DWORD = 1652;
+pub const ERROR_FAIL_FAST_EXCEPTION: ::DWORD = 1653;
+pub const ERROR_INSTALL_REJECTED: ::DWORD = 1654;
+pub const ERROR_DYNAMIC_CODE_BLOCKED: ::DWORD = 1655;
+pub const RPC_S_INVALID_STRING_BINDING: ::DWORD = 1700;
+pub const RPC_S_WRONG_KIND_OF_BINDING: ::DWORD = 1701;
+pub const RPC_S_INVALID_BINDING: ::DWORD = 1702;
+pub const RPC_S_PROTSEQ_NOT_SUPPORTED: ::DWORD = 1703;
+pub const RPC_S_INVALID_RPC_PROTSEQ: ::DWORD = 1704;
+pub const RPC_S_INVALID_STRING_UUID: ::DWORD = 1705;
+pub const RPC_S_INVALID_ENDPOINT_FORMAT: ::DWORD = 1706;
+pub const RPC_S_INVALID_NET_ADDR: ::DWORD = 1707;
+pub const RPC_S_NO_ENDPOINT_FOUND: ::DWORD = 1708;
+pub const RPC_S_INVALID_TIMEOUT: ::DWORD = 1709;
+pub const RPC_S_OBJECT_NOT_FOUND: ::DWORD = 1710;
+pub const RPC_S_ALREADY_REGISTERED: ::DWORD = 1711;
+pub const RPC_S_TYPE_ALREADY_REGISTERED: ::DWORD = 1712;
+pub const RPC_S_ALREADY_LISTENING: ::DWORD = 1713;
+pub const RPC_S_NO_PROTSEQS_REGISTERED: ::DWORD = 1714;
+pub const RPC_S_NOT_LISTENING: ::DWORD = 1715;
+pub const RPC_S_UNKNOWN_MGR_TYPE: ::DWORD = 1716;
+pub const RPC_S_UNKNOWN_IF: ::DWORD = 1717;
+pub const RPC_S_NO_BINDINGS: ::DWORD = 1718;
+pub const RPC_S_NO_PROTSEQS: ::DWORD = 1719;
+pub const RPC_S_CANT_CREATE_ENDPOINT: ::DWORD = 1720;
+pub const RPC_S_OUT_OF_RESOURCES: ::DWORD = 1721;
+pub const RPC_S_SERVER_UNAVAILABLE: ::DWORD = 1722;
+pub const RPC_S_SERVER_TOO_BUSY: ::DWORD = 1723;
+pub const RPC_S_INVALID_NETWORK_OPTIONS: ::DWORD = 1724;
+pub const RPC_S_NO_CALL_ACTIVE: ::DWORD = 1725;
+pub const RPC_S_CALL_FAILED: ::DWORD = 1726;
+pub const RPC_S_CALL_FAILED_DNE: ::DWORD = 1727;
+pub const RPC_S_PROTOCOL_ERROR: ::DWORD = 1728;
+pub const RPC_S_PROXY_ACCESS_DENIED: ::DWORD = 1729;
+pub const RPC_S_UNSUPPORTED_TRANS_SYN: ::DWORD = 1730;
+pub const RPC_S_UNSUPPORTED_TYPE: ::DWORD = 1732;
+pub const RPC_S_INVALID_TAG: ::DWORD = 1733;
+pub const RPC_S_INVALID_BOUND: ::DWORD = 1734;
+pub const RPC_S_NO_ENTRY_NAME: ::DWORD = 1735;
+pub const RPC_S_INVALID_NAME_SYNTAX: ::DWORD = 1736;
+pub const RPC_S_UNSUPPORTED_NAME_SYNTAX: ::DWORD = 1737;
+pub const RPC_S_UUID_NO_ADDRESS: ::DWORD = 1739;
+pub const RPC_S_DUPLICATE_ENDPOINT: ::DWORD = 1740;
+pub const RPC_S_UNKNOWN_AUTHN_TYPE: ::DWORD = 1741;
+pub const RPC_S_MAX_CALLS_TOO_SMALL: ::DWORD = 1742;
+pub const RPC_S_STRING_TOO_LONG: ::DWORD = 1743;
+pub const RPC_S_PROTSEQ_NOT_FOUND: ::DWORD = 1744;
+pub const RPC_S_PROCNUM_OUT_OF_RANGE: ::DWORD = 1745;
+pub const RPC_S_BINDING_HAS_NO_AUTH: ::DWORD = 1746;
+pub const RPC_S_UNKNOWN_AUTHN_SERVICE: ::DWORD = 1747;
+pub const RPC_S_UNKNOWN_AUTHN_LEVEL: ::DWORD = 1748;
+pub const RPC_S_INVALID_AUTH_IDENTITY: ::DWORD = 1749;
+pub const RPC_S_UNKNOWN_AUTHZ_SERVICE: ::DWORD = 1750;
+pub const EPT_S_INVALID_ENTRY: ::DWORD = 1751;
+pub const EPT_S_CANT_PERFORM_OP: ::DWORD = 1752;
+pub const EPT_S_NOT_REGISTERED: ::DWORD = 1753;
+pub const RPC_S_NOTHING_TO_EXPORT: ::DWORD = 1754;
+pub const RPC_S_INCOMPLETE_NAME: ::DWORD = 1755;
+pub const RPC_S_INVALID_VERS_OPTION: ::DWORD = 1756;
+pub const RPC_S_NO_MORE_MEMBERS: ::DWORD = 1757;
+pub const RPC_S_NOT_ALL_OBJS_UNEXPORTED: ::DWORD = 1758;
+pub const RPC_S_INTERFACE_NOT_FOUND: ::DWORD = 1759;
+pub const RPC_S_ENTRY_ALREADY_EXISTS: ::DWORD = 1760;
+pub const RPC_S_ENTRY_NOT_FOUND: ::DWORD = 1761;
+pub const RPC_S_NAME_SERVICE_UNAVAILABLE: ::DWORD = 1762;
+pub const RPC_S_INVALID_NAF_ID: ::DWORD = 1763;
+pub const RPC_S_CANNOT_SUPPORT: ::DWORD = 1764;
+pub const RPC_S_NO_CONTEXT_AVAILABLE: ::DWORD = 1765;
+pub const RPC_S_INTERNAL_ERROR: ::DWORD = 1766;
+pub const RPC_S_ZERO_DIVIDE: ::DWORD = 1767;
+pub const RPC_S_ADDRESS_ERROR: ::DWORD = 1768;
+pub const RPC_S_FP_DIV_ZERO: ::DWORD = 1769;
+pub const RPC_S_FP_UNDERFLOW: ::DWORD = 1770;
+pub const RPC_S_FP_OVERFLOW: ::DWORD = 1771;
+pub const RPC_X_NO_MORE_ENTRIES: ::DWORD = 1772;
+pub const RPC_X_SS_CHAR_TRANS_OPEN_FAIL: ::DWORD = 1773;
+pub const RPC_X_SS_CHAR_TRANS_SHORT_FILE: ::DWORD = 1774;
+pub const RPC_X_SS_IN_NULL_CONTEXT: ::DWORD = 1775;
+pub const RPC_X_SS_CONTEXT_DAMAGED: ::DWORD = 1777;
+pub const RPC_X_SS_HANDLES_MISMATCH: ::DWORD = 1778;
+pub const RPC_X_SS_CANNOT_GET_CALL_HANDLE: ::DWORD = 1779;
+pub const RPC_X_NULL_REF_POINTER: ::DWORD = 1780;
+pub const RPC_X_ENUM_VALUE_OUT_OF_RANGE: ::DWORD = 1781;
+pub const RPC_X_BYTE_COUNT_TOO_SMALL: ::DWORD = 1782;
+pub const RPC_X_BAD_STUB_DATA: ::DWORD = 1783;
+pub const ERROR_INVALID_USER_BUFFER: ::DWORD = 1784;
+pub const ERROR_UNRECOGNIZED_MEDIA: ::DWORD = 1785;
+pub const ERROR_NO_TRUST_LSA_SECRET: ::DWORD = 1786;
+pub const ERROR_NO_TRUST_SAM_ACCOUNT: ::DWORD = 1787;
+pub const ERROR_TRUSTED_DOMAIN_FAILURE: ::DWORD = 1788;
+pub const ERROR_TRUSTED_RELATIONSHIP_FAILURE: ::DWORD = 1789;
+pub const ERROR_TRUST_FAILURE: ::DWORD = 1790;
+pub const RPC_S_CALL_IN_PROGRESS: ::DWORD = 1791;
+pub const ERROR_NETLOGON_NOT_STARTED: ::DWORD = 1792;
+pub const ERROR_ACCOUNT_EXPIRED: ::DWORD = 1793;
+pub const ERROR_REDIRECTOR_HAS_OPEN_HANDLES: ::DWORD = 1794;
+pub const ERROR_PRINTER_DRIVER_ALREADY_INSTALLED: ::DWORD = 1795;
+pub const ERROR_UNKNOWN_PORT: ::DWORD = 1796;
+pub const ERROR_UNKNOWN_PRINTER_DRIVER: ::DWORD = 1797;
+pub const ERROR_UNKNOWN_PRINTPROCESSOR: ::DWORD = 1798;
+pub const ERROR_INVALID_SEPARATOR_FILE: ::DWORD = 1799;
+pub const ERROR_INVALID_PRIORITY: ::DWORD = 1800;
+pub const ERROR_INVALID_PRINTER_NAME: ::DWORD = 1801;
+pub const ERROR_PRINTER_ALREADY_EXISTS: ::DWORD = 1802;
+pub const ERROR_INVALID_PRINTER_COMMAND: ::DWORD = 1803;
+pub const ERROR_INVALID_DATATYPE: ::DWORD = 1804;
+pub const ERROR_INVALID_ENVIRONMENT: ::DWORD = 1805;
+pub const RPC_S_NO_MORE_BINDINGS: ::DWORD = 1806;
+pub const ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT: ::DWORD = 1807;
+pub const ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT: ::DWORD = 1808;
+pub const ERROR_NOLOGON_SERVER_TRUST_ACCOUNT: ::DWORD = 1809;
+pub const ERROR_DOMAIN_TRUST_INCONSISTENT: ::DWORD = 1810;
+pub const ERROR_SERVER_HAS_OPEN_HANDLES: ::DWORD = 1811;
+pub const ERROR_RESOURCE_DATA_NOT_FOUND: ::DWORD = 1812;
+pub const ERROR_RESOURCE_TYPE_NOT_FOUND: ::DWORD = 1813;
+pub const ERROR_RESOURCE_NAME_NOT_FOUND: ::DWORD = 1814;
+pub const ERROR_RESOURCE_LANG_NOT_FOUND: ::DWORD = 1815;
+pub const ERROR_NOT_ENOUGH_QUOTA: ::DWORD = 1816;
+pub const RPC_S_NO_INTERFACES: ::DWORD = 1817;
+pub const RPC_S_CALL_CANCELLED: ::DWORD = 1818;
+pub const RPC_S_BINDING_INCOMPLETE: ::DWORD = 1819;
+pub const RPC_S_COMM_FAILURE: ::DWORD = 1820;
+pub const RPC_S_UNSUPPORTED_AUTHN_LEVEL: ::DWORD = 1821;
+pub const RPC_S_NO_PRINC_NAME: ::DWORD = 1822;
+pub const RPC_S_NOT_RPC_ERROR: ::DWORD = 1823;
+pub const RPC_S_UUID_LOCAL_ONLY: ::DWORD = 1824;
+pub const RPC_S_SEC_PKG_ERROR: ::DWORD = 1825;
+pub const RPC_S_NOT_CANCELLED: ::DWORD = 1826;
+pub const RPC_X_INVALID_ES_ACTION: ::DWORD = 1827;
+pub const RPC_X_WRONG_ES_VERSION: ::DWORD = 1828;
+pub const RPC_X_WRONG_STUB_VERSION: ::DWORD = 1829;
+pub const RPC_X_INVALID_PIPE_OBJECT: ::DWORD = 1830;
+pub const RPC_X_WRONG_PIPE_ORDER: ::DWORD = 1831;
+pub const RPC_X_WRONG_PIPE_VERSION: ::DWORD = 1832;
+pub const RPC_S_COOKIE_AUTH_FAILED: ::DWORD = 1833;
+pub const RPC_S_GROUP_MEMBER_NOT_FOUND: ::DWORD = 1898;
+pub const EPT_S_CANT_CREATE: ::DWORD = 1899;
+pub const RPC_S_INVALID_OBJECT: ::DWORD = 1900;
+pub const ERROR_INVALID_TIME: ::DWORD = 1901;
+pub const ERROR_INVALID_FORM_NAME: ::DWORD = 1902;
+pub const ERROR_INVALID_FORM_SIZE: ::DWORD = 1903;
+pub const ERROR_ALREADY_WAITING: ::DWORD = 1904;
+pub const ERROR_PRINTER_DELETED: ::DWORD = 1905;
+pub const ERROR_INVALID_PRINTER_STATE: ::DWORD = 1906;
+pub const ERROR_PASSWORD_MUST_CHANGE: ::DWORD = 1907;
+pub const ERROR_DOMAIN_CONTROLLER_NOT_FOUND: ::DWORD = 1908;
+pub const ERROR_ACCOUNT_LOCKED_OUT: ::DWORD = 1909;
+pub const OR_INVALID_OXID: ::DWORD = 1910;
+pub const OR_INVALID_OID: ::DWORD = 1911;
+pub const OR_INVALID_SET: ::DWORD = 1912;
+pub const RPC_S_SEND_INCOMPLETE: ::DWORD = 1913;
+pub const RPC_S_INVALID_ASYNC_HANDLE: ::DWORD = 1914;
+pub const RPC_S_INVALID_ASYNC_CALL: ::DWORD = 1915;
+pub const RPC_X_PIPE_CLOSED: ::DWORD = 1916;
+pub const RPC_X_PIPE_DISCIPLINE_ERROR: ::DWORD = 1917;
+pub const RPC_X_PIPE_EMPTY: ::DWORD = 1918;
+pub const ERROR_NO_SITENAME: ::DWORD = 1919;
+pub const ERROR_CANT_ACCESS_FILE: ::DWORD = 1920;
+pub const ERROR_CANT_RESOLVE_FILENAME: ::DWORD = 1921;
+pub const RPC_S_ENTRY_TYPE_MISMATCH: ::DWORD = 1922;
+pub const RPC_S_NOT_ALL_OBJS_EXPORTED: ::DWORD = 1923;
+pub const RPC_S_INTERFACE_NOT_EXPORTED: ::DWORD = 1924;
+pub const RPC_S_PROFILE_NOT_ADDED: ::DWORD = 1925;
+pub const RPC_S_PRF_ELT_NOT_ADDED: ::DWORD = 1926;
+pub const RPC_S_PRF_ELT_NOT_REMOVED: ::DWORD = 1927;
+pub const RPC_S_GRP_ELT_NOT_ADDED: ::DWORD = 1928;
+pub const RPC_S_GRP_ELT_NOT_REMOVED: ::DWORD = 1929;
+pub const ERROR_KM_DRIVER_BLOCKED: ::DWORD = 1930;
+pub const ERROR_CONTEXT_EXPIRED: ::DWORD = 1931;
+pub const ERROR_PER_USER_TRUST_QUOTA_EXCEEDED: ::DWORD = 1932;
+pub const ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED: ::DWORD = 1933;
+pub const ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED: ::DWORD = 1934;
+pub const ERROR_AUTHENTICATION_FIREWALL_FAILED: ::DWORD = 1935;
+pub const ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED: ::DWORD = 1936;
+pub const ERROR_NTLM_BLOCKED: ::DWORD = 1937;
+pub const ERROR_PASSWORD_CHANGE_REQUIRED: ::DWORD = 1938;
+pub const ERROR_INVALID_PIXEL_FORMAT: ::DWORD = 2000;
+pub const ERROR_BAD_DRIVER: ::DWORD = 2001;
+pub const ERROR_INVALID_WINDOW_STYLE: ::DWORD = 2002;
+pub const ERROR_METAFILE_NOT_SUPPORTED: ::DWORD = 2003;
+pub const ERROR_TRANSFORM_NOT_SUPPORTED: ::DWORD = 2004;
+pub const ERROR_CLIPPING_NOT_SUPPORTED: ::DWORD = 2005;
+pub const ERROR_INVALID_CMM: ::DWORD = 2010;
+pub const ERROR_INVALID_PROFILE: ::DWORD = 2011;
+pub const ERROR_TAG_NOT_FOUND: ::DWORD = 2012;
+pub const ERROR_TAG_NOT_PRESENT: ::DWORD = 2013;
+pub const ERROR_DUPLICATE_TAG: ::DWORD = 2014;
+pub const ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE: ::DWORD = 2015;
+pub const ERROR_PROFILE_NOT_FOUND: ::DWORD = 2016;
+pub const ERROR_INVALID_COLORSPACE: ::DWORD = 2017;
+pub const ERROR_ICM_NOT_ENABLED: ::DWORD = 2018;
+pub const ERROR_DELETING_ICM_XFORM: ::DWORD = 2019;
+pub const ERROR_INVALID_TRANSFORM: ::DWORD = 2020;
+pub const ERROR_COLORSPACE_MISMATCH: ::DWORD = 2021;
+pub const ERROR_INVALID_COLORINDEX: ::DWORD = 2022;
+pub const ERROR_PROFILE_DOES_NOT_MATCH_DEVICE: ::DWORD = 2023;
+pub const ERROR_CONNECTED_OTHER_PASSWORD: ::DWORD = 2108;
+pub const ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT: ::DWORD = 2109;
+pub const ERROR_BAD_USERNAME: ::DWORD = 2202;
+pub const ERROR_NOT_CONNECTED: ::DWORD = 2250;
+pub const ERROR_OPEN_FILES: ::DWORD = 2401;
+pub const ERROR_ACTIVE_CONNECTIONS: ::DWORD = 2402;
+pub const ERROR_DEVICE_IN_USE: ::DWORD = 2404;
+pub const ERROR_UNKNOWN_PRINT_MONITOR: ::DWORD = 3000;
+pub const ERROR_PRINTER_DRIVER_IN_USE: ::DWORD = 3001;
+pub const ERROR_SPOOL_FILE_NOT_FOUND: ::DWORD = 3002;
+pub const ERROR_SPL_NO_STARTDOC: ::DWORD = 3003;
+pub const ERROR_SPL_NO_ADDJOB: ::DWORD = 3004;
+pub const ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED: ::DWORD = 3005;
+pub const ERROR_PRINT_MONITOR_ALREADY_INSTALLED: ::DWORD = 3006;
+pub const ERROR_INVALID_PRINT_MONITOR: ::DWORD = 3007;
+pub const ERROR_PRINT_MONITOR_IN_USE: ::DWORD = 3008;
+pub const ERROR_PRINTER_HAS_JOBS_QUEUED: ::DWORD = 3009;
+pub const ERROR_SUCCESS_REBOOT_REQUIRED: ::DWORD = 3010;
+pub const ERROR_SUCCESS_RESTART_REQUIRED: ::DWORD = 3011;
+pub const ERROR_PRINTER_NOT_FOUND: ::DWORD = 3012;
+pub const ERROR_PRINTER_DRIVER_WARNED: ::DWORD = 3013;
+pub const ERROR_PRINTER_DRIVER_BLOCKED: ::DWORD = 3014;
+pub const ERROR_PRINTER_DRIVER_PACKAGE_IN_USE: ::DWORD = 3015;
+pub const ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND: ::DWORD = 3016;
+pub const ERROR_FAIL_REBOOT_REQUIRED: ::DWORD = 3017;
+pub const ERROR_FAIL_REBOOT_INITIATED: ::DWORD = 3018;
+pub const ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED: ::DWORD = 3019;
+pub const ERROR_PRINT_JOB_RESTART_REQUIRED: ::DWORD = 3020;
+pub const ERROR_INVALID_PRINTER_DRIVER_MANIFEST: ::DWORD = 3021;
+pub const ERROR_PRINTER_NOT_SHAREABLE: ::DWORD = 3022;
+pub const ERROR_REQUEST_PAUSED: ::DWORD = 3050;
+pub const ERROR_IO_REISSUE_AS_CACHED: ::DWORD = 3950;
+pub const ERROR_WINS_INTERNAL: ::DWORD = 4000;
+pub const ERROR_CAN_NOT_DEL_LOCAL_WINS: ::DWORD = 4001;
+pub const ERROR_STATIC_INIT: ::DWORD = 4002;
+pub const ERROR_INC_BACKUP: ::DWORD = 4003;
+pub const ERROR_FULL_BACKUP: ::DWORD = 4004;
+pub const ERROR_REC_NON_EXISTENT: ::DWORD = 4005;
+pub const ERROR_RPL_NOT_ALLOWED: ::DWORD = 4006;
+pub const PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED: ::DWORD = 4050;
+pub const PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO: ::DWORD = 4051;
+pub const PEERDIST_ERROR_MISSING_DATA: ::DWORD = 4052;
+pub const PEERDIST_ERROR_NO_MORE: ::DWORD = 4053;
+pub const PEERDIST_ERROR_NOT_INITIALIZED: ::DWORD = 4054;
+pub const PEERDIST_ERROR_ALREADY_INITIALIZED: ::DWORD = 4055;
+pub const PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS: ::DWORD = 4056;
+pub const PEERDIST_ERROR_INVALIDATED: ::DWORD = 4057;
+pub const PEERDIST_ERROR_ALREADY_EXISTS: ::DWORD = 4058;
+pub const PEERDIST_ERROR_OPERATION_NOTFOUND: ::DWORD = 4059;
+pub const PEERDIST_ERROR_ALREADY_COMPLETED: ::DWORD = 4060;
+pub const PEERDIST_ERROR_OUT_OF_BOUNDS: ::DWORD = 4061;
+pub const PEERDIST_ERROR_VERSION_UNSUPPORTED: ::DWORD = 4062;
+pub const PEERDIST_ERROR_INVALID_CONFIGURATION: ::DWORD = 4063;
+pub const PEERDIST_ERROR_NOT_LICENSED: ::DWORD = 4064;
+pub const PEERDIST_ERROR_SERVICE_UNAVAILABLE: ::DWORD = 4065;
+pub const PEERDIST_ERROR_TRUST_FAILURE: ::DWORD = 4066;
+pub const ERROR_DHCP_ADDRESS_CONFLICT: ::DWORD = 4100;
+pub const ERROR_WMI_GUID_NOT_FOUND: ::DWORD = 4200;
+pub const ERROR_WMI_INSTANCE_NOT_FOUND: ::DWORD = 4201;
+pub const ERROR_WMI_ITEMID_NOT_FOUND: ::DWORD = 4202;
+pub const ERROR_WMI_TRY_AGAIN: ::DWORD = 4203;
+pub const ERROR_WMI_DP_NOT_FOUND: ::DWORD = 4204;
+pub const ERROR_WMI_UNRESOLVED_INSTANCE_REF: ::DWORD = 4205;
+pub const ERROR_WMI_ALREADY_ENABLED: ::DWORD = 4206;
+pub const ERROR_WMI_GUID_DISCONNECTED: ::DWORD = 4207;
+pub const ERROR_WMI_SERVER_UNAVAILABLE: ::DWORD = 4208;
+pub const ERROR_WMI_DP_FAILED: ::DWORD = 4209;
+pub const ERROR_WMI_INVALID_MOF: ::DWORD = 4210;
+pub const ERROR_WMI_INVALID_REGINFO: ::DWORD = 4211;
+pub const ERROR_WMI_ALREADY_DISABLED: ::DWORD = 4212;
+pub const ERROR_WMI_READ_ONLY: ::DWORD = 4213;
+pub const ERROR_WMI_SET_FAILURE: ::DWORD = 4214;
+pub const ERROR_NOT_APPCONTAINER: ::DWORD = 4250;
+pub const ERROR_APPCONTAINER_REQUIRED: ::DWORD = 4251;
+pub const ERROR_NOT_SUPPORTED_IN_APPCONTAINER: ::DWORD = 4252;
+pub const ERROR_INVALID_PACKAGE_SID_LENGTH: ::DWORD = 4253;
+pub const ERROR_INVALID_MEDIA: ::DWORD = 4300;
+pub const ERROR_INVALID_LIBRARY: ::DWORD = 4301;
+pub const ERROR_INVALID_MEDIA_POOL: ::DWORD = 4302;
+pub const ERROR_DRIVE_MEDIA_MISMATCH: ::DWORD = 4303;
+pub const ERROR_MEDIA_OFFLINE: ::DWORD = 4304;
+pub const ERROR_LIBRARY_OFFLINE: ::DWORD = 4305;
+pub const ERROR_EMPTY: ::DWORD = 4306;
+pub const ERROR_NOT_EMPTY: ::DWORD = 4307;
+pub const ERROR_MEDIA_UNAVAILABLE: ::DWORD = 4308;
+pub const ERROR_RESOURCE_DISABLED: ::DWORD = 4309;
+pub const ERROR_INVALID_CLEANER: ::DWORD = 4310;
+pub const ERROR_UNABLE_TO_CLEAN: ::DWORD = 4311;
+pub const ERROR_OBJECT_NOT_FOUND: ::DWORD = 4312;
+pub const ERROR_DATABASE_FAILURE: ::DWORD = 4313;
+pub const ERROR_DATABASE_FULL: ::DWORD = 4314;
+pub const ERROR_MEDIA_INCOMPATIBLE: ::DWORD = 4315;
+pub const ERROR_RESOURCE_NOT_PRESENT: ::DWORD = 4316;
+pub const ERROR_INVALID_OPERATION: ::DWORD = 4317;
+pub const ERROR_MEDIA_NOT_AVAILABLE: ::DWORD = 4318;
+pub const ERROR_DEVICE_NOT_AVAILABLE: ::DWORD = 4319;
+pub const ERROR_REQUEST_REFUSED: ::DWORD = 4320;
+pub const ERROR_INVALID_DRIVE_OBJECT: ::DWORD = 4321;
+pub const ERROR_LIBRARY_FULL: ::DWORD = 4322;
+pub const ERROR_MEDIUM_NOT_ACCESSIBLE: ::DWORD = 4323;
+pub const ERROR_UNABLE_TO_LOAD_MEDIUM: ::DWORD = 4324;
+pub const ERROR_UNABLE_TO_INVENTORY_DRIVE: ::DWORD = 4325;
+pub const ERROR_UNABLE_TO_INVENTORY_SLOT: ::DWORD = 4326;
+pub const ERROR_UNABLE_TO_INVENTORY_TRANSPORT: ::DWORD = 4327;
+pub const ERROR_TRANSPORT_FULL: ::DWORD = 4328;
+pub const ERROR_CONTROLLING_IEPORT: ::DWORD = 4329;
+pub const ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA: ::DWORD = 4330;
+pub const ERROR_CLEANER_SLOT_SET: ::DWORD = 4331;
+pub const ERROR_CLEANER_SLOT_NOT_SET: ::DWORD = 4332;
+pub const ERROR_CLEANER_CARTRIDGE_SPENT: ::DWORD = 4333;
+pub const ERROR_UNEXPECTED_OMID: ::DWORD = 4334;
+pub const ERROR_CANT_DELETE_LAST_ITEM: ::DWORD = 4335;
+pub const ERROR_MESSAGE_EXCEEDS_MAX_SIZE: ::DWORD = 4336;
+pub const ERROR_VOLUME_CONTAINS_SYS_FILES: ::DWORD = 4337;
+pub const ERROR_INDIGENOUS_TYPE: ::DWORD = 4338;
+pub const ERROR_NO_SUPPORTING_DRIVES: ::DWORD = 4339;
+pub const ERROR_CLEANER_CARTRIDGE_INSTALLED: ::DWORD = 4340;
+pub const ERROR_IEPORT_FULL: ::DWORD = 4341;
+pub const ERROR_FILE_OFFLINE: ::DWORD = 4350;
+pub const ERROR_REMOTE_STORAGE_NOT_ACTIVE: ::DWORD = 4351;
+pub const ERROR_REMOTE_STORAGE_MEDIA_ERROR: ::DWORD = 4352;
+pub const ERROR_NOT_A_REPARSE_POINT: ::DWORD = 4390;
+pub const ERROR_REPARSE_ATTRIBUTE_CONFLICT: ::DWORD = 4391;
+pub const ERROR_INVALID_REPARSE_DATA: ::DWORD = 4392;
+pub const ERROR_REPARSE_TAG_INVALID: ::DWORD = 4393;
+pub const ERROR_REPARSE_TAG_MISMATCH: ::DWORD = 4394;
+pub const ERROR_APP_DATA_NOT_FOUND: ::DWORD = 4400;
+pub const ERROR_APP_DATA_EXPIRED: ::DWORD = 4401;
+pub const ERROR_APP_DATA_CORRUPT: ::DWORD = 4402;
+pub const ERROR_APP_DATA_LIMIT_EXCEEDED: ::DWORD = 4403;
+pub const ERROR_APP_DATA_REBOOT_REQUIRED: ::DWORD = 4404;
+pub const ERROR_SECUREBOOT_ROLLBACK_DETECTED: ::DWORD = 4420;
+pub const ERROR_SECUREBOOT_POLICY_VIOLATION: ::DWORD = 4421;
+pub const ERROR_SECUREBOOT_INVALID_POLICY: ::DWORD = 4422;
+pub const ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND: ::DWORD = 4423;
+pub const ERROR_SECUREBOOT_POLICY_NOT_SIGNED: ::DWORD = 4424;
+pub const ERROR_SECUREBOOT_NOT_ENABLED: ::DWORD = 4425;
+pub const ERROR_SECUREBOOT_FILE_REPLACED: ::DWORD = 4426;
+pub const ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED: ::DWORD = 4440;
+pub const ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED: ::DWORD = 4441;
+pub const ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED: ::DWORD = 4442;
+pub const ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED: ::DWORD = 4443;
+pub const ERROR_VOLUME_NOT_SIS_ENABLED: ::DWORD = 4500;
+pub const ERROR_DEPENDENT_RESOURCE_EXISTS: ::DWORD = 5001;
+pub const ERROR_DEPENDENCY_NOT_FOUND: ::DWORD = 5002;
+pub const ERROR_DEPENDENCY_ALREADY_EXISTS: ::DWORD = 5003;
+pub const ERROR_RESOURCE_NOT_ONLINE: ::DWORD = 5004;
+pub const ERROR_HOST_NODE_NOT_AVAILABLE: ::DWORD = 5005;
+pub const ERROR_RESOURCE_NOT_AVAILABLE: ::DWORD = 5006;
+pub const ERROR_RESOURCE_NOT_FOUND: ::DWORD = 5007;
+pub const ERROR_SHUTDOWN_CLUSTER: ::DWORD = 5008;
+pub const ERROR_CANT_EVICT_ACTIVE_NODE: ::DWORD = 5009;
+pub const ERROR_OBJECT_ALREADY_EXISTS: ::DWORD = 5010;
+pub const ERROR_OBJECT_IN_LIST: ::DWORD = 5011;
+pub const ERROR_GROUP_NOT_AVAILABLE: ::DWORD = 5012;
+pub const ERROR_GROUP_NOT_FOUND: ::DWORD = 5013;
+pub const ERROR_GROUP_NOT_ONLINE: ::DWORD = 5014;
+pub const ERROR_HOST_NODE_NOT_RESOURCE_OWNER: ::DWORD = 5015;
+pub const ERROR_HOST_NODE_NOT_GROUP_OWNER: ::DWORD = 5016;
+pub const ERROR_RESMON_CREATE_FAILED: ::DWORD = 5017;
+pub const ERROR_RESMON_ONLINE_FAILED: ::DWORD = 5018;
+pub const ERROR_RESOURCE_ONLINE: ::DWORD = 5019;
+pub const ERROR_QUORUM_RESOURCE: ::DWORD = 5020;
+pub const ERROR_NOT_QUORUM_CAPABLE: ::DWORD = 5021;
+pub const ERROR_CLUSTER_SHUTTING_DOWN: ::DWORD = 5022;
+pub const ERROR_INVALID_STATE: ::DWORD = 5023;
+pub const ERROR_RESOURCE_PROPERTIES_STORED: ::DWORD = 5024;
+pub const ERROR_NOT_QUORUM_CLASS: ::DWORD = 5025;
+pub const ERROR_CORE_RESOURCE: ::DWORD = 5026;
+pub const ERROR_QUORUM_RESOURCE_ONLINE_FAILED: ::DWORD = 5027;
+pub const ERROR_QUORUMLOG_OPEN_FAILED: ::DWORD = 5028;
+pub const ERROR_CLUSTERLOG_CORRUPT: ::DWORD = 5029;
+pub const ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE: ::DWORD = 5030;
+pub const ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE: ::DWORD = 5031;
+pub const ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND: ::DWORD = 5032;
+pub const ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE: ::DWORD = 5033;
+pub const ERROR_QUORUM_OWNER_ALIVE: ::DWORD = 5034;
+pub const ERROR_NETWORK_NOT_AVAILABLE: ::DWORD = 5035;
+pub const ERROR_NODE_NOT_AVAILABLE: ::DWORD = 5036;
+pub const ERROR_ALL_NODES_NOT_AVAILABLE: ::DWORD = 5037;
+pub const ERROR_RESOURCE_FAILED: ::DWORD = 5038;
+pub const ERROR_CLUSTER_INVALID_NODE: ::DWORD = 5039;
+pub const ERROR_CLUSTER_NODE_EXISTS: ::DWORD = 5040;
+pub const ERROR_CLUSTER_JOIN_IN_PROGRESS: ::DWORD = 5041;
+pub const ERROR_CLUSTER_NODE_NOT_FOUND: ::DWORD = 5042;
+pub const ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND: ::DWORD = 5043;
+pub const ERROR_CLUSTER_NETWORK_EXISTS: ::DWORD = 5044;
+pub const ERROR_CLUSTER_NETWORK_NOT_FOUND: ::DWORD = 5045;
+pub const ERROR_CLUSTER_NETINTERFACE_EXISTS: ::DWORD = 5046;
+pub const ERROR_CLUSTER_NETINTERFACE_NOT_FOUND: ::DWORD = 5047;
+pub const ERROR_CLUSTER_INVALID_REQUEST: ::DWORD = 5048;
+pub const ERROR_CLUSTER_INVALID_NETWORK_PROVIDER: ::DWORD = 5049;
+pub const ERROR_CLUSTER_NODE_DOWN: ::DWORD = 5050;
+pub const ERROR_CLUSTER_NODE_UNREACHABLE: ::DWORD = 5051;
+pub const ERROR_CLUSTER_NODE_NOT_MEMBER: ::DWORD = 5052;
+pub const ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS: ::DWORD = 5053;
+pub const ERROR_CLUSTER_INVALID_NETWORK: ::DWORD = 5054;
+pub const ERROR_CLUSTER_NODE_UP: ::DWORD = 5056;
+pub const ERROR_CLUSTER_IPADDR_IN_USE: ::DWORD = 5057;
+pub const ERROR_CLUSTER_NODE_NOT_PAUSED: ::DWORD = 5058;
+pub const ERROR_CLUSTER_NO_SECURITY_CONTEXT: ::DWORD = 5059;
+pub const ERROR_CLUSTER_NETWORK_NOT_INTERNAL: ::DWORD = 5060;
+pub const ERROR_CLUSTER_NODE_ALREADY_UP: ::DWORD = 5061;
+pub const ERROR_CLUSTER_NODE_ALREADY_DOWN: ::DWORD = 5062;
+pub const ERROR_CLUSTER_NETWORK_ALREADY_ONLINE: ::DWORD = 5063;
+pub const ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE: ::DWORD = 5064;
+pub const ERROR_CLUSTER_NODE_ALREADY_MEMBER: ::DWORD = 5065;
+pub const ERROR_CLUSTER_LAST_INTERNAL_NETWORK: ::DWORD = 5066;
+pub const ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS: ::DWORD = 5067;
+pub const ERROR_INVALID_OPERATION_ON_QUORUM: ::DWORD = 5068;
+pub const ERROR_DEPENDENCY_NOT_ALLOWED: ::DWORD = 5069;
+pub const ERROR_CLUSTER_NODE_PAUSED: ::DWORD = 5070;
+pub const ERROR_NODE_CANT_HOST_RESOURCE: ::DWORD = 5071;
+pub const ERROR_CLUSTER_NODE_NOT_READY: ::DWORD = 5072;
+pub const ERROR_CLUSTER_NODE_SHUTTING_DOWN: ::DWORD = 5073;
+pub const ERROR_CLUSTER_JOIN_ABORTED: ::DWORD = 5074;
+pub const ERROR_CLUSTER_INCOMPATIBLE_VERSIONS: ::DWORD = 5075;
+pub const ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED: ::DWORD = 5076;
+pub const ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED: ::DWORD = 5077;
+pub const ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND: ::DWORD = 5078;
+pub const ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED: ::DWORD = 5079;
+pub const ERROR_CLUSTER_RESNAME_NOT_FOUND: ::DWORD = 5080;
+pub const ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED: ::DWORD = 5081;
+pub const ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST: ::DWORD = 5082;
+pub const ERROR_CLUSTER_DATABASE_SEQMISMATCH: ::DWORD = 5083;
+pub const ERROR_RESMON_INVALID_STATE: ::DWORD = 5084;
+pub const ERROR_CLUSTER_GUM_NOT_LOCKER: ::DWORD = 5085;
+pub const ERROR_QUORUM_DISK_NOT_FOUND: ::DWORD = 5086;
+pub const ERROR_DATABASE_BACKUP_CORRUPT: ::DWORD = 5087;
+pub const ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT: ::DWORD = 5088;
+pub const ERROR_RESOURCE_PROPERTY_UNCHANGEABLE: ::DWORD = 5089;
+pub const ERROR_NO_ADMIN_ACCESS_POINT: ::DWORD = 5090;
+pub const ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE: ::DWORD = 5890;
+pub const ERROR_CLUSTER_QUORUMLOG_NOT_FOUND: ::DWORD = 5891;
+pub const ERROR_CLUSTER_MEMBERSHIP_HALT: ::DWORD = 5892;
+pub const ERROR_CLUSTER_INSTANCE_ID_MISMATCH: ::DWORD = 5893;
+pub const ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP: ::DWORD = 5894;
+pub const ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH: ::DWORD = 5895;
+pub const ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP: ::DWORD = 5896;
+pub const ERROR_CLUSTER_PARAMETER_MISMATCH: ::DWORD = 5897;
+pub const ERROR_NODE_CANNOT_BE_CLUSTERED: ::DWORD = 5898;
+pub const ERROR_CLUSTER_WRONG_OS_VERSION: ::DWORD = 5899;
+pub const ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME: ::DWORD = 5900;
+pub const ERROR_CLUSCFG_ALREADY_COMMITTED: ::DWORD = 5901;
+pub const ERROR_CLUSCFG_ROLLBACK_FAILED: ::DWORD = 5902;
+pub const ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT: ::DWORD = 5903;
+pub const ERROR_CLUSTER_OLD_VERSION: ::DWORD = 5904;
+pub const ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME: ::DWORD = 5905;
+pub const ERROR_CLUSTER_NO_NET_ADAPTERS: ::DWORD = 5906;
+pub const ERROR_CLUSTER_POISONED: ::DWORD = 5907;
+pub const ERROR_CLUSTER_GROUP_MOVING: ::DWORD = 5908;
+pub const ERROR_CLUSTER_RESOURCE_TYPE_BUSY: ::DWORD = 5909;
+pub const ERROR_RESOURCE_CALL_TIMED_OUT: ::DWORD = 5910;
+pub const ERROR_INVALID_CLUSTER_IPV6_ADDRESS: ::DWORD = 5911;
+pub const ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION: ::DWORD = 5912;
+pub const ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS: ::DWORD = 5913;
+pub const ERROR_CLUSTER_PARTIAL_SEND: ::DWORD = 5914;
+pub const ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION: ::DWORD = 5915;
+pub const ERROR_CLUSTER_INVALID_STRING_TERMINATION: ::DWORD = 5916;
+pub const ERROR_CLUSTER_INVALID_STRING_FORMAT: ::DWORD = 5917;
+pub const ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS: ::DWORD = 5918;
+pub const ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS: ::DWORD = 5919;
+pub const ERROR_CLUSTER_NULL_DATA: ::DWORD = 5920;
+pub const ERROR_CLUSTER_PARTIAL_READ: ::DWORD = 5921;
+pub const ERROR_CLUSTER_PARTIAL_WRITE: ::DWORD = 5922;
+pub const ERROR_CLUSTER_CANT_DESERIALIZE_DATA: ::DWORD = 5923;
+pub const ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT: ::DWORD = 5924;
+pub const ERROR_CLUSTER_NO_QUORUM: ::DWORD = 5925;
+pub const ERROR_CLUSTER_INVALID_IPV6_NETWORK: ::DWORD = 5926;
+pub const ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK: ::DWORD = 5927;
+pub const ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP: ::DWORD = 5928;
+pub const ERROR_DEPENDENCY_TREE_TOO_COMPLEX: ::DWORD = 5929;
+pub const ERROR_EXCEPTION_IN_RESOURCE_CALL: ::DWORD = 5930;
+pub const ERROR_CLUSTER_RHS_FAILED_INITIALIZATION: ::DWORD = 5931;
+pub const ERROR_CLUSTER_NOT_INSTALLED: ::DWORD = 5932;
+pub const ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE: ::DWORD = 5933;
+pub const ERROR_CLUSTER_MAX_NODES_IN_CLUSTER: ::DWORD = 5934;
+pub const ERROR_CLUSTER_TOO_MANY_NODES: ::DWORD = 5935;
+pub const ERROR_CLUSTER_OBJECT_ALREADY_USED: ::DWORD = 5936;
+pub const ERROR_NONCORE_GROUPS_FOUND: ::DWORD = 5937;
+pub const ERROR_FILE_SHARE_RESOURCE_CONFLICT: ::DWORD = 5938;
+pub const ERROR_CLUSTER_EVICT_INVALID_REQUEST: ::DWORD = 5939;
+pub const ERROR_CLUSTER_SINGLETON_RESOURCE: ::DWORD = 5940;
+pub const ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE: ::DWORD = 5941;
+pub const ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED: ::DWORD = 5942;
+pub const ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR: ::DWORD = 5943;
+pub const ERROR_CLUSTER_GROUP_BUSY: ::DWORD = 5944;
+pub const ERROR_CLUSTER_NOT_SHARED_VOLUME: ::DWORD = 5945;
+pub const ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR: ::DWORD = 5946;
+pub const ERROR_CLUSTER_SHARED_VOLUMES_IN_USE: ::DWORD = 5947;
+pub const ERROR_CLUSTER_USE_SHARED_VOLUMES_API: ::DWORD = 5948;
+pub const ERROR_CLUSTER_BACKUP_IN_PROGRESS: ::DWORD = 5949;
+pub const ERROR_NON_CSV_PATH: ::DWORD = 5950;
+pub const ERROR_CSV_VOLUME_NOT_LOCAL: ::DWORD = 5951;
+pub const ERROR_CLUSTER_WATCHDOG_TERMINATING: ::DWORD = 5952;
+pub const ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES: ::DWORD = 5953;
+pub const ERROR_CLUSTER_INVALID_NODE_WEIGHT: ::DWORD = 5954;
+pub const ERROR_CLUSTER_RESOURCE_VETOED_CALL: ::DWORD = 5955;
+pub const ERROR_RESMON_SYSTEM_RESOURCES_LACKING: ::DWORD = 5956;
+pub const ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION: ::DWORD = 5957;
+pub const ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE: ::DWORD = 5958;
+pub const ERROR_CLUSTER_GROUP_QUEUED: ::DWORD = 5959;
+pub const ERROR_CLUSTER_RESOURCE_LOCKED_STATUS: ::DWORD = 5960;
+pub const ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED: ::DWORD = 5961;
+pub const ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS: ::DWORD = 5962;
+pub const ERROR_CLUSTER_DISK_NOT_CONNECTED: ::DWORD = 5963;
+pub const ERROR_DISK_NOT_CSV_CAPABLE: ::DWORD = 5964;
+pub const ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE: ::DWORD = 5965;
+pub const ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED: ::DWORD = 5966;
+pub const ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED: ::DWORD = 5967;
+pub const ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES: ::DWORD = 5968;
+pub const ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES: ::DWORD = 5969;
+pub const ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE: ::DWORD = 5970;
+pub const ERROR_CLUSTER_AFFINITY_CONFLICT: ::DWORD = 5971;
+pub const ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE: ::DWORD = 5972;
+pub const ERROR_ENCRYPTION_FAILED: ::DWORD = 6000;
+pub const ERROR_DECRYPTION_FAILED: ::DWORD = 6001;
+pub const ERROR_FILE_ENCRYPTED: ::DWORD = 6002;
+pub const ERROR_NO_RECOVERY_POLICY: ::DWORD = 6003;
+pub const ERROR_NO_EFS: ::DWORD = 6004;
+pub const ERROR_WRONG_EFS: ::DWORD = 6005;
+pub const ERROR_NO_USER_KEYS: ::DWORD = 6006;
+pub const ERROR_FILE_NOT_ENCRYPTED: ::DWORD = 6007;
+pub const ERROR_NOT_EXPORT_FORMAT: ::DWORD = 6008;
+pub const ERROR_FILE_READ_ONLY: ::DWORD = 6009;
+pub const ERROR_DIR_EFS_DISALLOWED: ::DWORD = 6010;
+pub const ERROR_EFS_SERVER_NOT_TRUSTED: ::DWORD = 6011;
+pub const ERROR_BAD_RECOVERY_POLICY: ::DWORD = 6012;
+pub const ERROR_EFS_ALG_BLOB_TOO_BIG: ::DWORD = 6013;
+pub const ERROR_VOLUME_NOT_SUPPORT_EFS: ::DWORD = 6014;
+pub const ERROR_EFS_DISABLED: ::DWORD = 6015;
+pub const ERROR_EFS_VERSION_NOT_SUPPORT: ::DWORD = 6016;
+pub const ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE: ::DWORD = 6017;
+pub const ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER: ::DWORD = 6018;
+pub const ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE: ::DWORD = 6019;
+pub const ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE: ::DWORD = 6020;
+pub const ERROR_CS_ENCRYPTION_FILE_NOT_CSE: ::DWORD = 6021;
+pub const ERROR_ENCRYPTION_POLICY_DENIES_OPERATION: ::DWORD = 6022;
+pub const ERROR_NO_BROWSER_SERVERS_FOUND: ::DWORD = 6118;
+pub const SCHED_E_SERVICE_NOT_LOCALSYSTEM: ::DWORD = 6200;
+pub const ERROR_LOG_SECTOR_INVALID: ::DWORD = 6600;
+pub const ERROR_LOG_SECTOR_PARITY_INVALID: ::DWORD = 6601;
+pub const ERROR_LOG_SECTOR_REMAPPED: ::DWORD = 6602;
+pub const ERROR_LOG_BLOCK_INCOMPLETE: ::DWORD = 6603;
+pub const ERROR_LOG_INVALID_RANGE: ::DWORD = 6604;
+pub const ERROR_LOG_BLOCKS_EXHAUSTED: ::DWORD = 6605;
+pub const ERROR_LOG_READ_CONTEXT_INVALID: ::DWORD = 6606;
+pub const ERROR_LOG_RESTART_INVALID: ::DWORD = 6607;
+pub const ERROR_LOG_BLOCK_VERSION: ::DWORD = 6608;
+pub const ERROR_LOG_BLOCK_INVALID: ::DWORD = 6609;
+pub const ERROR_LOG_READ_MODE_INVALID: ::DWORD = 6610;
+pub const ERROR_LOG_NO_RESTART: ::DWORD = 6611;
+pub const ERROR_LOG_METADATA_CORRUPT: ::DWORD = 6612;
+pub const ERROR_LOG_METADATA_INVALID: ::DWORD = 6613;
+pub const ERROR_LOG_METADATA_INCONSISTENT: ::DWORD = 6614;
+pub const ERROR_LOG_RESERVATION_INVALID: ::DWORD = 6615;
+pub const ERROR_LOG_CANT_DELETE: ::DWORD = 6616;
+pub const ERROR_LOG_CONTAINER_LIMIT_EXCEEDED: ::DWORD = 6617;
+pub const ERROR_LOG_START_OF_LOG: ::DWORD = 6618;
+pub const ERROR_LOG_POLICY_ALREADY_INSTALLED: ::DWORD = 6619;
+pub const ERROR_LOG_POLICY_NOT_INSTALLED: ::DWORD = 6620;
+pub const ERROR_LOG_POLICY_INVALID: ::DWORD = 6621;
+pub const ERROR_LOG_POLICY_CONFLICT: ::DWORD = 6622;
+pub const ERROR_LOG_PINNED_ARCHIVE_TAIL: ::DWORD = 6623;
+pub const ERROR_LOG_RECORD_NONEXISTENT: ::DWORD = 6624;
+pub const ERROR_LOG_RECORDS_RESERVED_INVALID: ::DWORD = 6625;
+pub const ERROR_LOG_SPACE_RESERVED_INVALID: ::DWORD = 6626;
+pub const ERROR_LOG_TAIL_INVALID: ::DWORD = 6627;
+pub const ERROR_LOG_FULL: ::DWORD = 6628;
+pub const ERROR_COULD_NOT_RESIZE_LOG: ::DWORD = 6629;
+pub const ERROR_LOG_MULTIPLEXED: ::DWORD = 6630;
+pub const ERROR_LOG_DEDICATED: ::DWORD = 6631;
+pub const ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS: ::DWORD = 6632;
+pub const ERROR_LOG_ARCHIVE_IN_PROGRESS: ::DWORD = 6633;
+pub const ERROR_LOG_EPHEMERAL: ::DWORD = 6634;
+pub const ERROR_LOG_NOT_ENOUGH_CONTAINERS: ::DWORD = 6635;
+pub const ERROR_LOG_CLIENT_ALREADY_REGISTERED: ::DWORD = 6636;
+pub const ERROR_LOG_CLIENT_NOT_REGISTERED: ::DWORD = 6637;
+pub const ERROR_LOG_FULL_HANDLER_IN_PROGRESS: ::DWORD = 6638;
+pub const ERROR_LOG_CONTAINER_READ_FAILED: ::DWORD = 6639;
+pub const ERROR_LOG_CONTAINER_WRITE_FAILED: ::DWORD = 6640;
+pub const ERROR_LOG_CONTAINER_OPEN_FAILED: ::DWORD = 6641;
+pub const ERROR_LOG_CONTAINER_STATE_INVALID: ::DWORD = 6642;
+pub const ERROR_LOG_STATE_INVALID: ::DWORD = 6643;
+pub const ERROR_LOG_PINNED: ::DWORD = 6644;
+pub const ERROR_LOG_METADATA_FLUSH_FAILED: ::DWORD = 6645;
+pub const ERROR_LOG_INCONSISTENT_SECURITY: ::DWORD = 6646;
+pub const ERROR_LOG_APPENDED_FLUSH_FAILED: ::DWORD = 6647;
+pub const ERROR_LOG_PINNED_RESERVATION: ::DWORD = 6648;
+pub const ERROR_INVALID_TRANSACTION: ::DWORD = 6700;
+pub const ERROR_TRANSACTION_NOT_ACTIVE: ::DWORD = 6701;
+pub const ERROR_TRANSACTION_REQUEST_NOT_VALID: ::DWORD = 6702;
+pub const ERROR_TRANSACTION_NOT_REQUESTED: ::DWORD = 6703;
+pub const ERROR_TRANSACTION_ALREADY_ABORTED: ::DWORD = 6704;
+pub const ERROR_TRANSACTION_ALREADY_COMMITTED: ::DWORD = 6705;
+pub const ERROR_TM_INITIALIZATION_FAILED: ::DWORD = 6706;
+pub const ERROR_RESOURCEMANAGER_READ_ONLY: ::DWORD = 6707;
+pub const ERROR_TRANSACTION_NOT_JOINED: ::DWORD = 6708;
+pub const ERROR_TRANSACTION_SUPERIOR_EXISTS: ::DWORD = 6709;
+pub const ERROR_CRM_PROTOCOL_ALREADY_EXISTS: ::DWORD = 6710;
+pub const ERROR_TRANSACTION_PROPAGATION_FAILED: ::DWORD = 6711;
+pub const ERROR_CRM_PROTOCOL_NOT_FOUND: ::DWORD = 6712;
+pub const ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER: ::DWORD = 6713;
+pub const ERROR_CURRENT_TRANSACTION_NOT_VALID: ::DWORD = 6714;
+pub const ERROR_TRANSACTION_NOT_FOUND: ::DWORD = 6715;
+pub const ERROR_RESOURCEMANAGER_NOT_FOUND: ::DWORD = 6716;
+pub const ERROR_ENLISTMENT_NOT_FOUND: ::DWORD = 6717;
+pub const ERROR_TRANSACTIONMANAGER_NOT_FOUND: ::DWORD = 6718;
+pub const ERROR_TRANSACTIONMANAGER_NOT_ONLINE: ::DWORD = 6719;
+pub const ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION: ::DWORD = 6720;
+pub const ERROR_TRANSACTION_NOT_ROOT: ::DWORD = 6721;
+pub const ERROR_TRANSACTION_OBJECT_EXPIRED: ::DWORD = 6722;
+pub const ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED: ::DWORD = 6723;
+pub const ERROR_TRANSACTION_RECORD_TOO_LONG: ::DWORD = 6724;
+pub const ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED: ::DWORD = 6725;
+pub const ERROR_TRANSACTION_INTEGRITY_VIOLATED: ::DWORD = 6726;
+pub const ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH: ::DWORD = 6727;
+pub const ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT: ::DWORD = 6728;
+pub const ERROR_TRANSACTION_MUST_WRITETHROUGH: ::DWORD = 6729;
+pub const ERROR_TRANSACTION_NO_SUPERIOR: ::DWORD = 6730;
+pub const ERROR_HEURISTIC_DAMAGE_POSSIBLE: ::DWORD = 6731;
+pub const ERROR_TRANSACTIONAL_CONFLICT: ::DWORD = 6800;
+pub const ERROR_RM_NOT_ACTIVE: ::DWORD = 6801;
+pub const ERROR_RM_METADATA_CORRUPT: ::DWORD = 6802;
+pub const ERROR_DIRECTORY_NOT_RM: ::DWORD = 6803;
+pub const ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE: ::DWORD = 6805;
+pub const ERROR_LOG_RESIZE_INVALID_SIZE: ::DWORD = 6806;
+pub const ERROR_OBJECT_NO_LONGER_EXISTS: ::DWORD = 6807;
+pub const ERROR_STREAM_MINIVERSION_NOT_FOUND: ::DWORD = 6808;
+pub const ERROR_STREAM_MINIVERSION_NOT_VALID: ::DWORD = 6809;
+pub const ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION: ::DWORD = 6810;
+pub const ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT: ::DWORD = 6811;
+pub const ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS: ::DWORD = 6812;
+pub const ERROR_REMOTE_FILE_VERSION_MISMATCH: ::DWORD = 6814;
+pub const ERROR_HANDLE_NO_LONGER_VALID: ::DWORD = 6815;
+pub const ERROR_NO_TXF_METADATA: ::DWORD = 6816;
+pub const ERROR_LOG_CORRUPTION_DETECTED: ::DWORD = 6817;
+pub const ERROR_CANT_RECOVER_WITH_HANDLE_OPEN: ::DWORD = 6818;
+pub const ERROR_RM_DISCONNECTED: ::DWORD = 6819;
+pub const ERROR_ENLISTMENT_NOT_SUPERIOR: ::DWORD = 6820;
+pub const ERROR_RECOVERY_NOT_NEEDED: ::DWORD = 6821;
+pub const ERROR_RM_ALREADY_STARTED: ::DWORD = 6822;
+pub const ERROR_FILE_IDENTITY_NOT_PERSISTENT: ::DWORD = 6823;
+pub const ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY: ::DWORD = 6824;
+pub const ERROR_CANT_CROSS_RM_BOUNDARY: ::DWORD = 6825;
+pub const ERROR_TXF_DIR_NOT_EMPTY: ::DWORD = 6826;
+pub const ERROR_INDOUBT_TRANSACTIONS_EXIST: ::DWORD = 6827;
+pub const ERROR_TM_VOLATILE: ::DWORD = 6828;
+pub const ERROR_ROLLBACK_TIMER_EXPIRED: ::DWORD = 6829;
+pub const ERROR_TXF_ATTRIBUTE_CORRUPT: ::DWORD = 6830;
+pub const ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION: ::DWORD = 6831;
+pub const ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED: ::DWORD = 6832;
+pub const ERROR_LOG_GROWTH_FAILED: ::DWORD = 6833;
+pub const ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE: ::DWORD = 6834;
+pub const ERROR_TXF_METADATA_ALREADY_PRESENT: ::DWORD = 6835;
+pub const ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET: ::DWORD = 6836;
+pub const ERROR_TRANSACTION_REQUIRED_PROMOTION: ::DWORD = 6837;
+pub const ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION: ::DWORD = 6838;
+pub const ERROR_TRANSACTIONS_NOT_FROZEN: ::DWORD = 6839;
+pub const ERROR_TRANSACTION_FREEZE_IN_PROGRESS: ::DWORD = 6840;
+pub const ERROR_NOT_SNAPSHOT_VOLUME: ::DWORD = 6841;
+pub const ERROR_NO_SAVEPOINT_WITH_OPEN_FILES: ::DWORD = 6842;
+pub const ERROR_DATA_LOST_REPAIR: ::DWORD = 6843;
+pub const ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION: ::DWORD = 6844;
+pub const ERROR_TM_IDENTITY_MISMATCH: ::DWORD = 6845;
+pub const ERROR_FLOATED_SECTION: ::DWORD = 6846;
+pub const ERROR_CANNOT_ACCEPT_TRANSACTED_WORK: ::DWORD = 6847;
+pub const ERROR_CANNOT_ABORT_TRANSACTIONS: ::DWORD = 6848;
+pub const ERROR_BAD_CLUSTERS: ::DWORD = 6849;
+pub const ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION: ::DWORD = 6850;
+pub const ERROR_VOLUME_DIRTY: ::DWORD = 6851;
+pub const ERROR_NO_LINK_TRACKING_IN_TRANSACTION: ::DWORD = 6852;
+pub const ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION: ::DWORD = 6853;
+pub const ERROR_EXPIRED_HANDLE: ::DWORD = 6854;
+pub const ERROR_TRANSACTION_NOT_ENLISTED: ::DWORD = 6855;
+pub const ERROR_CTX_WINSTATION_NAME_INVALID: ::DWORD = 7001;
+pub const ERROR_CTX_INVALID_PD: ::DWORD = 7002;
+pub const ERROR_CTX_PD_NOT_FOUND: ::DWORD = 7003;
+pub const ERROR_CTX_WD_NOT_FOUND: ::DWORD = 7004;
+pub const ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY: ::DWORD = 7005;
+pub const ERROR_CTX_SERVICE_NAME_COLLISION: ::DWORD = 7006;
+pub const ERROR_CTX_CLOSE_PENDING: ::DWORD = 7007;
+pub const ERROR_CTX_NO_OUTBUF: ::DWORD = 7008;
+pub const ERROR_CTX_MODEM_INF_NOT_FOUND: ::DWORD = 7009;
+pub const ERROR_CTX_INVALID_MODEMNAME: ::DWORD = 7010;
+pub const ERROR_CTX_MODEM_RESPONSE_ERROR: ::DWORD = 7011;
+pub const ERROR_CTX_MODEM_RESPONSE_TIMEOUT: ::DWORD = 7012;
+pub const ERROR_CTX_MODEM_RESPONSE_NO_CARRIER: ::DWORD = 7013;
+pub const ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE: ::DWORD = 7014;
+pub const ERROR_CTX_MODEM_RESPONSE_BUSY: ::DWORD = 7015;
+pub const ERROR_CTX_MODEM_RESPONSE_VOICE: ::DWORD = 7016;
+pub const ERROR_CTX_TD_ERROR: ::DWORD = 7017;
+pub const ERROR_CTX_WINSTATION_NOT_FOUND: ::DWORD = 7022;
+pub const ERROR_CTX_WINSTATION_ALREADY_EXISTS: ::DWORD = 7023;
+pub const ERROR_CTX_WINSTATION_BUSY: ::DWORD = 7024;
+pub const ERROR_CTX_BAD_VIDEO_MODE: ::DWORD = 7025;
+pub const ERROR_CTX_GRAPHICS_INVALID: ::DWORD = 7035;
+pub const ERROR_CTX_LOGON_DISABLED: ::DWORD = 7037;
+pub const ERROR_CTX_NOT_CONSOLE: ::DWORD = 7038;
+pub const ERROR_CTX_CLIENT_QUERY_TIMEOUT: ::DWORD = 7040;
+pub const ERROR_CTX_CONSOLE_DISCONNECT: ::DWORD = 7041;
+pub const ERROR_CTX_CONSOLE_CONNECT: ::DWORD = 7042;
+pub const ERROR_CTX_SHADOW_DENIED: ::DWORD = 7044;
+pub const ERROR_CTX_WINSTATION_ACCESS_DENIED: ::DWORD = 7045;
+pub const ERROR_CTX_INVALID_WD: ::DWORD = 7049;
+pub const ERROR_CTX_SHADOW_INVALID: ::DWORD = 7050;
+pub const ERROR_CTX_SHADOW_DISABLED: ::DWORD = 7051;
+pub const ERROR_CTX_CLIENT_LICENSE_IN_USE: ::DWORD = 7052;
+pub const ERROR_CTX_CLIENT_LICENSE_NOT_SET: ::DWORD = 7053;
+pub const ERROR_CTX_LICENSE_NOT_AVAILABLE: ::DWORD = 7054;
+pub const ERROR_CTX_LICENSE_CLIENT_INVALID: ::DWORD = 7055;
+pub const ERROR_CTX_LICENSE_EXPIRED: ::DWORD = 7056;
+pub const ERROR_CTX_SHADOW_NOT_RUNNING: ::DWORD = 7057;
+pub const ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE: ::DWORD = 7058;
+pub const ERROR_ACTIVATION_COUNT_EXCEEDED: ::DWORD = 7059;
+pub const ERROR_CTX_WINSTATIONS_DISABLED: ::DWORD = 7060;
+pub const ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED: ::DWORD = 7061;
+pub const ERROR_CTX_SESSION_IN_USE: ::DWORD = 7062;
+pub const ERROR_CTX_NO_FORCE_LOGOFF: ::DWORD = 7063;
+pub const ERROR_CTX_ACCOUNT_RESTRICTION: ::DWORD = 7064;
+pub const ERROR_RDP_PROTOCOL_ERROR: ::DWORD = 7065;
+pub const ERROR_CTX_CDM_CONNECT: ::DWORD = 7066;
+pub const ERROR_CTX_CDM_DISCONNECT: ::DWORD = 7067;
+pub const ERROR_CTX_SECURITY_LAYER_ERROR: ::DWORD = 7068;
+pub const ERROR_TS_INCOMPATIBLE_SESSIONS: ::DWORD = 7069;
+pub const ERROR_TS_VIDEO_SUBSYSTEM_ERROR: ::DWORD = 7070;
+pub const FRS_ERR_INVALID_API_SEQUENCE: ::DWORD = 8001;
+pub const FRS_ERR_STARTING_SERVICE: ::DWORD = 8002;
+pub const FRS_ERR_STOPPING_SERVICE: ::DWORD = 8003;
+pub const FRS_ERR_INTERNAL_API: ::DWORD = 8004;
+pub const FRS_ERR_INTERNAL: ::DWORD = 8005;
+pub const FRS_ERR_SERVICE_COMM: ::DWORD = 8006;
+pub const FRS_ERR_INSUFFICIENT_PRIV: ::DWORD = 8007;
+pub const FRS_ERR_AUTHENTICATION: ::DWORD = 8008;
+pub const FRS_ERR_PARENT_INSUFFICIENT_PRIV: ::DWORD = 8009;
+pub const FRS_ERR_PARENT_AUTHENTICATION: ::DWORD = 8010;
+pub const FRS_ERR_CHILD_TO_PARENT_COMM: ::DWORD = 8011;
+pub const FRS_ERR_PARENT_TO_CHILD_COMM: ::DWORD = 8012;
+pub const FRS_ERR_SYSVOL_POPULATE: ::DWORD = 8013;
+pub const FRS_ERR_SYSVOL_POPULATE_TIMEOUT: ::DWORD = 8014;
+pub const FRS_ERR_SYSVOL_IS_BUSY: ::DWORD = 8015;
+pub const FRS_ERR_SYSVOL_DEMOTE: ::DWORD = 8016;
+pub const FRS_ERR_INVALID_SERVICE_PARAMETER: ::DWORD = 8017;
+pub const DS_S_SUCCESS: ::DWORD = NO_ERROR;
+pub const ERROR_DS_NOT_INSTALLED: ::DWORD = 8200;
+pub const ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY: ::DWORD = 8201;
+pub const ERROR_DS_NO_ATTRIBUTE_OR_VALUE: ::DWORD = 8202;
+pub const ERROR_DS_INVALID_ATTRIBUTE_SYNTAX: ::DWORD = 8203;
+pub const ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED: ::DWORD = 8204;
+pub const ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS: ::DWORD = 8205;
+pub const ERROR_DS_BUSY: ::DWORD = 8206;
+pub const ERROR_DS_UNAVAILABLE: ::DWORD = 8207;
+pub const ERROR_DS_NO_RIDS_ALLOCATED: ::DWORD = 8208;
+pub const ERROR_DS_NO_MORE_RIDS: ::DWORD = 8209;
+pub const ERROR_DS_INCORRECT_ROLE_OWNER: ::DWORD = 8210;
+pub const ERROR_DS_RIDMGR_INIT_ERROR: ::DWORD = 8211;
+pub const ERROR_DS_OBJ_CLASS_VIOLATION: ::DWORD = 8212;
+pub const ERROR_DS_CANT_ON_NON_LEAF: ::DWORD = 8213;
+pub const ERROR_DS_CANT_ON_RDN: ::DWORD = 8214;
+pub const ERROR_DS_CANT_MOD_OBJ_CLASS: ::DWORD = 8215;
+pub const ERROR_DS_CROSS_DOM_MOVE_ERROR: ::DWORD = 8216;
+pub const ERROR_DS_GC_NOT_AVAILABLE: ::DWORD = 8217;
+pub const ERROR_SHARED_POLICY: ::DWORD = 8218;
+pub const ERROR_POLICY_OBJECT_NOT_FOUND: ::DWORD = 8219;
+pub const ERROR_POLICY_ONLY_IN_DS: ::DWORD = 8220;
+pub const ERROR_PROMOTION_ACTIVE: ::DWORD = 8221;
+pub const ERROR_NO_PROMOTION_ACTIVE: ::DWORD = 8222;
+pub const ERROR_DS_OPERATIONS_ERROR: ::DWORD = 8224;
+pub const ERROR_DS_PROTOCOL_ERROR: ::DWORD = 8225;
+pub const ERROR_DS_TIMELIMIT_EXCEEDED: ::DWORD = 8226;
+pub const ERROR_DS_SIZELIMIT_EXCEEDED: ::DWORD = 8227;
+pub const ERROR_DS_ADMIN_LIMIT_EXCEEDED: ::DWORD = 8228;
+pub const ERROR_DS_COMPARE_FALSE: ::DWORD = 8229;
+pub const ERROR_DS_COMPARE_TRUE: ::DWORD = 8230;
+pub const ERROR_DS_AUTH_METHOD_NOT_SUPPORTED: ::DWORD = 8231;
+pub const ERROR_DS_STRONG_AUTH_REQUIRED: ::DWORD = 8232;
+pub const ERROR_DS_INAPPROPRIATE_AUTH: ::DWORD = 8233;
+pub const ERROR_DS_AUTH_UNKNOWN: ::DWORD = 8234;
+pub const ERROR_DS_REFERRAL: ::DWORD = 8235;
+pub const ERROR_DS_UNAVAILABLE_CRIT_EXTENSION: ::DWORD = 8236;
+pub const ERROR_DS_CONFIDENTIALITY_REQUIRED: ::DWORD = 8237;
+pub const ERROR_DS_INAPPROPRIATE_MATCHING: ::DWORD = 8238;
+pub const ERROR_DS_CONSTRAINT_VIOLATION: ::DWORD = 8239;
+pub const ERROR_DS_NO_SUCH_OBJECT: ::DWORD = 8240;
+pub const ERROR_DS_ALIAS_PROBLEM: ::DWORD = 8241;
+pub const ERROR_DS_INVALID_DN_SYNTAX: ::DWORD = 8242;
+pub const ERROR_DS_IS_LEAF: ::DWORD = 8243;
+pub const ERROR_DS_ALIAS_DEREF_PROBLEM: ::DWORD = 8244;
+pub const ERROR_DS_UNWILLING_TO_PERFORM: ::DWORD = 8245;
+pub const ERROR_DS_LOOP_DETECT: ::DWORD = 8246;
+pub const ERROR_DS_NAMING_VIOLATION: ::DWORD = 8247;
+pub const ERROR_DS_OBJECT_RESULTS_TOO_LARGE: ::DWORD = 8248;
+pub const ERROR_DS_AFFECTS_MULTIPLE_DSAS: ::DWORD = 8249;
+pub const ERROR_DS_SERVER_DOWN: ::DWORD = 8250;
+pub const ERROR_DS_LOCAL_ERROR: ::DWORD = 8251;
+pub const ERROR_DS_ENCODING_ERROR: ::DWORD = 8252;
+pub const ERROR_DS_DECODING_ERROR: ::DWORD = 8253;
+pub const ERROR_DS_FILTER_UNKNOWN: ::DWORD = 8254;
+pub const ERROR_DS_PARAM_ERROR: ::DWORD = 8255;
+pub const ERROR_DS_NOT_SUPPORTED: ::DWORD = 8256;
+pub const ERROR_DS_NO_RESULTS_RETURNED: ::DWORD = 8257;
+pub const ERROR_DS_CONTROL_NOT_FOUND: ::DWORD = 8258;
+pub const ERROR_DS_CLIENT_LOOP: ::DWORD = 8259;
+pub const ERROR_DS_REFERRAL_LIMIT_EXCEEDED: ::DWORD = 8260;
+pub const ERROR_DS_SORT_CONTROL_MISSING: ::DWORD = 8261;
+pub const ERROR_DS_OFFSET_RANGE_ERROR: ::DWORD = 8262;
+pub const ERROR_DS_RIDMGR_DISABLED: ::DWORD = 8263;
+pub const ERROR_DS_ROOT_MUST_BE_NC: ::DWORD = 8301;
+pub const ERROR_DS_ADD_REPLICA_INHIBITED: ::DWORD = 8302;
+pub const ERROR_DS_ATT_NOT_DEF_IN_SCHEMA: ::DWORD = 8303;
+pub const ERROR_DS_MAX_OBJ_SIZE_EXCEEDED: ::DWORD = 8304;
+pub const ERROR_DS_OBJ_STRING_NAME_EXISTS: ::DWORD = 8305;
+pub const ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA: ::DWORD = 8306;
+pub const ERROR_DS_RDN_DOESNT_MATCH_SCHEMA: ::DWORD = 8307;
+pub const ERROR_DS_NO_REQUESTED_ATTS_FOUND: ::DWORD = 8308;
+pub const ERROR_DS_USER_BUFFER_TO_SMALL: ::DWORD = 8309;
+pub const ERROR_DS_ATT_IS_NOT_ON_OBJ: ::DWORD = 8310;
+pub const ERROR_DS_ILLEGAL_MOD_OPERATION: ::DWORD = 8311;
+pub const ERROR_DS_OBJ_TOO_LARGE: ::DWORD = 8312;
+pub const ERROR_DS_BAD_INSTANCE_TYPE: ::DWORD = 8313;
+pub const ERROR_DS_MASTERDSA_REQUIRED: ::DWORD = 8314;
+pub const ERROR_DS_OBJECT_CLASS_REQUIRED: ::DWORD = 8315;
+pub const ERROR_DS_MISSING_REQUIRED_ATT: ::DWORD = 8316;
+pub const ERROR_DS_ATT_NOT_DEF_FOR_CLASS: ::DWORD = 8317;
+pub const ERROR_DS_ATT_ALREADY_EXISTS: ::DWORD = 8318;
+pub const ERROR_DS_CANT_ADD_ATT_VALUES: ::DWORD = 8320;
+pub const ERROR_DS_SINGLE_VALUE_CONSTRAINT: ::DWORD = 8321;
+pub const ERROR_DS_RANGE_CONSTRAINT: ::DWORD = 8322;
+pub const ERROR_DS_ATT_VAL_ALREADY_EXISTS: ::DWORD = 8323;
+pub const ERROR_DS_CANT_REM_MISSING_ATT: ::DWORD = 8324;
+pub const ERROR_DS_CANT_REM_MISSING_ATT_VAL: ::DWORD = 8325;
+pub const ERROR_DS_ROOT_CANT_BE_SUBREF: ::DWORD = 8326;
+pub const ERROR_DS_NO_CHAINING: ::DWORD = 8327;
+pub const ERROR_DS_NO_CHAINED_EVAL: ::DWORD = 8328;
+pub const ERROR_DS_NO_PARENT_OBJECT: ::DWORD = 8329;
+pub const ERROR_DS_PARENT_IS_AN_ALIAS: ::DWORD = 8330;
+pub const ERROR_DS_CANT_MIX_MASTER_AND_REPS: ::DWORD = 8331;
+pub const ERROR_DS_CHILDREN_EXIST: ::DWORD = 8332;
+pub const ERROR_DS_OBJ_NOT_FOUND: ::DWORD = 8333;
+pub const ERROR_DS_ALIASED_OBJ_MISSING: ::DWORD = 8334;
+pub const ERROR_DS_BAD_NAME_SYNTAX: ::DWORD = 8335;
+pub const ERROR_DS_ALIAS_POINTS_TO_ALIAS: ::DWORD = 8336;
+pub const ERROR_DS_CANT_DEREF_ALIAS: ::DWORD = 8337;
+pub const ERROR_DS_OUT_OF_SCOPE: ::DWORD = 8338;
+pub const ERROR_DS_OBJECT_BEING_REMOVED: ::DWORD = 8339;
+pub const ERROR_DS_CANT_DELETE_DSA_OBJ: ::DWORD = 8340;
+pub const ERROR_DS_GENERIC_ERROR: ::DWORD = 8341;
+pub const ERROR_DS_DSA_MUST_BE_INT_MASTER: ::DWORD = 8342;
+pub const ERROR_DS_CLASS_NOT_DSA: ::DWORD = 8343;
+pub const ERROR_DS_INSUFF_ACCESS_RIGHTS: ::DWORD = 8344;
+pub const ERROR_DS_ILLEGAL_SUPERIOR: ::DWORD = 8345;
+pub const ERROR_DS_ATTRIBUTE_OWNED_BY_SAM: ::DWORD = 8346;
+pub const ERROR_DS_NAME_TOO_MANY_PARTS: ::DWORD = 8347;
+pub const ERROR_DS_NAME_TOO_LONG: ::DWORD = 8348;
+pub const ERROR_DS_NAME_VALUE_TOO_LONG: ::DWORD = 8349;
+pub const ERROR_DS_NAME_UNPARSEABLE: ::DWORD = 8350;
+pub const ERROR_DS_NAME_TYPE_UNKNOWN: ::DWORD = 8351;
+pub const ERROR_DS_NOT_AN_OBJECT: ::DWORD = 8352;
+pub const ERROR_DS_SEC_DESC_TOO_SHORT: ::DWORD = 8353;
+pub const ERROR_DS_SEC_DESC_INVALID: ::DWORD = 8354;
+pub const ERROR_DS_NO_DELETED_NAME: ::DWORD = 8355;
+pub const ERROR_DS_SUBREF_MUST_HAVE_PARENT: ::DWORD = 8356;
+pub const ERROR_DS_NCNAME_MUST_BE_NC: ::DWORD = 8357;
+pub const ERROR_DS_CANT_ADD_SYSTEM_ONLY: ::DWORD = 8358;
+pub const ERROR_DS_CLASS_MUST_BE_CONCRETE: ::DWORD = 8359;
+pub const ERROR_DS_INVALID_DMD: ::DWORD = 8360;
+pub const ERROR_DS_OBJ_GUID_EXISTS: ::DWORD = 8361;
+pub const ERROR_DS_NOT_ON_BACKLINK: ::DWORD = 8362;
+pub const ERROR_DS_NO_CROSSREF_FOR_NC: ::DWORD = 8363;
+pub const ERROR_DS_SHUTTING_DOWN: ::DWORD = 8364;
+pub const ERROR_DS_UNKNOWN_OPERATION: ::DWORD = 8365;
+pub const ERROR_DS_INVALID_ROLE_OWNER: ::DWORD = 8366;
+pub const ERROR_DS_COULDNT_CONTACT_FSMO: ::DWORD = 8367;
+pub const ERROR_DS_CROSS_NC_DN_RENAME: ::DWORD = 8368;
+pub const ERROR_DS_CANT_MOD_SYSTEM_ONLY: ::DWORD = 8369;
+pub const ERROR_DS_REPLICATOR_ONLY: ::DWORD = 8370;
+pub const ERROR_DS_OBJ_CLASS_NOT_DEFINED: ::DWORD = 8371;
+pub const ERROR_DS_OBJ_CLASS_NOT_SUBCLASS: ::DWORD = 8372;
+pub const ERROR_DS_NAME_REFERENCE_INVALID: ::DWORD = 8373;
+pub const ERROR_DS_CROSS_REF_EXISTS: ::DWORD = 8374;
+pub const ERROR_DS_CANT_DEL_MASTER_CROSSREF: ::DWORD = 8375;
+pub const ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD: ::DWORD = 8376;
+pub const ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX: ::DWORD = 8377;
+pub const ERROR_DS_DUP_RDN: ::DWORD = 8378;
+pub const ERROR_DS_DUP_OID: ::DWORD = 8379;
+pub const ERROR_DS_DUP_MAPI_ID: ::DWORD = 8380;
+pub const ERROR_DS_DUP_SCHEMA_ID_GUID: ::DWORD = 8381;
+pub const ERROR_DS_DUP_LDAP_DISPLAY_NAME: ::DWORD = 8382;
+pub const ERROR_DS_SEMANTIC_ATT_TEST: ::DWORD = 8383;
+pub const ERROR_DS_SYNTAX_MISMATCH: ::DWORD = 8384;
+pub const ERROR_DS_EXISTS_IN_MUST_HAVE: ::DWORD = 8385;
+pub const ERROR_DS_EXISTS_IN_MAY_HAVE: ::DWORD = 8386;
+pub const ERROR_DS_NONEXISTENT_MAY_HAVE: ::DWORD = 8387;
+pub const ERROR_DS_NONEXISTENT_MUST_HAVE: ::DWORD = 8388;
+pub const ERROR_DS_AUX_CLS_TEST_FAIL: ::DWORD = 8389;
+pub const ERROR_DS_NONEXISTENT_POSS_SUP: ::DWORD = 8390;
+pub const ERROR_DS_SUB_CLS_TEST_FAIL: ::DWORD = 8391;
+pub const ERROR_DS_BAD_RDN_ATT_ID_SYNTAX: ::DWORD = 8392;
+pub const ERROR_DS_EXISTS_IN_AUX_CLS: ::DWORD = 8393;
+pub const ERROR_DS_EXISTS_IN_SUB_CLS: ::DWORD = 8394;
+pub const ERROR_DS_EXISTS_IN_POSS_SUP: ::DWORD = 8395;
+pub const ERROR_DS_RECALCSCHEMA_FAILED: ::DWORD = 8396;
+pub const ERROR_DS_TREE_DELETE_NOT_FINISHED: ::DWORD = 8397;
+pub const ERROR_DS_CANT_DELETE: ::DWORD = 8398;
+pub const ERROR_DS_ATT_SCHEMA_REQ_ID: ::DWORD = 8399;
+pub const ERROR_DS_BAD_ATT_SCHEMA_SYNTAX: ::DWORD = 8400;
+pub const ERROR_DS_CANT_CACHE_ATT: ::DWORD = 8401;
+pub const ERROR_DS_CANT_CACHE_CLASS: ::DWORD = 8402;
+pub const ERROR_DS_CANT_REMOVE_ATT_CACHE: ::DWORD = 8403;
+pub const ERROR_DS_CANT_REMOVE_CLASS_CACHE: ::DWORD = 8404;
+pub const ERROR_DS_CANT_RETRIEVE_DN: ::DWORD = 8405;
+pub const ERROR_DS_MISSING_SUPREF: ::DWORD = 8406;
+pub const ERROR_DS_CANT_RETRIEVE_INSTANCE: ::DWORD = 8407;
+pub const ERROR_DS_CODE_INCONSISTENCY: ::DWORD = 8408;
+pub const ERROR_DS_DATABASE_ERROR: ::DWORD = 8409;
+pub const ERROR_DS_GOVERNSID_MISSING: ::DWORD = 8410;
+pub const ERROR_DS_MISSING_EXPECTED_ATT: ::DWORD = 8411;
+pub const ERROR_DS_NCNAME_MISSING_CR_REF: ::DWORD = 8412;
+pub const ERROR_DS_SECURITY_CHECKING_ERROR: ::DWORD = 8413;
+pub const ERROR_DS_SCHEMA_NOT_LOADED: ::DWORD = 8414;
+pub const ERROR_DS_SCHEMA_ALLOC_FAILED: ::DWORD = 8415;
+pub const ERROR_DS_ATT_SCHEMA_REQ_SYNTAX: ::DWORD = 8416;
+pub const ERROR_DS_GCVERIFY_ERROR: ::DWORD = 8417;
+pub const ERROR_DS_DRA_SCHEMA_MISMATCH: ::DWORD = 8418;
+pub const ERROR_DS_CANT_FIND_DSA_OBJ: ::DWORD = 8419;
+pub const ERROR_DS_CANT_FIND_EXPECTED_NC: ::DWORD = 8420;
+pub const ERROR_DS_CANT_FIND_NC_IN_CACHE: ::DWORD = 8421;
+pub const ERROR_DS_CANT_RETRIEVE_CHILD: ::DWORD = 8422;
+pub const ERROR_DS_SECURITY_ILLEGAL_MODIFY: ::DWORD = 8423;
+pub const ERROR_DS_CANT_REPLACE_HIDDEN_REC: ::DWORD = 8424;
+pub const ERROR_DS_BAD_HIERARCHY_FILE: ::DWORD = 8425;
+pub const ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED: ::DWORD = 8426;
+pub const ERROR_DS_CONFIG_PARAM_MISSING: ::DWORD = 8427;
+pub const ERROR_DS_COUNTING_AB_INDICES_FAILED: ::DWORD = 8428;
+pub const ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED: ::DWORD = 8429;
+pub const ERROR_DS_INTERNAL_FAILURE: ::DWORD = 8430;
+pub const ERROR_DS_UNKNOWN_ERROR: ::DWORD = 8431;
+pub const ERROR_DS_ROOT_REQUIRES_CLASS_TOP: ::DWORD = 8432;
+pub const ERROR_DS_REFUSING_FSMO_ROLES: ::DWORD = 8433;
+pub const ERROR_DS_MISSING_FSMO_SETTINGS: ::DWORD = 8434;
+pub const ERROR_DS_UNABLE_TO_SURRENDER_ROLES: ::DWORD = 8435;
+pub const ERROR_DS_DRA_GENERIC: ::DWORD = 8436;
+pub const ERROR_DS_DRA_INVALID_PARAMETER: ::DWORD = 8437;
+pub const ERROR_DS_DRA_BUSY: ::DWORD = 8438;
+pub const ERROR_DS_DRA_BAD_DN: ::DWORD = 8439;
+pub const ERROR_DS_DRA_BAD_NC: ::DWORD = 8440;
+pub const ERROR_DS_DRA_DN_EXISTS: ::DWORD = 8441;
+pub const ERROR_DS_DRA_INTERNAL_ERROR: ::DWORD = 8442;
+pub const ERROR_DS_DRA_INCONSISTENT_DIT: ::DWORD = 8443;
+pub const ERROR_DS_DRA_CONNECTION_FAILED: ::DWORD = 8444;
+pub const ERROR_DS_DRA_BAD_INSTANCE_TYPE: ::DWORD = 8445;
+pub const ERROR_DS_DRA_OUT_OF_MEM: ::DWORD = 8446;
+pub const ERROR_DS_DRA_MAIL_PROBLEM: ::DWORD = 8447;
+pub const ERROR_DS_DRA_REF_ALREADY_EXISTS: ::DWORD = 8448;
+pub const ERROR_DS_DRA_REF_NOT_FOUND: ::DWORD = 8449;
+pub const ERROR_DS_DRA_OBJ_IS_REP_SOURCE: ::DWORD = 8450;
+pub const ERROR_DS_DRA_DB_ERROR: ::DWORD = 8451;
+pub const ERROR_DS_DRA_NO_REPLICA: ::DWORD = 8452;
+pub const ERROR_DS_DRA_ACCESS_DENIED: ::DWORD = 8453;
+pub const ERROR_DS_DRA_NOT_SUPPORTED: ::DWORD = 8454;
+pub const ERROR_DS_DRA_RPC_CANCELLED: ::DWORD = 8455;
+pub const ERROR_DS_DRA_SOURCE_DISABLED: ::DWORD = 8456;
+pub const ERROR_DS_DRA_SINK_DISABLED: ::DWORD = 8457;
+pub const ERROR_DS_DRA_NAME_COLLISION: ::DWORD = 8458;
+pub const ERROR_DS_DRA_SOURCE_REINSTALLED: ::DWORD = 8459;
+pub const ERROR_DS_DRA_MISSING_PARENT: ::DWORD = 8460;
+pub const ERROR_DS_DRA_PREEMPTED: ::DWORD = 8461;
+pub const ERROR_DS_DRA_ABANDON_SYNC: ::DWORD = 8462;
+pub const ERROR_DS_DRA_SHUTDOWN: ::DWORD = 8463;
+pub const ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET: ::DWORD = 8464;
+pub const ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA: ::DWORD = 8465;
+pub const ERROR_DS_DRA_EXTN_CONNECTION_FAILED: ::DWORD = 8466;
+pub const ERROR_DS_INSTALL_SCHEMA_MISMATCH: ::DWORD = 8467;
+pub const ERROR_DS_DUP_LINK_ID: ::DWORD = 8468;
+pub const ERROR_DS_NAME_ERROR_RESOLVING: ::DWORD = 8469;
+pub const ERROR_DS_NAME_ERROR_NOT_FOUND: ::DWORD = 8470;
+pub const ERROR_DS_NAME_ERROR_NOT_UNIQUE: ::DWORD = 8471;
+pub const ERROR_DS_NAME_ERROR_NO_MAPPING: ::DWORD = 8472;
+pub const ERROR_DS_NAME_ERROR_DOMAIN_ONLY: ::DWORD = 8473;
+pub const ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING: ::DWORD = 8474;
+pub const ERROR_DS_CONSTRUCTED_ATT_MOD: ::DWORD = 8475;
+pub const ERROR_DS_WRONG_OM_OBJ_CLASS: ::DWORD = 8476;
+pub const ERROR_DS_DRA_REPL_PENDING: ::DWORD = 8477;
+pub const ERROR_DS_DS_REQUIRED: ::DWORD = 8478;
+pub const ERROR_DS_INVALID_LDAP_DISPLAY_NAME: ::DWORD = 8479;
+pub const ERROR_DS_NON_BASE_SEARCH: ::DWORD = 8480;
+pub const ERROR_DS_CANT_RETRIEVE_ATTS: ::DWORD = 8481;
+pub const ERROR_DS_BACKLINK_WITHOUT_LINK: ::DWORD = 8482;
+pub const ERROR_DS_EPOCH_MISMATCH: ::DWORD = 8483;
+pub const ERROR_DS_SRC_NAME_MISMATCH: ::DWORD = 8484;
+pub const ERROR_DS_SRC_AND_DST_NC_IDENTICAL: ::DWORD = 8485;
+pub const ERROR_DS_DST_NC_MISMATCH: ::DWORD = 8486;
+pub const ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC: ::DWORD = 8487;
+pub const ERROR_DS_SRC_GUID_MISMATCH: ::DWORD = 8488;
+pub const ERROR_DS_CANT_MOVE_DELETED_OBJECT: ::DWORD = 8489;
+pub const ERROR_DS_PDC_OPERATION_IN_PROGRESS: ::DWORD = 8490;
+pub const ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD: ::DWORD = 8491;
+pub const ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION: ::DWORD = 8492;
+pub const ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS: ::DWORD = 8493;
+pub const ERROR_DS_NC_MUST_HAVE_NC_PARENT: ::DWORD = 8494;
+pub const ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE: ::DWORD = 8495;
+pub const ERROR_DS_DST_DOMAIN_NOT_NATIVE: ::DWORD = 8496;
+pub const ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER: ::DWORD = 8497;
+pub const ERROR_DS_CANT_MOVE_ACCOUNT_GROUP: ::DWORD = 8498;
+pub const ERROR_DS_CANT_MOVE_RESOURCE_GROUP: ::DWORD = 8499;
+pub const ERROR_DS_INVALID_SEARCH_FLAG: ::DWORD = 8500;
+pub const ERROR_DS_NO_TREE_DELETE_ABOVE_NC: ::DWORD = 8501;
+pub const ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE: ::DWORD = 8502;
+pub const ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE: ::DWORD = 8503;
+pub const ERROR_DS_SAM_INIT_FAILURE: ::DWORD = 8504;
+pub const ERROR_DS_SENSITIVE_GROUP_VIOLATION: ::DWORD = 8505;
+pub const ERROR_DS_CANT_MOD_PRIMARYGROUPID: ::DWORD = 8506;
+pub const ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD: ::DWORD = 8507;
+pub const ERROR_DS_NONSAFE_SCHEMA_CHANGE: ::DWORD = 8508;
+pub const ERROR_DS_SCHEMA_UPDATE_DISALLOWED: ::DWORD = 8509;
+pub const ERROR_DS_CANT_CREATE_UNDER_SCHEMA: ::DWORD = 8510;
+pub const ERROR_DS_INSTALL_NO_SRC_SCH_VERSION: ::DWORD = 8511;
+pub const ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE: ::DWORD = 8512;
+pub const ERROR_DS_INVALID_GROUP_TYPE: ::DWORD = 8513;
+pub const ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN: ::DWORD = 8514;
+pub const ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN: ::DWORD = 8515;
+pub const ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER: ::DWORD = 8516;
+pub const ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER: ::DWORD = 8517;
+pub const ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER: ::DWORD = 8518;
+pub const ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER: ::DWORD = 8519;
+pub const ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER: ::DWORD = 8520;
+pub const ERROR_DS_HAVE_PRIMARY_MEMBERS: ::DWORD = 8521;
+pub const ERROR_DS_STRING_SD_CONVERSION_FAILED: ::DWORD = 8522;
+pub const ERROR_DS_NAMING_MASTER_GC: ::DWORD = 8523;
+pub const ERROR_DS_DNS_LOOKUP_FAILURE: ::DWORD = 8524;
+pub const ERROR_DS_COULDNT_UPDATE_SPNS: ::DWORD = 8525;
+pub const ERROR_DS_CANT_RETRIEVE_SD: ::DWORD = 8526;
+pub const ERROR_DS_KEY_NOT_UNIQUE: ::DWORD = 8527;
+pub const ERROR_DS_WRONG_LINKED_ATT_SYNTAX: ::DWORD = 8528;
+pub const ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD: ::DWORD = 8529;
+pub const ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY: ::DWORD = 8530;
+pub const ERROR_DS_CANT_START: ::DWORD = 8531;
+pub const ERROR_DS_INIT_FAILURE: ::DWORD = 8532;
+pub const ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION: ::DWORD = 8533;
+pub const ERROR_DS_SOURCE_DOMAIN_IN_FOREST: ::DWORD = 8534;
+pub const ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST: ::DWORD = 8535;
+pub const ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED: ::DWORD = 8536;
+pub const ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN: ::DWORD = 8537;
+pub const ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER: ::DWORD = 8538;
+pub const ERROR_DS_SRC_SID_EXISTS_IN_FOREST: ::DWORD = 8539;
+pub const ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH: ::DWORD = 8540;
+pub const ERROR_SAM_INIT_FAILURE: ::DWORD = 8541;
+pub const ERROR_DS_DRA_SCHEMA_INFO_SHIP: ::DWORD = 8542;
+pub const ERROR_DS_DRA_SCHEMA_CONFLICT: ::DWORD = 8543;
+pub const ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT: ::DWORD = 8544;
+pub const ERROR_DS_DRA_OBJ_NC_MISMATCH: ::DWORD = 8545;
+pub const ERROR_DS_NC_STILL_HAS_DSAS: ::DWORD = 8546;
+pub const ERROR_DS_GC_REQUIRED: ::DWORD = 8547;
+pub const ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY: ::DWORD = 8548;
+pub const ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS: ::DWORD = 8549;
+pub const ERROR_DS_CANT_ADD_TO_GC: ::DWORD = 8550;
+pub const ERROR_DS_NO_CHECKPOINT_WITH_PDC: ::DWORD = 8551;
+pub const ERROR_DS_SOURCE_AUDITING_NOT_ENABLED: ::DWORD = 8552;
+pub const ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC: ::DWORD = 8553;
+pub const ERROR_DS_INVALID_NAME_FOR_SPN: ::DWORD = 8554;
+pub const ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS: ::DWORD = 8555;
+pub const ERROR_DS_UNICODEPWD_NOT_IN_QUOTES: ::DWORD = 8556;
+pub const ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED: ::DWORD = 8557;
+pub const ERROR_DS_MUST_BE_RUN_ON_DST_DC: ::DWORD = 8558;
+pub const ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER: ::DWORD = 8559;
+pub const ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ: ::DWORD = 8560;
+pub const ERROR_DS_INIT_FAILURE_CONSOLE: ::DWORD = 8561;
+pub const ERROR_DS_SAM_INIT_FAILURE_CONSOLE: ::DWORD = 8562;
+pub const ERROR_DS_FOREST_VERSION_TOO_HIGH: ::DWORD = 8563;
+pub const ERROR_DS_DOMAIN_VERSION_TOO_HIGH: ::DWORD = 8564;
+pub const ERROR_DS_FOREST_VERSION_TOO_LOW: ::DWORD = 8565;
+pub const ERROR_DS_DOMAIN_VERSION_TOO_LOW: ::DWORD = 8566;
+pub const ERROR_DS_INCOMPATIBLE_VERSION: ::DWORD = 8567;
+pub const ERROR_DS_LOW_DSA_VERSION: ::DWORD = 8568;
+pub const ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN: ::DWORD = 8569;
+pub const ERROR_DS_NOT_SUPPORTED_SORT_ORDER: ::DWORD = 8570;
+pub const ERROR_DS_NAME_NOT_UNIQUE: ::DWORD = 8571;
+pub const ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4: ::DWORD = 8572;
+pub const ERROR_DS_OUT_OF_VERSION_STORE: ::DWORD = 8573;
+pub const ERROR_DS_INCOMPATIBLE_CONTROLS_USED: ::DWORD = 8574;
+pub const ERROR_DS_NO_REF_DOMAIN: ::DWORD = 8575;
+pub const ERROR_DS_RESERVED_LINK_ID: ::DWORD = 8576;
+pub const ERROR_DS_LINK_ID_NOT_AVAILABLE: ::DWORD = 8577;
+pub const ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER: ::DWORD = 8578;
+pub const ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE: ::DWORD = 8579;
+pub const ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC: ::DWORD = 8580;
+pub const ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG: ::DWORD = 8581;
+pub const ERROR_DS_MODIFYDN_WRONG_GRANDPARENT: ::DWORD = 8582;
+pub const ERROR_DS_NAME_ERROR_TRUST_REFERRAL: ::DWORD = 8583;
+pub const ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER: ::DWORD = 8584;
+pub const ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD: ::DWORD = 8585;
+pub const ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2: ::DWORD = 8586;
+pub const ERROR_DS_THREAD_LIMIT_EXCEEDED: ::DWORD = 8587;
+pub const ERROR_DS_NOT_CLOSEST: ::DWORD = 8588;
+pub const ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF: ::DWORD = 8589;
+pub const ERROR_DS_SINGLE_USER_MODE_FAILED: ::DWORD = 8590;
+pub const ERROR_DS_NTDSCRIPT_SYNTAX_ERROR: ::DWORD = 8591;
+pub const ERROR_DS_NTDSCRIPT_PROCESS_ERROR: ::DWORD = 8592;
+pub const ERROR_DS_DIFFERENT_REPL_EPOCHS: ::DWORD = 8593;
+pub const ERROR_DS_DRS_EXTENSIONS_CHANGED: ::DWORD = 8594;
+pub const ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR: ::DWORD = 8595;
+pub const ERROR_DS_NO_MSDS_INTID: ::DWORD = 8596;
+pub const ERROR_DS_DUP_MSDS_INTID: ::DWORD = 8597;
+pub const ERROR_DS_EXISTS_IN_RDNATTID: ::DWORD = 8598;
+pub const ERROR_DS_AUTHORIZATION_FAILED: ::DWORD = 8599;
+pub const ERROR_DS_INVALID_SCRIPT: ::DWORD = 8600;
+pub const ERROR_DS_REMOTE_CROSSREF_OP_FAILED: ::DWORD = 8601;
+pub const ERROR_DS_CROSS_REF_BUSY: ::DWORD = 8602;
+pub const ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN: ::DWORD = 8603;
+pub const ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC: ::DWORD = 8604;
+pub const ERROR_DS_DUPLICATE_ID_FOUND: ::DWORD = 8605;
+pub const ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT: ::DWORD = 8606;
+pub const ERROR_DS_GROUP_CONVERSION_ERROR: ::DWORD = 8607;
+pub const ERROR_DS_CANT_MOVE_APP_BASIC_GROUP: ::DWORD = 8608;
+pub const ERROR_DS_CANT_MOVE_APP_QUERY_GROUP: ::DWORD = 8609;
+pub const ERROR_DS_ROLE_NOT_VERIFIED: ::DWORD = 8610;
+pub const ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL: ::DWORD = 8611;
+pub const ERROR_DS_DOMAIN_RENAME_IN_PROGRESS: ::DWORD = 8612;
+pub const ERROR_DS_EXISTING_AD_CHILD_NC: ::DWORD = 8613;
+pub const ERROR_DS_REPL_LIFETIME_EXCEEDED: ::DWORD = 8614;
+pub const ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER: ::DWORD = 8615;
+pub const ERROR_DS_LDAP_SEND_QUEUE_FULL: ::DWORD = 8616;
+pub const ERROR_DS_DRA_OUT_SCHEDULE_WINDOW: ::DWORD = 8617;
+pub const ERROR_DS_POLICY_NOT_KNOWN: ::DWORD = 8618;
+pub const ERROR_NO_SITE_SETTINGS_OBJECT: ::DWORD = 8619;
+pub const ERROR_NO_SECRETS: ::DWORD = 8620;
+pub const ERROR_NO_WRITABLE_DC_FOUND: ::DWORD = 8621;
+pub const ERROR_DS_NO_SERVER_OBJECT: ::DWORD = 8622;
+pub const ERROR_DS_NO_NTDSA_OBJECT: ::DWORD = 8623;
+pub const ERROR_DS_NON_ASQ_SEARCH: ::DWORD = 8624;
+pub const ERROR_DS_AUDIT_FAILURE: ::DWORD = 8625;
+pub const ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE: ::DWORD = 8626;
+pub const ERROR_DS_INVALID_SEARCH_FLAG_TUPLE: ::DWORD = 8627;
+pub const ERROR_DS_HIERARCHY_TABLE_TOO_DEEP: ::DWORD = 8628;
+pub const ERROR_DS_DRA_CORRUPT_UTD_VECTOR: ::DWORD = 8629;
+pub const ERROR_DS_DRA_SECRETS_DENIED: ::DWORD = 8630;
+pub const ERROR_DS_RESERVED_MAPI_ID: ::DWORD = 8631;
+pub const ERROR_DS_MAPI_ID_NOT_AVAILABLE: ::DWORD = 8632;
+pub const ERROR_DS_DRA_MISSING_KRBTGT_SECRET: ::DWORD = 8633;
+pub const ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST: ::DWORD = 8634;
+pub const ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST: ::DWORD = 8635;
+pub const ERROR_INVALID_USER_PRINCIPAL_NAME: ::DWORD = 8636;
+pub const ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS: ::DWORD = 8637;
+pub const ERROR_DS_OID_NOT_FOUND: ::DWORD = 8638;
+pub const ERROR_DS_DRA_RECYCLED_TARGET: ::DWORD = 8639;
+pub const ERROR_DS_DISALLOWED_NC_REDIRECT: ::DWORD = 8640;
+pub const ERROR_DS_HIGH_ADLDS_FFL: ::DWORD = 8641;
+pub const ERROR_DS_HIGH_DSA_VERSION: ::DWORD = 8642;
+pub const ERROR_DS_LOW_ADLDS_FFL: ::DWORD = 8643;
+pub const ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION: ::DWORD = 8644;
+pub const ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED: ::DWORD = 8645;
+pub const ERROR_INCORRECT_ACCOUNT_TYPE: ::DWORD = 8646;
+pub const ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST: ::DWORD = 8647;
+pub const ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST: ::DWORD = 8648;
+pub const DNS_ERROR_RESPONSE_CODES_BASE: ::DWORD = 9000;
+pub const DNS_ERROR_RCODE_NO_ERROR: ::DWORD = NO_ERROR;
+pub const DNS_ERROR_MASK: ::DWORD = 0x00002328;
+pub const DNS_ERROR_RCODE_FORMAT_ERROR: ::DWORD = 9001;
+pub const DNS_ERROR_RCODE_SERVER_FAILURE: ::DWORD = 9002;
+pub const DNS_ERROR_RCODE_NAME_ERROR: ::DWORD = 9003;
+pub const DNS_ERROR_RCODE_NOT_IMPLEMENTED: ::DWORD = 9004;
+pub const DNS_ERROR_RCODE_REFUSED: ::DWORD = 9005;
+pub const DNS_ERROR_RCODE_YXDOMAIN: ::DWORD = 9006;
+pub const DNS_ERROR_RCODE_YXRRSET: ::DWORD = 9007;
+pub const DNS_ERROR_RCODE_NXRRSET: ::DWORD = 9008;
+pub const DNS_ERROR_RCODE_NOTAUTH: ::DWORD = 9009;
+pub const DNS_ERROR_RCODE_NOTZONE: ::DWORD = 9010;
+pub const DNS_ERROR_RCODE_BADSIG: ::DWORD = 9016;
+pub const DNS_ERROR_RCODE_BADKEY: ::DWORD = 9017;
+pub const DNS_ERROR_RCODE_BADTIME: ::DWORD = 9018;
+pub const DNS_ERROR_RCODE_LAST: ::DWORD = DNS_ERROR_RCODE_BADTIME;
+pub const DNS_ERROR_DNSSEC_BASE: ::DWORD = 9100;
+pub const DNS_ERROR_KEYMASTER_REQUIRED: ::DWORD = 9101;
+pub const DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE: ::DWORD = 9102;
+pub const DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1: ::DWORD = 9103;
+pub const DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS: ::DWORD = 9104;
+pub const DNS_ERROR_UNSUPPORTED_ALGORITHM: ::DWORD = 9105;
+pub const DNS_ERROR_INVALID_KEY_SIZE: ::DWORD = 9106;
+pub const DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE: ::DWORD = 9107;
+pub const DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION: ::DWORD = 9108;
+pub const DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR: ::DWORD = 9109;
+pub const DNS_ERROR_UNEXPECTED_CNG_ERROR: ::DWORD = 9110;
+pub const DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION: ::DWORD = 9111;
+pub const DNS_ERROR_KSP_NOT_ACCESSIBLE: ::DWORD = 9112;
+pub const DNS_ERROR_TOO_MANY_SKDS: ::DWORD = 9113;
+pub const DNS_ERROR_INVALID_ROLLOVER_PERIOD: ::DWORD = 9114;
+pub const DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET: ::DWORD = 9115;
+pub const DNS_ERROR_ROLLOVER_IN_PROGRESS: ::DWORD = 9116;
+pub const DNS_ERROR_STANDBY_KEY_NOT_PRESENT: ::DWORD = 9117;
+pub const DNS_ERROR_NOT_ALLOWED_ON_ZSK: ::DWORD = 9118;
+pub const DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD: ::DWORD = 9119;
+pub const DNS_ERROR_ROLLOVER_ALREADY_QUEUED: ::DWORD = 9120;
+pub const DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE: ::DWORD = 9121;
+pub const DNS_ERROR_BAD_KEYMASTER: ::DWORD = 9122;
+pub const DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD: ::DWORD = 9123;
+pub const DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT: ::DWORD = 9124;
+pub const DNS_ERROR_DNSSEC_IS_DISABLED: ::DWORD = 9125;
+pub const DNS_ERROR_INVALID_XML: ::DWORD = 9126;
+pub const DNS_ERROR_NO_VALID_TRUST_ANCHORS: ::DWORD = 9127;
+pub const DNS_ERROR_ROLLOVER_NOT_POKEABLE: ::DWORD = 9128;
+pub const DNS_ERROR_NSEC3_NAME_COLLISION: ::DWORD = 9129;
+pub const DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1: ::DWORD = 9130;
+pub const DNS_ERROR_PACKET_FMT_BASE: ::DWORD = 9500;
+pub const DNS_INFO_NO_RECORDS: ::DWORD = 9501;
+pub const DNS_ERROR_BAD_PACKET: ::DWORD = 9502;
+pub const DNS_ERROR_NO_PACKET: ::DWORD = 9503;
+pub const DNS_ERROR_RCODE: ::DWORD = 9504;
+pub const DNS_ERROR_UNSECURE_PACKET: ::DWORD = 9505;
+pub const DNS_STATUS_PACKET_UNSECURE: ::DWORD = DNS_ERROR_UNSECURE_PACKET;
+pub const DNS_REQUEST_PENDING: ::DWORD = 9506;
+pub const DNS_ERROR_NO_MEMORY: ::DWORD = ERROR_OUTOFMEMORY;
+pub const DNS_ERROR_INVALID_NAME: ::DWORD = ERROR_INVALID_NAME;
+pub const DNS_ERROR_INVALID_DATA: ::DWORD = ERROR_INVALID_DATA;
+pub const DNS_ERROR_GENERAL_API_BASE: ::DWORD = 9550;
+pub const DNS_ERROR_INVALID_TYPE: ::DWORD = 9551;
+pub const DNS_ERROR_INVALID_IP_ADDRESS: ::DWORD = 9552;
+pub const DNS_ERROR_INVALID_PROPERTY: ::DWORD = 9553;
+pub const DNS_ERROR_TRY_AGAIN_LATER: ::DWORD = 9554;
+pub const DNS_ERROR_NOT_UNIQUE: ::DWORD = 9555;
+pub const DNS_ERROR_NON_RFC_NAME: ::DWORD = 9556;
+pub const DNS_STATUS_FQDN: ::DWORD = 9557;
+pub const DNS_STATUS_DOTTED_NAME: ::DWORD = 9558;
+pub const DNS_STATUS_SINGLE_PART_NAME: ::DWORD = 9559;
+pub const DNS_ERROR_INVALID_NAME_CHAR: ::DWORD = 9560;
+pub const DNS_ERROR_NUMERIC_NAME: ::DWORD = 9561;
+pub const DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER: ::DWORD = 9562;
+pub const DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION: ::DWORD = 9563;
+pub const DNS_ERROR_CANNOT_FIND_ROOT_HINTS: ::DWORD = 9564;
+pub const DNS_ERROR_INCONSISTENT_ROOT_HINTS: ::DWORD = 9565;
+pub const DNS_ERROR_DWORD_VALUE_TOO_SMALL: ::DWORD = 9566;
+pub const DNS_ERROR_DWORD_VALUE_TOO_LARGE: ::DWORD = 9567;
+pub const DNS_ERROR_BACKGROUND_LOADING: ::DWORD = 9568;
+pub const DNS_ERROR_NOT_ALLOWED_ON_RODC: ::DWORD = 9569;
+pub const DNS_ERROR_NOT_ALLOWED_UNDER_DNAME: ::DWORD = 9570;
+pub const DNS_ERROR_DELEGATION_REQUIRED: ::DWORD = 9571;
+pub const DNS_ERROR_INVALID_POLICY_TABLE: ::DWORD = 9572;
+pub const DNS_ERROR_ZONE_BASE: ::DWORD = 9600;
+pub const DNS_ERROR_ZONE_DOES_NOT_EXIST: ::DWORD = 9601;
+pub const DNS_ERROR_NO_ZONE_INFO: ::DWORD = 9602;
+pub const DNS_ERROR_INVALID_ZONE_OPERATION: ::DWORD = 9603;
+pub const DNS_ERROR_ZONE_CONFIGURATION_ERROR: ::DWORD = 9604;
+pub const DNS_ERROR_ZONE_HAS_NO_SOA_RECORD: ::DWORD = 9605;
+pub const DNS_ERROR_ZONE_HAS_NO_NS_RECORDS: ::DWORD = 9606;
+pub const DNS_ERROR_ZONE_LOCKED: ::DWORD = 9607;
+pub const DNS_ERROR_ZONE_CREATION_FAILED: ::DWORD = 9608;
+pub const DNS_ERROR_ZONE_ALREADY_EXISTS: ::DWORD = 9609;
+pub const DNS_ERROR_AUTOZONE_ALREADY_EXISTS: ::DWORD = 9610;
+pub const DNS_ERROR_INVALID_ZONE_TYPE: ::DWORD = 9611;
+pub const DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP: ::DWORD = 9612;
+pub const DNS_ERROR_ZONE_NOT_SECONDARY: ::DWORD = 9613;
+pub const DNS_ERROR_NEED_SECONDARY_ADDRESSES: ::DWORD = 9614;
+pub const DNS_ERROR_WINS_INIT_FAILED: ::DWORD = 9615;
+pub const DNS_ERROR_NEED_WINS_SERVERS: ::DWORD = 9616;
+pub const DNS_ERROR_NBSTAT_INIT_FAILED: ::DWORD = 9617;
+pub const DNS_ERROR_SOA_DELETE_INVALID: ::DWORD = 9618;
+pub const DNS_ERROR_FORWARDER_ALREADY_EXISTS: ::DWORD = 9619;
+pub const DNS_ERROR_ZONE_REQUIRES_MASTER_IP: ::DWORD = 9620;
+pub const DNS_ERROR_ZONE_IS_SHUTDOWN: ::DWORD = 9621;
+pub const DNS_ERROR_ZONE_LOCKED_FOR_SIGNING: ::DWORD = 9622;
+pub const DNS_ERROR_DATAFILE_BASE: ::DWORD = 9650;
+pub const DNS_ERROR_PRIMARY_REQUIRES_DATAFILE: ::DWORD = 9651;
+pub const DNS_ERROR_INVALID_DATAFILE_NAME: ::DWORD = 9652;
+pub const DNS_ERROR_DATAFILE_OPEN_FAILURE: ::DWORD = 9653;
+pub const DNS_ERROR_FILE_WRITEBACK_FAILED: ::DWORD = 9654;
+pub const DNS_ERROR_DATAFILE_PARSING: ::DWORD = 9655;
+pub const DNS_ERROR_DATABASE_BASE: ::DWORD = 9700;
+pub const DNS_ERROR_RECORD_DOES_NOT_EXIST: ::DWORD = 9701;
+pub const DNS_ERROR_RECORD_FORMAT: ::DWORD = 9702;
+pub const DNS_ERROR_NODE_CREATION_FAILED: ::DWORD = 9703;
+pub const DNS_ERROR_UNKNOWN_RECORD_TYPE: ::DWORD = 9704;
+pub const DNS_ERROR_RECORD_TIMED_OUT: ::DWORD = 9705;
+pub const DNS_ERROR_NAME_NOT_IN_ZONE: ::DWORD = 9706;
+pub const DNS_ERROR_CNAME_LOOP: ::DWORD = 9707;
+pub const DNS_ERROR_NODE_IS_CNAME: ::DWORD = 9708;
+pub const DNS_ERROR_CNAME_COLLISION: ::DWORD = 9709;
+pub const DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT: ::DWORD = 9710;
+pub const DNS_ERROR_RECORD_ALREADY_EXISTS: ::DWORD = 9711;
+pub const DNS_ERROR_SECONDARY_DATA: ::DWORD = 9712;
+pub const DNS_ERROR_NO_CREATE_CACHE_DATA: ::DWORD = 9713;
+pub const DNS_ERROR_NAME_DOES_NOT_EXIST: ::DWORD = 9714;
+pub const DNS_WARNING_PTR_CREATE_FAILED: ::DWORD = 9715;
+pub const DNS_WARNING_DOMAIN_UNDELETED: ::DWORD = 9716;
+pub const DNS_ERROR_DS_UNAVAILABLE: ::DWORD = 9717;
+pub const DNS_ERROR_DS_ZONE_ALREADY_EXISTS: ::DWORD = 9718;
+pub const DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE: ::DWORD = 9719;
+pub const DNS_ERROR_NODE_IS_DNAME: ::DWORD = 9720;
+pub const DNS_ERROR_DNAME_COLLISION: ::DWORD = 9721;
+pub const DNS_ERROR_ALIAS_LOOP: ::DWORD = 9722;
+pub const DNS_ERROR_OPERATION_BASE: ::DWORD = 9750;
+pub const DNS_INFO_AXFR_COMPLETE: ::DWORD = 9751;
+pub const DNS_ERROR_AXFR: ::DWORD = 9752;
+pub const DNS_INFO_ADDED_LOCAL_WINS: ::DWORD = 9753;
+pub const DNS_ERROR_SECURE_BASE: ::DWORD = 9800;
+pub const DNS_STATUS_CONTINUE_NEEDED: ::DWORD = 9801;
+pub const DNS_ERROR_SETUP_BASE: ::DWORD = 9850;
+pub const DNS_ERROR_NO_TCPIP: ::DWORD = 9851;
+pub const DNS_ERROR_NO_DNS_SERVERS: ::DWORD = 9852;
+pub const DNS_ERROR_DP_BASE: ::DWORD = 9900;
+pub const DNS_ERROR_DP_DOES_NOT_EXIST: ::DWORD = 9901;
+pub const DNS_ERROR_DP_ALREADY_EXISTS: ::DWORD = 9902;
+pub const DNS_ERROR_DP_NOT_ENLISTED: ::DWORD = 9903;
+pub const DNS_ERROR_DP_ALREADY_ENLISTED: ::DWORD = 9904;
+pub const DNS_ERROR_DP_NOT_AVAILABLE: ::DWORD = 9905;
+pub const DNS_ERROR_DP_FSMO_ERROR: ::DWORD = 9906;
+pub const DNS_ERROR_ZONESCOPE_ALREADY_EXISTS: ::DWORD = 9951;
+pub const DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST: ::DWORD = 9952;
+pub const DNS_ERROR_DEFAULT_ZONESCOPE: ::DWORD = 9953;
+pub const DNS_ERROR_INVALID_ZONESCOPE_NAME: ::DWORD = 9954;
+pub const DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES: ::DWORD = 9955;
+pub const DNS_ERROR_LOAD_ZONESCOPE_FAILED: ::DWORD = 9956;
+pub const DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED: ::DWORD = 9957;
+pub const DNS_ERROR_INVALID_SCOPE_NAME: ::DWORD = 9958;
+pub const DNS_ERROR_SCOPE_DOES_NOT_EXIST: ::DWORD = 9959;
+pub const DNS_ERROR_DEFAULT_SCOPE: ::DWORD = 9960;
+pub const DNS_ERROR_INVALID_SCOPE_OPERATION: ::DWORD = 9961;
+pub const DNS_ERROR_SCOPE_LOCKED: ::DWORD = 9962;
+pub const DNS_ERROR_SCOPE_ALREADY_EXISTS: ::DWORD = 9963;
+pub const WSABASEERR: ::DWORD = 10000;
+pub const WSAEINTR: ::DWORD = 10004;
+pub const WSAEBADF: ::DWORD = 10009;
+pub const WSAEACCES: ::DWORD = 10013;
+pub const WSAEFAULT: ::DWORD = 10014;
+pub const WSAEINVAL: ::DWORD = 10022;
+pub const WSAEMFILE: ::DWORD = 10024;
+pub const WSAEWOULDBLOCK: ::DWORD = 10035;
+pub const WSAEINPROGRESS: ::DWORD = 10036;
+pub const WSAEALREADY: ::DWORD = 10037;
+pub const WSAENOTSOCK: ::DWORD = 10038;
+pub const WSAEDESTADDRREQ: ::DWORD = 10039;
+pub const WSAEMSGSIZE: ::DWORD = 10040;
+pub const WSAEPROTOTYPE: ::DWORD = 10041;
+pub const WSAENOPROTOOPT: ::DWORD = 10042;
+pub const WSAEPROTONOSUPPORT: ::DWORD = 10043;
+pub const WSAESOCKTNOSUPPORT: ::DWORD = 10044;
+pub const WSAEOPNOTSUPP: ::DWORD = 10045;
+pub const WSAEPFNOSUPPORT: ::DWORD = 10046;
+pub const WSAEAFNOSUPPORT: ::DWORD = 10047;
+pub const WSAEADDRINUSE: ::DWORD = 10048;
+pub const WSAEADDRNOTAVAIL: ::DWORD = 10049;
+pub const WSAENETDOWN: ::DWORD = 10050;
+pub const WSAENETUNREACH: ::DWORD = 10051;
+pub const WSAENETRESET: ::DWORD = 10052;
+pub const WSAECONNABORTED: ::DWORD = 10053;
+pub const WSAECONNRESET: ::DWORD = 10054;
+pub const WSAENOBUFS: ::DWORD = 10055;
+pub const WSAEISCONN: ::DWORD = 10056;
+pub const WSAENOTCONN: ::DWORD = 10057;
+pub const WSAESHUTDOWN: ::DWORD = 10058;
+pub const WSAETOOMANYREFS: ::DWORD = 10059;
+pub const WSAETIMEDOUT: ::DWORD = 10060;
+pub const WSAECONNREFUSED: ::DWORD = 10061;
+pub const WSAELOOP: ::DWORD = 10062;
+pub const WSAENAMETOOLONG: ::DWORD = 10063;
+pub const WSAEHOSTDOWN: ::DWORD = 10064;
+pub const WSAEHOSTUNREACH: ::DWORD = 10065;
+pub const WSAENOTEMPTY: ::DWORD = 10066;
+pub const WSAEPROCLIM: ::DWORD = 10067;
+pub const WSAEUSERS: ::DWORD = 10068;
+pub const WSAEDQUOT: ::DWORD = 10069;
+pub const WSAESTALE: ::DWORD = 10070;
+pub const WSAEREMOTE: ::DWORD = 10071;
+pub const WSASYSNOTREADY: ::DWORD = 10091;
+pub const WSAVERNOTSUPPORTED: ::DWORD = 10092;
+pub const WSANOTINITIALISED: ::DWORD = 10093;
+pub const WSAEDISCON: ::DWORD = 10101;
+pub const WSAENOMORE: ::DWORD = 10102;
+pub const WSAECANCELLED: ::DWORD = 10103;
+pub const WSAEINVALIDPROCTABLE: ::DWORD = 10104;
+pub const WSAEINVALIDPROVIDER: ::DWORD = 10105;
+pub const WSAEPROVIDERFAILEDINIT: ::DWORD = 10106;
+pub const WSASYSCALLFAILURE: ::DWORD = 10107;
+pub const WSASERVICE_NOT_FOUND: ::DWORD = 10108;
+pub const WSATYPE_NOT_FOUND: ::DWORD = 10109;
+pub const WSA_E_NO_MORE: ::DWORD = 10110;
+pub const WSA_E_CANCELLED: ::DWORD = 10111;
+pub const WSAEREFUSED: ::DWORD = 10112;
+pub const WSAHOST_NOT_FOUND: ::DWORD = 11001;
+pub const WSATRY_AGAIN: ::DWORD = 11002;
+pub const WSANO_RECOVERY: ::DWORD = 11003;
+pub const WSANO_DATA: ::DWORD = 11004;
+pub const WSA_QOS_RECEIVERS: ::DWORD = 11005;
+pub const WSA_QOS_SENDERS: ::DWORD = 11006;
+pub const WSA_QOS_NO_SENDERS: ::DWORD = 11007;
+pub const WSA_QOS_NO_RECEIVERS: ::DWORD = 11008;
+pub const WSA_QOS_REQUEST_CONFIRMED: ::DWORD = 11009;
+pub const WSA_QOS_ADMISSION_FAILURE: ::DWORD = 11010;
+pub const WSA_QOS_POLICY_FAILURE: ::DWORD = 11011;
+pub const WSA_QOS_BAD_STYLE: ::DWORD = 11012;
+pub const WSA_QOS_BAD_OBJECT: ::DWORD = 11013;
+pub const WSA_QOS_TRAFFIC_CTRL_ERROR: ::DWORD = 11014;
+pub const WSA_QOS_GENERIC_ERROR: ::DWORD = 11015;
+pub const WSA_QOS_ESERVICETYPE: ::DWORD = 11016;
+pub const WSA_QOS_EFLOWSPEC: ::DWORD = 11017;
+pub const WSA_QOS_EPROVSPECBUF: ::DWORD = 11018;
+pub const WSA_QOS_EFILTERSTYLE: ::DWORD = 11019;
+pub const WSA_QOS_EFILTERTYPE: ::DWORD = 11020;
+pub const WSA_QOS_EFILTERCOUNT: ::DWORD = 11021;
+pub const WSA_QOS_EOBJLENGTH: ::DWORD = 11022;
+pub const WSA_QOS_EFLOWCOUNT: ::DWORD = 11023;
+pub const WSA_QOS_EUNKOWNPSOBJ: ::DWORD = 11024;
+pub const WSA_QOS_EPOLICYOBJ: ::DWORD = 11025;
+pub const WSA_QOS_EFLOWDESC: ::DWORD = 11026;
+pub const WSA_QOS_EPSFLOWSPEC: ::DWORD = 11027;
+pub const WSA_QOS_EPSFILTERSPEC: ::DWORD = 11028;
+pub const WSA_QOS_ESDMODEOBJ: ::DWORD = 11029;
+pub const WSA_QOS_ESHAPERATEOBJ: ::DWORD = 11030;
+pub const WSA_QOS_RESERVED_PETYPE: ::DWORD = 11031;
+pub const WSA_SECURE_HOST_NOT_FOUND: ::DWORD = 11032;
+pub const WSA_IPSEC_NAME_POLICY_ERROR: ::DWORD = 11033;
+pub const ERROR_IPSEC_QM_POLICY_EXISTS: ::DWORD = 13000;
+pub const ERROR_IPSEC_QM_POLICY_NOT_FOUND: ::DWORD = 13001;
+pub const ERROR_IPSEC_QM_POLICY_IN_USE: ::DWORD = 13002;
+pub const ERROR_IPSEC_MM_POLICY_EXISTS: ::DWORD = 13003;
+pub const ERROR_IPSEC_MM_POLICY_NOT_FOUND: ::DWORD = 13004;
+pub const ERROR_IPSEC_MM_POLICY_IN_USE: ::DWORD = 13005;
+pub const ERROR_IPSEC_MM_FILTER_EXISTS: ::DWORD = 13006;
+pub const ERROR_IPSEC_MM_FILTER_NOT_FOUND: ::DWORD = 13007;
+pub const ERROR_IPSEC_TRANSPORT_FILTER_EXISTS: ::DWORD = 13008;
+pub const ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND: ::DWORD = 13009;
+pub const ERROR_IPSEC_MM_AUTH_EXISTS: ::DWORD = 13010;
+pub const ERROR_IPSEC_MM_AUTH_NOT_FOUND: ::DWORD = 13011;
+pub const ERROR_IPSEC_MM_AUTH_IN_USE: ::DWORD = 13012;
+pub const ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND: ::DWORD = 13013;
+pub const ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND: ::DWORD = 13014;
+pub const ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND: ::DWORD = 13015;
+pub const ERROR_IPSEC_TUNNEL_FILTER_EXISTS: ::DWORD = 13016;
+pub const ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND: ::DWORD = 13017;
+pub const ERROR_IPSEC_MM_FILTER_PENDING_DELETION: ::DWORD = 13018;
+pub const ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION: ::DWORD = 13019;
+pub const ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION: ::DWORD = 13020;
+pub const ERROR_IPSEC_MM_POLICY_PENDING_DELETION: ::DWORD = 13021;
+pub const ERROR_IPSEC_MM_AUTH_PENDING_DELETION: ::DWORD = 13022;
+pub const ERROR_IPSEC_QM_POLICY_PENDING_DELETION: ::DWORD = 13023;
+pub const WARNING_IPSEC_MM_POLICY_PRUNED: ::DWORD = 13024;
+pub const WARNING_IPSEC_QM_POLICY_PRUNED: ::DWORD = 13025;
+pub const ERROR_IPSEC_IKE_NEG_STATUS_BEGIN: ::DWORD = 13800;
+pub const ERROR_IPSEC_IKE_AUTH_FAIL: ::DWORD = 13801;
+pub const ERROR_IPSEC_IKE_ATTRIB_FAIL: ::DWORD = 13802;
+pub const ERROR_IPSEC_IKE_NEGOTIATION_PENDING: ::DWORD = 13803;
+pub const ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR: ::DWORD = 13804;
+pub const ERROR_IPSEC_IKE_TIMED_OUT: ::DWORD = 13805;
+pub const ERROR_IPSEC_IKE_NO_CERT: ::DWORD = 13806;
+pub const ERROR_IPSEC_IKE_SA_DELETED: ::DWORD = 13807;
+pub const ERROR_IPSEC_IKE_SA_REAPED: ::DWORD = 13808;
+pub const ERROR_IPSEC_IKE_MM_ACQUIRE_DROP: ::DWORD = 13809;
+pub const ERROR_IPSEC_IKE_QM_ACQUIRE_DROP: ::DWORD = 13810;
+pub const ERROR_IPSEC_IKE_QUEUE_DROP_MM: ::DWORD = 13811;
+pub const ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM: ::DWORD = 13812;
+pub const ERROR_IPSEC_IKE_DROP_NO_RESPONSE: ::DWORD = 13813;
+pub const ERROR_IPSEC_IKE_MM_DELAY_DROP: ::DWORD = 13814;
+pub const ERROR_IPSEC_IKE_QM_DELAY_DROP: ::DWORD = 13815;
+pub const ERROR_IPSEC_IKE_ERROR: ::DWORD = 13816;
+pub const ERROR_IPSEC_IKE_CRL_FAILED: ::DWORD = 13817;
+pub const ERROR_IPSEC_IKE_INVALID_KEY_USAGE: ::DWORD = 13818;
+pub const ERROR_IPSEC_IKE_INVALID_CERT_TYPE: ::DWORD = 13819;
+pub const ERROR_IPSEC_IKE_NO_PRIVATE_KEY: ::DWORD = 13820;
+pub const ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY: ::DWORD = 13821;
+pub const ERROR_IPSEC_IKE_DH_FAIL: ::DWORD = 13822;
+pub const ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED: ::DWORD = 13823;
+pub const ERROR_IPSEC_IKE_INVALID_HEADER: ::DWORD = 13824;
+pub const ERROR_IPSEC_IKE_NO_POLICY: ::DWORD = 13825;
+pub const ERROR_IPSEC_IKE_INVALID_SIGNATURE: ::DWORD = 13826;
+pub const ERROR_IPSEC_IKE_KERBEROS_ERROR: ::DWORD = 13827;
+pub const ERROR_IPSEC_IKE_NO_PUBLIC_KEY: ::DWORD = 13828;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR: ::DWORD = 13829;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_SA: ::DWORD = 13830;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_PROP: ::DWORD = 13831;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_TRANS: ::DWORD = 13832;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_KE: ::DWORD = 13833;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_ID: ::DWORD = 13834;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_CERT: ::DWORD = 13835;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ: ::DWORD = 13836;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_HASH: ::DWORD = 13837;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_SIG: ::DWORD = 13838;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_NONCE: ::DWORD = 13839;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY: ::DWORD = 13840;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_DELETE: ::DWORD = 13841;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR: ::DWORD = 13842;
+pub const ERROR_IPSEC_IKE_INVALID_PAYLOAD: ::DWORD = 13843;
+pub const ERROR_IPSEC_IKE_LOAD_SOFT_SA: ::DWORD = 13844;
+pub const ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN: ::DWORD = 13845;
+pub const ERROR_IPSEC_IKE_INVALID_COOKIE: ::DWORD = 13846;
+pub const ERROR_IPSEC_IKE_NO_PEER_CERT: ::DWORD = 13847;
+pub const ERROR_IPSEC_IKE_PEER_CRL_FAILED: ::DWORD = 13848;
+pub const ERROR_IPSEC_IKE_POLICY_CHANGE: ::DWORD = 13849;
+pub const ERROR_IPSEC_IKE_NO_MM_POLICY: ::DWORD = 13850;
+pub const ERROR_IPSEC_IKE_NOTCBPRIV: ::DWORD = 13851;
+pub const ERROR_IPSEC_IKE_SECLOADFAIL: ::DWORD = 13852;
+pub const ERROR_IPSEC_IKE_FAILSSPINIT: ::DWORD = 13853;
+pub const ERROR_IPSEC_IKE_FAILQUERYSSP: ::DWORD = 13854;
+pub const ERROR_IPSEC_IKE_SRVACQFAIL: ::DWORD = 13855;
+pub const ERROR_IPSEC_IKE_SRVQUERYCRED: ::DWORD = 13856;
+pub const ERROR_IPSEC_IKE_GETSPIFAIL: ::DWORD = 13857;
+pub const ERROR_IPSEC_IKE_INVALID_FILTER: ::DWORD = 13858;
+pub const ERROR_IPSEC_IKE_OUT_OF_MEMORY: ::DWORD = 13859;
+pub const ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED: ::DWORD = 13860;
+pub const ERROR_IPSEC_IKE_INVALID_POLICY: ::DWORD = 13861;
+pub const ERROR_IPSEC_IKE_UNKNOWN_DOI: ::DWORD = 13862;
+pub const ERROR_IPSEC_IKE_INVALID_SITUATION: ::DWORD = 13863;
+pub const ERROR_IPSEC_IKE_DH_FAILURE: ::DWORD = 13864;
+pub const ERROR_IPSEC_IKE_INVALID_GROUP: ::DWORD = 13865;
+pub const ERROR_IPSEC_IKE_ENCRYPT: ::DWORD = 13866;
+pub const ERROR_IPSEC_IKE_DECRYPT: ::DWORD = 13867;
+pub const ERROR_IPSEC_IKE_POLICY_MATCH: ::DWORD = 13868;
+pub const ERROR_IPSEC_IKE_UNSUPPORTED_ID: ::DWORD = 13869;
+pub const ERROR_IPSEC_IKE_INVALID_HASH: ::DWORD = 13870;
+pub const ERROR_IPSEC_IKE_INVALID_HASH_ALG: ::DWORD = 13871;
+pub const ERROR_IPSEC_IKE_INVALID_HASH_SIZE: ::DWORD = 13872;
+pub const ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG: ::DWORD = 13873;
+pub const ERROR_IPSEC_IKE_INVALID_AUTH_ALG: ::DWORD = 13874;
+pub const ERROR_IPSEC_IKE_INVALID_SIG: ::DWORD = 13875;
+pub const ERROR_IPSEC_IKE_LOAD_FAILED: ::DWORD = 13876;
+pub const ERROR_IPSEC_IKE_RPC_DELETE: ::DWORD = 13877;
+pub const ERROR_IPSEC_IKE_BENIGN_REINIT: ::DWORD = 13878;
+pub const ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY: ::DWORD = 13879;
+pub const ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION: ::DWORD = 13880;
+pub const ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN: ::DWORD = 13881;
+pub const ERROR_IPSEC_IKE_MM_LIMIT: ::DWORD = 13882;
+pub const ERROR_IPSEC_IKE_NEGOTIATION_DISABLED: ::DWORD = 13883;
+pub const ERROR_IPSEC_IKE_QM_LIMIT: ::DWORD = 13884;
+pub const ERROR_IPSEC_IKE_MM_EXPIRED: ::DWORD = 13885;
+pub const ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID: ::DWORD = 13886;
+pub const ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH: ::DWORD = 13887;
+pub const ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID: ::DWORD = 13888;
+pub const ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD: ::DWORD = 13889;
+pub const ERROR_IPSEC_IKE_DOS_COOKIE_SENT: ::DWORD = 13890;
+pub const ERROR_IPSEC_IKE_SHUTTING_DOWN: ::DWORD = 13891;
+pub const ERROR_IPSEC_IKE_CGA_AUTH_FAILED: ::DWORD = 13892;
+pub const ERROR_IPSEC_IKE_PROCESS_ERR_NATOA: ::DWORD = 13893;
+pub const ERROR_IPSEC_IKE_INVALID_MM_FOR_QM: ::DWORD = 13894;
+pub const ERROR_IPSEC_IKE_QM_EXPIRED: ::DWORD = 13895;
+pub const ERROR_IPSEC_IKE_TOO_MANY_FILTERS: ::DWORD = 13896;
+pub const ERROR_IPSEC_IKE_NEG_STATUS_END: ::DWORD = 13897;
+pub const ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL: ::DWORD = 13898;
+pub const ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE: ::DWORD = 13899;
+pub const ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING: ::DWORD = 13900;
+pub const ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING: ::DWORD = 13901;
+pub const ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS: ::DWORD = 13902;
+pub const ERROR_IPSEC_IKE_RATELIMIT_DROP: ::DWORD = 13903;
+pub const ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE: ::DWORD = 13904;
+pub const ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE: ::DWORD = 13905;
+pub const ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE: ::DWORD = 13906;
+pub const ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY: ::DWORD = 13907;
+pub const ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE: ::DWORD = 13908;
+pub const ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END: ::DWORD = 13909;
+pub const ERROR_IPSEC_BAD_SPI: ::DWORD = 13910;
+pub const ERROR_IPSEC_SA_LIFETIME_EXPIRED: ::DWORD = 13911;
+pub const ERROR_IPSEC_WRONG_SA: ::DWORD = 13912;
+pub const ERROR_IPSEC_REPLAY_CHECK_FAILED: ::DWORD = 13913;
+pub const ERROR_IPSEC_INVALID_PACKET: ::DWORD = 13914;
+pub const ERROR_IPSEC_INTEGRITY_CHECK_FAILED: ::DWORD = 13915;
+pub const ERROR_IPSEC_CLEAR_TEXT_DROP: ::DWORD = 13916;
+pub const ERROR_IPSEC_AUTH_FIREWALL_DROP: ::DWORD = 13917;
+pub const ERROR_IPSEC_THROTTLE_DROP: ::DWORD = 13918;
+pub const ERROR_IPSEC_DOSP_BLOCK: ::DWORD = 13925;
+pub const ERROR_IPSEC_DOSP_RECEIVED_MULTICAST: ::DWORD = 13926;
+pub const ERROR_IPSEC_DOSP_INVALID_PACKET: ::DWORD = 13927;
+pub const ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED: ::DWORD = 13928;
+pub const ERROR_IPSEC_DOSP_MAX_ENTRIES: ::DWORD = 13929;
+pub const ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED: ::DWORD = 13930;
+pub const ERROR_IPSEC_DOSP_NOT_INSTALLED: ::DWORD = 13931;
+pub const ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES: ::DWORD = 13932;
+pub const ERROR_SXS_SECTION_NOT_FOUND: ::DWORD = 14000;
+pub const ERROR_SXS_CANT_GEN_ACTCTX: ::DWORD = 14001;
+pub const ERROR_SXS_INVALID_ACTCTXDATA_FORMAT: ::DWORD = 14002;
+pub const ERROR_SXS_ASSEMBLY_NOT_FOUND: ::DWORD = 14003;
+pub const ERROR_SXS_MANIFEST_FORMAT_ERROR: ::DWORD = 14004;
+pub const ERROR_SXS_MANIFEST_PARSE_ERROR: ::DWORD = 14005;
+pub const ERROR_SXS_ACTIVATION_CONTEXT_DISABLED: ::DWORD = 14006;
+pub const ERROR_SXS_KEY_NOT_FOUND: ::DWORD = 14007;
+pub const ERROR_SXS_VERSION_CONFLICT: ::DWORD = 14008;
+pub const ERROR_SXS_WRONG_SECTION_TYPE: ::DWORD = 14009;
+pub const ERROR_SXS_THREAD_QUERIES_DISABLED: ::DWORD = 14010;
+pub const ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET: ::DWORD = 14011;
+pub const ERROR_SXS_UNKNOWN_ENCODING_GROUP: ::DWORD = 14012;
+pub const ERROR_SXS_UNKNOWN_ENCODING: ::DWORD = 14013;
+pub const ERROR_SXS_INVALID_XML_NAMESPACE_URI: ::DWORD = 14014;
+pub const ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED: ::DWORD = 14015;
+pub const ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED: ::DWORD = 14016;
+pub const ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE: ::DWORD = 14017;
+pub const ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE: ::DWORD = 14018;
+pub const ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE: ::DWORD = 14019;
+pub const ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT: ::DWORD = 14020;
+pub const ERROR_SXS_DUPLICATE_DLL_NAME: ::DWORD = 14021;
+pub const ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME: ::DWORD = 14022;
+pub const ERROR_SXS_DUPLICATE_CLSID: ::DWORD = 14023;
+pub const ERROR_SXS_DUPLICATE_IID: ::DWORD = 14024;
+pub const ERROR_SXS_DUPLICATE_TLBID: ::DWORD = 14025;
+pub const ERROR_SXS_DUPLICATE_PROGID: ::DWORD = 14026;
+pub const ERROR_SXS_DUPLICATE_ASSEMBLY_NAME: ::DWORD = 14027;
+pub const ERROR_SXS_FILE_HASH_MISMATCH: ::DWORD = 14028;
+pub const ERROR_SXS_POLICY_PARSE_ERROR: ::DWORD = 14029;
+pub const ERROR_SXS_XML_E_MISSINGQUOTE: ::DWORD = 14030;
+pub const ERROR_SXS_XML_E_COMMENTSYNTAX: ::DWORD = 14031;
+pub const ERROR_SXS_XML_E_BADSTARTNAMECHAR: ::DWORD = 14032;
+pub const ERROR_SXS_XML_E_BADNAMECHAR: ::DWORD = 14033;
+pub const ERROR_SXS_XML_E_BADCHARINSTRING: ::DWORD = 14034;
+pub const ERROR_SXS_XML_E_XMLDECLSYNTAX: ::DWORD = 14035;
+pub const ERROR_SXS_XML_E_BADCHARDATA: ::DWORD = 14036;
+pub const ERROR_SXS_XML_E_MISSINGWHITESPACE: ::DWORD = 14037;
+pub const ERROR_SXS_XML_E_EXPECTINGTAGEND: ::DWORD = 14038;
+pub const ERROR_SXS_XML_E_MISSINGSEMICOLON: ::DWORD = 14039;
+pub const ERROR_SXS_XML_E_UNBALANCEDPAREN: ::DWORD = 14040;
+pub const ERROR_SXS_XML_E_INTERNALERROR: ::DWORD = 14041;
+pub const ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE: ::DWORD = 14042;
+pub const ERROR_SXS_XML_E_INCOMPLETE_ENCODING: ::DWORD = 14043;
+pub const ERROR_SXS_XML_E_MISSING_PAREN: ::DWORD = 14044;
+pub const ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE: ::DWORD = 14045;
+pub const ERROR_SXS_XML_E_MULTIPLE_COLONS: ::DWORD = 14046;
+pub const ERROR_SXS_XML_E_INVALID_DECIMAL: ::DWORD = 14047;
+pub const ERROR_SXS_XML_E_INVALID_HEXIDECIMAL: ::DWORD = 14048;
+pub const ERROR_SXS_XML_E_INVALID_UNICODE: ::DWORD = 14049;
+pub const ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK: ::DWORD = 14050;
+pub const ERROR_SXS_XML_E_UNEXPECTEDENDTAG: ::DWORD = 14051;
+pub const ERROR_SXS_XML_E_UNCLOSEDTAG: ::DWORD = 14052;
+pub const ERROR_SXS_XML_E_DUPLICATEATTRIBUTE: ::DWORD = 14053;
+pub const ERROR_SXS_XML_E_MULTIPLEROOTS: ::DWORD = 14054;
+pub const ERROR_SXS_XML_E_INVALIDATROOTLEVEL: ::DWORD = 14055;
+pub const ERROR_SXS_XML_E_BADXMLDECL: ::DWORD = 14056;
+pub const ERROR_SXS_XML_E_MISSINGROOT: ::DWORD = 14057;
+pub const ERROR_SXS_XML_E_UNEXPECTEDEOF: ::DWORD = 14058;
+pub const ERROR_SXS_XML_E_BADPEREFINSUBSET: ::DWORD = 14059;
+pub const ERROR_SXS_XML_E_UNCLOSEDSTARTTAG: ::DWORD = 14060;
+pub const ERROR_SXS_XML_E_UNCLOSEDENDTAG: ::DWORD = 14061;
+pub const ERROR_SXS_XML_E_UNCLOSEDSTRING: ::DWORD = 14062;
+pub const ERROR_SXS_XML_E_UNCLOSEDCOMMENT: ::DWORD = 14063;
+pub const ERROR_SXS_XML_E_UNCLOSEDDECL: ::DWORD = 14064;
+pub const ERROR_SXS_XML_E_UNCLOSEDCDATA: ::DWORD = 14065;
+pub const ERROR_SXS_XML_E_RESERVEDNAMESPACE: ::DWORD = 14066;
+pub const ERROR_SXS_XML_E_INVALIDENCODING: ::DWORD = 14067;
+pub const ERROR_SXS_XML_E_INVALIDSWITCH: ::DWORD = 14068;
+pub const ERROR_SXS_XML_E_BADXMLCASE: ::DWORD = 14069;
+pub const ERROR_SXS_XML_E_INVALID_STANDALONE: ::DWORD = 14070;
+pub const ERROR_SXS_XML_E_UNEXPECTED_STANDALONE: ::DWORD = 14071;
+pub const ERROR_SXS_XML_E_INVALID_VERSION: ::DWORD = 14072;
+pub const ERROR_SXS_XML_E_MISSINGEQUALS: ::DWORD = 14073;
+pub const ERROR_SXS_PROTECTION_RECOVERY_FAILED: ::DWORD = 14074;
+pub const ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT: ::DWORD = 14075;
+pub const ERROR_SXS_PROTECTION_CATALOG_NOT_VALID: ::DWORD = 14076;
+pub const ERROR_SXS_UNTRANSLATABLE_HRESULT: ::DWORD = 14077;
+pub const ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING: ::DWORD = 14078;
+pub const ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE: ::DWORD = 14079;
+pub const ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME: ::DWORD = 14080;
+pub const ERROR_SXS_ASSEMBLY_MISSING: ::DWORD = 14081;
+pub const ERROR_SXS_CORRUPT_ACTIVATION_STACK: ::DWORD = 14082;
+pub const ERROR_SXS_CORRUPTION: ::DWORD = 14083;
+pub const ERROR_SXS_EARLY_DEACTIVATION: ::DWORD = 14084;
+pub const ERROR_SXS_INVALID_DEACTIVATION: ::DWORD = 14085;
+pub const ERROR_SXS_MULTIPLE_DEACTIVATION: ::DWORD = 14086;
+pub const ERROR_SXS_PROCESS_TERMINATION_REQUESTED: ::DWORD = 14087;
+pub const ERROR_SXS_RELEASE_ACTIVATION_CONTEXT: ::DWORD = 14088;
+pub const ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY: ::DWORD = 14089;
+pub const ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE: ::DWORD = 14090;
+pub const ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME: ::DWORD = 14091;
+pub const ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE: ::DWORD = 14092;
+pub const ERROR_SXS_IDENTITY_PARSE_ERROR: ::DWORD = 14093;
+pub const ERROR_MALFORMED_SUBSTITUTION_STRING: ::DWORD = 14094;
+pub const ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN: ::DWORD = 14095;
+pub const ERROR_UNMAPPED_SUBSTITUTION_STRING: ::DWORD = 14096;
+pub const ERROR_SXS_ASSEMBLY_NOT_LOCKED: ::DWORD = 14097;
+pub const ERROR_SXS_COMPONENT_STORE_CORRUPT: ::DWORD = 14098;
+pub const ERROR_ADVANCED_INSTALLER_FAILED: ::DWORD = 14099;
+pub const ERROR_XML_ENCODING_MISMATCH: ::DWORD = 14100;
+pub const ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT: ::DWORD = 14101;
+pub const ERROR_SXS_IDENTITIES_DIFFERENT: ::DWORD = 14102;
+pub const ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT: ::DWORD = 14103;
+pub const ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY: ::DWORD = 14104;
+pub const ERROR_SXS_MANIFEST_TOO_BIG: ::DWORD = 14105;
+pub const ERROR_SXS_SETTING_NOT_REGISTERED: ::DWORD = 14106;
+pub const ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE: ::DWORD = 14107;
+pub const ERROR_SMI_PRIMITIVE_INSTALLER_FAILED: ::DWORD = 14108;
+pub const ERROR_GENERIC_COMMAND_FAILED: ::DWORD = 14109;
+pub const ERROR_SXS_FILE_HASH_MISSING: ::DWORD = 14110;
+pub const ERROR_EVT_INVALID_CHANNEL_PATH: ::DWORD = 15000;
+pub const ERROR_EVT_INVALID_QUERY: ::DWORD = 15001;
+pub const ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND: ::DWORD = 15002;
+pub const ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND: ::DWORD = 15003;
+pub const ERROR_EVT_INVALID_PUBLISHER_NAME: ::DWORD = 15004;
+pub const ERROR_EVT_INVALID_EVENT_DATA: ::DWORD = 15005;
+pub const ERROR_EVT_CHANNEL_NOT_FOUND: ::DWORD = 15007;
+pub const ERROR_EVT_MALFORMED_XML_TEXT: ::DWORD = 15008;
+pub const ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL: ::DWORD = 15009;
+pub const ERROR_EVT_CONFIGURATION_ERROR: ::DWORD = 15010;
+pub const ERROR_EVT_QUERY_RESULT_STALE: ::DWORD = 15011;
+pub const ERROR_EVT_QUERY_RESULT_INVALID_POSITION: ::DWORD = 15012;
+pub const ERROR_EVT_NON_VALIDATING_MSXML: ::DWORD = 15013;
+pub const ERROR_EVT_FILTER_ALREADYSCOPED: ::DWORD = 15014;
+pub const ERROR_EVT_FILTER_NOTELTSET: ::DWORD = 15015;
+pub const ERROR_EVT_FILTER_INVARG: ::DWORD = 15016;
+pub const ERROR_EVT_FILTER_INVTEST: ::DWORD = 15017;
+pub const ERROR_EVT_FILTER_INVTYPE: ::DWORD = 15018;
+pub const ERROR_EVT_FILTER_PARSEERR: ::DWORD = 15019;
+pub const ERROR_EVT_FILTER_UNSUPPORTEDOP: ::DWORD = 15020;
+pub const ERROR_EVT_FILTER_UNEXPECTEDTOKEN: ::DWORD = 15021;
+pub const ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL: ::DWORD = 15022;
+pub const ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE: ::DWORD = 15023;
+pub const ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE: ::DWORD = 15024;
+pub const ERROR_EVT_CHANNEL_CANNOT_ACTIVATE: ::DWORD = 15025;
+pub const ERROR_EVT_FILTER_TOO_COMPLEX: ::DWORD = 15026;
+pub const ERROR_EVT_MESSAGE_NOT_FOUND: ::DWORD = 15027;
+pub const ERROR_EVT_MESSAGE_ID_NOT_FOUND: ::DWORD = 15028;
+pub const ERROR_EVT_UNRESOLVED_VALUE_INSERT: ::DWORD = 15029;
+pub const ERROR_EVT_UNRESOLVED_PARAMETER_INSERT: ::DWORD = 15030;
+pub const ERROR_EVT_MAX_INSERTS_REACHED: ::DWORD = 15031;
+pub const ERROR_EVT_EVENT_DEFINITION_NOT_FOUND: ::DWORD = 15032;
+pub const ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND: ::DWORD = 15033;
+pub const ERROR_EVT_VERSION_TOO_OLD: ::DWORD = 15034;
+pub const ERROR_EVT_VERSION_TOO_NEW: ::DWORD = 15035;
+pub const ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY: ::DWORD = 15036;
+pub const ERROR_EVT_PUBLISHER_DISABLED: ::DWORD = 15037;
+pub const ERROR_EVT_FILTER_OUT_OF_RANGE: ::DWORD = 15038;
+pub const ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE: ::DWORD = 15080;
+pub const ERROR_EC_LOG_DISABLED: ::DWORD = 15081;
+pub const ERROR_EC_CIRCULAR_FORWARDING: ::DWORD = 15082;
+pub const ERROR_EC_CREDSTORE_FULL: ::DWORD = 15083;
+pub const ERROR_EC_CRED_NOT_FOUND: ::DWORD = 15084;
+pub const ERROR_EC_NO_ACTIVE_CHANNEL: ::DWORD = 15085;
+pub const ERROR_MUI_FILE_NOT_FOUND: ::DWORD = 15100;
+pub const ERROR_MUI_INVALID_FILE: ::DWORD = 15101;
+pub const ERROR_MUI_INVALID_RC_CONFIG: ::DWORD = 15102;
+pub const ERROR_MUI_INVALID_LOCALE_NAME: ::DWORD = 15103;
+pub const ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME: ::DWORD = 15104;
+pub const ERROR_MUI_FILE_NOT_LOADED: ::DWORD = 15105;
+pub const ERROR_RESOURCE_ENUM_USER_STOP: ::DWORD = 15106;
+pub const ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED: ::DWORD = 15107;
+pub const ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME: ::DWORD = 15108;
+pub const ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE: ::DWORD = 15110;
+pub const ERROR_MRM_INVALID_PRICONFIG: ::DWORD = 15111;
+pub const ERROR_MRM_INVALID_FILE_TYPE: ::DWORD = 15112;
+pub const ERROR_MRM_UNKNOWN_QUALIFIER: ::DWORD = 15113;
+pub const ERROR_MRM_INVALID_QUALIFIER_VALUE: ::DWORD = 15114;
+pub const ERROR_MRM_NO_CANDIDATE: ::DWORD = 15115;
+pub const ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE: ::DWORD = 15116;
+pub const ERROR_MRM_RESOURCE_TYPE_MISMATCH: ::DWORD = 15117;
+pub const ERROR_MRM_DUPLICATE_MAP_NAME: ::DWORD = 15118;
+pub const ERROR_MRM_DUPLICATE_ENTRY: ::DWORD = 15119;
+pub const ERROR_MRM_INVALID_RESOURCE_IDENTIFIER: ::DWORD = 15120;
+pub const ERROR_MRM_FILEPATH_TOO_LONG: ::DWORD = 15121;
+pub const ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE: ::DWORD = 15122;
+pub const ERROR_MRM_INVALID_PRI_FILE: ::DWORD = 15126;
+pub const ERROR_MRM_NAMED_RESOURCE_NOT_FOUND: ::DWORD = 15127;
+pub const ERROR_MRM_MAP_NOT_FOUND: ::DWORD = 15135;
+pub const ERROR_MRM_UNSUPPORTED_PROFILE_TYPE: ::DWORD = 15136;
+pub const ERROR_MRM_INVALID_QUALIFIER_OPERATOR: ::DWORD = 15137;
+pub const ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE: ::DWORD = 15138;
+pub const ERROR_MRM_AUTOMERGE_ENABLED: ::DWORD = 15139;
+pub const ERROR_MRM_TOO_MANY_RESOURCES: ::DWORD = 15140;
+pub const ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE: ::DWORD = 15141;
+pub const ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE: ::DWORD = 15142;
+pub const ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD: ::DWORD = 15143;
+pub const ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST: ::DWORD = 15144;
+pub const ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT: ::DWORD = 15145;
+pub const ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE: ::DWORD = 15146;
+pub const ERROR_MRM_GENERATION_COUNT_MISMATCH: ::DWORD = 15147;
+pub const ERROR_MCA_INVALID_CAPABILITIES_STRING: ::DWORD = 15200;
+pub const ERROR_MCA_INVALID_VCP_VERSION: ::DWORD = 15201;
+pub const ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION: ::DWORD = 15202;
+pub const ERROR_MCA_MCCS_VERSION_MISMATCH: ::DWORD = 15203;
+pub const ERROR_MCA_UNSUPPORTED_MCCS_VERSION: ::DWORD = 15204;
+pub const ERROR_MCA_INTERNAL_ERROR: ::DWORD = 15205;
+pub const ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED: ::DWORD = 15206;
+pub const ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE: ::DWORD = 15207;
+pub const ERROR_AMBIGUOUS_SYSTEM_DEVICE: ::DWORD = 15250;
+pub const ERROR_SYSTEM_DEVICE_NOT_FOUND: ::DWORD = 15299;
+pub const ERROR_HASH_NOT_SUPPORTED: ::DWORD = 15300;
+pub const ERROR_HASH_NOT_PRESENT: ::DWORD = 15301;
+pub const ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED: ::DWORD = 15321;
+pub const ERROR_GPIO_CLIENT_INFORMATION_INVALID: ::DWORD = 15322;
+pub const ERROR_GPIO_VERSION_NOT_SUPPORTED: ::DWORD = 15323;
+pub const ERROR_GPIO_INVALID_REGISTRATION_PACKET: ::DWORD = 15324;
+pub const ERROR_GPIO_OPERATION_DENIED: ::DWORD = 15325;
+pub const ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE: ::DWORD = 15326;
+pub const ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED: ::DWORD = 15327;
+pub const ERROR_CANNOT_SWITCH_RUNLEVEL: ::DWORD = 15400;
+pub const ERROR_INVALID_RUNLEVEL_SETTING: ::DWORD = 15401;
+pub const ERROR_RUNLEVEL_SWITCH_TIMEOUT: ::DWORD = 15402;
+pub const ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT: ::DWORD = 15403;
+pub const ERROR_RUNLEVEL_SWITCH_IN_PROGRESS: ::DWORD = 15404;
+pub const ERROR_SERVICES_FAILED_AUTOSTART: ::DWORD = 15405;
+pub const ERROR_COM_TASK_STOP_PENDING: ::DWORD = 15501;
+pub const ERROR_INSTALL_OPEN_PACKAGE_FAILED: ::DWORD = 15600;
+pub const ERROR_INSTALL_PACKAGE_NOT_FOUND: ::DWORD = 15601;
+pub const ERROR_INSTALL_INVALID_PACKAGE: ::DWORD = 15602;
+pub const ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED: ::DWORD = 15603;
+pub const ERROR_INSTALL_OUT_OF_DISK_SPACE: ::DWORD = 15604;
+pub const ERROR_INSTALL_NETWORK_FAILURE: ::DWORD = 15605;
+pub const ERROR_INSTALL_REGISTRATION_FAILURE: ::DWORD = 15606;
+pub const ERROR_INSTALL_DEREGISTRATION_FAILURE: ::DWORD = 15607;
+pub const ERROR_INSTALL_CANCEL: ::DWORD = 15608;
+pub const ERROR_INSTALL_FAILED: ::DWORD = 15609;
+pub const ERROR_REMOVE_FAILED: ::DWORD = 15610;
+pub const ERROR_PACKAGE_ALREADY_EXISTS: ::DWORD = 15611;
+pub const ERROR_NEEDS_REMEDIATION: ::DWORD = 15612;
+pub const ERROR_INSTALL_PREREQUISITE_FAILED: ::DWORD = 15613;
+pub const ERROR_PACKAGE_REPOSITORY_CORRUPTED: ::DWORD = 15614;
+pub const ERROR_INSTALL_POLICY_FAILURE: ::DWORD = 15615;
+pub const ERROR_PACKAGE_UPDATING: ::DWORD = 15616;
+pub const ERROR_DEPLOYMENT_BLOCKED_BY_POLICY: ::DWORD = 15617;
+pub const ERROR_PACKAGES_IN_USE: ::DWORD = 15618;
+pub const ERROR_RECOVERY_FILE_CORRUPT: ::DWORD = 15619;
+pub const ERROR_INVALID_STAGED_SIGNATURE: ::DWORD = 15620;
+pub const ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED: ::DWORD = 15621;
+pub const ERROR_INSTALL_PACKAGE_DOWNGRADE: ::DWORD = 15622;
+pub const ERROR_SYSTEM_NEEDS_REMEDIATION: ::DWORD = 15623;
+pub const ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN: ::DWORD = 15624;
+pub const ERROR_RESILIENCY_FILE_CORRUPT: ::DWORD = 15625;
+pub const ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING: ::DWORD = 15626;
+pub const APPMODEL_ERROR_NO_PACKAGE: ::DWORD = 15700;
+pub const APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT: ::DWORD = 15701;
+pub const APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT: ::DWORD = 15702;
+pub const APPMODEL_ERROR_NO_APPLICATION: ::DWORD = 15703;
+pub const APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED: ::DWORD = 15704;
+pub const APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID: ::DWORD = 15705;
+pub const ERROR_STATE_LOAD_STORE_FAILED: ::DWORD = 15800;
+pub const ERROR_STATE_GET_VERSION_FAILED: ::DWORD = 15801;
+pub const ERROR_STATE_SET_VERSION_FAILED: ::DWORD = 15802;
+pub const ERROR_STATE_STRUCTURED_RESET_FAILED: ::DWORD = 15803;
+pub const ERROR_STATE_OPEN_CONTAINER_FAILED: ::DWORD = 15804;
+pub const ERROR_STATE_CREATE_CONTAINER_FAILED: ::DWORD = 15805;
+pub const ERROR_STATE_DELETE_CONTAINER_FAILED: ::DWORD = 15806;
+pub const ERROR_STATE_READ_SETTING_FAILED: ::DWORD = 15807;
+pub const ERROR_STATE_WRITE_SETTING_FAILED: ::DWORD = 15808;
+pub const ERROR_STATE_DELETE_SETTING_FAILED: ::DWORD = 15809;
+pub const ERROR_STATE_QUERY_SETTING_FAILED: ::DWORD = 15810;
+pub const ERROR_STATE_READ_COMPOSITE_SETTING_FAILED: ::DWORD = 15811;
+pub const ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED: ::DWORD = 15812;
+pub const ERROR_STATE_ENUMERATE_CONTAINER_FAILED: ::DWORD = 15813;
+pub const ERROR_STATE_ENUMERATE_SETTINGS_FAILED: ::DWORD = 15814;
+pub const ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED: ::DWORD = 15815;
+pub const ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED: ::DWORD = 15816;
+pub const ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED: ::DWORD = 15817;
+pub const ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED: ::DWORD = 15818;
+pub const ERROR_API_UNAVAILABLE: ::DWORD = 15841;
+pub const STORE_ERROR_UNLICENSED: ::DWORD = 15861;
+pub const STORE_ERROR_UNLICENSED_USER: ::DWORD = 15862;
+pub const STORE_ERROR_PENDING_COM_TRANSACTION: ::DWORD = 15863;
+pub const STORE_ERROR_LICENSE_REVOKED: ::DWORD = 15864;
+pub const SEVERITY_SUCCESS: HRESULT = 0;
+pub const SEVERITY_ERROR: HRESULT = 1;
+#[inline]
+pub fn MAKE_HRESULT(sev: HRESULT, fac: HRESULT, code: HRESULT) -> HRESULT {
+ (sev << 31) | (fac << 16) | code
+}
+pub type HRESULT = ::c_long;
+pub const NOERROR: HRESULT = 0;
+pub const E_UNEXPECTED: HRESULT = 0x8000FFFFu32 as HRESULT;
+pub const E_NOTIMPL: HRESULT = 0x80004001u32 as HRESULT;
+pub const E_OUTOFMEMORY: HRESULT = 0x8007000Eu32 as HRESULT;
+pub const E_INVALIDARG: HRESULT = 0x80070057u32 as HRESULT;
+pub const E_NOINTERFACE: HRESULT = 0x80004002u32 as HRESULT;
+pub const E_POINTER: HRESULT = 0x80004003u32 as HRESULT;
+pub const E_HANDLE: HRESULT = 0x80070006u32 as HRESULT;
+pub const E_ABORT: HRESULT = 0x80004004u32 as HRESULT;
+pub const E_FAIL: HRESULT = 0x80004005u32 as HRESULT;
+pub const E_ACCESSDENIED: HRESULT = 0x80070005u32 as HRESULT;
+pub const E_PENDING: HRESULT = 0x8000000Au32 as HRESULT;
+pub const E_BOUNDS: HRESULT = 0x8000000Bu32 as HRESULT;
+pub const E_CHANGED_STATE: HRESULT = 0x8000000Cu32 as HRESULT;
+pub const E_ILLEGAL_STATE_CHANGE: HRESULT = 0x8000000Du32 as HRESULT;
+pub const E_ILLEGAL_METHOD_CALL: HRESULT = 0x8000000Eu32 as HRESULT;
+pub const RO_E_METADATA_NAME_NOT_FOUND: HRESULT = 0x8000000Fu32 as HRESULT;
+pub const RO_E_METADATA_NAME_IS_NAMESPACE: HRESULT = 0x80000010u32 as HRESULT;
+pub const RO_E_METADATA_INVALID_TYPE_FORMAT: HRESULT = 0x80000011u32 as HRESULT;
+pub const RO_E_INVALID_METADATA_FILE: HRESULT = 0x80000012u32 as HRESULT;
+pub const RO_E_CLOSED: HRESULT = 0x80000013u32 as HRESULT;
+pub const RO_E_EXCLUSIVE_WRITE: HRESULT = 0x80000014u32 as HRESULT;
+pub const RO_E_CHANGE_NOTIFICATION_IN_PROGRESS: HRESULT = 0x80000015u32 as HRESULT;
+pub const RO_E_ERROR_STRING_NOT_FOUND: HRESULT = 0x80000016u32 as HRESULT;
+pub const E_STRING_NOT_NULL_TERMINATED: HRESULT = 0x80000017u32 as HRESULT;
+pub const E_ILLEGAL_DELEGATE_ASSIGNMENT: HRESULT = 0x80000018u32 as HRESULT;
+pub const E_ASYNC_OPERATION_NOT_STARTED: HRESULT = 0x80000019u32 as HRESULT;
+pub const E_APPLICATION_EXITING: HRESULT = 0x8000001Au32 as HRESULT;
+pub const E_APPLICATION_VIEW_EXITING: HRESULT = 0x8000001Bu32 as HRESULT;
+pub const RO_E_MUST_BE_AGILE: HRESULT = 0x8000001Cu32 as HRESULT;
+pub const RO_E_UNSUPPORTED_FROM_MTA: HRESULT = 0x8000001Du32 as HRESULT;
+pub const RO_E_COMMITTED: HRESULT = 0x8000001Eu32 as HRESULT;
+pub const RO_E_BLOCKED_CROSS_ASTA_CALL: HRESULT = 0x8000001Fu32 as HRESULT;
+pub const CO_E_INIT_TLS: HRESULT = 0x80004006u32 as HRESULT;
+pub const CO_E_INIT_SHARED_ALLOCATOR: HRESULT = 0x80004007u32 as HRESULT;
+pub const CO_E_INIT_MEMORY_ALLOCATOR: HRESULT = 0x80004008u32 as HRESULT;
+pub const CO_E_INIT_CLASS_CACHE: HRESULT = 0x80004009u32 as HRESULT;
+pub const CO_E_INIT_RPC_CHANNEL: HRESULT = 0x8000400Au32 as HRESULT;
+pub const CO_E_INIT_TLS_SET_CHANNEL_CONTROL: HRESULT = 0x8000400Bu32 as HRESULT;
+pub const CO_E_INIT_TLS_CHANNEL_CONTROL: HRESULT = 0x8000400Cu32 as HRESULT;
+pub const CO_E_INIT_UNACCEPTED_USER_ALLOCATOR: HRESULT = 0x8000400Du32 as HRESULT;
+pub const CO_E_INIT_SCM_MUTEX_EXISTS: HRESULT = 0x8000400Eu32 as HRESULT;
+pub const CO_E_INIT_SCM_FILE_MAPPING_EXISTS: HRESULT = 0x8000400Fu32 as HRESULT;
+pub const CO_E_INIT_SCM_MAP_VIEW_OF_FILE: HRESULT = 0x80004010u32 as HRESULT;
+pub const CO_E_INIT_SCM_EXEC_FAILURE: HRESULT = 0x80004011u32 as HRESULT;
+pub const CO_E_INIT_ONLY_SINGLE_THREADED: HRESULT = 0x80004012u32 as HRESULT;
+pub const CO_E_CANT_REMOTE: HRESULT = 0x80004013u32 as HRESULT;
+pub const CO_E_BAD_SERVER_NAME: HRESULT = 0x80004014u32 as HRESULT;
+pub const CO_E_WRONG_SERVER_IDENTITY: HRESULT = 0x80004015u32 as HRESULT;
+pub const CO_E_OLE1DDE_DISABLED: HRESULT = 0x80004016u32 as HRESULT;
+pub const CO_E_RUNAS_SYNTAX: HRESULT = 0x80004017u32 as HRESULT;
+pub const CO_E_CREATEPROCESS_FAILURE: HRESULT = 0x80004018u32 as HRESULT;
+pub const CO_E_RUNAS_CREATEPROCESS_FAILURE: HRESULT = 0x80004019u32 as HRESULT;
+pub const CO_E_RUNAS_LOGON_FAILURE: HRESULT = 0x8000401Au32 as HRESULT;
+pub const CO_E_LAUNCH_PERMSSION_DENIED: HRESULT = 0x8000401Bu32 as HRESULT;
+pub const CO_E_START_SERVICE_FAILURE: HRESULT = 0x8000401Cu32 as HRESULT;
+pub const CO_E_REMOTE_COMMUNICATION_FAILURE: HRESULT = 0x8000401Du32 as HRESULT;
+pub const CO_E_SERVER_START_TIMEOUT: HRESULT = 0x8000401Eu32 as HRESULT;
+pub const CO_E_CLSREG_INCONSISTENT: HRESULT = 0x8000401Fu32 as HRESULT;
+pub const CO_E_IIDREG_INCONSISTENT: HRESULT = 0x80004020u32 as HRESULT;
+pub const CO_E_NOT_SUPPORTED: HRESULT = 0x80004021u32 as HRESULT;
+pub const CO_E_RELOAD_DLL: HRESULT = 0x80004022u32 as HRESULT;
+pub const CO_E_MSI_ERROR: HRESULT = 0x80004023u32 as HRESULT;
+pub const CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT: HRESULT = 0x80004024u32 as HRESULT;
+pub const CO_E_SERVER_PAUSED: HRESULT = 0x80004025u32 as HRESULT;
+pub const CO_E_SERVER_NOT_PAUSED: HRESULT = 0x80004026u32 as HRESULT;
+pub const CO_E_CLASS_DISABLED: HRESULT = 0x80004027u32 as HRESULT;
+pub const CO_E_CLRNOTAVAILABLE: HRESULT = 0x80004028u32 as HRESULT;
+pub const CO_E_ASYNC_WORK_REJECTED: HRESULT = 0x80004029u32 as HRESULT;
+pub const CO_E_SERVER_INIT_TIMEOUT: HRESULT = 0x8000402Au32 as HRESULT;
+pub const CO_E_NO_SECCTX_IN_ACTIVATE: HRESULT = 0x8000402Bu32 as HRESULT;
+pub const CO_E_TRACKER_CONFIG: HRESULT = 0x80004030u32 as HRESULT;
+pub const CO_E_THREADPOOL_CONFIG: HRESULT = 0x80004031u32 as HRESULT;
+pub const CO_E_SXS_CONFIG: HRESULT = 0x80004032u32 as HRESULT;
+pub const CO_E_MALFORMED_SPN: HRESULT = 0x80004033u32 as HRESULT;
+pub const CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN: HRESULT = 0x80004034u32 as HRESULT;
+pub const CO_E_PREMATURE_STUB_RUNDOWN: HRESULT = 0x80004035u32 as HRESULT;
+pub const S_OK: HRESULT = 0;
+pub const S_FALSE: HRESULT = 1;
+pub const OLE_E_FIRST: HRESULT = 0x80040000u32 as HRESULT;
+pub const OLE_E_LAST: HRESULT = 0x800400FFu32 as HRESULT;
+pub const OLE_S_FIRST: HRESULT = 0x00040000;
+pub const OLE_S_LAST: HRESULT = 0x000400FF;
+pub const OLE_E_OLEVERB: HRESULT = 0x80040000u32 as HRESULT;
+pub const OLE_E_ADVF: HRESULT = 0x80040001u32 as HRESULT;
+pub const OLE_E_ENUM_NOMORE: HRESULT = 0x80040002u32 as HRESULT;
+pub const OLE_E_ADVISENOTSUPPORTED: HRESULT = 0x80040003u32 as HRESULT;
+pub const OLE_E_NOCONNECTION: HRESULT = 0x80040004u32 as HRESULT;
+pub const OLE_E_NOTRUNNING: HRESULT = 0x80040005u32 as HRESULT;
+pub const OLE_E_NOCACHE: HRESULT = 0x80040006u32 as HRESULT;
+pub const OLE_E_BLANK: HRESULT = 0x80040007u32 as HRESULT;
+pub const OLE_E_CLASSDIFF: HRESULT = 0x80040008u32 as HRESULT;
+pub const OLE_E_CANT_GETMONIKER: HRESULT = 0x80040009u32 as HRESULT;
+pub const OLE_E_CANT_BINDTOSOURCE: HRESULT = 0x8004000Au32 as HRESULT;
+pub const OLE_E_STATIC: HRESULT = 0x8004000Bu32 as HRESULT;
+pub const OLE_E_PROMPTSAVECANCELLED: HRESULT = 0x8004000Cu32 as HRESULT;
+pub const OLE_E_INVALIDRECT: HRESULT = 0x8004000Du32 as HRESULT;
+pub const OLE_E_WRONGCOMPOBJ: HRESULT = 0x8004000Eu32 as HRESULT;
+pub const OLE_E_INVALIDHWND: HRESULT = 0x8004000Fu32 as HRESULT;
+pub const OLE_E_NOT_INPLACEACTIVE: HRESULT = 0x80040010u32 as HRESULT;
+pub const OLE_E_CANTCONVERT: HRESULT = 0x80040011u32 as HRESULT;
+pub const OLE_E_NOSTORAGE: HRESULT = 0x80040012u32 as HRESULT;
+pub const DV_E_FORMATETC: HRESULT = 0x80040064u32 as HRESULT;
+pub const DV_E_DVTARGETDEVICE: HRESULT = 0x80040065u32 as HRESULT;
+pub const DV_E_STGMEDIUM: HRESULT = 0x80040066u32 as HRESULT;
+pub const DV_E_STATDATA: HRESULT = 0x80040067u32 as HRESULT;
+pub const DV_E_LINDEX: HRESULT = 0x80040068u32 as HRESULT;
+pub const DV_E_TYMED: HRESULT = 0x80040069u32 as HRESULT;
+pub const DV_E_CLIPFORMAT: HRESULT = 0x8004006Au32 as HRESULT;
+pub const DV_E_DVASPECT: HRESULT = 0x8004006Bu32 as HRESULT;
+pub const DV_E_DVTARGETDEVICE_SIZE: HRESULT = 0x8004006Cu32 as HRESULT;
+pub const DV_E_NOIVIEWOBJECT: HRESULT = 0x8004006Du32 as HRESULT;
+pub const DRAGDROP_E_FIRST: HRESULT = 0x80040100u32 as HRESULT;
+pub const DRAGDROP_E_LAST: HRESULT = 0x8004010Fu32 as HRESULT;
+pub const DRAGDROP_S_FIRST: HRESULT = 0x00040100;
+pub const DRAGDROP_S_LAST: HRESULT = 0x0004010F;
+pub const DRAGDROP_E_NOTREGISTERED: HRESULT = 0x80040100u32 as HRESULT;
+pub const DRAGDROP_E_ALREADYREGISTERED: HRESULT = 0x80040101u32 as HRESULT;
+pub const DRAGDROP_E_INVALIDHWND: HRESULT = 0x80040102u32 as HRESULT;
+pub const DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED: HRESULT = 0x80040103u32 as HRESULT;
+pub const CLASSFACTORY_E_FIRST: HRESULT = 0x80040110u32 as HRESULT;
+pub const CLASSFACTORY_E_LAST: HRESULT = 0x8004011Fu32 as HRESULT;
+pub const CLASSFACTORY_S_FIRST: HRESULT = 0x00040110;
+pub const CLASSFACTORY_S_LAST: HRESULT = 0x0004011F;
+pub const CLASS_E_NOAGGREGATION: HRESULT = 0x80040110u32 as HRESULT;
+pub const CLASS_E_CLASSNOTAVAILABLE: HRESULT = 0x80040111u32 as HRESULT;
+pub const CLASS_E_NOTLICENSED: HRESULT = 0x80040112u32 as HRESULT;
+pub const MARSHAL_E_FIRST: HRESULT = 0x80040120u32 as HRESULT;
+pub const MARSHAL_E_LAST: HRESULT = 0x8004012Fu32 as HRESULT;
+pub const MARSHAL_S_FIRST: HRESULT = 0x00040120;
+pub const MARSHAL_S_LAST: HRESULT = 0x0004012F;
+pub const DATA_E_FIRST: HRESULT = 0x80040130u32 as HRESULT;
+pub const DATA_E_LAST: HRESULT = 0x8004013Fu32 as HRESULT;
+pub const DATA_S_FIRST: HRESULT = 0x00040130;
+pub const DATA_S_LAST: HRESULT = 0x0004013F;
+pub const VIEW_E_FIRST: HRESULT = 0x80040140u32 as HRESULT;
+pub const VIEW_E_LAST: HRESULT = 0x8004014Fu32 as HRESULT;
+pub const VIEW_S_FIRST: HRESULT = 0x00040140;
+pub const VIEW_S_LAST: HRESULT = 0x0004014F;
+pub const VIEW_E_DRAW: HRESULT = 0x80040140u32 as HRESULT;
+pub const REGDB_E_FIRST: HRESULT = 0x80040150u32 as HRESULT;
+pub const REGDB_E_LAST: HRESULT = 0x8004015Fu32 as HRESULT;
+pub const REGDB_S_FIRST: HRESULT = 0x00040150;
+pub const REGDB_S_LAST: HRESULT = 0x0004015F;
+pub const REGDB_E_READREGDB: HRESULT = 0x80040150u32 as HRESULT;
+pub const REGDB_E_WRITEREGDB: HRESULT = 0x80040151u32 as HRESULT;
+pub const REGDB_E_KEYMISSING: HRESULT = 0x80040152u32 as HRESULT;
+pub const REGDB_E_INVALIDVALUE: HRESULT = 0x80040153u32 as HRESULT;
+pub const REGDB_E_CLASSNOTREG: HRESULT = 0x80040154u32 as HRESULT;
+pub const REGDB_E_IIDNOTREG: HRESULT = 0x80040155u32 as HRESULT;
+pub const REGDB_E_BADTHREADINGMODEL: HRESULT = 0x80040156u32 as HRESULT;
+pub const CAT_E_FIRST: HRESULT = 0x80040160u32 as HRESULT;
+pub const CAT_E_LAST: HRESULT = 0x80040161u32 as HRESULT;
+pub const CAT_E_CATIDNOEXIST: HRESULT = 0x80040160u32 as HRESULT;
+pub const CAT_E_NODESCRIPTION: HRESULT = 0x80040161u32 as HRESULT;
+pub const CS_E_FIRST: HRESULT = 0x80040164u32 as HRESULT;
+pub const CS_E_LAST: HRESULT = 0x8004016Fu32 as HRESULT;
+pub const CS_E_PACKAGE_NOTFOUND: HRESULT = 0x80040164u32 as HRESULT;
+pub const CS_E_NOT_DELETABLE: HRESULT = 0x80040165u32 as HRESULT;
+pub const CS_E_CLASS_NOTFOUND: HRESULT = 0x80040166u32 as HRESULT;
+pub const CS_E_INVALID_VERSION: HRESULT = 0x80040167u32 as HRESULT;
+pub const CS_E_NO_CLASSSTORE: HRESULT = 0x80040168u32 as HRESULT;
+pub const CS_E_OBJECT_NOTFOUND: HRESULT = 0x80040169u32 as HRESULT;
+pub const CS_E_OBJECT_ALREADY_EXISTS: HRESULT = 0x8004016Au32 as HRESULT;
+pub const CS_E_INVALID_PATH: HRESULT = 0x8004016Bu32 as HRESULT;
+pub const CS_E_NETWORK_ERROR: HRESULT = 0x8004016Cu32 as HRESULT;
+pub const CS_E_ADMIN_LIMIT_EXCEEDED: HRESULT = 0x8004016Du32 as HRESULT;
+pub const CS_E_SCHEMA_MISMATCH: HRESULT = 0x8004016Eu32 as HRESULT;
+pub const CS_E_INTERNAL_ERROR: HRESULT = 0x8004016Fu32 as HRESULT;
+pub const CACHE_E_FIRST: HRESULT = 0x80040170u32 as HRESULT;
+pub const CACHE_E_LAST: HRESULT = 0x8004017Fu32 as HRESULT;
+pub const CACHE_S_FIRST: HRESULT = 0x00040170;
+pub const CACHE_S_LAST: HRESULT = 0x0004017F;
+pub const CACHE_E_NOCACHE_UPDATED: HRESULT = 0x80040170u32 as HRESULT;
+pub const OLEOBJ_E_FIRST: HRESULT = 0x80040180u32 as HRESULT;
+pub const OLEOBJ_E_LAST: HRESULT = 0x8004018Fu32 as HRESULT;
+pub const OLEOBJ_S_FIRST: HRESULT = 0x00040180;
+pub const OLEOBJ_S_LAST: HRESULT = 0x0004018F;
+pub const OLEOBJ_E_NOVERBS: HRESULT = 0x80040180u32 as HRESULT;
+pub const OLEOBJ_E_INVALIDVERB: HRESULT = 0x80040181u32 as HRESULT;
+pub const CLIENTSITE_E_FIRST: HRESULT = 0x80040190u32 as HRESULT;
+pub const CLIENTSITE_E_LAST: HRESULT = 0x8004019Fu32 as HRESULT;
+pub const CLIENTSITE_S_FIRST: HRESULT = 0x00040190;
+pub const CLIENTSITE_S_LAST: HRESULT = 0x0004019F;
+pub const INPLACE_E_NOTUNDOABLE: HRESULT = 0x800401A0u32 as HRESULT;
+pub const INPLACE_E_NOTOOLSPACE: HRESULT = 0x800401A1u32 as HRESULT;
+pub const INPLACE_E_FIRST: HRESULT = 0x800401A0u32 as HRESULT;
+pub const INPLACE_E_LAST: HRESULT = 0x800401AFu32 as HRESULT;
+pub const INPLACE_S_FIRST: HRESULT = 0x000401A0;
+pub const INPLACE_S_LAST: HRESULT = 0x000401AF;
+pub const ENUM_E_FIRST: HRESULT = 0x800401B0u32 as HRESULT;
+pub const ENUM_E_LAST: HRESULT = 0x800401BFu32 as HRESULT;
+pub const ENUM_S_FIRST: HRESULT = 0x000401B0;
+pub const ENUM_S_LAST: HRESULT = 0x000401BF;
+pub const CONVERT10_E_FIRST: HRESULT = 0x800401C0u32 as HRESULT;
+pub const CONVERT10_E_LAST: HRESULT = 0x800401CFu32 as HRESULT;
+pub const CONVERT10_S_FIRST: HRESULT = 0x000401C0;
+pub const CONVERT10_S_LAST: HRESULT = 0x000401CF;
+pub const CONVERT10_E_OLESTREAM_GET: HRESULT = 0x800401C0u32 as HRESULT;
+pub const CONVERT10_E_OLESTREAM_PUT: HRESULT = 0x800401C1u32 as HRESULT;
+pub const CONVERT10_E_OLESTREAM_FMT: HRESULT = 0x800401C2u32 as HRESULT;
+pub const CONVERT10_E_OLESTREAM_BITMAP_TO_DIB: HRESULT = 0x800401C3u32 as HRESULT;
+pub const CONVERT10_E_STG_FMT: HRESULT = 0x800401C4u32 as HRESULT;
+pub const CONVERT10_E_STG_NO_STD_STREAM: HRESULT = 0x800401C5u32 as HRESULT;
+pub const CONVERT10_E_STG_DIB_TO_BITMAP: HRESULT = 0x800401C6u32 as HRESULT;
+pub const CLIPBRD_E_FIRST: HRESULT = 0x800401D0u32 as HRESULT;
+pub const CLIPBRD_E_LAST: HRESULT = 0x800401DFu32 as HRESULT;
+pub const CLIPBRD_S_FIRST: HRESULT = 0x000401D0;
+pub const CLIPBRD_S_LAST: HRESULT = 0x000401DF;
+pub const CLIPBRD_E_CANT_OPEN: HRESULT = 0x800401D0u32 as HRESULT;
+pub const CLIPBRD_E_CANT_EMPTY: HRESULT = 0x800401D1u32 as HRESULT;
+pub const CLIPBRD_E_CANT_SET: HRESULT = 0x800401D2u32 as HRESULT;
+pub const CLIPBRD_E_BAD_DATA: HRESULT = 0x800401D3u32 as HRESULT;
+pub const CLIPBRD_E_CANT_CLOSE: HRESULT = 0x800401D4u32 as HRESULT;
+pub const MK_E_FIRST: HRESULT = 0x800401E0u32 as HRESULT;
+pub const MK_E_LAST: HRESULT = 0x800401EFu32 as HRESULT;
+pub const MK_S_FIRST: HRESULT = 0x000401E0;
+pub const MK_S_LAST: HRESULT = 0x000401EF;
+pub const MK_E_CONNECTMANUALLY: HRESULT = 0x800401E0u32 as HRESULT;
+pub const MK_E_EXCEEDEDDEADLINE: HRESULT = 0x800401E1u32 as HRESULT;
+pub const MK_E_NEEDGENERIC: HRESULT = 0x800401E2u32 as HRESULT;
+pub const MK_E_UNAVAILABLE: HRESULT = 0x800401E3u32 as HRESULT;
+pub const MK_E_SYNTAX: HRESULT = 0x800401E4u32 as HRESULT;
+pub const MK_E_NOOBJECT: HRESULT = 0x800401E5u32 as HRESULT;
+pub const MK_E_INVALIDEXTENSION: HRESULT = 0x800401E6u32 as HRESULT;
+pub const MK_E_INTERMEDIATEINTERFACENOTSUPPORTED: HRESULT = 0x800401E7u32 as HRESULT;
+pub const MK_E_NOTBINDABLE: HRESULT = 0x800401E8u32 as HRESULT;
+pub const MK_E_NOTBOUND: HRESULT = 0x800401E9u32 as HRESULT;
+pub const MK_E_CANTOPENFILE: HRESULT = 0x800401EAu32 as HRESULT;
+pub const MK_E_MUSTBOTHERUSER: HRESULT = 0x800401EBu32 as HRESULT;
+pub const MK_E_NOINVERSE: HRESULT = 0x800401ECu32 as HRESULT;
+pub const MK_E_NOSTORAGE: HRESULT = 0x800401EDu32 as HRESULT;
+pub const MK_E_NOPREFIX: HRESULT = 0x800401EEu32 as HRESULT;
+pub const MK_E_ENUMERATION_FAILED: HRESULT = 0x800401EFu32 as HRESULT;
+pub const CO_E_FIRST: HRESULT = 0x800401F0u32 as HRESULT;
+pub const CO_E_LAST: HRESULT = 0x800401FFu32 as HRESULT;
+pub const CO_S_FIRST: HRESULT = 0x000401F0;
+pub const CO_S_LAST: HRESULT = 0x000401FF;
+pub const CO_E_NOTINITIALIZED: HRESULT = 0x800401F0u32 as HRESULT;
+pub const CO_E_ALREADYINITIALIZED: HRESULT = 0x800401F1u32 as HRESULT;
+pub const CO_E_CANTDETERMINECLASS: HRESULT = 0x800401F2u32 as HRESULT;
+pub const CO_E_CLASSSTRING: HRESULT = 0x800401F3u32 as HRESULT;
+pub const CO_E_IIDSTRING: HRESULT = 0x800401F4u32 as HRESULT;
+pub const CO_E_APPNOTFOUND: HRESULT = 0x800401F5u32 as HRESULT;
+pub const CO_E_APPSINGLEUSE: HRESULT = 0x800401F6u32 as HRESULT;
+pub const CO_E_ERRORINAPP: HRESULT = 0x800401F7u32 as HRESULT;
+pub const CO_E_DLLNOTFOUND: HRESULT = 0x800401F8u32 as HRESULT;
+pub const CO_E_ERRORINDLL: HRESULT = 0x800401F9u32 as HRESULT;
+pub const CO_E_WRONGOSFORAPP: HRESULT = 0x800401FAu32 as HRESULT;
+pub const CO_E_OBJNOTREG: HRESULT = 0x800401FBu32 as HRESULT;
+pub const CO_E_OBJISREG: HRESULT = 0x800401FCu32 as HRESULT;
+pub const CO_E_OBJNOTCONNECTED: HRESULT = 0x800401FDu32 as HRESULT;
+pub const CO_E_APPDIDNTREG: HRESULT = 0x800401FEu32 as HRESULT;
+pub const CO_E_RELEASED: HRESULT = 0x800401FFu32 as HRESULT;
+pub const EVENT_E_FIRST: HRESULT = 0x80040200u32 as HRESULT;
+pub const EVENT_E_LAST: HRESULT = 0x8004021Fu32 as HRESULT;
+pub const EVENT_S_FIRST: HRESULT = 0x00040200;
+pub const EVENT_S_LAST: HRESULT = 0x0004021F;
+pub const EVENT_S_SOME_SUBSCRIBERS_FAILED: HRESULT = 0x00040200;
+pub const EVENT_E_ALL_SUBSCRIBERS_FAILED: HRESULT = 0x80040201u32 as HRESULT;
+pub const EVENT_S_NOSUBSCRIBERS: HRESULT = 0x00040202;
+pub const EVENT_E_QUERYSYNTAX: HRESULT = 0x80040203u32 as HRESULT;
+pub const EVENT_E_QUERYFIELD: HRESULT = 0x80040204u32 as HRESULT;
+pub const EVENT_E_INTERNALEXCEPTION: HRESULT = 0x80040205u32 as HRESULT;
+pub const EVENT_E_INTERNALERROR: HRESULT = 0x80040206u32 as HRESULT;
+pub const EVENT_E_INVALID_PER_USER_SID: HRESULT = 0x80040207u32 as HRESULT;
+pub const EVENT_E_USER_EXCEPTION: HRESULT = 0x80040208u32 as HRESULT;
+pub const EVENT_E_TOO_MANY_METHODS: HRESULT = 0x80040209u32 as HRESULT;
+pub const EVENT_E_MISSING_EVENTCLASS: HRESULT = 0x8004020Au32 as HRESULT;
+pub const EVENT_E_NOT_ALL_REMOVED: HRESULT = 0x8004020Bu32 as HRESULT;
+pub const EVENT_E_COMPLUS_NOT_INSTALLED: HRESULT = 0x8004020Cu32 as HRESULT;
+pub const EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT: HRESULT = 0x8004020Du32 as HRESULT;
+pub const EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT: HRESULT = 0x8004020Eu32 as HRESULT;
+pub const EVENT_E_INVALID_EVENT_CLASS_PARTITION: HRESULT = 0x8004020Fu32 as HRESULT;
+pub const EVENT_E_PER_USER_SID_NOT_LOGGED_ON: HRESULT = 0x80040210u32 as HRESULT;
+pub const TPC_E_INVALID_PROPERTY: HRESULT = 0x80040241u32 as HRESULT;
+pub const TPC_E_NO_DEFAULT_TABLET: HRESULT = 0x80040212u32 as HRESULT;
+pub const TPC_E_UNKNOWN_PROPERTY: HRESULT = 0x8004021Bu32 as HRESULT;
+pub const TPC_E_INVALID_INPUT_RECT: HRESULT = 0x80040219u32 as HRESULT;
+pub const TPC_E_INVALID_STROKE: HRESULT = 0x80040222u32 as HRESULT;
+pub const TPC_E_INITIALIZE_FAIL: HRESULT = 0x80040223u32 as HRESULT;
+pub const TPC_E_NOT_RELEVANT: HRESULT = 0x80040232u32 as HRESULT;
+pub const TPC_E_INVALID_PACKET_DESCRIPTION: HRESULT = 0x80040233u32 as HRESULT;
+pub const TPC_E_RECOGNIZER_NOT_REGISTERED: HRESULT = 0x80040235u32 as HRESULT;
+pub const TPC_E_INVALID_RIGHTS: HRESULT = 0x80040236u32 as HRESULT;
+pub const TPC_E_OUT_OF_ORDER_CALL: HRESULT = 0x80040237u32 as HRESULT;
+pub const TPC_E_QUEUE_FULL: HRESULT = 0x80040238u32 as HRESULT;
+pub const TPC_E_INVALID_CONFIGURATION: HRESULT = 0x80040239u32 as HRESULT;
+pub const TPC_E_INVALID_DATA_FROM_RECOGNIZER: HRESULT = 0x8004023Au32 as HRESULT;
+pub const TPC_S_TRUNCATED: HRESULT = 0x00040252;
+pub const TPC_S_INTERRUPTED: HRESULT = 0x00040253;
+pub const TPC_S_NO_DATA_TO_PROCESS: HRESULT = 0x00040254;
+pub const XACT_E_FIRST: HRESULT = 0x8004D000u32 as HRESULT;
+pub const XACT_E_LAST: HRESULT = 0x8004D02Bu32 as HRESULT;
+pub const XACT_S_FIRST: HRESULT = 0x0004D000;
+pub const XACT_S_LAST: HRESULT = 0x0004D010;
+pub const XACT_E_ALREADYOTHERSINGLEPHASE: HRESULT = 0x8004D000u32 as HRESULT;
+pub const XACT_E_CANTRETAIN: HRESULT = 0x8004D001u32 as HRESULT;
+pub const XACT_E_COMMITFAILED: HRESULT = 0x8004D002u32 as HRESULT;
+pub const XACT_E_COMMITPREVENTED: HRESULT = 0x8004D003u32 as HRESULT;
+pub const XACT_E_HEURISTICABORT: HRESULT = 0x8004D004u32 as HRESULT;
+pub const XACT_E_HEURISTICCOMMIT: HRESULT = 0x8004D005u32 as HRESULT;
+pub const XACT_E_HEURISTICDAMAGE: HRESULT = 0x8004D006u32 as HRESULT;
+pub const XACT_E_HEURISTICDANGER: HRESULT = 0x8004D007u32 as HRESULT;
+pub const XACT_E_ISOLATIONLEVEL: HRESULT = 0x8004D008u32 as HRESULT;
+pub const XACT_E_NOASYNC: HRESULT = 0x8004D009u32 as HRESULT;
+pub const XACT_E_NOENLIST: HRESULT = 0x8004D00Au32 as HRESULT;
+pub const XACT_E_NOISORETAIN: HRESULT = 0x8004D00Bu32 as HRESULT;
+pub const XACT_E_NORESOURCE: HRESULT = 0x8004D00Cu32 as HRESULT;
+pub const XACT_E_NOTCURRENT: HRESULT = 0x8004D00Du32 as HRESULT;
+pub const XACT_E_NOTRANSACTION: HRESULT = 0x8004D00Eu32 as HRESULT;
+pub const XACT_E_NOTSUPPORTED: HRESULT = 0x8004D00Fu32 as HRESULT;
+pub const XACT_E_UNKNOWNRMGRID: HRESULT = 0x8004D010u32 as HRESULT;
+pub const XACT_E_WRONGSTATE: HRESULT = 0x8004D011u32 as HRESULT;
+pub const XACT_E_WRONGUOW: HRESULT = 0x8004D012u32 as HRESULT;
+pub const XACT_E_XTIONEXISTS: HRESULT = 0x8004D013u32 as HRESULT;
+pub const XACT_E_NOIMPORTOBJECT: HRESULT = 0x8004D014u32 as HRESULT;
+pub const XACT_E_INVALIDCOOKIE: HRESULT = 0x8004D015u32 as HRESULT;
+pub const XACT_E_INDOUBT: HRESULT = 0x8004D016u32 as HRESULT;
+pub const XACT_E_NOTIMEOUT: HRESULT = 0x8004D017u32 as HRESULT;
+pub const XACT_E_ALREADYINPROGRESS: HRESULT = 0x8004D018u32 as HRESULT;
+pub const XACT_E_ABORTED: HRESULT = 0x8004D019u32 as HRESULT;
+pub const XACT_E_LOGFULL: HRESULT = 0x8004D01Au32 as HRESULT;
+pub const XACT_E_TMNOTAVAILABLE: HRESULT = 0x8004D01Bu32 as HRESULT;
+pub const XACT_E_CONNECTION_DOWN: HRESULT = 0x8004D01Cu32 as HRESULT;
+pub const XACT_E_CONNECTION_DENIED: HRESULT = 0x8004D01Du32 as HRESULT;
+pub const XACT_E_REENLISTTIMEOUT: HRESULT = 0x8004D01Eu32 as HRESULT;
+pub const XACT_E_TIP_CONNECT_FAILED: HRESULT = 0x8004D01Fu32 as HRESULT;
+pub const XACT_E_TIP_PROTOCOL_ERROR: HRESULT = 0x8004D020u32 as HRESULT;
+pub const XACT_E_TIP_PULL_FAILED: HRESULT = 0x8004D021u32 as HRESULT;
+pub const XACT_E_DEST_TMNOTAVAILABLE: HRESULT = 0x8004D022u32 as HRESULT;
+pub const XACT_E_TIP_DISABLED: HRESULT = 0x8004D023u32 as HRESULT;
+pub const XACT_E_NETWORK_TX_DISABLED: HRESULT = 0x8004D024u32 as HRESULT;
+pub const XACT_E_PARTNER_NETWORK_TX_DISABLED: HRESULT = 0x8004D025u32 as HRESULT;
+pub const XACT_E_XA_TX_DISABLED: HRESULT = 0x8004D026u32 as HRESULT;
+pub const XACT_E_UNABLE_TO_READ_DTC_CONFIG: HRESULT = 0x8004D027u32 as HRESULT;
+pub const XACT_E_UNABLE_TO_LOAD_DTC_PROXY: HRESULT = 0x8004D028u32 as HRESULT;
+pub const XACT_E_ABORTING: HRESULT = 0x8004D029u32 as HRESULT;
+pub const XACT_E_PUSH_COMM_FAILURE: HRESULT = 0x8004D02Au32 as HRESULT;
+pub const XACT_E_PULL_COMM_FAILURE: HRESULT = 0x8004D02Bu32 as HRESULT;
+pub const XACT_E_LU_TX_DISABLED: HRESULT = 0x8004D02Cu32 as HRESULT;
+pub const XACT_E_CLERKNOTFOUND: HRESULT = 0x8004D080u32 as HRESULT;
+pub const XACT_E_CLERKEXISTS: HRESULT = 0x8004D081u32 as HRESULT;
+pub const XACT_E_RECOVERYINPROGRESS: HRESULT = 0x8004D082u32 as HRESULT;
+pub const XACT_E_TRANSACTIONCLOSED: HRESULT = 0x8004D083u32 as HRESULT;
+pub const XACT_E_INVALIDLSN: HRESULT = 0x8004D084u32 as HRESULT;
+pub const XACT_E_REPLAYREQUEST: HRESULT = 0x8004D085u32 as HRESULT;
+pub const XACT_S_ASYNC: HRESULT = 0x0004D000;
+pub const XACT_S_DEFECT: HRESULT = 0x0004D001;
+pub const XACT_S_READONLY: HRESULT = 0x0004D002;
+pub const XACT_S_SOMENORETAIN: HRESULT = 0x0004D003;
+pub const XACT_S_OKINFORM: HRESULT = 0x0004D004;
+pub const XACT_S_MADECHANGESCONTENT: HRESULT = 0x0004D005;
+pub const XACT_S_MADECHANGESINFORM: HRESULT = 0x0004D006;
+pub const XACT_S_ALLNORETAIN: HRESULT = 0x0004D007;
+pub const XACT_S_ABORTING: HRESULT = 0x0004D008;
+pub const XACT_S_SINGLEPHASE: HRESULT = 0x0004D009;
+pub const XACT_S_LOCALLY_OK: HRESULT = 0x0004D00A;
+pub const XACT_S_LASTRESOURCEMANAGER: HRESULT = 0x0004D010;
+pub const CONTEXT_E_FIRST: HRESULT = 0x8004E000u32 as HRESULT;
+pub const CONTEXT_E_LAST: HRESULT = 0x8004E02Fu32 as HRESULT;
+pub const CONTEXT_S_FIRST: HRESULT = 0x0004E000;
+pub const CONTEXT_S_LAST: HRESULT = 0x0004E02F;
+pub const CONTEXT_E_ABORTED: HRESULT = 0x8004E002u32 as HRESULT;
+pub const CONTEXT_E_ABORTING: HRESULT = 0x8004E003u32 as HRESULT;
+pub const CONTEXT_E_NOCONTEXT: HRESULT = 0x8004E004u32 as HRESULT;
+pub const CONTEXT_E_WOULD_DEADLOCK: HRESULT = 0x8004E005u32 as HRESULT;
+pub const CONTEXT_E_SYNCH_TIMEOUT: HRESULT = 0x8004E006u32 as HRESULT;
+pub const CONTEXT_E_OLDREF: HRESULT = 0x8004E007u32 as HRESULT;
+pub const CONTEXT_E_ROLENOTFOUND: HRESULT = 0x8004E00Cu32 as HRESULT;
+pub const CONTEXT_E_TMNOTAVAILABLE: HRESULT = 0x8004E00Fu32 as HRESULT;
+pub const CO_E_ACTIVATIONFAILED: HRESULT = 0x8004E021u32 as HRESULT;
+pub const CO_E_ACTIVATIONFAILED_EVENTLOGGED: HRESULT = 0x8004E022u32 as HRESULT;
+pub const CO_E_ACTIVATIONFAILED_CATALOGERROR: HRESULT = 0x8004E023u32 as HRESULT;
+pub const CO_E_ACTIVATIONFAILED_TIMEOUT: HRESULT = 0x8004E024u32 as HRESULT;
+pub const CO_E_INITIALIZATIONFAILED: HRESULT = 0x8004E025u32 as HRESULT;
+pub const CONTEXT_E_NOJIT: HRESULT = 0x8004E026u32 as HRESULT;
+pub const CONTEXT_E_NOTRANSACTION: HRESULT = 0x8004E027u32 as HRESULT;
+pub const CO_E_THREADINGMODEL_CHANGED: HRESULT = 0x8004E028u32 as HRESULT;
+pub const CO_E_NOIISINTRINSICS: HRESULT = 0x8004E029u32 as HRESULT;
+pub const CO_E_NOCOOKIES: HRESULT = 0x8004E02Au32 as HRESULT;
+pub const CO_E_DBERROR: HRESULT = 0x8004E02Bu32 as HRESULT;
+pub const CO_E_NOTPOOLED: HRESULT = 0x8004E02Cu32 as HRESULT;
+pub const CO_E_NOTCONSTRUCTED: HRESULT = 0x8004E02Du32 as HRESULT;
+pub const CO_E_NOSYNCHRONIZATION: HRESULT = 0x8004E02Eu32 as HRESULT;
+pub const CO_E_ISOLEVELMISMATCH: HRESULT = 0x8004E02Fu32 as HRESULT;
+pub const CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED: HRESULT = 0x8004E030u32 as HRESULT;
+pub const CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED: HRESULT = 0x8004E031u32 as HRESULT;
+pub const OLE_S_USEREG: HRESULT = 0x00040000;
+pub const OLE_S_STATIC: HRESULT = 0x00040001;
+pub const OLE_S_MAC_CLIPFORMAT: HRESULT = 0x00040002;
+pub const DRAGDROP_S_DROP: HRESULT = 0x00040100;
+pub const DRAGDROP_S_CANCEL: HRESULT = 0x00040101;
+pub const DRAGDROP_S_USEDEFAULTCURSORS: HRESULT = 0x00040102;
+pub const DATA_S_SAMEFORMATETC: HRESULT = 0x00040130;
+pub const VIEW_S_ALREADY_FROZEN: HRESULT = 0x00040140;
+pub const CACHE_S_FORMATETC_NOTSUPPORTED: HRESULT = 0x00040170;
+pub const CACHE_S_SAMECACHE: HRESULT = 0x00040171;
+pub const CACHE_S_SOMECACHES_NOTUPDATED: HRESULT = 0x00040172;
+pub const OLEOBJ_S_INVALIDVERB: HRESULT = 0x00040180;
+pub const OLEOBJ_S_CANNOT_DOVERB_NOW: HRESULT = 0x00040181;
+pub const OLEOBJ_S_INVALIDHWND: HRESULT = 0x00040182;
+pub const INPLACE_S_TRUNCATED: HRESULT = 0x000401A0;
+pub const CONVERT10_S_NO_PRESENTATION: HRESULT = 0x000401C0;
+pub const MK_S_REDUCED_TO_SELF: HRESULT = 0x000401E2;
+pub const MK_S_ME: HRESULT = 0x000401E4;
+pub const MK_S_HIM: HRESULT = 0x000401E5;
+pub const MK_S_US: HRESULT = 0x000401E6;
+pub const MK_S_MONIKERALREADYREGISTERED: HRESULT = 0x000401E7;
+pub const SCHED_S_TASK_READY: HRESULT = 0x00041300;
+pub const SCHED_S_TASK_RUNNING: HRESULT = 0x00041301;
+pub const SCHED_S_TASK_DISABLED: HRESULT = 0x00041302;
+pub const SCHED_S_TASK_HAS_NOT_RUN: HRESULT = 0x00041303;
+pub const SCHED_S_TASK_NO_MORE_RUNS: HRESULT = 0x00041304;
+pub const SCHED_S_TASK_NOT_SCHEDULED: HRESULT = 0x00041305;
+pub const SCHED_S_TASK_TERMINATED: HRESULT = 0x00041306;
+pub const SCHED_S_TASK_NO_VALID_TRIGGERS: HRESULT = 0x00041307;
+pub const SCHED_S_EVENT_TRIGGER: HRESULT = 0x00041308;
+pub const SCHED_E_TRIGGER_NOT_FOUND: HRESULT = 0x80041309u32 as HRESULT;
+pub const SCHED_E_TASK_NOT_READY: HRESULT = 0x8004130Au32 as HRESULT;
+pub const SCHED_E_TASK_NOT_RUNNING: HRESULT = 0x8004130Bu32 as HRESULT;
+pub const SCHED_E_SERVICE_NOT_INSTALLED: HRESULT = 0x8004130Cu32 as HRESULT;
+pub const SCHED_E_CANNOT_OPEN_TASK: HRESULT = 0x8004130Du32 as HRESULT;
+pub const SCHED_E_INVALID_TASK: HRESULT = 0x8004130Eu32 as HRESULT;
+pub const SCHED_E_ACCOUNT_INFORMATION_NOT_SET: HRESULT = 0x8004130Fu32 as HRESULT;
+pub const SCHED_E_ACCOUNT_NAME_NOT_FOUND: HRESULT = 0x80041310u32 as HRESULT;
+pub const SCHED_E_ACCOUNT_DBASE_CORRUPT: HRESULT = 0x80041311u32 as HRESULT;
+pub const SCHED_E_NO_SECURITY_SERVICES: HRESULT = 0x80041312u32 as HRESULT;
+pub const SCHED_E_UNKNOWN_OBJECT_VERSION: HRESULT = 0x80041313u32 as HRESULT;
+pub const SCHED_E_UNSUPPORTED_ACCOUNT_OPTION: HRESULT = 0x80041314u32 as HRESULT;
+pub const SCHED_E_SERVICE_NOT_RUNNING: HRESULT = 0x80041315u32 as HRESULT;
+pub const SCHED_E_UNEXPECTEDNODE: HRESULT = 0x80041316u32 as HRESULT;
+pub const SCHED_E_NAMESPACE: HRESULT = 0x80041317u32 as HRESULT;
+pub const SCHED_E_INVALIDVALUE: HRESULT = 0x80041318u32 as HRESULT;
+pub const SCHED_E_MISSINGNODE: HRESULT = 0x80041319u32 as HRESULT;
+pub const SCHED_E_MALFORMEDXML: HRESULT = 0x8004131Au32 as HRESULT;
+pub const SCHED_S_SOME_TRIGGERS_FAILED: HRESULT = 0x0004131B;
+pub const SCHED_S_BATCH_LOGON_PROBLEM: HRESULT = 0x0004131C;
+pub const SCHED_E_TOO_MANY_NODES: HRESULT = 0x8004131Du32 as HRESULT;
+pub const SCHED_E_PAST_END_BOUNDARY: HRESULT = 0x8004131Eu32 as HRESULT;
+pub const SCHED_E_ALREADY_RUNNING: HRESULT = 0x8004131Fu32 as HRESULT;
+pub const SCHED_E_USER_NOT_LOGGED_ON: HRESULT = 0x80041320u32 as HRESULT;
+pub const SCHED_E_INVALID_TASK_HASH: HRESULT = 0x80041321u32 as HRESULT;
+pub const SCHED_E_SERVICE_NOT_AVAILABLE: HRESULT = 0x80041322u32 as HRESULT;
+pub const SCHED_E_SERVICE_TOO_BUSY: HRESULT = 0x80041323u32 as HRESULT;
+pub const SCHED_E_TASK_ATTEMPTED: HRESULT = 0x80041324u32 as HRESULT;
+pub const SCHED_S_TASK_QUEUED: HRESULT = 0x00041325;
+pub const SCHED_E_TASK_DISABLED: HRESULT = 0x80041326u32 as HRESULT;
+pub const SCHED_E_TASK_NOT_V1_COMPAT: HRESULT = 0x80041327u32 as HRESULT;
+pub const SCHED_E_START_ON_DEMAND: HRESULT = 0x80041328u32 as HRESULT;
+pub const SCHED_E_TASK_NOT_UBPM_COMPAT: HRESULT = 0x80041329u32 as HRESULT;
+pub const SCHED_E_DEPRECATED_FEATURE_USED: HRESULT = 0x80041330u32 as HRESULT;
+pub const CO_E_CLASS_CREATE_FAILED: HRESULT = 0x80080001u32 as HRESULT;
+pub const CO_E_SCM_ERROR: HRESULT = 0x80080002u32 as HRESULT;
+pub const CO_E_SCM_RPC_FAILURE: HRESULT = 0x80080003u32 as HRESULT;
+pub const CO_E_BAD_PATH: HRESULT = 0x80080004u32 as HRESULT;
+pub const CO_E_SERVER_EXEC_FAILURE: HRESULT = 0x80080005u32 as HRESULT;
+pub const CO_E_OBJSRV_RPC_FAILURE: HRESULT = 0x80080006u32 as HRESULT;
+pub const MK_E_NO_NORMALIZED: HRESULT = 0x80080007u32 as HRESULT;
+pub const CO_E_SERVER_STOPPING: HRESULT = 0x80080008u32 as HRESULT;
+pub const MEM_E_INVALID_ROOT: HRESULT = 0x80080009u32 as HRESULT;
+pub const MEM_E_INVALID_LINK: HRESULT = 0x80080010u32 as HRESULT;
+pub const MEM_E_INVALID_SIZE: HRESULT = 0x80080011u32 as HRESULT;
+pub const CO_S_NOTALLINTERFACES: HRESULT = 0x00080012;
+pub const CO_S_MACHINENAMENOTFOUND: HRESULT = 0x00080013;
+pub const CO_E_MISSING_DISPLAYNAME: HRESULT = 0x80080015u32 as HRESULT;
+pub const CO_E_RUNAS_VALUE_MUST_BE_AAA: HRESULT = 0x80080016u32 as HRESULT;
+pub const CO_E_ELEVATION_DISABLED: HRESULT = 0x80080017u32 as HRESULT;
+pub const APPX_E_PACKAGING_INTERNAL: HRESULT = 0x80080200u32 as HRESULT;
+pub const APPX_E_INTERLEAVING_NOT_ALLOWED: HRESULT = 0x80080201u32 as HRESULT;
+pub const APPX_E_RELATIONSHIPS_NOT_ALLOWED: HRESULT = 0x80080202u32 as HRESULT;
+pub const APPX_E_MISSING_REQUIRED_FILE: HRESULT = 0x80080203u32 as HRESULT;
+pub const APPX_E_INVALID_MANIFEST: HRESULT = 0x80080204u32 as HRESULT;
+pub const APPX_E_INVALID_BLOCKMAP: HRESULT = 0x80080205u32 as HRESULT;
+pub const APPX_E_CORRUPT_CONTENT: HRESULT = 0x80080206u32 as HRESULT;
+pub const APPX_E_BLOCK_HASH_INVALID: HRESULT = 0x80080207u32 as HRESULT;
+pub const APPX_E_REQUESTED_RANGE_TOO_LARGE: HRESULT = 0x80080208u32 as HRESULT;
+pub const APPX_E_INVALID_SIP_CLIENT_DATA: HRESULT = 0x80080209u32 as HRESULT;
+pub const BT_E_SPURIOUS_ACTIVATION: HRESULT = 0x80080300u32 as HRESULT;
+pub const DISP_E_UNKNOWNINTERFACE: HRESULT = 0x80020001u32 as HRESULT;
+pub const DISP_E_MEMBERNOTFOUND: HRESULT = 0x80020003u32 as HRESULT;
+pub const DISP_E_PARAMNOTFOUND: HRESULT = 0x80020004u32 as HRESULT;
+pub const DISP_E_TYPEMISMATCH: HRESULT = 0x80020005u32 as HRESULT;
+pub const DISP_E_UNKNOWNNAME: HRESULT = 0x80020006u32 as HRESULT;
+pub const DISP_E_NONAMEDARGS: HRESULT = 0x80020007u32 as HRESULT;
+pub const DISP_E_BADVARTYPE: HRESULT = 0x80020008u32 as HRESULT;
+pub const DISP_E_EXCEPTION: HRESULT = 0x80020009u32 as HRESULT;
+pub const DISP_E_OVERFLOW: HRESULT = 0x8002000Au32 as HRESULT;
+pub const DISP_E_BADINDEX: HRESULT = 0x8002000Bu32 as HRESULT;
+pub const DISP_E_UNKNOWNLCID: HRESULT = 0x8002000Cu32 as HRESULT;
+pub const DISP_E_ARRAYISLOCKED: HRESULT = 0x8002000Du32 as HRESULT;
+pub const DISP_E_BADPARAMCOUNT: HRESULT = 0x8002000Eu32 as HRESULT;
+pub const DISP_E_PARAMNOTOPTIONAL: HRESULT = 0x8002000Fu32 as HRESULT;
+pub const DISP_E_BADCALLEE: HRESULT = 0x80020010u32 as HRESULT;
+pub const DISP_E_NOTACOLLECTION: HRESULT = 0x80020011u32 as HRESULT;
+pub const DISP_E_DIVBYZERO: HRESULT = 0x80020012u32 as HRESULT;
+pub const DISP_E_BUFFERTOOSMALL: HRESULT = 0x80020013u32 as HRESULT;
+pub const TYPE_E_BUFFERTOOSMALL: HRESULT = 0x80028016u32 as HRESULT;
+pub const TYPE_E_FIELDNOTFOUND: HRESULT = 0x80028017u32 as HRESULT;
+pub const TYPE_E_INVDATAREAD: HRESULT = 0x80028018u32 as HRESULT;
+pub const TYPE_E_UNSUPFORMAT: HRESULT = 0x80028019u32 as HRESULT;
+pub const TYPE_E_REGISTRYACCESS: HRESULT = 0x8002801Cu32 as HRESULT;
+pub const TYPE_E_LIBNOTREGISTERED: HRESULT = 0x8002801Du32 as HRESULT;
+pub const TYPE_E_UNDEFINEDTYPE: HRESULT = 0x80028027u32 as HRESULT;
+pub const TYPE_E_QUALIFIEDNAMEDISALLOWED: HRESULT = 0x80028028u32 as HRESULT;
+pub const TYPE_E_INVALIDSTATE: HRESULT = 0x80028029u32 as HRESULT;
+pub const TYPE_E_WRONGTYPEKIND: HRESULT = 0x8002802Au32 as HRESULT;
+pub const TYPE_E_ELEMENTNOTFOUND: HRESULT = 0x8002802Bu32 as HRESULT;
+pub const TYPE_E_AMBIGUOUSNAME: HRESULT = 0x8002802Cu32 as HRESULT;
+pub const TYPE_E_NAMECONFLICT: HRESULT = 0x8002802Du32 as HRESULT;
+pub const TYPE_E_UNKNOWNLCID: HRESULT = 0x8002802Eu32 as HRESULT;
+pub const TYPE_E_DLLFUNCTIONNOTFOUND: HRESULT = 0x8002802Fu32 as HRESULT;
+pub const TYPE_E_BADMODULEKIND: HRESULT = 0x800288BDu32 as HRESULT;
+pub const TYPE_E_SIZETOOBIG: HRESULT = 0x800288C5u32 as HRESULT;
+pub const TYPE_E_DUPLICATEID: HRESULT = 0x800288C6u32 as HRESULT;
+pub const TYPE_E_INVALIDID: HRESULT = 0x800288CFu32 as HRESULT;
+pub const TYPE_E_TYPEMISMATCH: HRESULT = 0x80028CA0u32 as HRESULT;
+pub const TYPE_E_OUTOFBOUNDS: HRESULT = 0x80028CA1u32 as HRESULT;
+pub const TYPE_E_IOERROR: HRESULT = 0x80028CA2u32 as HRESULT;
+pub const TYPE_E_CANTCREATETMPFILE: HRESULT = 0x80028CA3u32 as HRESULT;
+pub const TYPE_E_CANTLOADLIBRARY: HRESULT = 0x80029C4Au32 as HRESULT;
+pub const TYPE_E_INCONSISTENTPROPFUNCS: HRESULT = 0x80029C83u32 as HRESULT;
+pub const TYPE_E_CIRCULARTYPE: HRESULT = 0x80029C84u32 as HRESULT;
+pub const STG_E_INVALIDFUNCTION: HRESULT = 0x80030001u32 as HRESULT;
+pub const STG_E_FILENOTFOUND: HRESULT = 0x80030002u32 as HRESULT;
+pub const STG_E_PATHNOTFOUND: HRESULT = 0x80030003u32 as HRESULT;
+pub const STG_E_TOOMANYOPENFILES: HRESULT = 0x80030004u32 as HRESULT;
+pub const STG_E_ACCESSDENIED: HRESULT = 0x80030005u32 as HRESULT;
+pub const STG_E_INVALIDHANDLE: HRESULT = 0x80030006u32 as HRESULT;
+pub const STG_E_INSUFFICIENTMEMORY: HRESULT = 0x80030008u32 as HRESULT;
+pub const STG_E_INVALIDPOINTER: HRESULT = 0x80030009u32 as HRESULT;
+pub const STG_E_NOMOREFILES: HRESULT = 0x80030012u32 as HRESULT;
+pub const STG_E_DISKISWRITEPROTECTED: HRESULT = 0x80030013u32 as HRESULT;
+pub const STG_E_SEEKERROR: HRESULT = 0x80030019u32 as HRESULT;
+pub const STG_E_WRITEFAULT: HRESULT = 0x8003001Du32 as HRESULT;
+pub const STG_E_READFAULT: HRESULT = 0x8003001Eu32 as HRESULT;
+pub const STG_E_SHAREVIOLATION: HRESULT = 0x80030020u32 as HRESULT;
+pub const STG_E_LOCKVIOLATION: HRESULT = 0x80030021u32 as HRESULT;
+pub const STG_E_FILEALREADYEXISTS: HRESULT = 0x80030050u32 as HRESULT;
+pub const STG_E_INVALIDPARAMETER: HRESULT = 0x80030057u32 as HRESULT;
+pub const STG_E_MEDIUMFULL: HRESULT = 0x80030070u32 as HRESULT;
+pub const STG_E_PROPSETMISMATCHED: HRESULT = 0x800300F0u32 as HRESULT;
+pub const STG_E_ABNORMALAPIEXIT: HRESULT = 0x800300FAu32 as HRESULT;
+pub const STG_E_INVALIDHEADER: HRESULT = 0x800300FBu32 as HRESULT;
+pub const STG_E_INVALIDNAME: HRESULT = 0x800300FCu32 as HRESULT;
+pub const STG_E_UNKNOWN: HRESULT = 0x800300FDu32 as HRESULT;
+pub const STG_E_UNIMPLEMENTEDFUNCTION: HRESULT = 0x800300FEu32 as HRESULT;
+pub const STG_E_INVALIDFLAG: HRESULT = 0x800300FFu32 as HRESULT;
+pub const STG_E_INUSE: HRESULT = 0x80030100u32 as HRESULT;
+pub const STG_E_NOTCURRENT: HRESULT = 0x80030101u32 as HRESULT;
+pub const STG_E_REVERTED: HRESULT = 0x80030102u32 as HRESULT;
+pub const STG_E_CANTSAVE: HRESULT = 0x80030103u32 as HRESULT;
+pub const STG_E_OLDFORMAT: HRESULT = 0x80030104u32 as HRESULT;
+pub const STG_E_OLDDLL: HRESULT = 0x80030105u32 as HRESULT;
+pub const STG_E_SHAREREQUIRED: HRESULT = 0x80030106u32 as HRESULT;
+pub const STG_E_NOTFILEBASEDSTORAGE: HRESULT = 0x80030107u32 as HRESULT;
+pub const STG_E_EXTANTMARSHALLINGS: HRESULT = 0x80030108u32 as HRESULT;
+pub const STG_E_DOCFILECORRUPT: HRESULT = 0x80030109u32 as HRESULT;
+pub const STG_E_BADBASEADDRESS: HRESULT = 0x80030110u32 as HRESULT;
+pub const STG_E_DOCFILETOOLARGE: HRESULT = 0x80030111u32 as HRESULT;
+pub const STG_E_NOTSIMPLEFORMAT: HRESULT = 0x80030112u32 as HRESULT;
+pub const STG_E_INCOMPLETE: HRESULT = 0x80030201u32 as HRESULT;
+pub const STG_E_TERMINATED: HRESULT = 0x80030202u32 as HRESULT;
+pub const STG_S_CONVERTED: HRESULT = 0x00030200;
+pub const STG_S_BLOCK: HRESULT = 0x00030201;
+pub const STG_S_RETRYNOW: HRESULT = 0x00030202;
+pub const STG_S_MONITORING: HRESULT = 0x00030203;
+pub const STG_S_MULTIPLEOPENS: HRESULT = 0x00030204;
+pub const STG_S_CONSOLIDATIONFAILED: HRESULT = 0x00030205;
+pub const STG_S_CANNOTCONSOLIDATE: HRESULT = 0x00030206;
+pub const STG_E_STATUS_COPY_PROTECTION_FAILURE: HRESULT = 0x80030305u32 as HRESULT;
+pub const STG_E_CSS_AUTHENTICATION_FAILURE: HRESULT = 0x80030306u32 as HRESULT;
+pub const STG_E_CSS_KEY_NOT_PRESENT: HRESULT = 0x80030307u32 as HRESULT;
+pub const STG_E_CSS_KEY_NOT_ESTABLISHED: HRESULT = 0x80030308u32 as HRESULT;
+pub const STG_E_CSS_SCRAMBLED_SECTOR: HRESULT = 0x80030309u32 as HRESULT;
+pub const STG_E_CSS_REGION_MISMATCH: HRESULT = 0x8003030Au32 as HRESULT;
+pub const STG_E_RESETS_EXHAUSTED: HRESULT = 0x8003030Bu32 as HRESULT;
+pub const RPC_E_CALL_REJECTED: HRESULT = 0x80010001u32 as HRESULT;
+pub const RPC_E_CALL_CANCELED: HRESULT = 0x80010002u32 as HRESULT;
+pub const RPC_E_CANTPOST_INSENDCALL: HRESULT = 0x80010003u32 as HRESULT;
+pub const RPC_E_CANTCALLOUT_INASYNCCALL: HRESULT = 0x80010004u32 as HRESULT;
+pub const RPC_E_CANTCALLOUT_INEXTERNALCALL: HRESULT = 0x80010005u32 as HRESULT;
+pub const RPC_E_CONNECTION_TERMINATED: HRESULT = 0x80010006u32 as HRESULT;
+pub const RPC_E_SERVER_DIED: HRESULT = 0x80010007u32 as HRESULT;
+pub const RPC_E_CLIENT_DIED: HRESULT = 0x80010008u32 as HRESULT;
+pub const RPC_E_INVALID_DATAPACKET: HRESULT = 0x80010009u32 as HRESULT;
+pub const RPC_E_CANTTRANSMIT_CALL: HRESULT = 0x8001000Au32 as HRESULT;
+pub const RPC_E_CLIENT_CANTMARSHAL_DATA: HRESULT = 0x8001000Bu32 as HRESULT;
+pub const RPC_E_CLIENT_CANTUNMARSHAL_DATA: HRESULT = 0x8001000Cu32 as HRESULT;
+pub const RPC_E_SERVER_CANTMARSHAL_DATA: HRESULT = 0x8001000Du32 as HRESULT;
+pub const RPC_E_SERVER_CANTUNMARSHAL_DATA: HRESULT = 0x8001000Eu32 as HRESULT;
+pub const RPC_E_INVALID_DATA: HRESULT = 0x8001000Fu32 as HRESULT;
+pub const RPC_E_INVALID_PARAMETER: HRESULT = 0x80010010u32 as HRESULT;
+pub const RPC_E_CANTCALLOUT_AGAIN: HRESULT = 0x80010011u32 as HRESULT;
+pub const RPC_E_SERVER_DIED_DNE: HRESULT = 0x80010012u32 as HRESULT;
+pub const RPC_E_SYS_CALL_FAILED: HRESULT = 0x80010100u32 as HRESULT;
+pub const RPC_E_OUT_OF_RESOURCES: HRESULT = 0x80010101u32 as HRESULT;
+pub const RPC_E_ATTEMPTED_MULTITHREAD: HRESULT = 0x80010102u32 as HRESULT;
+pub const RPC_E_NOT_REGISTERED: HRESULT = 0x80010103u32 as HRESULT;
+pub const RPC_E_FAULT: HRESULT = 0x80010104u32 as HRESULT;
+pub const RPC_E_SERVERFAULT: HRESULT = 0x80010105u32 as HRESULT;
+pub const RPC_E_CHANGED_MODE: HRESULT = 0x80010106u32 as HRESULT;
+pub const RPC_E_INVALIDMETHOD: HRESULT = 0x80010107u32 as HRESULT;
+pub const RPC_E_DISCONNECTED: HRESULT = 0x80010108u32 as HRESULT;
+pub const RPC_E_RETRY: HRESULT = 0x80010109u32 as HRESULT;
+pub const RPC_E_SERVERCALL_RETRYLATER: HRESULT = 0x8001010Au32 as HRESULT;
+pub const RPC_E_SERVERCALL_REJECTED: HRESULT = 0x8001010Bu32 as HRESULT;
+pub const RPC_E_INVALID_CALLDATA: HRESULT = 0x8001010Cu32 as HRESULT;
+pub const RPC_E_CANTCALLOUT_ININPUTSYNCCALL: HRESULT = 0x8001010Du32 as HRESULT;
+pub const RPC_E_WRONG_THREAD: HRESULT = 0x8001010Eu32 as HRESULT;
+pub const RPC_E_THREAD_NOT_INIT: HRESULT = 0x8001010Fu32 as HRESULT;
+pub const RPC_E_VERSION_MISMATCH: HRESULT = 0x80010110u32 as HRESULT;
+pub const RPC_E_INVALID_HEADER: HRESULT = 0x80010111u32 as HRESULT;
+pub const RPC_E_INVALID_EXTENSION: HRESULT = 0x80010112u32 as HRESULT;
+pub const RPC_E_INVALID_IPID: HRESULT = 0x80010113u32 as HRESULT;
+pub const RPC_E_INVALID_OBJECT: HRESULT = 0x80010114u32 as HRESULT;
+pub const RPC_S_CALLPENDING: HRESULT = 0x80010115u32 as HRESULT;
+pub const RPC_S_WAITONTIMER: HRESULT = 0x80010116u32 as HRESULT;
+pub const RPC_E_CALL_COMPLETE: HRESULT = 0x80010117u32 as HRESULT;
+pub const RPC_E_UNSECURE_CALL: HRESULT = 0x80010118u32 as HRESULT;
+pub const RPC_E_TOO_LATE: HRESULT = 0x80010119u32 as HRESULT;
+pub const RPC_E_NO_GOOD_SECURITY_PACKAGES: HRESULT = 0x8001011Au32 as HRESULT;
+pub const RPC_E_ACCESS_DENIED: HRESULT = 0x8001011Bu32 as HRESULT;
+pub const RPC_E_REMOTE_DISABLED: HRESULT = 0x8001011Cu32 as HRESULT;
+pub const RPC_E_INVALID_OBJREF: HRESULT = 0x8001011Du32 as HRESULT;
+pub const RPC_E_NO_CONTEXT: HRESULT = 0x8001011Eu32 as HRESULT;
+pub const RPC_E_TIMEOUT: HRESULT = 0x8001011Fu32 as HRESULT;
+pub const RPC_E_NO_SYNC: HRESULT = 0x80010120u32 as HRESULT;
+pub const RPC_E_FULLSIC_REQUIRED: HRESULT = 0x80010121u32 as HRESULT;
+pub const RPC_E_INVALID_STD_NAME: HRESULT = 0x80010122u32 as HRESULT;
+pub const CO_E_FAILEDTOIMPERSONATE: HRESULT = 0x80010123u32 as HRESULT;
+pub const CO_E_FAILEDTOGETSECCTX: HRESULT = 0x80010124u32 as HRESULT;
+pub const CO_E_FAILEDTOOPENTHREADTOKEN: HRESULT = 0x80010125u32 as HRESULT;
+pub const CO_E_FAILEDTOGETTOKENINFO: HRESULT = 0x80010126u32 as HRESULT;
+pub const CO_E_TRUSTEEDOESNTMATCHCLIENT: HRESULT = 0x80010127u32 as HRESULT;
+pub const CO_E_FAILEDTOQUERYCLIENTBLANKET: HRESULT = 0x80010128u32 as HRESULT;
+pub const CO_E_FAILEDTOSETDACL: HRESULT = 0x80010129u32 as HRESULT;
+pub const CO_E_ACCESSCHECKFAILED: HRESULT = 0x8001012Au32 as HRESULT;
+pub const CO_E_NETACCESSAPIFAILED: HRESULT = 0x8001012Bu32 as HRESULT;
+pub const CO_E_WRONGTRUSTEENAMESYNTAX: HRESULT = 0x8001012Cu32 as HRESULT;
+pub const CO_E_INVALIDSID: HRESULT = 0x8001012Du32 as HRESULT;
+pub const CO_E_CONVERSIONFAILED: HRESULT = 0x8001012Eu32 as HRESULT;
+pub const CO_E_NOMATCHINGSIDFOUND: HRESULT = 0x8001012Fu32 as HRESULT;
+pub const CO_E_LOOKUPACCSIDFAILED: HRESULT = 0x80010130u32 as HRESULT;
+pub const CO_E_NOMATCHINGNAMEFOUND: HRESULT = 0x80010131u32 as HRESULT;
+pub const CO_E_LOOKUPACCNAMEFAILED: HRESULT = 0x80010132u32 as HRESULT;
+pub const CO_E_SETSERLHNDLFAILED: HRESULT = 0x80010133u32 as HRESULT;
+pub const CO_E_FAILEDTOGETWINDIR: HRESULT = 0x80010134u32 as HRESULT;
+pub const CO_E_PATHTOOLONG: HRESULT = 0x80010135u32 as HRESULT;
+pub const CO_E_FAILEDTOGENUUID: HRESULT = 0x80010136u32 as HRESULT;
+pub const CO_E_FAILEDTOCREATEFILE: HRESULT = 0x80010137u32 as HRESULT;
+pub const CO_E_FAILEDTOCLOSEHANDLE: HRESULT = 0x80010138u32 as HRESULT;
+pub const CO_E_EXCEEDSYSACLLIMIT: HRESULT = 0x80010139u32 as HRESULT;
+pub const CO_E_ACESINWRONGORDER: HRESULT = 0x8001013Au32 as HRESULT;
+pub const CO_E_INCOMPATIBLESTREAMVERSION: HRESULT = 0x8001013Bu32 as HRESULT;
+pub const CO_E_FAILEDTOOPENPROCESSTOKEN: HRESULT = 0x8001013Cu32 as HRESULT;
+pub const CO_E_DECODEFAILED: HRESULT = 0x8001013Du32 as HRESULT;
+pub const CO_E_ACNOTINITIALIZED: HRESULT = 0x8001013Fu32 as HRESULT;
+pub const CO_E_CANCEL_DISABLED: HRESULT = 0x80010140u32 as HRESULT;
+pub const RPC_E_UNEXPECTED: HRESULT = 0x8001FFFFu32 as HRESULT;
+pub const ERROR_AUDITING_DISABLED: HRESULT = 0xC0090001u32 as HRESULT;
+pub const ERROR_ALL_SIDS_FILTERED: HRESULT = 0xC0090002u32 as HRESULT;
+pub const ERROR_BIZRULES_NOT_ENABLED: HRESULT = 0xC0090003u32 as HRESULT;
+pub const NTE_BAD_UID: HRESULT = 0x80090001u32 as HRESULT;
+pub const NTE_BAD_HASH: HRESULT = 0x80090002u32 as HRESULT;
+pub const NTE_BAD_KEY: HRESULT = 0x80090003u32 as HRESULT;
+pub const NTE_BAD_LEN: HRESULT = 0x80090004u32 as HRESULT;
+pub const NTE_BAD_DATA: HRESULT = 0x80090005u32 as HRESULT;
+pub const NTE_BAD_SIGNATURE: HRESULT = 0x80090006u32 as HRESULT;
+pub const NTE_BAD_VER: HRESULT = 0x80090007u32 as HRESULT;
+pub const NTE_BAD_ALGID: HRESULT = 0x80090008u32 as HRESULT;
+pub const NTE_BAD_FLAGS: HRESULT = 0x80090009u32 as HRESULT;
+pub const NTE_BAD_TYPE: HRESULT = 0x8009000Au32 as HRESULT;
+pub const NTE_BAD_KEY_STATE: HRESULT = 0x8009000Bu32 as HRESULT;
+pub const NTE_BAD_HASH_STATE: HRESULT = 0x8009000Cu32 as HRESULT;
+pub const NTE_NO_KEY: HRESULT = 0x8009000Du32 as HRESULT;
+pub const NTE_NO_MEMORY: HRESULT = 0x8009000Eu32 as HRESULT;
+pub const NTE_EXISTS: HRESULT = 0x8009000Fu32 as HRESULT;
+pub const NTE_PERM: HRESULT = 0x80090010u32 as HRESULT;
+pub const NTE_NOT_FOUND: HRESULT = 0x80090011u32 as HRESULT;
+pub const NTE_DOUBLE_ENCRYPT: HRESULT = 0x80090012u32 as HRESULT;
+pub const NTE_BAD_PROVIDER: HRESULT = 0x80090013u32 as HRESULT;
+pub const NTE_BAD_PROV_TYPE: HRESULT = 0x80090014u32 as HRESULT;
+pub const NTE_BAD_PUBLIC_KEY: HRESULT = 0x80090015u32 as HRESULT;
+pub const NTE_BAD_KEYSET: HRESULT = 0x80090016u32 as HRESULT;
+pub const NTE_PROV_TYPE_NOT_DEF: HRESULT = 0x80090017u32 as HRESULT;
+pub const NTE_PROV_TYPE_ENTRY_BAD: HRESULT = 0x80090018u32 as HRESULT;
+pub const NTE_KEYSET_NOT_DEF: HRESULT = 0x80090019u32 as HRESULT;
+pub const NTE_KEYSET_ENTRY_BAD: HRESULT = 0x8009001Au32 as HRESULT;
+pub const NTE_PROV_TYPE_NO_MATCH: HRESULT = 0x8009001Bu32 as HRESULT;
+pub const NTE_SIGNATURE_FILE_BAD: HRESULT = 0x8009001Cu32 as HRESULT;
+pub const NTE_PROVIDER_DLL_FAIL: HRESULT = 0x8009001Du32 as HRESULT;
+pub const NTE_PROV_DLL_NOT_FOUND: HRESULT = 0x8009001Eu32 as HRESULT;
+pub const NTE_BAD_KEYSET_PARAM: HRESULT = 0x8009001Fu32 as HRESULT;
+pub const NTE_FAIL: HRESULT = 0x80090020u32 as HRESULT;
+pub const NTE_SYS_ERR: HRESULT = 0x80090021u32 as HRESULT;
+pub const NTE_SILENT_CONTEXT: HRESULT = 0x80090022u32 as HRESULT;
+pub const NTE_TOKEN_KEYSET_STORAGE_FULL: HRESULT = 0x80090023u32 as HRESULT;
+pub const NTE_TEMPORARY_PROFILE: HRESULT = 0x80090024u32 as HRESULT;
+pub const NTE_FIXEDPARAMETER: HRESULT = 0x80090025u32 as HRESULT;
+pub const NTE_INVALID_HANDLE: HRESULT = 0x80090026u32 as HRESULT;
+pub const NTE_INVALID_PARAMETER: HRESULT = 0x80090027u32 as HRESULT;
+pub const NTE_BUFFER_TOO_SMALL: HRESULT = 0x80090028u32 as HRESULT;
+pub const NTE_NOT_SUPPORTED: HRESULT = 0x80090029u32 as HRESULT;
+pub const NTE_NO_MORE_ITEMS: HRESULT = 0x8009002Au32 as HRESULT;
+pub const NTE_BUFFERS_OVERLAP: HRESULT = 0x8009002Bu32 as HRESULT;
+pub const NTE_DECRYPTION_FAILURE: HRESULT = 0x8009002Cu32 as HRESULT;
+pub const NTE_INTERNAL_ERROR: HRESULT = 0x8009002Du32 as HRESULT;
+pub const NTE_UI_REQUIRED: HRESULT = 0x8009002Eu32 as HRESULT;
+pub const NTE_HMAC_NOT_SUPPORTED: HRESULT = 0x8009002Fu32 as HRESULT;
+pub const NTE_DEVICE_NOT_READY: HRESULT = 0x80090030u32 as HRESULT;
+pub const NTE_AUTHENTICATION_IGNORED: HRESULT = 0x80090031u32 as HRESULT;
+pub const NTE_VALIDATION_FAILED: HRESULT = 0x80090032u32 as HRESULT;
+pub const NTE_INCORRECT_PASSWORD: HRESULT = 0x80090033u32 as HRESULT;
+pub const NTE_ENCRYPTION_FAILURE: HRESULT = 0x80090034u32 as HRESULT;
+pub const NTE_DEVICE_NOT_FOUND: HRESULT = 0x80090035u32 as HRESULT;
+pub const SEC_E_INSUFFICIENT_MEMORY: HRESULT = 0x80090300u32 as HRESULT;
+pub const SEC_E_INVALID_HANDLE: HRESULT = 0x80090301u32 as HRESULT;
+pub const SEC_E_UNSUPPORTED_FUNCTION: HRESULT = 0x80090302u32 as HRESULT;
+pub const SEC_E_TARGET_UNKNOWN: HRESULT = 0x80090303u32 as HRESULT;
+pub const SEC_E_INTERNAL_ERROR: HRESULT = 0x80090304u32 as HRESULT;
+pub const SEC_E_SECPKG_NOT_FOUND: HRESULT = 0x80090305u32 as HRESULT;
+pub const SEC_E_NOT_OWNER: HRESULT = 0x80090306u32 as HRESULT;
+pub const SEC_E_CANNOT_INSTALL: HRESULT = 0x80090307u32 as HRESULT;
+pub const SEC_E_INVALID_TOKEN: HRESULT = 0x80090308u32 as HRESULT;
+pub const SEC_E_CANNOT_PACK: HRESULT = 0x80090309u32 as HRESULT;
+pub const SEC_E_QOP_NOT_SUPPORTED: HRESULT = 0x8009030Au32 as HRESULT;
+pub const SEC_E_NO_IMPERSONATION: HRESULT = 0x8009030Bu32 as HRESULT;
+pub const SEC_E_LOGON_DENIED: HRESULT = 0x8009030Cu32 as HRESULT;
+pub const SEC_E_UNKNOWN_CREDENTIALS: HRESULT = 0x8009030Du32 as HRESULT;
+pub const SEC_E_NO_CREDENTIALS: HRESULT = 0x8009030Eu32 as HRESULT;
+pub const SEC_E_MESSAGE_ALTERED: HRESULT = 0x8009030Fu32 as HRESULT;
+pub const SEC_E_OUT_OF_SEQUENCE: HRESULT = 0x80090310u32 as HRESULT;
+pub const SEC_E_NO_AUTHENTICATING_AUTHORITY: HRESULT = 0x80090311u32 as HRESULT;
+pub const SEC_I_CONTINUE_NEEDED: HRESULT = 0x00090312;
+pub const SEC_I_COMPLETE_NEEDED: HRESULT = 0x00090313;
+pub const SEC_I_COMPLETE_AND_CONTINUE: HRESULT = 0x00090314;
+pub const SEC_I_LOCAL_LOGON: HRESULT = 0x00090315;
+pub const SEC_E_BAD_PKGID: HRESULT = 0x80090316u32 as HRESULT;
+pub const SEC_E_CONTEXT_EXPIRED: HRESULT = 0x80090317u32 as HRESULT;
+pub const SEC_I_CONTEXT_EXPIRED: HRESULT = 0x00090317;
+pub const SEC_E_INCOMPLETE_MESSAGE: HRESULT = 0x80090318u32 as HRESULT;
+pub const SEC_E_INCOMPLETE_CREDENTIALS: HRESULT = 0x80090320u32 as HRESULT;
+pub const SEC_E_BUFFER_TOO_SMALL: HRESULT = 0x80090321u32 as HRESULT;
+pub const SEC_I_INCOMPLETE_CREDENTIALS: HRESULT = 0x00090320;
+pub const SEC_I_RENEGOTIATE: HRESULT = 0x00090321;
+pub const SEC_E_WRONG_PRINCIPAL: HRESULT = 0x80090322u32 as HRESULT;
+pub const SEC_I_NO_LSA_CONTEXT: HRESULT = 0x00090323;
+pub const SEC_E_TIME_SKEW: HRESULT = 0x80090324u32 as HRESULT;
+pub const SEC_E_UNTRUSTED_ROOT: HRESULT = 0x80090325u32 as HRESULT;
+pub const SEC_E_ILLEGAL_MESSAGE: HRESULT = 0x80090326u32 as HRESULT;
+pub const SEC_E_CERT_UNKNOWN: HRESULT = 0x80090327u32 as HRESULT;
+pub const SEC_E_CERT_EXPIRED: HRESULT = 0x80090328u32 as HRESULT;
+pub const SEC_E_ENCRYPT_FAILURE: HRESULT = 0x80090329u32 as HRESULT;
+pub const SEC_E_DECRYPT_FAILURE: HRESULT = 0x80090330u32 as HRESULT;
+pub const SEC_E_ALGORITHM_MISMATCH: HRESULT = 0x80090331u32 as HRESULT;
+pub const SEC_E_SECURITY_QOS_FAILED: HRESULT = 0x80090332u32 as HRESULT;
+pub const SEC_E_UNFINISHED_CONTEXT_DELETED: HRESULT = 0x80090333u32 as HRESULT;
+pub const SEC_E_NO_TGT_REPLY: HRESULT = 0x80090334u32 as HRESULT;
+pub const SEC_E_NO_IP_ADDRESSES: HRESULT = 0x80090335u32 as HRESULT;
+pub const SEC_E_WRONG_CREDENTIAL_HANDLE: HRESULT = 0x80090336u32 as HRESULT;
+pub const SEC_E_CRYPTO_SYSTEM_INVALID: HRESULT = 0x80090337u32 as HRESULT;
+pub const SEC_E_MAX_REFERRALS_EXCEEDED: HRESULT = 0x80090338u32 as HRESULT;
+pub const SEC_E_MUST_BE_KDC: HRESULT = 0x80090339u32 as HRESULT;
+pub const SEC_E_STRONG_CRYPTO_NOT_SUPPORTED: HRESULT = 0x8009033Au32 as HRESULT;
+pub const SEC_E_TOO_MANY_PRINCIPALS: HRESULT = 0x8009033Bu32 as HRESULT;
+pub const SEC_E_NO_PA_DATA: HRESULT = 0x8009033Cu32 as HRESULT;
+pub const SEC_E_PKINIT_NAME_MISMATCH: HRESULT = 0x8009033Du32 as HRESULT;
+pub const SEC_E_SMARTCARD_LOGON_REQUIRED: HRESULT = 0x8009033Eu32 as HRESULT;
+pub const SEC_E_SHUTDOWN_IN_PROGRESS: HRESULT = 0x8009033Fu32 as HRESULT;
+pub const SEC_E_KDC_INVALID_REQUEST: HRESULT = 0x80090340u32 as HRESULT;
+pub const SEC_E_KDC_UNABLE_TO_REFER: HRESULT = 0x80090341u32 as HRESULT;
+pub const SEC_E_KDC_UNKNOWN_ETYPE: HRESULT = 0x80090342u32 as HRESULT;
+pub const SEC_E_UNSUPPORTED_PREAUTH: HRESULT = 0x80090343u32 as HRESULT;
+pub const SEC_E_DELEGATION_REQUIRED: HRESULT = 0x80090345u32 as HRESULT;
+pub const SEC_E_BAD_BINDINGS: HRESULT = 0x80090346u32 as HRESULT;
+pub const SEC_E_MULTIPLE_ACCOUNTS: HRESULT = 0x80090347u32 as HRESULT;
+pub const SEC_E_NO_KERB_KEY: HRESULT = 0x80090348u32 as HRESULT;
+pub const SEC_E_CERT_WRONG_USAGE: HRESULT = 0x80090349u32 as HRESULT;
+pub const SEC_E_DOWNGRADE_DETECTED: HRESULT = 0x80090350u32 as HRESULT;
+pub const SEC_E_SMARTCARD_CERT_REVOKED: HRESULT = 0x80090351u32 as HRESULT;
+pub const SEC_E_ISSUING_CA_UNTRUSTED: HRESULT = 0x80090352u32 as HRESULT;
+pub const SEC_E_REVOCATION_OFFLINE_C: HRESULT = 0x80090353u32 as HRESULT;
+pub const SEC_E_PKINIT_CLIENT_FAILURE: HRESULT = 0x80090354u32 as HRESULT;
+pub const SEC_E_SMARTCARD_CERT_EXPIRED: HRESULT = 0x80090355u32 as HRESULT;
+pub const SEC_E_NO_S4U_PROT_SUPPORT: HRESULT = 0x80090356u32 as HRESULT;
+pub const SEC_E_CROSSREALM_DELEGATION_FAILURE: HRESULT = 0x80090357u32 as HRESULT;
+pub const SEC_E_REVOCATION_OFFLINE_KDC: HRESULT = 0x80090358u32 as HRESULT;
+pub const SEC_E_ISSUING_CA_UNTRUSTED_KDC: HRESULT = 0x80090359u32 as HRESULT;
+pub const SEC_E_KDC_CERT_EXPIRED: HRESULT = 0x8009035Au32 as HRESULT;
+pub const SEC_E_KDC_CERT_REVOKED: HRESULT = 0x8009035Bu32 as HRESULT;
+pub const SEC_I_SIGNATURE_NEEDED: HRESULT = 0x0009035C;
+pub const SEC_E_INVALID_PARAMETER: HRESULT = 0x8009035Du32 as HRESULT;
+pub const SEC_E_DELEGATION_POLICY: HRESULT = 0x8009035Eu32 as HRESULT;
+pub const SEC_E_POLICY_NLTM_ONLY: HRESULT = 0x8009035Fu32 as HRESULT;
+pub const SEC_I_NO_RENEGOTIATION: HRESULT = 0x00090360;
+pub const SEC_E_NO_CONTEXT: HRESULT = 0x80090361u32 as HRESULT;
+pub const SEC_E_PKU2U_CERT_FAILURE: HRESULT = 0x80090362u32 as HRESULT;
+pub const SEC_E_MUTUAL_AUTH_FAILED: HRESULT = 0x80090363u32 as HRESULT;
+pub const SEC_I_MESSAGE_FRAGMENT: HRESULT = 0x00090364;
+pub const SEC_E_ONLY_HTTPS_ALLOWED: HRESULT = 0x80090365u32 as HRESULT;
+pub const SEC_I_CONTINUE_NEEDED_MESSAGE_OK: HRESULT = 0x00090366;
+pub const SEC_E_APPLICATION_PROTOCOL_MISMATCH: HRESULT = 0x80090367u32 as HRESULT;
+pub const SEC_E_NO_SPM: HRESULT = SEC_E_INTERNAL_ERROR;
+pub const SEC_E_NOT_SUPPORTED: HRESULT = SEC_E_UNSUPPORTED_FUNCTION;
+pub const CRYPT_E_MSG_ERROR: HRESULT = 0x80091001u32 as HRESULT;
+pub const CRYPT_E_UNKNOWN_ALGO: HRESULT = 0x80091002u32 as HRESULT;
+pub const CRYPT_E_OID_FORMAT: HRESULT = 0x80091003u32 as HRESULT;
+pub const CRYPT_E_INVALID_MSG_TYPE: HRESULT = 0x80091004u32 as HRESULT;
+pub const CRYPT_E_UNEXPECTED_ENCODING: HRESULT = 0x80091005u32 as HRESULT;
+pub const CRYPT_E_AUTH_ATTR_MISSING: HRESULT = 0x80091006u32 as HRESULT;
+pub const CRYPT_E_HASH_VALUE: HRESULT = 0x80091007u32 as HRESULT;
+pub const CRYPT_E_INVALID_INDEX: HRESULT = 0x80091008u32 as HRESULT;
+pub const CRYPT_E_ALREADY_DECRYPTED: HRESULT = 0x80091009u32 as HRESULT;
+pub const CRYPT_E_NOT_DECRYPTED: HRESULT = 0x8009100Au32 as HRESULT;
+pub const CRYPT_E_RECIPIENT_NOT_FOUND: HRESULT = 0x8009100Bu32 as HRESULT;
+pub const CRYPT_E_CONTROL_TYPE: HRESULT = 0x8009100Cu32 as HRESULT;
+pub const CRYPT_E_ISSUER_SERIALNUMBER: HRESULT = 0x8009100Du32 as HRESULT;
+pub const CRYPT_E_SIGNER_NOT_FOUND: HRESULT = 0x8009100Eu32 as HRESULT;
+pub const CRYPT_E_ATTRIBUTES_MISSING: HRESULT = 0x8009100Fu32 as HRESULT;
+pub const CRYPT_E_STREAM_MSG_NOT_READY: HRESULT = 0x80091010u32 as HRESULT;
+pub const CRYPT_E_STREAM_INSUFFICIENT_DATA: HRESULT = 0x80091011u32 as HRESULT;
+pub const CRYPT_I_NEW_PROTECTION_REQUIRED: HRESULT = 0x00091012;
+pub const CRYPT_E_BAD_LEN: HRESULT = 0x80092001u32 as HRESULT;
+pub const CRYPT_E_BAD_ENCODE: HRESULT = 0x80092002u32 as HRESULT;
+pub const CRYPT_E_FILE_ERROR: HRESULT = 0x80092003u32 as HRESULT;
+pub const CRYPT_E_NOT_FOUND: HRESULT = 0x80092004u32 as HRESULT;
+pub const CRYPT_E_EXISTS: HRESULT = 0x80092005u32 as HRESULT;
+pub const CRYPT_E_NO_PROVIDER: HRESULT = 0x80092006u32 as HRESULT;
+pub const CRYPT_E_SELF_SIGNED: HRESULT = 0x80092007u32 as HRESULT;
+pub const CRYPT_E_DELETED_PREV: HRESULT = 0x80092008u32 as HRESULT;
+pub const CRYPT_E_NO_MATCH: HRESULT = 0x80092009u32 as HRESULT;
+pub const CRYPT_E_UNEXPECTED_MSG_TYPE: HRESULT = 0x8009200Au32 as HRESULT;
+pub const CRYPT_E_NO_KEY_PROPERTY: HRESULT = 0x8009200Bu32 as HRESULT;
+pub const CRYPT_E_NO_DECRYPT_CERT: HRESULT = 0x8009200Cu32 as HRESULT;
+pub const CRYPT_E_BAD_MSG: HRESULT = 0x8009200Du32 as HRESULT;
+pub const CRYPT_E_NO_SIGNER: HRESULT = 0x8009200Eu32 as HRESULT;
+pub const CRYPT_E_PENDING_CLOSE: HRESULT = 0x8009200Fu32 as HRESULT;
+pub const CRYPT_E_REVOKED: HRESULT = 0x80092010u32 as HRESULT;
+pub const CRYPT_E_NO_REVOCATION_DLL: HRESULT = 0x80092011u32 as HRESULT;
+pub const CRYPT_E_NO_REVOCATION_CHECK: HRESULT = 0x80092012u32 as HRESULT;
+pub const CRYPT_E_REVOCATION_OFFLINE: HRESULT = 0x80092013u32 as HRESULT;
+pub const CRYPT_E_NOT_IN_REVOCATION_DATABASE: HRESULT = 0x80092014u32 as HRESULT;
+pub const CRYPT_E_INVALID_NUMERIC_STRING: HRESULT = 0x80092020u32 as HRESULT;
+pub const CRYPT_E_INVALID_PRINTABLE_STRING: HRESULT = 0x80092021u32 as HRESULT;
+pub const CRYPT_E_INVALID_IA5_STRING: HRESULT = 0x80092022u32 as HRESULT;
+pub const CRYPT_E_INVALID_X500_STRING: HRESULT = 0x80092023u32 as HRESULT;
+pub const CRYPT_E_NOT_CHAR_STRING: HRESULT = 0x80092024u32 as HRESULT;
+pub const CRYPT_E_FILERESIZED: HRESULT = 0x80092025u32 as HRESULT;
+pub const CRYPT_E_SECURITY_SETTINGS: HRESULT = 0x80092026u32 as HRESULT;
+pub const CRYPT_E_NO_VERIFY_USAGE_DLL: HRESULT = 0x80092027u32 as HRESULT;
+pub const CRYPT_E_NO_VERIFY_USAGE_CHECK: HRESULT = 0x80092028u32 as HRESULT;
+pub const CRYPT_E_VERIFY_USAGE_OFFLINE: HRESULT = 0x80092029u32 as HRESULT;
+pub const CRYPT_E_NOT_IN_CTL: HRESULT = 0x8009202Au32 as HRESULT;
+pub const CRYPT_E_NO_TRUSTED_SIGNER: HRESULT = 0x8009202Bu32 as HRESULT;
+pub const CRYPT_E_MISSING_PUBKEY_PARA: HRESULT = 0x8009202Cu32 as HRESULT;
+pub const CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND: HRESULT = 0x8009202Du32 as HRESULT;
+pub const CRYPT_E_OSS_ERROR: HRESULT = 0x80093000u32 as HRESULT;
+pub const OSS_MORE_BUF: HRESULT = 0x80093001u32 as HRESULT;
+pub const OSS_NEGATIVE_UINTEGER: HRESULT = 0x80093002u32 as HRESULT;
+pub const OSS_PDU_RANGE: HRESULT = 0x80093003u32 as HRESULT;
+pub const OSS_MORE_INPUT: HRESULT = 0x80093004u32 as HRESULT;
+pub const OSS_DATA_ERROR: HRESULT = 0x80093005u32 as HRESULT;
+pub const OSS_BAD_ARG: HRESULT = 0x80093006u32 as HRESULT;
+pub const OSS_BAD_VERSION: HRESULT = 0x80093007u32 as HRESULT;
+pub const OSS_OUT_MEMORY: HRESULT = 0x80093008u32 as HRESULT;
+pub const OSS_PDU_MISMATCH: HRESULT = 0x80093009u32 as HRESULT;
+pub const OSS_LIMITED: HRESULT = 0x8009300Au32 as HRESULT;
+pub const OSS_BAD_PTR: HRESULT = 0x8009300Bu32 as HRESULT;
+pub const OSS_BAD_TIME: HRESULT = 0x8009300Cu32 as HRESULT;
+pub const OSS_INDEFINITE_NOT_SUPPORTED: HRESULT = 0x8009300Du32 as HRESULT;
+pub const OSS_MEM_ERROR: HRESULT = 0x8009300Eu32 as HRESULT;
+pub const OSS_BAD_TABLE: HRESULT = 0x8009300Fu32 as HRESULT;
+pub const OSS_TOO_LONG: HRESULT = 0x80093010u32 as HRESULT;
+pub const OSS_CONSTRAINT_VIOLATED: HRESULT = 0x80093011u32 as HRESULT;
+pub const OSS_FATAL_ERROR: HRESULT = 0x80093012u32 as HRESULT;
+pub const OSS_ACCESS_SERIALIZATION_ERROR: HRESULT = 0x80093013u32 as HRESULT;
+pub const OSS_NULL_TBL: HRESULT = 0x80093014u32 as HRESULT;
+pub const OSS_NULL_FCN: HRESULT = 0x80093015u32 as HRESULT;
+pub const OSS_BAD_ENCRULES: HRESULT = 0x80093016u32 as HRESULT;
+pub const OSS_UNAVAIL_ENCRULES: HRESULT = 0x80093017u32 as HRESULT;
+pub const OSS_CANT_OPEN_TRACE_WINDOW: HRESULT = 0x80093018u32 as HRESULT;
+pub const OSS_UNIMPLEMENTED: HRESULT = 0x80093019u32 as HRESULT;
+pub const OSS_OID_DLL_NOT_LINKED: HRESULT = 0x8009301Au32 as HRESULT;
+pub const OSS_CANT_OPEN_TRACE_FILE: HRESULT = 0x8009301Bu32 as HRESULT;
+pub const OSS_TRACE_FILE_ALREADY_OPEN: HRESULT = 0x8009301Cu32 as HRESULT;
+pub const OSS_TABLE_MISMATCH: HRESULT = 0x8009301Du32 as HRESULT;
+pub const OSS_TYPE_NOT_SUPPORTED: HRESULT = 0x8009301Eu32 as HRESULT;
+pub const OSS_REAL_DLL_NOT_LINKED: HRESULT = 0x8009301Fu32 as HRESULT;
+pub const OSS_REAL_CODE_NOT_LINKED: HRESULT = 0x80093020u32 as HRESULT;
+pub const OSS_OUT_OF_RANGE: HRESULT = 0x80093021u32 as HRESULT;
+pub const OSS_COPIER_DLL_NOT_LINKED: HRESULT = 0x80093022u32 as HRESULT;
+pub const OSS_CONSTRAINT_DLL_NOT_LINKED: HRESULT = 0x80093023u32 as HRESULT;
+pub const OSS_COMPARATOR_DLL_NOT_LINKED: HRESULT = 0x80093024u32 as HRESULT;
+pub const OSS_COMPARATOR_CODE_NOT_LINKED: HRESULT = 0x80093025u32 as HRESULT;
+pub const OSS_MEM_MGR_DLL_NOT_LINKED: HRESULT = 0x80093026u32 as HRESULT;
+pub const OSS_PDV_DLL_NOT_LINKED: HRESULT = 0x80093027u32 as HRESULT;
+pub const OSS_PDV_CODE_NOT_LINKED: HRESULT = 0x80093028u32 as HRESULT;
+pub const OSS_API_DLL_NOT_LINKED: HRESULT = 0x80093029u32 as HRESULT;
+pub const OSS_BERDER_DLL_NOT_LINKED: HRESULT = 0x8009302Au32 as HRESULT;
+pub const OSS_PER_DLL_NOT_LINKED: HRESULT = 0x8009302Bu32 as HRESULT;
+pub const OSS_OPEN_TYPE_ERROR: HRESULT = 0x8009302Cu32 as HRESULT;
+pub const OSS_MUTEX_NOT_CREATED: HRESULT = 0x8009302Du32 as HRESULT;
+pub const OSS_CANT_CLOSE_TRACE_FILE: HRESULT = 0x8009302Eu32 as HRESULT;
+pub const CRYPT_E_ASN1_ERROR: HRESULT = 0x80093100u32 as HRESULT;
+pub const CRYPT_E_ASN1_INTERNAL: HRESULT = 0x80093101u32 as HRESULT;
+pub const CRYPT_E_ASN1_EOD: HRESULT = 0x80093102u32 as HRESULT;
+pub const CRYPT_E_ASN1_CORRUPT: HRESULT = 0x80093103u32 as HRESULT;
+pub const CRYPT_E_ASN1_LARGE: HRESULT = 0x80093104u32 as HRESULT;
+pub const CRYPT_E_ASN1_CONSTRAINT: HRESULT = 0x80093105u32 as HRESULT;
+pub const CRYPT_E_ASN1_MEMORY: HRESULT = 0x80093106u32 as HRESULT;
+pub const CRYPT_E_ASN1_OVERFLOW: HRESULT = 0x80093107u32 as HRESULT;
+pub const CRYPT_E_ASN1_BADPDU: HRESULT = 0x80093108u32 as HRESULT;
+pub const CRYPT_E_ASN1_BADARGS: HRESULT = 0x80093109u32 as HRESULT;
+pub const CRYPT_E_ASN1_BADREAL: HRESULT = 0x8009310Au32 as HRESULT;
+pub const CRYPT_E_ASN1_BADTAG: HRESULT = 0x8009310Bu32 as HRESULT;
+pub const CRYPT_E_ASN1_CHOICE: HRESULT = 0x8009310Cu32 as HRESULT;
+pub const CRYPT_E_ASN1_RULE: HRESULT = 0x8009310Du32 as HRESULT;
+pub const CRYPT_E_ASN1_UTF8: HRESULT = 0x8009310Eu32 as HRESULT;
+pub const CRYPT_E_ASN1_PDU_TYPE: HRESULT = 0x80093133u32 as HRESULT;
+pub const CRYPT_E_ASN1_NYI: HRESULT = 0x80093134u32 as HRESULT;
+pub const CRYPT_E_ASN1_EXTENDED: HRESULT = 0x80093201u32 as HRESULT;
+pub const CRYPT_E_ASN1_NOEOD: HRESULT = 0x80093202u32 as HRESULT;
+pub const CERTSRV_E_BAD_REQUESTSUBJECT: HRESULT = 0x80094001u32 as HRESULT;
+pub const CERTSRV_E_NO_REQUEST: HRESULT = 0x80094002u32 as HRESULT;
+pub const CERTSRV_E_BAD_REQUESTSTATUS: HRESULT = 0x80094003u32 as HRESULT;
+pub const CERTSRV_E_PROPERTY_EMPTY: HRESULT = 0x80094004u32 as HRESULT;
+pub const CERTSRV_E_INVALID_CA_CERTIFICATE: HRESULT = 0x80094005u32 as HRESULT;
+pub const CERTSRV_E_SERVER_SUSPENDED: HRESULT = 0x80094006u32 as HRESULT;
+pub const CERTSRV_E_ENCODING_LENGTH: HRESULT = 0x80094007u32 as HRESULT;
+pub const CERTSRV_E_ROLECONFLICT: HRESULT = 0x80094008u32 as HRESULT;
+pub const CERTSRV_E_RESTRICTEDOFFICER: HRESULT = 0x80094009u32 as HRESULT;
+pub const CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED: HRESULT = 0x8009400Au32 as HRESULT;
+pub const CERTSRV_E_NO_VALID_KRA: HRESULT = 0x8009400Bu32 as HRESULT;
+pub const CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL: HRESULT = 0x8009400Cu32 as HRESULT;
+pub const CERTSRV_E_NO_CAADMIN_DEFINED: HRESULT = 0x8009400Du32 as HRESULT;
+pub const CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE: HRESULT = 0x8009400Eu32 as HRESULT;
+pub const CERTSRV_E_NO_DB_SESSIONS: HRESULT = 0x8009400Fu32 as HRESULT;
+pub const CERTSRV_E_ALIGNMENT_FAULT: HRESULT = 0x80094010u32 as HRESULT;
+pub const CERTSRV_E_ENROLL_DENIED: HRESULT = 0x80094011u32 as HRESULT;
+pub const CERTSRV_E_TEMPLATE_DENIED: HRESULT = 0x80094012u32 as HRESULT;
+pub const CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE: HRESULT = 0x80094013u32 as HRESULT;
+pub const CERTSRV_E_ADMIN_DENIED_REQUEST: HRESULT = 0x80094014u32 as HRESULT;
+pub const CERTSRV_E_NO_POLICY_SERVER: HRESULT = 0x80094015u32 as HRESULT;
+pub const CERTSRV_E_WEAK_SIGNATURE_OR_KEY: HRESULT = 0x80094016u32 as HRESULT;
+pub const CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED: HRESULT = 0x80094017u32 as HRESULT;
+pub const CERTSRV_E_ENCRYPTION_CERT_REQUIRED: HRESULT = 0x80094018u32 as HRESULT;
+pub const CERTSRV_E_UNSUPPORTED_CERT_TYPE: HRESULT = 0x80094800u32 as HRESULT;
+pub const CERTSRV_E_NO_CERT_TYPE: HRESULT = 0x80094801u32 as HRESULT;
+pub const CERTSRV_E_TEMPLATE_CONFLICT: HRESULT = 0x80094802u32 as HRESULT;
+pub const CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED: HRESULT = 0x80094803u32 as HRESULT;
+pub const CERTSRV_E_ARCHIVED_KEY_REQUIRED: HRESULT = 0x80094804u32 as HRESULT;
+pub const CERTSRV_E_SMIME_REQUIRED: HRESULT = 0x80094805u32 as HRESULT;
+pub const CERTSRV_E_BAD_RENEWAL_SUBJECT: HRESULT = 0x80094806u32 as HRESULT;
+pub const CERTSRV_E_BAD_TEMPLATE_VERSION: HRESULT = 0x80094807u32 as HRESULT;
+pub const CERTSRV_E_TEMPLATE_POLICY_REQUIRED: HRESULT = 0x80094808u32 as HRESULT;
+pub const CERTSRV_E_SIGNATURE_POLICY_REQUIRED: HRESULT = 0x80094809u32 as HRESULT;
+pub const CERTSRV_E_SIGNATURE_COUNT: HRESULT = 0x8009480Au32 as HRESULT;
+pub const CERTSRV_E_SIGNATURE_REJECTED: HRESULT = 0x8009480Bu32 as HRESULT;
+pub const CERTSRV_E_ISSUANCE_POLICY_REQUIRED: HRESULT = 0x8009480Cu32 as HRESULT;
+pub const CERTSRV_E_SUBJECT_UPN_REQUIRED: HRESULT = 0x8009480Du32 as HRESULT;
+pub const CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED: HRESULT = 0x8009480Eu32 as HRESULT;
+pub const CERTSRV_E_SUBJECT_DNS_REQUIRED: HRESULT = 0x8009480Fu32 as HRESULT;
+pub const CERTSRV_E_ARCHIVED_KEY_UNEXPECTED: HRESULT = 0x80094810u32 as HRESULT;
+pub const CERTSRV_E_KEY_LENGTH: HRESULT = 0x80094811u32 as HRESULT;
+pub const CERTSRV_E_SUBJECT_EMAIL_REQUIRED: HRESULT = 0x80094812u32 as HRESULT;
+pub const CERTSRV_E_UNKNOWN_CERT_TYPE: HRESULT = 0x80094813u32 as HRESULT;
+pub const CERTSRV_E_CERT_TYPE_OVERLAP: HRESULT = 0x80094814u32 as HRESULT;
+pub const CERTSRV_E_TOO_MANY_SIGNATURES: HRESULT = 0x80094815u32 as HRESULT;
+pub const CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY: HRESULT = 0x80094816u32 as HRESULT;
+pub const CERTSRV_E_INVALID_EK: HRESULT = 0x80094817u32 as HRESULT;
+pub const CERTSRV_E_INVALID_IDBINDING: HRESULT = 0x80094818u32 as HRESULT;
+pub const CERTSRV_E_INVALID_ATTESTATION: HRESULT = 0x80094819u32 as HRESULT;
+pub const CERTSRV_E_KEY_ATTESTATION: HRESULT = 0x8009481Au32 as HRESULT;
+pub const CERTSRV_E_CORRUPT_KEY_ATTESTATION: HRESULT = 0x8009481Bu32 as HRESULT;
+pub const CERTSRV_E_EXPIRED_CHALLENGE: HRESULT = 0x8009481Cu32 as HRESULT;
+pub const CERTSRV_E_INVALID_RESPONSE: HRESULT = 0x8009481Du32 as HRESULT;
+pub const CERTSRV_E_INVALID_REQUESTID: HRESULT = 0x8009481Eu32 as HRESULT;
+pub const XENROLL_E_KEY_NOT_EXPORTABLE: HRESULT = 0x80095000u32 as HRESULT;
+pub const XENROLL_E_CANNOT_ADD_ROOT_CERT: HRESULT = 0x80095001u32 as HRESULT;
+pub const XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND: HRESULT = 0x80095002u32 as HRESULT;
+pub const XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH: HRESULT = 0x80095003u32 as HRESULT;
+pub const XENROLL_E_RESPONSE_KA_HASH_MISMATCH: HRESULT = 0x80095004u32 as HRESULT;
+pub const XENROLL_E_KEYSPEC_SMIME_MISMATCH: HRESULT = 0x80095005u32 as HRESULT;
+pub const TRUST_E_SYSTEM_ERROR: HRESULT = 0x80096001u32 as HRESULT;
+pub const TRUST_E_NO_SIGNER_CERT: HRESULT = 0x80096002u32 as HRESULT;
+pub const TRUST_E_COUNTER_SIGNER: HRESULT = 0x80096003u32 as HRESULT;
+pub const TRUST_E_CERT_SIGNATURE: HRESULT = 0x80096004u32 as HRESULT;
+pub const TRUST_E_TIME_STAMP: HRESULT = 0x80096005u32 as HRESULT;
+pub const TRUST_E_BAD_DIGEST: HRESULT = 0x80096010u32 as HRESULT;
+pub const TRUST_E_BASIC_CONSTRAINTS: HRESULT = 0x80096019u32 as HRESULT;
+pub const TRUST_E_FINANCIAL_CRITERIA: HRESULT = 0x8009601Eu32 as HRESULT;
+pub const MSSIPOTF_E_OUTOFMEMRANGE: HRESULT = 0x80097001u32 as HRESULT;
+pub const MSSIPOTF_E_CANTGETOBJECT: HRESULT = 0x80097002u32 as HRESULT;
+pub const MSSIPOTF_E_NOHEADTABLE: HRESULT = 0x80097003u32 as HRESULT;
+pub const MSSIPOTF_E_BAD_MAGICNUMBER: HRESULT = 0x80097004u32 as HRESULT;
+pub const MSSIPOTF_E_BAD_OFFSET_TABLE: HRESULT = 0x80097005u32 as HRESULT;
+pub const MSSIPOTF_E_TABLE_TAGORDER: HRESULT = 0x80097006u32 as HRESULT;
+pub const MSSIPOTF_E_TABLE_LONGWORD: HRESULT = 0x80097007u32 as HRESULT;
+pub const MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT: HRESULT = 0x80097008u32 as HRESULT;
+pub const MSSIPOTF_E_TABLES_OVERLAP: HRESULT = 0x80097009u32 as HRESULT;
+pub const MSSIPOTF_E_TABLE_PADBYTES: HRESULT = 0x8009700Au32 as HRESULT;
+pub const MSSIPOTF_E_FILETOOSMALL: HRESULT = 0x8009700Bu32 as HRESULT;
+pub const MSSIPOTF_E_TABLE_CHECKSUM: HRESULT = 0x8009700Cu32 as HRESULT;
+pub const MSSIPOTF_E_FILE_CHECKSUM: HRESULT = 0x8009700Du32 as HRESULT;
+pub const MSSIPOTF_E_FAILED_POLICY: HRESULT = 0x80097010u32 as HRESULT;
+pub const MSSIPOTF_E_FAILED_HINTS_CHECK: HRESULT = 0x80097011u32 as HRESULT;
+pub const MSSIPOTF_E_NOT_OPENTYPE: HRESULT = 0x80097012u32 as HRESULT;
+pub const MSSIPOTF_E_FILE: HRESULT = 0x80097013u32 as HRESULT;
+pub const MSSIPOTF_E_CRYPT: HRESULT = 0x80097014u32 as HRESULT;
+pub const MSSIPOTF_E_BADVERSION: HRESULT = 0x80097015u32 as HRESULT;
+pub const MSSIPOTF_E_DSIG_STRUCTURE: HRESULT = 0x80097016u32 as HRESULT;
+pub const MSSIPOTF_E_PCONST_CHECK: HRESULT = 0x80097017u32 as HRESULT;
+pub const MSSIPOTF_E_STRUCTURE: HRESULT = 0x80097018u32 as HRESULT;
+pub const ERROR_CRED_REQUIRES_CONFIRMATION: HRESULT = 0x80097019u32 as HRESULT;
+pub const NTE_OP_OK: HRESULT = 0;
+pub const TRUST_E_PROVIDER_UNKNOWN: HRESULT = 0x800B0001u32 as HRESULT;
+pub const TRUST_E_ACTION_UNKNOWN: HRESULT = 0x800B0002u32 as HRESULT;
+pub const TRUST_E_SUBJECT_FORM_UNKNOWN: HRESULT = 0x800B0003u32 as HRESULT;
+pub const TRUST_E_SUBJECT_NOT_TRUSTED: HRESULT = 0x800B0004u32 as HRESULT;
+pub const DIGSIG_E_ENCODE: HRESULT = 0x800B0005u32 as HRESULT;
+pub const DIGSIG_E_DECODE: HRESULT = 0x800B0006u32 as HRESULT;
+pub const DIGSIG_E_EXTENSIBILITY: HRESULT = 0x800B0007u32 as HRESULT;
+pub const DIGSIG_E_CRYPTO: HRESULT = 0x800B0008u32 as HRESULT;
+pub const PERSIST_E_SIZEDEFINITE: HRESULT = 0x800B0009u32 as HRESULT;
+pub const PERSIST_E_SIZEINDEFINITE: HRESULT = 0x800B000Au32 as HRESULT;
+pub const PERSIST_E_NOTSELFSIZING: HRESULT = 0x800B000Bu32 as HRESULT;
+pub const TRUST_E_NOSIGNATURE: HRESULT = 0x800B0100u32 as HRESULT;
+pub const CERT_E_EXPIRED: HRESULT = 0x800B0101u32 as HRESULT;
+pub const CERT_E_VALIDITYPERIODNESTING: HRESULT = 0x800B0102u32 as HRESULT;
+pub const CERT_E_ROLE: HRESULT = 0x800B0103u32 as HRESULT;
+pub const CERT_E_PATHLENCONST: HRESULT = 0x800B0104u32 as HRESULT;
+pub const CERT_E_CRITICAL: HRESULT = 0x800B0105u32 as HRESULT;
+pub const CERT_E_PURPOSE: HRESULT = 0x800B0106u32 as HRESULT;
+pub const CERT_E_ISSUERCHAINING: HRESULT = 0x800B0107u32 as HRESULT;
+pub const CERT_E_MALFORMED: HRESULT = 0x800B0108u32 as HRESULT;
+pub const CERT_E_UNTRUSTEDROOT: HRESULT = 0x800B0109u32 as HRESULT;
+pub const CERT_E_CHAINING: HRESULT = 0x800B010Au32 as HRESULT;
+pub const TRUST_E_FAIL: HRESULT = 0x800B010Bu32 as HRESULT;
+pub const CERT_E_REVOKED: HRESULT = 0x800B010Cu32 as HRESULT;
+pub const CERT_E_UNTRUSTEDTESTROOT: HRESULT = 0x800B010Du32 as HRESULT;
+pub const CERT_E_REVOCATION_FAILURE: HRESULT = 0x800B010Eu32 as HRESULT;
+pub const CERT_E_CN_NO_MATCH: HRESULT = 0x800B010Fu32 as HRESULT;
+pub const CERT_E_WRONG_USAGE: HRESULT = 0x800B0110u32 as HRESULT;
+pub const TRUST_E_EXPLICIT_DISTRUST: HRESULT = 0x800B0111u32 as HRESULT;
+pub const CERT_E_UNTRUSTEDCA: HRESULT = 0x800B0112u32 as HRESULT;
+pub const CERT_E_INVALID_POLICY: HRESULT = 0x800B0113u32 as HRESULT;
+pub const CERT_E_INVALID_NAME: HRESULT = 0x800B0114u32 as HRESULT;
+pub const SPAPI_E_EXPECTED_SECTION_NAME: HRESULT = 0x800F0000u32 as HRESULT;
+pub const SPAPI_E_BAD_SECTION_NAME_LINE: HRESULT = 0x800F0001u32 as HRESULT;
+pub const SPAPI_E_SECTION_NAME_TOO_LONG: HRESULT = 0x800F0002u32 as HRESULT;
+pub const SPAPI_E_GENERAL_SYNTAX: HRESULT = 0x800F0003u32 as HRESULT;
+pub const SPAPI_E_WRONG_INF_STYLE: HRESULT = 0x800F0100u32 as HRESULT;
+pub const SPAPI_E_SECTION_NOT_FOUND: HRESULT = 0x800F0101u32 as HRESULT;
+pub const SPAPI_E_LINE_NOT_FOUND: HRESULT = 0x800F0102u32 as HRESULT;
+pub const SPAPI_E_NO_BACKUP: HRESULT = 0x800F0103u32 as HRESULT;
+pub const SPAPI_E_NO_ASSOCIATED_CLASS: HRESULT = 0x800F0200u32 as HRESULT;
+pub const SPAPI_E_CLASS_MISMATCH: HRESULT = 0x800F0201u32 as HRESULT;
+pub const SPAPI_E_DUPLICATE_FOUND: HRESULT = 0x800F0202u32 as HRESULT;
+pub const SPAPI_E_NO_DRIVER_SELECTED: HRESULT = 0x800F0203u32 as HRESULT;
+pub const SPAPI_E_KEY_DOES_NOT_EXIST: HRESULT = 0x800F0204u32 as HRESULT;
+pub const SPAPI_E_INVALID_DEVINST_NAME: HRESULT = 0x800F0205u32 as HRESULT;
+pub const SPAPI_E_INVALID_CLASS: HRESULT = 0x800F0206u32 as HRESULT;
+pub const SPAPI_E_DEVINST_ALREADY_EXISTS: HRESULT = 0x800F0207u32 as HRESULT;
+pub const SPAPI_E_DEVINFO_NOT_REGISTERED: HRESULT = 0x800F0208u32 as HRESULT;
+pub const SPAPI_E_INVALID_REG_PROPERTY: HRESULT = 0x800F0209u32 as HRESULT;
+pub const SPAPI_E_NO_INF: HRESULT = 0x800F020Au32 as HRESULT;
+pub const SPAPI_E_NO_SUCH_DEVINST: HRESULT = 0x800F020Bu32 as HRESULT;
+pub const SPAPI_E_CANT_LOAD_CLASS_ICON: HRESULT = 0x800F020Cu32 as HRESULT;
+pub const SPAPI_E_INVALID_CLASS_INSTALLER: HRESULT = 0x800F020Du32 as HRESULT;
+pub const SPAPI_E_DI_DO_DEFAULT: HRESULT = 0x800F020Eu32 as HRESULT;
+pub const SPAPI_E_DI_NOFILECOPY: HRESULT = 0x800F020Fu32 as HRESULT;
+pub const SPAPI_E_INVALID_HWPROFILE: HRESULT = 0x800F0210u32 as HRESULT;
+pub const SPAPI_E_NO_DEVICE_SELECTED: HRESULT = 0x800F0211u32 as HRESULT;
+pub const SPAPI_E_DEVINFO_LIST_LOCKED: HRESULT = 0x800F0212u32 as HRESULT;
+pub const SPAPI_E_DEVINFO_DATA_LOCKED: HRESULT = 0x800F0213u32 as HRESULT;
+pub const SPAPI_E_DI_BAD_PATH: HRESULT = 0x800F0214u32 as HRESULT;
+pub const SPAPI_E_NO_CLASSINSTALL_PARAMS: HRESULT = 0x800F0215u32 as HRESULT;
+pub const SPAPI_E_FILEQUEUE_LOCKED: HRESULT = 0x800F0216u32 as HRESULT;
+pub const SPAPI_E_BAD_SERVICE_INSTALLSECT: HRESULT = 0x800F0217u32 as HRESULT;
+pub const SPAPI_E_NO_CLASS_DRIVER_LIST: HRESULT = 0x800F0218u32 as HRESULT;
+pub const SPAPI_E_NO_ASSOCIATED_SERVICE: HRESULT = 0x800F0219u32 as HRESULT;
+pub const SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE: HRESULT = 0x800F021Au32 as HRESULT;
+pub const SPAPI_E_DEVICE_INTERFACE_ACTIVE: HRESULT = 0x800F021Bu32 as HRESULT;
+pub const SPAPI_E_DEVICE_INTERFACE_REMOVED: HRESULT = 0x800F021Cu32 as HRESULT;
+pub const SPAPI_E_BAD_INTERFACE_INSTALLSECT: HRESULT = 0x800F021Du32 as HRESULT;
+pub const SPAPI_E_NO_SUCH_INTERFACE_CLASS: HRESULT = 0x800F021Eu32 as HRESULT;
+pub const SPAPI_E_INVALID_REFERENCE_STRING: HRESULT = 0x800F021Fu32 as HRESULT;
+pub const SPAPI_E_INVALID_MACHINENAME: HRESULT = 0x800F0220u32 as HRESULT;
+pub const SPAPI_E_REMOTE_COMM_FAILURE: HRESULT = 0x800F0221u32 as HRESULT;
+pub const SPAPI_E_MACHINE_UNAVAILABLE: HRESULT = 0x800F0222u32 as HRESULT;
+pub const SPAPI_E_NO_CONFIGMGR_SERVICES: HRESULT = 0x800F0223u32 as HRESULT;
+pub const SPAPI_E_INVALID_PROPPAGE_PROVIDER: HRESULT = 0x800F0224u32 as HRESULT;
+pub const SPAPI_E_NO_SUCH_DEVICE_INTERFACE: HRESULT = 0x800F0225u32 as HRESULT;
+pub const SPAPI_E_DI_POSTPROCESSING_REQUIRED: HRESULT = 0x800F0226u32 as HRESULT;
+pub const SPAPI_E_INVALID_COINSTALLER: HRESULT = 0x800F0227u32 as HRESULT;
+pub const SPAPI_E_NO_COMPAT_DRIVERS: HRESULT = 0x800F0228u32 as HRESULT;
+pub const SPAPI_E_NO_DEVICE_ICON: HRESULT = 0x800F0229u32 as HRESULT;
+pub const SPAPI_E_INVALID_INF_LOGCONFIG: HRESULT = 0x800F022Au32 as HRESULT;
+pub const SPAPI_E_DI_DONT_INSTALL: HRESULT = 0x800F022Bu32 as HRESULT;
+pub const SPAPI_E_INVALID_FILTER_DRIVER: HRESULT = 0x800F022Cu32 as HRESULT;
+pub const SPAPI_E_NON_WINDOWS_NT_DRIVER: HRESULT = 0x800F022Du32 as HRESULT;
+pub const SPAPI_E_NON_WINDOWS_DRIVER: HRESULT = 0x800F022Eu32 as HRESULT;
+pub const SPAPI_E_NO_CATALOG_FOR_OEM_INF: HRESULT = 0x800F022Fu32 as HRESULT;
+pub const SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE: HRESULT = 0x800F0230u32 as HRESULT;
+pub const SPAPI_E_NOT_DISABLEABLE: HRESULT = 0x800F0231u32 as HRESULT;
+pub const SPAPI_E_CANT_REMOVE_DEVINST: HRESULT = 0x800F0232u32 as HRESULT;
+pub const SPAPI_E_INVALID_TARGET: HRESULT = 0x800F0233u32 as HRESULT;
+pub const SPAPI_E_DRIVER_NONNATIVE: HRESULT = 0x800F0234u32 as HRESULT;
+pub const SPAPI_E_IN_WOW64: HRESULT = 0x800F0235u32 as HRESULT;
+pub const SPAPI_E_SET_SYSTEM_RESTORE_POINT: HRESULT = 0x800F0236u32 as HRESULT;
+pub const SPAPI_E_INCORRECTLY_COPIED_INF: HRESULT = 0x800F0237u32 as HRESULT;
+pub const SPAPI_E_SCE_DISABLED: HRESULT = 0x800F0238u32 as HRESULT;
+pub const SPAPI_E_UNKNOWN_EXCEPTION: HRESULT = 0x800F0239u32 as HRESULT;
+pub const SPAPI_E_PNP_REGISTRY_ERROR: HRESULT = 0x800F023Au32 as HRESULT;
+pub const SPAPI_E_REMOTE_REQUEST_UNSUPPORTED: HRESULT = 0x800F023Bu32 as HRESULT;
+pub const SPAPI_E_NOT_AN_INSTALLED_OEM_INF: HRESULT = 0x800F023Cu32 as HRESULT;
+pub const SPAPI_E_INF_IN_USE_BY_DEVICES: HRESULT = 0x800F023Du32 as HRESULT;
+pub const SPAPI_E_DI_FUNCTION_OBSOLETE: HRESULT = 0x800F023Eu32 as HRESULT;
+pub const SPAPI_E_NO_AUTHENTICODE_CATALOG: HRESULT = 0x800F023Fu32 as HRESULT;
+pub const SPAPI_E_AUTHENTICODE_DISALLOWED: HRESULT = 0x800F0240u32 as HRESULT;
+pub const SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER: HRESULT = 0x800F0241u32 as HRESULT;
+pub const SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED: HRESULT = 0x800F0242u32 as HRESULT;
+pub const SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED: HRESULT = 0x800F0243u32 as HRESULT;
+pub const SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH: HRESULT = 0x800F0244u32 as HRESULT;
+pub const SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE: HRESULT = 0x800F0245u32 as HRESULT;
+pub const SPAPI_E_DEVICE_INSTALLER_NOT_READY: HRESULT = 0x800F0246u32 as HRESULT;
+pub const SPAPI_E_DRIVER_STORE_ADD_FAILED: HRESULT = 0x800F0247u32 as HRESULT;
+pub const SPAPI_E_DEVICE_INSTALL_BLOCKED: HRESULT = 0x800F0248u32 as HRESULT;
+pub const SPAPI_E_DRIVER_INSTALL_BLOCKED: HRESULT = 0x800F0249u32 as HRESULT;
+pub const SPAPI_E_WRONG_INF_TYPE: HRESULT = 0x800F024Au32 as HRESULT;
+pub const SPAPI_E_FILE_HASH_NOT_IN_CATALOG: HRESULT = 0x800F024Bu32 as HRESULT;
+pub const SPAPI_E_DRIVER_STORE_DELETE_FAILED: HRESULT = 0x800F024Cu32 as HRESULT;
+pub const SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW: HRESULT = 0x800F0300u32 as HRESULT;
+pub const SPAPI_E_ERROR_NOT_INSTALLED: HRESULT = 0x800F1000u32 as HRESULT;
+pub const SCARD_S_SUCCESS: HRESULT = NO_ERROR as HRESULT;
+pub const SCARD_F_INTERNAL_ERROR: HRESULT = 0x80100001u32 as HRESULT;
+pub const SCARD_E_CANCELLED: HRESULT = 0x80100002u32 as HRESULT;
+pub const SCARD_E_INVALID_HANDLE: HRESULT = 0x80100003u32 as HRESULT;
+pub const SCARD_E_INVALID_PARAMETER: HRESULT = 0x80100004u32 as HRESULT;
+pub const SCARD_E_INVALID_TARGET: HRESULT = 0x80100005u32 as HRESULT;
+pub const SCARD_E_NO_MEMORY: HRESULT = 0x80100006u32 as HRESULT;
+pub const SCARD_F_WAITED_TOO_LONG: HRESULT = 0x80100007u32 as HRESULT;
+pub const SCARD_E_INSUFFICIENT_BUFFER: HRESULT = 0x80100008u32 as HRESULT;
+pub const SCARD_E_UNKNOWN_READER: HRESULT = 0x80100009u32 as HRESULT;
+pub const SCARD_E_TIMEOUT: HRESULT = 0x8010000Au32 as HRESULT;
+pub const SCARD_E_SHARING_VIOLATION: HRESULT = 0x8010000Bu32 as HRESULT;
+pub const SCARD_E_NO_SMARTCARD: HRESULT = 0x8010000Cu32 as HRESULT;
+pub const SCARD_E_UNKNOWN_CARD: HRESULT = 0x8010000Du32 as HRESULT;
+pub const SCARD_E_CANT_DISPOSE: HRESULT = 0x8010000Eu32 as HRESULT;
+pub const SCARD_E_PROTO_MISMATCH: HRESULT = 0x8010000Fu32 as HRESULT;
+pub const SCARD_E_NOT_READY: HRESULT = 0x80100010u32 as HRESULT;
+pub const SCARD_E_INVALID_VALUE: HRESULT = 0x80100011u32 as HRESULT;
+pub const SCARD_E_SYSTEM_CANCELLED: HRESULT = 0x80100012u32 as HRESULT;
+pub const SCARD_F_COMM_ERROR: HRESULT = 0x80100013u32 as HRESULT;
+pub const SCARD_F_UNKNOWN_ERROR: HRESULT = 0x80100014u32 as HRESULT;
+pub const SCARD_E_INVALID_ATR: HRESULT = 0x80100015u32 as HRESULT;
+pub const SCARD_E_NOT_TRANSACTED: HRESULT = 0x80100016u32 as HRESULT;
+pub const SCARD_E_READER_UNAVAILABLE: HRESULT = 0x80100017u32 as HRESULT;
+pub const SCARD_P_SHUTDOWN: HRESULT = 0x80100018u32 as HRESULT;
+pub const SCARD_E_PCI_TOO_SMALL: HRESULT = 0x80100019u32 as HRESULT;
+pub const SCARD_E_READER_UNSUPPORTED: HRESULT = 0x8010001Au32 as HRESULT;
+pub const SCARD_E_DUPLICATE_READER: HRESULT = 0x8010001Bu32 as HRESULT;
+pub const SCARD_E_CARD_UNSUPPORTED: HRESULT = 0x8010001Cu32 as HRESULT;
+pub const SCARD_E_NO_SERVICE: HRESULT = 0x8010001Du32 as HRESULT;
+pub const SCARD_E_SERVICE_STOPPED: HRESULT = 0x8010001Eu32 as HRESULT;
+pub const SCARD_E_UNEXPECTED: HRESULT = 0x8010001Fu32 as HRESULT;
+pub const SCARD_E_ICC_INSTALLATION: HRESULT = 0x80100020u32 as HRESULT;
+pub const SCARD_E_ICC_CREATEORDER: HRESULT = 0x80100021u32 as HRESULT;
+pub const SCARD_E_UNSUPPORTED_FEATURE: HRESULT = 0x80100022u32 as HRESULT;
+pub const SCARD_E_DIR_NOT_FOUND: HRESULT = 0x80100023u32 as HRESULT;
+pub const SCARD_E_FILE_NOT_FOUND: HRESULT = 0x80100024u32 as HRESULT;
+pub const SCARD_E_NO_DIR: HRESULT = 0x80100025u32 as HRESULT;
+pub const SCARD_E_NO_FILE: HRESULT = 0x80100026u32 as HRESULT;
+pub const SCARD_E_NO_ACCESS: HRESULT = 0x80100027u32 as HRESULT;
+pub const SCARD_E_WRITE_TOO_MANY: HRESULT = 0x80100028u32 as HRESULT;
+pub const SCARD_E_BAD_SEEK: HRESULT = 0x80100029u32 as HRESULT;
+pub const SCARD_E_INVALID_CHV: HRESULT = 0x8010002Au32 as HRESULT;
+pub const SCARD_E_UNKNOWN_RES_MNG: HRESULT = 0x8010002Bu32 as HRESULT;
+pub const SCARD_E_NO_SUCH_CERTIFICATE: HRESULT = 0x8010002Cu32 as HRESULT;
+pub const SCARD_E_CERTIFICATE_UNAVAILABLE: HRESULT = 0x8010002Du32 as HRESULT;
+pub const SCARD_E_NO_READERS_AVAILABLE: HRESULT = 0x8010002Eu32 as HRESULT;
+pub const SCARD_E_COMM_DATA_LOST: HRESULT = 0x8010002Fu32 as HRESULT;
+pub const SCARD_E_NO_KEY_CONTAINER: HRESULT = 0x80100030u32 as HRESULT;
+pub const SCARD_E_SERVER_TOO_BUSY: HRESULT = 0x80100031u32 as HRESULT;
+pub const SCARD_E_PIN_CACHE_EXPIRED: HRESULT = 0x80100032u32 as HRESULT;
+pub const SCARD_E_NO_PIN_CACHE: HRESULT = 0x80100033u32 as HRESULT;
+pub const SCARD_E_READ_ONLY_CARD: HRESULT = 0x80100034u32 as HRESULT;
+pub const SCARD_W_UNSUPPORTED_CARD: HRESULT = 0x80100065u32 as HRESULT;
+pub const SCARD_W_UNRESPONSIVE_CARD: HRESULT = 0x80100066u32 as HRESULT;
+pub const SCARD_W_UNPOWERED_CARD: HRESULT = 0x80100067u32 as HRESULT;
+pub const SCARD_W_RESET_CARD: HRESULT = 0x80100068u32 as HRESULT;
+pub const SCARD_W_REMOVED_CARD: HRESULT = 0x80100069u32 as HRESULT;
+pub const SCARD_W_SECURITY_VIOLATION: HRESULT = 0x8010006Au32 as HRESULT;
+pub const SCARD_W_WRONG_CHV: HRESULT = 0x8010006Bu32 as HRESULT;
+pub const SCARD_W_CHV_BLOCKED: HRESULT = 0x8010006Cu32 as HRESULT;
+pub const SCARD_W_EOF: HRESULT = 0x8010006Du32 as HRESULT;
+pub const SCARD_W_CANCELLED_BY_USER: HRESULT = 0x8010006Eu32 as HRESULT;
+pub const SCARD_W_CARD_NOT_AUTHENTICATED: HRESULT = 0x8010006Fu32 as HRESULT;
+pub const SCARD_W_CACHE_ITEM_NOT_FOUND: HRESULT = 0x80100070u32 as HRESULT;
+pub const SCARD_W_CACHE_ITEM_STALE: HRESULT = 0x80100071u32 as HRESULT;
+pub const SCARD_W_CACHE_ITEM_TOO_BIG: HRESULT = 0x80100072u32 as HRESULT;
+pub const COMADMIN_E_OBJECTERRORS: HRESULT = 0x80110401u32 as HRESULT;
+pub const COMADMIN_E_OBJECTINVALID: HRESULT = 0x80110402u32 as HRESULT;
+pub const COMADMIN_E_KEYMISSING: HRESULT = 0x80110403u32 as HRESULT;
+pub const COMADMIN_E_ALREADYINSTALLED: HRESULT = 0x80110404u32 as HRESULT;
+pub const COMADMIN_E_APP_FILE_WRITEFAIL: HRESULT = 0x80110407u32 as HRESULT;
+pub const COMADMIN_E_APP_FILE_READFAIL: HRESULT = 0x80110408u32 as HRESULT;
+pub const COMADMIN_E_APP_FILE_VERSION: HRESULT = 0x80110409u32 as HRESULT;
+pub const COMADMIN_E_BADPATH: HRESULT = 0x8011040Au32 as HRESULT;
+pub const COMADMIN_E_APPLICATIONEXISTS: HRESULT = 0x8011040Bu32 as HRESULT;
+pub const COMADMIN_E_ROLEEXISTS: HRESULT = 0x8011040Cu32 as HRESULT;
+pub const COMADMIN_E_CANTCOPYFILE: HRESULT = 0x8011040Du32 as HRESULT;
+pub const COMADMIN_E_NOUSER: HRESULT = 0x8011040Fu32 as HRESULT;
+pub const COMADMIN_E_INVALIDUSERIDS: HRESULT = 0x80110410u32 as HRESULT;
+pub const COMADMIN_E_NOREGISTRYCLSID: HRESULT = 0x80110411u32 as HRESULT;
+pub const COMADMIN_E_BADREGISTRYPROGID: HRESULT = 0x80110412u32 as HRESULT;
+pub const COMADMIN_E_AUTHENTICATIONLEVEL: HRESULT = 0x80110413u32 as HRESULT;
+pub const COMADMIN_E_USERPASSWDNOTVALID: HRESULT = 0x80110414u32 as HRESULT;
+pub const COMADMIN_E_CLSIDORIIDMISMATCH: HRESULT = 0x80110418u32 as HRESULT;
+pub const COMADMIN_E_REMOTEINTERFACE: HRESULT = 0x80110419u32 as HRESULT;
+pub const COMADMIN_E_DLLREGISTERSERVER: HRESULT = 0x8011041Au32 as HRESULT;
+pub const COMADMIN_E_NOSERVERSHARE: HRESULT = 0x8011041Bu32 as HRESULT;
+pub const COMADMIN_E_DLLLOADFAILED: HRESULT = 0x8011041Du32 as HRESULT;
+pub const COMADMIN_E_BADREGISTRYLIBID: HRESULT = 0x8011041Eu32 as HRESULT;
+pub const COMADMIN_E_APPDIRNOTFOUND: HRESULT = 0x8011041Fu32 as HRESULT;
+pub const COMADMIN_E_REGISTRARFAILED: HRESULT = 0x80110423u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_DOESNOTEXIST: HRESULT = 0x80110424u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_LOADDLLFAIL: HRESULT = 0x80110425u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_GETCLASSOBJ: HRESULT = 0x80110426u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_CLASSNOTAVAIL: HRESULT = 0x80110427u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_BADTLB: HRESULT = 0x80110428u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_NOTINSTALLABLE: HRESULT = 0x80110429u32 as HRESULT;
+pub const COMADMIN_E_NOTCHANGEABLE: HRESULT = 0x8011042Au32 as HRESULT;
+pub const COMADMIN_E_NOTDELETEABLE: HRESULT = 0x8011042Bu32 as HRESULT;
+pub const COMADMIN_E_SESSION: HRESULT = 0x8011042Cu32 as HRESULT;
+pub const COMADMIN_E_COMP_MOVE_LOCKED: HRESULT = 0x8011042Du32 as HRESULT;
+pub const COMADMIN_E_COMP_MOVE_BAD_DEST: HRESULT = 0x8011042Eu32 as HRESULT;
+pub const COMADMIN_E_REGISTERTLB: HRESULT = 0x80110430u32 as HRESULT;
+pub const COMADMIN_E_SYSTEMAPP: HRESULT = 0x80110433u32 as HRESULT;
+pub const COMADMIN_E_COMPFILE_NOREGISTRAR: HRESULT = 0x80110434u32 as HRESULT;
+pub const COMADMIN_E_COREQCOMPINSTALLED: HRESULT = 0x80110435u32 as HRESULT;
+pub const COMADMIN_E_SERVICENOTINSTALLED: HRESULT = 0x80110436u32 as HRESULT;
+pub const COMADMIN_E_PROPERTYSAVEFAILED: HRESULT = 0x80110437u32 as HRESULT;
+pub const COMADMIN_E_OBJECTEXISTS: HRESULT = 0x80110438u32 as HRESULT;
+pub const COMADMIN_E_COMPONENTEXISTS: HRESULT = 0x80110439u32 as HRESULT;
+pub const COMADMIN_E_REGFILE_CORRUPT: HRESULT = 0x8011043Bu32 as HRESULT;
+pub const COMADMIN_E_PROPERTY_OVERFLOW: HRESULT = 0x8011043Cu32 as HRESULT;
+pub const COMADMIN_E_NOTINREGISTRY: HRESULT = 0x8011043Eu32 as HRESULT;
+pub const COMADMIN_E_OBJECTNOTPOOLABLE: HRESULT = 0x8011043Fu32 as HRESULT;
+pub const COMADMIN_E_APPLID_MATCHES_CLSID: HRESULT = 0x80110446u32 as HRESULT;
+pub const COMADMIN_E_ROLE_DOES_NOT_EXIST: HRESULT = 0x80110447u32 as HRESULT;
+pub const COMADMIN_E_START_APP_NEEDS_COMPONENTS: HRESULT = 0x80110448u32 as HRESULT;
+pub const COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM: HRESULT = 0x80110449u32 as HRESULT;
+pub const COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY: HRESULT = 0x8011044Au32 as HRESULT;
+pub const COMADMIN_E_CAN_NOT_START_APP: HRESULT = 0x8011044Bu32 as HRESULT;
+pub const COMADMIN_E_CAN_NOT_EXPORT_SYS_APP: HRESULT = 0x8011044Cu32 as HRESULT;
+pub const COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT: HRESULT = 0x8011044Du32 as HRESULT;
+pub const COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER: HRESULT = 0x8011044Eu32 as HRESULT;
+pub const COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE: HRESULT = 0x8011044Fu32 as HRESULT;
+pub const COMADMIN_E_BASE_PARTITION_ONLY: HRESULT = 0x80110450u32 as HRESULT;
+pub const COMADMIN_E_START_APP_DISABLED: HRESULT = 0x80110451u32 as HRESULT;
+pub const COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME: HRESULT = 0x80110457u32 as HRESULT;
+pub const COMADMIN_E_CAT_INVALID_PARTITION_NAME: HRESULT = 0x80110458u32 as HRESULT;
+pub const COMADMIN_E_CAT_PARTITION_IN_USE: HRESULT = 0x80110459u32 as HRESULT;
+pub const COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES: HRESULT = 0x8011045Au32 as HRESULT;
+pub const COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED: HRESULT = 0x8011045Bu32 as HRESULT;
+pub const COMADMIN_E_AMBIGUOUS_APPLICATION_NAME: HRESULT = 0x8011045Cu32 as HRESULT;
+pub const COMADMIN_E_AMBIGUOUS_PARTITION_NAME: HRESULT = 0x8011045Du32 as HRESULT;
+pub const COMADMIN_E_REGDB_NOTINITIALIZED: HRESULT = 0x80110472u32 as HRESULT;
+pub const COMADMIN_E_REGDB_NOTOPEN: HRESULT = 0x80110473u32 as HRESULT;
+pub const COMADMIN_E_REGDB_SYSTEMERR: HRESULT = 0x80110474u32 as HRESULT;
+pub const COMADMIN_E_REGDB_ALREADYRUNNING: HRESULT = 0x80110475u32 as HRESULT;
+pub const COMADMIN_E_MIG_VERSIONNOTSUPPORTED: HRESULT = 0x80110480u32 as HRESULT;
+pub const COMADMIN_E_MIG_SCHEMANOTFOUND: HRESULT = 0x80110481u32 as HRESULT;
+pub const COMADMIN_E_CAT_BITNESSMISMATCH: HRESULT = 0x80110482u32 as HRESULT;
+pub const COMADMIN_E_CAT_UNACCEPTABLEBITNESS: HRESULT = 0x80110483u32 as HRESULT;
+pub const COMADMIN_E_CAT_WRONGAPPBITNESS: HRESULT = 0x80110484u32 as HRESULT;
+pub const COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED: HRESULT = 0x80110485u32 as HRESULT;
+pub const COMADMIN_E_CAT_SERVERFAULT: HRESULT = 0x80110486u32 as HRESULT;
+pub const COMQC_E_APPLICATION_NOT_QUEUED: HRESULT = 0x80110600u32 as HRESULT;
+pub const COMQC_E_NO_QUEUEABLE_INTERFACES: HRESULT = 0x80110601u32 as HRESULT;
+pub const COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: HRESULT = 0x80110602u32 as HRESULT;
+pub const COMQC_E_NO_IPERSISTSTREAM: HRESULT = 0x80110603u32 as HRESULT;
+pub const COMQC_E_BAD_MESSAGE: HRESULT = 0x80110604u32 as HRESULT;
+pub const COMQC_E_UNAUTHENTICATED: HRESULT = 0x80110605u32 as HRESULT;
+pub const COMQC_E_UNTRUSTED_ENQUEUER: HRESULT = 0x80110606u32 as HRESULT;
+pub const MSDTC_E_DUPLICATE_RESOURCE: HRESULT = 0x80110701u32 as HRESULT;
+pub const COMADMIN_E_OBJECT_PARENT_MISSING: HRESULT = 0x80110808u32 as HRESULT;
+pub const COMADMIN_E_OBJECT_DOES_NOT_EXIST: HRESULT = 0x80110809u32 as HRESULT;
+pub const COMADMIN_E_APP_NOT_RUNNING: HRESULT = 0x8011080Au32 as HRESULT;
+pub const COMADMIN_E_INVALID_PARTITION: HRESULT = 0x8011080Bu32 as HRESULT;
+pub const COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE: HRESULT = 0x8011080Du32 as HRESULT;
+pub const COMADMIN_E_USER_IN_SET: HRESULT = 0x8011080Eu32 as HRESULT;
+pub const COMADMIN_E_CANTRECYCLELIBRARYAPPS: HRESULT = 0x8011080Fu32 as HRESULT;
+pub const COMADMIN_E_CANTRECYCLESERVICEAPPS: HRESULT = 0x80110811u32 as HRESULT;
+pub const COMADMIN_E_PROCESSALREADYRECYCLED: HRESULT = 0x80110812u32 as HRESULT;
+pub const COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED: HRESULT = 0x80110813u32 as HRESULT;
+pub const COMADMIN_E_CANTMAKEINPROCSERVICE: HRESULT = 0x80110814u32 as HRESULT;
+pub const COMADMIN_E_PROGIDINUSEBYCLSID: HRESULT = 0x80110815u32 as HRESULT;
+pub const COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET: HRESULT = 0x80110816u32 as HRESULT;
+pub const COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED: HRESULT = 0x80110817u32 as HRESULT;
+pub const COMADMIN_E_PARTITION_ACCESSDENIED: HRESULT = 0x80110818u32 as HRESULT;
+pub const COMADMIN_E_PARTITION_MSI_ONLY: HRESULT = 0x80110819u32 as HRESULT;
+pub const COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT: HRESULT = 0x8011081Au32 as HRESULT;
+pub const COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS: HRESULT = 0x8011081Bu32 as HRESULT;
+pub const COMADMIN_E_COMP_MOVE_SOURCE: HRESULT = 0x8011081Cu32 as HRESULT;
+pub const COMADMIN_E_COMP_MOVE_DEST: HRESULT = 0x8011081Du32 as HRESULT;
+pub const COMADMIN_E_COMP_MOVE_PRIVATE: HRESULT = 0x8011081Eu32 as HRESULT;
+pub const COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET: HRESULT = 0x8011081Fu32 as HRESULT;
+pub const COMADMIN_E_CANNOT_ALIAS_EVENTCLASS: HRESULT = 0x80110820u32 as HRESULT;
+pub const COMADMIN_E_PRIVATE_ACCESSDENIED: HRESULT = 0x80110821u32 as HRESULT;
+pub const COMADMIN_E_SAFERINVALID: HRESULT = 0x80110822u32 as HRESULT;
+pub const COMADMIN_E_REGISTRY_ACCESSDENIED: HRESULT = 0x80110823u32 as HRESULT;
+pub const COMADMIN_E_PARTITIONS_DISABLED: HRESULT = 0x80110824u32 as HRESULT;
+pub const WER_S_REPORT_DEBUG: HRESULT = 0x001B0000;
+pub const WER_S_REPORT_UPLOADED: HRESULT = 0x001B0001;
+pub const WER_S_REPORT_QUEUED: HRESULT = 0x001B0002;
+pub const WER_S_DISABLED: HRESULT = 0x001B0003;
+pub const WER_S_SUSPENDED_UPLOAD: HRESULT = 0x001B0004;
+pub const WER_S_DISABLED_QUEUE: HRESULT = 0x001B0005;
+pub const WER_S_DISABLED_ARCHIVE: HRESULT = 0x001B0006;
+pub const WER_S_REPORT_ASYNC: HRESULT = 0x001B0007;
+pub const WER_S_IGNORE_ASSERT_INSTANCE: HRESULT = 0x001B0008;
+pub const WER_S_IGNORE_ALL_ASSERTS: HRESULT = 0x001B0009;
+pub const WER_S_ASSERT_CONTINUE: HRESULT = 0x001B000A;
+pub const WER_S_THROTTLED: HRESULT = 0x001B000B;
+pub const WER_E_CRASH_FAILURE: HRESULT = 0x801B8000u32 as HRESULT;
+pub const WER_E_CANCELED: HRESULT = 0x801B8001u32 as HRESULT;
+pub const WER_E_NETWORK_FAILURE: HRESULT = 0x801B8002u32 as HRESULT;
+pub const WER_E_NOT_INITIALIZED: HRESULT = 0x801B8003u32 as HRESULT;
+pub const WER_E_ALREADY_REPORTING: HRESULT = 0x801B8004u32 as HRESULT;
+pub const WER_E_DUMP_THROTTLED: HRESULT = 0x801B8005u32 as HRESULT;
+pub const ERROR_FLT_IO_COMPLETE: HRESULT = 0x001F0001;
+pub const ERROR_FLT_NO_HANDLER_DEFINED: HRESULT = 0x801F0001u32 as HRESULT;
+pub const ERROR_FLT_CONTEXT_ALREADY_DEFINED: HRESULT = 0x801F0002u32 as HRESULT;
+pub const ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST: HRESULT = 0x801F0003u32 as HRESULT;
+pub const ERROR_FLT_DISALLOW_FAST_IO: HRESULT = 0x801F0004u32 as HRESULT;
+pub const ERROR_FLT_INVALID_NAME_REQUEST: HRESULT = 0x801F0005u32 as HRESULT;
+pub const ERROR_FLT_NOT_SAFE_TO_POST_OPERATION: HRESULT = 0x801F0006u32 as HRESULT;
+pub const ERROR_FLT_NOT_INITIALIZED: HRESULT = 0x801F0007u32 as HRESULT;
+pub const ERROR_FLT_FILTER_NOT_READY: HRESULT = 0x801F0008u32 as HRESULT;
+pub const ERROR_FLT_POST_OPERATION_CLEANUP: HRESULT = 0x801F0009u32 as HRESULT;
+pub const ERROR_FLT_INTERNAL_ERROR: HRESULT = 0x801F000Au32 as HRESULT;
+pub const ERROR_FLT_DELETING_OBJECT: HRESULT = 0x801F000Bu32 as HRESULT;
+pub const ERROR_FLT_MUST_BE_NONPAGED_POOL: HRESULT = 0x801F000Cu32 as HRESULT;
+pub const ERROR_FLT_DUPLICATE_ENTRY: HRESULT = 0x801F000Du32 as HRESULT;
+pub const ERROR_FLT_CBDQ_DISABLED: HRESULT = 0x801F000Eu32 as HRESULT;
+pub const ERROR_FLT_DO_NOT_ATTACH: HRESULT = 0x801F000Fu32 as HRESULT;
+pub const ERROR_FLT_DO_NOT_DETACH: HRESULT = 0x801F0010u32 as HRESULT;
+pub const ERROR_FLT_INSTANCE_ALTITUDE_COLLISION: HRESULT = 0x801F0011u32 as HRESULT;
+pub const ERROR_FLT_INSTANCE_NAME_COLLISION: HRESULT = 0x801F0012u32 as HRESULT;
+pub const ERROR_FLT_FILTER_NOT_FOUND: HRESULT = 0x801F0013u32 as HRESULT;
+pub const ERROR_FLT_VOLUME_NOT_FOUND: HRESULT = 0x801F0014u32 as HRESULT;
+pub const ERROR_FLT_INSTANCE_NOT_FOUND: HRESULT = 0x801F0015u32 as HRESULT;
+pub const ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND: HRESULT = 0x801F0016u32 as HRESULT;
+pub const ERROR_FLT_INVALID_CONTEXT_REGISTRATION: HRESULT = 0x801F0017u32 as HRESULT;
+pub const ERROR_FLT_NAME_CACHE_MISS: HRESULT = 0x801F0018u32 as HRESULT;
+pub const ERROR_FLT_NO_DEVICE_OBJECT: HRESULT = 0x801F0019u32 as HRESULT;
+pub const ERROR_FLT_VOLUME_ALREADY_MOUNTED: HRESULT = 0x801F001Au32 as HRESULT;
+pub const ERROR_FLT_ALREADY_ENLISTED: HRESULT = 0x801F001Bu32 as HRESULT;
+pub const ERROR_FLT_CONTEXT_ALREADY_LINKED: HRESULT = 0x801F001Cu32 as HRESULT;
+pub const ERROR_FLT_NO_WAITER_FOR_REPLY: HRESULT = 0x801F0020u32 as HRESULT;
+pub const ERROR_FLT_REGISTRATION_BUSY: HRESULT = 0x801F0023u32 as HRESULT;
+pub const ERROR_HUNG_DISPLAY_DRIVER_THREAD: HRESULT = 0x80260001u32 as HRESULT;
+pub const DWM_E_COMPOSITIONDISABLED: HRESULT = 0x80263001u32 as HRESULT;
+pub const DWM_E_REMOTING_NOT_SUPPORTED: HRESULT = 0x80263002u32 as HRESULT;
+pub const DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE: HRESULT = 0x80263003u32 as HRESULT;
+pub const DWM_E_NOT_QUEUING_PRESENTS: HRESULT = 0x80263004u32 as HRESULT;
+pub const DWM_E_ADAPTER_NOT_FOUND: HRESULT = 0x80263005u32 as HRESULT;
+pub const DWM_S_GDI_REDIRECTION_SURFACE: HRESULT = 0x00263005;
+pub const DWM_E_TEXTURE_TOO_LARGE: HRESULT = 0x80263007u32 as HRESULT;
+pub const ERROR_MONITOR_NO_DESCRIPTOR: HRESULT = 0x80261001u32 as HRESULT;
+pub const ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT: HRESULT = 0x80261002u32 as HRESULT;
+pub const ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM: HRESULT = 0xC0261003u32 as HRESULT;
+pub const ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK: HRESULT = 0xC0261004u32 as HRESULT;
+pub const ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED: HRESULT = 0xC0261005u32 as HRESULT;
+pub const ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK: HRESULT = 0xC0261006u32 as HRESULT;
+pub const ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK: HRESULT = 0xC0261007u32 as HRESULT;
+pub const ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA: HRESULT = 0xC0261008u32 as HRESULT;
+pub const ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK: HRESULT = 0xC0261009u32 as HRESULT;
+pub const ERROR_MONITOR_INVALID_MANUFACTURE_DATE: HRESULT = 0xC026100Au32 as HRESULT;
+pub const ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER: HRESULT = 0xC0262000u32 as HRESULT;
+pub const ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER: HRESULT = 0xC0262001u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER: HRESULT = 0xC0262002u32 as HRESULT;
+pub const ERROR_GRAPHICS_ADAPTER_WAS_RESET: HRESULT = 0xC0262003u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_DRIVER_MODEL: HRESULT = 0xC0262004u32 as HRESULT;
+pub const ERROR_GRAPHICS_PRESENT_MODE_CHANGED: HRESULT = 0xC0262005u32 as HRESULT;
+pub const ERROR_GRAPHICS_PRESENT_OCCLUDED: HRESULT = 0xC0262006u32 as HRESULT;
+pub const ERROR_GRAPHICS_PRESENT_DENIED: HRESULT = 0xC0262007u32 as HRESULT;
+pub const ERROR_GRAPHICS_CANNOTCOLORCONVERT: HRESULT = 0xC0262008u32 as HRESULT;
+pub const ERROR_GRAPHICS_DRIVER_MISMATCH: HRESULT = 0xC0262009u32 as HRESULT;
+pub const ERROR_GRAPHICS_PARTIAL_DATA_POPULATED: HRESULT = 0x4026200A;
+pub const ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED: HRESULT = 0xC026200Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_PRESENT_UNOCCLUDED: HRESULT = 0xC026200Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE: HRESULT = 0xC026200Du32 as HRESULT;
+pub const ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED: HRESULT = 0xC026200Eu32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_VIDEO_MEMORY: HRESULT = 0xC0262100u32 as HRESULT;
+pub const ERROR_GRAPHICS_CANT_LOCK_MEMORY: HRESULT = 0xC0262101u32 as HRESULT;
+pub const ERROR_GRAPHICS_ALLOCATION_BUSY: HRESULT = 0xC0262102u32 as HRESULT;
+pub const ERROR_GRAPHICS_TOO_MANY_REFERENCES: HRESULT = 0xC0262103u32 as HRESULT;
+pub const ERROR_GRAPHICS_TRY_AGAIN_LATER: HRESULT = 0xC0262104u32 as HRESULT;
+pub const ERROR_GRAPHICS_TRY_AGAIN_NOW: HRESULT = 0xC0262105u32 as HRESULT;
+pub const ERROR_GRAPHICS_ALLOCATION_INVALID: HRESULT = 0xC0262106u32 as HRESULT;
+pub const ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE: HRESULT = 0xC0262107u32 as HRESULT;
+pub const ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED: HRESULT = 0xC0262108u32 as HRESULT;
+pub const ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION: HRESULT = 0xC0262109u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE: HRESULT = 0xC0262110u32 as HRESULT;
+pub const ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION: HRESULT = 0xC0262111u32 as HRESULT;
+pub const ERROR_GRAPHICS_ALLOCATION_CLOSED: HRESULT = 0xC0262112u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE: HRESULT = 0xC0262113u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE: HRESULT = 0xC0262114u32 as HRESULT;
+pub const ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE: HRESULT = 0xC0262115u32 as HRESULT;
+pub const ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST: HRESULT = 0xC0262116u32 as HRESULT;
+pub const ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE: HRESULT = 0xC0262200u32 as HRESULT;
+pub const ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION: HRESULT = 0x40262201;
+pub const ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY: HRESULT = 0xC0262300u32 as HRESULT;
+pub const ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED: HRESULT = 0xC0262301u32 as HRESULT;
+pub const ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED: HRESULT = 0xC0262302u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDPN: HRESULT = 0xC0262303u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE: HRESULT = 0xC0262304u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET: HRESULT = 0xC0262305u32 as HRESULT;
+pub const ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED: HRESULT = 0xC0262306u32 as HRESULT;
+pub const ERROR_GRAPHICS_MODE_NOT_PINNED: HRESULT = 0x00262307;
+pub const ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET: HRESULT = 0xC0262308u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET: HRESULT = 0xC0262309u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_FREQUENCY: HRESULT = 0xC026230Au32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_ACTIVE_REGION: HRESULT = 0xC026230Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_TOTAL_REGION: HRESULT = 0xC026230Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE: HRESULT = 0xC0262310u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE: HRESULT = 0xC0262311u32 as HRESULT;
+pub const ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET: HRESULT = 0xC0262312u32 as HRESULT;
+pub const ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY: HRESULT = 0xC0262313u32 as HRESULT;
+pub const ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET: HRESULT = 0xC0262314u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET: HRESULT = 0xC0262315u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET: HRESULT = 0xC0262316u32 as HRESULT;
+pub const ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET: HRESULT = 0xC0262317u32 as HRESULT;
+pub const ERROR_GRAPHICS_TARGET_ALREADY_IN_SET: HRESULT = 0xC0262318u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH: HRESULT = 0xC0262319u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY: HRESULT = 0xC026231Au32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET: HRESULT = 0xC026231Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE: HRESULT = 0xC026231Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET: HRESULT = 0xC026231Du32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_PREFERRED_MODE: HRESULT = 0x0026231E;
+pub const ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET: HRESULT = 0xC026231Fu32 as HRESULT;
+pub const ERROR_GRAPHICS_STALE_MODESET: HRESULT = 0xC0262320u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET: HRESULT = 0xC0262321u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE: HRESULT = 0xC0262322u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN: HRESULT = 0xC0262323u32 as HRESULT;
+pub const ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE: HRESULT = 0xC0262324u32 as HRESULT;
+pub const ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION: HRESULT = 0xC0262325u32 as HRESULT;
+pub const ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES: HRESULT = 0xC0262326u32 as HRESULT;
+pub const ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY: HRESULT = 0xC0262327u32 as HRESULT;
+pub const ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE: HRESULT = 0xC0262328u32 as HRESULT;
+pub const ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET: HRESULT = 0xC0262329u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET: HRESULT = 0xC026232Au32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR: HRESULT = 0xC026232Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET: HRESULT = 0xC026232Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET: HRESULT = 0xC026232Du32 as HRESULT;
+pub const ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE: HRESULT = 0xC026232Eu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE: HRESULT = 0xC026232Fu32 as HRESULT;
+pub const ERROR_GRAPHICS_RESOURCES_NOT_RELATED: HRESULT = 0xC0262330u32 as HRESULT;
+pub const ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE: HRESULT = 0xC0262331u32 as HRESULT;
+pub const ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE: HRESULT = 0xC0262332u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET: HRESULT = 0xC0262333u32 as HRESULT;
+pub const ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER: HRESULT = 0xC0262334u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_VIDPNMGR: HRESULT = 0xC0262335u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_ACTIVE_VIDPN: HRESULT = 0xC0262336u32 as HRESULT;
+pub const ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY: HRESULT = 0xC0262337u32 as HRESULT;
+pub const ERROR_GRAPHICS_MONITOR_NOT_CONNECTED: HRESULT = 0xC0262338u32 as HRESULT;
+pub const ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY: HRESULT = 0xC0262339u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE: HRESULT = 0xC026233Au32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE: HRESULT = 0xC026233Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_STRIDE: HRESULT = 0xC026233Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PIXELFORMAT: HRESULT = 0xC026233Du32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_COLORBASIS: HRESULT = 0xC026233Eu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE: HRESULT = 0xC026233Fu32 as HRESULT;
+pub const ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY: HRESULT = 0xC0262340u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT: HRESULT = 0xC0262341u32 as HRESULT;
+pub const ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE: HRESULT = 0xC0262342u32 as HRESULT;
+pub const ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN: HRESULT = 0xC0262343u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL: HRESULT = 0xC0262344u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION: HRESULT = 0xC0262345u32 as HRESULT;
+pub const ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED: HRESULT = 0xC0262346u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_GAMMA_RAMP: HRESULT = 0xC0262347u32 as HRESULT;
+pub const ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED: HRESULT = 0xC0262348u32 as HRESULT;
+pub const ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED: HRESULT = 0xC0262349u32 as HRESULT;
+pub const ERROR_GRAPHICS_MODE_NOT_IN_MODESET: HRESULT = 0xC026234Au32 as HRESULT;
+pub const ERROR_GRAPHICS_DATASET_IS_EMPTY: HRESULT = 0x0026234B;
+pub const ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET: HRESULT = 0x0026234C;
+pub const ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON: HRESULT = 0xC026234Du32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE: HRESULT = 0xC026234Eu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE: HRESULT = 0xC026234Fu32 as HRESULT;
+pub const ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS: HRESULT = 0xC0262350u32 as HRESULT;
+pub const ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED: HRESULT = 0x00262351;
+pub const ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING: HRESULT = 0xC0262352u32 as HRESULT;
+pub const ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED: HRESULT = 0xC0262353u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS: HRESULT = 0xC0262354u32 as HRESULT;
+pub const ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT: HRESULT = 0xC0262355u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM: HRESULT = 0xC0262356u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN: HRESULT = 0xC0262357u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT: HRESULT = 0xC0262358u32 as HRESULT;
+pub const ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED: HRESULT = 0xC0262359u32 as HRESULT;
+pub const ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION: HRESULT = 0xC026235Au32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_CLIENT_TYPE: HRESULT = 0xC026235Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET: HRESULT = 0xC026235Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED: HRESULT = 0xC0262400u32 as HRESULT;
+pub const ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED: HRESULT = 0xC0262401u32 as HRESULT;
+pub const ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS: HRESULT = 0x4026242F;
+pub const ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER: HRESULT = 0xC0262430u32 as HRESULT;
+pub const ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED: HRESULT = 0xC0262431u32 as HRESULT;
+pub const ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED: HRESULT = 0xC0262432u32 as HRESULT;
+pub const ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY: HRESULT = 0xC0262433u32 as HRESULT;
+pub const ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED: HRESULT = 0xC0262434u32 as HRESULT;
+pub const ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON: HRESULT = 0xC0262435u32 as HRESULT;
+pub const ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE: HRESULT = 0xC0262436u32 as HRESULT;
+pub const ERROR_GRAPHICS_LEADLINK_START_DEFERRED: HRESULT = 0x40262437;
+pub const ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER: HRESULT = 0xC0262438u32 as HRESULT;
+pub const ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY: HRESULT = 0x40262439;
+pub const ERROR_GRAPHICS_START_DEFERRED: HRESULT = 0x4026243A;
+pub const ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED: HRESULT = 0xC026243Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_NOT_SUPPORTED: HRESULT = 0xC0262500u32 as HRESULT;
+pub const ERROR_GRAPHICS_COPP_NOT_SUPPORTED: HRESULT = 0xC0262501u32 as HRESULT;
+pub const ERROR_GRAPHICS_UAB_NOT_SUPPORTED: HRESULT = 0xC0262502u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS: HRESULT = 0xC0262503u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST: HRESULT = 0xC0262505u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_INTERNAL_ERROR: HRESULT = 0xC026250Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_INVALID_HANDLE: HRESULT = 0xC026250Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH: HRESULT = 0xC026250Eu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED: HRESULT = 0xC026250Fu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED: HRESULT = 0xC0262510u32 as HRESULT;
+pub const ERROR_GRAPHICS_PVP_HFS_FAILED: HRESULT = 0xC0262511u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_INVALID_SRM: HRESULT = 0xC0262512u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP: HRESULT = 0xC0262513u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP: HRESULT = 0xC0262514u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA: HRESULT = 0xC0262515u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET: HRESULT = 0xC0262516u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH: HRESULT = 0xC0262517u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE: HRESULT = 0xC0262518u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS: HRESULT = 0xC026251Au32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS: HRESULT = 0xC026251Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS: HRESULT = 0xC026251Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST: HRESULT = 0xC026251Du32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR: HRESULT = 0xC026251Eu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS: HRESULT = 0xC026251Fu32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED: HRESULT = 0xC0262520u32 as HRESULT;
+pub const ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST: HRESULT = 0xC0262521u32 as HRESULT;
+pub const ERROR_GRAPHICS_I2C_NOT_SUPPORTED: HRESULT = 0xC0262580u32 as HRESULT;
+pub const ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST: HRESULT = 0xC0262581u32 as HRESULT;
+pub const ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA: HRESULT = 0xC0262582u32 as HRESULT;
+pub const ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA: HRESULT = 0xC0262583u32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED: HRESULT = 0xC0262584u32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_INVALID_DATA: HRESULT = 0xC0262585u32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE: HRESULT = 0xC0262586u32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING: HRESULT = 0xC0262587u32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_INTERNAL_ERROR: HRESULT = 0xC0262588u32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND: HRESULT = 0xC0262589u32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH: HRESULT = 0xC026258Au32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM: HRESULT = 0xC026258Bu32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE: HRESULT = 0xC026258Cu32 as HRESULT;
+pub const ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS: HRESULT = 0xC026258Du32 as HRESULT;
+pub const ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE: HRESULT = 0xC02625D8u32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION: HRESULT = 0xC02625D9u32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION: HRESULT = 0xC02625DAu32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH: HRESULT = 0xC02625DBu32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION: HRESULT = 0xC02625DCu32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED: HRESULT = 0xC02625DEu32 as HRESULT;
+pub const ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE: HRESULT = 0xC02625DFu32 as HRESULT;
+pub const ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED: HRESULT = 0xC02625E0u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME: HRESULT = 0xC02625E1u32 as HRESULT;
+pub const ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP: HRESULT = 0xC02625E2u32 as HRESULT;
+pub const ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED: HRESULT = 0xC02625E3u32 as HRESULT;
+pub const ERROR_GRAPHICS_INVALID_POINTER: HRESULT = 0xC02625E4u32 as HRESULT;
+pub const ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE: HRESULT = 0xC02625E5u32 as HRESULT;
+pub const ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL: HRESULT = 0xC02625E6u32 as HRESULT;
+pub const ERROR_GRAPHICS_INTERNAL_ERROR: HRESULT = 0xC02625E7u32 as HRESULT;
+pub const ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS: HRESULT = 0xC02605E8u32 as HRESULT;
+pub const NAP_E_INVALID_PACKET: HRESULT = 0x80270001u32 as HRESULT;
+pub const NAP_E_MISSING_SOH: HRESULT = 0x80270002u32 as HRESULT;
+pub const NAP_E_CONFLICTING_ID: HRESULT = 0x80270003u32 as HRESULT;
+pub const NAP_E_NO_CACHED_SOH: HRESULT = 0x80270004u32 as HRESULT;
+pub const NAP_E_STILL_BOUND: HRESULT = 0x80270005u32 as HRESULT;
+pub const NAP_E_NOT_REGISTERED: HRESULT = 0x80270006u32 as HRESULT;
+pub const NAP_E_NOT_INITIALIZED: HRESULT = 0x80270007u32 as HRESULT;
+pub const NAP_E_MISMATCHED_ID: HRESULT = 0x80270008u32 as HRESULT;
+pub const NAP_E_NOT_PENDING: HRESULT = 0x80270009u32 as HRESULT;
+pub const NAP_E_ID_NOT_FOUND: HRESULT = 0x8027000Au32 as HRESULT;
+pub const NAP_E_MAXSIZE_TOO_SMALL: HRESULT = 0x8027000Bu32 as HRESULT;
+pub const NAP_E_SERVICE_NOT_RUNNING: HRESULT = 0x8027000Cu32 as HRESULT;
+pub const NAP_S_CERT_ALREADY_PRESENT: HRESULT = 0x0027000D;
+pub const NAP_E_ENTITY_DISABLED: HRESULT = 0x8027000Eu32 as HRESULT;
+pub const NAP_E_NETSH_GROUPPOLICY_ERROR: HRESULT = 0x8027000Fu32 as HRESULT;
+pub const NAP_E_TOO_MANY_CALLS: HRESULT = 0x80270010u32 as HRESULT;
+pub const NAP_E_SHV_CONFIG_EXISTED: HRESULT = 0x80270011u32 as HRESULT;
+pub const NAP_E_SHV_CONFIG_NOT_FOUND: HRESULT = 0x80270012u32 as HRESULT;
+pub const NAP_E_SHV_TIMEOUT: HRESULT = 0x80270013u32 as HRESULT;
+pub const TPM_E_ERROR_MASK: HRESULT = 0x80280000u32 as HRESULT;
+pub const TPM_E_AUTHFAIL: HRESULT = 0x80280001u32 as HRESULT;
+pub const TPM_E_BADINDEX: HRESULT = 0x80280002u32 as HRESULT;
+pub const TPM_E_BAD_PARAMETER: HRESULT = 0x80280003u32 as HRESULT;
+pub const TPM_E_AUDITFAILURE: HRESULT = 0x80280004u32 as HRESULT;
+pub const TPM_E_CLEAR_DISABLED: HRESULT = 0x80280005u32 as HRESULT;
+pub const TPM_E_DEACTIVATED: HRESULT = 0x80280006u32 as HRESULT;
+pub const TPM_E_DISABLED: HRESULT = 0x80280007u32 as HRESULT;
+pub const TPM_E_DISABLED_CMD: HRESULT = 0x80280008u32 as HRESULT;
+pub const TPM_E_FAIL: HRESULT = 0x80280009u32 as HRESULT;
+pub const TPM_E_BAD_ORDINAL: HRESULT = 0x8028000Au32 as HRESULT;
+pub const TPM_E_INSTALL_DISABLED: HRESULT = 0x8028000Bu32 as HRESULT;
+pub const TPM_E_INVALID_KEYHANDLE: HRESULT = 0x8028000Cu32 as HRESULT;
+pub const TPM_E_KEYNOTFOUND: HRESULT = 0x8028000Du32 as HRESULT;
+pub const TPM_E_INAPPROPRIATE_ENC: HRESULT = 0x8028000Eu32 as HRESULT;
+pub const TPM_E_MIGRATEFAIL: HRESULT = 0x8028000Fu32 as HRESULT;
+pub const TPM_E_INVALID_PCR_INFO: HRESULT = 0x80280010u32 as HRESULT;
+pub const TPM_E_NOSPACE: HRESULT = 0x80280011u32 as HRESULT;
+pub const TPM_E_NOSRK: HRESULT = 0x80280012u32 as HRESULT;
+pub const TPM_E_NOTSEALED_BLOB: HRESULT = 0x80280013u32 as HRESULT;
+pub const TPM_E_OWNER_SET: HRESULT = 0x80280014u32 as HRESULT;
+pub const TPM_E_RESOURCES: HRESULT = 0x80280015u32 as HRESULT;
+pub const TPM_E_SHORTRANDOM: HRESULT = 0x80280016u32 as HRESULT;
+pub const TPM_E_SIZE: HRESULT = 0x80280017u32 as HRESULT;
+pub const TPM_E_WRONGPCRVAL: HRESULT = 0x80280018u32 as HRESULT;
+pub const TPM_E_BAD_PARAM_SIZE: HRESULT = 0x80280019u32 as HRESULT;
+pub const TPM_E_SHA_THREAD: HRESULT = 0x8028001Au32 as HRESULT;
+pub const TPM_E_SHA_ERROR: HRESULT = 0x8028001Bu32 as HRESULT;
+pub const TPM_E_FAILEDSELFTEST: HRESULT = 0x8028001Cu32 as HRESULT;
+pub const TPM_E_AUTH2FAIL: HRESULT = 0x8028001Du32 as HRESULT;
+pub const TPM_E_BADTAG: HRESULT = 0x8028001Eu32 as HRESULT;
+pub const TPM_E_IOERROR: HRESULT = 0x8028001Fu32 as HRESULT;
+pub const TPM_E_ENCRYPT_ERROR: HRESULT = 0x80280020u32 as HRESULT;
+pub const TPM_E_DECRYPT_ERROR: HRESULT = 0x80280021u32 as HRESULT;
+pub const TPM_E_INVALID_AUTHHANDLE: HRESULT = 0x80280022u32 as HRESULT;
+pub const TPM_E_NO_ENDORSEMENT: HRESULT = 0x80280023u32 as HRESULT;
+pub const TPM_E_INVALID_KEYUSAGE: HRESULT = 0x80280024u32 as HRESULT;
+pub const TPM_E_WRONG_ENTITYTYPE: HRESULT = 0x80280025u32 as HRESULT;
+pub const TPM_E_INVALID_POSTINIT: HRESULT = 0x80280026u32 as HRESULT;
+pub const TPM_E_INAPPROPRIATE_SIG: HRESULT = 0x80280027u32 as HRESULT;
+pub const TPM_E_BAD_KEY_PROPERTY: HRESULT = 0x80280028u32 as HRESULT;
+pub const TPM_E_BAD_MIGRATION: HRESULT = 0x80280029u32 as HRESULT;
+pub const TPM_E_BAD_SCHEME: HRESULT = 0x8028002Au32 as HRESULT;
+pub const TPM_E_BAD_DATASIZE: HRESULT = 0x8028002Bu32 as HRESULT;
+pub const TPM_E_BAD_MODE: HRESULT = 0x8028002Cu32 as HRESULT;
+pub const TPM_E_BAD_PRESENCE: HRESULT = 0x8028002Du32 as HRESULT;
+pub const TPM_E_BAD_VERSION: HRESULT = 0x8028002Eu32 as HRESULT;
+pub const TPM_E_NO_WRAP_TRANSPORT: HRESULT = 0x8028002Fu32 as HRESULT;
+pub const TPM_E_AUDITFAIL_UNSUCCESSFUL: HRESULT = 0x80280030u32 as HRESULT;
+pub const TPM_E_AUDITFAIL_SUCCESSFUL: HRESULT = 0x80280031u32 as HRESULT;
+pub const TPM_E_NOTRESETABLE: HRESULT = 0x80280032u32 as HRESULT;
+pub const TPM_E_NOTLOCAL: HRESULT = 0x80280033u32 as HRESULT;
+pub const TPM_E_BAD_TYPE: HRESULT = 0x80280034u32 as HRESULT;
+pub const TPM_E_INVALID_RESOURCE: HRESULT = 0x80280035u32 as HRESULT;
+pub const TPM_E_NOTFIPS: HRESULT = 0x80280036u32 as HRESULT;
+pub const TPM_E_INVALID_FAMILY: HRESULT = 0x80280037u32 as HRESULT;
+pub const TPM_E_NO_NV_PERMISSION: HRESULT = 0x80280038u32 as HRESULT;
+pub const TPM_E_REQUIRES_SIGN: HRESULT = 0x80280039u32 as HRESULT;
+pub const TPM_E_KEY_NOTSUPPORTED: HRESULT = 0x8028003Au32 as HRESULT;
+pub const TPM_E_AUTH_CONFLICT: HRESULT = 0x8028003Bu32 as HRESULT;
+pub const TPM_E_AREA_LOCKED: HRESULT = 0x8028003Cu32 as HRESULT;
+pub const TPM_E_BAD_LOCALITY: HRESULT = 0x8028003Du32 as HRESULT;
+pub const TPM_E_READ_ONLY: HRESULT = 0x8028003Eu32 as HRESULT;
+pub const TPM_E_PER_NOWRITE: HRESULT = 0x8028003Fu32 as HRESULT;
+pub const TPM_E_FAMILYCOUNT: HRESULT = 0x80280040u32 as HRESULT;
+pub const TPM_E_WRITE_LOCKED: HRESULT = 0x80280041u32 as HRESULT;
+pub const TPM_E_BAD_ATTRIBUTES: HRESULT = 0x80280042u32 as HRESULT;
+pub const TPM_E_INVALID_STRUCTURE: HRESULT = 0x80280043u32 as HRESULT;
+pub const TPM_E_KEY_OWNER_CONTROL: HRESULT = 0x80280044u32 as HRESULT;
+pub const TPM_E_BAD_COUNTER: HRESULT = 0x80280045u32 as HRESULT;
+pub const TPM_E_NOT_FULLWRITE: HRESULT = 0x80280046u32 as HRESULT;
+pub const TPM_E_CONTEXT_GAP: HRESULT = 0x80280047u32 as HRESULT;
+pub const TPM_E_MAXNVWRITES: HRESULT = 0x80280048u32 as HRESULT;
+pub const TPM_E_NOOPERATOR: HRESULT = 0x80280049u32 as HRESULT;
+pub const TPM_E_RESOURCEMISSING: HRESULT = 0x8028004Au32 as HRESULT;
+pub const TPM_E_DELEGATE_LOCK: HRESULT = 0x8028004Bu32 as HRESULT;
+pub const TPM_E_DELEGATE_FAMILY: HRESULT = 0x8028004Cu32 as HRESULT;
+pub const TPM_E_DELEGATE_ADMIN: HRESULT = 0x8028004Du32 as HRESULT;
+pub const TPM_E_TRANSPORT_NOTEXCLUSIVE: HRESULT = 0x8028004Eu32 as HRESULT;
+pub const TPM_E_OWNER_CONTROL: HRESULT = 0x8028004Fu32 as HRESULT;
+pub const TPM_E_DAA_RESOURCES: HRESULT = 0x80280050u32 as HRESULT;
+pub const TPM_E_DAA_INPUT_DATA0: HRESULT = 0x80280051u32 as HRESULT;
+pub const TPM_E_DAA_INPUT_DATA1: HRESULT = 0x80280052u32 as HRESULT;
+pub const TPM_E_DAA_ISSUER_SETTINGS: HRESULT = 0x80280053u32 as HRESULT;
+pub const TPM_E_DAA_TPM_SETTINGS: HRESULT = 0x80280054u32 as HRESULT;
+pub const TPM_E_DAA_STAGE: HRESULT = 0x80280055u32 as HRESULT;
+pub const TPM_E_DAA_ISSUER_VALIDITY: HRESULT = 0x80280056u32 as HRESULT;
+pub const TPM_E_DAA_WRONG_W: HRESULT = 0x80280057u32 as HRESULT;
+pub const TPM_E_BAD_HANDLE: HRESULT = 0x80280058u32 as HRESULT;
+pub const TPM_E_BAD_DELEGATE: HRESULT = 0x80280059u32 as HRESULT;
+pub const TPM_E_BADCONTEXT: HRESULT = 0x8028005Au32 as HRESULT;
+pub const TPM_E_TOOMANYCONTEXTS: HRESULT = 0x8028005Bu32 as HRESULT;
+pub const TPM_E_MA_TICKET_SIGNATURE: HRESULT = 0x8028005Cu32 as HRESULT;
+pub const TPM_E_MA_DESTINATION: HRESULT = 0x8028005Du32 as HRESULT;
+pub const TPM_E_MA_SOURCE: HRESULT = 0x8028005Eu32 as HRESULT;
+pub const TPM_E_MA_AUTHORITY: HRESULT = 0x8028005Fu32 as HRESULT;
+pub const TPM_E_PERMANENTEK: HRESULT = 0x80280061u32 as HRESULT;
+pub const TPM_E_BAD_SIGNATURE: HRESULT = 0x80280062u32 as HRESULT;
+pub const TPM_E_NOCONTEXTSPACE: HRESULT = 0x80280063u32 as HRESULT;
+pub const TPM_E_COMMAND_BLOCKED: HRESULT = 0x80280400u32 as HRESULT;
+pub const TPM_E_INVALID_HANDLE: HRESULT = 0x80280401u32 as HRESULT;
+pub const TPM_E_DUPLICATE_VHANDLE: HRESULT = 0x80280402u32 as HRESULT;
+pub const TPM_E_EMBEDDED_COMMAND_BLOCKED: HRESULT = 0x80280403u32 as HRESULT;
+pub const TPM_E_EMBEDDED_COMMAND_UNSUPPORTED: HRESULT = 0x80280404u32 as HRESULT;
+pub const TPM_E_RETRY: HRESULT = 0x80280800u32 as HRESULT;
+pub const TPM_E_NEEDS_SELFTEST: HRESULT = 0x80280801u32 as HRESULT;
+pub const TPM_E_DOING_SELFTEST: HRESULT = 0x80280802u32 as HRESULT;
+pub const TPM_E_DEFEND_LOCK_RUNNING: HRESULT = 0x80280803u32 as HRESULT;
+pub const TBS_E_INTERNAL_ERROR: HRESULT = 0x80284001u32 as HRESULT;
+pub const TBS_E_BAD_PARAMETER: HRESULT = 0x80284002u32 as HRESULT;
+pub const TBS_E_INVALID_OUTPUT_POINTER: HRESULT = 0x80284003u32 as HRESULT;
+pub const TBS_E_INVALID_CONTEXT: HRESULT = 0x80284004u32 as HRESULT;
+pub const TBS_E_INSUFFICIENT_BUFFER: HRESULT = 0x80284005u32 as HRESULT;
+pub const TBS_E_IOERROR: HRESULT = 0x80284006u32 as HRESULT;
+pub const TBS_E_INVALID_CONTEXT_PARAM: HRESULT = 0x80284007u32 as HRESULT;
+pub const TBS_E_SERVICE_NOT_RUNNING: HRESULT = 0x80284008u32 as HRESULT;
+pub const TBS_E_TOO_MANY_TBS_CONTEXTS: HRESULT = 0x80284009u32 as HRESULT;
+pub const TBS_E_TOO_MANY_RESOURCES: HRESULT = 0x8028400Au32 as HRESULT;
+pub const TBS_E_SERVICE_START_PENDING: HRESULT = 0x8028400Bu32 as HRESULT;
+pub const TBS_E_PPI_NOT_SUPPORTED: HRESULT = 0x8028400Cu32 as HRESULT;
+pub const TBS_E_COMMAND_CANCELED: HRESULT = 0x8028400Du32 as HRESULT;
+pub const TBS_E_BUFFER_TOO_LARGE: HRESULT = 0x8028400Eu32 as HRESULT;
+pub const TBS_E_TPM_NOT_FOUND: HRESULT = 0x8028400Fu32 as HRESULT;
+pub const TBS_E_SERVICE_DISABLED: HRESULT = 0x80284010u32 as HRESULT;
+pub const TBS_E_NO_EVENT_LOG: HRESULT = 0x80284011u32 as HRESULT;
+pub const TBS_E_ACCESS_DENIED: HRESULT = 0x80284012u32 as HRESULT;
+pub const TBS_E_PROVISIONING_NOT_ALLOWED: HRESULT = 0x80284013u32 as HRESULT;
+pub const TBS_E_PPI_FUNCTION_UNSUPPORTED: HRESULT = 0x80284014u32 as HRESULT;
+pub const TBS_E_OWNERAUTH_NOT_FOUND: HRESULT = 0x80284015u32 as HRESULT;
+pub const TBS_E_PROVISIONING_INCOMPLETE: HRESULT = 0x80284016u32 as HRESULT;
+pub const TPMAPI_E_INVALID_STATE: HRESULT = 0x80290100u32 as HRESULT;
+pub const TPMAPI_E_NOT_ENOUGH_DATA: HRESULT = 0x80290101u32 as HRESULT;
+pub const TPMAPI_E_TOO_MUCH_DATA: HRESULT = 0x80290102u32 as HRESULT;
+pub const TPMAPI_E_INVALID_OUTPUT_POINTER: HRESULT = 0x80290103u32 as HRESULT;
+pub const TPMAPI_E_INVALID_PARAMETER: HRESULT = 0x80290104u32 as HRESULT;
+pub const TPMAPI_E_OUT_OF_MEMORY: HRESULT = 0x80290105u32 as HRESULT;
+pub const TPMAPI_E_BUFFER_TOO_SMALL: HRESULT = 0x80290106u32 as HRESULT;
+pub const TPMAPI_E_INTERNAL_ERROR: HRESULT = 0x80290107u32 as HRESULT;
+pub const TPMAPI_E_ACCESS_DENIED: HRESULT = 0x80290108u32 as HRESULT;
+pub const TPMAPI_E_AUTHORIZATION_FAILED: HRESULT = 0x80290109u32 as HRESULT;
+pub const TPMAPI_E_INVALID_CONTEXT_HANDLE: HRESULT = 0x8029010Au32 as HRESULT;
+pub const TPMAPI_E_TBS_COMMUNICATION_ERROR: HRESULT = 0x8029010Bu32 as HRESULT;
+pub const TPMAPI_E_TPM_COMMAND_ERROR: HRESULT = 0x8029010Cu32 as HRESULT;
+pub const TPMAPI_E_MESSAGE_TOO_LARGE: HRESULT = 0x8029010Du32 as HRESULT;
+pub const TPMAPI_E_INVALID_ENCODING: HRESULT = 0x8029010Eu32 as HRESULT;
+pub const TPMAPI_E_INVALID_KEY_SIZE: HRESULT = 0x8029010Fu32 as HRESULT;
+pub const TPMAPI_E_ENCRYPTION_FAILED: HRESULT = 0x80290110u32 as HRESULT;
+pub const TPMAPI_E_INVALID_KEY_PARAMS: HRESULT = 0x80290111u32 as HRESULT;
+pub const TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB: HRESULT = 0x80290112u32 as HRESULT;
+pub const TPMAPI_E_INVALID_PCR_INDEX: HRESULT = 0x80290113u32 as HRESULT;
+pub const TPMAPI_E_INVALID_DELEGATE_BLOB: HRESULT = 0x80290114u32 as HRESULT;
+pub const TPMAPI_E_INVALID_CONTEXT_PARAMS: HRESULT = 0x80290115u32 as HRESULT;
+pub const TPMAPI_E_INVALID_KEY_BLOB: HRESULT = 0x80290116u32 as HRESULT;
+pub const TPMAPI_E_INVALID_PCR_DATA: HRESULT = 0x80290117u32 as HRESULT;
+pub const TPMAPI_E_INVALID_OWNER_AUTH: HRESULT = 0x80290118u32 as HRESULT;
+pub const TPMAPI_E_FIPS_RNG_CHECK_FAILED: HRESULT = 0x80290119u32 as HRESULT;
+pub const TPMAPI_E_EMPTY_TCG_LOG: HRESULT = 0x8029011Au32 as HRESULT;
+pub const TPMAPI_E_INVALID_TCG_LOG_ENTRY: HRESULT = 0x8029011Bu32 as HRESULT;
+pub const TPMAPI_E_TCG_SEPARATOR_ABSENT: HRESULT = 0x8029011Cu32 as HRESULT;
+pub const TPMAPI_E_TCG_INVALID_DIGEST_ENTRY: HRESULT = 0x8029011Du32 as HRESULT;
+pub const TPMAPI_E_POLICY_DENIES_OPERATION: HRESULT = 0x8029011Eu32 as HRESULT;
+pub const TBSIMP_E_BUFFER_TOO_SMALL: HRESULT = 0x80290200u32 as HRESULT;
+pub const TBSIMP_E_CLEANUP_FAILED: HRESULT = 0x80290201u32 as HRESULT;
+pub const TBSIMP_E_INVALID_CONTEXT_HANDLE: HRESULT = 0x80290202u32 as HRESULT;
+pub const TBSIMP_E_INVALID_CONTEXT_PARAM: HRESULT = 0x80290203u32 as HRESULT;
+pub const TBSIMP_E_TPM_ERROR: HRESULT = 0x80290204u32 as HRESULT;
+pub const TBSIMP_E_HASH_BAD_KEY: HRESULT = 0x80290205u32 as HRESULT;
+pub const TBSIMP_E_DUPLICATE_VHANDLE: HRESULT = 0x80290206u32 as HRESULT;
+pub const TBSIMP_E_INVALID_OUTPUT_POINTER: HRESULT = 0x80290207u32 as HRESULT;
+pub const TBSIMP_E_INVALID_PARAMETER: HRESULT = 0x80290208u32 as HRESULT;
+pub const TBSIMP_E_RPC_INIT_FAILED: HRESULT = 0x80290209u32 as HRESULT;
+pub const TBSIMP_E_SCHEDULER_NOT_RUNNING: HRESULT = 0x8029020Au32 as HRESULT;
+pub const TBSIMP_E_COMMAND_CANCELED: HRESULT = 0x8029020Bu32 as HRESULT;
+pub const TBSIMP_E_OUT_OF_MEMORY: HRESULT = 0x8029020Cu32 as HRESULT;
+pub const TBSIMP_E_LIST_NO_MORE_ITEMS: HRESULT = 0x8029020Du32 as HRESULT;
+pub const TBSIMP_E_LIST_NOT_FOUND: HRESULT = 0x8029020Eu32 as HRESULT;
+pub const TBSIMP_E_NOT_ENOUGH_SPACE: HRESULT = 0x8029020Fu32 as HRESULT;
+pub const TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS: HRESULT = 0x80290210u32 as HRESULT;
+pub const TBSIMP_E_COMMAND_FAILED: HRESULT = 0x80290211u32 as HRESULT;
+pub const TBSIMP_E_UNKNOWN_ORDINAL: HRESULT = 0x80290212u32 as HRESULT;
+pub const TBSIMP_E_RESOURCE_EXPIRED: HRESULT = 0x80290213u32 as HRESULT;
+pub const TBSIMP_E_INVALID_RESOURCE: HRESULT = 0x80290214u32 as HRESULT;
+pub const TBSIMP_E_NOTHING_TO_UNLOAD: HRESULT = 0x80290215u32 as HRESULT;
+pub const TBSIMP_E_HASH_TABLE_FULL: HRESULT = 0x80290216u32 as HRESULT;
+pub const TBSIMP_E_TOO_MANY_TBS_CONTEXTS: HRESULT = 0x80290217u32 as HRESULT;
+pub const TBSIMP_E_TOO_MANY_RESOURCES: HRESULT = 0x80290218u32 as HRESULT;
+pub const TBSIMP_E_PPI_NOT_SUPPORTED: HRESULT = 0x80290219u32 as HRESULT;
+pub const TBSIMP_E_TPM_INCOMPATIBLE: HRESULT = 0x8029021Au32 as HRESULT;
+pub const TBSIMP_E_NO_EVENT_LOG: HRESULT = 0x8029021Bu32 as HRESULT;
+pub const TPM_E_PPI_ACPI_FAILURE: HRESULT = 0x80290300u32 as HRESULT;
+pub const TPM_E_PPI_USER_ABORT: HRESULT = 0x80290301u32 as HRESULT;
+pub const TPM_E_PPI_BIOS_FAILURE: HRESULT = 0x80290302u32 as HRESULT;
+pub const TPM_E_PPI_NOT_SUPPORTED: HRESULT = 0x80290303u32 as HRESULT;
+pub const TPM_E_PPI_BLOCKED_IN_BIOS: HRESULT = 0x80290304u32 as HRESULT;
+pub const TPM_E_PCP_ERROR_MASK: HRESULT = 0x80290400u32 as HRESULT;
+pub const TPM_E_PCP_DEVICE_NOT_READY: HRESULT = 0x80290401u32 as HRESULT;
+pub const TPM_E_PCP_INVALID_HANDLE: HRESULT = 0x80290402u32 as HRESULT;
+pub const TPM_E_PCP_INVALID_PARAMETER: HRESULT = 0x80290403u32 as HRESULT;
+pub const TPM_E_PCP_FLAG_NOT_SUPPORTED: HRESULT = 0x80290404u32 as HRESULT;
+pub const TPM_E_PCP_NOT_SUPPORTED: HRESULT = 0x80290405u32 as HRESULT;
+pub const TPM_E_PCP_BUFFER_TOO_SMALL: HRESULT = 0x80290406u32 as HRESULT;
+pub const TPM_E_PCP_INTERNAL_ERROR: HRESULT = 0x80290407u32 as HRESULT;
+pub const TPM_E_PCP_AUTHENTICATION_FAILED: HRESULT = 0x80290408u32 as HRESULT;
+pub const TPM_E_PCP_AUTHENTICATION_IGNORED: HRESULT = 0x80290409u32 as HRESULT;
+pub const TPM_E_PCP_POLICY_NOT_FOUND: HRESULT = 0x8029040Au32 as HRESULT;
+pub const TPM_E_PCP_PROFILE_NOT_FOUND: HRESULT = 0x8029040Bu32 as HRESULT;
+pub const TPM_E_PCP_VALIDATION_FAILED: HRESULT = 0x8029040Cu32 as HRESULT;
+pub const PLA_E_DCS_NOT_FOUND: HRESULT = 0x80300002u32 as HRESULT;
+pub const PLA_E_DCS_IN_USE: HRESULT = 0x803000AAu32 as HRESULT;
+pub const PLA_E_TOO_MANY_FOLDERS: HRESULT = 0x80300045u32 as HRESULT;
+pub const PLA_E_NO_MIN_DISK: HRESULT = 0x80300070u32 as HRESULT;
+pub const PLA_E_DCS_ALREADY_EXISTS: HRESULT = 0x803000B7u32 as HRESULT;
+pub const PLA_S_PROPERTY_IGNORED: HRESULT = 0x00300100;
+pub const PLA_E_PROPERTY_CONFLICT: HRESULT = 0x80300101u32 as HRESULT;
+pub const PLA_E_DCS_SINGLETON_REQUIRED: HRESULT = 0x80300102u32 as HRESULT;
+pub const PLA_E_CREDENTIALS_REQUIRED: HRESULT = 0x80300103u32 as HRESULT;
+pub const PLA_E_DCS_NOT_RUNNING: HRESULT = 0x80300104u32 as HRESULT;
+pub const PLA_E_CONFLICT_INCL_EXCL_API: HRESULT = 0x80300105u32 as HRESULT;
+pub const PLA_E_NETWORK_EXE_NOT_VALID: HRESULT = 0x80300106u32 as HRESULT;
+pub const PLA_E_EXE_ALREADY_CONFIGURED: HRESULT = 0x80300107u32 as HRESULT;
+pub const PLA_E_EXE_PATH_NOT_VALID: HRESULT = 0x80300108u32 as HRESULT;
+pub const PLA_E_DC_ALREADY_EXISTS: HRESULT = 0x80300109u32 as HRESULT;
+pub const PLA_E_DCS_START_WAIT_TIMEOUT: HRESULT = 0x8030010Au32 as HRESULT;
+pub const PLA_E_DC_START_WAIT_TIMEOUT: HRESULT = 0x8030010Bu32 as HRESULT;
+pub const PLA_E_REPORT_WAIT_TIMEOUT: HRESULT = 0x8030010Cu32 as HRESULT;
+pub const PLA_E_NO_DUPLICATES: HRESULT = 0x8030010Du32 as HRESULT;
+pub const PLA_E_EXE_FULL_PATH_REQUIRED: HRESULT = 0x8030010Eu32 as HRESULT;
+pub const PLA_E_INVALID_SESSION_NAME: HRESULT = 0x8030010Fu32 as HRESULT;
+pub const PLA_E_PLA_CHANNEL_NOT_ENABLED: HRESULT = 0x80300110u32 as HRESULT;
+pub const PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED: HRESULT = 0x80300111u32 as HRESULT;
+pub const PLA_E_RULES_MANAGER_FAILED: HRESULT = 0x80300112u32 as HRESULT;
+pub const PLA_E_CABAPI_FAILURE: HRESULT = 0x80300113u32 as HRESULT;
+pub const FVE_E_LOCKED_VOLUME: HRESULT = 0x80310000u32 as HRESULT;
+pub const FVE_E_NOT_ENCRYPTED: HRESULT = 0x80310001u32 as HRESULT;
+pub const FVE_E_NO_TPM_BIOS: HRESULT = 0x80310002u32 as HRESULT;
+pub const FVE_E_NO_MBR_METRIC: HRESULT = 0x80310003u32 as HRESULT;
+pub const FVE_E_NO_BOOTSECTOR_METRIC: HRESULT = 0x80310004u32 as HRESULT;
+pub const FVE_E_NO_BOOTMGR_METRIC: HRESULT = 0x80310005u32 as HRESULT;
+pub const FVE_E_WRONG_BOOTMGR: HRESULT = 0x80310006u32 as HRESULT;
+pub const FVE_E_SECURE_KEY_REQUIRED: HRESULT = 0x80310007u32 as HRESULT;
+pub const FVE_E_NOT_ACTIVATED: HRESULT = 0x80310008u32 as HRESULT;
+pub const FVE_E_ACTION_NOT_ALLOWED: HRESULT = 0x80310009u32 as HRESULT;
+pub const FVE_E_AD_SCHEMA_NOT_INSTALLED: HRESULT = 0x8031000Au32 as HRESULT;
+pub const FVE_E_AD_INVALID_DATATYPE: HRESULT = 0x8031000Bu32 as HRESULT;
+pub const FVE_E_AD_INVALID_DATASIZE: HRESULT = 0x8031000Cu32 as HRESULT;
+pub const FVE_E_AD_NO_VALUES: HRESULT = 0x8031000Du32 as HRESULT;
+pub const FVE_E_AD_ATTR_NOT_SET: HRESULT = 0x8031000Eu32 as HRESULT;
+pub const FVE_E_AD_GUID_NOT_FOUND: HRESULT = 0x8031000Fu32 as HRESULT;
+pub const FVE_E_BAD_INFORMATION: HRESULT = 0x80310010u32 as HRESULT;
+pub const FVE_E_TOO_SMALL: HRESULT = 0x80310011u32 as HRESULT;
+pub const FVE_E_SYSTEM_VOLUME: HRESULT = 0x80310012u32 as HRESULT;
+pub const FVE_E_FAILED_WRONG_FS: HRESULT = 0x80310013u32 as HRESULT;
+pub const FVE_E_BAD_PARTITION_SIZE: HRESULT = 0x80310014u32 as HRESULT;
+pub const FVE_E_NOT_SUPPORTED: HRESULT = 0x80310015u32 as HRESULT;
+pub const FVE_E_BAD_DATA: HRESULT = 0x80310016u32 as HRESULT;
+pub const FVE_E_VOLUME_NOT_BOUND: HRESULT = 0x80310017u32 as HRESULT;
+pub const FVE_E_TPM_NOT_OWNED: HRESULT = 0x80310018u32 as HRESULT;
+pub const FVE_E_NOT_DATA_VOLUME: HRESULT = 0x80310019u32 as HRESULT;
+pub const FVE_E_AD_INSUFFICIENT_BUFFER: HRESULT = 0x8031001Au32 as HRESULT;
+pub const FVE_E_CONV_READ: HRESULT = 0x8031001Bu32 as HRESULT;
+pub const FVE_E_CONV_WRITE: HRESULT = 0x8031001Cu32 as HRESULT;
+pub const FVE_E_KEY_REQUIRED: HRESULT = 0x8031001Du32 as HRESULT;
+pub const FVE_E_CLUSTERING_NOT_SUPPORTED: HRESULT = 0x8031001Eu32 as HRESULT;
+pub const FVE_E_VOLUME_BOUND_ALREADY: HRESULT = 0x8031001Fu32 as HRESULT;
+pub const FVE_E_OS_NOT_PROTECTED: HRESULT = 0x80310020u32 as HRESULT;
+pub const FVE_E_PROTECTION_DISABLED: HRESULT = 0x80310021u32 as HRESULT;
+pub const FVE_E_RECOVERY_KEY_REQUIRED: HRESULT = 0x80310022u32 as HRESULT;
+pub const FVE_E_FOREIGN_VOLUME: HRESULT = 0x80310023u32 as HRESULT;
+pub const FVE_E_OVERLAPPED_UPDATE: HRESULT = 0x80310024u32 as HRESULT;
+pub const FVE_E_TPM_SRK_AUTH_NOT_ZERO: HRESULT = 0x80310025u32 as HRESULT;
+pub const FVE_E_FAILED_SECTOR_SIZE: HRESULT = 0x80310026u32 as HRESULT;
+pub const FVE_E_FAILED_AUTHENTICATION: HRESULT = 0x80310027u32 as HRESULT;
+pub const FVE_E_NOT_OS_VOLUME: HRESULT = 0x80310028u32 as HRESULT;
+pub const FVE_E_AUTOUNLOCK_ENABLED: HRESULT = 0x80310029u32 as HRESULT;
+pub const FVE_E_WRONG_BOOTSECTOR: HRESULT = 0x8031002Au32 as HRESULT;
+pub const FVE_E_WRONG_SYSTEM_FS: HRESULT = 0x8031002Bu32 as HRESULT;
+pub const FVE_E_POLICY_PASSWORD_REQUIRED: HRESULT = 0x8031002Cu32 as HRESULT;
+pub const FVE_E_CANNOT_SET_FVEK_ENCRYPTED: HRESULT = 0x8031002Du32 as HRESULT;
+pub const FVE_E_CANNOT_ENCRYPT_NO_KEY: HRESULT = 0x8031002Eu32 as HRESULT;
+pub const FVE_E_BOOTABLE_CDDVD: HRESULT = 0x80310030u32 as HRESULT;
+pub const FVE_E_PROTECTOR_EXISTS: HRESULT = 0x80310031u32 as HRESULT;
+pub const FVE_E_RELATIVE_PATH: HRESULT = 0x80310032u32 as HRESULT;
+pub const FVE_E_PROTECTOR_NOT_FOUND: HRESULT = 0x80310033u32 as HRESULT;
+pub const FVE_E_INVALID_KEY_FORMAT: HRESULT = 0x80310034u32 as HRESULT;
+pub const FVE_E_INVALID_PASSWORD_FORMAT: HRESULT = 0x80310035u32 as HRESULT;
+pub const FVE_E_FIPS_RNG_CHECK_FAILED: HRESULT = 0x80310036u32 as HRESULT;
+pub const FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD: HRESULT = 0x80310037u32 as HRESULT;
+pub const FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT: HRESULT = 0x80310038u32 as HRESULT;
+pub const FVE_E_NOT_DECRYPTED: HRESULT = 0x80310039u32 as HRESULT;
+pub const FVE_E_INVALID_PROTECTOR_TYPE: HRESULT = 0x8031003Au32 as HRESULT;
+pub const FVE_E_NO_PROTECTORS_TO_TEST: HRESULT = 0x8031003Bu32 as HRESULT;
+pub const FVE_E_KEYFILE_NOT_FOUND: HRESULT = 0x8031003Cu32 as HRESULT;
+pub const FVE_E_KEYFILE_INVALID: HRESULT = 0x8031003Du32 as HRESULT;
+pub const FVE_E_KEYFILE_NO_VMK: HRESULT = 0x8031003Eu32 as HRESULT;
+pub const FVE_E_TPM_DISABLED: HRESULT = 0x8031003Fu32 as HRESULT;
+pub const FVE_E_NOT_ALLOWED_IN_SAFE_MODE: HRESULT = 0x80310040u32 as HRESULT;
+pub const FVE_E_TPM_INVALID_PCR: HRESULT = 0x80310041u32 as HRESULT;
+pub const FVE_E_TPM_NO_VMK: HRESULT = 0x80310042u32 as HRESULT;
+pub const FVE_E_PIN_INVALID: HRESULT = 0x80310043u32 as HRESULT;
+pub const FVE_E_AUTH_INVALID_APPLICATION: HRESULT = 0x80310044u32 as HRESULT;
+pub const FVE_E_AUTH_INVALID_CONFIG: HRESULT = 0x80310045u32 as HRESULT;
+pub const FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED: HRESULT = 0x80310046u32 as HRESULT;
+pub const FVE_E_FS_NOT_EXTENDED: HRESULT = 0x80310047u32 as HRESULT;
+pub const FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED: HRESULT = 0x80310048u32 as HRESULT;
+pub const FVE_E_NO_LICENSE: HRESULT = 0x80310049u32 as HRESULT;
+pub const FVE_E_NOT_ON_STACK: HRESULT = 0x8031004Au32 as HRESULT;
+pub const FVE_E_FS_MOUNTED: HRESULT = 0x8031004Bu32 as HRESULT;
+pub const FVE_E_TOKEN_NOT_IMPERSONATED: HRESULT = 0x8031004Cu32 as HRESULT;
+pub const FVE_E_DRY_RUN_FAILED: HRESULT = 0x8031004Du32 as HRESULT;
+pub const FVE_E_REBOOT_REQUIRED: HRESULT = 0x8031004Eu32 as HRESULT;
+pub const FVE_E_DEBUGGER_ENABLED: HRESULT = 0x8031004Fu32 as HRESULT;
+pub const FVE_E_RAW_ACCESS: HRESULT = 0x80310050u32 as HRESULT;
+pub const FVE_E_RAW_BLOCKED: HRESULT = 0x80310051u32 as HRESULT;
+pub const FVE_E_BCD_APPLICATIONS_PATH_INCORRECT: HRESULT = 0x80310052u32 as HRESULT;
+pub const FVE_E_NOT_ALLOWED_IN_VERSION: HRESULT = 0x80310053u32 as HRESULT;
+pub const FVE_E_NO_AUTOUNLOCK_MASTER_KEY: HRESULT = 0x80310054u32 as HRESULT;
+pub const FVE_E_MOR_FAILED: HRESULT = 0x80310055u32 as HRESULT;
+pub const FVE_E_HIDDEN_VOLUME: HRESULT = 0x80310056u32 as HRESULT;
+pub const FVE_E_TRANSIENT_STATE: HRESULT = 0x80310057u32 as HRESULT;
+pub const FVE_E_PUBKEY_NOT_ALLOWED: HRESULT = 0x80310058u32 as HRESULT;
+pub const FVE_E_VOLUME_HANDLE_OPEN: HRESULT = 0x80310059u32 as HRESULT;
+pub const FVE_E_NO_FEATURE_LICENSE: HRESULT = 0x8031005Au32 as HRESULT;
+pub const FVE_E_INVALID_STARTUP_OPTIONS: HRESULT = 0x8031005Bu32 as HRESULT;
+pub const FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED: HRESULT = 0x8031005Cu32 as HRESULT;
+pub const FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED: HRESULT = 0x8031005Du32 as HRESULT;
+pub const FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED: HRESULT = 0x8031005Eu32 as HRESULT;
+pub const FVE_E_POLICY_RECOVERY_KEY_REQUIRED: HRESULT = 0x8031005Fu32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED: HRESULT = 0x80310060u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_PIN_REQUIRED: HRESULT = 0x80310061u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED: HRESULT = 0x80310062u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_KEY_REQUIRED: HRESULT = 0x80310063u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED: HRESULT = 0x80310064u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED: HRESULT = 0x80310065u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED: HRESULT = 0x80310066u32 as HRESULT;
+pub const FVE_E_POLICY_STARTUP_TPM_REQUIRED: HRESULT = 0x80310067u32 as HRESULT;
+pub const FVE_E_POLICY_INVALID_PIN_LENGTH: HRESULT = 0x80310068u32 as HRESULT;
+pub const FVE_E_KEY_PROTECTOR_NOT_SUPPORTED: HRESULT = 0x80310069u32 as HRESULT;
+pub const FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED: HRESULT = 0x8031006Au32 as HRESULT;
+pub const FVE_E_POLICY_PASSPHRASE_REQUIRED: HRESULT = 0x8031006Bu32 as HRESULT;
+pub const FVE_E_FIPS_PREVENTS_PASSPHRASE: HRESULT = 0x8031006Cu32 as HRESULT;
+pub const FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED: HRESULT = 0x8031006Du32 as HRESULT;
+pub const FVE_E_INVALID_BITLOCKER_OID: HRESULT = 0x8031006Eu32 as HRESULT;
+pub const FVE_E_VOLUME_TOO_SMALL: HRESULT = 0x8031006Fu32 as HRESULT;
+pub const FVE_E_DV_NOT_SUPPORTED_ON_FS: HRESULT = 0x80310070u32 as HRESULT;
+pub const FVE_E_DV_NOT_ALLOWED_BY_GP: HRESULT = 0x80310071u32 as HRESULT;
+pub const FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED: HRESULT = 0x80310072u32 as HRESULT;
+pub const FVE_E_POLICY_USER_CERTIFICATE_REQUIRED: HRESULT = 0x80310073u32 as HRESULT;
+pub const FVE_E_POLICY_USER_CERT_MUST_BE_HW: HRESULT = 0x80310074u32 as HRESULT;
+pub const FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED: HRESULT = 0x80310075u32 as HRESULT;
+pub const FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED: HRESULT = 0x80310076u32 as HRESULT;
+pub const FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED: HRESULT = 0x80310077u32 as HRESULT;
+pub const FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED: HRESULT = 0x80310078u32 as HRESULT;
+pub const FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED: HRESULT = 0x80310079u32 as HRESULT;
+pub const FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH: HRESULT = 0x80310080u32 as HRESULT;
+pub const FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE: HRESULT = 0x80310081u32 as HRESULT;
+pub const FVE_E_RECOVERY_PARTITION: HRESULT = 0x80310082u32 as HRESULT;
+pub const FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON: HRESULT = 0x80310083u32 as HRESULT;
+pub const FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON: HRESULT = 0x80310084u32 as HRESULT;
+pub const FVE_E_NON_BITLOCKER_OID: HRESULT = 0x80310085u32 as HRESULT;
+pub const FVE_E_POLICY_PROHIBITS_SELFSIGNED: HRESULT = 0x80310086u32 as HRESULT;
+pub const FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED: HRESULT = 0x80310087u32 as HRESULT;
+pub const FVE_E_CONV_RECOVERY_FAILED: HRESULT = 0x80310088u32 as HRESULT;
+pub const FVE_E_VIRTUALIZED_SPACE_TOO_BIG: HRESULT = 0x80310089u32 as HRESULT;
+pub const FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON: HRESULT = 0x80310090u32 as HRESULT;
+pub const FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON: HRESULT = 0x80310091u32 as HRESULT;
+pub const FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON: HRESULT = 0x80310092u32 as HRESULT;
+pub const FVE_E_NON_BITLOCKER_KU: HRESULT = 0x80310093u32 as HRESULT;
+pub const FVE_E_PRIVATEKEY_AUTH_FAILED: HRESULT = 0x80310094u32 as HRESULT;
+pub const FVE_E_REMOVAL_OF_DRA_FAILED: HRESULT = 0x80310095u32 as HRESULT;
+pub const FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME: HRESULT = 0x80310096u32 as HRESULT;
+pub const FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME: HRESULT = 0x80310097u32 as HRESULT;
+pub const FVE_E_FIPS_HASH_KDF_NOT_ALLOWED: HRESULT = 0x80310098u32 as HRESULT;
+pub const FVE_E_ENH_PIN_INVALID: HRESULT = 0x80310099u32 as HRESULT;
+pub const FVE_E_INVALID_PIN_CHARS: HRESULT = 0x8031009Au32 as HRESULT;
+pub const FVE_E_INVALID_DATUM_TYPE: HRESULT = 0x8031009Bu32 as HRESULT;
+pub const FVE_E_EFI_ONLY: HRESULT = 0x8031009Cu32 as HRESULT;
+pub const FVE_E_MULTIPLE_NKP_CERTS: HRESULT = 0x8031009Du32 as HRESULT;
+pub const FVE_E_REMOVAL_OF_NKP_FAILED: HRESULT = 0x8031009Eu32 as HRESULT;
+pub const FVE_E_INVALID_NKP_CERT: HRESULT = 0x8031009Fu32 as HRESULT;
+pub const FVE_E_NO_EXISTING_PIN: HRESULT = 0x803100A0u32 as HRESULT;
+pub const FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH: HRESULT = 0x803100A1u32 as HRESULT;
+pub const FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED: HRESULT = 0x803100A2u32 as HRESULT;
+pub const FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED: HRESULT = 0x803100A3u32 as HRESULT;
+pub const FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII: HRESULT = 0x803100A4u32 as HRESULT;
+pub const FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE: HRESULT = 0x803100A5u32 as HRESULT;
+pub const FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE: HRESULT = 0x803100A6u32 as HRESULT;
+pub const FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE: HRESULT = 0x803100A7u32 as HRESULT;
+pub const FVE_E_NO_EXISTING_PASSPHRASE: HRESULT = 0x803100A8u32 as HRESULT;
+pub const FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH: HRESULT = 0x803100A9u32 as HRESULT;
+pub const FVE_E_PASSPHRASE_TOO_LONG: HRESULT = 0x803100AAu32 as HRESULT;
+pub const FVE_E_NO_PASSPHRASE_WITH_TPM: HRESULT = 0x803100ABu32 as HRESULT;
+pub const FVE_E_NO_TPM_WITH_PASSPHRASE: HRESULT = 0x803100ACu32 as HRESULT;
+pub const FVE_E_NOT_ALLOWED_ON_CSV_STACK: HRESULT = 0x803100ADu32 as HRESULT;
+pub const FVE_E_NOT_ALLOWED_ON_CLUSTER: HRESULT = 0x803100AEu32 as HRESULT;
+pub const FVE_E_EDRIVE_NO_FAILOVER_TO_SW: HRESULT = 0x803100AFu32 as HRESULT;
+pub const FVE_E_EDRIVE_BAND_IN_USE: HRESULT = 0x803100B0u32 as HRESULT;
+pub const FVE_E_EDRIVE_DISALLOWED_BY_GP: HRESULT = 0x803100B1u32 as HRESULT;
+pub const FVE_E_EDRIVE_INCOMPATIBLE_VOLUME: HRESULT = 0x803100B2u32 as HRESULT;
+pub const FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING: HRESULT = 0x803100B3u32 as HRESULT;
+pub const FVE_E_EDRIVE_DV_NOT_SUPPORTED: HRESULT = 0x803100B4u32 as HRESULT;
+pub const FVE_E_NO_PREBOOT_KEYBOARD_DETECTED: HRESULT = 0x803100B5u32 as HRESULT;
+pub const FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED: HRESULT = 0x803100B6u32 as HRESULT;
+pub const FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE: HRESULT = 0x803100B7u32 as HRESULT;
+pub const FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE: HRESULT = 0x803100B8u32 as HRESULT;
+pub const FVE_E_WIPE_CANCEL_NOT_APPLICABLE: HRESULT = 0x803100B9u32 as HRESULT;
+pub const FVE_E_SECUREBOOT_DISABLED: HRESULT = 0x803100BAu32 as HRESULT;
+pub const FVE_E_SECUREBOOT_CONFIGURATION_INVALID: HRESULT = 0x803100BBu32 as HRESULT;
+pub const FVE_E_EDRIVE_DRY_RUN_FAILED: HRESULT = 0x803100BCu32 as HRESULT;
+pub const FVE_E_SHADOW_COPY_PRESENT: HRESULT = 0x803100BDu32 as HRESULT;
+pub const FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS: HRESULT = 0x803100BEu32 as HRESULT;
+pub const FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE: HRESULT = 0x803100BFu32 as HRESULT;
+pub const FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED: HRESULT = 0x803100C0u32 as HRESULT;
+pub const FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED: HRESULT = 0x803100C1u32 as HRESULT;
+pub const FVE_E_LIVEID_ACCOUNT_SUSPENDED: HRESULT = 0x803100C2u32 as HRESULT;
+pub const FVE_E_LIVEID_ACCOUNT_BLOCKED: HRESULT = 0x803100C3u32 as HRESULT;
+pub const FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES: HRESULT = 0x803100C4u32 as HRESULT;
+pub const FVE_E_DE_FIXED_DATA_NOT_SUPPORTED: HRESULT = 0x803100C5u32 as HRESULT;
+pub const FVE_E_DE_HARDWARE_NOT_COMPLIANT: HRESULT = 0x803100C6u32 as HRESULT;
+pub const FVE_E_DE_WINRE_NOT_CONFIGURED: HRESULT = 0x803100C7u32 as HRESULT;
+pub const FVE_E_DE_PROTECTION_SUSPENDED: HRESULT = 0x803100C8u32 as HRESULT;
+pub const FVE_E_DE_OS_VOLUME_NOT_PROTECTED: HRESULT = 0x803100C9u32 as HRESULT;
+pub const FVE_E_DE_DEVICE_LOCKEDOUT: HRESULT = 0x803100CAu32 as HRESULT;
+pub const FVE_E_DE_PROTECTION_NOT_YET_ENABLED: HRESULT = 0x803100CBu32 as HRESULT;
+pub const FVE_E_INVALID_PIN_CHARS_DETAILED: HRESULT = 0x803100CCu32 as HRESULT;
+pub const FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE: HRESULT = 0x803100CDu32 as HRESULT;
+pub const FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH: HRESULT = 0x803100CEu32 as HRESULT;
+pub const FVE_E_BUFFER_TOO_LARGE: HRESULT = 0x803100CFu32 as HRESULT;
+pub const FVE_E_NO_SUCH_CAPABILITY_ON_TARGET: HRESULT = 0x803100D0u32 as HRESULT;
+pub const FVE_E_DE_PREVENTED_FOR_OS: HRESULT = 0x803100D1u32 as HRESULT;
+pub const FVE_E_DE_VOLUME_OPTED_OUT: HRESULT = 0x803100D2u32 as HRESULT;
+pub const FVE_E_DE_VOLUME_NOT_SUPPORTED: HRESULT = 0x803100D3u32 as HRESULT;
+pub const FVE_E_EOW_NOT_SUPPORTED_IN_VERSION: HRESULT = 0x803100D4u32 as HRESULT;
+pub const FVE_E_ADBACKUP_NOT_ENABLED: HRESULT = 0x803100D5u32 as HRESULT;
+pub const FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT: HRESULT = 0x803100D6u32 as HRESULT;
+pub const FVE_E_NOT_DE_VOLUME: HRESULT = 0x803100D7u32 as HRESULT;
+pub const FVE_E_PROTECTION_CANNOT_BE_DISABLED: HRESULT = 0x803100D8u32 as HRESULT;
+pub const FWP_E_CALLOUT_NOT_FOUND: HRESULT = 0x80320001u32 as HRESULT;
+pub const FWP_E_CONDITION_NOT_FOUND: HRESULT = 0x80320002u32 as HRESULT;
+pub const FWP_E_FILTER_NOT_FOUND: HRESULT = 0x80320003u32 as HRESULT;
+pub const FWP_E_LAYER_NOT_FOUND: HRESULT = 0x80320004u32 as HRESULT;
+pub const FWP_E_PROVIDER_NOT_FOUND: HRESULT = 0x80320005u32 as HRESULT;
+pub const FWP_E_PROVIDER_CONTEXT_NOT_FOUND: HRESULT = 0x80320006u32 as HRESULT;
+pub const FWP_E_SUBLAYER_NOT_FOUND: HRESULT = 0x80320007u32 as HRESULT;
+pub const FWP_E_NOT_FOUND: HRESULT = 0x80320008u32 as HRESULT;
+pub const FWP_E_ALREADY_EXISTS: HRESULT = 0x80320009u32 as HRESULT;
+pub const FWP_E_IN_USE: HRESULT = 0x8032000Au32 as HRESULT;
+pub const FWP_E_DYNAMIC_SESSION_IN_PROGRESS: HRESULT = 0x8032000Bu32 as HRESULT;
+pub const FWP_E_WRONG_SESSION: HRESULT = 0x8032000Cu32 as HRESULT;
+pub const FWP_E_NO_TXN_IN_PROGRESS: HRESULT = 0x8032000Du32 as HRESULT;
+pub const FWP_E_TXN_IN_PROGRESS: HRESULT = 0x8032000Eu32 as HRESULT;
+pub const FWP_E_TXN_ABORTED: HRESULT = 0x8032000Fu32 as HRESULT;
+pub const FWP_E_SESSION_ABORTED: HRESULT = 0x80320010u32 as HRESULT;
+pub const FWP_E_INCOMPATIBLE_TXN: HRESULT = 0x80320011u32 as HRESULT;
+pub const FWP_E_TIMEOUT: HRESULT = 0x80320012u32 as HRESULT;
+pub const FWP_E_NET_EVENTS_DISABLED: HRESULT = 0x80320013u32 as HRESULT;
+pub const FWP_E_INCOMPATIBLE_LAYER: HRESULT = 0x80320014u32 as HRESULT;
+pub const FWP_E_KM_CLIENTS_ONLY: HRESULT = 0x80320015u32 as HRESULT;
+pub const FWP_E_LIFETIME_MISMATCH: HRESULT = 0x80320016u32 as HRESULT;
+pub const FWP_E_BUILTIN_OBJECT: HRESULT = 0x80320017u32 as HRESULT;
+pub const FWP_E_TOO_MANY_CALLOUTS: HRESULT = 0x80320018u32 as HRESULT;
+pub const FWP_E_NOTIFICATION_DROPPED: HRESULT = 0x80320019u32 as HRESULT;
+pub const FWP_E_TRAFFIC_MISMATCH: HRESULT = 0x8032001Au32 as HRESULT;
+pub const FWP_E_INCOMPATIBLE_SA_STATE: HRESULT = 0x8032001Bu32 as HRESULT;
+pub const FWP_E_NULL_POINTER: HRESULT = 0x8032001Cu32 as HRESULT;
+pub const FWP_E_INVALID_ENUMERATOR: HRESULT = 0x8032001Du32 as HRESULT;
+pub const FWP_E_INVALID_FLAGS: HRESULT = 0x8032001Eu32 as HRESULT;
+pub const FWP_E_INVALID_NET_MASK: HRESULT = 0x8032001Fu32 as HRESULT;
+pub const FWP_E_INVALID_RANGE: HRESULT = 0x80320020u32 as HRESULT;
+pub const FWP_E_INVALID_INTERVAL: HRESULT = 0x80320021u32 as HRESULT;
+pub const FWP_E_ZERO_LENGTH_ARRAY: HRESULT = 0x80320022u32 as HRESULT;
+pub const FWP_E_NULL_DISPLAY_NAME: HRESULT = 0x80320023u32 as HRESULT;
+pub const FWP_E_INVALID_ACTION_TYPE: HRESULT = 0x80320024u32 as HRESULT;
+pub const FWP_E_INVALID_WEIGHT: HRESULT = 0x80320025u32 as HRESULT;
+pub const FWP_E_MATCH_TYPE_MISMATCH: HRESULT = 0x80320026u32 as HRESULT;
+pub const FWP_E_TYPE_MISMATCH: HRESULT = 0x80320027u32 as HRESULT;
+pub const FWP_E_OUT_OF_BOUNDS: HRESULT = 0x80320028u32 as HRESULT;
+pub const FWP_E_RESERVED: HRESULT = 0x80320029u32 as HRESULT;
+pub const FWP_E_DUPLICATE_CONDITION: HRESULT = 0x8032002Au32 as HRESULT;
+pub const FWP_E_DUPLICATE_KEYMOD: HRESULT = 0x8032002Bu32 as HRESULT;
+pub const FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER: HRESULT = 0x8032002Cu32 as HRESULT;
+pub const FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER: HRESULT = 0x8032002Du32 as HRESULT;
+pub const FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER: HRESULT = 0x8032002Eu32 as HRESULT;
+pub const FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT: HRESULT = 0x8032002Fu32 as HRESULT;
+pub const FWP_E_INCOMPATIBLE_AUTH_METHOD: HRESULT = 0x80320030u32 as HRESULT;
+pub const FWP_E_INCOMPATIBLE_DH_GROUP: HRESULT = 0x80320031u32 as HRESULT;
+pub const FWP_E_EM_NOT_SUPPORTED: HRESULT = 0x80320032u32 as HRESULT;
+pub const FWP_E_NEVER_MATCH: HRESULT = 0x80320033u32 as HRESULT;
+pub const FWP_E_PROVIDER_CONTEXT_MISMATCH: HRESULT = 0x80320034u32 as HRESULT;
+pub const FWP_E_INVALID_PARAMETER: HRESULT = 0x80320035u32 as HRESULT;
+pub const FWP_E_TOO_MANY_SUBLAYERS: HRESULT = 0x80320036u32 as HRESULT;
+pub const FWP_E_CALLOUT_NOTIFICATION_FAILED: HRESULT = 0x80320037u32 as HRESULT;
+pub const FWP_E_INVALID_AUTH_TRANSFORM: HRESULT = 0x80320038u32 as HRESULT;
+pub const FWP_E_INVALID_CIPHER_TRANSFORM: HRESULT = 0x80320039u32 as HRESULT;
+pub const FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM: HRESULT = 0x8032003Au32 as HRESULT;
+pub const FWP_E_INVALID_TRANSFORM_COMBINATION: HRESULT = 0x8032003Bu32 as HRESULT;
+pub const FWP_E_DUPLICATE_AUTH_METHOD: HRESULT = 0x8032003Cu32 as HRESULT;
+pub const FWP_E_INVALID_TUNNEL_ENDPOINT: HRESULT = 0x8032003Du32 as HRESULT;
+pub const FWP_E_L2_DRIVER_NOT_READY: HRESULT = 0x8032003Eu32 as HRESULT;
+pub const FWP_E_KEY_DICTATOR_ALREADY_REGISTERED: HRESULT = 0x8032003Fu32 as HRESULT;
+pub const FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL: HRESULT = 0x80320040u32 as HRESULT;
+pub const FWP_E_CONNECTIONS_DISABLED: HRESULT = 0x80320041u32 as HRESULT;
+pub const FWP_E_INVALID_DNS_NAME: HRESULT = 0x80320042u32 as HRESULT;
+pub const FWP_E_STILL_ON: HRESULT = 0x80320043u32 as HRESULT;
+pub const FWP_E_IKEEXT_NOT_RUNNING: HRESULT = 0x80320044u32 as HRESULT;
+pub const FWP_E_DROP_NOICMP: HRESULT = 0x80320104u32 as HRESULT;
+pub const WS_S_ASYNC: HRESULT = 0x003D0000;
+pub const WS_S_END: HRESULT = 0x003D0001;
+pub const WS_E_INVALID_FORMAT: HRESULT = 0x803D0000u32 as HRESULT;
+pub const WS_E_OBJECT_FAULTED: HRESULT = 0x803D0001u32 as HRESULT;
+pub const WS_E_NUMERIC_OVERFLOW: HRESULT = 0x803D0002u32 as HRESULT;
+pub const WS_E_INVALID_OPERATION: HRESULT = 0x803D0003u32 as HRESULT;
+pub const WS_E_OPERATION_ABORTED: HRESULT = 0x803D0004u32 as HRESULT;
+pub const WS_E_ENDPOINT_ACCESS_DENIED: HRESULT = 0x803D0005u32 as HRESULT;
+pub const WS_E_OPERATION_TIMED_OUT: HRESULT = 0x803D0006u32 as HRESULT;
+pub const WS_E_OPERATION_ABANDONED: HRESULT = 0x803D0007u32 as HRESULT;
+pub const WS_E_QUOTA_EXCEEDED: HRESULT = 0x803D0008u32 as HRESULT;
+pub const WS_E_NO_TRANSLATION_AVAILABLE: HRESULT = 0x803D0009u32 as HRESULT;
+pub const WS_E_SECURITY_VERIFICATION_FAILURE: HRESULT = 0x803D000Au32 as HRESULT;
+pub const WS_E_ADDRESS_IN_USE: HRESULT = 0x803D000Bu32 as HRESULT;
+pub const WS_E_ADDRESS_NOT_AVAILABLE: HRESULT = 0x803D000Cu32 as HRESULT;
+pub const WS_E_ENDPOINT_NOT_FOUND: HRESULT = 0x803D000Du32 as HRESULT;
+pub const WS_E_ENDPOINT_NOT_AVAILABLE: HRESULT = 0x803D000Eu32 as HRESULT;
+pub const WS_E_ENDPOINT_FAILURE: HRESULT = 0x803D000Fu32 as HRESULT;
+pub const WS_E_ENDPOINT_UNREACHABLE: HRESULT = 0x803D0010u32 as HRESULT;
+pub const WS_E_ENDPOINT_ACTION_NOT_SUPPORTED: HRESULT = 0x803D0011u32 as HRESULT;
+pub const WS_E_ENDPOINT_TOO_BUSY: HRESULT = 0x803D0012u32 as HRESULT;
+pub const WS_E_ENDPOINT_FAULT_RECEIVED: HRESULT = 0x803D0013u32 as HRESULT;
+pub const WS_E_ENDPOINT_DISCONNECTED: HRESULT = 0x803D0014u32 as HRESULT;
+pub const WS_E_PROXY_FAILURE: HRESULT = 0x803D0015u32 as HRESULT;
+pub const WS_E_PROXY_ACCESS_DENIED: HRESULT = 0x803D0016u32 as HRESULT;
+pub const WS_E_NOT_SUPPORTED: HRESULT = 0x803D0017u32 as HRESULT;
+pub const WS_E_PROXY_REQUIRES_BASIC_AUTH: HRESULT = 0x803D0018u32 as HRESULT;
+pub const WS_E_PROXY_REQUIRES_DIGEST_AUTH: HRESULT = 0x803D0019u32 as HRESULT;
+pub const WS_E_PROXY_REQUIRES_NTLM_AUTH: HRESULT = 0x803D001Au32 as HRESULT;
+pub const WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH: HRESULT = 0x803D001Bu32 as HRESULT;
+pub const WS_E_SERVER_REQUIRES_BASIC_AUTH: HRESULT = 0x803D001Cu32 as HRESULT;
+pub const WS_E_SERVER_REQUIRES_DIGEST_AUTH: HRESULT = 0x803D001Du32 as HRESULT;
+pub const WS_E_SERVER_REQUIRES_NTLM_AUTH: HRESULT = 0x803D001Eu32 as HRESULT;
+pub const WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH: HRESULT = 0x803D001Fu32 as HRESULT;
+pub const WS_E_INVALID_ENDPOINT_URL: HRESULT = 0x803D0020u32 as HRESULT;
+pub const WS_E_OTHER: HRESULT = 0x803D0021u32 as HRESULT;
+pub const WS_E_SECURITY_TOKEN_EXPIRED: HRESULT = 0x803D0022u32 as HRESULT;
+pub const WS_E_SECURITY_SYSTEM_FAILURE: HRESULT = 0x803D0023u32 as HRESULT;
+pub const ERROR_NDIS_INTERFACE_CLOSING: HRESULT = 0x80340002u32 as HRESULT;
+pub const ERROR_NDIS_BAD_VERSION: HRESULT = 0x80340004u32 as HRESULT;
+pub const ERROR_NDIS_BAD_CHARACTERISTICS: HRESULT = 0x80340005u32 as HRESULT;
+pub const ERROR_NDIS_ADAPTER_NOT_FOUND: HRESULT = 0x80340006u32 as HRESULT;
+pub const ERROR_NDIS_OPEN_FAILED: HRESULT = 0x80340007u32 as HRESULT;
+pub const ERROR_NDIS_DEVICE_FAILED: HRESULT = 0x80340008u32 as HRESULT;
+pub const ERROR_NDIS_MULTICAST_FULL: HRESULT = 0x80340009u32 as HRESULT;
+pub const ERROR_NDIS_MULTICAST_EXISTS: HRESULT = 0x8034000Au32 as HRESULT;
+pub const ERROR_NDIS_MULTICAST_NOT_FOUND: HRESULT = 0x8034000Bu32 as HRESULT;
+pub const ERROR_NDIS_REQUEST_ABORTED: HRESULT = 0x8034000Cu32 as HRESULT;
+pub const ERROR_NDIS_RESET_IN_PROGRESS: HRESULT = 0x8034000Du32 as HRESULT;
+pub const ERROR_NDIS_NOT_SUPPORTED: HRESULT = 0x803400BBu32 as HRESULT;
+pub const ERROR_NDIS_INVALID_PACKET: HRESULT = 0x8034000Fu32 as HRESULT;
+pub const ERROR_NDIS_ADAPTER_NOT_READY: HRESULT = 0x80340011u32 as HRESULT;
+pub const ERROR_NDIS_INVALID_LENGTH: HRESULT = 0x80340014u32 as HRESULT;
+pub const ERROR_NDIS_INVALID_DATA: HRESULT = 0x80340015u32 as HRESULT;
+pub const ERROR_NDIS_BUFFER_TOO_SHORT: HRESULT = 0x80340016u32 as HRESULT;
+pub const ERROR_NDIS_INVALID_OID: HRESULT = 0x80340017u32 as HRESULT;
+pub const ERROR_NDIS_ADAPTER_REMOVED: HRESULT = 0x80340018u32 as HRESULT;
+pub const ERROR_NDIS_UNSUPPORTED_MEDIA: HRESULT = 0x80340019u32 as HRESULT;
+pub const ERROR_NDIS_GROUP_ADDRESS_IN_USE: HRESULT = 0x8034001Au32 as HRESULT;
+pub const ERROR_NDIS_FILE_NOT_FOUND: HRESULT = 0x8034001Bu32 as HRESULT;
+pub const ERROR_NDIS_ERROR_READING_FILE: HRESULT = 0x8034001Cu32 as HRESULT;
+pub const ERROR_NDIS_ALREADY_MAPPED: HRESULT = 0x8034001Du32 as HRESULT;
+pub const ERROR_NDIS_RESOURCE_CONFLICT: HRESULT = 0x8034001Eu32 as HRESULT;
+pub const ERROR_NDIS_MEDIA_DISCONNECTED: HRESULT = 0x8034001Fu32 as HRESULT;
+pub const ERROR_NDIS_INVALID_ADDRESS: HRESULT = 0x80340022u32 as HRESULT;
+pub const ERROR_NDIS_INVALID_DEVICE_REQUEST: HRESULT = 0x80340010u32 as HRESULT;
+pub const ERROR_NDIS_PAUSED: HRESULT = 0x8034002Au32 as HRESULT;
+pub const ERROR_NDIS_INTERFACE_NOT_FOUND: HRESULT = 0x8034002Bu32 as HRESULT;
+pub const ERROR_NDIS_UNSUPPORTED_REVISION: HRESULT = 0x8034002Cu32 as HRESULT;
+pub const ERROR_NDIS_INVALID_PORT: HRESULT = 0x8034002Du32 as HRESULT;
+pub const ERROR_NDIS_INVALID_PORT_STATE: HRESULT = 0x8034002Eu32 as HRESULT;
+pub const ERROR_NDIS_LOW_POWER_STATE: HRESULT = 0x8034002Fu32 as HRESULT;
+pub const ERROR_NDIS_REINIT_REQUIRED: HRESULT = 0x80340030u32 as HRESULT;
+pub const ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED: HRESULT = 0x80342000u32 as HRESULT;
+pub const ERROR_NDIS_DOT11_MEDIA_IN_USE: HRESULT = 0x80342001u32 as HRESULT;
+pub const ERROR_NDIS_DOT11_POWER_STATE_INVALID: HRESULT = 0x80342002u32 as HRESULT;
+pub const ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL: HRESULT = 0x80342003u32 as HRESULT;
+pub const ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL: HRESULT = 0x80342004u32 as HRESULT;
+pub const ERROR_NDIS_INDICATION_REQUIRED: HRESULT = 0x00340001;
+pub const ERROR_NDIS_OFFLOAD_POLICY: HRESULT = 0xC034100Fu32 as HRESULT;
+pub const ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED: HRESULT = 0xC0341012u32 as HRESULT;
+pub const ERROR_NDIS_OFFLOAD_PATH_REJECTED: HRESULT = 0xC0341013u32 as HRESULT;
+pub const ERROR_HV_INVALID_HYPERCALL_CODE: HRESULT = 0xC0350002u32 as HRESULT;
+pub const ERROR_HV_INVALID_HYPERCALL_INPUT: HRESULT = 0xC0350003u32 as HRESULT;
+pub const ERROR_HV_INVALID_ALIGNMENT: HRESULT = 0xC0350004u32 as HRESULT;
+pub const ERROR_HV_INVALID_PARAMETER: HRESULT = 0xC0350005u32 as HRESULT;
+pub const ERROR_HV_ACCESS_DENIED: HRESULT = 0xC0350006u32 as HRESULT;
+pub const ERROR_HV_INVALID_PARTITION_STATE: HRESULT = 0xC0350007u32 as HRESULT;
+pub const ERROR_HV_OPERATION_DENIED: HRESULT = 0xC0350008u32 as HRESULT;
+pub const ERROR_HV_UNKNOWN_PROPERTY: HRESULT = 0xC0350009u32 as HRESULT;
+pub const ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE: HRESULT = 0xC035000Au32 as HRESULT;
+pub const ERROR_HV_INSUFFICIENT_MEMORY: HRESULT = 0xC035000Bu32 as HRESULT;
+pub const ERROR_HV_PARTITION_TOO_DEEP: HRESULT = 0xC035000Cu32 as HRESULT;
+pub const ERROR_HV_INVALID_PARTITION_ID: HRESULT = 0xC035000Du32 as HRESULT;
+pub const ERROR_HV_INVALID_VP_INDEX: HRESULT = 0xC035000Eu32 as HRESULT;
+pub const ERROR_HV_INVALID_PORT_ID: HRESULT = 0xC0350011u32 as HRESULT;
+pub const ERROR_HV_INVALID_CONNECTION_ID: HRESULT = 0xC0350012u32 as HRESULT;
+pub const ERROR_HV_INSUFFICIENT_BUFFERS: HRESULT = 0xC0350013u32 as HRESULT;
+pub const ERROR_HV_NOT_ACKNOWLEDGED: HRESULT = 0xC0350014u32 as HRESULT;
+pub const ERROR_HV_ACKNOWLEDGED: HRESULT = 0xC0350016u32 as HRESULT;
+pub const ERROR_HV_INVALID_SAVE_RESTORE_STATE: HRESULT = 0xC0350017u32 as HRESULT;
+pub const ERROR_HV_INVALID_SYNIC_STATE: HRESULT = 0xC0350018u32 as HRESULT;
+pub const ERROR_HV_OBJECT_IN_USE: HRESULT = 0xC0350019u32 as HRESULT;
+pub const ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO: HRESULT = 0xC035001Au32 as HRESULT;
+pub const ERROR_HV_NO_DATA: HRESULT = 0xC035001Bu32 as HRESULT;
+pub const ERROR_HV_INACTIVE: HRESULT = 0xC035001Cu32 as HRESULT;
+pub const ERROR_HV_NO_RESOURCES: HRESULT = 0xC035001Du32 as HRESULT;
+pub const ERROR_HV_FEATURE_UNAVAILABLE: HRESULT = 0xC035001Eu32 as HRESULT;
+pub const ERROR_HV_INSUFFICIENT_BUFFER: HRESULT = 0xC0350033u32 as HRESULT;
+pub const ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS: HRESULT = 0xC0350038u32 as HRESULT;
+pub const ERROR_HV_INVALID_LP_INDEX: HRESULT = 0xC0350041u32 as HRESULT;
+pub const ERROR_HV_NOT_PRESENT: HRESULT = 0xC0351000u32 as HRESULT;
+pub const ERROR_VID_DUPLICATE_HANDLER: HRESULT = 0xC0370001u32 as HRESULT;
+pub const ERROR_VID_TOO_MANY_HANDLERS: HRESULT = 0xC0370002u32 as HRESULT;
+pub const ERROR_VID_QUEUE_FULL: HRESULT = 0xC0370003u32 as HRESULT;
+pub const ERROR_VID_HANDLER_NOT_PRESENT: HRESULT = 0xC0370004u32 as HRESULT;
+pub const ERROR_VID_INVALID_OBJECT_NAME: HRESULT = 0xC0370005u32 as HRESULT;
+pub const ERROR_VID_PARTITION_NAME_TOO_LONG: HRESULT = 0xC0370006u32 as HRESULT;
+pub const ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG: HRESULT = 0xC0370007u32 as HRESULT;
+pub const ERROR_VID_PARTITION_ALREADY_EXISTS: HRESULT = 0xC0370008u32 as HRESULT;
+pub const ERROR_VID_PARTITION_DOES_NOT_EXIST: HRESULT = 0xC0370009u32 as HRESULT;
+pub const ERROR_VID_PARTITION_NAME_NOT_FOUND: HRESULT = 0xC037000Au32 as HRESULT;
+pub const ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS: HRESULT = 0xC037000Bu32 as HRESULT;
+pub const ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT: HRESULT = 0xC037000Cu32 as HRESULT;
+pub const ERROR_VID_MB_STILL_REFERENCED: HRESULT = 0xC037000Du32 as HRESULT;
+pub const ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED: HRESULT = 0xC037000Eu32 as HRESULT;
+pub const ERROR_VID_INVALID_NUMA_SETTINGS: HRESULT = 0xC037000Fu32 as HRESULT;
+pub const ERROR_VID_INVALID_NUMA_NODE_INDEX: HRESULT = 0xC0370010u32 as HRESULT;
+pub const ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED: HRESULT = 0xC0370011u32 as HRESULT;
+pub const ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE: HRESULT = 0xC0370012u32 as HRESULT;
+pub const ERROR_VID_PAGE_RANGE_OVERFLOW: HRESULT = 0xC0370013u32 as HRESULT;
+pub const ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE: HRESULT = 0xC0370014u32 as HRESULT;
+pub const ERROR_VID_INVALID_GPA_RANGE_HANDLE: HRESULT = 0xC0370015u32 as HRESULT;
+pub const ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE: HRESULT = 0xC0370016u32 as HRESULT;
+pub const ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED: HRESULT = 0xC0370017u32 as HRESULT;
+pub const ERROR_VID_INVALID_PPM_HANDLE: HRESULT = 0xC0370018u32 as HRESULT;
+pub const ERROR_VID_MBPS_ARE_LOCKED: HRESULT = 0xC0370019u32 as HRESULT;
+pub const ERROR_VID_MESSAGE_QUEUE_CLOSED: HRESULT = 0xC037001Au32 as HRESULT;
+pub const ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED: HRESULT = 0xC037001Bu32 as HRESULT;
+pub const ERROR_VID_STOP_PENDING: HRESULT = 0xC037001Cu32 as HRESULT;
+pub const ERROR_VID_INVALID_PROCESSOR_STATE: HRESULT = 0xC037001Du32 as HRESULT;
+pub const ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT: HRESULT = 0xC037001Eu32 as HRESULT;
+pub const ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED: HRESULT = 0xC037001Fu32 as HRESULT;
+pub const ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET: HRESULT = 0xC0370020u32 as HRESULT;
+pub const ERROR_VID_MMIO_RANGE_DESTROYED: HRESULT = 0xC0370021u32 as HRESULT;
+pub const ERROR_VID_INVALID_CHILD_GPA_PAGE_SET: HRESULT = 0xC0370022u32 as HRESULT;
+pub const ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED: HRESULT = 0xC0370023u32 as HRESULT;
+pub const ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL: HRESULT = 0xC0370024u32 as HRESULT;
+pub const ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE: HRESULT = 0xC0370025u32 as HRESULT;
+pub const ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT: HRESULT = 0xC0370026u32 as HRESULT;
+pub const ERROR_VID_SAVED_STATE_CORRUPT: HRESULT = 0xC0370027u32 as HRESULT;
+pub const ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM: HRESULT = 0xC0370028u32 as HRESULT;
+pub const ERROR_VID_SAVED_STATE_INCOMPATIBLE: HRESULT = 0xC0370029u32 as HRESULT;
+pub const ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED: HRESULT = 0x80370001u32 as HRESULT;
+pub const ERROR_VOLMGR_INCOMPLETE_REGENERATION: HRESULT = 0x80380001u32 as HRESULT;
+pub const ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION: HRESULT = 0x80380002u32 as HRESULT;
+pub const ERROR_VOLMGR_DATABASE_FULL: HRESULT = 0xC0380001u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED: HRESULT = 0xC0380002u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC: HRESULT = 0xC0380003u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED: HRESULT = 0xC0380004u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME: HRESULT = 0xC0380005u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_DUPLICATE: HRESULT = 0xC0380006u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_DYNAMIC: HRESULT = 0xC0380007u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_ID_INVALID: HRESULT = 0xC0380008u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_INVALID: HRESULT = 0xC0380009u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAST_VOTER: HRESULT = 0xC038000Au32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAYOUT_INVALID: HRESULT = 0xC038000Bu32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS: HRESULT = 0xC038000Cu32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED: HRESULT = 0xC038000Du32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL: HRESULT = 0xC038000Eu32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS: HRESULT = 0xC038000Fu32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS: HRESULT = 0xC0380010u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_MISSING: HRESULT = 0xC0380011u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_NOT_EMPTY: HRESULT = 0xC0380012u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE: HRESULT = 0xC0380013u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_REVECTORING_FAILED: HRESULT = 0xC0380014u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID: HRESULT = 0xC0380015u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_SET_NOT_CONTAINED: HRESULT = 0xC0380016u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS: HRESULT = 0xC0380017u32 as HRESULT;
+pub const ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES: HRESULT = 0xC0380018u32 as HRESULT;
+pub const ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED: HRESULT = 0xC0380019u32 as HRESULT;
+pub const ERROR_VOLMGR_EXTENT_ALREADY_USED: HRESULT = 0xC038001Au32 as HRESULT;
+pub const ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS: HRESULT = 0xC038001Bu32 as HRESULT;
+pub const ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION: HRESULT = 0xC038001Cu32 as HRESULT;
+pub const ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED: HRESULT = 0xC038001Du32 as HRESULT;
+pub const ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION: HRESULT = 0xC038001Eu32 as HRESULT;
+pub const ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH: HRESULT = 0xC038001Fu32 as HRESULT;
+pub const ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED: HRESULT = 0xC0380020u32 as HRESULT;
+pub const ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID: HRESULT = 0xC0380021u32 as HRESULT;
+pub const ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS: HRESULT = 0xC0380022u32 as HRESULT;
+pub const ERROR_VOLMGR_MEMBER_IN_SYNC: HRESULT = 0xC0380023u32 as HRESULT;
+pub const ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE: HRESULT = 0xC0380024u32 as HRESULT;
+pub const ERROR_VOLMGR_MEMBER_INDEX_INVALID: HRESULT = 0xC0380025u32 as HRESULT;
+pub const ERROR_VOLMGR_MEMBER_MISSING: HRESULT = 0xC0380026u32 as HRESULT;
+pub const ERROR_VOLMGR_MEMBER_NOT_DETACHED: HRESULT = 0xC0380027u32 as HRESULT;
+pub const ERROR_VOLMGR_MEMBER_REGENERATING: HRESULT = 0xC0380028u32 as HRESULT;
+pub const ERROR_VOLMGR_ALL_DISKS_FAILED: HRESULT = 0xC0380029u32 as HRESULT;
+pub const ERROR_VOLMGR_NO_REGISTERED_USERS: HRESULT = 0xC038002Au32 as HRESULT;
+pub const ERROR_VOLMGR_NO_SUCH_USER: HRESULT = 0xC038002Bu32 as HRESULT;
+pub const ERROR_VOLMGR_NOTIFICATION_RESET: HRESULT = 0xC038002Cu32 as HRESULT;
+pub const ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID: HRESULT = 0xC038002Du32 as HRESULT;
+pub const ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID: HRESULT = 0xC038002Eu32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_DUPLICATE: HRESULT = 0xC038002Fu32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_ID_INVALID: HRESULT = 0xC0380030u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_INVALID: HRESULT = 0xC0380031u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_NAME_INVALID: HRESULT = 0xC0380032u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_OFFLINE: HRESULT = 0xC0380033u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_HAS_QUORUM: HRESULT = 0xC0380034u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_WITHOUT_QUORUM: HRESULT = 0xC0380035u32 as HRESULT;
+pub const ERROR_VOLMGR_PARTITION_STYLE_INVALID: HRESULT = 0xC0380036u32 as HRESULT;
+pub const ERROR_VOLMGR_PARTITION_UPDATE_FAILED: HRESULT = 0xC0380037u32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_IN_SYNC: HRESULT = 0xC0380038u32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_INDEX_DUPLICATE: HRESULT = 0xC0380039u32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_INDEX_INVALID: HRESULT = 0xC038003Au32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_LAST_ACTIVE: HRESULT = 0xC038003Bu32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_MISSING: HRESULT = 0xC038003Cu32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_REGENERATING: HRESULT = 0xC038003Du32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_TYPE_INVALID: HRESULT = 0xC038003Eu32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_NOT_RAID5: HRESULT = 0xC038003Fu32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_NOT_SIMPLE: HRESULT = 0xC0380040u32 as HRESULT;
+pub const ERROR_VOLMGR_STRUCTURE_SIZE_INVALID: HRESULT = 0xC0380041u32 as HRESULT;
+pub const ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS: HRESULT = 0xC0380042u32 as HRESULT;
+pub const ERROR_VOLMGR_TRANSACTION_IN_PROGRESS: HRESULT = 0xC0380043u32 as HRESULT;
+pub const ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE: HRESULT = 0xC0380044u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK: HRESULT = 0xC0380045u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_ID_INVALID: HRESULT = 0xC0380046u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_LENGTH_INVALID: HRESULT = 0xC0380047u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE: HRESULT = 0xC0380048u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_NOT_MIRRORED: HRESULT = 0xC0380049u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_NOT_RETAINED: HRESULT = 0xC038004Au32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_OFFLINE: HRESULT = 0xC038004Bu32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_RETAINED: HRESULT = 0xC038004Cu32 as HRESULT;
+pub const ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID: HRESULT = 0xC038004Du32 as HRESULT;
+pub const ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE: HRESULT = 0xC038004Eu32 as HRESULT;
+pub const ERROR_VOLMGR_BAD_BOOT_DISK: HRESULT = 0xC038004Fu32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_CONFIG_OFFLINE: HRESULT = 0xC0380050u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_CONFIG_ONLINE: HRESULT = 0xC0380051u32 as HRESULT;
+pub const ERROR_VOLMGR_NOT_PRIMARY_PACK: HRESULT = 0xC0380052u32 as HRESULT;
+pub const ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED: HRESULT = 0xC0380053u32 as HRESULT;
+pub const ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID: HRESULT = 0xC0380054u32 as HRESULT;
+pub const ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID: HRESULT = 0xC0380055u32 as HRESULT;
+pub const ERROR_VOLMGR_VOLUME_MIRRORED: HRESULT = 0xC0380056u32 as HRESULT;
+pub const ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED: HRESULT = 0xC0380057u32 as HRESULT;
+pub const ERROR_VOLMGR_NO_VALID_LOG_COPIES: HRESULT = 0xC0380058u32 as HRESULT;
+pub const ERROR_VOLMGR_PRIMARY_PACK_PRESENT: HRESULT = 0xC0380059u32 as HRESULT;
+pub const ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID: HRESULT = 0xC038005Au32 as HRESULT;
+pub const ERROR_VOLMGR_MIRROR_NOT_SUPPORTED: HRESULT = 0xC038005Bu32 as HRESULT;
+pub const ERROR_VOLMGR_RAID5_NOT_SUPPORTED: HRESULT = 0xC038005Cu32 as HRESULT;
+pub const ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED: HRESULT = 0x80390001u32 as HRESULT;
+pub const ERROR_BCD_TOO_MANY_ELEMENTS: HRESULT = 0xC0390002u32 as HRESULT;
+pub const ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED: HRESULT = 0x80390003u32 as HRESULT;
+pub const ERROR_VHD_DRIVE_FOOTER_MISSING: HRESULT = 0xC03A0001u32 as HRESULT;
+pub const ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH: HRESULT = 0xC03A0002u32 as HRESULT;
+pub const ERROR_VHD_DRIVE_FOOTER_CORRUPT: HRESULT = 0xC03A0003u32 as HRESULT;
+pub const ERROR_VHD_FORMAT_UNKNOWN: HRESULT = 0xC03A0004u32 as HRESULT;
+pub const ERROR_VHD_FORMAT_UNSUPPORTED_VERSION: HRESULT = 0xC03A0005u32 as HRESULT;
+pub const ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH: HRESULT = 0xC03A0006u32 as HRESULT;
+pub const ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION: HRESULT = 0xC03A0007u32 as HRESULT;
+pub const ERROR_VHD_SPARSE_HEADER_CORRUPT: HRESULT = 0xC03A0008u32 as HRESULT;
+pub const ERROR_VHD_BLOCK_ALLOCATION_FAILURE: HRESULT = 0xC03A0009u32 as HRESULT;
+pub const ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT: HRESULT = 0xC03A000Au32 as HRESULT;
+pub const ERROR_VHD_INVALID_BLOCK_SIZE: HRESULT = 0xC03A000Bu32 as HRESULT;
+pub const ERROR_VHD_BITMAP_MISMATCH: HRESULT = 0xC03A000Cu32 as HRESULT;
+pub const ERROR_VHD_PARENT_VHD_NOT_FOUND: HRESULT = 0xC03A000Du32 as HRESULT;
+pub const ERROR_VHD_CHILD_PARENT_ID_MISMATCH: HRESULT = 0xC03A000Eu32 as HRESULT;
+pub const ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH: HRESULT = 0xC03A000Fu32 as HRESULT;
+pub const ERROR_VHD_METADATA_READ_FAILURE: HRESULT = 0xC03A0010u32 as HRESULT;
+pub const ERROR_VHD_METADATA_WRITE_FAILURE: HRESULT = 0xC03A0011u32 as HRESULT;
+pub const ERROR_VHD_INVALID_SIZE: HRESULT = 0xC03A0012u32 as HRESULT;
+pub const ERROR_VHD_INVALID_FILE_SIZE: HRESULT = 0xC03A0013u32 as HRESULT;
+pub const ERROR_VIRTDISK_PROVIDER_NOT_FOUND: HRESULT = 0xC03A0014u32 as HRESULT;
+pub const ERROR_VIRTDISK_NOT_VIRTUAL_DISK: HRESULT = 0xC03A0015u32 as HRESULT;
+pub const ERROR_VHD_PARENT_VHD_ACCESS_DENIED: HRESULT = 0xC03A0016u32 as HRESULT;
+pub const ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH: HRESULT = 0xC03A0017u32 as HRESULT;
+pub const ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED: HRESULT = 0xC03A0018u32 as HRESULT;
+pub const ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT: HRESULT = 0xC03A0019u32 as HRESULT;
+pub const ERROR_VIRTUAL_DISK_LIMITATION: HRESULT = 0xC03A001Au32 as HRESULT;
+pub const ERROR_VHD_INVALID_TYPE: HRESULT = 0xC03A001Bu32 as HRESULT;
+pub const ERROR_VHD_INVALID_STATE: HRESULT = 0xC03A001Cu32 as HRESULT;
+pub const ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE: HRESULT = 0xC03A001Du32 as HRESULT;
+pub const ERROR_VIRTDISK_DISK_ALREADY_OWNED: HRESULT = 0xC03A001Eu32 as HRESULT;
+pub const ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE: HRESULT = 0xC03A001Fu32 as HRESULT;
+pub const ERROR_CTLOG_TRACKING_NOT_INITIALIZED: HRESULT = 0xC03A0020u32 as HRESULT;
+pub const ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE: HRESULT = 0xC03A0021u32 as HRESULT;
+pub const ERROR_CTLOG_VHD_CHANGED_OFFLINE: HRESULT = 0xC03A0022u32 as HRESULT;
+pub const ERROR_CTLOG_INVALID_TRACKING_STATE: HRESULT = 0xC03A0023u32 as HRESULT;
+pub const ERROR_CTLOG_INCONSISTENT_TRACKING_FILE: HRESULT = 0xC03A0024u32 as HRESULT;
+pub const ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA: HRESULT = 0xC03A0025u32 as HRESULT;
+pub const ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE: HRESULT = 0xC03A0026u32 as HRESULT;
+pub const ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE: HRESULT = 0xC03A0027u32 as HRESULT;
+pub const ERROR_VHD_METADATA_FULL: HRESULT = 0xC03A0028u32 as HRESULT;
+pub const ERROR_QUERY_STORAGE_ERROR: HRESULT = 0x803A0001u32 as HRESULT;
+pub const SDIAG_E_CANCELLED: HRESULT = 0x803C0100u32 as HRESULT;
+pub const SDIAG_E_SCRIPT: HRESULT = 0x803C0101u32 as HRESULT;
+pub const SDIAG_E_POWERSHELL: HRESULT = 0x803C0102u32 as HRESULT;
+pub const SDIAG_E_MANAGEDHOST: HRESULT = 0x803C0103u32 as HRESULT;
+pub const SDIAG_E_NOVERIFIER: HRESULT = 0x803C0104u32 as HRESULT;
+pub const SDIAG_S_CANNOTRUN: HRESULT = 0x003C0105;
+pub const SDIAG_E_DISABLED: HRESULT = 0x803C0106u32 as HRESULT;
+pub const SDIAG_E_TRUST: HRESULT = 0x803C0107u32 as HRESULT;
+pub const SDIAG_E_CANNOTRUN: HRESULT = 0x803C0108u32 as HRESULT;
+pub const SDIAG_E_VERSION: HRESULT = 0x803C0109u32 as HRESULT;
+pub const SDIAG_E_RESOURCE: HRESULT = 0x803C010Au32 as HRESULT;
+pub const SDIAG_E_ROOTCAUSE: HRESULT = 0x803C010Bu32 as HRESULT;
+pub const WPN_E_CHANNEL_CLOSED: HRESULT = 0x803E0100u32 as HRESULT;
+pub const WPN_E_CHANNEL_REQUEST_NOT_COMPLETE: HRESULT = 0x803E0101u32 as HRESULT;
+pub const WPN_E_INVALID_APP: HRESULT = 0x803E0102u32 as HRESULT;
+pub const WPN_E_OUTSTANDING_CHANNEL_REQUEST: HRESULT = 0x803E0103u32 as HRESULT;
+pub const WPN_E_DUPLICATE_CHANNEL: HRESULT = 0x803E0104u32 as HRESULT;
+pub const WPN_E_PLATFORM_UNAVAILABLE: HRESULT = 0x803E0105u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_POSTED: HRESULT = 0x803E0106u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_HIDDEN: HRESULT = 0x803E0107u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_NOT_POSTED: HRESULT = 0x803E0108u32 as HRESULT;
+pub const WPN_E_CLOUD_DISABLED: HRESULT = 0x803E0109u32 as HRESULT;
+pub const WPN_E_CLOUD_INCAPABLE: HRESULT = 0x803E0110u32 as HRESULT;
+pub const WPN_E_CLOUD_AUTH_UNAVAILABLE: HRESULT = 0x803E011Au32 as HRESULT;
+pub const WPN_E_CLOUD_SERVICE_UNAVAILABLE: HRESULT = 0x803E011Bu32 as HRESULT;
+pub const WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION: HRESULT = 0x803E011Cu32 as HRESULT;
+pub const WPN_E_NOTIFICATION_DISABLED: HRESULT = 0x803E0111u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_INCAPABLE: HRESULT = 0x803E0112u32 as HRESULT;
+pub const WPN_E_INTERNET_INCAPABLE: HRESULT = 0x803E0113u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_TYPE_DISABLED: HRESULT = 0x803E0114u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_SIZE: HRESULT = 0x803E0115u32 as HRESULT;
+pub const WPN_E_TAG_SIZE: HRESULT = 0x803E0116u32 as HRESULT;
+pub const WPN_E_ACCESS_DENIED: HRESULT = 0x803E0117u32 as HRESULT;
+pub const WPN_E_DUPLICATE_REGISTRATION: HRESULT = 0x803E0118u32 as HRESULT;
+pub const WPN_E_PUSH_NOTIFICATION_INCAPABLE: HRESULT = 0x803E0119u32 as HRESULT;
+pub const WPN_E_DEV_ID_SIZE: HRESULT = 0x803E0120u32 as HRESULT;
+pub const WPN_E_TAG_ALPHANUMERIC: HRESULT = 0x803E012Au32 as HRESULT;
+pub const WPN_E_INVALID_HTTP_STATUS_CODE: HRESULT = 0x803E012Bu32 as HRESULT;
+pub const WPN_E_OUT_OF_SESSION: HRESULT = 0x803E0200u32 as HRESULT;
+pub const WPN_E_POWER_SAVE: HRESULT = 0x803E0201u32 as HRESULT;
+pub const WPN_E_IMAGE_NOT_FOUND_IN_CACHE: HRESULT = 0x803E0202u32 as HRESULT;
+pub const WPN_E_ALL_URL_NOT_COMPLETED: HRESULT = 0x803E0203u32 as HRESULT;
+pub const WPN_E_INVALID_CLOUD_IMAGE: HRESULT = 0x803E0204u32 as HRESULT;
+pub const WPN_E_NOTIFICATION_ID_MATCHED: HRESULT = 0x803E0205u32 as HRESULT;
+pub const WPN_E_CALLBACK_ALREADY_REGISTERED: HRESULT = 0x803E0206u32 as HRESULT;
+pub const WPN_E_TOAST_NOTIFICATION_DROPPED: HRESULT = 0x803E0207u32 as HRESULT;
+pub const WPN_E_STORAGE_LOCKED: HRESULT = 0x803E0208u32 as HRESULT;
+pub const E_MBN_CONTEXT_NOT_ACTIVATED: HRESULT = 0x80548201u32 as HRESULT;
+pub const E_MBN_BAD_SIM: HRESULT = 0x80548202u32 as HRESULT;
+pub const E_MBN_DATA_CLASS_NOT_AVAILABLE: HRESULT = 0x80548203u32 as HRESULT;
+pub const E_MBN_INVALID_ACCESS_STRING: HRESULT = 0x80548204u32 as HRESULT;
+pub const E_MBN_MAX_ACTIVATED_CONTEXTS: HRESULT = 0x80548205u32 as HRESULT;
+pub const E_MBN_PACKET_SVC_DETACHED: HRESULT = 0x80548206u32 as HRESULT;
+pub const E_MBN_PROVIDER_NOT_VISIBLE: HRESULT = 0x80548207u32 as HRESULT;
+pub const E_MBN_RADIO_POWER_OFF: HRESULT = 0x80548208u32 as HRESULT;
+pub const E_MBN_SERVICE_NOT_ACTIVATED: HRESULT = 0x80548209u32 as HRESULT;
+pub const E_MBN_SIM_NOT_INSERTED: HRESULT = 0x8054820Au32 as HRESULT;
+pub const E_MBN_VOICE_CALL_IN_PROGRESS: HRESULT = 0x8054820Bu32 as HRESULT;
+pub const E_MBN_INVALID_CACHE: HRESULT = 0x8054820Cu32 as HRESULT;
+pub const E_MBN_NOT_REGISTERED: HRESULT = 0x8054820Du32 as HRESULT;
+pub const E_MBN_PROVIDERS_NOT_FOUND: HRESULT = 0x8054820Eu32 as HRESULT;
+pub const E_MBN_PIN_NOT_SUPPORTED: HRESULT = 0x8054820Fu32 as HRESULT;
+pub const E_MBN_PIN_REQUIRED: HRESULT = 0x80548210u32 as HRESULT;
+pub const E_MBN_PIN_DISABLED: HRESULT = 0x80548211u32 as HRESULT;
+pub const E_MBN_FAILURE: HRESULT = 0x80548212u32 as HRESULT;
+pub const E_MBN_INVALID_PROFILE: HRESULT = 0x80548218u32 as HRESULT;
+pub const E_MBN_DEFAULT_PROFILE_EXIST: HRESULT = 0x80548219u32 as HRESULT;
+pub const E_MBN_SMS_ENCODING_NOT_SUPPORTED: HRESULT = 0x80548220u32 as HRESULT;
+pub const E_MBN_SMS_FILTER_NOT_SUPPORTED: HRESULT = 0x80548221u32 as HRESULT;
+pub const E_MBN_SMS_INVALID_MEMORY_INDEX: HRESULT = 0x80548222u32 as HRESULT;
+pub const E_MBN_SMS_LANG_NOT_SUPPORTED: HRESULT = 0x80548223u32 as HRESULT;
+pub const E_MBN_SMS_MEMORY_FAILURE: HRESULT = 0x80548224u32 as HRESULT;
+pub const E_MBN_SMS_NETWORK_TIMEOUT: HRESULT = 0x80548225u32 as HRESULT;
+pub const E_MBN_SMS_UNKNOWN_SMSC_ADDRESS: HRESULT = 0x80548226u32 as HRESULT;
+pub const E_MBN_SMS_FORMAT_NOT_SUPPORTED: HRESULT = 0x80548227u32 as HRESULT;
+pub const E_MBN_SMS_OPERATION_NOT_ALLOWED: HRESULT = 0x80548228u32 as HRESULT;
+pub const E_MBN_SMS_MEMORY_FULL: HRESULT = 0x80548229u32 as HRESULT;
+pub const PEER_E_IPV6_NOT_INSTALLED: HRESULT = 0x80630001u32 as HRESULT;
+pub const PEER_E_NOT_INITIALIZED: HRESULT = 0x80630002u32 as HRESULT;
+pub const PEER_E_CANNOT_START_SERVICE: HRESULT = 0x80630003u32 as HRESULT;
+pub const PEER_E_NOT_LICENSED: HRESULT = 0x80630004u32 as HRESULT;
+pub const PEER_E_INVALID_GRAPH: HRESULT = 0x80630010u32 as HRESULT;
+pub const PEER_E_DBNAME_CHANGED: HRESULT = 0x80630011u32 as HRESULT;
+pub const PEER_E_DUPLICATE_GRAPH: HRESULT = 0x80630012u32 as HRESULT;
+pub const PEER_E_GRAPH_NOT_READY: HRESULT = 0x80630013u32 as HRESULT;
+pub const PEER_E_GRAPH_SHUTTING_DOWN: HRESULT = 0x80630014u32 as HRESULT;
+pub const PEER_E_GRAPH_IN_USE: HRESULT = 0x80630015u32 as HRESULT;
+pub const PEER_E_INVALID_DATABASE: HRESULT = 0x80630016u32 as HRESULT;
+pub const PEER_E_TOO_MANY_ATTRIBUTES: HRESULT = 0x80630017u32 as HRESULT;
+pub const PEER_E_CONNECTION_NOT_FOUND: HRESULT = 0x80630103u32 as HRESULT;
+pub const PEER_E_CONNECT_SELF: HRESULT = 0x80630106u32 as HRESULT;
+pub const PEER_E_ALREADY_LISTENING: HRESULT = 0x80630107u32 as HRESULT;
+pub const PEER_E_NODE_NOT_FOUND: HRESULT = 0x80630108u32 as HRESULT;
+pub const PEER_E_CONNECTION_FAILED: HRESULT = 0x80630109u32 as HRESULT;
+pub const PEER_E_CONNECTION_NOT_AUTHENTICATED: HRESULT = 0x8063010Au32 as HRESULT;
+pub const PEER_E_CONNECTION_REFUSED: HRESULT = 0x8063010Bu32 as HRESULT;
+pub const PEER_E_CLASSIFIER_TOO_LONG: HRESULT = 0x80630201u32 as HRESULT;
+pub const PEER_E_TOO_MANY_IDENTITIES: HRESULT = 0x80630202u32 as HRESULT;
+pub const PEER_E_NO_KEY_ACCESS: HRESULT = 0x80630203u32 as HRESULT;
+pub const PEER_E_GROUPS_EXIST: HRESULT = 0x80630204u32 as HRESULT;
+pub const PEER_E_RECORD_NOT_FOUND: HRESULT = 0x80630301u32 as HRESULT;
+pub const PEER_E_DATABASE_ACCESSDENIED: HRESULT = 0x80630302u32 as HRESULT;
+pub const PEER_E_DBINITIALIZATION_FAILED: HRESULT = 0x80630303u32 as HRESULT;
+pub const PEER_E_MAX_RECORD_SIZE_EXCEEDED: HRESULT = 0x80630304u32 as HRESULT;
+pub const PEER_E_DATABASE_ALREADY_PRESENT: HRESULT = 0x80630305u32 as HRESULT;
+pub const PEER_E_DATABASE_NOT_PRESENT: HRESULT = 0x80630306u32 as HRESULT;
+pub const PEER_E_IDENTITY_NOT_FOUND: HRESULT = 0x80630401u32 as HRESULT;
+pub const PEER_E_EVENT_HANDLE_NOT_FOUND: HRESULT = 0x80630501u32 as HRESULT;
+pub const PEER_E_INVALID_SEARCH: HRESULT = 0x80630601u32 as HRESULT;
+pub const PEER_E_INVALID_ATTRIBUTES: HRESULT = 0x80630602u32 as HRESULT;
+pub const PEER_E_INVITATION_NOT_TRUSTED: HRESULT = 0x80630701u32 as HRESULT;
+pub const PEER_E_CHAIN_TOO_LONG: HRESULT = 0x80630703u32 as HRESULT;
+pub const PEER_E_INVALID_TIME_PERIOD: HRESULT = 0x80630705u32 as HRESULT;
+pub const PEER_E_CIRCULAR_CHAIN_DETECTED: HRESULT = 0x80630706u32 as HRESULT;
+pub const PEER_E_CERT_STORE_CORRUPTED: HRESULT = 0x80630801u32 as HRESULT;
+pub const PEER_E_NO_CLOUD: HRESULT = 0x80631001u32 as HRESULT;
+pub const PEER_E_CLOUD_NAME_AMBIGUOUS: HRESULT = 0x80631005u32 as HRESULT;
+pub const PEER_E_INVALID_RECORD: HRESULT = 0x80632010u32 as HRESULT;
+pub const PEER_E_NOT_AUTHORIZED: HRESULT = 0x80632020u32 as HRESULT;
+pub const PEER_E_PASSWORD_DOES_NOT_MEET_POLICY: HRESULT = 0x80632021u32 as HRESULT;
+pub const PEER_E_DEFERRED_VALIDATION: HRESULT = 0x80632030u32 as HRESULT;
+pub const PEER_E_INVALID_GROUP_PROPERTIES: HRESULT = 0x80632040u32 as HRESULT;
+pub const PEER_E_INVALID_PEER_NAME: HRESULT = 0x80632050u32 as HRESULT;
+pub const PEER_E_INVALID_CLASSIFIER: HRESULT = 0x80632060u32 as HRESULT;
+pub const PEER_E_INVALID_FRIENDLY_NAME: HRESULT = 0x80632070u32 as HRESULT;
+pub const PEER_E_INVALID_ROLE_PROPERTY: HRESULT = 0x80632071u32 as HRESULT;
+pub const PEER_E_INVALID_CLASSIFIER_PROPERTY: HRESULT = 0x80632072u32 as HRESULT;
+pub const PEER_E_INVALID_RECORD_EXPIRATION: HRESULT = 0x80632080u32 as HRESULT;
+pub const PEER_E_INVALID_CREDENTIAL_INFO: HRESULT = 0x80632081u32 as HRESULT;
+pub const PEER_E_INVALID_CREDENTIAL: HRESULT = 0x80632082u32 as HRESULT;
+pub const PEER_E_INVALID_RECORD_SIZE: HRESULT = 0x80632083u32 as HRESULT;
+pub const PEER_E_UNSUPPORTED_VERSION: HRESULT = 0x80632090u32 as HRESULT;
+pub const PEER_E_GROUP_NOT_READY: HRESULT = 0x80632091u32 as HRESULT;
+pub const PEER_E_GROUP_IN_USE: HRESULT = 0x80632092u32 as HRESULT;
+pub const PEER_E_INVALID_GROUP: HRESULT = 0x80632093u32 as HRESULT;
+pub const PEER_E_NO_MEMBERS_FOUND: HRESULT = 0x80632094u32 as HRESULT;
+pub const PEER_E_NO_MEMBER_CONNECTIONS: HRESULT = 0x80632095u32 as HRESULT;
+pub const PEER_E_UNABLE_TO_LISTEN: HRESULT = 0x80632096u32 as HRESULT;
+pub const PEER_E_IDENTITY_DELETED: HRESULT = 0x806320A0u32 as HRESULT;
+pub const PEER_E_SERVICE_NOT_AVAILABLE: HRESULT = 0x806320A1u32 as HRESULT;
+pub const PEER_E_CONTACT_NOT_FOUND: HRESULT = 0x80636001u32 as HRESULT;
+pub const PEER_S_GRAPH_DATA_CREATED: HRESULT = 0x00630001;
+pub const PEER_S_NO_EVENT_DATA: HRESULT = 0x00630002;
+pub const PEER_S_ALREADY_CONNECTED: HRESULT = 0x00632000;
+pub const PEER_S_SUBSCRIPTION_EXISTS: HRESULT = 0x00636000;
+pub const PEER_S_NO_CONNECTIVITY: HRESULT = 0x00630005;
+pub const PEER_S_ALREADY_A_MEMBER: HRESULT = 0x00630006;
+pub const PEER_E_CANNOT_CONVERT_PEER_NAME: HRESULT = 0x80634001u32 as HRESULT;
+pub const PEER_E_INVALID_PEER_HOST_NAME: HRESULT = 0x80634002u32 as HRESULT;
+pub const PEER_E_NO_MORE: HRESULT = 0x80634003u32 as HRESULT;
+pub const PEER_E_PNRP_DUPLICATE_PEER_NAME: HRESULT = 0x80634005u32 as HRESULT;
+pub const PEER_E_INVITE_CANCELLED: HRESULT = 0x80637000u32 as HRESULT;
+pub const PEER_E_INVITE_RESPONSE_NOT_AVAILABLE: HRESULT = 0x80637001u32 as HRESULT;
+pub const PEER_E_NOT_SIGNED_IN: HRESULT = 0x80637003u32 as HRESULT;
+pub const PEER_E_PRIVACY_DECLINED: HRESULT = 0x80637004u32 as HRESULT;
+pub const PEER_E_TIMEOUT: HRESULT = 0x80637005u32 as HRESULT;
+pub const PEER_E_INVALID_ADDRESS: HRESULT = 0x80637007u32 as HRESULT;
+pub const PEER_E_FW_EXCEPTION_DISABLED: HRESULT = 0x80637008u32 as HRESULT;
+pub const PEER_E_FW_BLOCKED_BY_POLICY: HRESULT = 0x80637009u32 as HRESULT;
+pub const PEER_E_FW_BLOCKED_BY_SHIELDS_UP: HRESULT = 0x8063700Au32 as HRESULT;
+pub const PEER_E_FW_DECLINED: HRESULT = 0x8063700Bu32 as HRESULT;
+pub const UI_E_CREATE_FAILED: HRESULT = 0x802A0001u32 as HRESULT;
+pub const UI_E_SHUTDOWN_CALLED: HRESULT = 0x802A0002u32 as HRESULT;
+pub const UI_E_ILLEGAL_REENTRANCY: HRESULT = 0x802A0003u32 as HRESULT;
+pub const UI_E_OBJECT_SEALED: HRESULT = 0x802A0004u32 as HRESULT;
+pub const UI_E_VALUE_NOT_SET: HRESULT = 0x802A0005u32 as HRESULT;
+pub const UI_E_VALUE_NOT_DETERMINED: HRESULT = 0x802A0006u32 as HRESULT;
+pub const UI_E_INVALID_OUTPUT: HRESULT = 0x802A0007u32 as HRESULT;
+pub const UI_E_BOOLEAN_EXPECTED: HRESULT = 0x802A0008u32 as HRESULT;
+pub const UI_E_DIFFERENT_OWNER: HRESULT = 0x802A0009u32 as HRESULT;
+pub const UI_E_AMBIGUOUS_MATCH: HRESULT = 0x802A000Au32 as HRESULT;
+pub const UI_E_FP_OVERFLOW: HRESULT = 0x802A000Bu32 as HRESULT;
+pub const UI_E_WRONG_THREAD: HRESULT = 0x802A000Cu32 as HRESULT;
+pub const UI_E_STORYBOARD_ACTIVE: HRESULT = 0x802A0101u32 as HRESULT;
+pub const UI_E_STORYBOARD_NOT_PLAYING: HRESULT = 0x802A0102u32 as HRESULT;
+pub const UI_E_START_KEYFRAME_AFTER_END: HRESULT = 0x802A0103u32 as HRESULT;
+pub const UI_E_END_KEYFRAME_NOT_DETERMINED: HRESULT = 0x802A0104u32 as HRESULT;
+pub const UI_E_LOOPS_OVERLAP: HRESULT = 0x802A0105u32 as HRESULT;
+pub const UI_E_TRANSITION_ALREADY_USED: HRESULT = 0x802A0106u32 as HRESULT;
+pub const UI_E_TRANSITION_NOT_IN_STORYBOARD: HRESULT = 0x802A0107u32 as HRESULT;
+pub const UI_E_TRANSITION_ECLIPSED: HRESULT = 0x802A0108u32 as HRESULT;
+pub const UI_E_TIME_BEFORE_LAST_UPDATE: HRESULT = 0x802A0109u32 as HRESULT;
+pub const UI_E_TIMER_CLIENT_ALREADY_CONNECTED: HRESULT = 0x802A010Au32 as HRESULT;
+pub const UI_E_INVALID_DIMENSION: HRESULT = 0x802A010Bu32 as HRESULT;
+pub const UI_E_PRIMITIVE_OUT_OF_BOUNDS: HRESULT = 0x802A010Cu32 as HRESULT;
+pub const UI_E_WINDOW_CLOSED: HRESULT = 0x802A0201u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INVALID_HANDLE: HRESULT = 0x80650001u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_READ_NOT_PERMITTED: HRESULT = 0x80650002u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED: HRESULT = 0x80650003u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INVALID_PDU: HRESULT = 0x80650004u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION: HRESULT = 0x80650005u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED: HRESULT = 0x80650006u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INVALID_OFFSET: HRESULT = 0x80650007u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION: HRESULT = 0x80650008u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL: HRESULT = 0x80650009u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND: HRESULT = 0x8065000Au32 as HRESULT;
+pub const E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG: HRESULT = 0x8065000Bu32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE: HRESULT = 0x8065000Cu32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH: HRESULT = 0x8065000Du32 as HRESULT;
+pub const E_BLUETOOTH_ATT_UNLIKELY: HRESULT = 0x8065000Eu32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION: HRESULT = 0x8065000Fu32 as HRESULT;
+pub const E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE: HRESULT = 0x80650010u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES: HRESULT = 0x80650011u32 as HRESULT;
+pub const E_BLUETOOTH_ATT_UNKNOWN_ERROR: HRESULT = 0x80651000u32 as HRESULT;
+pub const E_AUDIO_ENGINE_NODE_NOT_FOUND: HRESULT = 0x80660001u32 as HRESULT;
+pub const E_HDAUDIO_EMPTY_CONNECTION_LIST: HRESULT = 0x80660002u32 as HRESULT;
+pub const E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED: HRESULT = 0x80660003u32 as HRESULT;
+pub const E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED: HRESULT = 0x80660004u32 as HRESULT;
+pub const E_HDAUDIO_NULL_LINKED_LIST_ENTRY: HRESULT = 0x80660005u32 as HRESULT;
+pub const ERROR_SPACES_POOL_WAS_DELETED: HRESULT = 0x00E70001;
+pub const ERROR_SPACES_RESILIENCY_TYPE_INVALID: HRESULT = 0x80E70003u32 as HRESULT;
+pub const ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID: HRESULT = 0x80E70004u32 as HRESULT;
+pub const ERROR_SPACES_DRIVE_REDUNDANCY_INVALID: HRESULT = 0x80E70006u32 as HRESULT;
+pub const ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID: HRESULT = 0x80E70007u32 as HRESULT;
+pub const ERROR_SPACES_PARITY_LAYOUT_INVALID: HRESULT = 0x80E70008u32 as HRESULT;
+pub const ERROR_SPACES_INTERLEAVE_LENGTH_INVALID: HRESULT = 0x80E70009u32 as HRESULT;
+pub const ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID: HRESULT = 0x80E7000Au32 as HRESULT;
+pub const ERROR_SPACES_NOT_ENOUGH_DRIVES: HRESULT = 0x80E7000Bu32 as HRESULT;
+pub const ERROR_VOLSNAP_BOOTFILE_NOT_VALID: HRESULT = 0x80820001u32 as HRESULT;
+pub const ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME: HRESULT = 0x80830001u32 as HRESULT;
+pub const ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS: HRESULT = 0x80830002u32 as HRESULT;
+pub const ERROR_TIERING_STORAGE_TIER_NOT_FOUND: HRESULT = 0x80830003u32 as HRESULT;
+pub const ERROR_TIERING_INVALID_FILE_ID: HRESULT = 0x80830004u32 as HRESULT;
+pub const ERROR_TIERING_WRONG_CLUSTER_NODE: HRESULT = 0x80830005u32 as HRESULT;
+pub const ERROR_TIERING_ALREADY_PROCESSING: HRESULT = 0x80830006u32 as HRESULT;
+pub const ERROR_TIERING_CANNOT_PIN_OBJECT: HRESULT = 0x80830007u32 as HRESULT;
+pub const DXGI_STATUS_OCCLUDED: HRESULT = 0x087A0001;
+pub const DXGI_STATUS_CLIPPED: HRESULT = 0x087A0002;
+pub const DXGI_STATUS_NO_REDIRECTION: HRESULT = 0x087A0004;
+pub const DXGI_STATUS_NO_DESKTOP_ACCESS: HRESULT = 0x087A0005;
+pub const DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE: HRESULT = 0x087A0006;
+pub const DXGI_STATUS_MODE_CHANGED: HRESULT = 0x087A0007;
+pub const DXGI_STATUS_MODE_CHANGE_IN_PROGRESS: HRESULT = 0x087A0008;
+pub const DXGI_ERROR_INVALID_CALL: HRESULT = 0x887A0001u32 as HRESULT;
+pub const DXGI_ERROR_NOT_FOUND: HRESULT = 0x887A0002u32 as HRESULT;
+pub const DXGI_ERROR_MORE_DATA: HRESULT = 0x887A0003u32 as HRESULT;
+pub const DXGI_ERROR_UNSUPPORTED: HRESULT = 0x887A0004u32 as HRESULT;
+pub const DXGI_ERROR_DEVICE_REMOVED: HRESULT = 0x887A0005u32 as HRESULT;
+pub const DXGI_ERROR_DEVICE_HUNG: HRESULT = 0x887A0006u32 as HRESULT;
+pub const DXGI_ERROR_DEVICE_RESET: HRESULT = 0x887A0007u32 as HRESULT;
+pub const DXGI_ERROR_WAS_STILL_DRAWING: HRESULT = 0x887A000Au32 as HRESULT;
+pub const DXGI_ERROR_FRAME_STATISTICS_DISJOINT: HRESULT = 0x887A000Bu32 as HRESULT;
+pub const DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE: HRESULT = 0x887A000Cu32 as HRESULT;
+pub const DXGI_ERROR_DRIVER_INTERNAL_ERROR: HRESULT = 0x887A0020u32 as HRESULT;
+pub const DXGI_ERROR_NONEXCLUSIVE: HRESULT = 0x887A0021u32 as HRESULT;
+pub const DXGI_ERROR_NOT_CURRENTLY_AVAILABLE: HRESULT = 0x887A0022u32 as HRESULT;
+pub const DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED: HRESULT = 0x887A0023u32 as HRESULT;
+pub const DXGI_ERROR_REMOTE_OUTOFMEMORY: HRESULT = 0x887A0024u32 as HRESULT;
+pub const DXGI_ERROR_ACCESS_LOST: HRESULT = 0x887A0026u32 as HRESULT;
+pub const DXGI_ERROR_WAIT_TIMEOUT: HRESULT = 0x887A0027u32 as HRESULT;
+pub const DXGI_ERROR_SESSION_DISCONNECTED: HRESULT = 0x887A0028u32 as HRESULT;
+pub const DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE: HRESULT = 0x887A0029u32 as HRESULT;
+pub const DXGI_ERROR_CANNOT_PROTECT_CONTENT: HRESULT = 0x887A002Au32 as HRESULT;
+pub const DXGI_ERROR_ACCESS_DENIED: HRESULT = 0x887A002Bu32 as HRESULT;
+pub const DXGI_ERROR_NAME_ALREADY_EXISTS: HRESULT = 0x887A002Cu32 as HRESULT;
+pub const DXGI_ERROR_SDK_COMPONENT_MISSING: HRESULT = 0x887A002Du32 as HRESULT;
+pub const DXGI_STATUS_UNOCCLUDED: HRESULT = 0x087A0009;
+pub const DXGI_STATUS_DDA_WAS_STILL_DRAWING: HRESULT = 0x087A000A;
+pub const DXGI_ERROR_MODE_CHANGE_IN_PROGRESS: HRESULT = 0x887A0025u32 as HRESULT;
+pub const DXGI_DDI_ERR_WASSTILLDRAWING: HRESULT = 0x887B0001u32 as HRESULT;
+pub const DXGI_DDI_ERR_UNSUPPORTED: HRESULT = 0x887B0002u32 as HRESULT;
+pub const DXGI_DDI_ERR_NONEXCLUSIVE: HRESULT = 0x887B0003u32 as HRESULT;
+pub const D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS: HRESULT = 0x88790001u32 as HRESULT;
+pub const D3D10_ERROR_FILE_NOT_FOUND: HRESULT = 0x88790002u32 as HRESULT;
+pub const D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS: HRESULT = 0x887C0001u32 as HRESULT;
+pub const D3D11_ERROR_FILE_NOT_FOUND: HRESULT = 0x887C0002u32 as HRESULT;
+pub const D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS: HRESULT = 0x887C0003u32 as HRESULT;
+pub const D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD: HRESULT = 0x887C0004u32 as HRESULT;
+pub const D2DERR_WRONG_STATE: HRESULT = 0x88990001u32 as HRESULT;
+pub const D2DERR_NOT_INITIALIZED: HRESULT = 0x88990002u32 as HRESULT;
+pub const D2DERR_UNSUPPORTED_OPERATION: HRESULT = 0x88990003u32 as HRESULT;
+pub const D2DERR_SCANNER_FAILED: HRESULT = 0x88990004u32 as HRESULT;
+pub const D2DERR_SCREEN_ACCESS_DENIED: HRESULT = 0x88990005u32 as HRESULT;
+pub const D2DERR_DISPLAY_STATE_INVALID: HRESULT = 0x88990006u32 as HRESULT;
+pub const D2DERR_ZERO_VECTOR: HRESULT = 0x88990007u32 as HRESULT;
+pub const D2DERR_INTERNAL_ERROR: HRESULT = 0x88990008u32 as HRESULT;
+pub const D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED: HRESULT = 0x88990009u32 as HRESULT;
+pub const D2DERR_INVALID_CALL: HRESULT = 0x8899000Au32 as HRESULT;
+pub const D2DERR_NO_HARDWARE_DEVICE: HRESULT = 0x8899000Bu32 as HRESULT;
+pub const D2DERR_RECREATE_TARGET: HRESULT = 0x8899000Cu32 as HRESULT;
+pub const D2DERR_TOO_MANY_SHADER_ELEMENTS: HRESULT = 0x8899000Du32 as HRESULT;
+pub const D2DERR_SHADER_COMPILE_FAILED: HRESULT = 0x8899000Eu32 as HRESULT;
+pub const D2DERR_MAX_TEXTURE_SIZE_EXCEEDED: HRESULT = 0x8899000Fu32 as HRESULT;
+pub const D2DERR_UNSUPPORTED_VERSION: HRESULT = 0x88990010u32 as HRESULT;
+pub const D2DERR_BAD_NUMBER: HRESULT = 0x88990011u32 as HRESULT;
+pub const D2DERR_WRONG_FACTORY: HRESULT = 0x88990012u32 as HRESULT;
+pub const D2DERR_LAYER_ALREADY_IN_USE: HRESULT = 0x88990013u32 as HRESULT;
+pub const D2DERR_POP_CALL_DID_NOT_MATCH_PUSH: HRESULT = 0x88990014u32 as HRESULT;
+pub const D2DERR_WRONG_RESOURCE_DOMAIN: HRESULT = 0x88990015u32 as HRESULT;
+pub const D2DERR_PUSH_POP_UNBALANCED: HRESULT = 0x88990016u32 as HRESULT;
+pub const D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT: HRESULT = 0x88990017u32 as HRESULT;
+pub const D2DERR_INCOMPATIBLE_BRUSH_TYPES: HRESULT = 0x88990018u32 as HRESULT;
+pub const D2DERR_WIN32_ERROR: HRESULT = 0x88990019u32 as HRESULT;
+pub const D2DERR_TARGET_NOT_GDI_COMPATIBLE: HRESULT = 0x8899001Au32 as HRESULT;
+pub const D2DERR_TEXT_EFFECT_IS_WRONG_TYPE: HRESULT = 0x8899001Bu32 as HRESULT;
+pub const D2DERR_TEXT_RENDERER_NOT_RELEASED: HRESULT = 0x8899001Cu32 as HRESULT;
+pub const D2DERR_EXCEEDS_MAX_BITMAP_SIZE: HRESULT = 0x8899001Du32 as HRESULT;
+pub const D2DERR_INVALID_GRAPH_CONFIGURATION: HRESULT = 0x8899001Eu32 as HRESULT;
+pub const D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION: HRESULT = 0x8899001Fu32 as HRESULT;
+pub const D2DERR_CYCLIC_GRAPH: HRESULT = 0x88990020u32 as HRESULT;
+pub const D2DERR_BITMAP_CANNOT_DRAW: HRESULT = 0x88990021u32 as HRESULT;
+pub const D2DERR_OUTSTANDING_BITMAP_REFERENCES: HRESULT = 0x88990022u32 as HRESULT;
+pub const D2DERR_ORIGINAL_TARGET_NOT_BOUND: HRESULT = 0x88990023u32 as HRESULT;
+pub const D2DERR_INVALID_TARGET: HRESULT = 0x88990024u32 as HRESULT;
+pub const D2DERR_BITMAP_BOUND_AS_TARGET: HRESULT = 0x88990025u32 as HRESULT;
+pub const D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES: HRESULT = 0x88990026u32 as HRESULT;
+pub const D2DERR_INTERMEDIATE_TOO_LARGE: HRESULT = 0x88990027u32 as HRESULT;
+pub const D2DERR_EFFECT_IS_NOT_REGISTERED: HRESULT = 0x88990028u32 as HRESULT;
+pub const D2DERR_INVALID_PROPERTY: HRESULT = 0x88990029u32 as HRESULT;
+pub const D2DERR_NO_SUBPROPERTIES: HRESULT = 0x8899002Au32 as HRESULT;
+pub const D2DERR_PRINT_JOB_CLOSED: HRESULT = 0x8899002Bu32 as HRESULT;
+pub const D2DERR_PRINT_FORMAT_NOT_SUPPORTED: HRESULT = 0x8899002Cu32 as HRESULT;
+pub const D2DERR_TOO_MANY_TRANSFORM_INPUTS: HRESULT = 0x8899002Du32 as HRESULT;
+pub const DWRITE_E_FILEFORMAT: HRESULT = 0x88985000u32 as HRESULT;
+pub const DWRITE_E_UNEXPECTED: HRESULT = 0x88985001u32 as HRESULT;
+pub const DWRITE_E_NOFONT: HRESULT = 0x88985002u32 as HRESULT;
+pub const DWRITE_E_FILENOTFOUND: HRESULT = 0x88985003u32 as HRESULT;
+pub const DWRITE_E_FILEACCESS: HRESULT = 0x88985004u32 as HRESULT;
+pub const DWRITE_E_FONTCOLLECTIONOBSOLETE: HRESULT = 0x88985005u32 as HRESULT;
+pub const DWRITE_E_ALREADYREGISTERED: HRESULT = 0x88985006u32 as HRESULT;
+pub const DWRITE_E_CACHEFORMAT: HRESULT = 0x88985007u32 as HRESULT;
+pub const DWRITE_E_CACHEVERSION: HRESULT = 0x88985008u32 as HRESULT;
+pub const DWRITE_E_UNSUPPORTEDOPERATION: HRESULT = 0x88985009u32 as HRESULT;
+pub const DWRITE_E_TEXTRENDERERINCOMPATIBLE: HRESULT = 0x8898500Au32 as HRESULT;
+pub const DWRITE_E_FLOWDIRECTIONCONFLICTS: HRESULT = 0x8898500Bu32 as HRESULT;
+pub const DWRITE_E_NOCOLOR: HRESULT = 0x8898500Cu32 as HRESULT;
+pub const WINCODEC_ERR_WRONGSTATE: HRESULT = 0x88982F04u32 as HRESULT;
+pub const WINCODEC_ERR_VALUEOUTOFRANGE: HRESULT = 0x88982F05u32 as HRESULT;
+pub const WINCODEC_ERR_UNKNOWNIMAGEFORMAT: HRESULT = 0x88982F07u32 as HRESULT;
+pub const WINCODEC_ERR_UNSUPPORTEDVERSION: HRESULT = 0x88982F0Bu32 as HRESULT;
+pub const WINCODEC_ERR_NOTINITIALIZED: HRESULT = 0x88982F0Cu32 as HRESULT;
+pub const WINCODEC_ERR_ALREADYLOCKED: HRESULT = 0x88982F0Du32 as HRESULT;
+pub const WINCODEC_ERR_PROPERTYNOTFOUND: HRESULT = 0x88982F40u32 as HRESULT;
+pub const WINCODEC_ERR_PROPERTYNOTSUPPORTED: HRESULT = 0x88982F41u32 as HRESULT;
+pub const WINCODEC_ERR_PROPERTYSIZE: HRESULT = 0x88982F42u32 as HRESULT;
+pub const WINCODEC_ERR_CODECPRESENT: HRESULT = 0x88982F43u32 as HRESULT;
+pub const WINCODEC_ERR_CODECNOTHUMBNAIL: HRESULT = 0x88982F44u32 as HRESULT;
+pub const WINCODEC_ERR_PALETTEUNAVAILABLE: HRESULT = 0x88982F45u32 as HRESULT;
+pub const WINCODEC_ERR_CODECTOOMANYSCANLINES: HRESULT = 0x88982F46u32 as HRESULT;
+pub const WINCODEC_ERR_INTERNALERROR: HRESULT = 0x88982F48u32 as HRESULT;
+pub const WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS: HRESULT = 0x88982F49u32 as HRESULT;
+pub const WINCODEC_ERR_COMPONENTNOTFOUND: HRESULT = 0x88982F50u32 as HRESULT;
+pub const WINCODEC_ERR_IMAGESIZEOUTOFRANGE: HRESULT = 0x88982F51u32 as HRESULT;
+pub const WINCODEC_ERR_TOOMUCHMETADATA: HRESULT = 0x88982F52u32 as HRESULT;
+pub const WINCODEC_ERR_BADIMAGE: HRESULT = 0x88982F60u32 as HRESULT;
+pub const WINCODEC_ERR_BADHEADER: HRESULT = 0x88982F61u32 as HRESULT;
+pub const WINCODEC_ERR_FRAMEMISSING: HRESULT = 0x88982F62u32 as HRESULT;
+pub const WINCODEC_ERR_BADMETADATAHEADER: HRESULT = 0x88982F63u32 as HRESULT;
+pub const WINCODEC_ERR_BADSTREAMDATA: HRESULT = 0x88982F70u32 as HRESULT;
+pub const WINCODEC_ERR_STREAMWRITE: HRESULT = 0x88982F71u32 as HRESULT;
+pub const WINCODEC_ERR_STREAMREAD: HRESULT = 0x88982F72u32 as HRESULT;
+pub const WINCODEC_ERR_STREAMNOTAVAILABLE: HRESULT = 0x88982F73u32 as HRESULT;
+pub const WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT: HRESULT = 0x88982F80u32 as HRESULT;
+pub const WINCODEC_ERR_UNSUPPORTEDOPERATION: HRESULT = 0x88982F81u32 as HRESULT;
+pub const WINCODEC_ERR_INVALIDREGISTRATION: HRESULT = 0x88982F8Au32 as HRESULT;
+pub const WINCODEC_ERR_COMPONENTINITIALIZEFAILURE: HRESULT = 0x88982F8Bu32 as HRESULT;
+pub const WINCODEC_ERR_INSUFFICIENTBUFFER: HRESULT = 0x88982F8Cu32 as HRESULT;
+pub const WINCODEC_ERR_DUPLICATEMETADATAPRESENT: HRESULT = 0x88982F8Du32 as HRESULT;
+pub const WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE: HRESULT = 0x88982F8Eu32 as HRESULT;
+pub const WINCODEC_ERR_UNEXPECTEDSIZE: HRESULT = 0x88982F8Fu32 as HRESULT;
+pub const WINCODEC_ERR_INVALIDQUERYREQUEST: HRESULT = 0x88982F90u32 as HRESULT;
+pub const WINCODEC_ERR_UNEXPECTEDMETADATATYPE: HRESULT = 0x88982F91u32 as HRESULT;
+pub const WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT: HRESULT = 0x88982F92u32 as HRESULT;
+pub const WINCODEC_ERR_INVALIDQUERYCHARACTER: HRESULT = 0x88982F93u32 as HRESULT;
+pub const WINCODEC_ERR_WIN32ERROR: HRESULT = 0x88982F94u32 as HRESULT;
+pub const WINCODEC_ERR_INVALIDPROGRESSIVELEVEL: HRESULT = 0x88982F95u32 as HRESULT;
+pub const MILERR_OBJECTBUSY: HRESULT = 0x88980001u32 as HRESULT;
+pub const MILERR_INSUFFICIENTBUFFER: HRESULT = 0x88980002u32 as HRESULT;
+pub const MILERR_WIN32ERROR: HRESULT = 0x88980003u32 as HRESULT;
+pub const MILERR_SCANNER_FAILED: HRESULT = 0x88980004u32 as HRESULT;
+pub const MILERR_SCREENACCESSDENIED: HRESULT = 0x88980005u32 as HRESULT;
+pub const MILERR_DISPLAYSTATEINVALID: HRESULT = 0x88980006u32 as HRESULT;
+pub const MILERR_NONINVERTIBLEMATRIX: HRESULT = 0x88980007u32 as HRESULT;
+pub const MILERR_ZEROVECTOR: HRESULT = 0x88980008u32 as HRESULT;
+pub const MILERR_TERMINATED: HRESULT = 0x88980009u32 as HRESULT;
+pub const MILERR_BADNUMBER: HRESULT = 0x8898000Au32 as HRESULT;
+pub const MILERR_INTERNALERROR: HRESULT = 0x88980080u32 as HRESULT;
+pub const MILERR_DISPLAYFORMATNOTSUPPORTED: HRESULT = 0x88980084u32 as HRESULT;
+pub const MILERR_INVALIDCALL: HRESULT = 0x88980085u32 as HRESULT;
+pub const MILERR_ALREADYLOCKED: HRESULT = 0x88980086u32 as HRESULT;
+pub const MILERR_NOTLOCKED: HRESULT = 0x88980087u32 as HRESULT;
+pub const MILERR_DEVICECANNOTRENDERTEXT: HRESULT = 0x88980088u32 as HRESULT;
+pub const MILERR_GLYPHBITMAPMISSED: HRESULT = 0x88980089u32 as HRESULT;
+pub const MILERR_MALFORMEDGLYPHCACHE: HRESULT = 0x8898008Au32 as HRESULT;
+pub const MILERR_GENERIC_IGNORE: HRESULT = 0x8898008Bu32 as HRESULT;
+pub const MILERR_MALFORMED_GUIDELINE_DATA: HRESULT = 0x8898008Cu32 as HRESULT;
+pub const MILERR_NO_HARDWARE_DEVICE: HRESULT = 0x8898008Du32 as HRESULT;
+pub const MILERR_NEED_RECREATE_AND_PRESENT: HRESULT = 0x8898008Eu32 as HRESULT;
+pub const MILERR_ALREADY_INITIALIZED: HRESULT = 0x8898008Fu32 as HRESULT;
+pub const MILERR_MISMATCHED_SIZE: HRESULT = 0x88980090u32 as HRESULT;
+pub const MILERR_NO_REDIRECTION_SURFACE_AVAILABLE: HRESULT = 0x88980091u32 as HRESULT;
+pub const MILERR_REMOTING_NOT_SUPPORTED: HRESULT = 0x88980092u32 as HRESULT;
+pub const MILERR_QUEUED_PRESENT_NOT_SUPPORTED: HRESULT = 0x88980093u32 as HRESULT;
+pub const MILERR_NOT_QUEUING_PRESENTS: HRESULT = 0x88980094u32 as HRESULT;
+pub const MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER: HRESULT = 0x88980095u32 as HRESULT;
+pub const MILERR_TOOMANYSHADERELEMNTS: HRESULT = 0x88980096u32 as HRESULT;
+pub const MILERR_MROW_READLOCK_FAILED: HRESULT = 0x88980097u32 as HRESULT;
+pub const MILERR_MROW_UPDATE_FAILED: HRESULT = 0x88980098u32 as HRESULT;
+pub const MILERR_SHADER_COMPILE_FAILED: HRESULT = 0x88980099u32 as HRESULT;
+pub const MILERR_MAX_TEXTURE_SIZE_EXCEEDED: HRESULT = 0x8898009Au32 as HRESULT;
+pub const MILERR_QPC_TIME_WENT_BACKWARD: HRESULT = 0x8898009Bu32 as HRESULT;
+pub const MILERR_DXGI_ENUMERATION_OUT_OF_SYNC: HRESULT = 0x8898009Du32 as HRESULT;
+pub const MILERR_ADAPTER_NOT_FOUND: HRESULT = 0x8898009Eu32 as HRESULT;
+pub const MILERR_COLORSPACE_NOT_SUPPORTED: HRESULT = 0x8898009Fu32 as HRESULT;
+pub const MILERR_PREFILTER_NOT_SUPPORTED: HRESULT = 0x889800A0u32 as HRESULT;
+pub const MILERR_DISPLAYID_ACCESS_DENIED: HRESULT = 0x889800A1u32 as HRESULT;
+pub const UCEERR_INVALIDPACKETHEADER: HRESULT = 0x88980400u32 as HRESULT;
+pub const UCEERR_UNKNOWNPACKET: HRESULT = 0x88980401u32 as HRESULT;
+pub const UCEERR_ILLEGALPACKET: HRESULT = 0x88980402u32 as HRESULT;
+pub const UCEERR_MALFORMEDPACKET: HRESULT = 0x88980403u32 as HRESULT;
+pub const UCEERR_ILLEGALHANDLE: HRESULT = 0x88980404u32 as HRESULT;
+pub const UCEERR_HANDLELOOKUPFAILED: HRESULT = 0x88980405u32 as HRESULT;
+pub const UCEERR_RENDERTHREADFAILURE: HRESULT = 0x88980406u32 as HRESULT;
+pub const UCEERR_CTXSTACKFRSTTARGETNULL: HRESULT = 0x88980407u32 as HRESULT;
+pub const UCEERR_CONNECTIONIDLOOKUPFAILED: HRESULT = 0x88980408u32 as HRESULT;
+pub const UCEERR_BLOCKSFULL: HRESULT = 0x88980409u32 as HRESULT;
+pub const UCEERR_MEMORYFAILURE: HRESULT = 0x8898040Au32 as HRESULT;
+pub const UCEERR_PACKETRECORDOUTOFRANGE: HRESULT = 0x8898040Bu32 as HRESULT;
+pub const UCEERR_ILLEGALRECORDTYPE: HRESULT = 0x8898040Cu32 as HRESULT;
+pub const UCEERR_OUTOFHANDLES: HRESULT = 0x8898040Du32 as HRESULT;
+pub const UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED: HRESULT = 0x8898040Eu32 as HRESULT;
+pub const UCEERR_NO_MULTIPLE_WORKER_THREADS: HRESULT = 0x8898040Fu32 as HRESULT;
+pub const UCEERR_REMOTINGNOTSUPPORTED: HRESULT = 0x88980410u32 as HRESULT;
+pub const UCEERR_MISSINGENDCOMMAND: HRESULT = 0x88980411u32 as HRESULT;
+pub const UCEERR_MISSINGBEGINCOMMAND: HRESULT = 0x88980412u32 as HRESULT;
+pub const UCEERR_CHANNELSYNCTIMEDOUT: HRESULT = 0x88980413u32 as HRESULT;
+pub const UCEERR_CHANNELSYNCABANDONED: HRESULT = 0x88980414u32 as HRESULT;
+pub const UCEERR_UNSUPPORTEDTRANSPORTVERSION: HRESULT = 0x88980415u32 as HRESULT;
+pub const UCEERR_TRANSPORTUNAVAILABLE: HRESULT = 0x88980416u32 as HRESULT;
+pub const UCEERR_FEEDBACK_UNSUPPORTED: HRESULT = 0x88980417u32 as HRESULT;
+pub const UCEERR_COMMANDTRANSPORTDENIED: HRESULT = 0x88980418u32 as HRESULT;
+pub const UCEERR_GRAPHICSSTREAMUNAVAILABLE: HRESULT = 0x88980419u32 as HRESULT;
+pub const UCEERR_GRAPHICSSTREAMALREADYOPEN: HRESULT = 0x88980420u32 as HRESULT;
+pub const UCEERR_TRANSPORTDISCONNECTED: HRESULT = 0x88980421u32 as HRESULT;
+pub const UCEERR_TRANSPORTOVERLOADED: HRESULT = 0x88980422u32 as HRESULT;
+pub const UCEERR_PARTITION_ZOMBIED: HRESULT = 0x88980423u32 as HRESULT;
+pub const MILAVERR_NOCLOCK: HRESULT = 0x88980500u32 as HRESULT;
+pub const MILAVERR_NOMEDIATYPE: HRESULT = 0x88980501u32 as HRESULT;
+pub const MILAVERR_NOVIDEOMIXER: HRESULT = 0x88980502u32 as HRESULT;
+pub const MILAVERR_NOVIDEOPRESENTER: HRESULT = 0x88980503u32 as HRESULT;
+pub const MILAVERR_NOREADYFRAMES: HRESULT = 0x88980504u32 as HRESULT;
+pub const MILAVERR_MODULENOTLOADED: HRESULT = 0x88980505u32 as HRESULT;
+pub const MILAVERR_WMPFACTORYNOTREGISTERED: HRESULT = 0x88980506u32 as HRESULT;
+pub const MILAVERR_INVALIDWMPVERSION: HRESULT = 0x88980507u32 as HRESULT;
+pub const MILAVERR_INSUFFICIENTVIDEORESOURCES: HRESULT = 0x88980508u32 as HRESULT;
+pub const MILAVERR_VIDEOACCELERATIONNOTAVAILABLE: HRESULT = 0x88980509u32 as HRESULT;
+pub const MILAVERR_REQUESTEDTEXTURETOOBIG: HRESULT = 0x8898050Au32 as HRESULT;
+pub const MILAVERR_SEEKFAILED: HRESULT = 0x8898050Bu32 as HRESULT;
+pub const MILAVERR_UNEXPECTEDWMPFAILURE: HRESULT = 0x8898050Cu32 as HRESULT;
+pub const MILAVERR_MEDIAPLAYERCLOSED: HRESULT = 0x8898050Du32 as HRESULT;
+pub const MILAVERR_UNKNOWNHARDWAREERROR: HRESULT = 0x8898050Eu32 as HRESULT;
+pub const MILEFFECTSERR_UNKNOWNPROPERTY: HRESULT = 0x8898060Eu32 as HRESULT;
+pub const MILEFFECTSERR_EFFECTNOTPARTOFGROUP: HRESULT = 0x8898060Fu32 as HRESULT;
+pub const MILEFFECTSERR_NOINPUTSOURCEATTACHED: HRESULT = 0x88980610u32 as HRESULT;
+pub const MILEFFECTSERR_CONNECTORNOTCONNECTED: HRESULT = 0x88980611u32 as HRESULT;
+pub const MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT: HRESULT = 0x88980612u32 as HRESULT;
+pub const MILEFFECTSERR_RESERVED: HRESULT = 0x88980613u32 as HRESULT;
+pub const MILEFFECTSERR_CYCLEDETECTED: HRESULT = 0x88980614u32 as HRESULT;
+pub const MILEFFECTSERR_EFFECTINMORETHANONEGRAPH: HRESULT = 0x88980615u32 as HRESULT;
+pub const MILEFFECTSERR_EFFECTALREADYINAGRAPH: HRESULT = 0x88980616u32 as HRESULT;
+pub const MILEFFECTSERR_EFFECTHASNOCHILDREN: HRESULT = 0x88980617u32 as HRESULT;
+pub const MILEFFECTSERR_ALREADYATTACHEDTOLISTENER: HRESULT = 0x88980618u32 as HRESULT;
+pub const MILEFFECTSERR_NOTAFFINETRANSFORM: HRESULT = 0x88980619u32 as HRESULT;
+pub const MILEFFECTSERR_EMPTYBOUNDS: HRESULT = 0x8898061Au32 as HRESULT;
+pub const MILEFFECTSERR_OUTPUTSIZETOOLARGE: HRESULT = 0x8898061Bu32 as HRESULT;
+pub const DWMERR_STATE_TRANSITION_FAILED: HRESULT = 0x88980700u32 as HRESULT;
+pub const DWMERR_THEME_FAILED: HRESULT = 0x88980701u32 as HRESULT;
+pub const DWMERR_CATASTROPHIC_FAILURE: HRESULT = 0x88980702u32 as HRESULT;
+pub const DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED: HRESULT = 0x88980800u32 as HRESULT;
+pub const DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED: HRESULT = 0x88980801u32 as HRESULT;
+pub const DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED: HRESULT = 0x88980802u32 as HRESULT;
+pub const ONL_E_INVALID_AUTHENTICATION_TARGET: HRESULT = 0x80860001u32 as HRESULT;
+pub const ONL_E_ACCESS_DENIED_BY_TOU: HRESULT = 0x80860002u32 as HRESULT;
+pub const ONL_E_INVALID_APPLICATION: HRESULT = 0x80860003u32 as HRESULT;
+pub const ONL_E_PASSWORD_UPDATE_REQUIRED: HRESULT = 0x80860004u32 as HRESULT;
+pub const ONL_E_ACCOUNT_UPDATE_REQUIRED: HRESULT = 0x80860005u32 as HRESULT;
+pub const ONL_E_FORCESIGNIN: HRESULT = 0x80860006u32 as HRESULT;
+pub const ONL_E_ACCOUNT_LOCKED: HRESULT = 0x80860007u32 as HRESULT;
+pub const ONL_E_PARENTAL_CONSENT_REQUIRED: HRESULT = 0x80860008u32 as HRESULT;
+pub const ONL_E_EMAIL_VERIFICATION_REQUIRED: HRESULT = 0x80860009u32 as HRESULT;
+pub const ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE: HRESULT = 0x8086000Au32 as HRESULT;
+pub const ONL_E_ACCOUNT_SUSPENDED_ABUSE: HRESULT = 0x8086000Bu32 as HRESULT;
+pub const ONL_E_ACTION_REQUIRED: HRESULT = 0x8086000Cu32 as HRESULT;
+pub const ONL_CONNECTION_COUNT_LIMIT: HRESULT = 0x8086000Du32 as HRESULT;
+pub const ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT: HRESULT = 0x8086000Eu32 as HRESULT;
+pub const ONL_E_USER_AUTHENTICATION_REQUIRED: HRESULT = 0x8086000Fu32 as HRESULT;
+pub const ONL_E_REQUEST_THROTTLED: HRESULT = 0x80860010u32 as HRESULT;
+pub const FA_E_MAX_PERSISTED_ITEMS_REACHED: HRESULT = 0x80270220u32 as HRESULT;
+pub const FA_E_HOMEGROUP_NOT_AVAILABLE: HRESULT = 0x80270222u32 as HRESULT;
+pub const E_MONITOR_RESOLUTION_TOO_LOW: HRESULT = 0x80270250u32 as HRESULT;
+pub const E_ELEVATED_ACTIVATION_NOT_SUPPORTED: HRESULT = 0x80270251u32 as HRESULT;
+pub const E_UAC_DISABLED: HRESULT = 0x80270252u32 as HRESULT;
+pub const E_FULL_ADMIN_NOT_SUPPORTED: HRESULT = 0x80270253u32 as HRESULT;
+pub const E_APPLICATION_NOT_REGISTERED: HRESULT = 0x80270254u32 as HRESULT;
+pub const E_MULTIPLE_EXTENSIONS_FOR_APPLICATION: HRESULT = 0x80270255u32 as HRESULT;
+pub const E_MULTIPLE_PACKAGES_FOR_FAMILY: HRESULT = 0x80270256u32 as HRESULT;
+pub const E_APPLICATION_MANAGER_NOT_RUNNING: HRESULT = 0x80270257u32 as HRESULT;
+pub const S_STORE_LAUNCHED_FOR_REMEDIATION: HRESULT = 0x00270258;
+pub const S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG: HRESULT = 0x00270259;
+pub const E_APPLICATION_ACTIVATION_TIMED_OUT: HRESULT = 0x8027025Au32 as HRESULT;
+pub const E_APPLICATION_ACTIVATION_EXEC_FAILURE: HRESULT = 0x8027025Bu32 as HRESULT;
+pub const E_APPLICATION_TEMPORARY_LICENSE_ERROR: HRESULT = 0x8027025Cu32 as HRESULT;
+pub const E_APPLICATION_TRIAL_LICENSE_EXPIRED: HRESULT = 0x8027025Du32 as HRESULT;
+pub const E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED: HRESULT = 0x80270260u32 as HRESULT;
+pub const E_SKYDRIVE_ROOT_TARGET_OVERLAP: HRESULT = 0x80270261u32 as HRESULT;
+pub const E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX: HRESULT = 0x80270262u32 as HRESULT;
+pub const E_SKYDRIVE_FILE_NOT_UPLOADED: HRESULT = 0x80270263u32 as HRESULT;
+pub const E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL: HRESULT = 0x80270264u32 as HRESULT;
+pub const E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED: HRESULT = 0x80270265u32 as HRESULT;
+pub const E_SYNCENGINE_FILE_SIZE_OVER_LIMIT: HRESULT = 0x8802B001u32 as HRESULT;
+pub const E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA: HRESULT = 0x8802B002u32 as HRESULT;
+pub const E_SYNCENGINE_UNSUPPORTED_FILE_NAME: HRESULT = 0x8802B003u32 as HRESULT;
+pub const E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED: HRESULT = 0x8802B004u32 as HRESULT;
+pub const E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR: HRESULT = 0x8802B005u32 as HRESULT;
+pub const E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE: HRESULT = 0x8802B006u32 as HRESULT;
+pub const E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN: HRESULT = 0x8802C002u32 as HRESULT;
+pub const E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED: HRESULT = 0x8802C003u32 as HRESULT;
+pub const E_SYNCENGINE_UNKNOWN_SERVICE_ERROR: HRESULT = 0x8802C004u32 as HRESULT;
+pub const E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE: HRESULT = 0x8802C005u32 as HRESULT;
+pub const E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE: HRESULT = 0x8802C006u32 as HRESULT;
+pub const E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR: HRESULT = 0x8802C007u32 as HRESULT;
+pub const E_SYNCENGINE_FOLDER_INACCESSIBLE: HRESULT = 0x8802D001u32 as HRESULT;
+pub const E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME: HRESULT = 0x8802D002u32 as HRESULT;
+pub const E_SYNCENGINE_UNSUPPORTED_MARKET: HRESULT = 0x8802D003u32 as HRESULT;
+pub const E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED: HRESULT = 0x8802D004u32 as HRESULT;
+pub const E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED: HRESULT = 0x8802D005u32 as HRESULT;
+pub const E_SYNCENGINE_CLIENT_UPDATE_NEEDED: HRESULT = 0x8802D006u32 as HRESULT;
+pub const E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED: HRESULT = 0x8802D007u32 as HRESULT;
+pub const E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED: HRESULT = 0x8802D008u32 as HRESULT;
+pub const E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT: HRESULT = 0x8802D009u32 as HRESULT;
+pub const E_SYNCENGINE_STORAGE_SERVICE_BLOCKED: HRESULT = 0x8802D00Au32 as HRESULT;
+pub const E_SYNCENGINE_FOLDER_IN_REDIRECTION: HRESULT = 0x8802D00Bu32 as HRESULT;
+pub const EAS_E_POLICY_NOT_MANAGED_BY_OS: HRESULT = 0x80550001u32 as HRESULT;
+pub const EAS_E_POLICY_COMPLIANT_WITH_ACTIONS: HRESULT = 0x80550002u32 as HRESULT;
+pub const EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE: HRESULT = 0x80550003u32 as HRESULT;
+pub const EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD: HRESULT = 0x80550004u32 as HRESULT;
+pub const EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE: HRESULT = 0x80550005u32 as HRESULT;
+pub const EAS_E_USER_CANNOT_CHANGE_PASSWORD: HRESULT = 0x80550006u32 as HRESULT;
+pub const EAS_E_ADMINS_HAVE_BLANK_PASSWORD: HRESULT = 0x80550007u32 as HRESULT;
+pub const EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD: HRESULT = 0x80550008u32 as HRESULT;
+pub const EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD: HRESULT = 0x80550009u32 as HRESULT;
+pub const EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS: HRESULT = 0x8055000Au32 as HRESULT;
+pub const EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD: HRESULT = 0x8055000Bu32 as HRESULT;
+pub const EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER: HRESULT = 0x8055000Cu32 as HRESULT;
+pub const EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD: HRESULT = 0x8055000Du32 as HRESULT;
+pub const WEB_E_UNSUPPORTED_FORMAT: HRESULT = 0x83750001u32 as HRESULT;
+pub const WEB_E_INVALID_XML: HRESULT = 0x83750002u32 as HRESULT;
+pub const WEB_E_MISSING_REQUIRED_ELEMENT: HRESULT = 0x83750003u32 as HRESULT;
+pub const WEB_E_MISSING_REQUIRED_ATTRIBUTE: HRESULT = 0x83750004u32 as HRESULT;
+pub const WEB_E_UNEXPECTED_CONTENT: HRESULT = 0x83750005u32 as HRESULT;
+pub const WEB_E_RESOURCE_TOO_LARGE: HRESULT = 0x83750006u32 as HRESULT;
+pub const WEB_E_INVALID_JSON_STRING: HRESULT = 0x83750007u32 as HRESULT;
+pub const WEB_E_INVALID_JSON_NUMBER: HRESULT = 0x83750008u32 as HRESULT;
+pub const WEB_E_JSON_VALUE_NOT_FOUND: HRESULT = 0x83750009u32 as HRESULT;
+pub const HTTP_E_STATUS_UNEXPECTED: HRESULT = 0x80190001u32 as HRESULT;
+pub const HTTP_E_STATUS_UNEXPECTED_REDIRECTION: HRESULT = 0x80190003u32 as HRESULT;
+pub const HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR: HRESULT = 0x80190004u32 as HRESULT;
+pub const HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR: HRESULT = 0x80190005u32 as HRESULT;
+pub const HTTP_E_STATUS_AMBIGUOUS: HRESULT = 0x8019012Cu32 as HRESULT;
+pub const HTTP_E_STATUS_MOVED: HRESULT = 0x8019012Du32 as HRESULT;
+pub const HTTP_E_STATUS_REDIRECT: HRESULT = 0x8019012Eu32 as HRESULT;
+pub const HTTP_E_STATUS_REDIRECT_METHOD: HRESULT = 0x8019012Fu32 as HRESULT;
+pub const HTTP_E_STATUS_NOT_MODIFIED: HRESULT = 0x80190130u32 as HRESULT;
+pub const HTTP_E_STATUS_USE_PROXY: HRESULT = 0x80190131u32 as HRESULT;
+pub const HTTP_E_STATUS_REDIRECT_KEEP_VERB: HRESULT = 0x80190133u32 as HRESULT;
+pub const HTTP_E_STATUS_BAD_REQUEST: HRESULT = 0x80190190u32 as HRESULT;
+pub const HTTP_E_STATUS_DENIED: HRESULT = 0x80190191u32 as HRESULT;
+pub const HTTP_E_STATUS_PAYMENT_REQ: HRESULT = 0x80190192u32 as HRESULT;
+pub const HTTP_E_STATUS_FORBIDDEN: HRESULT = 0x80190193u32 as HRESULT;
+pub const HTTP_E_STATUS_NOT_FOUND: HRESULT = 0x80190194u32 as HRESULT;
+pub const HTTP_E_STATUS_BAD_METHOD: HRESULT = 0x80190195u32 as HRESULT;
+pub const HTTP_E_STATUS_NONE_ACCEPTABLE: HRESULT = 0x80190196u32 as HRESULT;
+pub const HTTP_E_STATUS_PROXY_AUTH_REQ: HRESULT = 0x80190197u32 as HRESULT;
+pub const HTTP_E_STATUS_REQUEST_TIMEOUT: HRESULT = 0x80190198u32 as HRESULT;
+pub const HTTP_E_STATUS_CONFLICT: HRESULT = 0x80190199u32 as HRESULT;
+pub const HTTP_E_STATUS_GONE: HRESULT = 0x8019019Au32 as HRESULT;
+pub const HTTP_E_STATUS_LENGTH_REQUIRED: HRESULT = 0x8019019Bu32 as HRESULT;
+pub const HTTP_E_STATUS_PRECOND_FAILED: HRESULT = 0x8019019Cu32 as HRESULT;
+pub const HTTP_E_STATUS_REQUEST_TOO_LARGE: HRESULT = 0x8019019Du32 as HRESULT;
+pub const HTTP_E_STATUS_URI_TOO_LONG: HRESULT = 0x8019019Eu32 as HRESULT;
+pub const HTTP_E_STATUS_UNSUPPORTED_MEDIA: HRESULT = 0x8019019Fu32 as HRESULT;
+pub const HTTP_E_STATUS_RANGE_NOT_SATISFIABLE: HRESULT = 0x801901A0u32 as HRESULT;
+pub const HTTP_E_STATUS_EXPECTATION_FAILED: HRESULT = 0x801901A1u32 as HRESULT;
+pub const HTTP_E_STATUS_SERVER_ERROR: HRESULT = 0x801901F4u32 as HRESULT;
+pub const HTTP_E_STATUS_NOT_SUPPORTED: HRESULT = 0x801901F5u32 as HRESULT;
+pub const HTTP_E_STATUS_BAD_GATEWAY: HRESULT = 0x801901F6u32 as HRESULT;
+pub const HTTP_E_STATUS_SERVICE_UNAVAIL: HRESULT = 0x801901F7u32 as HRESULT;
+pub const HTTP_E_STATUS_GATEWAY_TIMEOUT: HRESULT = 0x801901F8u32 as HRESULT;
+pub const HTTP_E_STATUS_VERSION_NOT_SUP: HRESULT = 0x801901F9u32 as HRESULT;
+pub const E_INVALID_PROTOCOL_OPERATION: HRESULT = 0x83760001u32 as HRESULT;
+pub const E_INVALID_PROTOCOL_FORMAT: HRESULT = 0x83760002u32 as HRESULT;
+pub const E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED: HRESULT = 0x83760003u32 as HRESULT;
+pub const E_SUBPROTOCOL_NOT_SUPPORTED: HRESULT = 0x83760004u32 as HRESULT;
+pub const E_PROTOCOL_VERSION_NOT_SUPPORTED: HRESULT = 0x83760005u32 as HRESULT;
+pub const INPUT_E_OUT_OF_ORDER: HRESULT = 0x80400000u32 as HRESULT;
+pub const INPUT_E_REENTRANCY: HRESULT = 0x80400001u32 as HRESULT;
+pub const INPUT_E_MULTIMODAL: HRESULT = 0x80400002u32 as HRESULT;
+pub const INPUT_E_PACKET: HRESULT = 0x80400003u32 as HRESULT;
+pub const INPUT_E_FRAME: HRESULT = 0x80400004u32 as HRESULT;
+pub const INPUT_E_HISTORY: HRESULT = 0x80400005u32 as HRESULT;
+pub const INPUT_E_DEVICE_INFO: HRESULT = 0x80400006u32 as HRESULT;
+pub const INPUT_E_TRANSFORM: HRESULT = 0x80400007u32 as HRESULT;
+pub const INPUT_E_DEVICE_PROPERTY: HRESULT = 0x80400008u32 as HRESULT;
+pub const INET_E_INVALID_URL: HRESULT = 0x800C0002u32 as HRESULT;
+pub const INET_E_NO_SESSION: HRESULT = 0x800C0003u32 as HRESULT;
+pub const INET_E_CANNOT_CONNECT: HRESULT = 0x800C0004u32 as HRESULT;
+pub const INET_E_RESOURCE_NOT_FOUND: HRESULT = 0x800C0005u32 as HRESULT;
+pub const INET_E_OBJECT_NOT_FOUND: HRESULT = 0x800C0006u32 as HRESULT;
+pub const INET_E_DATA_NOT_AVAILABLE: HRESULT = 0x800C0007u32 as HRESULT;
+pub const INET_E_DOWNLOAD_FAILURE: HRESULT = 0x800C0008u32 as HRESULT;
+pub const INET_E_AUTHENTICATION_REQUIRED: HRESULT = 0x800C0009u32 as HRESULT;
+pub const INET_E_NO_VALID_MEDIA: HRESULT = 0x800C000Au32 as HRESULT;
+pub const INET_E_CONNECTION_TIMEOUT: HRESULT = 0x800C000Bu32 as HRESULT;
+pub const INET_E_INVALID_REQUEST: HRESULT = 0x800C000Cu32 as HRESULT;
+pub const INET_E_UNKNOWN_PROTOCOL: HRESULT = 0x800C000Du32 as HRESULT;
+pub const INET_E_SECURITY_PROBLEM: HRESULT = 0x800C000Eu32 as HRESULT;
+pub const INET_E_CANNOT_LOAD_DATA: HRESULT = 0x800C000Fu32 as HRESULT;
+pub const INET_E_CANNOT_INSTANTIATE_OBJECT: HRESULT = 0x800C0010u32 as HRESULT;
+pub const INET_E_INVALID_CERTIFICATE: HRESULT = 0x800C0019u32 as HRESULT;
+pub const INET_E_REDIRECT_FAILED: HRESULT = 0x800C0014u32 as HRESULT;
+pub const INET_E_REDIRECT_TO_DIR: HRESULT = 0x800C0015u32 as HRESULT;
+pub const ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN: HRESULT = 0x80B00001u32 as HRESULT;
+pub const ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN: HRESULT = 0x80B00002u32 as HRESULT;
+pub const ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN: HRESULT = 0x80B00003u32 as HRESULT;
+pub const ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN: HRESULT = 0x80B00004u32 as HRESULT;
+pub const ERROR_IO_PREEMPTED: HRESULT = 0x89010001u32 as HRESULT;
+pub const JSCRIPT_E_CANTEXECUTE: HRESULT = 0x89020001u32 as HRESULT;
+pub const WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES: HRESULT = 0x88010001u32 as HRESULT;
+pub const WEP_E_FIXED_DATA_NOT_SUPPORTED: HRESULT = 0x88010002u32 as HRESULT;
+pub const WEP_E_HARDWARE_NOT_COMPLIANT: HRESULT = 0x88010003u32 as HRESULT;
+pub const WEP_E_LOCK_NOT_CONFIGURED: HRESULT = 0x88010004u32 as HRESULT;
+pub const WEP_E_PROTECTION_SUSPENDED: HRESULT = 0x88010005u32 as HRESULT;
+pub const WEP_E_NO_LICENSE: HRESULT = 0x88010006u32 as HRESULT;
+pub const WEP_E_OS_NOT_PROTECTED: HRESULT = 0x88010007u32 as HRESULT;
+pub const WEP_E_UNEXPECTED_FAIL: HRESULT = 0x88010008u32 as HRESULT;
+pub const WEP_E_BUFFER_TOO_LARGE: HRESULT = 0x88010009u32 as HRESULT;
+pub const ERROR_SVHDX_ERROR_STORED: HRESULT = 0xC05C0000u32 as HRESULT;
+pub const ERROR_SVHDX_ERROR_NOT_AVAILABLE: HRESULT = 0xC05CFF00u32 as HRESULT;
+pub const ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE: HRESULT = 0xC05CFF01u32 as HRESULT;
+pub const ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED: HRESULT = 0xC05CFF02u32 as HRESULT;
+pub const ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED: HRESULT = 0xC05CFF03u32 as HRESULT;
+pub const ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED: HRESULT = 0xC05CFF04u32 as HRESULT;
+pub const ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED: HRESULT = 0xC05CFF05u32 as HRESULT;
+pub const ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED: HRESULT = 0xC05CFF06u32 as HRESULT;
+pub const ERROR_SVHDX_RESERVATION_CONFLICT: HRESULT = 0xC05CFF07u32 as HRESULT;
+pub const ERROR_SVHDX_WRONG_FILE_TYPE: HRESULT = 0xC05CFF08u32 as HRESULT;
+pub const ERROR_SVHDX_VERSION_MISMATCH: HRESULT = 0xC05CFF09u32 as HRESULT;
+pub const ERROR_VHD_SHARED: HRESULT = 0xC05CFF0Au32 as HRESULT;
+pub const WININET_E_OUT_OF_HANDLES: HRESULT = 0x80072EE1u32 as HRESULT;
+pub const WININET_E_TIMEOUT: HRESULT = 0x80072EE2u32 as HRESULT;
+pub const WININET_E_EXTENDED_ERROR: HRESULT = 0x80072EE3u32 as HRESULT;
+pub const WININET_E_INTERNAL_ERROR: HRESULT = 0x80072EE4u32 as HRESULT;
+pub const WININET_E_INVALID_URL: HRESULT = 0x80072EE5u32 as HRESULT;
+pub const WININET_E_UNRECOGNIZED_SCHEME: HRESULT = 0x80072EE6u32 as HRESULT;
+pub const WININET_E_NAME_NOT_RESOLVED: HRESULT = 0x80072EE7u32 as HRESULT;
+pub const WININET_E_PROTOCOL_NOT_FOUND: HRESULT = 0x80072EE8u32 as HRESULT;
+pub const WININET_E_INVALID_OPTION: HRESULT = 0x80072EE9u32 as HRESULT;
+pub const WININET_E_BAD_OPTION_LENGTH: HRESULT = 0x80072EEAu32 as HRESULT;
+pub const WININET_E_OPTION_NOT_SETTABLE: HRESULT = 0x80072EEBu32 as HRESULT;
+pub const WININET_E_SHUTDOWN: HRESULT = 0x80072EECu32 as HRESULT;
+pub const WININET_E_INCORRECT_USER_NAME: HRESULT = 0x80072EEDu32 as HRESULT;
+pub const WININET_E_INCORRECT_PASSWORD: HRESULT = 0x80072EEEu32 as HRESULT;
+pub const WININET_E_LOGIN_FAILURE: HRESULT = 0x80072EEFu32 as HRESULT;
+pub const WININET_E_INVALID_OPERATION: HRESULT = 0x80072EF0u32 as HRESULT;
+pub const WININET_E_OPERATION_CANCELLED: HRESULT = 0x80072EF1u32 as HRESULT;
+pub const WININET_E_INCORRECT_HANDLE_TYPE: HRESULT = 0x80072EF2u32 as HRESULT;
+pub const WININET_E_INCORRECT_HANDLE_STATE: HRESULT = 0x80072EF3u32 as HRESULT;
+pub const WININET_E_NOT_PROXY_REQUEST: HRESULT = 0x80072EF4u32 as HRESULT;
+pub const WININET_E_REGISTRY_VALUE_NOT_FOUND: HRESULT = 0x80072EF5u32 as HRESULT;
+pub const WININET_E_BAD_REGISTRY_PARAMETER: HRESULT = 0x80072EF6u32 as HRESULT;
+pub const WININET_E_NO_DIRECT_ACCESS: HRESULT = 0x80072EF7u32 as HRESULT;
+pub const WININET_E_NO_CONTEXT: HRESULT = 0x80072EF8u32 as HRESULT;
+pub const WININET_E_NO_CALLBACK: HRESULT = 0x80072EF9u32 as HRESULT;
+pub const WININET_E_REQUEST_PENDING: HRESULT = 0x80072EFAu32 as HRESULT;
+pub const WININET_E_INCORRECT_FORMAT: HRESULT = 0x80072EFBu32 as HRESULT;
+pub const WININET_E_ITEM_NOT_FOUND: HRESULT = 0x80072EFCu32 as HRESULT;
+pub const WININET_E_CANNOT_CONNECT: HRESULT = 0x80072EFDu32 as HRESULT;
+pub const WININET_E_CONNECTION_ABORTED: HRESULT = 0x80072EFEu32 as HRESULT;
+pub const WININET_E_CONNECTION_RESET: HRESULT = 0x80072EFFu32 as HRESULT;
+pub const WININET_E_FORCE_RETRY: HRESULT = 0x80072F00u32 as HRESULT;
+pub const WININET_E_INVALID_PROXY_REQUEST: HRESULT = 0x80072F01u32 as HRESULT;
+pub const WININET_E_NEED_UI: HRESULT = 0x80072F02u32 as HRESULT;
+pub const WININET_E_HANDLE_EXISTS: HRESULT = 0x80072F04u32 as HRESULT;
+pub const WININET_E_SEC_CERT_DATE_INVALID: HRESULT = 0x80072F05u32 as HRESULT;
+pub const WININET_E_SEC_CERT_CN_INVALID: HRESULT = 0x80072F06u32 as HRESULT;
+pub const WININET_E_HTTP_TO_HTTPS_ON_REDIR: HRESULT = 0x80072F07u32 as HRESULT;
+pub const WININET_E_HTTPS_TO_HTTP_ON_REDIR: HRESULT = 0x80072F08u32 as HRESULT;
+pub const WININET_E_MIXED_SECURITY: HRESULT = 0x80072F09u32 as HRESULT;
+pub const WININET_E_CHG_POST_IS_NON_SECURE: HRESULT = 0x80072F0Au32 as HRESULT;
+pub const WININET_E_POST_IS_NON_SECURE: HRESULT = 0x80072F0Bu32 as HRESULT;
+pub const WININET_E_CLIENT_AUTH_CERT_NEEDED: HRESULT = 0x80072F0Cu32 as HRESULT;
+pub const WININET_E_INVALID_CA: HRESULT = 0x80072F0Du32 as HRESULT;
+pub const WININET_E_CLIENT_AUTH_NOT_SETUP: HRESULT = 0x80072F0Eu32 as HRESULT;
+pub const WININET_E_ASYNC_THREAD_FAILED: HRESULT = 0x80072F0Fu32 as HRESULT;
+pub const WININET_E_REDIRECT_SCHEME_CHANGE: HRESULT = 0x80072F10u32 as HRESULT;
+pub const WININET_E_DIALOG_PENDING: HRESULT = 0x80072F11u32 as HRESULT;
+pub const WININET_E_RETRY_DIALOG: HRESULT = 0x80072F12u32 as HRESULT;
+pub const WININET_E_NO_NEW_CONTAINERS: HRESULT = 0x80072F13u32 as HRESULT;
+pub const WININET_E_HTTPS_HTTP_SUBMIT_REDIR: HRESULT = 0x80072F14u32 as HRESULT;
+pub const WININET_E_SEC_CERT_ERRORS: HRESULT = 0x80072F17u32 as HRESULT;
+pub const WININET_E_SEC_CERT_REV_FAILED: HRESULT = 0x80072F19u32 as HRESULT;
+pub const WININET_E_HEADER_NOT_FOUND: HRESULT = 0x80072F76u32 as HRESULT;
+pub const WININET_E_DOWNLEVEL_SERVER: HRESULT = 0x80072F77u32 as HRESULT;
+pub const WININET_E_INVALID_SERVER_RESPONSE: HRESULT = 0x80072F78u32 as HRESULT;
+pub const WININET_E_INVALID_HEADER: HRESULT = 0x80072F79u32 as HRESULT;
+pub const WININET_E_INVALID_QUERY_REQUEST: HRESULT = 0x80072F7Au32 as HRESULT;
+pub const WININET_E_HEADER_ALREADY_EXISTS: HRESULT = 0x80072F7Bu32 as HRESULT;
+pub const WININET_E_REDIRECT_FAILED: HRESULT = 0x80072F7Cu32 as HRESULT;
+pub const WININET_E_SECURITY_CHANNEL_ERROR: HRESULT = 0x80072F7Du32 as HRESULT;
+pub const WININET_E_UNABLE_TO_CACHE_FILE: HRESULT = 0x80072F7Eu32 as HRESULT;
+pub const WININET_E_TCPIP_NOT_INSTALLED: HRESULT = 0x80072F7Fu32 as HRESULT;
+pub const WININET_E_DISCONNECTED: HRESULT = 0x80072F83u32 as HRESULT;
+pub const WININET_E_SERVER_UNREACHABLE: HRESULT = 0x80072F84u32 as HRESULT;
+pub const WININET_E_PROXY_SERVER_UNREACHABLE: HRESULT = 0x80072F85u32 as HRESULT;
+pub const WININET_E_BAD_AUTO_PROXY_SCRIPT: HRESULT = 0x80072F86u32 as HRESULT;
+pub const WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT: HRESULT = 0x80072F87u32 as HRESULT;
+pub const WININET_E_SEC_INVALID_CERT: HRESULT = 0x80072F89u32 as HRESULT;
+pub const WININET_E_SEC_CERT_REVOKED: HRESULT = 0x80072F8Au32 as HRESULT;
+pub const WININET_E_FAILED_DUETOSECURITYCHECK: HRESULT = 0x80072F8Bu32 as HRESULT;
+pub const WININET_E_NOT_INITIALIZED: HRESULT = 0x80072F8Cu32 as HRESULT;
+pub const WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY: HRESULT = 0x80072F8Eu32 as HRESULT;
+pub const WININET_E_DECODING_FAILED: HRESULT = 0x80072F8Fu32 as HRESULT;
+pub const WININET_E_NOT_REDIRECTED: HRESULT = 0x80072F80u32 as HRESULT;
+pub const WININET_E_COOKIE_NEEDS_CONFIRMATION: HRESULT = 0x80072F81u32 as HRESULT;
+pub const WININET_E_COOKIE_DECLINED: HRESULT = 0x80072F82u32 as HRESULT;
+pub const WININET_E_REDIRECT_NEEDS_CONFIRMATION: HRESULT = 0x80072F88u32 as HRESULT;
diff --git a/third_party/rust/winapi-0.2.8/src/winevt.rs b/third_party/rust/winapi-0.2.8/src/winevt.rs
new file mode 100644
index 0000000000..3f2d6a03a7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winevt.rs
@@ -0,0 +1,40 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Windows Events API
+pub type EVT_HANDLE = ::HANDLE;
+pub type PEVT_HANDLE = *mut ::HANDLE;
+ENUM!{enum EVT_VARIANT_TYPE {
+ EvtVarTypeNull = 0,
+ EvtVarTypeString = 1,
+ EvtVarTypeAnsiString = 2,
+ EvtVarTypeSByte = 3,
+ EvtVarTypeByte = 4,
+ EvtVarTypeInt16 = 5,
+ EvtVarTypeUInt16 = 6,
+ EvtVarTypeInt32 = 7,
+ EvtVarTypeUInt32 = 8,
+ EvtVarTypeInt64 = 9,
+ EvtVarTypeUInt64 = 10,
+ EvtVarTypeSingle = 11,
+ EvtVarTypeDouble = 12,
+ EvtVarTypeBoolean = 13,
+ EvtVarTypeBinary = 14,
+ EvtVarTypeGuid = 15,
+ EvtVarTypeSizeT = 16,
+ EvtVarTypeFileTime = 17,
+ EvtVarTypeSysTime = 18,
+ EvtVarTypeSid = 19,
+ EvtVarTypeHexInt32 = 20,
+ EvtVarTypeHexInt64 = 21,
+ EvtVarTypeEvtHandle = 32,
+ EvtVarTypeEvtXml = 35,
+}}
+pub const EVT_VARIANT_TYPE_MASK: ::DWORD = 0x7f;
+pub const EVT_VARIANT_TYPE_ARRAY: ::DWORD = 128;
+STRUCT!{struct EVT_VARIANT {
+ u: u64,
+ Count: ::DWORD,
+ Type: ::DWORD,
+}}
+// TODO - All the UNION! for each variant
+// TODO - The rest of this header
diff --git a/third_party/rust/winapi-0.2.8/src/wingdi.rs b/third_party/rust/winapi-0.2.8/src/wingdi.rs
new file mode 100644
index 0000000000..edc5850ed5
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/wingdi.rs
@@ -0,0 +1,1238 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! GDI procedure declarations, constant definitions and macros
+pub const DISPLAY_DEVICE_ATTACHED_TO_DESKTOP: ::DWORD = 0x00000001;
+pub const DISPLAY_DEVICE_MULTI_DRIVER: ::DWORD = 0x00000002;
+pub const DISPLAY_DEVICE_PRIMARY_DEVICE: ::DWORD = 0x00000004;
+pub const DISPLAY_DEVICE_MIRRORING_DRIVER: ::DWORD = 0x00000008;
+pub const DISPLAY_DEVICE_VGA_COMPATIBLE: ::DWORD = 0x00000010;
+pub const DISPLAY_DEVICE_REMOVABLE: ::DWORD = 0x00000020;
+pub const DISPLAY_DEVICE_ACC_DRIVER: ::DWORD = 0x00000040;
+pub const DISPLAY_DEVICE_MODESPRUNED: ::DWORD = 0x08000000;
+pub const DISPLAY_DEVICE_REMOTE: ::DWORD = 0x04000000;
+pub const DISPLAY_DEVICE_DISCONNECT: ::DWORD = 0x02000000;
+pub const DISPLAY_DEVICE_TS_COMPATIBLE: ::DWORD = 0x00200000;
+pub const DISPLAY_DEVICE_UNSAFE_MODES_ON: ::DWORD = 0x00080000;
+pub const DISPLAY_DEVICE_ACTIVE: ::DWORD = 0x00000001;
+pub const DISPLAY_DEVICE_ATTACHED: ::DWORD = 0x00000002;
+pub const DM_ORIENTATION: ::DWORD = 0x00000001;
+pub const DM_PAPERSIZE: ::DWORD = 0x00000002;
+pub const DM_PAPERLENGTH: ::DWORD = 0x00000004;
+pub const DM_PAPERWIDTH: ::DWORD = 0x00000008;
+pub const DM_SCALE: ::DWORD = 0x00000010;
+pub const DM_POSITION: ::DWORD = 0x00000020;
+pub const DM_NUP: ::DWORD = 0x00000040;
+pub const DM_DISPLAYORIENTATION: ::DWORD = 0x00000080;
+pub const DM_COPIES: ::DWORD = 0x00000100;
+pub const DM_DEFAULTSOURCE: ::DWORD = 0x00000200;
+pub const DM_PRINTQUALITY: ::DWORD = 0x00000400;
+pub const DM_COLOR: ::DWORD = 0x00000800;
+pub const DM_DUPLEX: ::DWORD = 0x00001000;
+pub const DM_YRESOLUTION: ::DWORD = 0x00002000;
+pub const DM_TTOPTION: ::DWORD = 0x00004000;
+pub const DM_COLLATE: ::DWORD = 0x00008000;
+pub const DM_FORMNAME: ::DWORD = 0x00010000;
+pub const DM_LOGPIXELS: ::DWORD = 0x00020000;
+pub const DM_BITSPERPEL: ::DWORD = 0x00040000;
+pub const DM_PELSWIDTH: ::DWORD = 0x00080000;
+pub const DM_PELSHEIGHT: ::DWORD = 0x00100000;
+pub const DM_DISPLAYFLAGS: ::DWORD = 0x00200000;
+pub const DM_DISPLAYFREQUENCY: ::DWORD = 0x00400000;
+pub const DM_ICMMETHOD: ::DWORD = 0x00800000;
+pub const DM_ICMINTENT: ::DWORD = 0x01000000;
+pub const DM_MEDIATYPE: ::DWORD = 0x02000000;
+pub const DM_DITHERTYPE: ::DWORD = 0x04000000;
+pub const DM_PANNINGWIDTH: ::DWORD = 0x08000000;
+pub const DM_PANNINGHEIGHT: ::DWORD = 0x10000000;
+pub const DM_DISPLAYFIXEDOUTPUT: ::DWORD = 0x20000000;
+pub const PFD_TYPE_RGBA: ::BYTE = 0;
+pub const PFD_TYPE_COLORINDEX: ::BYTE = 1;
+pub const PFD_MAIN_PLANE: ::BYTE = 0;
+pub const PFD_OVERLAY_PLANE: ::BYTE = 1;
+pub const PFD_UNDERLAY_PLANE: ::BYTE = 0xFF;
+pub const PFD_DOUBLEBUFFER: ::DWORD = 0x00000001;
+pub const PFD_STEREO: ::DWORD = 0x00000002;
+pub const PFD_DRAW_TO_WINDOW: ::DWORD = 0x00000004;
+pub const PFD_DRAW_TO_BITMAP: ::DWORD = 0x00000008;
+pub const PFD_SUPPORT_GDI: ::DWORD = 0x00000010;
+pub const PFD_SUPPORT_OPENGL: ::DWORD = 0x00000020;
+pub const PFD_GENERIC_FORMAT: ::DWORD = 0x00000040;
+pub const PFD_NEED_PALETTE: ::DWORD = 0x00000080;
+pub const PFD_NEED_SYSTEM_PALETTE: ::DWORD = 0x00000100;
+pub const PFD_SWAP_EXCHANGE: ::DWORD = 0x00000200;
+pub const PFD_SWAP_COPY: ::DWORD = 0x00000400;
+pub const PFD_SWAP_LAYER_BUFFERS: ::DWORD = 0x00000800;
+pub const PFD_GENERIC_ACCELERATED: ::DWORD = 0x00001000;
+pub const PFD_SUPPORT_DIRECTDRAW: ::DWORD = 0x00002000;
+pub const PFD_DIRECT3D_ACCELERATED: ::DWORD = 0x00004000;
+pub const PFD_SUPPORT_COMPOSITION: ::DWORD = 0x00008000;
+pub const PFD_DEPTH_DONTCARE: ::DWORD = 0x20000000;
+pub const PFD_DOUBLEBUFFER_DONTCARE: ::DWORD = 0x40000000;
+pub const PFD_STEREO_DONTCARE: ::DWORD = 0x80000000;
+pub const CCHFORMNAME: usize = 32;
+STRUCT!{struct DEVMODEA {
+ dmDeviceName: [::CHAR; ::CCHDEVICENAME],
+ dmSpecVersion: ::WORD,
+ dmDriverVersion: ::WORD,
+ dmSize: ::WORD,
+ dmDriverExtra: ::WORD,
+ dmFields: ::DWORD,
+ union1: [u8; 16],
+ dmColor: ::c_short,
+ dmDuplex: ::c_short,
+ dmYResolution: ::c_short,
+ dmTTOption: ::c_short,
+ dmCollate: ::c_short,
+ dmFormName: [::CHAR; CCHFORMNAME],
+ dmLogPixels: ::WORD,
+ dmBitsPerPel: ::DWORD,
+ dmPelsWidth: ::DWORD,
+ dmPelsHeight: ::DWORD,
+ dmDisplayFlags: ::DWORD,
+ dmDisplayFrequency: ::DWORD,
+ dmICMMethod: ::DWORD,
+ dmICMIntent: ::DWORD,
+ dmMediaType: ::DWORD,
+ dmDitherType: ::DWORD,
+ dmReserved1: ::DWORD,
+ dmReserved2: ::DWORD,
+ dmPanningWidth: ::DWORD,
+ dmPanningHeight: ::DWORD,
+}}
+pub type PDEVMODEA = *mut DEVMODEA;
+pub type NPDEVMODEA = *mut DEVMODEA;
+pub type LPDEVMODEA = *mut DEVMODEA;
+STRUCT!{struct DEVMODEW {
+ dmDeviceName: [::WCHAR; ::CCHDEVICENAME],
+ dmSpecVersion: ::WORD,
+ dmDriverVersion: ::WORD,
+ dmSize: ::WORD,
+ dmDriverExtra: ::WORD,
+ dmFields: ::DWORD,
+ union1: [u8; 16],
+ dmColor: ::c_short,
+ dmDuplex: ::c_short,
+ dmYResolution: ::c_short,
+ dmTTOption: ::c_short,
+ dmCollate: ::c_short,
+ dmFormName: [::WCHAR; CCHFORMNAME],
+ dmLogPixels: ::WORD,
+ dmBitsPerPel: ::DWORD,
+ dmPelsWidth: ::DWORD,
+ dmPelsHeight: ::DWORD,
+ dmDisplayFlags: ::DWORD,
+ dmDisplayFrequency: ::DWORD,
+ dmICMMethod: ::DWORD,
+ dmICMIntent: ::DWORD,
+ dmMediaType: ::DWORD,
+ dmDitherType: ::DWORD,
+ dmReserved1: ::DWORD,
+ dmReserved2: ::DWORD,
+ dmPanningWidth: ::DWORD,
+ dmPanningHeight: ::DWORD,
+}}
+pub type PDEVMODEW = *mut DEVMODEW;
+pub type NPDEVMODEW = *mut DEVMODEW;
+pub type LPDEVMODEW = *mut DEVMODEW;
+STRUCT!{nodebug struct DISPLAY_DEVICEW {
+ cb: ::DWORD,
+ DeviceName: [::WCHAR; 32],
+ DeviceString: [::WCHAR; 128],
+ StateFlags: ::DWORD,
+ DeviceID: [::WCHAR; 128],
+ DeviceKey: [::WCHAR; 128],
+}}
+pub type PDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW;
+pub type LPDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW;
+STRUCT!{nodebug struct DISPLAY_DEVICEA {
+ cb: ::DWORD,
+ DeviceName: [::CHAR; 32],
+ DeviceString: [::CHAR; 128],
+ StateFlags: ::DWORD,
+ DeviceID: [::CHAR; 128],
+ DeviceKey: [::CHAR; 128],
+}}
+pub type PDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA;
+pub type LPDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA;
+STRUCT!{struct PIXELFORMATDESCRIPTOR {
+ nSize: ::WORD,
+ nVersion: ::WORD,
+ dwFlags: ::DWORD,
+ iPixelType: ::BYTE,
+ cColorBits: ::BYTE,
+ cRedBits: ::BYTE,
+ cRedShift: ::BYTE,
+ cGreenBits: ::BYTE,
+ cGreenShift: ::BYTE,
+ cBlueBits: ::BYTE,
+ cBlueShift: ::BYTE,
+ cAlphaBits: ::BYTE,
+ cAlphaShift: ::BYTE,
+ cAccumBits: ::BYTE,
+ cAccumRedBits: ::BYTE,
+ cAccumGreenBits: ::BYTE,
+ cAccumBlueBits: ::BYTE,
+ cAccumAlphaBits: ::BYTE,
+ cDepthBits: ::BYTE,
+ cStencilBits: ::BYTE,
+ cAuxBuffers: ::BYTE,
+ iLayerType: ::BYTE,
+ bReserved: ::BYTE,
+ dwLayerMask: ::DWORD,
+ dwVisibleMask: ::DWORD,
+ dwDamageMask: ::DWORD,
+}}
+pub type PPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR;
+pub type LPPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR;
+pub const R2_BLACK: ::c_int = 1;
+pub const R2_NOTMERGEPEN: ::c_int = 2;
+pub const R2_MASKNOTPEN: ::c_int = 3;
+pub const R2_NOTCOPYPEN: ::c_int = 4;
+pub const R2_MASKPENNOT: ::c_int = 5;
+pub const R2_NOT: ::c_int = 6;
+pub const R2_XORPEN: ::c_int = 7;
+pub const R2_NOTMASKPEN: ::c_int = 8;
+pub const R2_MASKPEN: ::c_int = 9;
+pub const R2_NOTXORPEN: ::c_int = 10;
+pub const R2_NOP: ::c_int = 11;
+pub const R2_MERGENOTPEN: ::c_int = 12;
+pub const R2_COPYPEN: ::c_int = 13;
+pub const R2_MERGEPENNOT: ::c_int = 14;
+pub const R2_MERGEPEN: ::c_int = 15;
+pub const R2_WHITE: ::c_int = 16;
+pub const R2_LAST: ::c_int = 16;
+//83
+pub const SRCCOPY: ::DWORD = 0x00CC0020;
+pub const SRCPAINT: ::DWORD = 0x00EE0086;
+pub const SRCAND: ::DWORD = 0x008800C6;
+pub const SRCINVERT: ::DWORD = 0x00660046;
+pub const SRCERASE: ::DWORD = 0x00440328;
+pub const NOTSRCCOPY: ::DWORD = 0x00330008;
+pub const NOTSRCERASE: ::DWORD = 0x001100A6;
+pub const MERGECOPY: ::DWORD = 0x00C000CA;
+pub const MERGEPAINT: ::DWORD = 0x00BB0226;
+pub const PATCOPY: ::DWORD = 0x00F00021;
+pub const PATPAINT: ::DWORD = 0x00FB0A09;
+pub const PATINVERT: ::DWORD = 0x005A0049;
+pub const DSTINVERT: ::DWORD = 0x00550009;
+pub const BLACKNESS: ::DWORD = 0x00000042;
+pub const WHITENESS: ::DWORD = 0x00FF0062;
+//121
+// fnCombineMode values for CombineRgn
+pub const RGN_AND: ::c_int = 1;
+pub const RGN_OR: ::c_int = 2;
+pub const RGN_XOR: ::c_int = 3;
+pub const RGN_DIFF: ::c_int = 4;
+pub const RGN_COPY: ::c_int = 5;
+pub const RGN_MIN: ::c_int = RGN_AND;
+pub const RGN_MAX: ::c_int = RGN_COPY;
+//572 (Win 7 SDK)
+STRUCT!{struct BITMAP {
+ bmType: ::LONG,
+ bmWidth: ::LONG,
+ bmHeight: ::LONG,
+ bmWidthBytes: ::LONG,
+ bmPlanes: ::WORD,
+ bmBitsPixel: ::WORD,
+ bmBits: ::LPVOID,
+}}
+pub type PBITMAP = *mut BITMAP;
+pub type NPBITMAP = *mut BITMAP;
+pub type LPBITMAP = *mut BITMAP;
+STRUCT!{struct RGBQUAD {
+ rgbBlue: ::BYTE,
+ rgbGreen: ::BYTE,
+ rgbRed: ::BYTE,
+ rgbReserved: ::BYTE,
+}}
+pub type LPRGBQUAD = *mut RGBQUAD;
+pub const CS_ENABLE: ::DWORD = 0x00000001;
+pub const CS_DISABLE: ::DWORD = 0x00000002;
+pub const CS_DELETE_TRANSFORM: ::DWORD = 0x00000003;
+pub const LCS_SIGNATURE: ::DWORD = 0x5053_4F43; // 'PSOC'
+pub const LCS_sRGB: LCSCSTYPE = 0x7352_4742; // 'sRGB'
+pub const LCS_WINDOWS_COLOR_SPACE: LCSCSTYPE = 0x5769_6E20; // 'Win '
+pub type LCSCSTYPE = ::LONG;
+pub const LCS_CALIBRATED_RGB: LCSCSTYPE = 0x00000000;
+pub type LCSGAMUTMATCH = ::LONG;
+pub const LCS_GM_BUSINESS: LCSGAMUTMATCH = 0x00000001;
+pub const LCS_GM_GRAPHICS: LCSGAMUTMATCH = 0x00000002;
+pub const LCS_GM_IMAGES: LCSGAMUTMATCH = 0x00000004;
+pub const LCS_GM_ABS_COLORIMETRIC: LCSGAMUTMATCH = 0x00000008;
+pub const CM_OUT_OF_GAMUT: ::BYTE = 255;
+pub const CM_IN_GAMUT: ::BYTE = 0;
+pub const ICM_ADDPROFILE: ::UINT = 1;
+pub const ICM_DELETEPROFILE: ::UINT = 2;
+pub const ICM_QUERYPROFILE: ::UINT = 3;
+pub const ICM_SETDEFAULTPROFILE: ::UINT = 4;
+pub const ICM_REGISTERICMATCHER: ::UINT = 5;
+pub const ICM_UNREGISTERICMATCHER: ::UINT = 6;
+pub const ICM_QUERYMATCH: ::UINT = 7;
+pub type FXPT16DOT16 = ::c_long;
+pub type LPFXPT16DOT16 = *mut ::c_long;
+pub type FXPT2DOT30 = ::c_long;
+pub type LPFXPT2DOT30 = *mut ::c_long;
+STRUCT!{struct CIEXYZ {
+ ciexyzX: FXPT2DOT30,
+ ciexyzY: FXPT2DOT30,
+ ciexyzZ: FXPT2DOT30,
+}}
+pub type LPCIEXYZ = *mut CIEXYZ;
+STRUCT!{struct CIEXYZTRIPLE {
+ ciexyzRed: CIEXYZ,
+ ciexyzGreen: CIEXYZ,
+ ciexyzBlue: CIEXYZ,
+}}
+pub type LPCIEXYZTRIPLE = *mut CIEXYZTRIPLE;
+//716 (Win 7 SDK)
+STRUCT!{struct BITMAPINFOHEADER {
+ biSize: ::DWORD,
+ biWidth: ::LONG,
+ biHeight: ::LONG,
+ biPlanes: ::WORD,
+ biBitCount: ::WORD,
+ biCompression: ::DWORD,
+ biSizeImage: ::DWORD,
+ biXPelsPerMeter: ::LONG,
+ biYPelsPerMeter: ::LONG,
+ biClrUsed: ::DWORD,
+ biClrImportant: ::DWORD,
+}}
+pub type LPBITMAPINFOHEADER = *mut BITMAPINFOHEADER;
+pub type PBITMAPINFOHEADER = *mut BITMAPINFOHEADER;
+STRUCT!{struct BITMAPV5HEADER {
+ bV5Size: ::DWORD,
+ bV5Width: ::LONG,
+ bV5Height: ::LONG,
+ bV5Planes: ::WORD,
+ bV5BitCount: ::WORD,
+ bV5Compression: ::DWORD,
+ bV5SizeImage: ::DWORD,
+ bV5XPelsPerMeter: ::LONG,
+ bV5YPelsPerMeter: ::LONG,
+ bV5ClrUsed: ::DWORD,
+ bV5ClrImportant: ::DWORD,
+ bV5RedMask: ::DWORD,
+ bV5GreenMask: ::DWORD,
+ bV5BlueMask: ::DWORD,
+ bV5AlphaMask: ::DWORD,
+ bV5CSType: ::LONG, // LONG to match LOGCOLORSPACE
+ bV5Endpoints: CIEXYZTRIPLE,
+ bV5GammaRed: ::DWORD,
+ bV5GammaGreen: ::DWORD,
+ bV5GammaBlue: ::DWORD,
+ bV5Intent: ::LONG, // LONG to match LOGCOLORSPACE
+ bV5ProfileData: ::DWORD,
+ bV5ProfileSize: ::DWORD,
+ bV5Reserved: ::DWORD,
+}}
+pub type LPBITMAPV5HEADER = *mut BITMAPV5HEADER;
+pub type PBITMAPV5HEADER = *mut BITMAPV5HEADER;
+pub const PROFILE_LINKED: ::LONG = 0x4C49_4E4B; // 'LINK'
+pub const PROFILE_EMBEDDED: ::LONG = 0x4D42_4544; // 'MBED'
+pub const BI_RGB: ::DWORD = 0;
+pub const BI_RLE8: ::DWORD = 1;
+pub const BI_RLE4: ::DWORD = 2;
+pub const BI_BITFIELDS: ::DWORD = 3;
+pub const BI_JPEG: ::DWORD = 4;
+pub const BI_PNG: ::DWORD = 5;
+STRUCT!{struct BITMAPINFO {
+ bmiHeader: BITMAPINFOHEADER,
+ bmiColors: [RGBQUAD; 0],
+}}
+pub type LPBITMAPINFO = *mut BITMAPINFO;
+pub type PBITMAPINFO = *mut BITMAPINFO;
+//1438
+pub const LF_FACESIZE: usize = 32;
+STRUCT!{nodebug struct LOGFONTA {
+ lfHeight: ::LONG,
+ lfWidth: ::LONG,
+ lfEscapement: ::LONG,
+ lfOrientation: ::LONG,
+ lfWeight: ::LONG,
+ lfItalic: ::BYTE,
+ lfUnderline: ::BYTE,
+ lfStrikeOut: ::BYTE,
+ lfCharSet: ::BYTE,
+ lfOutPrecision: ::BYTE,
+ lfClipPrecision: ::BYTE,
+ lfQuality: ::BYTE,
+ lfPitchAndFamily: ::BYTE,
+ lfFaceName: [::CHAR; LF_FACESIZE],
+}}
+pub type LPLOGFONTA = *mut LOGFONTA;
+STRUCT!{nodebug struct LOGFONTW {
+ lfHeight: ::LONG,
+ lfWidth: ::LONG,
+ lfEscapement: ::LONG,
+ lfOrientation: ::LONG,
+ lfWeight: ::LONG,
+ lfItalic: ::BYTE,
+ lfUnderline: ::BYTE,
+ lfStrikeOut: ::BYTE,
+ lfCharSet: ::BYTE,
+ lfOutPrecision: ::BYTE,
+ lfClipPrecision: ::BYTE,
+ lfQuality: ::BYTE,
+ lfPitchAndFamily: ::BYTE,
+ lfFaceName: [::WCHAR; LF_FACESIZE],
+}}
+pub type LPLOGFONTW = *mut LOGFONTW;
+//1595
+#[inline]
+pub fn RGB (r: ::BYTE, g: ::BYTE, b: ::BYTE) -> ::COLORREF {
+ r as ::COLORREF | ((g as ::COLORREF) << 8) | ((b as ::COLORREF) << 16)
+}
+//
+pub const DRIVERVERSION: ::c_int = 0;
+pub const TECHNOLOGY: ::c_int = 2;
+pub const HORZSIZE: ::c_int = 4;
+pub const VERTSIZE: ::c_int = 6;
+pub const HORZRES: ::c_int = 8;
+pub const VERTRES: ::c_int = 10;
+pub const BITSPIXEL: ::c_int = 12;
+pub const PLANES: ::c_int = 14;
+pub const NUMBRUSHES: ::c_int = 16;
+pub const NUMPENS: ::c_int = 18;
+pub const NUMMARKERS: ::c_int = 20;
+pub const NUMFONTS: ::c_int = 22;
+pub const NUMCOLORS: ::c_int = 24;
+pub const PDEVICESIZE: ::c_int = 26;
+pub const CURVECAPS: ::c_int = 28;
+pub const LINECAPS: ::c_int = 30;
+pub const POLYGONALCAPS: ::c_int = 32;
+pub const TEXTCAPS: ::c_int = 34;
+pub const CLIPCAPS: ::c_int = 36;
+pub const RASTERCAPS: ::c_int = 38;
+pub const ASPECTX: ::c_int = 40;
+pub const ASPECTY: ::c_int = 42;
+pub const ASPECTXY: ::c_int = 44;
+pub const LOGPIXELSX: ::c_int = 88;
+pub const LOGPIXELSY: ::c_int = 90;
+pub const SIZEPALETTE: ::c_int = 104;
+pub const NUMRESERVED: ::c_int = 106;
+pub const COLORRES: ::c_int = 108;
+pub const PHYSICALWIDTH: ::c_int = 110;
+pub const PHYSICALHEIGHT: ::c_int = 111;
+pub const PHYSICALOFFSETX: ::c_int = 112;
+pub const PHYSICALOFFSETY: ::c_int = 113;
+pub const SCALINGFACTORX: ::c_int = 114;
+pub const SCALINGFACTORY: ::c_int = 115;
+pub const VREFRESH: ::c_int = 116;
+pub const DESKTOPVERTRES: ::c_int = 117;
+pub const DESKTOPHORZRES: ::c_int = 118;
+pub const BLTALIGNMENT: ::c_int = 119;
+pub const SHADEBLENDCAPS: ::c_int = 120;
+pub const COLORMGMTCAPS: ::c_int = 121;
+//1906
+pub const DIB_RGB_COLORS: ::UINT = 0;
+pub const DIB_PAL_COLORS: ::UINT = 1;
+pub const CBM_INIT: ::DWORD = 4;
+STRUCT!{struct RGNDATAHEADER {
+ dwSize: ::DWORD,
+ iType: ::DWORD,
+ nCount: ::DWORD,
+ nRgnSize: ::DWORD,
+ rcBound: ::RECT,
+}}
+pub type PRGNDATAHEADER = *mut RGNDATAHEADER;
+STRUCT!{nodebug struct RGNDATA {
+ rdh: RGNDATAHEADER,
+ Buffer: [::c_char; 0],
+}}
+pub type PRGNDATA = *mut RGNDATA;
+pub type NPRGNDATA = *mut RGNDATA;
+pub type LPRGNDATA = *mut RGNDATA;
+STRUCT!{struct PALETTEENTRY {
+ peRed: ::BYTE,
+ peGreen: ::BYTE,
+ peBlue: ::BYTE,
+ peFlags: ::BYTE,
+}}
+pub type PPALETTEENTRY = *mut PALETTEENTRY;
+pub type LPPALETTEENTRY = *mut PALETTEENTRY;
+//2824 (Win 7 SDK)
+STRUCT!{struct ABC {
+ abcA: ::c_int,
+ abcB: ::UINT,
+ abcC: ::c_int,
+}}
+pub type PABC = *mut ABC;
+pub type NPABC = *mut ABC;
+pub type LPABC = *mut ABC;
+STRUCT!{struct ABCFLOAT {
+ abcfA: ::FLOAT,
+ abcfB: ::FLOAT,
+ abcfC: ::FLOAT,
+}}
+pub type PABCFLOAT = *mut ABCFLOAT;
+pub type NPABCFLOAT = *mut ABCFLOAT;
+pub type LPABCFLOAT = *mut ABCFLOAT;
+//3581
+pub type LINEDDAPROC = Option<unsafe extern "system" fn(::c_int, ::c_int, ::LPARAM)>;
+STRUCT!{struct XFORM {
+ eM11: ::FLOAT,
+ eM12: ::FLOAT,
+ eM21: ::FLOAT,
+ eM22: ::FLOAT,
+ eDx: ::FLOAT,
+ eDy: ::FLOAT,
+}}
+pub type PXFORM = *mut XFORM;
+pub type LPXFORM = *mut XFORM;
+STRUCT!{struct LOGBRUSH {
+ lbStyle: ::UINT,
+ lbColor: ::COLORREF,
+ lbHatch: ::ULONG_PTR,
+}}
+pub type PLOGBRUSH = *mut LOGBRUSH;
+STRUCT!{nodebug struct LOGCOLORSPACEA {
+ lcsSignature: ::DWORD,
+ lcsVersion: ::DWORD,
+ lcsSize: ::DWORD,
+ lcsCSType: LCSCSTYPE,
+ lcsIntent: LCSGAMUTMATCH,
+ lcsEndpoints: CIEXYZTRIPLE,
+ lcsGammaRed: ::DWORD,
+ lcsGammaGreen: ::DWORD,
+ lcsGammaBlue: ::DWORD,
+ lcsFilename: [::CHAR; ::MAX_PATH],
+}}
+pub type LPLOGCOLORSPACEA = *mut LOGCOLORSPACEA;
+STRUCT!{nodebug struct LOGCOLORSPACEW {
+ lcsSignature: ::DWORD,
+ lcsVersion: ::DWORD,
+ lcsSize: ::DWORD,
+ lcsCSType: LCSCSTYPE,
+ lcsIntent: LCSGAMUTMATCH,
+ lcsEndpoints: CIEXYZTRIPLE,
+ lcsGammaRed: ::DWORD,
+ lcsGammaGreen: ::DWORD,
+ lcsGammaBlue: ::DWORD,
+ lcsFilename: [::WCHAR; ::MAX_PATH],
+}}
+pub type LPLOGCOLORSPACEW = *mut LOGCOLORSPACEW;
+pub const LF_FULLFACESIZE: usize = 64;
+STRUCT!{nodebug struct ENUMLOGFONTEXA {
+ elfLogFont: LOGFONTA,
+ elfFullName: [::BYTE; LF_FULLFACESIZE],
+ elfStyle: [::BYTE; LF_FACESIZE],
+ elfScript: [::BYTE; LF_FACESIZE],
+}}
+pub type LPENUMLOGFONTEXA = *mut ENUMLOGFONTEXA;
+STRUCT!{nodebug struct ENUMLOGFONTEXW {
+ elfLogFont: LOGFONTW,
+ elfFullName: [::WCHAR; LF_FULLFACESIZE],
+ elfStyle: [::WCHAR; LF_FACESIZE],
+ elfScript: [::WCHAR; LF_FACESIZE],
+}}
+pub type LPENUMLOGFONTEXW = *mut ENUMLOGFONTEXW;
+pub const MM_MAX_NUMAXES: usize = 16;
+STRUCT!{struct DESIGNVECTOR {
+ dvReserved: ::DWORD,
+ dvNumAxes: ::DWORD,
+ dvValues: [::LONG; MM_MAX_NUMAXES],
+}}
+pub type PDESIGNVECTOR = *mut DESIGNVECTOR;
+pub type LPDESIGNVECTOR = *mut DESIGNVECTOR;
+STRUCT!{nodebug struct ENUMLOGFONTEXDVA {
+ elfEnumLogfontEx: ENUMLOGFONTEXA,
+ elfDesignVector: DESIGNVECTOR,
+}}
+pub type PENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA;
+pub type LPENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA;
+STRUCT!{nodebug struct ENUMLOGFONTEXDVW {
+ elfEnumLogfontEx: ENUMLOGFONTEXW,
+ elfDesignVector: DESIGNVECTOR,
+}}
+pub type PENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW;
+pub type LPENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW;
+STRUCT!{struct LOGPALETTE {
+ palVersion: ::WORD,
+ palNumEntries: ::WORD,
+ palPalEntry: [PALETTEENTRY; 1],
+}}
+pub type PLOGPALETTE = *mut LOGPALETTE;
+pub type NPLOGPALETTE = *mut LOGPALETTE;
+pub type LPLOGPALETTE = *mut LOGPALETTE;
+STRUCT!{struct LOGPEN {
+ lopnStyle: ::UINT,
+ lopnWidth: ::POINT,
+ lopnColor: ::COLORREF,
+}}
+pub type PLOGPEN = *mut LOGPEN;
+pub type NPLOGPEN = *mut LOGPEN;
+pub type LPLOGPEN = *mut LOGPEN;
+STRUCT!{struct BLENDFUNCTION {
+ BlendOp: ::BYTE,
+ BlendFlags: ::BYTE,
+ SourceConstantAlpha: ::BYTE,
+ AlphaFormat: ::BYTE,
+}}
+pub type PBLENDFUNCTION = *mut BLENDFUNCTION;
+pub const TMPF_FIXED_PITCH: ::BYTE = 0x01;
+pub const TMPF_VECTOR: ::BYTE = 0x02;
+pub const TMPF_DEVICE: ::BYTE = 0x08;
+pub const TMPF_TRUETYPE: ::BYTE = 0x04;
+STRUCT!{struct TEXTMETRICA {
+ tmHeight: ::LONG,
+ tmAscent: ::LONG,
+ tmDescent: ::LONG,
+ tmInternalLeading: ::LONG,
+ tmExternalLeading: ::LONG,
+ tmAveCharWidth: ::LONG,
+ tmMaxCharWidth: ::LONG,
+ tmWeight: ::LONG,
+ tmOverhang: ::LONG,
+ tmDigitizedAspectX: ::LONG,
+ tmDigitizedAspectY: ::LONG,
+ tmFirstChar: ::BYTE,
+ tmLastChar: ::BYTE,
+ tmDefaultChar: ::BYTE,
+ tmBreakChar: ::BYTE,
+ tmItalic: ::BYTE,
+ tmUnderlined: ::BYTE,
+ tmStruckOut: ::BYTE,
+ tmPitchAndFamily: ::BYTE,
+ tmCharSet: ::BYTE,
+}}
+pub type PTEXTMETRICA = *mut TEXTMETRICA;
+pub type NPTEXTMETRICA = *mut TEXTMETRICA;
+pub type LPTEXTMETRICA = *mut TEXTMETRICA;
+STRUCT!{struct TEXTMETRICW {
+ tmHeight: ::LONG,
+ tmAscent: ::LONG,
+ tmDescent: ::LONG,
+ tmInternalLeading: ::LONG,
+ tmExternalLeading: ::LONG,
+ tmAveCharWidth: ::LONG,
+ tmMaxCharWidth: ::LONG,
+ tmWeight: ::LONG,
+ tmOverhang: ::LONG,
+ tmDigitizedAspectX: ::LONG,
+ tmDigitizedAspectY: ::LONG,
+ tmFirstChar: ::WCHAR,
+ tmLastChar: ::WCHAR,
+ tmDefaultChar: ::WCHAR,
+ tmBreakChar: ::WCHAR,
+ tmItalic: ::BYTE,
+ tmUnderlined: ::BYTE,
+ tmStruckOut: ::BYTE,
+ tmPitchAndFamily: ::BYTE,
+ tmCharSet: ::BYTE,
+}}
+pub type PTEXTMETRICW = *mut TEXTMETRICW;
+pub type NPTEXTMETRICW = *mut TEXTMETRICW;
+pub type LPTEXTMETRICW = *mut TEXTMETRICW;
+pub const TA_NOUPDATECP: ::UINT = 0;
+pub const TA_UPDATECP: ::UINT = 1;
+pub const TA_LEFT: ::UINT = 0;
+pub const TA_RIGHT: ::UINT = 2;
+pub const TA_CENTER: ::UINT = 6;
+pub const TA_TOP: ::UINT = 0;
+pub const TA_BOTTOM: ::UINT = 8;
+pub const TA_BASELINE: ::UINT = 24;
+pub const TA_RTLREADING: ::UINT = 256;
+pub const TA_MASK: ::UINT = TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING;
+pub const WHITE_BRUSH: ::c_int = 0;
+pub const LTGRAY_BRUSH: ::c_int = 1;
+pub const GRAY_BRUSH: ::c_int = 2;
+pub const DKGRAY_BRUSH: ::c_int = 3;
+pub const BLACK_BRUSH: ::c_int = 4;
+pub const NULL_BRUSH: ::c_int = 5;
+pub const HOLLOW_BRUSH: ::c_int = 5;
+pub const WHITE_PEN: ::c_int = 6;
+pub const BLACK_PEN: ::c_int = 7;
+pub const NULL_PEN: ::c_int = 8;
+pub const OEM_FIXED_FONT: ::c_int = 10;
+pub const ANSI_FIXED_FONT: ::c_int = 11;
+pub const ANSI_VAR_FONT: ::c_int = 12;
+pub const SYSTEM_FONT: ::c_int = 13;
+pub const DEVICE_DEFAULT_FONT: ::c_int = 14;
+pub const DEFAULT_PALETTE: ::c_int = 15;
+pub const SYSTEM_FIXED_FONT: ::c_int = 16;
+pub const DEFAULT_GUI_FONT: ::c_int = 17;
+pub const DC_BRUSH: ::c_int = 18;
+pub const DC_PEN: ::c_int = 19;
+pub const STOCK_LAST: ::c_int = 19;pub const PS_SOLID: ::c_int = 0;
+pub const PS_DASH: ::c_int = 1;
+pub const PS_DOT: ::c_int = 2;
+pub const PS_DASHDOT: ::c_int = 3;
+pub const PS_DASHDOTDOT: ::c_int = 4;
+pub const PS_NULL: ::c_int = 5;
+pub const PS_INSIDEFRAME: ::c_int = 6;
+pub const PS_USERSTYLE: ::c_int = 7;
+pub const PS_ALTERNATE: ::c_int = 8;
+pub const TRANSPARENT: ::c_int = 1;
+pub const OPAQUE: ::c_int = 2;
+pub const BKMODE_LAST: ::c_int = 2;
+pub const MM_TEXT: ::c_int = 1;
+pub const MM_LOMETRIC: ::c_int = 2;
+pub const MM_HIMETRIC: ::c_int = 3;
+pub const MM_LOENGLISH: ::c_int = 4;
+pub const MM_HIENGLISH: ::c_int = 5;
+pub const MM_TWIPS: ::c_int = 6;
+pub const MM_ISOTROPIC: ::c_int = 7;
+pub const MM_ANISOTROPIC: ::c_int = 8;
+pub const ALTERNATE: ::c_int = 1;
+pub const WINDING: ::c_int = 2;
+pub const POLYFILL_LAST: ::c_int = 2;
+pub const OUT_DEFAULT_PRECIS: ::DWORD = 0;
+pub const OUT_STRING_PRECIS: ::DWORD = 1;
+pub const OUT_CHARACTER_PRECIS: ::DWORD = 2;
+pub const OUT_STROKE_PRECIS: ::DWORD = 3;
+pub const OUT_TT_PRECIS: ::DWORD = 4;
+pub const OUT_DEVICE_PRECIS: ::DWORD = 5;
+pub const OUT_RASTER_PRECIS: ::DWORD = 6;
+pub const OUT_TT_ONLY_PRECIS: ::DWORD = 7;
+pub const OUT_OUTLINE_PRECIS: ::DWORD = 8;
+pub const OUT_SCREEN_OUTLINE_PRECIS: ::DWORD = 9;
+pub const OUT_PS_ONLY_PRECIS: ::DWORD = 10;
+pub const CLIP_DEFAULT_PRECIS: ::DWORD = 0;
+pub const CLIP_CHARACTER_PRECIS: ::DWORD = 1;
+pub const CLIP_STROKE_PRECIS: ::DWORD = 2;
+pub const CLIP_MASK: ::DWORD = 0xf;
+pub const CLIP_LH_ANGLES: ::DWORD = 1 << 4;
+pub const CLIP_TT_ALWAYS: ::DWORD = 2 << 4;
+pub const CLIP_DFA_DISABLE: ::DWORD = 4 << 4;
+pub const CLIP_EMBEDDED: ::DWORD = 8 << 4;
+pub const DEFAULT_QUALITY: ::DWORD = 0;
+pub const DRAFT_QUALITY: ::DWORD = 1;
+pub const PROOF_QUALITY: ::DWORD = 2;
+pub const NONANTIALIASED_QUALITY: ::DWORD = 3;
+pub const ANTIALIASED_QUALITY: ::DWORD = 4;
+pub const CLEARTYPE_QUALITY: ::DWORD = 5;
+pub const CLEARTYPE_NATURAL_QUALITY: ::DWORD = 6;
+pub const DEFAULT_PITCH: ::DWORD = 0;
+pub const FIXED_PITCH: ::DWORD = 1;
+pub const VARIABLE_PITCH: ::DWORD = 2;
+pub const FF_DONTCARE: ::DWORD = 0 << 4;
+pub const FF_ROMAN: ::DWORD = 1 << 4;
+pub const FF_SWISS: ::DWORD = 2 << 4;
+pub const FF_MODERN: ::DWORD = 3 << 4;
+pub const FF_SCRIPT: ::DWORD = 4 << 4;
+pub const FF_DECORATIVE: ::DWORD = 5 << 4;
+pub const MONO_FONT: ::DWORD = 8;
+pub const ANSI_CHARSET: ::DWORD = 0;
+pub const DEFAULT_CHARSET: ::DWORD = 1;
+pub const SYMBOL_CHARSET: ::DWORD = 2;
+pub const SHIFTJIS_CHARSET: ::DWORD = 128;
+pub const HANGEUL_CHARSET: ::DWORD = 129;
+pub const HANGUL_CHARSET: ::DWORD = 129;
+pub const GB2312_CHARSET: ::DWORD = 134;
+pub const CHINESEBIG5_CHARSET: ::DWORD = 136;
+pub const OEM_CHARSET: ::DWORD = 255;
+pub const JOHAB_CHARSET: ::DWORD = 130;
+pub const HEBREW_CHARSET: ::DWORD = 177;
+pub const ARABIC_CHARSET: ::DWORD = 178;
+pub const GREEK_CHARSET: ::DWORD = 161;
+pub const TURKISH_CHARSET: ::DWORD = 162;
+pub const VIETNAMESE_CHARSET: ::DWORD = 163;
+pub const THAI_CHARSET: ::DWORD = 222;
+pub const EASTEUROPE_CHARSET: ::DWORD = 238;
+pub const RUSSIAN_CHARSET: ::DWORD = 204;
+pub const MAC_CHARSET: ::DWORD = 77;
+pub const BALTIC_CHARSET: ::DWORD = 186;
+pub const FS_LATIN1: ::DWORD = 0x00000001;
+pub const FS_LATIN2: ::DWORD = 0x00000002;
+pub const FS_CYRILLIC: ::DWORD = 0x00000004;
+pub const FS_GREEK: ::DWORD = 0x00000008;
+pub const FS_TURKISH: ::DWORD = 0x00000010;
+pub const FS_HEBREW: ::DWORD = 0x00000020;
+pub const FS_ARABIC: ::DWORD = 0x00000040;
+pub const FS_BALTIC: ::DWORD = 0x00000080;
+pub const FS_VIETNAMESE: ::DWORD = 0x00000100;
+pub const FS_THAI: ::DWORD = 0x00010000;
+pub const FS_JISJAPAN: ::DWORD = 0x00020000;
+pub const FS_CHINESESIMP: ::DWORD = 0x00040000;
+pub const FS_WANSUNG: ::DWORD = 0x00080000;
+pub const FS_CHINESETRAD: ::DWORD = 0x00100000;
+pub const FS_JOHAB: ::DWORD = 0x00200000;
+pub const FS_SYMBOL: ::DWORD = 0x80000000;
+pub const FW_DONTCARE: ::c_int = 0;
+pub const FW_THIN: ::c_int = 100;
+pub const FW_EXTRALIGHT: ::c_int = 200;
+pub const FW_LIGHT: ::c_int = 300;
+pub const FW_NORMAL: ::c_int = 400;
+pub const FW_MEDIUM: ::c_int = 500;
+pub const FW_SEMIBOLD: ::c_int = 600;
+pub const FW_BOLD: ::c_int = 700;
+pub const FW_EXTRABOLD: ::c_int = 800;
+pub const FW_HEAVY: ::c_int = 900;
+pub const FW_ULTRALIGHT: ::c_int = FW_EXTRALIGHT;
+pub const FW_REGULAR: ::c_int = FW_NORMAL;
+pub const FW_DEMIBOLD: ::c_int = FW_SEMIBOLD;
+pub const FW_ULTRABOLD: ::c_int = FW_EXTRABOLD;
+pub const FW_BLACK: ::c_int = FW_HEAVY;
+pub type COLOR16 = ::c_ushort;
+STRUCT!{struct TRIVERTEX {
+ x: ::LONG,
+ y: ::LONG,
+ Red: COLOR16,
+ Green: COLOR16,
+ Blue: COLOR16,
+ Alpha: COLOR16,
+}}
+pub type PTRIVERTEX = *mut TRIVERTEX;
+pub type LPTRIVERTEX = *mut TRIVERTEX;
+STRUCT!{struct GRADIENT_RECT {
+ UpperLeft: ::ULONG,
+ LowerRight: ::ULONG,
+}}
+pub type PGRADIENT_RECT = *mut GRADIENT_RECT;
+pub type LPGRADIENT_RECT = *mut GRADIENT_RECT;
+/* Object Definitions for EnumObjects() */
+pub const OBJ_PEN: ::UINT = 1;
+pub const OBJ_BRUSH: ::UINT = 2;
+pub const OBJ_DC: ::UINT = 3;
+pub const OBJ_METADC: ::UINT = 4;
+pub const OBJ_PAL: ::UINT = 5;
+pub const OBJ_FONT: ::UINT = 6;
+pub const OBJ_BITMAP: ::UINT = 7;
+pub const OBJ_REGION: ::UINT = 8;
+pub const OBJ_METAFILE: ::UINT = 9;
+pub const OBJ_MEMDC: ::UINT = 10;
+pub const OBJ_EXTPEN: ::UINT = 11;
+pub const OBJ_ENHMETADC: ::UINT = 12;
+pub const OBJ_ENHMETAFILE: ::UINT = 13;
+pub const OBJ_COLORSPACE: ::UINT = 14;
+pub const GDI_OBJ_LAST: ::UINT = OBJ_COLORSPACE;
+STRUCT!{struct COLORADJUSTMENT {
+ caSize: ::WORD,
+ caFlags: ::WORD,
+ caIlluminantIndex: ::WORD,
+ caRedGamma: ::WORD,
+ caGreenGamma: ::WORD,
+ caBlueGamma: ::WORD,
+ caReferenceBlack: ::WORD,
+ caReferenceWhite: ::WORD,
+ caContrast: ::SHORT,
+ caBrightness: ::SHORT,
+ caColorfulness: ::SHORT,
+ caRedGreenTint: ::SHORT,
+}}
+pub type PCOLORADJUSTMENT = *mut COLORADJUSTMENT;
+pub type LPCOLORADJUSTMENT = *mut COLORADJUSTMENT;
+pub type OLDFONTENUMPROCA = Option<unsafe extern "system" fn(
+ *const LOGFONTA, *const ::VOID, ::DWORD, ::LPARAM
+) -> ::c_int>;
+pub type OLDFONTENUMPROCW = Option<unsafe extern "system" fn(
+ *const LOGFONTW, *const ::VOID, ::DWORD, ::LPARAM
+) -> ::c_int>;
+pub type FONTENUMPROCA = OLDFONTENUMPROCA;
+pub type FONTENUMPROCW = OLDFONTENUMPROCW;
+STRUCT!{struct WCRANGE {
+ wcLow: ::WCHAR,
+ cGlyphs: ::USHORT,
+}}
+pub type PWCRANGE = *mut WCRANGE;
+pub type LPWCRANGE = *mut WCRANGE;
+STRUCT!{struct GLYPHSET {
+ cbThis: ::DWORD,
+ flAccel: ::DWORD,
+ cGlyphsSupported: ::DWORD,
+ cRanges: ::DWORD,
+ ranges: [WCRANGE;1],
+}}
+pub type PGLYPHSET = *mut GLYPHSET;
+pub type LPGLYPHSET = *mut GLYPHSET;
+pub type ABORTPROC = Option<unsafe extern "system" fn(::HDC, ::c_int) -> ::BOOL>;
+STRUCT!{struct DOCINFOA {
+ cbSize: ::c_int,
+ lpszDocName: ::LPCSTR,
+ lpszOutput: ::LPCSTR,
+ lpszDatatype: ::LPCSTR,
+ fwType: ::DWORD,
+}}
+pub type LPDOCINFOA = *mut DOCINFOA;
+STRUCT!{struct DOCINFOW {
+ cbSize: ::c_int,
+ lpszDocName: ::LPCWSTR,
+ lpszOutput: ::LPCWSTR,
+ lpszDatatype: ::LPCWSTR,
+ fwType: ::DWORD,
+}}
+pub type LPDOCINFOW = *mut DOCINFOW;
+pub type ICMENUMPROCA = Option<unsafe extern "system" fn(::LPSTR, ::LPARAM) -> ::c_int>;
+pub type ICMENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR, ::LPARAM) -> ::c_int>;
+STRUCT!{struct HANDLETABLE {
+ objectHandle: [::HGDIOBJ; 1],
+}}
+pub type LPHANDLETABLE = *mut HANDLETABLE;
+pub type PHANDLETABLE = *mut HANDLETABLE;
+STRUCT!{struct METARECORD {
+ rdSize: ::DWORD,
+ rdFunction: ::WORD,
+ rdParm: [::WORD; 1],
+}}
+pub type PMETARECORD = *mut METARECORD;
+pub type LPMETARECORD = *mut METARECORD;
+pub type MFENUMPROC = Option<unsafe extern "system" fn(
+ hdc: ::HDC, lpht: *mut ::HANDLETABLE, lpMR: *mut ::METARECORD, nObj: ::c_int, param: ::LPARAM
+) -> ::c_int>;
+pub type GOBJENUMPROC = Option<unsafe extern "system" fn(::LPVOID, ::LPARAM) -> ::c_int>;
+STRUCT!{struct GCP_RESULTSA {
+ lStructSize: ::DWORD,
+ lpOutString: ::LPSTR,
+ lpOrder: *const ::UINT,
+ lpDx: *const ::c_int,
+ lpCaretPos: *const ::c_int,
+ lpClass: ::LPSTR,
+ lpGlyphs: ::LPWSTR,
+ nGlyphs: ::UINT,
+ nMaxFit: ::c_int,
+}}
+pub type LPGCP_RESULTSA = *mut GCP_RESULTSA;
+STRUCT!{struct GCP_RESULTSW {
+ lStructSize: ::DWORD,
+ lpOutString: ::LPWSTR,
+ lpOrder: *const ::UINT,
+ lpDx: *const ::c_int,
+ lpCaretPos: *const ::c_int,
+ lpClass: ::LPSTR,
+ lpGlyphs: ::LPWSTR,
+ nGlyphs: ::UINT,
+ nMaxFit: ::c_int,
+}}
+pub type LPGCP_RESULTSW = *mut GCP_RESULTSW;
+STRUCT!{struct FONTSIGNATURE {
+ fsUsb: [::DWORD; 4],
+ fsCsb: [::DWORD; 2],
+}}
+pub type LPFONTSIGNATURE = *mut FONTSIGNATURE;
+pub type PFONTSIGNATURE = *mut FONTSIGNATURE;
+STRUCT!{struct POLYTEXTA {
+ x: ::c_int,
+ y: ::c_int,
+ n: ::UINT,
+ lpstr: ::LPCSTR,
+ uiFlags: ::UINT,
+ rcl: ::RECT,
+ pdx: *const ::c_int,
+}}
+pub type PPOLYTEXTA = *mut POLYTEXTA;
+pub type NPPOLYTEXTA = *mut POLYTEXTA;
+pub type LPPOLYTEXTA = *mut POLYTEXTA;
+STRUCT!{struct POLYTEXTW {
+ x: ::c_int,
+ y: ::c_int,
+ n: ::UINT,
+ lpstr: ::LPCWSTR,
+ uiFlags: ::UINT,
+ rcl: ::RECT,
+ pdx: *const ::c_int,
+}}
+pub type PPOLYTEXTW = *mut POLYTEXTW;
+pub type NPPOLYTEXTW = *mut POLYTEXTW;
+pub type LPPOLYTEXTW = *mut POLYTEXTW;
+STRUCT!{struct CHARSETINFO {
+ ciCharset: ::UINT,
+ ciACP: ::UINT,
+ fs: ::FONTSIGNATURE,
+}}
+pub type PCHARSETINFO = *mut CHARSETINFO;
+pub type NPCHARSETINFO = *mut CHARSETINFO;
+pub type LPCHARSETINFO = *mut CHARSETINFO;
+pub const GRADIENT_FILL_RECT_H: ::ULONG = 0x00000000;
+pub const GRADIENT_FILL_RECT_V: ::ULONG = 0x00000001;
+pub const GRADIENT_FILL_TRIANGLE: ::ULONG = 0x00000002;
+pub const GRADIENT_FILL_OP_FLAG: ::ULONG = 0x000000ff;
+STRUCT!{struct LAYERPLANEDESCRIPTOR {
+ nSize: ::WORD,
+ nVersion: ::WORD,
+ dwFlags: ::DWORD,
+ iPixelType: ::BYTE,
+ cColorBits: ::BYTE,
+ cRedBits: ::BYTE,
+ cRedShift: ::BYTE,
+ cGreenBits: ::BYTE,
+ cGreenShift: ::BYTE,
+ cBlueBits: ::BYTE,
+ cBlueShift: ::BYTE,
+ cAlphaBits: ::BYTE,
+ cAlphaShift: ::BYTE,
+ cAccumBits: ::BYTE,
+ cAccumRedBits: ::BYTE,
+ cAccumGreenBits: ::BYTE,
+ cAccumBlueBits: ::BYTE,
+ cAccumAlphaBits: ::BYTE,
+ cDepthBits: ::BYTE,
+ cStencilBits: ::BYTE,
+ cAuxBuffers: ::BYTE,
+ iLayerPlane: ::BYTE,
+ bReserved: ::BYTE,
+ crTransparent: ::COLORREF,
+}}
+pub type PLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR;
+pub type LPLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR;
+STRUCT!{struct ENHMETAHEADER {
+ iType: ::DWORD,
+ nSize: ::DWORD,
+ rclBounds: ::RECTL,
+ rclFrame: ::RECTL,
+ dSignature: ::DWORD,
+ nVersion: ::DWORD,
+ nBytes: ::DWORD,
+ nRecords: ::DWORD,
+ nHandles: ::WORD,
+ sReserved: ::WORD,
+ nDescription: ::DWORD,
+ offDescription: ::DWORD,
+ nPalEntries: ::DWORD,
+ szlDevice: ::SIZEL,
+ szlMillimeters: ::SIZEL,
+ cbPixelFormat: ::DWORD,
+ offPixelFormat: ::DWORD,
+ bOpenGL: ::DWORD,
+ szlMicrometers: ::SIZEL,
+}}
+pub type PENHMETAHEADER = *mut ENHMETAHEADER;
+pub type LPENHMETAHEADER = *mut ENHMETAHEADER;
+STRUCT!{struct FIXED {
+ fract: ::WORD,
+ value: ::c_short,
+}}
+STRUCT!{struct MAT2 {
+ eM11: FIXED,
+ eM12: FIXED,
+ eM21: FIXED,
+ eM22: FIXED,
+}}
+pub type LPMAT2 = *mut MAT2;
+STRUCT!{struct GLYPHMETRICS {
+ gmBlackBoxX: ::UINT,
+ gmBlackBoxY: ::UINT,
+ gmptGlyphOrigin: ::POINT,
+ gmCellIncX: ::c_short,
+ gmCellIncY: ::c_short,
+}}
+pub type LPGLYPHMETRICS = *mut GLYPHMETRICS;
+STRUCT!{struct KERNINGPAIR {
+ wFirst: ::WORD,
+ wSecond: ::WORD,
+ iKernAmount: ::c_int,
+}}
+pub type LPKERNINGPAIR = *mut KERNINGPAIR;
+STRUCT!{struct PANOSE {
+ bFamilyType: ::BYTE,
+ bSerifStyle: ::BYTE,
+ bWeight: ::BYTE,
+ bProportion: ::BYTE,
+ bContrast: ::BYTE,
+ bStrokeVariation: ::BYTE,
+ bArmStyle: ::BYTE,
+ bLetterform: ::BYTE,
+ bMidline: ::BYTE,
+ bXHeight: ::BYTE,
+}}
+pub type LPPANOSE = *mut PANOSE;
+STRUCT!{struct OUTLINETEXTMETRICA {
+ otmSize: ::UINT,
+ otmTextMetrics: TEXTMETRICA,
+ otmFiller: ::BYTE,
+ otmPanoseNumber: ::PANOSE,
+ otmfsSelection: ::UINT,
+ otmfsType: ::UINT,
+ otmsCharSlopeRise: ::c_int,
+ otmsCharSlopeRun: ::c_int,
+ otmItalicAngle: ::c_int,
+ otmEMSquare: ::UINT,
+ otmAscent: ::c_int,
+ otmDescent: ::c_int,
+ otmLineGap: ::UINT,
+ otmsCapEmHeight: ::UINT,
+ otmsXHeight: ::UINT,
+ otmrcFontBox: ::RECT,
+ otmMacAscent: ::c_int,
+ otmMacDescent: ::c_int,
+ otmMacLineGap: ::UINT,
+ otmusMinimumPPEM: ::UINT,
+ otmptSubscriptSize: ::POINT,
+ otmptSubscriptOffset: ::POINT,
+ otmptSuperscriptSize: ::POINT,
+ otmptSuperscriptOffset: ::POINT,
+ otmsStrikeoutSize: ::UINT,
+ otmsStrikeoutPosition: ::c_int,
+ otmsUnderscoreSize: ::c_int,
+ otmsUnderscorePosition: ::c_int,
+ otmpFamilyName: ::PSTR,
+ otmpFaceName: ::PSTR,
+ otmpStyleName: ::PSTR,
+ otmpFullName: ::PSTR,
+}}
+pub type POUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;
+pub type NPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;
+pub type LPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;
+STRUCT!{struct OUTLINETEXTMETRICW {
+ otmSize: ::UINT,
+ otmTextMetrics: TEXTMETRICW,
+ otmFiller: ::BYTE,
+ otmPanoseNumber: ::PANOSE,
+ otmfsSelection: ::UINT,
+ otmfsType: ::UINT,
+ otmsCharSlopeRise: ::c_int,
+ otmsCharSlopeRun: ::c_int,
+ otmItalicAngle: ::c_int,
+ otmEMSquare: ::UINT,
+ otmAscent: ::c_int,
+ otmDescent: ::c_int,
+ otmLineGap: ::UINT,
+ otmsCapEmHeight: ::UINT,
+ otmsXHeight: ::UINT,
+ otmrcFontBox: ::RECT,
+ otmMacAscent: ::c_int,
+ otmMacDescent: ::c_int,
+ otmMacLineGap: ::UINT,
+ otmusMinimumPPEM: ::UINT,
+ otmptSubscriptSize: ::POINT,
+ otmptSubscriptOffset: ::POINT,
+ otmptSuperscriptSize: ::POINT,
+ otmptSuperscriptOffset: ::POINT,
+ otmsStrikeoutSize: ::UINT,
+ otmsStrikeoutPosition: ::c_int,
+ otmsUnderscoreSize: ::c_int,
+ otmsUnderscorePosition: ::c_int,
+ otmpFamilyName: ::PSTR,
+ otmpFaceName: ::PSTR,
+ otmpStyleName: ::PSTR,
+ otmpFullName: ::PSTR,
+}}
+pub type POUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;
+pub type NPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;
+pub type LPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;
+STRUCT!{struct RASTERIZER_STATUS {
+ nSize: ::c_short,
+ wFlags: ::c_short,
+ nLanguageID: ::c_short,
+}}
+pub type LPRASTERIZER_STATUS = *mut RASTERIZER_STATUS;
+STRUCT!{struct ENHMETARECORD {
+ iType: ::DWORD,
+ nSize: ::DWORD,
+ dParm: [::DWORD; 1],
+}}
+pub type PENHMETARECORD = *mut ENHMETARECORD;
+pub type LPENHMETARECORD = *mut ENHMETARECORD;
+STRUCT!{struct METAFILEPICT {
+ mm: ::LONG,
+ xExt: ::LONG,
+ yExt: ::LONG,
+ hMF: ::HMETAFILE,
+}}
+pub type LPMETAFILEPICT = *mut METAFILEPICT;
+STRUCT!{struct POINTFLOAT {
+ x: ::FLOAT,
+ y: ::FLOAT,
+}}
+pub type PPOINTFLOAT = *mut POINTFLOAT;
+STRUCT!{struct GLYPHMETRICSFLOAT {
+ gmfBlackBoxX: ::FLOAT,
+ gmfBlackBoxY: ::FLOAT,
+ gmfptGlyphOrigin: POINTFLOAT,
+ gmfCellIncX: ::FLOAT,
+ gmfCellIncY: ::FLOAT,
+}}
+pub type PGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT;
+pub type LPGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT;
+pub const DT_PLOTTER: ::c_int = 0;
+pub const DT_RASDISPLAY: ::c_int = 1;
+pub const DT_RASPRINTER: ::c_int = 2;
+pub const DT_RASCAMERA: ::c_int = 3;
+pub const DT_CHARSTREAM: ::c_int = 4;
+pub const DT_METAFILE: ::c_int = 5;
+pub const DT_DISPFILE: ::c_int = 6;
+pub const CLR_INVALID: ::COLORREF = 0xFFFFFFFF;
+pub const ETO_OPAQUE: ::UINT = 0x0002;
+pub const ETO_CLIPPED: ::UINT = 0x0004;
+pub const ETO_GLYPH_INDEX: ::UINT = 0x0010;
+pub const ETO_RTLREADING: ::UINT = 0x0080;
+pub const ETO_NUMERICSLOCAL: ::UINT = 0x0400;
+pub const ETO_NUMERICSLATIN: ::UINT = 0x0800;
+pub const ETO_IGNORELANGUAGE: ::UINT = 0x1000;
+pub const ETO_PDY: ::UINT = 0x2000;
+pub const ETO_REVERSE_INDEX_MAP: ::UINT = 0x10000;
+STRUCT!{struct EXTLOGPEN {
+ elpPenStyle: ::DWORD,
+ elpWidth: ::DWORD,
+ elpBrushStyle: ::UINT,
+ elpColor: ::COLORREF,
+ elpHatch: ::ULONG_PTR,
+ elpNumEntries: ::DWORD,
+ elpStyleEntry: [::DWORD; 1],
+}}
+pub type PEXTLOGPEN = *mut EXTLOGPEN;
+pub type NPEXTLOGPEN = *mut EXTLOGPEN;
+pub type LPEXTLOGPEN = *mut EXTLOGPEN;
+pub type ENHMFENUMPROC = Option<unsafe extern "system" fn(
+ hdc: ::HDC, lpht: HANDLETABLE, lpmr: *const ENHMETARECORD, nHandles: ::c_int, data: ::LPARAM
+) -> ::c_int>;
+/* Metafile Functions */
+pub const META_SETBKCOLOR: ::WORD = 0x0201;
+pub const META_SETBKMODE: ::WORD = 0x0102;
+pub const META_SETMAPMODE: ::WORD = 0x0103;
+pub const META_SETROP2: ::WORD = 0x0104;
+pub const META_SETRELABS: ::WORD = 0x0105;
+pub const META_SETPOLYFILLMODE: ::WORD = 0x0106;
+pub const META_SETSTRETCHBLTMODE: ::WORD = 0x0107;
+pub const META_SETTEXTCHAREXTRA: ::WORD = 0x0108;
+pub const META_SETTEXTCOLOR: ::WORD = 0x0209;
+pub const META_SETTEXTJUSTIFICATION: ::WORD = 0x020A;
+pub const META_SETWINDOWORG: ::WORD = 0x020B;
+pub const META_SETWINDOWEXT: ::WORD = 0x020C;
+pub const META_SETVIEWPORTORG: ::WORD = 0x020D;
+pub const META_SETVIEWPORTEXT: ::WORD = 0x020E;
+pub const META_OFFSETWINDOWORG: ::WORD = 0x020F;
+pub const META_SCALEWINDOWEXT: ::WORD = 0x0410;
+pub const META_OFFSETVIEWPORTORG: ::WORD = 0x0211;
+pub const META_SCALEVIEWPORTEXT: ::WORD = 0x0412;
+pub const META_LINETO: ::WORD = 0x0213;
+pub const META_MOVETO: ::WORD = 0x0214;
+pub const META_EXCLUDECLIPRECT: ::WORD = 0x0415;
+pub const META_INTERSECTCLIPRECT: ::WORD = 0x0416;
+pub const META_ARC: ::WORD = 0x0817;
+pub const META_ELLIPSE: ::WORD = 0x0418;
+pub const META_FLOODFILL: ::WORD = 0x0419;
+pub const META_PIE: ::WORD = 0x081A;
+pub const META_RECTANGLE: ::WORD = 0x041B;
+pub const META_ROUNDRECT: ::WORD = 0x061C;
+pub const META_PATBLT: ::WORD = 0x061D;
+pub const META_SAVEDC: ::WORD = 0x001E;
+pub const META_SETPIXEL: ::WORD = 0x041F;
+pub const META_OFFSETCLIPRGN: ::WORD = 0x0220;
+pub const META_TEXTOUT: ::WORD = 0x0521;
+pub const META_BITBLT: ::WORD = 0x0922;
+pub const META_STRETCHBLT: ::WORD = 0x0B23;
+pub const META_POLYGON: ::WORD = 0x0324;
+pub const META_POLYLINE: ::WORD = 0x0325;
+pub const META_ESCAPE: ::WORD = 0x0626;
+pub const META_RESTOREDC: ::WORD = 0x0127;
+pub const META_FILLREGION: ::WORD = 0x0228;
+pub const META_FRAMEREGION: ::WORD = 0x0429;
+pub const META_INVERTREGION: ::WORD = 0x012A;
+pub const META_PAINTREGION: ::WORD = 0x012B;
+pub const META_SELECTCLIPREGION: ::WORD = 0x012C;
+pub const META_SELECTOBJECT: ::WORD = 0x012D;
+pub const META_SETTEXTALIGN: ::WORD = 0x012E;
+pub const META_CHORD: ::WORD = 0x0830;
+pub const META_SETMAPPERFLAGS: ::WORD = 0x0231;
+pub const META_EXTTEXTOUT: ::WORD = 0x0a32;
+pub const META_SETDIBTODEV: ::WORD = 0x0d33;
+pub const META_SELECTPALETTE: ::WORD = 0x0234;
+pub const META_REALIZEPALETTE: ::WORD = 0x0035;
+pub const META_ANIMATEPALETTE: ::WORD = 0x0436;
+pub const META_SETPALENTRIES: ::WORD = 0x0037;
+pub const META_POLYPOLYGON: ::WORD = 0x0538;
+pub const META_RESIZEPALETTE: ::WORD = 0x0139;
+pub const META_DIBBITBLT: ::WORD = 0x0940;
+pub const META_DIBSTRETCHBLT: ::WORD = 0x0b41;
+pub const META_DIBCREATEPATTERNBRUSH: ::WORD = 0x0142;
+pub const META_STRETCHDIB: ::WORD = 0x0f43;
+pub const META_EXTFLOODFILL: ::WORD = 0x0548;
+pub const META_SETLAYOUT: ::WORD = 0x0149;
+pub const META_DELETEOBJECT: ::WORD = 0x01f0;
+pub const META_CREATEPALETTE: ::WORD = 0x00f7;
+pub const META_CREATEPATTERNBRUSH: ::WORD = 0x01F9;
+pub const META_CREATEPENINDIRECT: ::WORD = 0x02FA;
+pub const META_CREATEFONTINDIRECT: ::WORD = 0x02FB;
+pub const META_CREATEBRUSHINDIRECT: ::WORD = 0x02FC;
+pub const META_CREATEREGION: ::WORD = 0x06FF;
diff --git a/third_party/rust/winapi-0.2.8/src/winhttp.rs b/third_party/rust/winapi-0.2.8/src/winhttp.rs
new file mode 100644
index 0000000000..e8ca6f646b
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winhttp.rs
@@ -0,0 +1,441 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Windows HTTP Services API constant definitions and macros
+//54
+pub type HINTERNET = ::LPVOID;
+pub type LPHINTERNET = *mut HINTERNET;
+pub type INTERNET_PORT = ::WORD;
+pub type LPINTERNET_PORT = *mut INTERNET_PORT;
+pub const INTERNET_DEFAULT_PORT: INTERNET_PORT = 0;
+pub const INTERNET_DEFAULT_HTTP_PORT: INTERNET_PORT = 80;
+pub const INTERNET_DEFAULT_HTTPS_PORT: INTERNET_PORT = 443;
+pub const WINHTTP_FLAG_ASYNC: ::DWORD = 0x10000000;
+pub const WINHTTP_FLAG_SECURE: ::DWORD = 0x00800000;
+pub const WINHTTP_FLAG_ESCAPE_PERCENT: ::DWORD = 0x00000004;
+pub const WINHTTP_FLAG_NULL_CODEPAGE: ::DWORD = 0x00000008;
+pub const WINHTTP_FLAG_BYPASS_PROXY_CACHE: ::DWORD = 0x00000100;
+pub const WINHTTP_FLAG_REFRESH: ::DWORD = WINHTTP_FLAG_BYPASS_PROXY_CACHE;
+pub const WINHTTP_FLAG_ESCAPE_DISABLE: ::DWORD = 0x00000040;
+pub const WINHTTP_FLAG_ESCAPE_DISABLE_QUERY: ::DWORD = 0x00000080;
+STRUCT!{struct WINHTTP_ASYNC_RESULT {
+ dwResult: ::DWORD_PTR,
+ dwError: ::DWORD,
+}}
+pub type LPWINHTTP_ASYNC_RESULT = *mut WINHTTP_ASYNC_RESULT;
+pub type INTERNET_SCHEME = ::c_int;
+pub type LPINTERNET_SCHEME = *mut ::c_int;
+pub const INTERNET_SCHEME_HTTP: INTERNET_SCHEME = 1;
+pub const INTERNET_SCHEME_HTTPS: INTERNET_SCHEME = 2;
+pub const INTERNET_SCHEME_FTP: INTERNET_SCHEME = 3;
+pub const INTERNET_SCHEME_SOCKS: INTERNET_SCHEME = 4;
+STRUCT!{struct URL_COMPONENTS {
+ dwStructSize: ::DWORD,
+ lpszScheme: ::LPWSTR,
+ dwSchemeLength: ::DWORD,
+ nScheme: INTERNET_SCHEME,
+ lpszHostName: ::LPWSTR,
+ dwHostNameLength: ::DWORD,
+ nPort: INTERNET_PORT,
+ lpszUserName: ::LPWSTR,
+ dwUserNameLength: ::DWORD,
+ lpszPassword: ::LPWSTR,
+ dwPasswordLength: ::DWORD,
+ lpszUrlPath: ::LPWSTR,
+ dwUrlPathLength: ::DWORD,
+ lpszExtraInfo: ::LPWSTR,
+ dwExtraInfoLength: ::DWORD,
+}}
+pub type LPURL_COMPONENTS = *mut URL_COMPONENTS;
+pub type URL_COMPONENTSW = URL_COMPONENTS;
+pub type LPURL_COMPONENTSW = LPURL_COMPONENTS;
+STRUCT!{struct WINHTTP_PROXY_INFO {
+ dwAccessType: ::DWORD,
+ lpszProxy: ::LPWSTR,
+ lpszProxyBypass: ::LPWSTR,
+}}
+pub type LPWINHTTP_PROXY_INFO = *mut WINHTTP_PROXY_INFO;
+pub type WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO;
+pub type LPWINHTTP_PROXY_INFOW = LPWINHTTP_PROXY_INFO;
+STRUCT!{struct WINHTTP_AUTOPROXY_OPTIONS {
+ dwFlags: ::DWORD,
+ dwAutoDetectFlags: ::DWORD,
+ lpszAutoConfigUrl: ::LPCWSTR,
+ lpvReserved: ::LPVOID,
+ dwReserved: ::DWORD,
+ fAutoLogonIfChallenged: ::BOOL,
+}}
+pub const WINHTTP_AUTOPROXY_AUTO_DETECT: ::DWORD = 0x00000001;
+pub const WINHTTP_AUTOPROXY_CONFIG_URL: ::DWORD = 0x00000002;
+pub const WINHTTP_AUTOPROXY_HOST_KEEPCASE: ::DWORD = 0x00000004;
+pub const WINHTTP_AUTOPROXY_HOST_LOWERCASE: ::DWORD = 0x00000008;
+pub const WINHTTP_AUTOPROXY_RUN_INPROCESS: ::DWORD = 0x00010000;
+pub const WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY: ::DWORD = 0x00020000;
+pub const WINHTTP_AUTOPROXY_NO_DIRECTACCESS: ::DWORD = 0x00040000;
+pub const WINHTTP_AUTOPROXY_NO_CACHE_CLIENT: ::DWORD = 0x00080000;
+pub const WINHTTP_AUTOPROXY_NO_CACHE_SVC: ::DWORD = 0x00100000;
+pub const WINHTTP_AUTOPROXY_SORT_RESULTS: ::DWORD = 0x00400000;
+pub const WINHTTP_AUTO_DETECT_TYPE_DHCP: ::DWORD = 0x00000001;
+pub const WINHTTP_AUTO_DETECT_TYPE_DNS_A: ::DWORD = 0x00000002;
+STRUCT!{struct WINHTTP_PROXY_RESULT_ENTRY {
+ fProxy: ::BOOL,
+ fBypass: ::BOOL,
+ ProxyScheme: INTERNET_SCHEME,
+ pwszProxy: ::PWSTR,
+ ProxyPort: INTERNET_PORT,
+}}
+STRUCT!{struct WINHTTP_PROXY_RESULT {
+ cEntries: ::DWORD,
+ pEntries: *mut WINHTTP_PROXY_RESULT_ENTRY,
+}}
+pub const WINHTTP_FIRST_OPTION: ::DWORD = WINHTTP_OPTION_CALLBACK;
+pub const WINHTTP_OPTION_CALLBACK: ::DWORD = 1;
+pub const WINHTTP_OPTION_RESOLVE_TIMEOUT: ::DWORD = 2;
+pub const WINHTTP_OPTION_CONNECT_TIMEOUT: ::DWORD = 3;
+pub const WINHTTP_OPTION_CONNECT_RETRIES: ::DWORD = 4;
+pub const WINHTTP_OPTION_SEND_TIMEOUT: ::DWORD = 5;
+pub const WINHTTP_OPTION_RECEIVE_TIMEOUT: ::DWORD = 6;
+pub const WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT: ::DWORD = 7;
+pub const WINHTTP_OPTION_HANDLE_TYPE: ::DWORD = 9;
+pub const WINHTTP_OPTION_READ_BUFFER_SIZE: ::DWORD = 12;
+pub const WINHTTP_OPTION_WRITE_BUFFER_SIZE: ::DWORD = 13;
+pub const WINHTTP_OPTION_PARENT_HANDLE: ::DWORD = 21;
+pub const WINHTTP_OPTION_EXTENDED_ERROR: ::DWORD = 24;
+pub const WINHTTP_OPTION_SECURITY_FLAGS: ::DWORD = 31;
+pub const WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT: ::DWORD = 32;
+pub const WINHTTP_OPTION_URL: ::DWORD = 34;
+pub const WINHTTP_OPTION_SECURITY_KEY_BITNESS: ::DWORD = 36;
+pub const WINHTTP_OPTION_PROXY: ::DWORD = 38;
+pub const WINHTTP_OPTION_PROXY_RESULT_ENTRY: ::DWORD = 39;
+pub const WINHTTP_OPTION_USER_AGENT: ::DWORD = 41;
+pub const WINHTTP_OPTION_CONTEXT_VALUE: ::DWORD = 45;
+pub const WINHTTP_OPTION_CLIENT_CERT_CONTEXT: ::DWORD = 47;
+pub const WINHTTP_OPTION_REQUEST_PRIORITY: ::DWORD = 58;
+pub const WINHTTP_OPTION_HTTP_VERSION: ::DWORD = 59;
+pub const WINHTTP_OPTION_DISABLE_FEATURE: ::DWORD = 63;
+pub const WINHTTP_OPTION_CODEPAGE: ::DWORD = 68;
+pub const WINHTTP_OPTION_MAX_CONNS_PER_SERVER: ::DWORD = 73;
+pub const WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER: ::DWORD = 74;
+pub const WINHTTP_OPTION_AUTOLOGON_POLICY: ::DWORD = 77;
+pub const WINHTTP_OPTION_SERVER_CERT_CONTEXT: ::DWORD = 78;
+pub const WINHTTP_OPTION_ENABLE_FEATURE: ::DWORD = 79;
+pub const WINHTTP_OPTION_WORKER_THREAD_COUNT: ::DWORD = 80;
+pub const WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT: ::DWORD = 81;
+pub const WINHTTP_OPTION_PASSPORT_COBRANDING_URL: ::DWORD = 82;
+pub const WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH: ::DWORD = 83;
+pub const WINHTTP_OPTION_SECURE_PROTOCOLS: ::DWORD = 84;
+pub const WINHTTP_OPTION_ENABLETRACING: ::DWORD = 85;
+pub const WINHTTP_OPTION_PASSPORT_SIGN_OUT: ::DWORD = 86;
+pub const WINHTTP_OPTION_PASSPORT_RETURN_URL: ::DWORD = 87;
+pub const WINHTTP_OPTION_REDIRECT_POLICY: ::DWORD = 88;
+pub const WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS: ::DWORD = 89;
+pub const WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE: ::DWORD = 90;
+pub const WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE: ::DWORD = 91;
+pub const WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE: ::DWORD = 92;
+pub const WINHTTP_OPTION_CONNECTION_INFO: ::DWORD = 93;
+pub const WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST: ::DWORD = 94;
+pub const WINHTTP_OPTION_SPN: ::DWORD = 96;
+pub const WINHTTP_OPTION_GLOBAL_PROXY_CREDS: ::DWORD = 97;
+pub const WINHTTP_OPTION_GLOBAL_SERVER_CREDS: ::DWORD = 98;
+pub const WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT: ::DWORD = 99;
+pub const WINHTTP_OPTION_REJECT_USERPWD_IN_URL: ::DWORD = 100;
+pub const WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS: ::DWORD = 101;
+pub const WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE: ::DWORD = 103;
+pub const WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE: ::DWORD = 104;
+pub const WINHTTP_OPTION_SERVER_SPN_USED: ::DWORD = 106;
+pub const WINHTTP_OPTION_PROXY_SPN_USED: ::DWORD = 107;
+pub const WINHTTP_OPTION_SERVER_CBT: ::DWORD = 108;
+pub const WINHTTP_OPTION_UNSAFE_HEADER_PARSING: ::DWORD = 110;
+pub const WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS: ::DWORD = 111;
+pub const WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET: ::DWORD = 114;
+pub const WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT: ::DWORD = 115;
+pub const WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL: ::DWORD = 116;
+pub const WINHTTP_OPTION_DECOMPRESSION: ::DWORD = 118;
+pub const WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE: ::DWORD = 122;
+pub const WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE: ::DWORD = 123;
+pub const WINHTTP_LAST_OPTION: ::DWORD = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE;
+pub const WINHTTP_OPTION_USERNAME: ::DWORD = 0x1000;
+pub const WINHTTP_OPTION_PASSWORD: ::DWORD = 0x1001;
+pub const WINHTTP_OPTION_PROXY_USERNAME: ::DWORD = 0x1002;
+pub const WINHTTP_OPTION_PROXY_PASSWORD: ::DWORD = 0x1003;
+//552
+pub type WINHTTP_STATUS_CALLBACK = Option<unsafe extern "system" fn(
+ hInternet: HINTERNET, dwContext: ::DWORD_PTR, dwInternetStatus: ::DWORD,
+ lpvStatusInformation: ::LPVOID, dwStatusInformationLength: ::DWORD,
+)>;
+pub type LPWINHTTP_STATUS_CALLBACK = *mut WINHTTP_STATUS_CALLBACK;
+pub const WINHTTP_CALLBACK_STATUS_RESOLVING_NAME: ::DWORD = 0x00000001;
+pub const WINHTTP_CALLBACK_STATUS_NAME_RESOLVED: ::DWORD = 0x00000002;
+pub const WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER: ::DWORD = 0x00000004;
+pub const WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER: ::DWORD = 0x00000008;
+pub const WINHTTP_CALLBACK_STATUS_SENDING_REQUEST: ::DWORD = 0x00000010;
+pub const WINHTTP_CALLBACK_STATUS_REQUEST_SENT: ::DWORD = 0x00000020;
+pub const WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE: ::DWORD = 0x00000040;
+pub const WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED: ::DWORD = 0x00000080;
+pub const WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION: ::DWORD = 0x00000100;
+pub const WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED: ::DWORD = 0x00000200;
+pub const WINHTTP_CALLBACK_STATUS_HANDLE_CREATED: ::DWORD = 0x00000400;
+pub const WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING: ::DWORD = 0x00000800;
+pub const WINHTTP_CALLBACK_STATUS_DETECTING_PROXY: ::DWORD = 0x00001000;
+pub const WINHTTP_CALLBACK_STATUS_REDIRECT: ::DWORD = 0x00004000;
+pub const WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE: ::DWORD = 0x00008000;
+pub const WINHTTP_CALLBACK_STATUS_SECURE_FAILURE: ::DWORD = 0x00010000;
+pub const WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE: ::DWORD = 0x00020000;
+pub const WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE: ::DWORD = 0x00040000;
+pub const WINHTTP_CALLBACK_STATUS_READ_COMPLETE: ::DWORD = 0x00080000;
+pub const WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE: ::DWORD = 0x00100000;
+pub const WINHTTP_CALLBACK_STATUS_REQUEST_ERROR: ::DWORD = 0x00200000;
+pub const WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE: ::DWORD = 0x00400000;
+pub const WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE: ::DWORD = 0x01000000;
+pub const WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE: ::DWORD = 0x02000000;
+pub const WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE: ::DWORD = 0x04000000;
+pub const WINHTTP_CALLBACK_FLAG_RESOLVE_NAME: ::DWORD = WINHTTP_CALLBACK_STATUS_RESOLVING_NAME
+ | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED;
+pub const WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER;
+pub const WINHTTP_CALLBACK_FLAG_SEND_REQUEST: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT;
+pub const WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED;
+pub const WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED;
+pub const WINHTTP_CALLBACK_FLAG_HANDLES: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING;
+pub const WINHTTP_CALLBACK_FLAG_DETECTING_PROXY: ::DWORD = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY;
+pub const WINHTTP_CALLBACK_FLAG_REDIRECT: ::DWORD = WINHTTP_CALLBACK_STATUS_REDIRECT;
+pub const WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE;
+pub const WINHTTP_CALLBACK_FLAG_SECURE_FAILURE: ::DWORD = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE;
+pub const WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE;
+pub const WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE;
+pub const WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE: ::DWORD = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE;
+pub const WINHTTP_CALLBACK_FLAG_READ_COMPLETE: ::DWORD = WINHTTP_CALLBACK_STATUS_READ_COMPLETE;
+pub const WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE: ::DWORD = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE;
+pub const WINHTTP_CALLBACK_FLAG_REQUEST_ERROR: ::DWORD = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR;
+pub const WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE;
+pub const WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS: ::DWORD =
+ WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
+ | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE | WINHTTP_CALLBACK_STATUS_READ_COMPLETE
+ | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
+ | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE;
+pub const WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS: ::DWORD = 0xffffffff;
+pub const WINHTTP_QUERY_MIME_VERSION: ::DWORD = 0;
+pub const WINHTTP_QUERY_CONTENT_TYPE: ::DWORD = 1;
+pub const WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING: ::DWORD = 2;
+pub const WINHTTP_QUERY_CONTENT_ID: ::DWORD = 3;
+pub const WINHTTP_QUERY_CONTENT_DESCRIPTION: ::DWORD = 4;
+pub const WINHTTP_QUERY_CONTENT_LENGTH: ::DWORD = 5;
+pub const WINHTTP_QUERY_CONTENT_LANGUAGE: ::DWORD = 6;
+pub const WINHTTP_QUERY_ALLOW: ::DWORD = 7;
+pub const WINHTTP_QUERY_PUBLIC: ::DWORD = 8;
+pub const WINHTTP_QUERY_DATE: ::DWORD = 9;
+pub const WINHTTP_QUERY_EXPIRES: ::DWORD = 10;
+pub const WINHTTP_QUERY_LAST_MODIFIED: ::DWORD = 11;
+pub const WINHTTP_QUERY_MESSAGE_ID: ::DWORD = 12;
+pub const WINHTTP_QUERY_URI: ::DWORD = 13;
+pub const WINHTTP_QUERY_DERIVED_FROM: ::DWORD = 14;
+pub const WINHTTP_QUERY_COST: ::DWORD = 15;
+pub const WINHTTP_QUERY_LINK: ::DWORD = 16;
+pub const WINHTTP_QUERY_PRAGMA: ::DWORD = 17;
+pub const WINHTTP_QUERY_VERSION: ::DWORD = 18;
+pub const WINHTTP_QUERY_STATUS_CODE: ::DWORD = 19;
+pub const WINHTTP_QUERY_STATUS_TEXT: ::DWORD = 20;
+pub const WINHTTP_QUERY_RAW_HEADERS: ::DWORD = 21;
+pub const WINHTTP_QUERY_RAW_HEADERS_CRLF: ::DWORD = 22;
+pub const WINHTTP_QUERY_CONNECTION: ::DWORD = 23;
+pub const WINHTTP_QUERY_ACCEPT: ::DWORD = 24;
+pub const WINHTTP_QUERY_ACCEPT_CHARSET: ::DWORD = 25;
+pub const WINHTTP_QUERY_ACCEPT_ENCODING: ::DWORD = 26;
+pub const WINHTTP_QUERY_ACCEPT_LANGUAGE: ::DWORD = 27;
+pub const WINHTTP_QUERY_AUTHORIZATION: ::DWORD = 28;
+pub const WINHTTP_QUERY_CONTENT_ENCODING: ::DWORD = 29;
+pub const WINHTTP_QUERY_FORWARDED: ::DWORD = 30;
+pub const WINHTTP_QUERY_FROM: ::DWORD = 31;
+pub const WINHTTP_QUERY_IF_MODIFIED_SINCE: ::DWORD = 32;
+pub const WINHTTP_QUERY_LOCATION: ::DWORD = 33;
+pub const WINHTTP_QUERY_ORIG_URI: ::DWORD = 34;
+pub const WINHTTP_QUERY_REFERER: ::DWORD = 35;
+pub const WINHTTP_QUERY_RETRY_AFTER: ::DWORD = 36;
+pub const WINHTTP_QUERY_SERVER: ::DWORD = 37;
+pub const WINHTTP_QUERY_TITLE: ::DWORD = 38;
+pub const WINHTTP_QUERY_USER_AGENT: ::DWORD = 39;
+pub const WINHTTP_QUERY_WWW_AUTHENTICATE: ::DWORD = 40;
+pub const WINHTTP_QUERY_PROXY_AUTHENTICATE: ::DWORD = 41;
+pub const WINHTTP_QUERY_ACCEPT_RANGES: ::DWORD = 42;
+pub const WINHTTP_QUERY_SET_COOKIE: ::DWORD = 43;
+pub const WINHTTP_QUERY_COOKIE: ::DWORD = 44;
+pub const WINHTTP_QUERY_REQUEST_METHOD: ::DWORD = 45;
+pub const WINHTTP_QUERY_REFRESH: ::DWORD = 46;
+pub const WINHTTP_QUERY_CONTENT_DISPOSITION: ::DWORD = 47;
+pub const WINHTTP_QUERY_AGE: ::DWORD = 48;
+pub const WINHTTP_QUERY_CACHE_CONTROL: ::DWORD = 49;
+pub const WINHTTP_QUERY_CONTENT_BASE: ::DWORD = 50;
+pub const WINHTTP_QUERY_CONTENT_LOCATION: ::DWORD = 51;
+pub const WINHTTP_QUERY_CONTENT_MD5: ::DWORD = 52;
+pub const WINHTTP_QUERY_CONTENT_RANGE: ::DWORD = 53;
+pub const WINHTTP_QUERY_ETAG: ::DWORD = 54;
+pub const WINHTTP_QUERY_HOST: ::DWORD = 55;
+pub const WINHTTP_QUERY_IF_MATCH: ::DWORD = 56;
+pub const WINHTTP_QUERY_IF_NONE_MATCH: ::DWORD = 57;
+pub const WINHTTP_QUERY_IF_RANGE: ::DWORD = 58;
+pub const WINHTTP_QUERY_IF_UNMODIFIED_SINCE: ::DWORD = 59;
+pub const WINHTTP_QUERY_MAX_FORWARDS: ::DWORD = 60;
+pub const WINHTTP_QUERY_PROXY_AUTHORIZATION: ::DWORD = 61;
+pub const WINHTTP_QUERY_RANGE: ::DWORD = 62;
+pub const WINHTTP_QUERY_TRANSFER_ENCODING: ::DWORD = 63;
+pub const WINHTTP_QUERY_UPGRADE: ::DWORD = 64;
+pub const WINHTTP_QUERY_VARY: ::DWORD = 65;
+pub const WINHTTP_QUERY_VIA: ::DWORD = 66;
+pub const WINHTTP_QUERY_WARNING: ::DWORD = 67;
+pub const WINHTTP_QUERY_EXPECT: ::DWORD = 68;
+pub const WINHTTP_QUERY_PROXY_CONNECTION: ::DWORD = 69;
+pub const WINHTTP_QUERY_UNLESS_MODIFIED_SINCE: ::DWORD = 70;
+pub const WINHTTP_QUERY_PROXY_SUPPORT: ::DWORD = 75;
+pub const WINHTTP_QUERY_AUTHENTICATION_INFO: ::DWORD = 76;
+pub const WINHTTP_QUERY_PASSPORT_URLS: ::DWORD = 77;
+pub const WINHTTP_QUERY_PASSPORT_CONFIG: ::DWORD = 78;
+pub const WINHTTP_QUERY_MAX: ::DWORD = 78;
+pub const WINHTTP_QUERY_CUSTOM: ::DWORD = 65535;
+pub const WINHTTP_QUERY_FLAG_REQUEST_HEADERS: ::DWORD = 0x80000000;
+pub const WINHTTP_QUERY_FLAG_SYSTEMTIME: ::DWORD = 0x40000000;
+pub const WINHTTP_QUERY_FLAG_NUMBER: ::DWORD = 0x20000000;
+pub const HTTP_STATUS_CONTINUE: ::DWORD = 100;
+pub const HTTP_STATUS_SWITCH_PROTOCOLS: ::DWORD = 101;
+pub const HTTP_STATUS_OK: ::DWORD = 200;
+pub const HTTP_STATUS_CREATED: ::DWORD = 201;
+pub const HTTP_STATUS_ACCEPTED: ::DWORD = 202;
+pub const HTTP_STATUS_PARTIAL: ::DWORD = 203;
+pub const HTTP_STATUS_NO_CONTENT: ::DWORD = 204;
+pub const HTTP_STATUS_RESET_CONTENT: ::DWORD = 205;
+pub const HTTP_STATUS_PARTIAL_CONTENT: ::DWORD = 206;
+pub const HTTP_STATUS_WEBDAV_MULTI_STATUS: ::DWORD = 207;
+pub const HTTP_STATUS_AMBIGUOUS: ::DWORD = 300;
+pub const HTTP_STATUS_MOVED: ::DWORD = 301;
+pub const HTTP_STATUS_REDIRECT: ::DWORD = 302;
+pub const HTTP_STATUS_REDIRECT_METHOD: ::DWORD = 303;
+pub const HTTP_STATUS_NOT_MODIFIED: ::DWORD = 304;
+pub const HTTP_STATUS_USE_PROXY: ::DWORD = 305;
+pub const HTTP_STATUS_REDIRECT_KEEP_VERB: ::DWORD = 307;
+pub const HTTP_STATUS_BAD_REQUEST: ::DWORD = 400;
+pub const HTTP_STATUS_DENIED: ::DWORD = 401;
+pub const HTTP_STATUS_PAYMENT_REQ: ::DWORD = 402;
+pub const HTTP_STATUS_FORBIDDEN: ::DWORD = 403;
+pub const HTTP_STATUS_NOT_FOUND: ::DWORD = 404;
+pub const HTTP_STATUS_BAD_METHOD: ::DWORD = 405;
+pub const HTTP_STATUS_NONE_ACCEPTABLE: ::DWORD = 406;
+pub const HTTP_STATUS_PROXY_AUTH_REQ: ::DWORD = 407;
+pub const HTTP_STATUS_REQUEST_TIMEOUT: ::DWORD = 408;
+pub const HTTP_STATUS_CONFLICT: ::DWORD = 409;
+pub const HTTP_STATUS_GONE: ::DWORD = 410;
+pub const HTTP_STATUS_LENGTH_REQUIRED: ::DWORD = 411;
+pub const HTTP_STATUS_PRECOND_FAILED: ::DWORD = 412;
+pub const HTTP_STATUS_REQUEST_TOO_LARGE: ::DWORD = 413;
+pub const HTTP_STATUS_URI_TOO_LONG: ::DWORD = 414;
+pub const HTTP_STATUS_UNSUPPORTED_MEDIA: ::DWORD = 415;
+pub const HTTP_STATUS_RETRY_WITH: ::DWORD = 449;
+pub const HTTP_STATUS_SERVER_ERROR: ::DWORD = 500;
+pub const HTTP_STATUS_NOT_SUPPORTED: ::DWORD = 501;
+pub const HTTP_STATUS_BAD_GATEWAY: ::DWORD = 502;
+pub const HTTP_STATUS_SERVICE_UNAVAIL: ::DWORD = 503;
+pub const HTTP_STATUS_GATEWAY_TIMEOUT: ::DWORD = 504;
+pub const HTTP_STATUS_VERSION_NOT_SUP: ::DWORD = 505;
+pub const HTTP_STATUS_FIRST: ::DWORD = HTTP_STATUS_CONTINUE;
+pub const HTTP_STATUS_LAST: ::DWORD = HTTP_STATUS_VERSION_NOT_SUP;
+pub const WINHTTP_ACCESS_TYPE_DEFAULT_PROXY: ::DWORD = 0;
+pub const WINHTTP_ACCESS_TYPE_NO_PROXY: ::DWORD = 1;
+pub const WINHTTP_ACCESS_TYPE_NAMED_PROXY: ::DWORD = 3;
+pub const WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY: ::DWORD = 4;
+pub const WINHTTP_ERROR_BASE: ::DWORD = 12000;
+pub const ERROR_WINHTTP_OUT_OF_HANDLES: ::DWORD = WINHTTP_ERROR_BASE + 1;
+pub const ERROR_WINHTTP_TIMEOUT: ::DWORD = WINHTTP_ERROR_BASE + 2;
+pub const ERROR_WINHTTP_INTERNAL_ERROR: ::DWORD = WINHTTP_ERROR_BASE + 4;
+pub const ERROR_WINHTTP_INVALID_URL: ::DWORD = WINHTTP_ERROR_BASE + 5;
+pub const ERROR_WINHTTP_UNRECOGNIZED_SCHEME: ::DWORD = WINHTTP_ERROR_BASE + 6;
+pub const ERROR_WINHTTP_NAME_NOT_RESOLVED: ::DWORD = WINHTTP_ERROR_BASE + 7;
+pub const ERROR_WINHTTP_INVALID_OPTION: ::DWORD = WINHTTP_ERROR_BASE + 9;
+pub const ERROR_WINHTTP_OPTION_NOT_SETTABLE: ::DWORD = WINHTTP_ERROR_BASE + 11;
+pub const ERROR_WINHTTP_SHUTDOWN: ::DWORD = WINHTTP_ERROR_BASE + 12;
+pub const ERROR_WINHTTP_LOGIN_FAILURE: ::DWORD = WINHTTP_ERROR_BASE + 15;
+pub const ERROR_WINHTTP_OPERATION_CANCELLED: ::DWORD = WINHTTP_ERROR_BASE + 17;
+pub const ERROR_WINHTTP_INCORRECT_HANDLE_TYPE: ::DWORD = WINHTTP_ERROR_BASE + 18;
+pub const ERROR_WINHTTP_INCORRECT_HANDLE_STATE: ::DWORD = WINHTTP_ERROR_BASE + 19;
+pub const ERROR_WINHTTP_CANNOT_CONNECT: ::DWORD = WINHTTP_ERROR_BASE + 29;
+pub const ERROR_WINHTTP_CONNECTION_ERROR: ::DWORD = WINHTTP_ERROR_BASE + 30;
+pub const ERROR_WINHTTP_RESEND_REQUEST: ::DWORD = WINHTTP_ERROR_BASE + 32;
+pub const ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED: ::DWORD = WINHTTP_ERROR_BASE + 44;
+pub const ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN: ::DWORD = WINHTTP_ERROR_BASE + 100;
+pub const ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND: ::DWORD = WINHTTP_ERROR_BASE + 101;
+pub const ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND: ::DWORD = WINHTTP_ERROR_BASE + 102;
+pub const ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN: ::DWORD = WINHTTP_ERROR_BASE + 103;
+pub const ERROR_WINHTTP_HEADER_NOT_FOUND: ::DWORD = WINHTTP_ERROR_BASE + 150;
+pub const ERROR_WINHTTP_INVALID_SERVER_RESPONSE: ::DWORD = WINHTTP_ERROR_BASE + 152;
+pub const ERROR_WINHTTP_INVALID_HEADER: ::DWORD = WINHTTP_ERROR_BASE + 153;
+pub const ERROR_WINHTTP_INVALID_QUERY_REQUEST: ::DWORD = WINHTTP_ERROR_BASE + 154;
+pub const ERROR_WINHTTP_HEADER_ALREADY_EXISTS: ::DWORD = WINHTTP_ERROR_BASE + 155;
+pub const ERROR_WINHTTP_REDIRECT_FAILED: ::DWORD = WINHTTP_ERROR_BASE + 156;
+pub const ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR: ::DWORD = WINHTTP_ERROR_BASE + 178;
+pub const ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT: ::DWORD = WINHTTP_ERROR_BASE + 166;
+pub const ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT: ::DWORD = WINHTTP_ERROR_BASE + 167;
+pub const ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE: ::DWORD = WINHTTP_ERROR_BASE + 176;
+pub const ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR: ::DWORD = WINHTTP_ERROR_BASE + 177;
+pub const ERROR_WINHTTP_NOT_INITIALIZED: ::DWORD = WINHTTP_ERROR_BASE + 172;
+pub const ERROR_WINHTTP_SECURE_FAILURE: ::DWORD = WINHTTP_ERROR_BASE + 175;
+pub const ERROR_WINHTTP_SECURE_CERT_DATE_INVALID: ::DWORD = WINHTTP_ERROR_BASE + 37;
+pub const ERROR_WINHTTP_SECURE_CERT_CN_INVALID: ::DWORD = WINHTTP_ERROR_BASE + 38;
+pub const ERROR_WINHTTP_SECURE_INVALID_CA: ::DWORD = WINHTTP_ERROR_BASE + 45;
+pub const ERROR_WINHTTP_SECURE_CERT_REV_FAILED: ::DWORD = WINHTTP_ERROR_BASE + 57;
+pub const ERROR_WINHTTP_SECURE_CHANNEL_ERROR: ::DWORD = WINHTTP_ERROR_BASE + 157;
+pub const ERROR_WINHTTP_SECURE_INVALID_CERT: ::DWORD = WINHTTP_ERROR_BASE + 169;
+pub const ERROR_WINHTTP_SECURE_CERT_REVOKED: ::DWORD = WINHTTP_ERROR_BASE + 170;
+pub const ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE: ::DWORD = WINHTTP_ERROR_BASE + 179;
+pub const ERROR_WINHTTP_AUTODETECTION_FAILED: ::DWORD = WINHTTP_ERROR_BASE + 180;
+pub const ERROR_WINHTTP_HEADER_COUNT_EXCEEDED: ::DWORD = WINHTTP_ERROR_BASE + 181;
+pub const ERROR_WINHTTP_HEADER_SIZE_OVERFLOW: ::DWORD = WINHTTP_ERROR_BASE + 182;
+pub const ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW: ::DWORD = WINHTTP_ERROR_BASE + 183;
+pub const ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW: ::DWORD = WINHTTP_ERROR_BASE + 184;
+pub const ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY: ::DWORD = WINHTTP_ERROR_BASE + 185;
+pub const ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY: ::DWORD = WINHTTP_ERROR_BASE + 186;
+pub const WINHTTP_ERROR_LAST: ::DWORD = WINHTTP_ERROR_BASE + 186;
+pub const WINHTTP_RESET_STATE: ::DWORD = 0x00000001;
+pub const WINHTTP_RESET_SWPAD_CURRENT_NETWORK: ::DWORD = 0x00000002;
+pub const WINHTTP_RESET_SWPAD_ALL: ::DWORD = 0x00000004;
+pub const WINHTTP_RESET_SCRIPT_CACHE: ::DWORD = 0x00000008;
+pub const WINHTTP_RESET_ALL: ::DWORD = 0x0000FFFF;
+pub const WINHTTP_RESET_NOTIFY_NETWORK_CHANGED: ::DWORD = 0x00010000;
+pub const WINHTTP_RESET_OUT_OF_PROC: ::DWORD = 0x00020000;
+STRUCT!{struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG {
+ fAutoDetect: ::BOOL,
+ lpszAutoConfigUrl: ::LPWSTR,
+ lpszProxy: ::LPWSTR,
+ lpszProxyBypass: ::LPWSTR,
+}}
+//1370
+ENUM!{enum WINHTTP_WEB_SOCKET_OPERATION {
+ WINHTTP_WEB_SOCKET_SEND_OPERATION = 0,
+ WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1,
+ WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2,
+ WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3,
+}}
+ENUM!{enum WINHTTP_WEB_SOCKET_BUFFER_TYPE {
+ WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0,
+ WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1,
+ WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2,
+ WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3,
+ WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4,
+}}
+ENUM!{enum WINHTTP_WEB_SOCKET_CLOSE_STATUS {
+ WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000,
+ WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001,
+ WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002,
+ WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003,
+ WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005,
+ WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006,
+ WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007,
+ WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008,
+ WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009,
+ WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010,
+ WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011,
+ WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/winioctl.rs b/third_party/rust/winapi-0.2.8/src/winioctl.rs
new file mode 100644
index 0000000000..de3b96107c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winioctl.rs
@@ -0,0 +1,754 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This module defines the 32-Bit Windows Device I/O control codes.
+//123
+pub const FILE_DEVICE_BEEP: ::DWORD = 0x00000001;
+pub const FILE_DEVICE_CD_ROM: ::DWORD = 0x00000002;
+pub const FILE_DEVICE_CD_ROM_FILE_SYSTEM: ::DWORD = 0x00000003;
+pub const FILE_DEVICE_CONTROLLER: ::DWORD = 0x00000004;
+pub const FILE_DEVICE_DATALINK: ::DWORD = 0x00000005;
+pub const FILE_DEVICE_DFS: ::DWORD = 0x00000006;
+pub const FILE_DEVICE_DISK: ::DWORD = 0x00000007;
+pub const FILE_DEVICE_DISK_FILE_SYSTEM: ::DWORD = 0x00000008;
+pub const FILE_DEVICE_FILE_SYSTEM: ::DWORD = 0x00000009;
+pub const FILE_DEVICE_INPORT_PORT: ::DWORD = 0x0000000a;
+pub const FILE_DEVICE_KEYBOARD: ::DWORD = 0x0000000b;
+pub const FILE_DEVICE_MAILSLOT: ::DWORD = 0x0000000c;
+pub const FILE_DEVICE_MIDI_IN: ::DWORD = 0x0000000d;
+pub const FILE_DEVICE_MIDI_OUT: ::DWORD = 0x0000000e;
+pub const FILE_DEVICE_MOUSE: ::DWORD = 0x0000000f;
+pub const FILE_DEVICE_MULTI_UNC_PROVIDER: ::DWORD = 0x00000010;
+pub const FILE_DEVICE_NAMED_PIPE: ::DWORD = 0x00000011;
+pub const FILE_DEVICE_NETWORK: ::DWORD = 0x00000012;
+pub const FILE_DEVICE_NETWORK_BROWSER: ::DWORD = 0x00000013;
+pub const FILE_DEVICE_NETWORK_FILE_SYSTEM: ::DWORD = 0x00000014;
+pub const FILE_DEVICE_NULL: ::DWORD = 0x00000015;
+pub const FILE_DEVICE_PARALLEL_PORT: ::DWORD = 0x00000016;
+pub const FILE_DEVICE_PHYSICAL_NETCARD: ::DWORD = 0x00000017;
+pub const FILE_DEVICE_PRINTER: ::DWORD = 0x00000018;
+pub const FILE_DEVICE_SCANNER: ::DWORD = 0x00000019;
+pub const FILE_DEVICE_SERIAL_MOUSE_PORT: ::DWORD = 0x0000001a;
+pub const FILE_DEVICE_SERIAL_PORT: ::DWORD = 0x0000001b;
+pub const FILE_DEVICE_SCREEN: ::DWORD = 0x0000001c;
+pub const FILE_DEVICE_SOUND: ::DWORD = 0x0000001d;
+pub const FILE_DEVICE_STREAMS: ::DWORD = 0x0000001e;
+pub const FILE_DEVICE_TAPE: ::DWORD = 0x0000001f;
+pub const FILE_DEVICE_TAPE_FILE_SYSTEM: ::DWORD = 0x00000020;
+pub const FILE_DEVICE_TRANSPORT: ::DWORD = 0x00000021;
+pub const FILE_DEVICE_UNKNOWN: ::DWORD = 0x00000022;
+pub const FILE_DEVICE_VIDEO: ::DWORD = 0x00000023;
+pub const FILE_DEVICE_VIRTUAL_DISK: ::DWORD = 0x00000024;
+pub const FILE_DEVICE_WAVE_IN: ::DWORD = 0x00000025;
+pub const FILE_DEVICE_WAVE_OUT: ::DWORD = 0x00000026;
+pub const FILE_DEVICE_8042_PORT: ::DWORD = 0x00000027;
+pub const FILE_DEVICE_NETWORK_REDIRECTOR: ::DWORD = 0x00000028;
+pub const FILE_DEVICE_BATTERY: ::DWORD = 0x00000029;
+pub const FILE_DEVICE_BUS_EXTENDER: ::DWORD = 0x0000002a;
+pub const FILE_DEVICE_MODEM: ::DWORD = 0x0000002b;
+pub const FILE_DEVICE_VDM: ::DWORD = 0x0000002c;
+pub const FILE_DEVICE_MASS_STORAGE: ::DWORD = 0x0000002d;
+pub const FILE_DEVICE_SMB: ::DWORD = 0x0000002e;
+pub const FILE_DEVICE_KS: ::DWORD = 0x0000002f;
+pub const FILE_DEVICE_CHANGER: ::DWORD = 0x00000030;
+pub const FILE_DEVICE_SMARTCARD: ::DWORD = 0x00000031;
+pub const FILE_DEVICE_ACPI: ::DWORD = 0x00000032;
+pub const FILE_DEVICE_DVD: ::DWORD = 0x00000033;
+pub const FILE_DEVICE_FULLSCREEN_VIDEO: ::DWORD = 0x00000034;
+pub const FILE_DEVICE_DFS_FILE_SYSTEM: ::DWORD = 0x00000035;
+pub const FILE_DEVICE_DFS_VOLUME: ::DWORD = 0x00000036;
+pub const FILE_DEVICE_SERENUM: ::DWORD = 0x00000037;
+pub const FILE_DEVICE_TERMSRV: ::DWORD = 0x00000038;
+pub const FILE_DEVICE_KSEC: ::DWORD = 0x00000039;
+pub const FILE_DEVICE_FIPS: ::DWORD = 0x0000003A;
+pub const FILE_DEVICE_INFINIBAND: ::DWORD = 0x0000003B;
+pub const FILE_DEVICE_VMBUS: ::DWORD = 0x0000003E;
+pub const FILE_DEVICE_CRYPT_PROVIDER: ::DWORD = 0x0000003F;
+pub const FILE_DEVICE_WPD: ::DWORD = 0x00000040;
+pub const FILE_DEVICE_BLUETOOTH: ::DWORD = 0x00000041;
+pub const FILE_DEVICE_MT_COMPOSITE: ::DWORD = 0x00000042;
+pub const FILE_DEVICE_MT_TRANSPORT: ::DWORD = 0x00000043;
+pub const FILE_DEVICE_BIOMETRIC: ::DWORD = 0x00000044;
+pub const FILE_DEVICE_PMI: ::DWORD = 0x00000045;
+pub const FILE_DEVICE_EHSTOR: ::DWORD = 0x00000046;
+pub const FILE_DEVICE_DEVAPI: ::DWORD = 0x00000047;
+pub const FILE_DEVICE_GPIO: ::DWORD = 0x00000048;
+pub const FILE_DEVICE_USBEX: ::DWORD = 0x00000049;
+pub const FILE_DEVICE_CONSOLE: ::DWORD = 0x00000050;
+pub const FILE_DEVICE_NFP: ::DWORD = 0x00000051;
+pub const FILE_DEVICE_SYSENV: ::DWORD = 0x00000052;
+pub const FILE_DEVICE_VIRTUAL_BLOCK: ::DWORD = 0x00000053;
+pub const FILE_DEVICE_POINT_OF_SERVICE: ::DWORD = 0x00000054;
+//224
+pub const METHOD_BUFFERED: ::DWORD = 0;
+pub const METHOD_IN_DIRECT: ::DWORD = 1;
+pub const METHOD_OUT_DIRECT: ::DWORD = 2;
+pub const METHOD_NEITHER: ::DWORD = 3;
+//253
+pub const FILE_ANY_ACCESS: ::DWORD = 0;
+pub const FILE_SPECIAL_ACCESS: ::DWORD = FILE_ANY_ACCESS;
+pub const FILE_READ_ACCESS: ::DWORD = 0x0001;
+pub const FILE_WRITE_ACCESS: ::DWORD = 0x0002;
+//281
+pub const IOCTL_STORAGE_BASE: ::DWORD = FILE_DEVICE_MASS_STORAGE;
+pub const IOCTL_STORAGE_CHECK_VERIFY: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0200,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_CHECK_VERIFY2: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0200,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_MEDIA_REMOVAL: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0201,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_EJECT_MEDIA: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0202,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_LOAD_MEDIA: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0203,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_LOAD_MEDIA2: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0203,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_RESERVE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_RELEASE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_FIND_NEW_DEVICES: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0206,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_EJECTION_CONTROL: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0250,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_MCN_CONTROL: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0251,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_GET_MEDIA_TYPES: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0300,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_GET_MEDIA_TYPES_EX: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0301,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0304,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_GET_HOTPLUG_INFO: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0305,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_SET_HOTPLUG_INFO: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0306,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_RESET_BUS: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_RESET_DEVICE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0401,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_BREAK_RESERVATION: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0405,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_PERSISTENT_RESERVE_IN: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0406,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_PERSISTENT_RESERVE_OUT: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0407,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_GET_DEVICE_NUMBER: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0420,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_PREDICT_FAILURE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0440,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_FAILURE_PREDICTION_CONFIG: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0441,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_READ_CAPACITY: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0450,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_GET_DEVICE_TELEMETRY: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0470,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_DEVICE_TELEMETRY_NOTIFY: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0471,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_DEVICE_TELEMETRY_QUERY_CAPS: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE,
+ 0x0472, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_GET_DEVICE_TELEMETRY_RAW: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0473,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_QUERY_PROPERTY: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0500,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0501,
+ METHOD_BUFFERED, FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE,
+ 0x0502, METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_GET_BC_PROPERTIES: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0600,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_STORAGE_ALLOCATE_BC_STREAM: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0601,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_FREE_BC_STREAM: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0602,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE,
+ 0x0620, METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_START_DATA_INTEGRITY_CHECK: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0621,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_STOP_DATA_INTEGRITY_CHECK: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0622,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const OBSOLETE_IOCTL_STORAGE_RESET_BUS: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0400,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const OBSOLETE_IOCTL_STORAGE_RESET_DEVICE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0401,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_STORAGE_ENABLE_IDLE_POWER: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0720,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_GET_IDLE_POWERUP_REASON: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0721,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_POWER_ACTIVE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0722,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_POWER_IDLE: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0723,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_STORAGE_EVENT_NOTIFICATION: ::DWORD = CTL_CODE!(IOCTL_STORAGE_BASE, 0x0724,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+//2627
+pub const IOCTL_DISK_BASE: ::DWORD = FILE_DEVICE_DISK;
+pub const IOCTL_DISK_GET_DRIVE_GEOMETRY: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0000,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_GET_PARTITION_INFO: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0001,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_DISK_SET_PARTITION_INFO: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0002,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GET_DRIVE_LAYOUT: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0003,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_DISK_SET_DRIVE_LAYOUT: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0004,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_VERIFY: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_FORMAT_TRACKS: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_REASSIGN_BLOCKS: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_PERFORMANCE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_IS_WRITABLE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_LOGGING: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_FORMAT_TRACKS_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x000b,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_HISTOGRAM_STRUCTURE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x000c,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_HISTOGRAM_DATA: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_HISTOGRAM_RESET: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_REQUEST_STRUCTURE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x000f,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_REQUEST_DATA: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_PERFORMANCE_OFF: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0018, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_CONTROLLER_NUMBER: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0011,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const SMART_GET_VERSION: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const SMART_SEND_DRIVE_COMMAND: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const SMART_RCV_DRIVE_DATA: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GET_PARTITION_INFO_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0012,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_SET_PARTITION_INFO_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0013,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GET_DRIVE_LAYOUT_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0014,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_SET_DRIVE_LAYOUT_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0015,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_CREATE_DISK: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0016, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GET_LENGTH_INFO: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_GET_DRIVE_GEOMETRY_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0028,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_REASSIGN_BLOCKS_EX: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0029,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_UPDATE_DRIVE_SIZE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0032,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GROW_PARTITION: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0034, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GET_CACHE_INFORMATION: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0035,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_DISK_SET_CACHE_INFORMATION: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0036,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_GET_WRITE_CACHE_STATE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0037,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const OBSOLETE_DISK_GET_WRITE_CACHE_STATE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0037,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_DISK_DELETE_DRIVE_LAYOUT: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0040,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_UPDATE_PROPERTIES: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0050,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_FORMAT_DRIVE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x00f3, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_SENSE_DEVICE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x00f8, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_CHECK_VERIFY: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_MEDIA_REMOVAL: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_EJECT_MEDIA: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_LOAD_MEDIA: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_RESERVE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_RELEASE: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const IOCTL_DISK_FIND_NEW_DEVICES: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0206,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_DISK_GET_MEDIA_TYPES: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_DISK_GET_DISK_ATTRIBUTES: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x003c,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const IOCTL_DISK_SET_DISK_ATTRIBUTES: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x003d,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_DISK_RESET_SNAPSHOT_INFO: ::DWORD = CTL_CODE!(IOCTL_DISK_BASE, 0x0084,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+//3907
+pub const IOCTL_CHANGER_BASE: ::DWORD = FILE_DEVICE_CHANGER;
+pub const IOCTL_CHANGER_GET_PARAMETERS: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0000,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_GET_STATUS: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0001,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_GET_PRODUCT_DATA: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0002,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_SET_ACCESS: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0004,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_CHANGER_GET_ELEMENT_STATUS: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0005,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0006,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_SET_POSITION: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0007,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_EXCHANGE_MEDIUM: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0008,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_MOVE_MEDIUM: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x0009,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_REINITIALIZE_TRANSPORT: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x000A,
+ METHOD_BUFFERED, FILE_READ_ACCESS);
+pub const IOCTL_CHANGER_QUERY_VOLUME_TAGS: ::DWORD = CTL_CODE!(IOCTL_CHANGER_BASE, 0x000B,
+ METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_SERIAL_LSRMST_INSERT: ::DWORD = CTL_CODE!(FILE_DEVICE_SERIAL_PORT, 31,
+ METHOD_BUFFERED,FILE_ANY_ACCESS);
+pub const IOCTL_SERENUM_EXPOSE_HARDWARE: ::DWORD = CTL_CODE!(FILE_DEVICE_SERENUM, 128,
+ METHOD_BUFFERED,FILE_ANY_ACCESS);
+pub const IOCTL_SERENUM_REMOVE_HARDWARE: ::DWORD = CTL_CODE!(FILE_DEVICE_SERENUM, 129,
+ METHOD_BUFFERED,FILE_ANY_ACCESS);
+pub const IOCTL_SERENUM_PORT_DESC: ::DWORD = CTL_CODE!(FILE_DEVICE_SERENUM, 130,
+ METHOD_BUFFERED,FILE_ANY_ACCESS);
+pub const IOCTL_SERENUM_GET_PORT_NAME: ::DWORD = CTL_CODE!(FILE_DEVICE_SERENUM, 131,
+ METHOD_BUFFERED,FILE_ANY_ACCESS);
+//4690
+pub const FSCTL_REQUEST_OPLOCK_LEVEL_1: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 0,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_REQUEST_OPLOCK_LEVEL_2: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 1,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_REQUEST_BATCH_OPLOCK: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 2,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_OPLOCK_BREAK_ACKNOWLEDGE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 3,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_OPBATCH_ACK_CLOSE_PENDING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 4,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_OPLOCK_BREAK_NOTIFY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 5,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_LOCK_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_UNLOCK_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_DISMOUNT_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_IS_VOLUME_MOUNTED: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 10,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_IS_PATHNAME_VALID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 11,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_MARK_VOLUME_DIRTY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 12,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_RETRIEVAL_POINTERS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 14,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_GET_COMPRESSION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SET_COMPRESSION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED,
+ ::FILE_READ_DATA | ::FILE_WRITE_DATA);
+pub const FSCTL_SET_BOOTLOADER_ACCESSED: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 19,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_MARK_AS_SYSTEM_HIVE: ::DWORD = FSCTL_SET_BOOTLOADER_ACCESSED;
+pub const FSCTL_OPLOCK_BREAK_ACK_NO_2: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 20,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_INVALIDATE_VOLUMES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 21,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_FAT_BPB: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_REQUEST_FILTER_OPLOCK: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 23,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_FILESYSTEM_GET_STATISTICS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 24,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_GET_NTFS_VOLUME_DATA: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 25,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_GET_NTFS_FILE_RECORD: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 26,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_GET_VOLUME_BITMAP: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_GET_RETRIEVAL_POINTERS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 28,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_MOVE_FILE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED,
+ FILE_SPECIAL_ACCESS);
+pub const FSCTL_IS_VOLUME_DIRTY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_ALLOW_EXTENDED_DASD_IO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 32,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_FIND_FILES_BY_SID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SET_OBJECT_ID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED,
+ FILE_SPECIAL_ACCESS);
+pub const FSCTL_GET_OBJECT_ID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_DELETE_OBJECT_ID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED,
+ FILE_SPECIAL_ACCESS);
+pub const FSCTL_SET_REPARSE_POINT: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 41,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_GET_REPARSE_POINT: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 42,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_DELETE_REPARSE_POINT: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 43,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_ENUM_USN_DATA: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 44,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_SECURITY_ID_CHECK: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER,
+ ::FILE_READ_DATA);
+pub const FSCTL_READ_USN_JOURNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SET_OBJECT_ID_EXTENDED: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 47,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_CREATE_OR_GET_OBJECT_ID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 48,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SET_SPARSE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED,
+ FILE_SPECIAL_ACCESS);
+pub const FSCTL_SET_ZERO_DATA: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_QUERY_ALLOCATED_RANGES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 51,
+ METHOD_NEITHER, ::FILE_READ_DATA);
+pub const FSCTL_ENABLE_UPGRADE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_SET_ENCRYPTION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_ENCRYPTION_FSCTL_IO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 54,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_WRITE_RAW_ENCRYPTED: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 55,
+ METHOD_NEITHER, FILE_SPECIAL_ACCESS);
+pub const FSCTL_READ_RAW_ENCRYPTED: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 56,
+ METHOD_NEITHER, FILE_SPECIAL_ACCESS);
+pub const FSCTL_CREATE_USN_JOURNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 57,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_READ_FILE_USN_DATA: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 58,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_WRITE_USN_CLOSE_RECORD: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 59,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_EXTEND_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_USN_JOURNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 61,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_DELETE_USN_JOURNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 62,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_MARK_HANDLE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SIS_COPYFILE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SIS_LINK_FILES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED,
+ ::FILE_READ_DATA | ::FILE_WRITE_DATA);
+pub const FSCTL_RECALL_FILE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_READ_FROM_PLEX: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT,
+ ::FILE_READ_DATA);
+pub const FSCTL_FILE_PREFETCH: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED,
+ FILE_SPECIAL_ACCESS);
+pub const FSCTL_MAKE_MEDIA_COMPATIBLE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 76,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_SET_DEFECT_MANAGEMENT: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 77,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_QUERY_SPARING_INFO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 78,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_ON_DISK_VOLUME_INFO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 79,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SET_VOLUME_COMPRESSION_STATE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 80,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_TXFS_MODIFY_RM: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 81, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_QUERY_RM_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 82,
+ METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_TXFS_ROLLFORWARD_REDO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 84,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_ROLLFORWARD_UNDO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 85,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_START_RM: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 86, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_SHUTDOWN_RM: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_READ_BACKUP_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 88,
+ METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_TXFS_WRITE_BACKUP_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 89,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_CREATE_SECONDARY_RM: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 90,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_GET_METADATA_INFO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 91,
+ METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_TXFS_GET_TRANSACTED_VERSION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 92,
+ METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_TXFS_SAVEPOINT_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 94,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_CREATE_MINIVERSION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 95,
+ METHOD_BUFFERED, ::FILE_WRITE_DATA);
+pub const FSCTL_TXFS_TRANSACTION_ACTIVE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 99,
+ METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_SET_ZERO_ON_DEALLOCATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 101,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_SET_REPAIR: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_GET_REPAIR: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_WAIT_FOR_REPAIR: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_INITIATE_REPAIR: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_CSC_INTERNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SHRINK_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED,
+ FILE_SPECIAL_ACCESS);
+pub const FSCTL_SET_SHORT_NAME_BEHAVIOR: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 109,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_DFSR_SET_GHOST_HANDLE_STATE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 110,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM,
+ 120, METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_TXFS_LIST_TRANSACTIONS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 121,
+ METHOD_BUFFERED, ::FILE_READ_DATA);
+pub const FSCTL_QUERY_PAGEFILE_ENCRYPTION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 122,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_RESET_VOLUME_ALLOCATION_HINTS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 123,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_DEPENDENT_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 124,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SD_GLOBAL_CHANGE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 125,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_TXFS_READ_BACKUP_INFORMATION2: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 126,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_LOOKUP_STREAM_FROM_CLUSTER: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 127,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_TXFS_WRITE_BACKUP_INFORMATION2: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 128,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_FILE_TYPE_NOTIFICATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 129,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_FILE_LEVEL_TRIM: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_GET_BOOT_AREA_INFO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 140,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_GET_RETRIEVAL_POINTER_BASE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 141,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SET_PERSISTENT_VOLUME_STATE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 142,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_PERSISTENT_VOLUME_STATE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 143,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_REQUEST_OPLOCK: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_CSV_TUNNEL_REQUEST: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 145,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_IS_CSV_FILE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_FILE_SYSTEM_RECOGNITION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 147,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_GET_VOLUME_PATH_NAME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 148,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT: ::DWORD = CTL_CODE!(
+ FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME: ::DWORD = CTL_CODE!(
+ FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_IS_FILE_ON_CSV_VOLUME: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 151,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CORRUPTION_HANDLING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 152,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_OFFLOAD_READ: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED,
+ FILE_READ_ACCESS);
+pub const FSCTL_OFFLOAD_WRITE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED,
+ FILE_WRITE_ACCESS);
+pub const FSCTL_CSV_INTERNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 155, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SET_PURGE_FAILURE_MODE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 156,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_FILE_LAYOUT: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 157,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_IS_VOLUME_OWNED_BYCSVFS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 158,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_GET_INTEGRITY_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 159,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SET_INTEGRITY_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 160,
+ METHOD_BUFFERED, ::FILE_READ_DATA | ::FILE_WRITE_DATA);
+pub const FSCTL_QUERY_FILE_REGIONS: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 161,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_DEDUP_FILE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 165, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_DEDUP_QUERY_FILE_HASHES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 166,
+ METHOD_NEITHER, ::FILE_READ_DATA);
+pub const FSCTL_DEDUP_QUERY_RANGE_STATE: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 167,
+ METHOD_NEITHER, ::FILE_READ_DATA);
+pub const FSCTL_DEDUP_QUERY_REPARSE_INFO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 168,
+ METHOD_NEITHER, FILE_ANY_ACCESS);
+pub const FSCTL_RKF_INTERNAL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 171, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_SCRUB_DATA: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 172, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_REPAIR_COPIES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 173, METHOD_BUFFERED,
+ ::FILE_READ_DATA | ::FILE_WRITE_DATA);
+pub const FSCTL_DISABLE_LOCAL_BUFFERING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 174,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_MGMT_LOCK: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 175, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS: ::DWORD = CTL_CODE!(
+ FILE_DEVICE_FILE_SYSTEM, 176, METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_ADVANCE_FILE_ID: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 177, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_CSV_SYNC_TUNNEL_REQUEST: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 178,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_QUERY_VETO_FILE_DIRECT_IO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 179,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_WRITE_USN_REASON: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 180,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_CONTROL: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 181, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const FSCTL_GET_REFS_VOLUME_DATA: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 182,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_CSV_H_BREAKING_SYNC_TUNNEL_REQUEST: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM,
+ 185, METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_STORAGE_CLASSES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 187,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_REGION_INFO: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 188,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_USN_TRACK_MODIFIED_RANGES: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 189,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_QUERY_SHARED_VIRTUAL_DISK_SUPPORT: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM,
+ 192, METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SVHDX_SYNC_TUNNEL_REQUEST: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 193,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SVHDX_SET_INITIATOR_INFORMATION: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 194,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_SET_EXTERNAL_BACKING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 195,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_GET_EXTERNAL_BACKING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 196,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_DELETE_EXTERNAL_BACKING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 197,
+ METHOD_BUFFERED, FILE_SPECIAL_ACCESS);
+pub const FSCTL_ENUM_EXTERNAL_BACKING: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 198,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+pub const FSCTL_ENUM_OVERLAY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 199, METHOD_NEITHER,
+ FILE_ANY_ACCESS);
+pub const FSCTL_ADD_OVERLAY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 204, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_REMOVE_OVERLAY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 205, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+pub const FSCTL_UPDATE_OVERLAY: ::DWORD = CTL_CODE!(FILE_DEVICE_FILE_SYSTEM, 206, METHOD_BUFFERED,
+ ::FILE_WRITE_DATA);
+// FILE_DEVICE_AVIO is defined nowhere
+//pub const IOCTL_AVIO_ALLOCATE_STREAM: ::DWORD = CTL_CODE!(FILE_DEVICE_AVIO, 1, METHOD_BUFFERED,
+// FILE_SPECIAL_ACCESS);
+//pub const IOCTL_AVIO_FREE_STREAM: ::DWORD = CTL_CODE!(FILE_DEVICE_AVIO, 2, METHOD_BUFFERED,
+// FILE_SPECIAL_ACCESS);
+//pub const IOCTL_AVIO_MODIFY_STREAM: ::DWORD = CTL_CODE!(FILE_DEVICE_AVIO, 3, METHOD_BUFFERED,
+// FILE_SPECIAL_ACCESS);
+STRUCT!{struct PATHNAME_BUFFER {
+ PathNameLength: ::DWORD,
+ Name: [::WCHAR; 1],
+}}
+pub type PPATHNAME_BUFFER = *mut PATHNAME_BUFFER;
+STRUCT!{nodebug struct FSCTL_QUERY_FAT_BPB_BUFFER {
+ First0x24BytesOfBootSector: [::BYTE; 0x24],
+}}
+pub type PFSCTL_QUERY_FAT_BPB_BUFFER = *mut FSCTL_QUERY_FAT_BPB_BUFFER;
+STRUCT!{struct NTFS_VOLUME_DATA_BUFFER {
+ VolumeSerialNumber: ::LARGE_INTEGER,
+ NumberSectors: ::LARGE_INTEGER,
+ TotalClusters: ::LARGE_INTEGER,
+ FreeClusters: ::LARGE_INTEGER,
+ TotalReserved: ::LARGE_INTEGER,
+ BytesPerSector: ::DWORD,
+ BytesPerCluster: ::DWORD,
+ BytesPerFileRecordSegment: ::DWORD,
+ ClustersPerFileRecordSegment: ::DWORD,
+ MftValidDataLength: ::LARGE_INTEGER,
+ MftStartLcn: ::LARGE_INTEGER,
+ Mft2StartLcn: ::LARGE_INTEGER,
+ MftZoneStart: ::LARGE_INTEGER,
+ MftZoneEnd: ::LARGE_INTEGER,
+}}
+pub type PNTFS_VOLUME_DATA_BUFFER = *mut NTFS_VOLUME_DATA_BUFFER;
+STRUCT!{struct NTFS_EXTENDED_VOLUME_DATA {
+ ByteCount: ::DWORD,
+ MajorVersion: ::WORD,
+ MinorVersion: ::WORD,
+ BytesPerPhysicalSector: ::DWORD,
+ LfsMajorVersion: ::WORD,
+ LfsMinorVersion: ::WORD,
+}}
+pub type PNTFS_EXTENDED_VOLUME_DATA = *mut NTFS_EXTENDED_VOLUME_DATA;
+STRUCT!{struct REFS_VOLUME_DATA_BUFFER {
+ ByteCount: ::DWORD,
+ MajorVersion: ::DWORD,
+ MinorVersion: ::DWORD,
+ BytesPerPhysicalSector: ::DWORD,
+ VolumeSerialNumber: ::LARGE_INTEGER,
+ NumberSectors: ::LARGE_INTEGER,
+ TotalClusters: ::LARGE_INTEGER,
+ FreeClusters: ::LARGE_INTEGER,
+ TotalReserved: ::LARGE_INTEGER,
+ BytesPerSector: ::DWORD,
+ BytesPerCluster: ::DWORD,
+ MaximumSizeOfResidentFile: ::LARGE_INTEGER,
+ Reserved: [::LARGE_INTEGER; 10],
+}}
+pub type PREFS_VOLUME_DATA_BUFFER = *mut REFS_VOLUME_DATA_BUFFER;
+STRUCT!{struct STARTING_LCN_INPUT_BUFFER {
+ StartingLcn: ::LARGE_INTEGER,
+}}
+pub type PSTARTING_LCN_INPUT_BUFFER = *mut STARTING_LCN_INPUT_BUFFER;
+STRUCT!{struct VOLUME_BITMAP_BUFFER {
+ StartingLcn: ::LARGE_INTEGER,
+ BitmapSize: ::LARGE_INTEGER,
+ Buffer: [::BYTE; 1],
+}}
+pub type PVOLUME_BITMAP_BUFFER = *mut VOLUME_BITMAP_BUFFER;
+STRUCT!{struct STARTING_VCN_INPUT_BUFFER {
+ StartingVcn: ::LARGE_INTEGER,
+}}
+pub type PSTARTING_VCN_INPUT_BUFFER = *mut STARTING_VCN_INPUT_BUFFER;
+STRUCT!{struct RETRIEVAL_POINTERS_BUFFER_INTERNAL {
+ NextVcn: ::LARGE_INTEGER,
+ Lcn: ::LARGE_INTEGER,
+}}
+STRUCT!{struct RETRIEVAL_POINTERS_BUFFER {
+ ExtentCount: ::DWORD,
+ StartingVcn: ::LARGE_INTEGER,
+ Extents: [RETRIEVAL_POINTERS_BUFFER_INTERNAL; 1],
+}}
+pub type PRETRIEVAL_POINTERS_BUFFER = *mut RETRIEVAL_POINTERS_BUFFER;
+STRUCT!{struct NTFS_FILE_RECORD_INPUT_BUFFER {
+ FileReferenceNumber: ::LARGE_INTEGER,
+}}
+pub type PNTFS_FILE_RECORD_INPUT_BUFFER = *mut NTFS_FILE_RECORD_INPUT_BUFFER;
+STRUCT!{struct NTFS_FILE_RECORD_OUTPUT_BUFFER {
+ FileReferenceNumber: ::LARGE_INTEGER,
+ FileRecordLength: ::DWORD,
+ FileRecordBuffer: [::BYTE; 1],
+}}
+pub type PNTFS_FILE_RECORD_OUTPUT_BUFFER = *mut NTFS_FILE_RECORD_OUTPUT_BUFFER;
+STRUCT!{struct MOVE_FILE_DATA {
+ FileHandle: ::HANDLE,
+ StartingVcn: ::LARGE_INTEGER,
+ StartingLcn: ::LARGE_INTEGER,
+ ClusterCount: ::DWORD,
+}}
+pub type PMOVE_FILE_DATA = *mut MOVE_FILE_DATA;
+STRUCT!{struct MOVE_FILE_RECORD_DATA {
+ FileHandle: ::HANDLE,
+ SourceFileRecord: ::LARGE_INTEGER,
+ TargetFileRecord: ::LARGE_INTEGER,
+}}
+pub type PMOVE_FILE_RECORD_DATA = *mut MOVE_FILE_RECORD_DATA;
+//9207
+pub const IOCTL_VOLUME_BASE: ::DWORD = 0x00000056;
+pub const IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS: ::DWORD = CTL_CODE!(IOCTL_VOLUME_BASE, 0,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
+STRUCT!{struct DISK_EXTENT {
+ DiskNumber: ::DWORD,
+ StartingOffset: ::LARGE_INTEGER,
+ ExtentLength: ::LARGE_INTEGER,
+}}
+pub type PDISK_EXTENT = *mut DISK_EXTENT;
+STRUCT!{struct VOLUME_DISK_EXTENTS {
+ NumberOfDiskExtents: ::DWORD,
+ Extents: [DISK_EXTENT; ::ANYSIZE_ARRAY],
+}}
+pub type PVOLUME_DISK_EXTENTS = *mut VOLUME_DISK_EXTENTS;
+pub const IOCTL_VOLUME_ONLINE: ::DWORD = CTL_CODE!(IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_VOLUME_OFFLINE: ::DWORD = CTL_CODE!(IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED,
+ FILE_READ_ACCESS | FILE_WRITE_ACCESS);
+pub const IOCTL_VOLUME_IS_CLUSTERED: ::DWORD = CTL_CODE!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED,
+ FILE_ANY_ACCESS);
+pub const IOCTL_VOLUME_GET_GPT_ATTRIBUTES: ::DWORD = CTL_CODE!(IOCTL_VOLUME_BASE, 14,
+ METHOD_BUFFERED, FILE_ANY_ACCESS);
diff --git a/third_party/rust/winapi-0.2.8/src/winnetwk.rs b/third_party/rust/winapi-0.2.8/src/winnetwk.rs
new file mode 100644
index 0000000000..665d283ba8
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winnetwk.rs
@@ -0,0 +1,275 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Standard WINNET Header File for WIN32
+pub const WNNC_NET_MSNET: ::DWORD = 0x00010000;
+pub const WNNC_NET_SMB: ::DWORD = 0x00020000;
+pub const WNNC_NET_NETWARE: ::DWORD = 0x00030000;
+pub const WNNC_NET_VINES: ::DWORD = 0x00040000;
+pub const WNNC_NET_10NET: ::DWORD = 0x00050000;
+pub const WNNC_NET_LOCUS: ::DWORD = 0x00060000;
+pub const WNNC_NET_SUN_PC_NFS: ::DWORD = 0x00070000;
+pub const WNNC_NET_LANSTEP: ::DWORD = 0x00080000;
+pub const WNNC_NET_9TILES: ::DWORD = 0x00090000;
+pub const WNNC_NET_LANTASTIC: ::DWORD = 0x000A0000;
+pub const WNNC_NET_AS400: ::DWORD = 0x000B0000;
+pub const WNNC_NET_FTP_NFS: ::DWORD = 0x000C0000;
+pub const WNNC_NET_PATHWORKS: ::DWORD = 0x000D0000;
+pub const WNNC_NET_LIFENET: ::DWORD = 0x000E0000;
+pub const WNNC_NET_POWERLAN: ::DWORD = 0x000F0000;
+pub const WNNC_NET_BWNFS: ::DWORD = 0x00100000;
+pub const WNNC_NET_COGENT: ::DWORD = 0x00110000;
+pub const WNNC_NET_FARALLON: ::DWORD = 0x00120000;
+pub const WNNC_NET_APPLETALK: ::DWORD = 0x00130000;
+pub const WNNC_NET_INTERGRAPH: ::DWORD = 0x00140000;
+pub const WNNC_NET_SYMFONET: ::DWORD = 0x00150000;
+pub const WNNC_NET_CLEARCASE: ::DWORD = 0x00160000;
+pub const WNNC_NET_FRONTIER: ::DWORD = 0x00170000;
+pub const WNNC_NET_BMC: ::DWORD = 0x00180000;
+pub const WNNC_NET_DCE: ::DWORD = 0x00190000;
+pub const WNNC_NET_AVID: ::DWORD = 0x001A0000;
+pub const WNNC_NET_DOCUSPACE: ::DWORD = 0x001B0000;
+pub const WNNC_NET_MANGOSOFT: ::DWORD = 0x001C0000;
+pub const WNNC_NET_SERNET: ::DWORD = 0x001D0000;
+pub const WNNC_NET_RIVERFRONT1: ::DWORD = 0x001E0000;
+pub const WNNC_NET_RIVERFRONT2: ::DWORD = 0x001F0000;
+pub const WNNC_NET_DECORB: ::DWORD = 0x00200000;
+pub const WNNC_NET_PROTSTOR: ::DWORD = 0x00210000;
+pub const WNNC_NET_FJ_REDIR: ::DWORD = 0x00220000;
+pub const WNNC_NET_DISTINCT: ::DWORD = 0x00230000;
+pub const WNNC_NET_TWINS: ::DWORD = 0x00240000;
+pub const WNNC_NET_RDR2SAMPLE: ::DWORD = 0x00250000;
+pub const WNNC_NET_CSC: ::DWORD = 0x00260000;
+pub const WNNC_NET_3IN1: ::DWORD = 0x00270000;
+pub const WNNC_NET_EXTENDNET: ::DWORD = 0x00290000;
+pub const WNNC_NET_STAC: ::DWORD = 0x002A0000;
+pub const WNNC_NET_FOXBAT: ::DWORD = 0x002B0000;
+pub const WNNC_NET_YAHOO: ::DWORD = 0x002C0000;
+pub const WNNC_NET_EXIFS: ::DWORD = 0x002D0000;
+pub const WNNC_NET_DAV: ::DWORD = 0x002E0000;
+pub const WNNC_NET_KNOWARE: ::DWORD = 0x002F0000;
+pub const WNNC_NET_OBJECT_DIRE: ::DWORD = 0x00300000;
+pub const WNNC_NET_MASFAX: ::DWORD = 0x00310000;
+pub const WNNC_NET_HOB_NFS: ::DWORD = 0x00320000;
+pub const WNNC_NET_SHIVA: ::DWORD = 0x00330000;
+pub const WNNC_NET_IBMAL: ::DWORD = 0x00340000;
+pub const WNNC_NET_LOCK: ::DWORD = 0x00350000;
+pub const WNNC_NET_TERMSRV: ::DWORD = 0x00360000;
+pub const WNNC_NET_SRT: ::DWORD = 0x00370000;
+pub const WNNC_NET_QUINCY: ::DWORD = 0x00380000;
+pub const WNNC_NET_OPENAFS: ::DWORD = 0x00390000;
+pub const WNNC_NET_AVID1: ::DWORD = 0x003A0000;
+pub const WNNC_NET_DFS: ::DWORD = 0x003B0000;
+pub const WNNC_NET_KWNP: ::DWORD = 0x003C0000;
+pub const WNNC_NET_ZENWORKS: ::DWORD = 0x003D0000;
+pub const WNNC_NET_DRIVEONWEB: ::DWORD = 0x003E0000;
+pub const WNNC_NET_VMWARE: ::DWORD = 0x003F0000;
+pub const WNNC_NET_RSFX: ::DWORD = 0x00400000;
+pub const WNNC_NET_MFILES: ::DWORD = 0x00410000;
+pub const WNNC_NET_MS_NFS: ::DWORD = 0x00420000;
+pub const WNNC_NET_GOOGLE: ::DWORD = 0x00430000;
+pub const WNNC_NET_NDFS: ::DWORD = 0x00440000;
+pub const WNNC_NET_DOCUSHARE: ::DWORD = 0x00450000;
+pub const WNNC_CRED_MANAGER: ::DWORD = 0xFFFF0000;
+pub const WNNC_NET_LANMAN: ::DWORD = WNNC_NET_SMB;
+pub const RESOURCE_CONNECTED: ::DWORD = 0x00000001;
+pub const RESOURCE_GLOBALNET: ::DWORD = 0x00000002;
+pub const RESOURCE_REMEMBERED: ::DWORD = 0x00000003;
+pub const RESOURCE_RECENT: ::DWORD = 0x00000004;
+pub const RESOURCE_CONTEXT: ::DWORD = 0x00000005;
+pub const RESOURCETYPE_ANY: ::DWORD = 0x00000000;
+pub const RESOURCETYPE_DISK: ::DWORD = 0x00000001;
+pub const RESOURCETYPE_PRINT: ::DWORD = 0x00000002;
+pub const RESOURCETYPE_RESERVED: ::DWORD = 0x00000008;
+pub const RESOURCETYPE_UNKNOWN: ::DWORD = 0xFFFFFFFF;
+pub const RESOURCEUSAGE_CONNECTABLE: ::DWORD = 0x00000001;
+pub const RESOURCEUSAGE_CONTAINER: ::DWORD = 0x00000002;
+pub const RESOURCEUSAGE_NOLOCALDEVICE: ::DWORD = 0x00000004;
+pub const RESOURCEUSAGE_SIBLING: ::DWORD = 0x00000008;
+pub const RESOURCEUSAGE_ATTACHED: ::DWORD = 0x00000010;
+pub const RESOURCEUSAGE_ALL: ::DWORD = RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER
+ | RESOURCEUSAGE_ATTACHED;
+pub const RESOURCEUSAGE_RESERVED: ::DWORD = 0x80000000;
+pub const RESOURCEDISPLAYTYPE_GENERIC: ::DWORD = 0x00000000;
+pub const RESOURCEDISPLAYTYPE_DOMAIN: ::DWORD = 0x00000001;
+pub const RESOURCEDISPLAYTYPE_SERVER: ::DWORD = 0x00000002;
+pub const RESOURCEDISPLAYTYPE_SHARE: ::DWORD = 0x00000003;
+pub const RESOURCEDISPLAYTYPE_FILE: ::DWORD = 0x00000004;
+pub const RESOURCEDISPLAYTYPE_GROUP: ::DWORD = 0x00000005;
+pub const RESOURCEDISPLAYTYPE_NETWORK: ::DWORD = 0x00000006;
+pub const RESOURCEDISPLAYTYPE_ROOT: ::DWORD = 0x00000007;
+pub const RESOURCEDISPLAYTYPE_SHAREADMIN: ::DWORD = 0x00000008;
+pub const RESOURCEDISPLAYTYPE_DIRECTORY: ::DWORD = 0x00000009;
+pub const RESOURCEDISPLAYTYPE_TREE: ::DWORD = 0x0000000A;
+pub const RESOURCEDISPLAYTYPE_NDSCONTAINER: ::DWORD = 0x0000000B;
+STRUCT!{struct NETRESOURCEA {
+ dwScope: ::DWORD,
+ dwType: ::DWORD,
+ dwDisplayType: ::DWORD,
+ dwUsage: ::DWORD,
+ lpLocalName: ::LPSTR,
+ lpRemoteName: ::LPSTR,
+ lpComment: ::LPSTR,
+ lpProvider: ::LPSTR,
+}}
+pub type LPNETRESOURCEA = *mut NETRESOURCEA;
+STRUCT!{struct NETRESOURCEW {
+ dwScope: ::DWORD,
+ dwType: ::DWORD,
+ dwDisplayType: ::DWORD,
+ dwUsage: ::DWORD,
+ lpLocalName: ::LPWSTR,
+ lpRemoteName: ::LPWSTR,
+ lpComment: ::LPWSTR,
+ lpProvider: ::LPWSTR,
+}}
+pub type LPNETRESOURCEW = *mut NETRESOURCEW;
+pub const NETPROPERTY_PERSISTENT: ::DWORD = 1;
+pub const CONNECT_UPDATE_PROFILE: ::DWORD = 0x00000001;
+pub const CONNECT_UPDATE_RECENT: ::DWORD = 0x00000002;
+pub const CONNECT_TEMPORARY: ::DWORD = 0x00000004;
+pub const CONNECT_INTERACTIVE: ::DWORD = 0x00000008;
+pub const CONNECT_PROMPT: ::DWORD = 0x00000010;
+pub const CONNECT_NEED_DRIVE: ::DWORD = 0x00000020;
+pub const CONNECT_REFCOUNT: ::DWORD = 0x00000040;
+pub const CONNECT_REDIRECT: ::DWORD = 0x00000080;
+pub const CONNECT_LOCALDRIVE: ::DWORD = 0x00000100;
+pub const CONNECT_CURRENT_MEDIA: ::DWORD = 0x00000200;
+pub const CONNECT_DEFERRED: ::DWORD = 0x00000400;
+pub const CONNECT_RESERVED: ::DWORD = 0xFF000000;
+pub const CONNECT_COMMANDLINE: ::DWORD = 0x00000800;
+pub const CONNECT_CMD_SAVECRED: ::DWORD = 0x00001000;
+pub const CONNECT_CRED_RESET: ::DWORD = 0x00002000;
+STRUCT!{struct CONNECTDLGSTRUCTA {
+ cbStructure: ::DWORD,
+ hwndOwner: ::HWND,
+ lpConnRes: ::LPNETRESOURCEA,
+ dwFlags: ::DWORD,
+ dwDevNum: ::DWORD,
+}}
+pub type LPCONNECTDLGSTRUCTA = *mut CONNECTDLGSTRUCTA;
+STRUCT!{struct CONNECTDLGSTRUCTW {
+ cbStructure: ::DWORD,
+ hwndOwner: ::HWND,
+ lpConnRes: ::LPNETRESOURCEW,
+ dwFlags: ::DWORD,
+ dwDevNum: ::DWORD,
+}}
+pub type LPCONNECTDLGSTRUCTW = *mut CONNECTDLGSTRUCTW;
+pub const CONNDLG_RO_PATH: ::DWORD = 0x00000001;
+pub const CONNDLG_CONN_POINT: ::DWORD = 0x00000002;
+pub const CONNDLG_USE_MRU: ::DWORD = 0x00000004;
+pub const CONNDLG_HIDE_BOX: ::DWORD = 0x00000008;
+pub const CONNDLG_PERSIST: ::DWORD = 0x00000010;
+pub const CONNDLG_NOT_PERSIST: ::DWORD = 0x00000020;
+STRUCT!{struct DISCDLGSTRUCTA {
+ cbStructure: ::DWORD,
+ hwndOwner: ::HWND,
+ lpLocalName: ::LPSTR,
+ lpRemoteName: ::LPSTR,
+ dwFlags: ::DWORD,
+}}
+pub type LPDISCDLGSTRUCTA = *mut DISCDLGSTRUCTA;
+STRUCT!{struct DISCDLGSTRUCTW {
+ cbStructure: ::DWORD,
+ hwndOwner: ::HWND,
+ lpLocalName: ::LPWSTR,
+ lpRemoteName: ::LPWSTR,
+ dwFlags: ::DWORD,
+}}
+pub type LPDISCDLGSTRUCTW = *mut DISCDLGSTRUCTW;
+pub const DISC_UPDATE_PROFILE: ::DWORD = 0x00000001;
+pub const DISC_NO_FORCE: ::DWORD = 0x00000040;
+pub const UNIVERSAL_NAME_INFO_LEVEL: ::DWORD = 0x00000001;
+pub const REMOTE_NAME_INFO_LEVEL: ::DWORD = 0x00000002;
+STRUCT!{struct UNIVERSAL_NAME_INFOA {
+ lpUniversalName: ::LPSTR,
+}}
+pub type LPUNIVERSAL_NAME_INFOA = *mut UNIVERSAL_NAME_INFOA;
+STRUCT!{struct UNIVERSAL_NAME_INFOW {
+ lpUniversalName: ::LPWSTR,
+}}
+pub type LPUNIVERSAL_NAME_INFOW = *mut UNIVERSAL_NAME_INFOW;
+STRUCT!{struct REMOTE_NAME_INFOA {
+ lpUniversalName: ::LPSTR,
+ lpConnectionName: ::LPSTR,
+ lpRemainingPath: ::LPSTR,
+}}
+pub type LPREMOTE_NAME_INFOA = *mut REMOTE_NAME_INFOA;
+STRUCT!{struct REMOTE_NAME_INFOW {
+ lpUniversalName: ::LPWSTR,
+ lpConnectionName: ::LPWSTR,
+ lpRemainingPath: ::LPWSTR,
+}}
+pub type LPREMOTE_NAME_INFOW = *mut REMOTE_NAME_INFOW;
+pub const WNFMT_MULTILINE: ::DWORD = 0x01;
+pub const WNFMT_ABBREVIATED: ::DWORD = 0x02;
+pub const WNFMT_INENUM: ::DWORD = 0x10;
+pub const WNFMT_CONNECTION: ::DWORD = 0x20;
+STRUCT!{struct NETINFOSTRUCT {
+ cbStructure: ::DWORD,
+ dwProviderVersion: ::DWORD,
+ dwStatus: ::DWORD,
+ dwCharacteristics: ::DWORD,
+ dwHandle: ::ULONG_PTR,
+ wNetType: ::WORD,
+ dwPrinters: ::DWORD,
+ dwDrives: ::DWORD,
+}}
+pub type LPNETINFOSTRUCT = *mut NETINFOSTRUCT;
+pub const NETINFO_DLL16: ::DWORD = 0x00000001;
+pub const NETINFO_DISKRED: ::DWORD = 0x00000004;
+pub const NETINFO_PRINTERRED: ::DWORD = 0x00000008;
+pub const WN_SUCCESS: ::DWORD = ::NO_ERROR;
+pub const WN_NO_ERROR: ::DWORD = ::NO_ERROR;
+pub const WN_NOT_SUPPORTED: ::DWORD = ::ERROR_NOT_SUPPORTED;
+pub const WN_CANCEL: ::DWORD = ::ERROR_CANCELLED;
+pub const WN_RETRY: ::DWORD = ::ERROR_RETRY;
+pub const WN_NET_ERROR: ::DWORD = ::ERROR_UNEXP_NET_ERR;
+pub const WN_MORE_DATA: ::DWORD = ::ERROR_MORE_DATA;
+pub const WN_BAD_POINTER: ::DWORD = ::ERROR_INVALID_ADDRESS;
+pub const WN_BAD_VALUE: ::DWORD = ::ERROR_INVALID_PARAMETER;
+pub const WN_BAD_USER: ::DWORD = ::ERROR_BAD_USERNAME;
+pub const WN_BAD_PASSWORD: ::DWORD = ::ERROR_INVALID_PASSWORD;
+pub const WN_ACCESS_DENIED: ::DWORD = ::ERROR_ACCESS_DENIED;
+pub const WN_FUNCTION_BUSY: ::DWORD = ::ERROR_BUSY;
+pub const WN_WINDOWS_ERROR: ::DWORD = ::ERROR_UNEXP_NET_ERR;
+pub const WN_OUT_OF_MEMORY: ::DWORD = ::ERROR_NOT_ENOUGH_MEMORY;
+pub const WN_NO_NETWORK: ::DWORD = ::ERROR_NO_NETWORK;
+pub const WN_EXTENDED_ERROR: ::DWORD = ::ERROR_EXTENDED_ERROR;
+pub const WN_BAD_LEVEL: ::DWORD = ::ERROR_INVALID_LEVEL;
+pub const WN_BAD_HANDLE: ::DWORD = ::ERROR_INVALID_HANDLE;
+pub const WN_NOT_INITIALIZING: ::DWORD = ::ERROR_ALREADY_INITIALIZED;
+pub const WN_NO_MORE_DEVICES: ::DWORD = ::ERROR_NO_MORE_DEVICES;
+pub const WN_NOT_CONNECTED: ::DWORD = ::ERROR_NOT_CONNECTED;
+pub const WN_OPEN_FILES: ::DWORD = ::ERROR_OPEN_FILES;
+pub const WN_DEVICE_IN_USE: ::DWORD = ::ERROR_DEVICE_IN_USE;
+pub const WN_BAD_NETNAME: ::DWORD = ::ERROR_BAD_NET_NAME;
+pub const WN_BAD_LOCALNAME: ::DWORD = ::ERROR_BAD_DEVICE;
+pub const WN_ALREADY_CONNECTED: ::DWORD = ::ERROR_ALREADY_ASSIGNED;
+pub const WN_DEVICE_ERROR: ::DWORD = ::ERROR_GEN_FAILURE;
+pub const WN_CONNECTION_CLOSED: ::DWORD = ::ERROR_CONNECTION_UNAVAIL;
+pub const WN_NO_NET_OR_BAD_PATH: ::DWORD = ::ERROR_NO_NET_OR_BAD_PATH;
+pub const WN_BAD_PROVIDER: ::DWORD = ::ERROR_BAD_PROVIDER;
+pub const WN_CANNOT_OPEN_PROFILE: ::DWORD = ::ERROR_CANNOT_OPEN_PROFILE;
+pub const WN_BAD_PROFILE: ::DWORD = ::ERROR_BAD_PROFILE;
+pub const WN_BAD_DEV_TYPE: ::DWORD = ::ERROR_BAD_DEV_TYPE;
+pub const WN_DEVICE_ALREADY_REMEMBERED: ::DWORD = ::ERROR_DEVICE_ALREADY_REMEMBERED;
+pub const WN_CONNECTED_OTHER_PASSWORD: ::DWORD = ::ERROR_CONNECTED_OTHER_PASSWORD;
+pub const WN_CONNECTED_OTHER_PASSWORD_DEFAULT: ::DWORD = ::ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT;
+pub const WN_NO_MORE_ENTRIES: ::DWORD = ::ERROR_NO_MORE_ITEMS;
+pub const WN_NOT_CONTAINER: ::DWORD = ::ERROR_NOT_CONTAINER;
+pub const WN_NOT_AUTHENTICATED: ::DWORD = ::ERROR_NOT_AUTHENTICATED;
+pub const WN_NOT_LOGGED_ON: ::DWORD = ::ERROR_NOT_LOGGED_ON;
+pub const WN_NOT_VALIDATED: ::DWORD = ::ERROR_NO_LOGON_SERVERS;
+STRUCT!{struct NETCONNECTINFOSTRUCT {
+ cbStructure: ::DWORD,
+ dwFlags: ::DWORD,
+ dwSpeed: ::DWORD,
+ dwDelay: ::DWORD,
+ dwOptDataSize: ::DWORD,
+}}
+pub type LPNETCONNECTINFOSTRUCT = *mut NETCONNECTINFOSTRUCT;
+pub const WNCON_FORNETCARD: ::DWORD = 0x00000001;
+pub const WNCON_NOTROUTED: ::DWORD = 0x00000002;
+pub const WNCON_SLOWLINK: ::DWORD = 0x00000004;
+pub const WNCON_DYNAMIC: ::DWORD = 0x00000008;
diff --git a/third_party/rust/winapi-0.2.8/src/winnls.rs b/third_party/rust/winapi-0.2.8/src/winnls.rs
new file mode 100644
index 0000000000..b27e2f0ae8
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winnls.rs
@@ -0,0 +1,164 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Procedure declarations, constant definitions, and macros for the NLS component.
+pub const CP_ACP: ::DWORD = 0;
+pub const CP_OEMCP: ::DWORD = 1;
+pub const CP_MACCP: ::DWORD = 2;
+pub const CP_THREAD_ACP: ::DWORD = 3;
+pub const CP_SYMBOL: ::DWORD = 42;
+pub const CP_UTF7: ::DWORD = 65000;
+pub const CP_UTF8: ::DWORD = 65001;
+pub const MAX_LEADBYTES: usize = 12;
+pub const MAX_DEFAULTCHAR: usize = 2;
+pub type LGRPID = ::DWORD;
+pub type LCTYPE = ::DWORD;
+pub type CALTYPE = ::DWORD;
+pub type CALID = ::DWORD;
+pub type GEOID = ::LONG;
+pub type GEOTYPE = ::DWORD;
+pub type GEOCLASS = ::DWORD;
+STRUCT!{struct NLSVERSIONINFO {
+ dwNLSVersionInfoSize: ::DWORD,
+ dwNLSVersion: ::DWORD,
+ dwDefinedVersion: ::DWORD,
+ dwEffectiveId: ::DWORD,
+ guidCustomVersion: ::GUID,
+}}
+pub type LPNLSVERSIONINFO = *mut NLSVERSIONINFO;
+STRUCT!{struct NLSVERSIONINFOEX {
+ dwNLSVersionInfoSize: ::DWORD,
+ dwNLSVersion: ::DWORD,
+ dwDefinedVersion: ::DWORD,
+ dwEffectiveId: ::DWORD,
+ guidCustomVersion: ::GUID,
+}}
+pub type LPNLSVERSIONINFOEX = *mut NLSVERSIONINFOEX;
+ENUM!{enum NORM_FORM {
+ NormalizationOther = 0,
+ NormalizationC = 0x1,
+ NormalizationD = 0x2,
+ NormalizationKC = 0x5,
+ NormalizationKD = 0x6,
+}}
+pub type LANGUAGEGROUP_ENUMPROCA = Option<unsafe extern "system" fn(
+ ::LGRPID, ::LPSTR, ::LPSTR, ::DWORD, ::LONG_PTR,
+) -> ::BOOL>;
+pub type LANGGROUPLOCALE_ENUMPROCA = Option<unsafe extern "system" fn(
+ ::LGRPID, ::LCID, ::LPSTR, ::LONG_PTR,
+) -> ::BOOL>;
+pub type UILANGUAGE_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR, ::LONG_PTR) -> ::BOOL>;
+pub type CODEPAGE_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
+pub type DATEFMT_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
+pub type DATEFMT_ENUMPROCEXA = Option<unsafe extern "system" fn(::LPSTR, ::CALID) -> ::BOOL>;
+pub type TIMEFMT_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
+pub type CALINFO_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
+pub type CALINFO_ENUMPROCEXA = Option<unsafe extern "system" fn(::LPSTR, ::CALID) -> ::BOOL>;
+pub type LOCALE_ENUMPROCA = Option<unsafe extern "system" fn(::LPSTR) -> ::BOOL>;
+pub type LOCALE_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
+pub type LANGUAGEGROUP_ENUMPROCW = Option<unsafe extern "system" fn(
+ ::LGRPID, ::LPWSTR, ::LPWSTR, ::DWORD, ::LONG_PTR,
+) -> ::BOOL>;
+pub type LANGGROUPLOCALE_ENUMPROCW = Option<unsafe extern "system" fn(
+ ::LGRPID, ::LCID, ::LPWSTR, ::LONG_PTR,
+) -> ::BOOL>;
+pub type UILANGUAGE_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR, ::LONG_PTR) -> ::BOOL>;
+pub type CODEPAGE_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
+pub type DATEFMT_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
+pub type DATEFMT_ENUMPROCEXW = Option<unsafe extern "system" fn(::LPWSTR, ::CALID) -> ::BOOL>;
+pub type TIMEFMT_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
+pub type CALINFO_ENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR) -> ::BOOL>;
+pub type CALINFO_ENUMPROCEXW = Option<unsafe extern "system" fn(::LPWSTR, ::CALID) -> ::BOOL>;
+pub type GEO_ENUMPROC = Option<unsafe extern "system" fn(GEOID) -> ::BOOL>;
+STRUCT!{struct CPINFO {
+ MaxCharSize: ::UINT,
+ DefaultChar: [::BYTE; MAX_DEFAULTCHAR],
+ LeadByte: [::BYTE; MAX_LEADBYTES],
+}}
+pub type LPCPINFO = *mut CPINFO;
+STRUCT!{nodebug struct CPINFOEXA {
+ MaxCharSize: ::UINT,
+ DefaultChar: [::BYTE; MAX_DEFAULTCHAR],
+ LeadByte: [::BYTE; MAX_LEADBYTES],
+ UnicodeDefaultChar: ::WCHAR,
+ CodePage: ::UINT,
+ CodePageName: [::CHAR; ::MAX_PATH],
+}}
+pub type LPCPINFOEXA = *mut CPINFOEXA;
+STRUCT!{nodebug struct CPINFOEXW {
+ MaxCharSize: ::UINT,
+ DefaultChar: [::BYTE; MAX_DEFAULTCHAR],
+ LeadByte: [::BYTE; MAX_LEADBYTES],
+ UnicodeDefaultChar: ::WCHAR,
+ CodePage: ::UINT,
+ CodePageName: [::WCHAR; ::MAX_PATH],
+}}
+pub type LPCPINFOEXW = *mut CPINFOEXW;
+STRUCT!{struct NUMBERFMTA {
+ NumDigits: ::UINT,
+ LeadingZero: ::UINT,
+ Grouping: ::UINT,
+ lpDecimalSep: ::LPSTR,
+ lpThousandSep: ::LPSTR,
+ NegativeOrder: ::UINT,
+}}
+pub type LPNUMBERFMTA = *mut NUMBERFMTA;
+STRUCT!{struct NUMBERFMTW {
+ NumDigits: ::UINT,
+ LeadingZero: ::UINT,
+ Grouping: ::UINT,
+ lpDecimalSep: ::LPWSTR,
+ lpThousandSep: ::LPWSTR,
+ NegativeOrder: ::UINT,
+}}
+pub type LPNUMBERFMTW = *mut NUMBERFMTW;
+STRUCT!{struct CURRENCYFMTA {
+ NumDigits: ::UINT,
+ LeadingZero: ::UINT,
+ Grouping: ::UINT,
+ lpDecimalSep: ::LPSTR,
+ lpThousandSep: ::LPSTR,
+ NegativeOrder: ::UINT,
+ PositiveOrder: ::UINT,
+ lpCurrencySymbol: ::LPSTR,
+}}
+pub type LPCURRENCYFMTA = *mut CURRENCYFMTA;
+STRUCT!{struct CURRENCYFMTW {
+ NumDigits: ::UINT,
+ LeadingZero: ::UINT,
+ Grouping: ::UINT,
+ lpDecimalSep: ::LPWSTR,
+ lpThousandSep: ::LPWSTR,
+ NegativeOrder: ::UINT,
+ PositiveOrder: ::UINT,
+ lpCurrencySymbol: ::LPWSTR,
+}}
+pub type LPCURRENCYFMTW = *mut CURRENCYFMTW;
+pub type NLS_FUNCTION = ::DWORD;
+STRUCT!{struct FILEMUIINFO {
+ dwSize: ::DWORD,
+ dwVersion: ::DWORD,
+ dwFileType: ::DWORD,
+ pChecksum: [::BYTE; 16],
+ pServiceChecksum: [::BYTE; 16],
+ dwLanguageNameOffset: ::DWORD,
+ dwTypeIDMainSize: ::DWORD,
+ dwTypeIDMainOffset: ::DWORD,
+ dwTypeNameMainOffset: ::DWORD,
+ dwTypeIDMUISize: ::DWORD,
+ dwTypeIDMUIOffset: ::DWORD,
+ dwTypeNameMUIOffset: ::DWORD,
+ abBuffer: [::BYTE; 8],
+}}
+pub type PFILEMUIINFO = *mut FILEMUIINFO;
+pub type CALINFO_ENUMPROCEXEX = Option<unsafe extern "system" fn(
+ ::LPWSTR, ::CALID, ::LPWSTR, ::LPARAM,
+) -> ::BOOL>;
+pub type DATEFMT_ENUMPROCEXEX = Option<unsafe extern "system" fn(
+ ::LPWSTR, ::CALID, ::LPARAM,
+) -> ::BOOL>;
+pub type TIMEFMT_ENUMPROCEX = Option<unsafe extern "system" fn(
+ ::LPWSTR, ::LPARAM,
+) -> ::BOOL>;
+pub type LOCALE_ENUMPROCEX = Option<unsafe extern "system" fn(
+ ::LPWSTR, ::DWORD, ::LPARAM,
+) -> ::BOOL>;
diff --git a/third_party/rust/winapi-0.2.8/src/winnt.rs b/third_party/rust/winapi-0.2.8/src/winnt.rs
new file mode 100644
index 0000000000..cce242e9b7
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winnt.rs
@@ -0,0 +1,2368 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This module defines the 32-Bit Windows types and constants that are defined by NT, but exposed
+//! through the Win32 API.
+pub const ANYSIZE_ARRAY: usize = 1;
+//341
+pub type PVOID = *mut ::c_void;
+pub type PVOID64 = u64; // This is a 64-bit pointer, even when in 32-bit
+//382
+pub type VOID = ::c_void;
+pub type CHAR = ::c_char;
+pub type SHORT = ::c_short;
+pub type LONG = ::c_long;
+// pub type INT = ::c_int; // Already defined by minwindef.h
+pub type WCHAR = ::wchar_t;
+pub type PWCHAR = *mut WCHAR;
+pub type LPWCH = *mut WCHAR;
+pub type PWCH = *mut WCHAR;
+pub type LPCWCH = *const WCHAR;
+pub type PCWCH = *const WCHAR;
+pub type NWPSTR = *mut WCHAR;
+pub type LPWSTR = *mut WCHAR;
+pub type PWSTR = *mut WCHAR;
+pub type PZPWSTR = *mut PWSTR;
+pub type PCZPWSTR = *const PWSTR;
+pub type LPUWSTR = *mut WCHAR;
+pub type PUWSTR = *mut WCHAR;
+pub type LPCWSTR = *const WCHAR;
+pub type PCWSTR = *const WCHAR;
+pub type PZPCWSTR= *mut PCWSTR;
+pub type PCZPCWSTR = *const PCWSTR;
+pub type LPCUWSTR = *const WCHAR;
+pub type PCUWSTR = *const WCHAR;
+pub type PZZWSTR= *mut WCHAR;
+pub type PCZZWSTR = *const WCHAR;
+pub type PUZZWSTR = *mut WCHAR;
+pub type PCUZZWSTR = *const WCHAR;
+pub type PNZWCH = *mut WCHAR;
+pub type PCNZWCH = *const WCHAR;
+pub type PUNZWCH = *mut WCHAR;
+pub type PCUNZWCH = *const WCHAR;
+pub type LPCWCHAR = *const WCHAR;
+pub type PCWCHAR = *const WCHAR;
+pub type LPCUWCHAR = *const WCHAR;
+pub type PCUWCHAR = *const WCHAR;
+pub type UCSCHAR = ::c_ulong;
+pub type PUCSCHAR = *mut UCSCHAR;
+pub type PCUCSCHAR = *const UCSCHAR;
+pub type PUCSSTR = *mut UCSCHAR;
+pub type PUUCSSTR = *mut UCSCHAR;
+pub type PCUCSSTR = *const UCSCHAR;
+pub type PCUUCSSTR = *const UCSCHAR;
+pub type PUUCSCHAR = *mut UCSCHAR;
+pub type PCUUCSCHAR = *const UCSCHAR;
+pub type PCHAR = *mut CHAR;
+pub type LPCH = *mut CHAR;
+pub type PCH = *mut CHAR;
+pub type LPCCH = *const CHAR;
+pub type PCCH = *const CHAR;
+pub type NPSTR = *mut CHAR;
+pub type LPSTR = *mut CHAR;
+pub type PSTR = *mut CHAR;
+pub type PZPSTR = *mut PSTR;
+pub type PCZPSTR = *const PSTR;
+pub type LPCSTR = *const CHAR;
+pub type PCSTR = *const CHAR;
+pub type PZPCSTR = *mut PCSTR;
+pub type PCZPCSTR = *const PCSTR;
+pub type PZZSTR = *mut CHAR;
+pub type PCZZSTR = *const CHAR;
+pub type PNZCH = *mut CHAR;
+pub type PCNZCH = *const CHAR;
+// Skipping TCHAR things
+pub type PSHORT = *mut SHORT;
+pub type PLONG = *mut LONG;
+STRUCT!{struct PROCESSOR_NUMBER {
+ Group: ::WORD,
+ Number: ::BYTE,
+ Reserved: ::BYTE,
+}}
+pub type PPROCESSOR_NUMBER = *mut PROCESSOR_NUMBER;
+STRUCT!{struct GROUP_AFFINITY {
+ Mask: ::KAFFINITY,
+ Group: ::WORD,
+ Reserved: [::WORD; 3],
+}}
+pub type PGROUP_AFFINITY = *mut GROUP_AFFINITY;
+pub type HANDLE = *mut ::c_void;
+pub type PHANDLE = *mut HANDLE;
+pub type FCHAR = ::BYTE;
+pub type FSHORT = ::WORD;
+pub type FLONG = ::DWORD;
+//667
+pub type CCHAR = ::c_char;
+pub type LCID = ::DWORD;
+pub type PLCID = ::PDWORD;
+pub type LANGID = ::WORD;
+ENUM!{enum COMPARTMENT_ID {
+ UNSPECIFIED_COMPARTMENT_ID = 0,
+ DEFAULT_COMPARTMENT_ID = 1,
+}}
+pub type PCOMPARTMENT_ID = *mut COMPARTMENT_ID;
+pub const APPLICATION_ERROR_MASK: ::DWORD = 0x20000000;
+pub const ERROR_SEVERITY_SUCCESS: ::DWORD = 0x00000000;
+pub const ERROR_SEVERITY_INFORMATIONAL: ::DWORD = 0x40000000;
+pub const ERROR_SEVERITY_WARNING: ::DWORD = 0x80000000;
+pub const ERROR_SEVERITY_ERROR: ::DWORD = 0xC0000000;
+//710
+STRUCT!{struct FLOAT128 {
+ LowPart: ::__int64,
+ HighPart: ::__int64,
+}}
+pub type PFLOAT128 = *mut FLOAT128;
+pub type LONGLONG = ::__int64;
+pub type ULONGLONG = ::__uint64;
+pub type PLONGLONG = *mut LONGLONG;
+pub type PULONGLONG = *mut ULONGLONG;
+pub type USN = LONGLONG;
+pub type LARGE_INTEGER = LONGLONG;
+pub type PLARGE_INTEGER = *mut LARGE_INTEGER;
+pub type ULARGE_INTEGER = ULONGLONG;
+pub type PULARGE_INTEGER= *mut ULARGE_INTEGER;
+pub type RTL_REFERENCE_COUNT = ::LONG_PTR;
+pub type PRTL_REFERENCE_COUNT = *mut ::LONG_PTR;
+STRUCT!{struct LUID {
+ LowPart: ::DWORD,
+ HighPart: LONG,
+}}
+pub type PLUID = *mut LUID;
+pub type DWORDLONG = ULONGLONG;
+pub type PDWORDLONG = *mut DWORDLONG;
+//1042
+pub type BOOLEAN = ::BYTE;
+pub type PBOOLEAN = *mut BOOLEAN;
+STRUCT!{struct LIST_ENTRY {
+ Flink: *mut LIST_ENTRY,
+ Blink: *mut LIST_ENTRY,
+}}
+pub type PLIST_ENTRY = *mut LIST_ENTRY;
+STRUCT!{struct SINGLE_LIST_ENTRY {
+ Next: *mut SINGLE_LIST_ENTRY,
+}}
+pub type PSINGLE_LIST_ENTRY = *mut SINGLE_LIST_ENTRY;
+STRUCT!{struct LIST_ENTRY32 {
+ Flink: ::DWORD,
+ Blink: ::DWORD,
+}}
+pub type PLIST_ENTRY32 = *mut LIST_ENTRY32;
+STRUCT!{struct LIST_ENTRY64 {
+ Flink: ULONGLONG,
+ Blink: ULONGLONG,
+}}
+pub type PLIST_ENTRY64 = *mut LIST_ENTRY64;
+STRUCT!{struct OBJECTID {
+ Lineage: ::GUID,
+ Uniquifier: ::DWORD,
+}}
+pub const MINCHAR: ::CHAR = 0x80u8 as ::CHAR;
+pub const MAXCHAR: ::CHAR = 0x7f;
+pub const MINSHORT: ::SHORT = 0x8000u16 as ::SHORT;
+pub const MAXSHORT: ::SHORT = 0x7fff;
+pub const MINLONG: ::LONG = 0x80000000u32 as ::LONG;
+pub const MAXLONG: ::LONG = 0x7fffffff;
+pub const MAXBYTE: ::BYTE = 0xff;
+pub const MAXWORD: ::WORD = 0xffff;
+pub const MAXDWORD: ::DWORD = 0xffffffff;
+//1300
+pub type PEXCEPTION_ROUTINE = Option<unsafe extern "system" fn(
+ ExceptionRecord: *mut EXCEPTION_RECORD, EstablisherFrame: PVOID, ContextRecord: *mut CONTEXT,
+ DispatcherContext: PVOID,
+) -> ::EXCEPTION_DISPOSITION>;
+//1498
+pub const LANG_NEUTRAL: ::WORD = 0x00;
+pub const LANG_INVARIANT: ::WORD = 0x7f;
+pub const LANG_AFRIKAANS: ::WORD = 0x36;
+pub const LANG_ALBANIAN: ::WORD = 0x1c;
+pub const LANG_ALSATIAN: ::WORD = 0x84;
+pub const LANG_AMHARIC: ::WORD = 0x5e;
+pub const LANG_ARABIC: ::WORD = 0x01;
+pub const LANG_ARMENIAN: ::WORD = 0x2b;
+pub const LANG_ASSAMESE: ::WORD = 0x4d;
+pub const LANG_AZERI: ::WORD = 0x2c;
+pub const LANG_AZERBAIJANI: ::WORD = 0x2c;
+pub const LANG_BANGLA: ::WORD = 0x45;
+pub const LANG_BASHKIR: ::WORD = 0x6d;
+pub const LANG_BASQUE: ::WORD = 0x2d;
+pub const LANG_BELARUSIAN: ::WORD = 0x23;
+pub const LANG_BENGALI: ::WORD = 0x45;
+pub const LANG_BRETON: ::WORD = 0x7e;
+pub const LANG_BOSNIAN: ::WORD = 0x1a;
+pub const LANG_BOSNIAN_NEUTRAL: ::WORD = 0x781a;
+pub const LANG_BULGARIAN: ::WORD = 0x02;
+pub const LANG_CATALAN: ::WORD = 0x03;
+pub const LANG_CENTRAL_KURDISH: ::WORD = 0x92;
+pub const LANG_CHEROKEE: ::WORD = 0x5c;
+pub const LANG_CHINESE: ::WORD = 0x04;
+pub const LANG_CHINESE_SIMPLIFIED: ::WORD = 0x04;
+pub const LANG_CHINESE_TRADITIONAL: ::WORD = 0x7c04;
+pub const LANG_CORSICAN: ::WORD = 0x83;
+pub const LANG_CROATIAN: ::WORD = 0x1a;
+pub const LANG_CZECH: ::WORD = 0x05;
+pub const LANG_DANISH: ::WORD = 0x06;
+pub const LANG_DARI: ::WORD = 0x8c;
+pub const LANG_DIVEHI: ::WORD = 0x65;
+pub const LANG_DUTCH: ::WORD = 0x13;
+pub const LANG_ENGLISH: ::WORD = 0x09;
+pub const LANG_ESTONIAN: ::WORD = 0x25;
+pub const LANG_FAEROESE: ::WORD = 0x38;
+pub const LANG_FARSI: ::WORD = 0x29;
+pub const LANG_FILIPINO: ::WORD = 0x64;
+pub const LANG_FINNISH: ::WORD = 0x0b;
+pub const LANG_FRENCH: ::WORD = 0x0c;
+pub const LANG_FRISIAN: ::WORD = 0x62;
+pub const LANG_FULAH: ::WORD = 0x67;
+pub const LANG_GALICIAN: ::WORD = 0x56;
+pub const LANG_GEORGIAN: ::WORD = 0x37;
+pub const LANG_GERMAN: ::WORD = 0x07;
+pub const LANG_GREEK: ::WORD = 0x08;
+pub const LANG_GREENLANDIC: ::WORD = 0x6f;
+pub const LANG_GUJARATI: ::WORD = 0x47;
+pub const LANG_HAUSA: ::WORD = 0x68;
+pub const LANG_HAWAIIAN: ::WORD = 0x75;
+pub const LANG_HEBREW: ::WORD = 0x0d;
+pub const LANG_HINDI: ::WORD = 0x39;
+pub const LANG_HUNGARIAN: ::WORD = 0x0e;
+pub const LANG_ICELANDIC: ::WORD = 0x0f;
+pub const LANG_IGBO: ::WORD = 0x70;
+pub const LANG_INDONESIAN: ::WORD = 0x21;
+pub const LANG_INUKTITUT: ::WORD = 0x5d;
+pub const LANG_IRISH: ::WORD = 0x3c;
+pub const LANG_ITALIAN: ::WORD = 0x10;
+pub const LANG_JAPANESE: ::WORD = 0x11;
+pub const LANG_KANNADA: ::WORD = 0x4b;
+pub const LANG_KASHMIRI: ::WORD = 0x60;
+pub const LANG_KAZAK: ::WORD = 0x3f;
+pub const LANG_KHMER: ::WORD = 0x53;
+pub const LANG_KICHE: ::WORD = 0x86;
+pub const LANG_KINYARWANDA: ::WORD = 0x87;
+pub const LANG_KONKANI: ::WORD = 0x57;
+pub const LANG_KOREAN: ::WORD = 0x12;
+pub const LANG_KYRGYZ: ::WORD = 0x40;
+pub const LANG_LAO: ::WORD = 0x54;
+pub const LANG_LATVIAN: ::WORD = 0x26;
+pub const LANG_LITHUANIAN: ::WORD = 0x27;
+pub const LANG_LOWER_SORBIAN: ::WORD = 0x2e;
+pub const LANG_LUXEMBOURGISH: ::WORD = 0x6e;
+pub const LANG_MACEDONIAN: ::WORD = 0x2f;
+pub const LANG_MALAY: ::WORD = 0x3e;
+pub const LANG_MALAYALAM: ::WORD = 0x4c;
+pub const LANG_MALTESE: ::WORD = 0x3a;
+pub const LANG_MANIPURI: ::WORD = 0x58;
+pub const LANG_MAORI: ::WORD = 0x81;
+pub const LANG_MAPUDUNGUN: ::WORD = 0x7a;
+pub const LANG_MARATHI: ::WORD = 0x4e;
+pub const LANG_MOHAWK: ::WORD = 0x7c;
+pub const LANG_MONGOLIAN: ::WORD = 0x50;
+pub const LANG_NEPALI: ::WORD = 0x61;
+pub const LANG_NORWEGIAN: ::WORD = 0x14;
+pub const LANG_OCCITAN: ::WORD = 0x82;
+pub const LANG_ODIA: ::WORD = 0x48;
+pub const LANG_ORIYA: ::WORD = 0x48;
+pub const LANG_PASHTO: ::WORD = 0x63;
+pub const LANG_PERSIAN: ::WORD = 0x29;
+pub const LANG_POLISH: ::WORD = 0x15;
+pub const LANG_PORTUGUESE: ::WORD = 0x16;
+pub const LANG_PULAR: ::WORD = 0x67;
+pub const LANG_PUNJABI: ::WORD = 0x46;
+pub const LANG_QUECHUA: ::WORD = 0x6b;
+pub const LANG_ROMANIAN: ::WORD = 0x18;
+pub const LANG_ROMANSH: ::WORD = 0x17;
+pub const LANG_RUSSIAN: ::WORD = 0x19;
+pub const LANG_SAKHA: ::WORD = 0x85;
+pub const LANG_SAMI: ::WORD = 0x3b;
+pub const LANG_SANSKRIT: ::WORD = 0x4f;
+pub const LANG_SCOTTISH_GAELIC: ::WORD = 0x91;
+pub const LANG_SERBIAN: ::WORD = 0x1a;
+pub const LANG_SERBIAN_NEUTRAL: ::WORD = 0x7c1a;
+pub const LANG_SINDHI: ::WORD = 0x59;
+pub const LANG_SINHALESE: ::WORD = 0x5b;
+pub const LANG_SLOVAK: ::WORD = 0x1b;
+pub const LANG_SLOVENIAN: ::WORD = 0x24;
+pub const LANG_SOTHO: ::WORD = 0x6c;
+pub const LANG_SPANISH: ::WORD = 0x0a;
+pub const LANG_SWAHILI: ::WORD = 0x41;
+pub const LANG_SWEDISH: ::WORD = 0x1d;
+pub const LANG_SYRIAC: ::WORD = 0x5a;
+pub const LANG_TAJIK: ::WORD = 0x28;
+pub const LANG_TAMAZIGHT: ::WORD = 0x5f;
+pub const LANG_TAMIL: ::WORD = 0x49;
+pub const LANG_TATAR: ::WORD = 0x44;
+pub const LANG_TELUGU: ::WORD = 0x4a;
+pub const LANG_THAI: ::WORD = 0x1e;
+pub const LANG_TIBETAN: ::WORD = 0x51;
+pub const LANG_TIGRIGNA: ::WORD = 0x73;
+pub const LANG_TIGRINYA: ::WORD = 0x73;
+pub const LANG_TSWANA: ::WORD = 0x32;
+pub const LANG_TURKISH: ::WORD = 0x1f;
+pub const LANG_TURKMEN: ::WORD = 0x42;
+pub const LANG_UIGHUR: ::WORD = 0x80;
+pub const LANG_UKRAINIAN: ::WORD = 0x22;
+pub const LANG_UPPER_SORBIAN: ::WORD = 0x2e;
+pub const LANG_URDU: ::WORD = 0x20;
+pub const LANG_UZBEK: ::WORD = 0x43;
+pub const LANG_VALENCIAN: ::WORD = 0x03;
+pub const LANG_VIETNAMESE: ::WORD = 0x2a;
+pub const LANG_WELSH: ::WORD = 0x52;
+pub const LANG_WOLOF: ::WORD = 0x88;
+pub const LANG_XHOSA: ::WORD = 0x34;
+pub const LANG_YAKUT: ::WORD = 0x85;
+pub const LANG_YI: ::WORD = 0x78;
+pub const LANG_YORUBA: ::WORD = 0x6a;
+pub const LANG_ZULU: ::WORD = 0x35;
+//1651
+pub const SUBLANG_NEUTRAL: ::WORD = 0x00;
+pub const SUBLANG_DEFAULT: ::WORD = 0x01;
+pub const SUBLANG_SYS_DEFAULT: ::WORD = 0x02;
+pub const SUBLANG_CUSTOM_DEFAULT: ::WORD = 0x03;
+pub const SUBLANG_CUSTOM_UNSPECIFIED: ::WORD = 0x04;
+pub const SUBLANG_UI_CUSTOM_DEFAULT: ::WORD = 0x05;
+pub const SUBLANG_AFRIKAANS_SOUTH_AFRICA: ::WORD = 0x01;
+pub const SUBLANG_ALBANIAN_ALBANIA: ::WORD = 0x01;
+pub const SUBLANG_ALSATIAN_FRANCE: ::WORD = 0x01;
+pub const SUBLANG_AMHARIC_ETHIOPIA: ::WORD = 0x01;
+pub const SUBLANG_ARABIC_SAUDI_ARABIA: ::WORD = 0x01;
+pub const SUBLANG_ARABIC_IRAQ: ::WORD = 0x02;
+pub const SUBLANG_ARABIC_EGYPT: ::WORD = 0x03;
+pub const SUBLANG_ARABIC_LIBYA: ::WORD = 0x04;
+pub const SUBLANG_ARABIC_ALGERIA: ::WORD = 0x05;
+pub const SUBLANG_ARABIC_MOROCCO: ::WORD = 0x06;
+pub const SUBLANG_ARABIC_TUNISIA: ::WORD = 0x07;
+pub const SUBLANG_ARABIC_OMAN: ::WORD = 0x08;
+pub const SUBLANG_ARABIC_YEMEN: ::WORD = 0x09;
+pub const SUBLANG_ARABIC_SYRIA: ::WORD = 0x0a;
+pub const SUBLANG_ARABIC_JORDAN: ::WORD = 0x0b;
+pub const SUBLANG_ARABIC_LEBANON: ::WORD = 0x0c;
+pub const SUBLANG_ARABIC_KUWAIT: ::WORD = 0x0d;
+pub const SUBLANG_ARABIC_UAE: ::WORD = 0x0e;
+pub const SUBLANG_ARABIC_BAHRAIN: ::WORD = 0x0f;
+pub const SUBLANG_ARABIC_QATAR: ::WORD = 0x10;
+pub const SUBLANG_ARMENIAN_ARMENIA: ::WORD = 0x01;
+pub const SUBLANG_ASSAMESE_INDIA: ::WORD = 0x01;
+pub const SUBLANG_AZERI_LATIN: ::WORD = 0x01;
+pub const SUBLANG_AZERI_CYRILLIC: ::WORD = 0x02;
+pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN: ::WORD = 0x01;
+pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC: ::WORD = 0x02;
+pub const SUBLANG_BANGLA_INDIA: ::WORD = 0x01;
+pub const SUBLANG_BANGLA_BANGLADESH: ::WORD = 0x02;
+pub const SUBLANG_BASHKIR_RUSSIA: ::WORD = 0x01;
+pub const SUBLANG_BASQUE_BASQUE: ::WORD = 0x01;
+pub const SUBLANG_BELARUSIAN_BELARUS: ::WORD = 0x01;
+pub const SUBLANG_BENGALI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_BENGALI_BANGLADESH: ::WORD = 0x02;
+pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x05;
+pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC: ::WORD = 0x08;
+pub const SUBLANG_BRETON_FRANCE: ::WORD = 0x01;
+pub const SUBLANG_BULGARIAN_BULGARIA: ::WORD = 0x01;
+pub const SUBLANG_CATALAN_CATALAN: ::WORD = 0x01;
+pub const SUBLANG_CENTRAL_KURDISH_IRAQ: ::WORD = 0x01;
+pub const SUBLANG_CHEROKEE_CHEROKEE: ::WORD = 0x01;
+pub const SUBLANG_CHINESE_TRADITIONAL: ::WORD = 0x01;
+pub const SUBLANG_CHINESE_SIMPLIFIED: ::WORD = 0x02;
+pub const SUBLANG_CHINESE_HONGKONG: ::WORD = 0x03;
+pub const SUBLANG_CHINESE_SINGAPORE: ::WORD = 0x04;
+pub const SUBLANG_CHINESE_MACAU: ::WORD = 0x05;
+pub const SUBLANG_CORSICAN_FRANCE: ::WORD = 0x01;
+pub const SUBLANG_CZECH_CZECH_REPUBLIC: ::WORD = 0x01;
+pub const SUBLANG_CROATIAN_CROATIA: ::WORD = 0x01;
+pub const SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x04;
+pub const SUBLANG_DANISH_DENMARK: ::WORD = 0x01;
+pub const SUBLANG_DARI_AFGHANISTAN: ::WORD = 0x01;
+pub const SUBLANG_DIVEHI_MALDIVES: ::WORD = 0x01;
+pub const SUBLANG_DUTCH: ::WORD = 0x01;
+pub const SUBLANG_DUTCH_BELGIAN: ::WORD = 0x02;
+pub const SUBLANG_ENGLISH_US: ::WORD = 0x01;
+pub const SUBLANG_ENGLISH_UK: ::WORD = 0x02;
+pub const SUBLANG_ENGLISH_AUS: ::WORD = 0x03;
+pub const SUBLANG_ENGLISH_CAN: ::WORD = 0x04;
+pub const SUBLANG_ENGLISH_NZ: ::WORD = 0x05;
+pub const SUBLANG_ENGLISH_EIRE: ::WORD = 0x06;
+pub const SUBLANG_ENGLISH_SOUTH_AFRICA: ::WORD = 0x07;
+pub const SUBLANG_ENGLISH_JAMAICA: ::WORD = 0x08;
+pub const SUBLANG_ENGLISH_CARIBBEAN: ::WORD = 0x09;
+pub const SUBLANG_ENGLISH_BELIZE: ::WORD = 0x0a;
+pub const SUBLANG_ENGLISH_TRINIDAD: ::WORD = 0x0b;
+pub const SUBLANG_ENGLISH_ZIMBABWE: ::WORD = 0x0c;
+pub const SUBLANG_ENGLISH_PHILIPPINES: ::WORD = 0x0d;
+pub const SUBLANG_ENGLISH_INDIA: ::WORD = 0x10;
+pub const SUBLANG_ENGLISH_MALAYSIA: ::WORD = 0x11;
+pub const SUBLANG_ENGLISH_SINGAPORE: ::WORD = 0x12;
+pub const SUBLANG_ESTONIAN_ESTONIA: ::WORD = 0x01;
+pub const SUBLANG_FAEROESE_FAROE_ISLANDS: ::WORD = 0x01;
+pub const SUBLANG_FILIPINO_PHILIPPINES: ::WORD = 0x01;
+pub const SUBLANG_FINNISH_FINLAND: ::WORD = 0x01;
+pub const SUBLANG_FRENCH: ::WORD = 0x01;
+pub const SUBLANG_FRENCH_BELGIAN: ::WORD = 0x02;
+pub const SUBLANG_FRENCH_CANADIAN: ::WORD = 0x03;
+pub const SUBLANG_FRENCH_SWISS: ::WORD = 0x04;
+pub const SUBLANG_FRENCH_LUXEMBOURG: ::WORD = 0x05;
+pub const SUBLANG_FRENCH_MONACO: ::WORD = 0x06;
+pub const SUBLANG_FRISIAN_NETHERLANDS: ::WORD = 0x01;
+pub const SUBLANG_FULAH_SENEGAL: ::WORD = 0x02;
+pub const SUBLANG_GALICIAN_GALICIAN: ::WORD = 0x01;
+pub const SUBLANG_GEORGIAN_GEORGIA: ::WORD = 0x01;
+pub const SUBLANG_GERMAN: ::WORD = 0x01;
+pub const SUBLANG_GERMAN_SWISS: ::WORD = 0x02;
+pub const SUBLANG_GERMAN_AUSTRIAN: ::WORD = 0x03;
+pub const SUBLANG_GERMAN_LUXEMBOURG: ::WORD = 0x04;
+pub const SUBLANG_GERMAN_LIECHTENSTEIN: ::WORD = 0x05;
+pub const SUBLANG_GREEK_GREECE: ::WORD = 0x01;
+pub const SUBLANG_GREENLANDIC_GREENLAND: ::WORD = 0x01;
+pub const SUBLANG_GUJARATI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_HAUSA_NIGERIA_LATIN: ::WORD = 0x01;
+pub const SUBLANG_HAWAIIAN_US: ::WORD = 0x01;
+pub const SUBLANG_HEBREW_ISRAEL: ::WORD = 0x01;
+pub const SUBLANG_HINDI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_HUNGARIAN_HUNGARY: ::WORD = 0x01;
+pub const SUBLANG_ICELANDIC_ICELAND: ::WORD = 0x01;
+pub const SUBLANG_IGBO_NIGERIA: ::WORD = 0x01;
+pub const SUBLANG_INDONESIAN_INDONESIA: ::WORD = 0x01;
+pub const SUBLANG_INUKTITUT_CANADA: ::WORD = 0x01;
+pub const SUBLANG_INUKTITUT_CANADA_LATIN: ::WORD = 0x02;
+pub const SUBLANG_IRISH_IRELAND: ::WORD = 0x02;
+pub const SUBLANG_ITALIAN: ::WORD = 0x01;
+pub const SUBLANG_ITALIAN_SWISS: ::WORD = 0x02;
+pub const SUBLANG_JAPANESE_JAPAN: ::WORD = 0x01;
+pub const SUBLANG_KANNADA_INDIA: ::WORD = 0x01;
+pub const SUBLANG_KASHMIRI_SASIA: ::WORD = 0x02;
+pub const SUBLANG_KASHMIRI_INDIA: ::WORD = 0x02;
+pub const SUBLANG_KAZAK_KAZAKHSTAN: ::WORD = 0x01;
+pub const SUBLANG_KHMER_CAMBODIA: ::WORD = 0x01;
+pub const SUBLANG_KICHE_GUATEMALA: ::WORD = 0x01;
+pub const SUBLANG_KINYARWANDA_RWANDA: ::WORD = 0x01;
+pub const SUBLANG_KONKANI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_KOREAN: ::WORD = 0x01;
+pub const SUBLANG_KYRGYZ_KYRGYZSTAN: ::WORD = 0x01;
+pub const SUBLANG_LAO_LAO: ::WORD = 0x01;
+pub const SUBLANG_LATVIAN_LATVIA: ::WORD = 0x01;
+pub const SUBLANG_LITHUANIAN: ::WORD = 0x01;
+pub const SUBLANG_LOWER_SORBIAN_GERMANY: ::WORD = 0x02;
+pub const SUBLANG_LUXEMBOURGISH_LUXEMBOURG: ::WORD = 0x01;
+pub const SUBLANG_MACEDONIAN_MACEDONIA: ::WORD = 0x01;
+pub const SUBLANG_MALAY_MALAYSIA: ::WORD = 0x01;
+pub const SUBLANG_MALAY_BRUNEI_DARUSSALAM: ::WORD = 0x02;
+pub const SUBLANG_MALAYALAM_INDIA: ::WORD = 0x01;
+pub const SUBLANG_MALTESE_MALTA: ::WORD = 0x01;
+pub const SUBLANG_MAORI_NEW_ZEALAND: ::WORD = 0x01;
+pub const SUBLANG_MAPUDUNGUN_CHILE: ::WORD = 0x01;
+pub const SUBLANG_MARATHI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_MOHAWK_MOHAWK: ::WORD = 0x01;
+pub const SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA: ::WORD = 0x01;
+pub const SUBLANG_MONGOLIAN_PRC: ::WORD = 0x02;
+pub const SUBLANG_NEPALI_INDIA: ::WORD = 0x02;
+pub const SUBLANG_NEPALI_NEPAL: ::WORD = 0x01;
+pub const SUBLANG_NORWEGIAN_BOKMAL: ::WORD = 0x01;
+pub const SUBLANG_NORWEGIAN_NYNORSK: ::WORD = 0x02;
+pub const SUBLANG_OCCITAN_FRANCE: ::WORD = 0x01;
+pub const SUBLANG_ODIA_INDIA: ::WORD = 0x01;
+pub const SUBLANG_ORIYA_INDIA: ::WORD = 0x01;
+pub const SUBLANG_PASHTO_AFGHANISTAN: ::WORD = 0x01;
+pub const SUBLANG_PERSIAN_IRAN: ::WORD = 0x01;
+pub const SUBLANG_POLISH_POLAND: ::WORD = 0x01;
+pub const SUBLANG_PORTUGUESE: ::WORD = 0x02;
+pub const SUBLANG_PORTUGUESE_BRAZILIAN: ::WORD = 0x01;
+pub const SUBLANG_PULAR_SENEGAL: ::WORD = 0x02;
+pub const SUBLANG_PUNJABI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_PUNJABI_PAKISTAN: ::WORD = 0x02;
+pub const SUBLANG_QUECHUA_BOLIVIA: ::WORD = 0x01;
+pub const SUBLANG_QUECHUA_ECUADOR: ::WORD = 0x02;
+pub const SUBLANG_QUECHUA_PERU: ::WORD = 0x03;
+pub const SUBLANG_ROMANIAN_ROMANIA: ::WORD = 0x01;
+pub const SUBLANG_ROMANSH_SWITZERLAND: ::WORD = 0x01;
+pub const SUBLANG_RUSSIAN_RUSSIA: ::WORD = 0x01;
+pub const SUBLANG_SAKHA_RUSSIA: ::WORD = 0x01;
+pub const SUBLANG_SAMI_NORTHERN_NORWAY: ::WORD = 0x01;
+pub const SUBLANG_SAMI_NORTHERN_SWEDEN: ::WORD = 0x02;
+pub const SUBLANG_SAMI_NORTHERN_FINLAND: ::WORD = 0x03;
+pub const SUBLANG_SAMI_LULE_NORWAY: ::WORD = 0x04;
+pub const SUBLANG_SAMI_LULE_SWEDEN: ::WORD = 0x05;
+pub const SUBLANG_SAMI_SOUTHERN_NORWAY: ::WORD = 0x06;
+pub const SUBLANG_SAMI_SOUTHERN_SWEDEN: ::WORD = 0x07;
+pub const SUBLANG_SAMI_SKOLT_FINLAND: ::WORD = 0x08;
+pub const SUBLANG_SAMI_INARI_FINLAND: ::WORD = 0x09;
+pub const SUBLANG_SANSKRIT_INDIA: ::WORD = 0x01;
+pub const SUBLANG_SCOTTISH_GAELIC: ::WORD = 0x01;
+pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN: ::WORD = 0x06;
+pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC: ::WORD = 0x07;
+pub const SUBLANG_SERBIAN_MONTENEGRO_LATIN: ::WORD = 0x0b;
+pub const SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC: ::WORD = 0x0c;
+pub const SUBLANG_SERBIAN_SERBIA_LATIN: ::WORD = 0x09;
+pub const SUBLANG_SERBIAN_SERBIA_CYRILLIC: ::WORD = 0x0a;
+pub const SUBLANG_SERBIAN_CROATIA: ::WORD = 0x01;
+pub const SUBLANG_SERBIAN_LATIN: ::WORD = 0x02;
+pub const SUBLANG_SERBIAN_CYRILLIC: ::WORD = 0x03;
+pub const SUBLANG_SINDHI_INDIA: ::WORD = 0x01;
+pub const SUBLANG_SINDHI_PAKISTAN: ::WORD = 0x02;
+pub const SUBLANG_SINDHI_AFGHANISTAN: ::WORD = 0x02;
+pub const SUBLANG_SINHALESE_SRI_LANKA: ::WORD = 0x01;
+pub const SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA: ::WORD = 0x01;
+pub const SUBLANG_SLOVAK_SLOVAKIA: ::WORD = 0x01;
+pub const SUBLANG_SLOVENIAN_SLOVENIA: ::WORD = 0x01;
+pub const SUBLANG_SPANISH: ::WORD = 0x01;
+pub const SUBLANG_SPANISH_MEXICAN: ::WORD = 0x02;
+pub const SUBLANG_SPANISH_MODERN: ::WORD = 0x03;
+pub const SUBLANG_SPANISH_GUATEMALA: ::WORD = 0x04;
+pub const SUBLANG_SPANISH_COSTA_RICA: ::WORD = 0x05;
+pub const SUBLANG_SPANISH_PANAMA: ::WORD = 0x06;
+pub const SUBLANG_SPANISH_DOMINICAN_REPUBLIC: ::WORD = 0x07;
+pub const SUBLANG_SPANISH_VENEZUELA: ::WORD = 0x08;
+pub const SUBLANG_SPANISH_COLOMBIA: ::WORD = 0x09;
+pub const SUBLANG_SPANISH_PERU: ::WORD = 0x0a;
+pub const SUBLANG_SPANISH_ARGENTINA: ::WORD = 0x0b;
+pub const SUBLANG_SPANISH_ECUADOR: ::WORD = 0x0c;
+pub const SUBLANG_SPANISH_CHILE: ::WORD = 0x0d;
+pub const SUBLANG_SPANISH_URUGUAY: ::WORD = 0x0e;
+pub const SUBLANG_SPANISH_PARAGUAY: ::WORD = 0x0f;
+pub const SUBLANG_SPANISH_BOLIVIA: ::WORD = 0x10;
+pub const SUBLANG_SPANISH_EL_SALVADOR: ::WORD = 0x11;
+pub const SUBLANG_SPANISH_HONDURAS: ::WORD = 0x12;
+pub const SUBLANG_SPANISH_NICARAGUA: ::WORD = 0x13;
+pub const SUBLANG_SPANISH_PUERTO_RICO: ::WORD = 0x14;
+pub const SUBLANG_SPANISH_US: ::WORD = 0x15;
+pub const SUBLANG_SWAHILI_KENYA: ::WORD = 0x01;
+pub const SUBLANG_SWEDISH: ::WORD = 0x01;
+pub const SUBLANG_SWEDISH_FINLAND: ::WORD = 0x02;
+pub const SUBLANG_SYRIAC_SYRIA: ::WORD = 0x01;
+pub const SUBLANG_TAJIK_TAJIKISTAN: ::WORD = 0x01;
+pub const SUBLANG_TAMAZIGHT_ALGERIA_LATIN: ::WORD = 0x02;
+pub const SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH: ::WORD = 0x04;
+pub const SUBLANG_TAMIL_INDIA: ::WORD = 0x01;
+pub const SUBLANG_TAMIL_SRI_LANKA: ::WORD = 0x02;
+pub const SUBLANG_TATAR_RUSSIA: ::WORD = 0x01;
+pub const SUBLANG_TELUGU_INDIA: ::WORD = 0x01;
+pub const SUBLANG_THAI_THAILAND: ::WORD = 0x01;
+pub const SUBLANG_TIBETAN_PRC: ::WORD = 0x01;
+pub const SUBLANG_TIGRIGNA_ERITREA: ::WORD = 0x02;
+pub const SUBLANG_TIGRINYA_ERITREA: ::WORD = 0x02;
+pub const SUBLANG_TIGRINYA_ETHIOPIA: ::WORD = 0x01;
+pub const SUBLANG_TSWANA_BOTSWANA: ::WORD = 0x02;
+pub const SUBLANG_TSWANA_SOUTH_AFRICA: ::WORD = 0x01;
+pub const SUBLANG_TURKISH_TURKEY: ::WORD = 0x01;
+pub const SUBLANG_TURKMEN_TURKMENISTAN: ::WORD = 0x01;
+pub const SUBLANG_UIGHUR_PRC: ::WORD = 0x01;
+pub const SUBLANG_UKRAINIAN_UKRAINE: ::WORD = 0x01;
+pub const SUBLANG_UPPER_SORBIAN_GERMANY: ::WORD = 0x01;
+pub const SUBLANG_URDU_PAKISTAN: ::WORD = 0x01;
+pub const SUBLANG_URDU_INDIA: ::WORD = 0x02;
+pub const SUBLANG_UZBEK_LATIN: ::WORD = 0x01;
+pub const SUBLANG_UZBEK_CYRILLIC: ::WORD = 0x02;
+pub const SUBLANG_VALENCIAN_VALENCIA: ::WORD = 0x02;
+pub const SUBLANG_VIETNAMESE_VIETNAM: ::WORD = 0x01;
+pub const SUBLANG_WELSH_UNITED_KINGDOM: ::WORD = 0x01;
+pub const SUBLANG_WOLOF_SENEGAL: ::WORD = 0x01;
+pub const SUBLANG_XHOSA_SOUTH_AFRICA: ::WORD = 0x01;
+pub const SUBLANG_YAKUT_RUSSIA: ::WORD = 0x01;
+pub const SUBLANG_YI_PRC: ::WORD = 0x01;
+pub const SUBLANG_YORUBA_NIGERIA: ::WORD = 0x01;
+pub const SUBLANG_ZULU_SOUTH_AFRICA: ::WORD = 0x01;
+//1962
+// FIXME: Once feature(const_fn) or some CTFE alternative becomes stable, MAKELANGID! can go
+// unless we want to #[macro_export] it ...
+macro_rules! MAKELANGID { ($p:expr, $s:expr) => ($s << 10 | $p) }
+pub fn MAKELANGID(p: ::WORD, s: ::WORD) -> ::LANGID { MAKELANGID!(p, s) }
+pub fn PRIMARYLANGID(lgid: ::LANGID) -> ::WORD { lgid & 0x3ff }
+pub fn SUBLANGID(lgid: ::LANGID) -> ::WORD { lgid >> 10 }
+//2019
+pub const LANG_SYSTEM_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT);
+pub const LANG_USER_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_DEFAULT);
+//2214
+pub const MAXIMUM_WAIT_OBJECTS: ::DWORD = 64;
+pub const MAXIMUM_SUSPEND_COUNT: ::CHAR = MAXCHAR;
+//2277
+pub type KSPIN_LOCK = ::ULONG_PTR;
+pub type PKSPIN_LOCK = *mut KSPIN_LOCK;
+STRUCT!{struct M128A { // FIXME align 16
+ Low: ULONGLONG,
+ High: LONGLONG,
+}}
+pub type PM128A = *mut M128A;
+#[cfg(target_arch = "x86")]
+STRUCT!{nodebug struct XSAVE_FORMAT { // FIXME align 16
+ ControlWord: ::WORD,
+ StatusWord: ::WORD,
+ TagWord: ::BYTE,
+ Reserved1: ::BYTE,
+ ErrorOpcode: ::WORD,
+ ErrorOffset: ::DWORD,
+ ErrorSelector: ::WORD,
+ Reserved2: ::WORD,
+ DataOffset: ::DWORD,
+ DataSelector: ::WORD,
+ Reserved3: ::WORD,
+ MxCsr: ::DWORD,
+ MxCsr_Mask: ::DWORD,
+ FloatRegisters: [M128A; 8],
+ XmmRegisters: [M128A; 8],
+ Reserved4: [::BYTE; 224],
+}}
+#[cfg(target_arch = "x86_64")]
+STRUCT!{nodebug struct XSAVE_FORMAT { // FIXME align 16
+ ControlWord: ::WORD,
+ StatusWord: ::WORD,
+ TagWord: ::BYTE,
+ Reserved1: ::BYTE,
+ ErrorOpcode: ::WORD,
+ ErrorOffset: ::DWORD,
+ ErrorSelector: ::WORD,
+ Reserved2: ::WORD,
+ DataOffset: ::DWORD,
+ DataSelector: ::WORD,
+ Reserved3: ::WORD,
+ MxCsr: ::DWORD,
+ MxCsr_Mask: ::DWORD,
+ FloatRegisters: [M128A; 8],
+ XmmRegisters: [M128A; 16],
+ Reserved4: [::BYTE; 96],
+}}
+//3563
+#[cfg(target_arch = "x86")]
+pub const SIZE_OF_80387_REGISTERS: usize = 80;
+#[cfg(target_arch = "x86")]
+STRUCT!{nodebug struct FLOATING_SAVE_AREA {
+ ControlWord: ::DWORD,
+ StatusWord: ::DWORD,
+ TagWord: ::DWORD,
+ ErrorOffset: ::DWORD,
+ ErrorSelector: ::DWORD,
+ DataOffset: ::DWORD,
+ DataSelector: ::DWORD,
+ RegisterArea: [::BYTE; SIZE_OF_80387_REGISTERS],
+ Spare0: ::DWORD,
+}}
+#[cfg(target_arch = "x86")]
+pub type PFLOATING_SAVE_AREA = *mut FLOATING_SAVE_AREA;
+#[cfg(target_arch = "x86")]
+pub const MAXIMUM_SUPPORTED_EXTENSION: usize = 512;
+#[cfg(target_arch = "x86")]
+STRUCT!{nodebug struct CONTEXT {
+ ContextFlags: ::DWORD,
+ Dr0: ::DWORD,
+ Dr1: ::DWORD,
+ Dr2: ::DWORD,
+ Dr3: ::DWORD,
+ Dr6: ::DWORD,
+ Dr7: ::DWORD,
+ FloatSave: FLOATING_SAVE_AREA,
+ SegGs: ::DWORD,
+ SegFs: ::DWORD,
+ SegEs: ::DWORD,
+ SegDs: ::DWORD,
+ Edi: ::DWORD,
+ Esi: ::DWORD,
+ Ebx: ::DWORD,
+ Edx: ::DWORD,
+ Ecx: ::DWORD,
+ Eax: ::DWORD,
+ Ebp: ::DWORD,
+ Eip: ::DWORD,
+ SegCs: ::DWORD,
+ EFlags: ::DWORD,
+ Esp: ::DWORD,
+ SegSs: ::DWORD,
+ ExtendedRegisters: [::BYTE; MAXIMUM_SUPPORTED_EXTENSION],
+}}
+#[cfg(target_arch = "x86_64")]
+pub type XMM_SAVE_AREA32 = XSAVE_FORMAT;
+pub type PXMM_SAVE_AREA32 = *mut XSAVE_FORMAT;
+// FIXME - Align 16
+#[cfg(target_arch = "x86_64")]
+STRUCT!{nodebug struct CONTEXT {
+ P1Home: ::DWORD64,
+ P2Home: ::DWORD64,
+ P3Home: ::DWORD64,
+ P4Home: ::DWORD64,
+ P5Home: ::DWORD64,
+ P6Home: ::DWORD64,
+ ContextFlags: ::DWORD,
+ MxCsr: ::DWORD,
+ SegCs: ::WORD,
+ SegDs: ::WORD,
+ SegEs: ::WORD,
+ SegFs: ::WORD,
+ SegGs: ::WORD,
+ SegSs: ::WORD,
+ EFlags: ::DWORD,
+ Dr0: ::DWORD64,
+ Dr1: ::DWORD64,
+ Dr2: ::DWORD64,
+ Dr3: ::DWORD64,
+ Dr6: ::DWORD64,
+ Dr7: ::DWORD64,
+ Rax: ::DWORD64,
+ Rcx: ::DWORD64,
+ Rdx: ::DWORD64,
+ Rbx: ::DWORD64,
+ Rsp: ::DWORD64,
+ Rbp: ::DWORD64,
+ Rsi: ::DWORD64,
+ Rdi: ::DWORD64,
+ R8: ::DWORD64,
+ R9: ::DWORD64,
+ R10: ::DWORD64,
+ R11: ::DWORD64,
+ R12: ::DWORD64,
+ R13: ::DWORD64,
+ R14: ::DWORD64,
+ R15: ::DWORD64,
+ Rip: ::DWORD64,
+ FltSave: XMM_SAVE_AREA32,
+ VectorRegister: [::M128A; 26],
+ VectorControl: ::DWORD64,
+ DebugControl: ::DWORD64,
+ LastBranchToRip: ::DWORD64,
+ LastBranchFromRip: ::DWORD64,
+ LastExceptionToRip: ::DWORD64,
+ LastExceptionFromRip: ::DWORD64,
+}}
+pub type PCONTEXT = *mut CONTEXT;
+#[test]
+fn test_CONTEXT_size() {
+ use std::mem::size_of;
+ if cfg!(target_arch = "x86_64") {
+ assert_eq!(size_of::<CONTEXT>(), 1232)
+ } else if cfg!(target_arch = "x86") {
+ assert_eq!(size_of::<CONTEXT>(), 716)
+ }
+}
+pub type RUNTIME_FUNCTION = IMAGE_RUNTIME_FUNCTION_ENTRY;
+pub type PRUNTIME_FUNCTION = *mut RUNTIME_FUNCTION;
+pub const UNWIND_HISTORY_TABLE_SIZE: usize = 12;
+STRUCT!{struct UNWIND_HISTORY_TABLE_ENTRY {
+ ImageBase: ::DWORD64,
+ FunctionEntry: PRUNTIME_FUNCTION,
+}}
+pub type PUNWIND_HISTORY_TABLE_ENTRY = *mut UNWIND_HISTORY_TABLE_ENTRY;
+STRUCT!{struct UNWIND_HISTORY_TABLE {
+ Count: ::DWORD,
+ LocalHint: ::BYTE,
+ GlobalHint: ::BYTE,
+ Search: ::BYTE,
+ Once: ::BYTE,
+ LowAddress: ::DWORD64,
+ HighAddress: ::DWORD64,
+ Entry: [UNWIND_HISTORY_TABLE_ENTRY; UNWIND_HISTORY_TABLE_SIZE],
+}}
+pub type PUNWIND_HISTORY_TABLE = *mut UNWIND_HISTORY_TABLE;
+pub type PGET_RUNTIME_FUNCTION_CALLBACK = Option<unsafe extern "system" fn(
+ ControlPc: ::DWORD64, Context: ::PVOID,
+) -> PRUNTIME_FUNCTION>;
+STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS_u1 {
+ Xmm0: PM128A,
+ Xmm1: PM128A,
+ Xmm2: PM128A,
+ Xmm3: PM128A,
+ Xmm4: PM128A,
+ Xmm5: PM128A,
+ Xmm6: PM128A,
+ Xmm7: PM128A,
+ Xmm8: PM128A,
+ Xmm9: PM128A,
+ Xmm10: PM128A,
+ Xmm11: PM128A,
+ Xmm12: PM128A,
+ Xmm14: PM128A,
+ Xmm15: PM128A,
+}}
+STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS_u2 {
+ Rax: ::DWORD64,
+ Rcx: ::DWORD64,
+ Rdx: ::DWORD64,
+ Rbx: ::DWORD64,
+ Rsp: ::DWORD64,
+ Rbp: ::DWORD64,
+ Rsi: ::DWORD64,
+ Rdi: ::DWORD64,
+ R8: ::DWORD64,
+ R9: ::DWORD64,
+ R10: ::DWORD64,
+ R11: ::DWORD64,
+ R12: ::DWORD64,
+ R13: ::DWORD64,
+ R14: ::DWORD64,
+ R15: ::DWORD64,
+}}
+STRUCT!{struct KNONVOLATILE_CONTEXT_POINTERS {
+ FloatingContext: [PM128A; 16],
+ IntegerContext: [::PDWORD64; 16],
+}}
+// FIXME: all unions are untagged
+UNION!(
+ KNONVOLATILE_CONTEXT_POINTERS, FloatingContext, Xmms, Xmms_mut,
+ KNONVOLATILE_CONTEXT_POINTERS_u1
+);
+UNION!(
+ KNONVOLATILE_CONTEXT_POINTERS, IntegerContext, Regs, Regs_mut,
+ KNONVOLATILE_CONTEXT_POINTERS_u2
+);
+pub type PKNONVOLATILE_CONTEXT_POINTERS = *mut KNONVOLATILE_CONTEXT_POINTERS;
+//8983
+pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15;
+STRUCT!{struct EXCEPTION_RECORD {
+ ExceptionCode: ::DWORD,
+ ExceptionFlags: ::DWORD,
+ ExceptionRecord: *mut EXCEPTION_RECORD,
+ ExceptionAddress: ::PVOID,
+ NumberParameters: ::DWORD,
+ ExceptionInformation: [::ULONG_PTR; EXCEPTION_MAXIMUM_PARAMETERS],
+}}
+pub type PEXCEPTION_RECORD = *mut EXCEPTION_RECORD;
+//9023
+STRUCT!{struct EXCEPTION_POINTERS {
+ ExceptionRecord: PEXCEPTION_RECORD,
+ ContextRecord: PCONTEXT,
+}}
+pub type PEXCEPTION_POINTERS = *mut EXCEPTION_POINTERS;
+pub type PACCESS_TOKEN = ::PVOID;
+pub type PSECURITY_DESCRIPTOR = ::PVOID;
+pub type PSID = ::PVOID;
+pub type PCLAIMS_BLOB = ::PVOID;
+//9091
+pub type ACCESS_MASK = ::DWORD;
+pub type PACCESS_MASK = *mut ACCESS_MASK;
+pub const DELETE: ::DWORD = 0x00010000;
+pub const READ_CONTROL: ::DWORD = 0x00020000;
+pub const WRITE_DAC: ::DWORD = 0x00040000;
+pub const WRITE_OWNER: ::DWORD = 0x00080000;
+pub const SYNCHRONIZE: ::DWORD = 0x00100000;
+pub const STANDARD_RIGHTS_REQUIRED: ::DWORD = 0x000F0000;
+pub const STANDARD_RIGHTS_READ: ::DWORD = READ_CONTROL;
+pub const STANDARD_RIGHTS_WRITE: ::DWORD = READ_CONTROL;
+pub const STANDARD_RIGHTS_EXECUTE: ::DWORD = READ_CONTROL;
+pub const STANDARD_RIGHTS_ALL: ::DWORD = 0x001F0000;
+pub const SPECIFIC_RIGHTS_ALL: ::DWORD = 0x0000FFFF;
+pub const ACCESS_SYSTEM_SECURITY: ::DWORD = 0x01000000;
+pub const MAXIMUM_ALLOWED: ::DWORD = 0x02000000;
+pub const GENERIC_READ: ::DWORD = 0x80000000;
+pub const GENERIC_WRITE: ::DWORD = 0x40000000;
+pub const GENERIC_EXECUTE: ::DWORD = 0x20000000;
+pub const GENERIC_ALL: ::DWORD = 0x10000000;
+//9170
+STRUCT!{struct LUID_AND_ATTRIBUTES {
+ Luid: LUID,
+ Attributes: ::DWORD,
+}}
+pub type PLUID_AND_ATTRIBUTES = *mut LUID_AND_ATTRIBUTES;
+//9243
+ENUM!{enum SID_NAME_USE {
+ SidTypeUser = 1,
+ SidTypeGroup,
+ SidTypeDomain,
+ SidTypeAlias,
+ SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,
+ SidTypeInvalid,
+ SidTypeUnknown,
+ SidTypeComputer,
+ SidTypeLabel,
+}}
+pub type PSID_NAME_USE = *mut SID_NAME_USE;
+STRUCT!{struct SID_AND_ATTRIBUTES {
+ Sid: PSID,
+ Attributes: ::DWORD,
+}}
+pub type PSID_AND_ATTRIBUTES = *mut SID_AND_ATTRIBUTES;
+//9802
+pub const ACL_REVISION: ::BYTE = 2;
+pub const ACL_REVISION_DS: ::BYTE = 4;
+pub const ACL_REVISION1: ::BYTE = 1;
+pub const MIN_ACL_REVISION: ::BYTE = ACL_REVISION2;
+pub const ACL_REVISION2: ::BYTE = 2;
+pub const ACL_REVISION3: ::BYTE = 3;
+pub const ACL_REVISION4: ::BYTE = 4;
+pub const MAX_ACL_REVISION: ::BYTE = ACL_REVISION4;
+STRUCT!{struct ACL {
+ AclRevision: ::BYTE,
+ Sbz1: ::BYTE,
+ AclSize: ::WORD,
+ AceCount: ::WORD,
+ Sbz2: ::WORD,
+}}
+pub type PACL = *mut ACL;
+//9888
+pub const SE_PRIVILEGE_ENABLED_BY_DEFAULT: ::DWORD = 0x00000001;
+pub const SE_PRIVILEGE_ENABLED: ::DWORD = 0x00000002;
+pub const SE_PRIVILEGE_REMOVED: ::DWORD = 0x00000004;
+pub const SE_PRIVILEGE_USED_FOR_ACCESS: ::DWORD = 0x80000000;
+pub const SE_PRIVILEGE_VALID_ATTRIBUTES: ::DWORD = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS;
+pub const PRIVILEGE_SET_ALL_NECESSARY: ::DWORD = 1;
+//10689
+pub const TOKEN_ASSIGN_PRIMARY: ::DWORD = 0x0001;
+pub const TOKEN_DUPLICATE: ::DWORD = 0x0002;
+pub const TOKEN_IMPERSONATE: ::DWORD = 0x0004;
+pub const TOKEN_QUERY: ::DWORD = 0x0008;
+pub const TOKEN_QUERY_SOURCE: ::DWORD = 0x0010;
+pub const TOKEN_ADJUST_PRIVILEGES: ::DWORD = 0x0020;
+pub const TOKEN_ADJUST_GROUPS: ::DWORD = 0x0040;
+pub const TOKEN_ADJUST_DEFAULT: ::DWORD = 0x0080;
+pub const TOKEN_ADJUST_SESSIONID: ::DWORD = 0x0100;
+pub const TOKEN_ALL_ACCESS_P: ::DWORD = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY
+ | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE
+ | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT;
+pub const TOKEN_ALL_ACCESS: ::DWORD = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID;
+pub const TOKEN_READ: ::DWORD = STANDARD_RIGHTS_READ | TOKEN_QUERY;
+pub const TOKEN_WRITE: ::DWORD = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES
+ | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT;
+pub const TOKEN_EXECUTE: ::DWORD = STANDARD_RIGHTS_EXECUTE;
+//10823
+STRUCT!{nodebug struct TOKEN_PRIVILEGES {
+ PrivilegeCount: ::DWORD,
+ Privileges: [LUID_AND_ATTRIBUTES; 0],
+}}
+pub type PTOKEN_PRIVILEGES = *mut TOKEN_PRIVILEGES;
+//10965
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID: ::WORD = 0x00;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64: ::WORD = 0x01;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64: ::WORD = 0x02;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING: ::WORD = 0x03;
+STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE {
+ Version: ::DWORD64,
+ Name: ::PWSTR,
+}}
+pub type PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE = *mut CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN: ::WORD = 0x04;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_SID: ::WORD = 0x05;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN: ::WORD = 0x06;
+STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE {
+ pValue: ::PVOID,
+ ValueLength: ::DWORD,
+}}
+pub type PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE =
+ *mut CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE;
+pub const CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING: ::WORD = 0x10;
+pub const CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE: ::DWORD = 0x0001;
+pub const CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE: ::DWORD = 0x0002;
+pub const CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY: ::DWORD = 0x0004;
+pub const CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT: ::DWORD = 0x0008;
+pub const CLAIM_SECURITY_ATTRIBUTE_DISABLED: ::DWORD = 0x0010;
+pub const CLAIM_SECURITY_ATTRIBUTE_MANDATORY: ::DWORD = 0x0020;
+pub const CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS: ::DWORD = CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE
+ | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY
+ | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED
+ | CLAIM_SECURITY_ATTRIBUTE_MANDATORY;
+pub const CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS: ::DWORD = 0xFFFF0000;
+STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_V1 {
+ Name: ::PWSTR,
+ ValueType: ::WORD,
+ Reserved: ::WORD,
+ Flags: ::DWORD,
+ ValueCount: ::DWORD,
+ // Put data here
+}}
+pub type PCLAIM_SECURITY_ATTRIBUTE_V1 = *mut CLAIM_SECURITY_ATTRIBUTE_V1;
+STRUCT!{struct CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 {
+ Name: ::DWORD,
+ ValueType: ::WORD,
+ Reserved: ::WORD,
+ Flags: ::DWORD,
+ ValueCount: ::DWORD,
+ // Put array here
+}}
+pub type PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 = *mut CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1;
+pub const CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1: ::WORD = 1;
+pub const CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION: ::WORD =
+ CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1;
+STRUCT!{struct CLAIM_SECURITY_ATTRIBUTES_INFORMATION {
+ Version: ::WORD,
+ Reserved: ::WORD,
+ AttributeCount: ::DWORD,
+ pAttributeV1: PCLAIM_SECURITY_ATTRIBUTE_V1,
+}}
+pub type PCLAIM_SECURITY_ATTRIBUTES_INFORMATION = *mut CLAIM_SECURITY_ATTRIBUTES_INFORMATION;
+//11257
+pub type SECURITY_INFORMATION = ::DWORD;
+pub type PSECURITY_INFORMATION = *mut ::DWORD;
+pub const OWNER_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000001;
+pub const GROUP_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000002;
+pub const DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000004;
+pub const SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000008;
+pub const LABEL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000010;
+pub const ATTRIBUTE_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000020;
+pub const SCOPE_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000040;
+pub const PROCESS_TRUST_LABEL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00000080;
+pub const BACKUP_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x00010000;
+pub const PROTECTED_DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x80000000;
+pub const PROTECTED_SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x40000000;
+pub const UNPROTECTED_DACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x20000000;
+pub const UNPROTECTED_SACL_SECURITY_INFORMATION: SECURITY_INFORMATION = 0x10000000;
+ENUM!{enum SE_LEARNING_MODE_DATA_TYPE {
+ SeLearningModeInvalidType = 0,
+ SeLearningModeSettings,
+ SeLearningModeMax,
+}}
+STRUCT!{struct SECURITY_CAPABILITIES {
+ AppContainerSid: PSID,
+ Capabilities: PSID_AND_ATTRIBUTES,
+ CapabilityCount: ::DWORD,
+ Reserved: ::DWORD,
+}}
+pub type PSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES;
+pub type LPSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES;
+pub const PROCESS_TERMINATE: ::DWORD = 0x0001;
+pub const PROCESS_CREATE_THREAD: ::DWORD = 0x0002;
+pub const PROCESS_SET_SESSIONID: ::DWORD = 0x0004;
+pub const PROCESS_VM_OPERATION: ::DWORD = 0x0008;
+pub const PROCESS_VM_READ: ::DWORD = 0x0010;
+pub const PROCESS_VM_WRITE: ::DWORD = 0x0020;
+pub const PROCESS_DUP_HANDLE: ::DWORD = 0x0040;
+pub const PROCESS_CREATE_PROCESS: ::DWORD = 0x0080;
+pub const PROCESS_SET_QUOTA: ::DWORD = 0x0100;
+pub const PROCESS_SET_INFORMATION: ::DWORD = 0x0200;
+pub const PROCESS_QUERY_INFORMATION: ::DWORD = 0x0400;
+pub const PROCESS_SUSPEND_RESUME: ::DWORD = 0x0800;
+pub const PROCESS_QUERY_LIMITED_INFORMATION: ::DWORD = 0x1000;
+pub const PROCESS_SET_LIMITED_INFORMATION: ::DWORD = 0x2000;
+pub const PROCESS_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF;
+//11007
+pub const THREAD_BASE_PRIORITY_LOWRT: ::DWORD = 15;
+pub const THREAD_BASE_PRIORITY_MAX: ::DWORD = 2;
+pub const THREAD_BASE_PRIORITY_MIN: ::DWORD = -2i32 as ::DWORD;
+pub const THREAD_BASE_PRIORITY_IDLE: ::DWORD = -15i32 as ::DWORD;
+//11018
+STRUCT!{struct QUOTA_LIMITS {
+ PagedPoolLimit: ::SIZE_T,
+ NonPagedPoolLimit: ::SIZE_T,
+ MinimumWorkingSetSize: ::SIZE_T,
+ MaximumWorkingSetSize: ::SIZE_T,
+ PagefileLimit: ::SIZE_T,
+ TimeLimit: ::LARGE_INTEGER,
+}}
+pub type PQUOTA_LIMITS = *mut QUOTA_LIMITS;
+pub const QUOTA_LIMITS_HARDWS_MIN_ENABLE: ::DWORD = 0x00000001;
+pub const QUOTA_LIMITS_HARDWS_MIN_DISABLE: ::DWORD = 0x00000002;
+pub const QUOTA_LIMITS_HARDWS_MAX_ENABLE: ::DWORD = 0x00000004;
+pub const QUOTA_LIMITS_HARDWS_MAX_DISABLE: ::DWORD = 0x00000008;
+pub const QUOTA_LIMITS_USE_DEFAULT_LIMITS: ::DWORD = 0x00000010;
+STRUCT!{struct RATE_QUOTA_LIMIT {
+ RateData: ::DWORD,
+ BitFields: ::DWORD,
+}}
+BITFIELD!(RATE_QUOTA_LIMIT BitFields: ::DWORD [
+ RatePercent set_RatePercent[0..7],
+ Reserved0 set_Reserved0[7..32],
+]);
+pub type PRATE_QUOTA_LIMIT = *mut RATE_QUOTA_LIMIT;
+STRUCT!{struct QUOTA_LIMITS_EX {
+ PagedPoolLimit: ::SIZE_T,
+ NonPagedPoolLimit: ::SIZE_T,
+ MinimumWorkingSetSize: ::SIZE_T,
+ MaximumWorkingSetSize: ::SIZE_T,
+ PagefileLimit: ::SIZE_T,
+ TimeLimit: ::LARGE_INTEGER,
+ WorkingSetLimit: ::SIZE_T,
+ Reserved2: ::SIZE_T,
+ Reserved3: ::SIZE_T,
+ Reserved4: ::SIZE_T,
+ Flags: ::DWORD,
+ CpuRateLimit: RATE_QUOTA_LIMIT,
+}}
+pub type PQUOTA_LIMITS_EX = *mut QUOTA_LIMITS_EX;
+STRUCT!{struct IO_COUNTERS {
+ ReadOperationCount: ::ULONGLONG,
+ WriteOperationCount: ::ULONGLONG,
+ OtherOperationCount: ::ULONGLONG,
+ ReadTransferCount: ::ULONGLONG,
+ WriteTransferCount: ::ULONGLONG,
+ OtherTransferCount: ::ULONGLONG,
+}}
+pub type PIO_COUNTERS = *mut IO_COUNTERS;
+//11192
+STRUCT!{struct JOBOBJECT_BASIC_LIMIT_INFORMATION {
+ PerProcessUserTimeLimit: ::LARGE_INTEGER,
+ PerJobUserTimeLimit: ::LARGE_INTEGER,
+ LimitFlags: ::DWORD,
+ MinimumWorkingSetSize: ::SIZE_T,
+ MaximumWorkingSetSize: ::SIZE_T,
+ ActiveProcessLimit: ::DWORD,
+ Affinity: ::ULONG_PTR,
+ PriorityClass: ::DWORD,
+ SchedulingClass: ::DWORD,
+}}
+pub type PJOBOBJECT_BASIC_LIMIT_INFORMATION = *mut JOBOBJECT_BASIC_LIMIT_INFORMATION;
+STRUCT!{struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
+ BasicLimitInformation: JOBOBJECT_BASIC_LIMIT_INFORMATION,
+ IoInfo: IO_COUNTERS,
+ ProcessMemoryLimit: ::SIZE_T,
+ JobMemoryLimit: ::SIZE_T,
+ PeakProcessMemoryUsed: ::SIZE_T,
+ PeakJobMemoryUsed: ::SIZE_T,
+}}
+pub type PJOBOBJECT_EXTENDED_LIMIT_INFORMATION = *mut JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
+STRUCT!{struct JOBOBJECT_BASIC_PROCESS_ID_LIST {
+ NumberOfAssignedProcesses: ::DWORD,
+ NumberOfProcessIdsInList: ::DWORD,
+ ProcessIdList: [::ULONG_PTR; 0],
+}}
+//11712
+pub const JOB_OBJECT_TERMINATE_AT_END_OF_JOB: ::DWORD = 0;
+pub const JOB_OBJECT_POST_AT_END_OF_JOB: ::DWORD = 1;
+pub const JOB_OBJECT_MSG_END_OF_JOB_TIME: ::DWORD = 1;
+pub const JOB_OBJECT_MSG_END_OF_PROCESS_TIME: ::DWORD = 2;
+pub const JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT: ::DWORD = 3;
+pub const JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO: ::DWORD = 4;
+pub const JOB_OBJECT_MSG_NEW_PROCESS: ::DWORD = 6;
+pub const JOB_OBJECT_MSG_EXIT_PROCESS: ::DWORD = 7;
+pub const JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS: ::DWORD = 8;
+pub const JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT: ::DWORD = 9;
+pub const JOB_OBJECT_MSG_JOB_MEMORY_LIMIT: ::DWORD = 10;
+pub const JOB_OBJECT_MSG_NOTIFICATION_LIMIT: ::DWORD = 11;
+pub const JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT: ::DWORD = 12;
+pub const JOB_OBJECT_MSG_MINIMUM: ::DWORD = 1;
+pub const JOB_OBJECT_MSG_MAXIMUM: ::DWORD = 12;
+pub const JOB_OBJECT_VALID_COMPLETION_FILTER: ::DWORD = ((1 << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1)
+ - ((1 << JOB_OBJECT_MSG_MINIMUM) - 1);
+pub const JOB_OBJECT_LIMIT_WORKINGSET: ::DWORD = 0x00000001;
+pub const JOB_OBJECT_LIMIT_PROCESS_TIME: ::DWORD = 0x00000002;
+pub const JOB_OBJECT_LIMIT_JOB_TIME: ::DWORD = 0x00000004;
+pub const JOB_OBJECT_LIMIT_ACTIVE_PROCESS: ::DWORD = 0x00000008;
+pub const JOB_OBJECT_LIMIT_AFFINITY: ::DWORD = 0x00000010;
+pub const JOB_OBJECT_LIMIT_PRIORITY_CLASS: ::DWORD = 0x00000020;
+pub const JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME: ::DWORD = 0x00000040;
+pub const JOB_OBJECT_LIMIT_SCHEDULING_CLASS: ::DWORD = 0x00000080;
+pub const JOB_OBJECT_LIMIT_PROCESS_MEMORY: ::DWORD = 0x00000100;
+pub const JOB_OBJECT_LIMIT_JOB_MEMORY: ::DWORD = 0x00000200;
+pub const JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION: ::DWORD = 0x00000400;
+pub const JOB_OBJECT_LIMIT_BREAKAWAY_OK: ::DWORD = 0x00000800;
+pub const JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK: ::DWORD = 0x00001000;
+pub const JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE: ::DWORD = 0x00002000;
+pub const JOB_OBJECT_LIMIT_SUBSET_AFFINITY: ::DWORD = 0x00004000;
+pub const JOB_OBJECT_LIMIT_JOB_READ_BYTES: ::DWORD = 0x00010000;
+pub const JOB_OBJECT_LIMIT_JOB_WRITE_BYTES: ::DWORD = 0x00020000;
+pub const JOB_OBJECT_LIMIT_RATE_CONTROL: ::DWORD = 0x00040000;
+pub const JOB_OBJECT_LIMIT_RESERVED3: ::DWORD = 0x00008000;
+pub const JOB_OBJECT_LIMIT_VALID_FLAGS: ::DWORD = 0x0007ffff;
+pub const JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS: ::DWORD = 0x000000ff;
+pub const JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS: ::DWORD = 0x00007fff;
+pub const JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS: ::DWORD = 0x00070204;
+pub const JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS: ::DWORD = 0x0007ffff;
+pub const JOB_OBJECT_UILIMIT_NONE: ::DWORD = 0x00000000;
+pub const JOB_OBJECT_UILIMIT_HANDLES: ::DWORD = 0x00000001;
+pub const JOB_OBJECT_UILIMIT_READCLIPBOARD: ::DWORD = 0x00000002;
+pub const JOB_OBJECT_UILIMIT_WRITECLIPBOARD: ::DWORD = 0x00000004;
+pub const JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS: ::DWORD = 0x00000008;
+pub const JOB_OBJECT_UILIMIT_DISPLAYSETTINGS: ::DWORD = 0x00000010;
+pub const JOB_OBJECT_UILIMIT_GLOBALATOMS: ::DWORD = 0x00000020;
+pub const JOB_OBJECT_UILIMIT_DESKTOP: ::DWORD = 0x00000040;
+pub const JOB_OBJECT_UILIMIT_EXITWINDOWS: ::DWORD = 0x00000080;
+pub const JOB_OBJECT_UILIMIT_ALL: ::DWORD = 0x000000FF;
+pub const JOB_OBJECT_UI_VALID_FLAGS: ::DWORD = 0x000000FF;
+pub const JOB_OBJECT_SECURITY_NO_ADMIN: ::DWORD = 0x00000001;
+pub const JOB_OBJECT_SECURITY_RESTRICTED_TOKEN: ::DWORD = 0x00000002;
+pub const JOB_OBJECT_SECURITY_ONLY_TOKEN: ::DWORD = 0x00000004;
+pub const JOB_OBJECT_SECURITY_FILTER_TOKENS: ::DWORD = 0x00000008;
+pub const JOB_OBJECT_SECURITY_VALID_FLAGS: ::DWORD = 0x0000000f;
+pub const JOB_OBJECT_CPU_RATE_CONTROL_ENABLE: ::DWORD = 0x1;
+pub const JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED: ::DWORD = 0x2;
+pub const JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP: ::DWORD = 0x4;
+pub const JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY: ::DWORD = 0x8;
+pub const JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS: ::DWORD = 0xf;
+ENUM!{enum JOBOBJECTINFOCLASS {
+ JobObjectBasicAccountingInformation = 1,
+ JobObjectBasicLimitInformation,
+ JobObjectBasicProcessIdList,
+ JobObjectBasicUIRestrictions,
+ JobObjectSecurityLimitInformation,
+ JobObjectEndOfJobTimeInformation,
+ JobObjectAssociateCompletionPortInformation,
+ JobObjectBasicAndIoAccountingInformation,
+ JobObjectExtendedLimitInformation,
+ JobObjectJobSetInformation,
+ JobObjectGroupInformation,
+ JobObjectNotificationLimitInformation,
+ JobObjectLimitViolationInformation,
+ JobObjectGroupInformationEx,
+ JobObjectCpuRateControlInformation,
+ JobObjectCompletionFilter,
+ JobObjectCompletionCounter,
+ JobObjectReserved1Information = 18,
+ JobObjectReserved2Information,
+ JobObjectReserved3Information,
+ JobObjectReserved4Information,
+ JobObjectReserved5Information,
+ JobObjectReserved6Information,
+ JobObjectReserved7Information,
+ JobObjectReserved8Information,
+ JobObjectReserved9Information,
+ MaxJobObjectInfoClass,
+}}
+//12063
+pub const SECTION_QUERY: ::DWORD = 0x0001;
+pub const SECTION_MAP_WRITE: ::DWORD = 0x0002;
+pub const SECTION_MAP_READ: ::DWORD = 0x0004;
+pub const SECTION_MAP_EXECUTE: ::DWORD = 0x0008;
+pub const SECTION_EXTEND_SIZE: ::DWORD = 0x0010;
+pub const SECTION_MAP_EXECUTE_EXPLICIT: ::DWORD = 0x0020;
+pub const SECTION_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SECTION_QUERY
+ | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE;
+//12100
+pub const PAGE_NOACCESS: ::DWORD = 0x01;
+pub const PAGE_READONLY: ::DWORD = 0x02;
+pub const PAGE_READWRITE: ::DWORD = 0x04;
+pub const PAGE_WRITECOPY: ::DWORD = 0x08;
+pub const PAGE_EXECUTE: ::DWORD = 0x10;
+pub const PAGE_EXECUTE_READ: ::DWORD = 0x20;
+pub const PAGE_EXECUTE_READWRITE: ::DWORD = 0x40;
+pub const PAGE_EXECUTE_WRITECOPY: ::DWORD = 0x80;
+pub const PAGE_GUARD: ::DWORD = 0x100;
+pub const PAGE_NOCACHE: ::DWORD = 0x200;
+pub const PAGE_WRITECOMBINE: ::DWORD = 0x400;
+pub const PAGE_REVERT_TO_FILE_MAP: ::DWORD = 0x80000000;
+pub const PAGE_TARGETS_NO_UPDATE: ::DWORD = 0x40000000;
+pub const PAGE_TARGETS_INVALID: ::DWORD = 0x40000000;
+pub const MEM_COMMIT: ::DWORD = 0x1000;
+pub const MEM_RESERVE: ::DWORD = 0x2000;
+pub const MEM_DECOMMIT: ::DWORD = 0x4000;
+pub const MEM_RELEASE: ::DWORD = 0x8000;
+pub const MEM_FREE: ::DWORD = 0x10000;
+pub const MEM_PRIVATE: ::DWORD = 0x20000;
+pub const MEM_MAPPED: ::DWORD = 0x40000;
+pub const MEM_RESET: ::DWORD = 0x80000;
+pub const MEM_TOP_DOWN: ::DWORD = 0x100000;
+pub const MEM_WRITE_WATCH: ::DWORD = 0x200000;
+pub const MEM_PHYSICAL: ::DWORD = 0x400000;
+pub const MEM_ROTATE: ::DWORD = 0x800000;
+pub const MEM_DIFFERENT_IMAGE_BASE_OK: ::DWORD = 0x800000;
+pub const MEM_RESET_UNDO: ::DWORD = 0x1000000;
+pub const MEM_LARGE_PAGES: ::DWORD = 0x20000000;
+pub const MEM_4MB_PAGES: ::DWORD = 0x80000000;
+pub const SEC_FILE: ::DWORD = 0x800000;
+pub const SEC_IMAGE: ::DWORD = 0x1000000;
+pub const SEC_PROTECTED_IMAGE: ::DWORD = 0x2000000;
+pub const SEC_RESERVE: ::DWORD = 0x4000000;
+pub const SEC_COMMIT: ::DWORD = 0x8000000;
+pub const SEC_NOCACHE: ::DWORD = 0x10000000;
+pub const SEC_WRITECOMBINE: ::DWORD = 0x40000000;
+pub const SEC_LARGE_PAGES: ::DWORD = 0x80000000;
+pub const SEC_IMAGE_NO_EXECUTE: ::DWORD = (SEC_IMAGE | SEC_NOCACHE);
+pub const MEM_IMAGE: ::DWORD = SEC_IMAGE;
+pub const WRITE_WATCH_FLAG_RESET: ::DWORD = 0x01;
+pub const MEM_UNMAP_WITH_TRANSIENT_BOOST: ::DWORD = 0x01;
+//12217
+pub const FILE_READ_DATA: ::DWORD = 0x0001;
+pub const FILE_LIST_DIRECTORY: ::DWORD = 0x0001;
+pub const FILE_WRITE_DATA: ::DWORD = 0x0002;
+pub const FILE_ADD_FILE: ::DWORD = 0x0002;
+pub const FILE_APPEND_DATA: ::DWORD = 0x0004;
+pub const FILE_ADD_SUBDIRECTORY: ::DWORD = 0x0004;
+pub const FILE_CREATE_PIPE_INSTANCE: ::DWORD = 0x0004;
+pub const FILE_READ_EA: ::DWORD = 0x0008;
+pub const FILE_WRITE_EA: ::DWORD = 0x0010;
+pub const FILE_EXECUTE: ::DWORD = 0x0020;
+pub const FILE_TRAVERSE: ::DWORD = 0x0020;
+pub const FILE_DELETE_CHILD: ::DWORD = 0x0040;
+pub const FILE_READ_ATTRIBUTES: ::DWORD = 0x0080;
+pub const FILE_WRITE_ATTRIBUTES: ::DWORD = 0x0100;
+pub const FILE_ALL_ACCESS: ::DWORD = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF;
+pub const FILE_GENERIC_READ: ::DWORD = STANDARD_RIGHTS_READ | FILE_READ_DATA
+ | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE;
+pub const FILE_GENERIC_WRITE: ::DWORD = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA
+ | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE;
+pub const FILE_GENERIC_EXECUTE: ::DWORD = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES
+ | FILE_EXECUTE | SYNCHRONIZE;
+pub const FILE_SHARE_READ: ::DWORD = 0x00000001;
+pub const FILE_SHARE_WRITE: ::DWORD = 0x00000002;
+pub const FILE_SHARE_DELETE: ::DWORD = 0x00000004;
+pub const FILE_ATTRIBUTE_READONLY: ::DWORD = 0x00000001;
+pub const FILE_ATTRIBUTE_HIDDEN: ::DWORD = 0x00000002;
+pub const FILE_ATTRIBUTE_SYSTEM: ::DWORD = 0x00000004;
+pub const FILE_ATTRIBUTE_DIRECTORY: ::DWORD = 0x00000010;
+pub const FILE_ATTRIBUTE_ARCHIVE: ::DWORD = 0x00000020;
+pub const FILE_ATTRIBUTE_DEVICE: ::DWORD = 0x00000040;
+pub const FILE_ATTRIBUTE_NORMAL: ::DWORD = 0x00000080;
+pub const FILE_ATTRIBUTE_TEMPORARY: ::DWORD = 0x00000100;
+pub const FILE_ATTRIBUTE_SPARSE_FILE: ::DWORD = 0x00000200;
+pub const FILE_ATTRIBUTE_REPARSE_POINT: ::DWORD = 0x00000400;
+pub const FILE_ATTRIBUTE_COMPRESSED: ::DWORD = 0x00000800;
+pub const FILE_ATTRIBUTE_OFFLINE: ::DWORD = 0x00001000;
+pub const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED: ::DWORD = 0x00002000;
+pub const FILE_ATTRIBUTE_ENCRYPTED: ::DWORD = 0x00004000;
+pub const FILE_ATTRIBUTE_INTEGRITY_STREAM: ::DWORD = 0x00008000;
+pub const FILE_ATTRIBUTE_VIRTUAL: ::DWORD = 0x00010000;
+pub const FILE_ATTRIBUTE_NO_SCRUB_DATA: ::DWORD = 0x00020000;
+pub const FILE_ATTRIBUTE_EA: ::DWORD = 0x00040000;
+pub const FILE_NOTIFY_CHANGE_FILE_NAME: ::DWORD = 0x00000001;
+pub const FILE_NOTIFY_CHANGE_DIR_NAME: ::DWORD = 0x00000002;
+pub const FILE_NOTIFY_CHANGE_ATTRIBUTES: ::DWORD = 0x00000004;
+pub const FILE_NOTIFY_CHANGE_SIZE: ::DWORD = 0x00000008;
+pub const FILE_NOTIFY_CHANGE_LAST_WRITE: ::DWORD = 0x00000010;
+pub const FILE_NOTIFY_CHANGE_LAST_ACCESS: ::DWORD = 0x00000020;
+pub const FILE_NOTIFY_CHANGE_CREATION: ::DWORD = 0x00000040;
+pub const FILE_NOTIFY_CHANGE_SECURITY: ::DWORD = 0x00000100;
+pub const FILE_ACTION_ADDED: ::DWORD = 0x00000001;
+pub const FILE_ACTION_REMOVED: ::DWORD = 0x00000002;
+pub const FILE_ACTION_MODIFIED: ::DWORD = 0x00000003;
+pub const FILE_ACTION_RENAMED_OLD_NAME: ::DWORD = 0x00000004;
+pub const FILE_ACTION_RENAMED_NEW_NAME: ::DWORD = 0x00000005;
+pub const MAILSLOT_NO_MESSAGE: ::DWORD = 0xFFFFFFFF;
+pub const MAILSLOT_WAIT_FOREVER: ::DWORD = 0xFFFFFFFF;
+pub const FILE_CASE_SENSITIVE_SEARCH: ::DWORD = 0x00000001;
+pub const FILE_CASE_PRESERVED_NAMES: ::DWORD = 0x00000002;
+pub const FILE_UNICODE_ON_DISK: ::DWORD = 0x00000004;
+pub const FILE_PERSISTENT_ACLS: ::DWORD = 0x00000008;
+pub const FILE_FILE_COMPRESSION: ::DWORD = 0x00000010;
+pub const FILE_VOLUME_QUOTAS: ::DWORD = 0x00000020;
+pub const FILE_SUPPORTS_SPARSE_FILES: ::DWORD = 0x00000040;
+pub const FILE_SUPPORTS_REPARSE_POINTS: ::DWORD = 0x00000080;
+pub const FILE_SUPPORTS_REMOTE_STORAGE: ::DWORD = 0x00000100;
+pub const FILE_VOLUME_IS_COMPRESSED: ::DWORD = 0x00008000;
+pub const FILE_SUPPORTS_OBJECT_IDS: ::DWORD = 0x00010000;
+pub const FILE_SUPPORTS_ENCRYPTION: ::DWORD = 0x00020000;
+pub const FILE_NAMED_STREAMS: ::DWORD = 0x00040000;
+pub const FILE_READ_ONLY_VOLUME: ::DWORD = 0x00080000;
+pub const FILE_SEQUENTIAL_WRITE_ONCE: ::DWORD = 0x00100000;
+pub const FILE_SUPPORTS_TRANSACTIONS: ::DWORD = 0x00200000;
+pub const FILE_SUPPORTS_HARD_LINKS: ::DWORD = 0x00400000;
+pub const FILE_SUPPORTS_EXTENDED_ATTRIBUTES: ::DWORD = 0x00800000;
+pub const FILE_SUPPORTS_OPEN_BY_FILE_ID: ::DWORD = 0x01000000;
+pub const FILE_SUPPORTS_USN_JOURNAL: ::DWORD = 0x02000000;
+pub const FILE_SUPPORTS_INTEGRITY_STREAMS: ::DWORD = 0x04000000;
+pub const FILE_INVALID_FILE_ID: ::LONGLONG = -1;
+STRUCT!{struct FILE_ID_128 {
+ Identifier: [::BYTE; 16],
+}}
+pub type PFILE_ID_128 = *mut FILE_ID_128;
+STRUCT!{struct FILE_NOTIFY_INFORMATION {
+ NextEntryOffset: ::DWORD,
+ Action: ::DWORD,
+ FileNameLength: ::DWORD,
+ FileName: [::WCHAR; 0],
+}}
+STRUCT!{struct FILE_SEGMENT_ELEMENT {
+ Buffer: ::PVOID64,
+ Alignment: ::ULONGLONG,
+}}
+pub type PFILE_SEGMENT_ELEMENT = *mut FILE_SEGMENT_ELEMENT;
+//12475
+pub const IO_REPARSE_TAG_MOUNT_POINT: ::DWORD = 0xA0000003;
+pub const IO_REPARSE_TAG_HSM: ::DWORD = 0xC0000004;
+pub const IO_REPARSE_TAG_HSM2: ::DWORD = 0x80000006;
+pub const IO_REPARSE_TAG_SIS: ::DWORD = 0x80000007;
+pub const IO_REPARSE_TAG_WIM: ::DWORD = 0x80000008;
+pub const IO_REPARSE_TAG_CSV: ::DWORD = 0x80000009;
+pub const IO_REPARSE_TAG_DFS: ::DWORD = 0x8000000A;
+pub const IO_REPARSE_TAG_SYMLINK: ::DWORD = 0xA000000C;
+pub const IO_REPARSE_TAG_DFSR: ::DWORD = 0x80000012;
+pub const IO_REPARSE_TAG_DEDUP: ::DWORD = 0x80000013;
+pub const IO_REPARSE_TAG_NFS: ::DWORD = 0x80000014;
+pub const IO_REPARSE_TAG_FILE_PLACEHOLDER: ::DWORD = 0x80000015;
+pub const IO_REPARSE_TAG_WOF: ::DWORD = 0x80000017;
+//12788
+pub const DUPLICATE_CLOSE_SOURCE: ::DWORD = 0x00000001;
+pub const DUPLICATE_SAME_ACCESS: ::DWORD = 0x00000002;
+//14708
+STRUCT!{struct PROCESSOR_POWER_POLICY_INFO {
+ TimeCheck: ::DWORD,
+ DemoteLimit: ::DWORD,
+ PromoteLimit: ::DWORD,
+ DemotePercent: ::BYTE,
+ PromotePercent: ::BYTE,
+ Spare: [::BYTE; 2],
+ Reserved: ::DWORD,
+}}
+BITFIELD!(PROCESSOR_POWER_POLICY_INFO Reserved: ::DWORD [
+ AllowDemotion set_AllowDemotion[0..1],
+ AllowPromotion set_AllowPromotion[1..2],
+]);
+pub type PPROCESSOR_POWER_POLICY_INFO = *mut PROCESSOR_POWER_POLICY_INFO;
+//15000
+STRUCT!{struct IMAGE_FILE_HEADER {
+ Machine: ::WORD,
+ NumberOfSections: ::WORD,
+ TimeDateStamp: ::DWORD,
+ PointerToSymbolTable: ::DWORD,
+ NumberOfSymbols: ::DWORD,
+ SizeOfOptionalHeader: ::WORD,
+ Characteristics: ::WORD,
+}}
+pub type PIMAGE_FILE_HEADER = *mut IMAGE_FILE_HEADER;
+pub const IMAGE_SIZEOF_FILE_HEADER: usize = 20;
+pub const IMAGE_FILE_RELOCS_STRIPPED: ::WORD = 0x0001;
+pub const IMAGE_FILE_EXECUTABLE_IMAGE: ::WORD = 0x0002;
+pub const IMAGE_FILE_LINE_NUMS_STRIPPED: ::WORD = 0x0004;
+pub const IMAGE_FILE_LOCAL_SYMS_STRIPPED: ::WORD = 0x0008;
+pub const IMAGE_FILE_AGGRESIVE_WS_TRIM: ::WORD = 0x0010;
+pub const IMAGE_FILE_LARGE_ADDRESS_AWARE: ::WORD = 0x0020;
+pub const IMAGE_FILE_BYTES_REVERSED_LO: ::WORD = 0x0080;
+pub const IMAGE_FILE_32BIT_MACHINE: ::WORD = 0x0100;
+pub const IMAGE_FILE_DEBUG_STRIPPED: ::WORD = 0x0200;
+pub const IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP: ::WORD = 0x0400;
+pub const IMAGE_FILE_NET_RUN_FROM_SWAP: ::WORD = 0x0800;
+pub const IMAGE_FILE_SYSTEM: ::WORD = 0x1000;
+pub const IMAGE_FILE_DLL: ::WORD = 0x2000;
+pub const IMAGE_FILE_UP_SYSTEM_ONLY: ::WORD = 0x4000;
+pub const IMAGE_FILE_BYTES_REVERSED_HI: ::WORD = 0x8000;
+pub const IMAGE_FILE_MACHINE_UNKNOWN: ::WORD = 0;
+pub const IMAGE_FILE_MACHINE_I386: ::WORD = 0x014c;
+pub const IMAGE_FILE_MACHINE_R3000: ::WORD = 0x0162;
+pub const IMAGE_FILE_MACHINE_R4000: ::WORD = 0x0166;
+pub const IMAGE_FILE_MACHINE_R10000: ::WORD = 0x0168;
+pub const IMAGE_FILE_MACHINE_WCEMIPSV2: ::WORD = 0x0169;
+pub const IMAGE_FILE_MACHINE_ALPHA: ::WORD = 0x0184;
+pub const IMAGE_FILE_MACHINE_SH3: ::WORD = 0x01a2;
+pub const IMAGE_FILE_MACHINE_SH3DSP: ::WORD = 0x01a3;
+pub const IMAGE_FILE_MACHINE_SH3E: ::WORD = 0x01a4;
+pub const IMAGE_FILE_MACHINE_SH4: ::WORD = 0x01a6;
+pub const IMAGE_FILE_MACHINE_SH5: ::WORD = 0x01a8;
+pub const IMAGE_FILE_MACHINE_ARM: ::WORD = 0x01c0;
+pub const IMAGE_FILE_MACHINE_THUMB: ::WORD = 0x01c2;
+pub const IMAGE_FILE_MACHINE_ARMNT: ::WORD = 0x01c4;
+pub const IMAGE_FILE_MACHINE_AM33: ::WORD = 0x01d3;
+pub const IMAGE_FILE_MACHINE_POWERPC: ::WORD = 0x01F0;
+pub const IMAGE_FILE_MACHINE_POWERPCFP: ::WORD = 0x01f1;
+pub const IMAGE_FILE_MACHINE_IA64: ::WORD = 0x0200;
+pub const IMAGE_FILE_MACHINE_MIPS16: ::WORD = 0x0266;
+pub const IMAGE_FILE_MACHINE_ALPHA64: ::WORD = 0x0284;
+pub const IMAGE_FILE_MACHINE_MIPSFPU: ::WORD = 0x0366;
+pub const IMAGE_FILE_MACHINE_MIPSFPU16: ::WORD = 0x0466;
+pub const IMAGE_FILE_MACHINE_AXP64: ::WORD = IMAGE_FILE_MACHINE_ALPHA64;
+pub const IMAGE_FILE_MACHINE_TRICORE: ::WORD = 0x0520;
+pub const IMAGE_FILE_MACHINE_CEF: ::WORD = 0x0CEF;
+pub const IMAGE_FILE_MACHINE_EBC: ::WORD = 0x0EBC;
+pub const IMAGE_FILE_MACHINE_AMD64: ::WORD = 0x8664;
+pub const IMAGE_FILE_MACHINE_M32R: ::WORD = 0x9041;
+pub const IMAGE_FILE_MACHINE_CEE: ::WORD = 0xC0EE;
+STRUCT!{struct IMAGE_DATA_DIRECTORY {
+ VirtualAddress: ::DWORD,
+ Size: ::DWORD,
+}}
+pub type PIMAGE_DATA_DIRECTORY = *mut IMAGE_DATA_DIRECTORY;
+pub const IMAGE_NUMBEROF_DIRECTORY_ENTRIES: usize = 16;
+STRUCT!{struct IMAGE_OPTIONAL_HEADER32 {
+ Magic: ::WORD,
+ MajorLinkerVersion: ::BYTE,
+ MinorLinkerVersion: ::BYTE,
+ SizeOfCode: ::DWORD,
+ SizeOfInitializedData: ::DWORD,
+ SizeOfUninitializedData: ::DWORD,
+ AddressOfEntryPoint: ::DWORD,
+ BaseOfCode: ::DWORD,
+ BaseOfData: ::DWORD,
+ ImageBase: ::DWORD,
+ SectionAlignment: ::DWORD,
+ FileAlignment: ::DWORD,
+ MajorOperatingSystemVersion: ::WORD,
+ MinorOperatingSystemVersion: ::WORD,
+ MajorImageVersion: ::WORD,
+ MinorImageVersion: ::WORD,
+ MajorSubsystemVersion: ::WORD,
+ MinorSubsystemVersion: ::WORD,
+ Win32VersionValue: ::DWORD,
+ SizeOfImage: ::DWORD,
+ SizeOfHeaders: ::DWORD,
+ CheckSum: ::DWORD,
+ Subsystem: ::WORD,
+ DllCharacteristics: ::WORD,
+ SizeOfStackReserve: ::DWORD,
+ SizeOfStackCommit: ::DWORD,
+ SizeOfHeapReserve: ::DWORD,
+ SizeOfHeapCommit: ::DWORD,
+ LoaderFlags: ::DWORD,
+ NumberOfRvaAndSizes: ::DWORD,
+ DataDirectory: [IMAGE_DATA_DIRECTORY; IMAGE_NUMBEROF_DIRECTORY_ENTRIES],
+}}
+pub type PIMAGE_OPTIONAL_HEADER32 = *mut IMAGE_OPTIONAL_HEADER32;
+STRUCT!{struct IMAGE_ROM_OPTIONAL_HEADER {
+ Magic: ::WORD,
+ MajorLinkerVersion: ::BYTE,
+ MinorLinkerVersion: ::BYTE,
+ SizeOfCode: ::DWORD,
+ SizeOfInitializedData: ::DWORD,
+ SizeOfUninitializedData: ::DWORD,
+ AddressOfEntryPoint: ::DWORD,
+ BaseOfCode: ::DWORD,
+ BaseOfData: ::DWORD,
+ BaseOfBss: ::DWORD,
+ GprMask: ::DWORD,
+ CprMask: [::DWORD; 4],
+ GpValue: ::DWORD,
+}}
+pub type PIMAGE_ROM_OPTIONAL_HEADER = *mut IMAGE_ROM_OPTIONAL_HEADER;
+STRUCT!{struct IMAGE_OPTIONAL_HEADER64 {
+ Magic: ::WORD,
+ MajorLinkerVersion: ::BYTE,
+ MinorLinkerVersion: ::BYTE,
+ SizeOfCode: ::DWORD,
+ SizeOfInitializedData: ::DWORD,
+ SizeOfUninitializedData: ::DWORD,
+ AddressOfEntryPoint: ::DWORD,
+ BaseOfCode: ::DWORD,
+ ImageBase: ::ULONGLONG,
+ SectionAlignment: ::DWORD,
+ FileAlignment: ::DWORD,
+ MajorOperatingSystemVersion: ::WORD,
+ MinorOperatingSystemVersion: ::WORD,
+ MajorImageVersion: ::WORD,
+ MinorImageVersion: ::WORD,
+ MajorSubsystemVersion: ::WORD,
+ MinorSubsystemVersion: ::WORD,
+ Win32VersionValue: ::DWORD,
+ SizeOfImage: ::DWORD,
+ SizeOfHeaders: ::DWORD,
+ CheckSum: ::DWORD,
+ Subsystem: ::WORD,
+ DllCharacteristics: ::WORD,
+ SizeOfStackReserve: ULONGLONG,
+ SizeOfStackCommit: ULONGLONG,
+ SizeOfHeapReserve: ULONGLONG,
+ SizeOfHeapCommit: ULONGLONG,
+ LoaderFlags: ::DWORD,
+ NumberOfRvaAndSizes: ::DWORD,
+ DataDirectory: [IMAGE_DATA_DIRECTORY; IMAGE_NUMBEROF_DIRECTORY_ENTRIES],
+}}
+pub type PIMAGE_OPTIONAL_HEADER64 = *mut IMAGE_OPTIONAL_HEADER64;
+pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: ::WORD = 0x10b;
+pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: ::WORD = 0x20b;
+pub const IMAGE_ROM_OPTIONAL_HDR_MAGIC: ::WORD = 0x107;
+#[cfg(target_arch = "x86_64")]
+pub type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER64;
+#[cfg(target_arch = "x86_64")]
+pub type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER64;
+#[cfg(target_arch = "x86")]
+pub type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32;
+#[cfg(target_arch = "x86")]
+pub type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32;
+STRUCT!{struct IMAGE_NT_HEADERS64 {
+ Signature: ::DWORD,
+ FileHeader: IMAGE_FILE_HEADER,
+ OptionalHeader: IMAGE_OPTIONAL_HEADER64,
+}}
+pub type PIMAGE_NT_HEADERS64 = *mut IMAGE_NT_HEADERS64;
+STRUCT!{struct IMAGE_NT_HEADERS32 {
+ Signature: ::DWORD,
+ FileHeader: IMAGE_FILE_HEADER,
+ OptionalHeader: IMAGE_OPTIONAL_HEADER32,
+}}
+pub type PIMAGE_NT_HEADERS32 = *mut IMAGE_NT_HEADERS32;
+STRUCT!{struct IMAGE_ROM_HEADERS {
+ FileHeader: IMAGE_FILE_HEADER,
+ OptionalHeader: IMAGE_ROM_OPTIONAL_HEADER,
+}}
+pub type PIMAGE_ROM_HEADERS = *mut IMAGE_ROM_HEADERS;
+#[cfg(target_arch = "x86_64")]
+pub type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS64;
+#[cfg(target_arch = "x86_64")]
+pub type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS64;
+#[cfg(target_arch = "x86")]
+pub type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32;
+#[cfg(target_arch = "x86")]
+pub type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32;
+pub const IMAGE_SUBSYSTEM_UNKNOWN: ::WORD = 0;
+pub const IMAGE_SUBSYSTEM_NATIVE: ::WORD = 1;
+pub const IMAGE_SUBSYSTEM_WINDOWS_GUI: ::WORD = 2;
+pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: ::WORD = 3;
+pub const IMAGE_SUBSYSTEM_OS2_CUI: ::WORD = 5;
+pub const IMAGE_SUBSYSTEM_POSIX_CUI: ::WORD = 7;
+pub const IMAGE_SUBSYSTEM_NATIVE_WINDOWS: ::WORD = 8;
+pub const IMAGE_SUBSYSTEM_WINDOWS_CE_GUI: ::WORD = 9;
+pub const IMAGE_SUBSYSTEM_EFI_APPLICATION: ::WORD = 10;
+pub const IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER: ::WORD = 11;
+pub const IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER: ::WORD = 12;
+pub const IMAGE_SUBSYSTEM_EFI_ROM: ::WORD = 13;
+pub const IMAGE_SUBSYSTEM_XBOX: ::WORD = 14;
+pub const IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION: ::WORD = 16;
+pub const IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA: ::WORD = 0x0020;
+pub const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE: ::WORD = 0x0040;
+pub const IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY: ::WORD = 0x0080;
+pub const IMAGE_DLLCHARACTERISTICS_NX_COMPAT: ::WORD = 0x0100;
+pub const IMAGE_DLLCHARACTERISTICS_NO_ISOLATION: ::WORD = 0x0200;
+pub const IMAGE_DLLCHARACTERISTICS_NO_SEH: ::WORD = 0x0400;
+pub const IMAGE_DLLCHARACTERISTICS_NO_BIND: ::WORD = 0x0800;
+pub const IMAGE_DLLCHARACTERISTICS_APPCONTAINER: ::WORD = 0x1000;
+pub const IMAGE_DLLCHARACTERISTICS_WDM_DRIVER: ::WORD = 0x2000;
+pub const IMAGE_DLLCHARACTERISTICS_GUARD_CF: ::WORD = 0x4000;
+pub const IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE: ::WORD = 0x8000;
+pub const IMAGE_DIRECTORY_ENTRY_EXPORT: ::WORD = 0;
+pub const IMAGE_DIRECTORY_ENTRY_IMPORT: ::WORD = 1;
+pub const IMAGE_DIRECTORY_ENTRY_RESOURCE: ::WORD = 2;
+pub const IMAGE_DIRECTORY_ENTRY_EXCEPTION: ::WORD = 3;
+pub const IMAGE_DIRECTORY_ENTRY_SECURITY: ::WORD = 4;
+pub const IMAGE_DIRECTORY_ENTRY_BASERELOC: ::WORD = 5;
+pub const IMAGE_DIRECTORY_ENTRY_DEBUG: ::WORD = 6;
+pub const IMAGE_DIRECTORY_ENTRY_ARCHITECTURE: ::WORD = 7;
+pub const IMAGE_DIRECTORY_ENTRY_GLOBALPTR: ::WORD = 8;
+pub const IMAGE_DIRECTORY_ENTRY_TLS: ::WORD = 9;
+pub const IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG: ::WORD = 10;
+pub const IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT: ::WORD = 11;
+pub const IMAGE_DIRECTORY_ENTRY_IAT: ::WORD = 12;
+pub const IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT: ::WORD = 13;
+pub const IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR: ::WORD = 14;
+STRUCT!{struct ANON_OBJECT_HEADER {
+ Sig1: ::WORD,
+ Sig2: ::WORD,
+ Version: ::WORD,
+ Machine: ::WORD,
+ TimeDateStamp: ::DWORD,
+ ClassID: ::CLSID,
+ SizeOfData: ::DWORD,
+}}
+STRUCT!{struct ANON_OBJECT_HEADER_V2 {
+ Sig1: ::WORD,
+ Sig2: ::WORD,
+ Version: ::WORD,
+ Machine: ::WORD,
+ TimeDateStamp: ::DWORD,
+ ClassID: ::CLSID,
+ SizeOfData: ::DWORD,
+ Flags: ::DWORD,
+ MetaDataSize: ::DWORD,
+ MetaDataOffset: ::DWORD,
+}}
+STRUCT!{struct ANON_OBJECT_HEADER_BIGOBJ {
+ Sig1: ::WORD,
+ Sig2: ::WORD,
+ Version: ::WORD,
+ Machine: ::WORD,
+ TimeDateStamp: ::DWORD,
+ ClassID: ::CLSID,
+ SizeOfData: ::DWORD,
+ Flags: ::DWORD,
+ MetaDataSize: ::DWORD,
+ MetaDataOffset: ::DWORD,
+ NumberOfSections: ::DWORD,
+ PointerToSymbolTable: ::DWORD,
+ NumberOfSymbols: ::DWORD,
+}}
+pub const IMAGE_SIZEOF_SHORT_NAME: usize = 8;
+STRUCT!{struct IMAGE_SECTION_HEADER {
+ Name: [::BYTE; IMAGE_SIZEOF_SHORT_NAME],
+ PhysicalAddressOrVirtualSize: ::DWORD,
+ VirtualAddress: ::DWORD,
+ SizeOfRawData: ::DWORD,
+ PointerToRawData: ::DWORD,
+ PointerToRelocations: ::DWORD,
+ PointerToLinenumbers: ::DWORD,
+ NumberOfRelocations: ::WORD,
+ NumberOfLinenumbers: ::WORD,
+ Characteristics: ::DWORD,
+}}
+pub type PIMAGE_SECTION_HEADER = *mut IMAGE_SECTION_HEADER;
+pub const IMAGE_SIZEOF_SECTION_HEADER: usize = 40;
+pub const IMAGE_SCN_TYPE_NO_PAD: ::DWORD = 0x00000008;
+pub const IMAGE_SCN_CNT_CODE: ::DWORD = 0x00000020;
+pub const IMAGE_SCN_CNT_INITIALIZED_DATA: ::DWORD = 0x00000040;
+pub const IMAGE_SCN_CNT_UNINITIALIZED_DATA: ::DWORD = 0x00000080;
+pub const IMAGE_SCN_LNK_OTHER: ::DWORD = 0x00000100;
+pub const IMAGE_SCN_LNK_INFO: ::DWORD = 0x00000200;
+pub const IMAGE_SCN_LNK_REMOVE: ::DWORD = 0x00000800;
+pub const IMAGE_SCN_LNK_COMDAT: ::DWORD = 0x00001000;
+pub const IMAGE_SCN_NO_DEFER_SPEC_EXC: ::DWORD = 0x00004000;
+pub const IMAGE_SCN_GPREL: ::DWORD = 0x00008000;
+pub const IMAGE_SCN_MEM_FARDATA: ::DWORD = 0x00008000;
+pub const IMAGE_SCN_MEM_PURGEABLE: ::DWORD = 0x00020000;
+pub const IMAGE_SCN_MEM_16BIT: ::DWORD = 0x00020000;
+pub const IMAGE_SCN_MEM_LOCKED: ::DWORD = 0x00040000;
+pub const IMAGE_SCN_MEM_PRELOAD: ::DWORD = 0x00080000;
+pub const IMAGE_SCN_ALIGN_1BYTES: ::DWORD = 0x00100000;
+pub const IMAGE_SCN_ALIGN_2BYTES: ::DWORD = 0x00200000;
+pub const IMAGE_SCN_ALIGN_4BYTES: ::DWORD = 0x00300000;
+pub const IMAGE_SCN_ALIGN_8BYTES: ::DWORD = 0x00400000;
+pub const IMAGE_SCN_ALIGN_16BYTES: ::DWORD = 0x00500000;
+pub const IMAGE_SCN_ALIGN_32BYTES: ::DWORD = 0x00600000;
+pub const IMAGE_SCN_ALIGN_64BYTES: ::DWORD = 0x00700000;
+pub const IMAGE_SCN_ALIGN_128BYTES: ::DWORD = 0x00800000;
+pub const IMAGE_SCN_ALIGN_256BYTES: ::DWORD = 0x00900000;
+pub const IMAGE_SCN_ALIGN_512BYTES: ::DWORD = 0x00A00000;
+pub const IMAGE_SCN_ALIGN_1024BYTES: ::DWORD = 0x00B00000;
+pub const IMAGE_SCN_ALIGN_2048BYTES: ::DWORD = 0x00C00000;
+pub const IMAGE_SCN_ALIGN_4096BYTES: ::DWORD = 0x00D00000;
+pub const IMAGE_SCN_ALIGN_8192BYTES: ::DWORD = 0x00E00000;
+pub const IMAGE_SCN_ALIGN_MASK: ::DWORD = 0x00F00000;
+pub const IMAGE_SCN_LNK_NRELOC_OVFL: ::DWORD = 0x01000000;
+pub const IMAGE_SCN_MEM_DISCARDABLE: ::DWORD = 0x02000000;
+pub const IMAGE_SCN_MEM_NOT_CACHED: ::DWORD = 0x04000000;
+pub const IMAGE_SCN_MEM_NOT_PAGED: ::DWORD = 0x08000000;
+pub const IMAGE_SCN_MEM_SHARED: ::DWORD = 0x10000000;
+pub const IMAGE_SCN_MEM_EXECUTE: ::DWORD = 0x20000000;
+pub const IMAGE_SCN_MEM_READ: ::DWORD = 0x40000000;
+pub const IMAGE_SCN_MEM_WRITE: ::DWORD = 0x80000000;
+pub const IMAGE_SCN_SCALE_INDEX: ::DWORD = 0x00000001;
+//16590
+STRUCT!{struct IMAGE_DEBUG_DIRECTORY {
+ Characteristics: ::DWORD,
+ TimeDateStamp: ::DWORD,
+ MajorVersion: ::WORD,
+ MinorVersion: ::WORD,
+ Type: ::DWORD,
+ SizeOfData: ::DWORD,
+ AddressOfRawData: ::DWORD,
+ PointerToRawData: ::DWORD,
+}}
+pub type PIMAGE_DEBUG_DIRECTORY = *mut IMAGE_DEBUG_DIRECTORY;
+pub const IMAGE_DEBUG_TYPE_UNKNOWN: ::DWORD = 0;
+pub const IMAGE_DEBUG_TYPE_COFF: ::DWORD = 1;
+pub const IMAGE_DEBUG_TYPE_CODEVIEW: ::DWORD = 2;
+pub const IMAGE_DEBUG_TYPE_FPO: ::DWORD = 3;
+pub const IMAGE_DEBUG_TYPE_MISC: ::DWORD = 4;
+pub const IMAGE_DEBUG_TYPE_EXCEPTION: ::DWORD = 5;
+pub const IMAGE_DEBUG_TYPE_FIXUP: ::DWORD = 6;
+pub const IMAGE_DEBUG_TYPE_OMAP_TO_SRC: ::DWORD = 7;
+pub const IMAGE_DEBUG_TYPE_OMAP_FROM_SRC: ::DWORD = 8;
+pub const IMAGE_DEBUG_TYPE_BORLAND: ::DWORD = 9;
+pub const IMAGE_DEBUG_TYPE_RESERVED10: ::DWORD = 10;
+pub const IMAGE_DEBUG_TYPE_CLSID: ::DWORD = 11;
+STRUCT!{struct IMAGE_COFF_SYMBOLS_HEADER {
+ NumberOfSymbols: ::DWORD,
+ LvaToFirstSymbol: ::DWORD,
+ NumberOfLinenumbers: ::DWORD,
+ LvaToFirstLinenumber: ::DWORD,
+ RvaToFirstByteOfCode: ::DWORD,
+ RvaToLastByteOfCode: ::DWORD,
+ RvaToFirstByteOfData: ::DWORD,
+ RvaToLastByteOfData: ::DWORD,
+}}
+pub type PIMAGE_COFF_SYMBOLS_HEADER = *mut IMAGE_COFF_SYMBOLS_HEADER;
+STRUCT!{struct IMAGE_RUNTIME_FUNCTION_ENTRY {
+ BeginAddress: ::DWORD,
+ EndAddress: ::DWORD,
+ UnwindInfoAddress: ::DWORD,
+}}
+UNION!(IMAGE_RUNTIME_FUNCTION_ENTRY, UnwindInfoAddress, UnwindData, UnwindData_mut, ::DWORD);
+pub type PIMAGE_RUNTIME_FUNCTION_ENTRY = *mut IMAGE_RUNTIME_FUNCTION_ENTRY;
+pub const FRAME_FPO: ::WORD = 0;
+pub const FRAME_TRAP: ::WORD = 1;
+pub const FRAME_TSS: ::WORD = 2;
+pub const FRAME_NONFPO: ::WORD = 3;
+STRUCT!{struct FPO_DATA {
+ ulOffStart: ::DWORD,
+ cbProcSize: ::DWORD,
+ cdwLocals: ::DWORD,
+ cdwParams: ::WORD,
+ bitfield: ::WORD,
+}}
+pub type PFPO_DATA = *mut FPO_DATA;
+pub const SIZEOF_RFPO_DATA: usize = 16;
+pub const IMAGE_DEBUG_MISC_EXENAME: ::DWORD = 1;
+STRUCT!{struct IMAGE_DEBUG_MISC {
+ DataType: ::DWORD,
+ Length: ::DWORD,
+ Unicode: ::BOOLEAN,
+ Reserved: [::BYTE; 3],
+ Data: [::BYTE; 0],
+}}
+pub type PIMAGE_DEBUG_MISC = *mut IMAGE_DEBUG_MISC;
+STRUCT!{struct IMAGE_FUNCTION_ENTRY {
+ StartingAddress: ::DWORD,
+ EndingAddress: ::DWORD,
+ EndOfPrologue: ::DWORD,
+}}
+pub type PIMAGE_FUNCTION_ENTRY = *mut IMAGE_FUNCTION_ENTRY;
+STRUCT!{struct IMAGE_FUNCTION_ENTRY64 {
+ StartingAddress: ::ULONGLONG,
+ EndingAddress: ::ULONGLONG,
+ EndOfPrologueOrUnwindInfoAddress: ::ULONGLONG,
+}}
+pub type PIMAGE_FUNCTION_ENTRY64 = *mut IMAGE_FUNCTION_ENTRY64;
+//18245
+pub const HEAP_NO_SERIALIZE: ::DWORD = 0x00000001;
+pub const HEAP_GROWABLE: ::DWORD = 0x00000002;
+pub const HEAP_GENERATE_EXCEPTIONS: ::DWORD = 0x00000004;
+pub const HEAP_ZERO_MEMORY: ::DWORD = 0x00000008;
+pub const HEAP_REALLOC_IN_PLACE_ONLY: ::DWORD = 0x00000010;
+pub const HEAP_TAIL_CHECKING_ENABLED: ::DWORD = 0x00000020;
+pub const HEAP_FREE_CHECKING_ENABLED: ::DWORD = 0x00000040;
+pub const HEAP_DISABLE_COALESCE_ON_FREE: ::DWORD = 0x00000080;
+pub const HEAP_CREATE_ALIGN_16: ::DWORD = 0x00010000;
+pub const HEAP_CREATE_ENABLE_TRACING: ::DWORD = 0x00020000;
+pub const HEAP_CREATE_ENABLE_EXECUTE: ::DWORD = 0x00040000;
+pub const HEAP_MAXIMUM_TAG: ::DWORD = 0x0FFF;
+pub const HEAP_PSEUDO_TAG_FLAG: ::DWORD = 0x8000;
+pub const HEAP_TAG_SHIFT: ::DWORD = 18;
+//18145
+STRUCT!{struct RTL_CRITICAL_SECTION_DEBUG {
+ Type: ::WORD,
+ CreatorBackTraceIndex: ::WORD,
+ CriticalSection: *mut ::RTL_CRITICAL_SECTION,
+ ProcessLocksList: ::LIST_ENTRY,
+ EntryCount: ::DWORD,
+ ContentionCount: ::DWORD,
+ Flags: ::DWORD,
+ CreatorBackTraceIndexHigh: ::WORD,
+ SpareWORD: ::WORD,
+}}
+pub type PRTL_CRITICAL_SECTION_DEBUG = *mut RTL_CRITICAL_SECTION_DEBUG;
+pub type RTL_RESOURCE_DEBUG = RTL_CRITICAL_SECTION_DEBUG;
+pub type PRTL_RESOURCE_DEBUG = *mut RTL_CRITICAL_SECTION_DEBUG;
+pub const RTL_CRITSECT_TYPE: ::WORD = 0;
+pub const RTL_RESOURCE_TYPE: ::WORD = 1;
+pub const RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO: ::ULONG_PTR = 0x01000000;
+pub const RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN: ::ULONG_PTR = 0x02000000;
+pub const RTL_CRITICAL_SECTION_FLAG_STATIC_INIT: ::ULONG_PTR = 0x04000000;
+pub const RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE: ::ULONG_PTR = 0x08000000;
+pub const RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO: ::ULONG_PTR = 0x10000000;
+pub const RTL_CRITICAL_SECTION_ALL_FLAG_BITS: ::ULONG_PTR = 0xFF000000;
+pub const RTL_CRITICAL_SECTION_FLAG_RESERVED: ::ULONG_PTR = RTL_CRITICAL_SECTION_ALL_FLAG_BITS & !(RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO | RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN | RTL_CRITICAL_SECTION_FLAG_STATIC_INIT | RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE | RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO);
+pub const RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT: ::DWORD = 0x00000001;
+STRUCT!{struct RTL_CRITICAL_SECTION {
+ DebugInfo: ::PRTL_CRITICAL_SECTION_DEBUG,
+ LockCount: ::LONG,
+ RecursionCount: ::LONG,
+ OwningThread: ::HANDLE,
+ LockSemaphore: ::HANDLE,
+ SpinCount: ::ULONG_PTR,
+}}
+pub type PRTL_CRITICAL_SECTION = *mut RTL_CRITICAL_SECTION;
+STRUCT!{struct RTL_SRWLOCK {
+ Ptr: ::PVOID,
+}}
+pub type PRTL_SRWLOCK = *mut RTL_SRWLOCK;
+pub const RTL_SRWLOCK_INIT: RTL_SRWLOCK = RTL_SRWLOCK { Ptr: 0 as PVOID };
+STRUCT!{struct RTL_CONDITION_VARIABLE {
+ Ptr: ::PVOID,
+}}
+pub type PRTL_CONDITION_VARIABLE = *mut RTL_CONDITION_VARIABLE;
+pub const RTL_CONDITION_VARIABLE_INIT: RTL_CONDITION_VARIABLE = RTL_CONDITION_VARIABLE {
+ Ptr: 0 as PVOID
+};
+//18204
+pub type PAPCFUNC = Option<unsafe extern "system" fn(Parameter: ::ULONG_PTR)>;
+pub type PVECTORED_EXCEPTION_HANDLER = Option<unsafe extern "system" fn(
+ ExceptionInfo: *mut EXCEPTION_POINTERS,
+) -> ::LONG>;
+ENUM!{enum HEAP_INFORMATION_CLASS {
+ HeapCompatibilityInformation = 0,
+ HeapEnableTerminationOnCorruption = 1,
+ HeapOptimizeResources = 3,
+}}
+//pub use self::HEAP_INFORMATION_CLASS::*;
+pub const HEAP_OPTIMIZE_RESOURCES_CURRENT_VERSION: ::DWORD = 1;
+STRUCT!{struct HEAP_OPTIMIZE_RESOURCES_INFORMATION {
+ Version: ::DWORD,
+ Flags: ::DWORD,
+}}
+pub type PHEAP_OPTIMIZE_RESOURCES_INFORMATION = *mut HEAP_OPTIMIZE_RESOURCES_INFORMATION;
+pub const WT_EXECUTEDEFAULT: ::ULONG = 0x00000000;
+pub const WT_EXECUTEINIOTHREAD: ::ULONG = 0x00000001;
+pub const WT_EXECUTEINUITHREAD: ::ULONG = 0x00000002;
+pub const WT_EXECUTEINWAITTHREAD: ::ULONG = 0x00000004;
+pub const WT_EXECUTEONLYONCE: ::ULONG = 0x00000008;
+pub const WT_EXECUTEINTIMERTHREAD: ::ULONG = 0x00000020;
+pub const WT_EXECUTELONGFUNCTION: ::ULONG = 0x00000010;
+pub const WT_EXECUTEINPERSISTENTIOTHREAD: ::ULONG = 0x00000040;
+pub const WT_EXECUTEINPERSISTENTTHREAD: ::ULONG = 0x00000080;
+pub const WT_TRANSFER_IMPERSONATION: ::ULONG = 0x00000100;
+pub type WAITORTIMERCALLBACKFUNC = Option<unsafe extern "system" fn(::PVOID, ::BOOLEAN)>;
+pub type WORKERCALLBACKFUNC = Option<unsafe extern "system" fn(::PVOID)>;
+pub type APC_CALLBACK_FUNCTION = Option<unsafe extern "system" fn(::DWORD, ::PVOID, ::PVOID)>;
+pub type WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;
+pub type PFLS_CALLBACK_FUNCTION = Option<unsafe extern "system" fn(lpFlsData: ::PVOID)>;
+pub type PSECURE_MEMORY_CACHE_CALLBACK = Option<unsafe extern "system" fn(
+ Addr: ::PVOID, Range: ::SIZE_T,
+) -> ::BOOLEAN>;
+pub const WT_EXECUTEINLONGTHREAD: ::ULONG = 0x00000010;
+pub const WT_EXECUTEDELETEWAIT: ::ULONG = 0x00000008;
+//18570
+pub const KEY_QUERY_VALUE: ::REGSAM = 0x0001;
+pub const KEY_SET_VALUE: ::REGSAM = 0x0002;
+pub const KEY_CREATE_SUB_KEY: ::REGSAM = 0x0004;
+pub const KEY_ENUMERATE_SUB_KEYS: ::REGSAM = 0x0008;
+pub const KEY_NOTIFY: ::REGSAM = 0x0010;
+pub const KEY_CREATE_LINK: ::REGSAM = 0x0020;
+pub const KEY_WOW64_32KEY: ::REGSAM = 0x0200;
+pub const KEY_WOW64_64KEY: ::REGSAM = 0x0100;
+pub const KEY_WOW64_RES: ::REGSAM = 0x0300;
+pub const KEY_READ: ::REGSAM = (
+ STANDARD_RIGHTS_READ |
+ KEY_QUERY_VALUE |
+ KEY_ENUMERATE_SUB_KEYS |
+ KEY_NOTIFY
+ ) & (!SYNCHRONIZE);
+pub const KEY_WRITE: ::REGSAM = (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (!SYNCHRONIZE);
+pub const KEY_EXECUTE: ::REGSAM = KEY_READ & (!SYNCHRONIZE);
+pub const KEY_ALL_ACCESS: ::REGSAM = (
+ STANDARD_RIGHTS_ALL |
+ KEY_QUERY_VALUE |
+ KEY_SET_VALUE |
+ KEY_CREATE_SUB_KEY |
+ KEY_ENUMERATE_SUB_KEYS |
+ KEY_NOTIFY |
+ KEY_CREATE_LINK
+ ) & (!SYNCHRONIZE);
+pub const REG_CREATED_NEW_KEY: ::DWORD = 0x00000001;
+pub const REG_OPENED_EXISTING_KEY: ::DWORD = 0x00000002;
+pub const REG_NOTIFY_CHANGE_NAME: ::DWORD = 0x00000001;
+pub const REG_NOTIFY_CHANGE_ATTRIBUTES: ::DWORD = 0x00000002;
+pub const REG_NOTIFY_CHANGE_LAST_SET: ::DWORD = 0x00000004;
+pub const REG_NOTIFY_CHANGE_SECURITY: ::DWORD = 0x00000008;
+pub const REG_LEGAL_CHANGE_FILTER: ::DWORD = REG_NOTIFY_CHANGE_NAME |
+ REG_NOTIFY_CHANGE_ATTRIBUTES |
+ REG_NOTIFY_CHANGE_LAST_SET |
+ REG_NOTIFY_CHANGE_SECURITY;
+pub const REG_NOTIFY_THREAD_AGNOSTIC: ::DWORD = 0x10000000; //supported only on Windows 8 and later
+pub const REG_OPTION_RESERVED: ::DWORD = 0x00000000;
+pub const REG_OPTION_NON_VOLATILE: ::DWORD = 0x00000000;
+pub const REG_OPTION_VOLATILE: ::DWORD = 0x00000001;
+pub const REG_OPTION_CREATE_LINK: ::DWORD = 0x00000002;
+pub const REG_OPTION_BACKUP_RESTORE: ::DWORD = 0x00000004;
+pub const REG_OPTION_OPEN_LINK: ::DWORD = 0x00000008;
+pub const REG_NONE: ::DWORD = 0;
+pub const REG_SZ: ::DWORD = 1;
+pub const REG_EXPAND_SZ: ::DWORD = 2;
+pub const REG_BINARY: ::DWORD = 3;
+pub const REG_DWORD: ::DWORD = 4;
+pub const REG_DWORD_LITTLE_ENDIAN: ::DWORD = 4;
+pub const REG_DWORD_BIG_ENDIAN: ::DWORD = 5;
+pub const REG_LINK: ::DWORD = 6;
+pub const REG_MULTI_SZ: ::DWORD = 7;
+pub const REG_RESOURCE_LIST: ::DWORD = 8;
+pub const REG_FULL_RESOURCE_DESCRIPTOR: ::DWORD = 9;
+pub const REG_RESOURCE_REQUIREMENTS_LIST: ::DWORD = 10;
+pub const REG_QWORD: ::DWORD = 11;
+pub const REG_QWORD_LITTLE_ENDIAN: ::DWORD = 11;
+//18720
+pub const SERVICE_KERNEL_DRIVER: ::DWORD = 0x00000001;
+pub const SERVICE_FILE_SYSTEM_DRIVER: ::DWORD = 0x00000002;
+pub const SERVICE_ADAPTER: ::DWORD = 0x00000004;
+pub const SERVICE_RECOGNIZER_DRIVER: ::DWORD = 0x00000008;
+pub const SERVICE_DRIVER: ::DWORD = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER
+ | SERVICE_RECOGNIZER_DRIVER;
+pub const SERVICE_WIN32_OWN_PROCESS: ::DWORD = 0x00000010;
+pub const SERVICE_WIN32_SHARE_PROCESS: ::DWORD = 0x00000020;
+pub const SERVICE_WIN32: ::DWORD = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS;
+pub const SERVICE_INTERACTIVE_PROCESS: ::DWORD = 0x00000100;
+pub const SERVICE_TYPE_ALL: ::DWORD = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER
+ | SERVICE_INTERACTIVE_PROCESS;
+STRUCT!{struct TP_CALLBACK_INSTANCE {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_CALLBACK_INSTANCE = *mut TP_CALLBACK_INSTANCE;
+STRUCT!{struct TP_IO {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_IO = *mut TP_IO;
+STRUCT!{struct TP_POOL {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_POOL = *mut TP_POOL;
+STRUCT!{struct TP_CLEANUP_GROUP {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_CLEANUP_GROUP = *mut TP_CLEANUP_GROUP;
+STRUCT!{struct TP_TIMER {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_TIMER = *mut TP_TIMER;
+STRUCT!{struct TP_WAIT {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_WAIT = *mut TP_WAIT;
+STRUCT!{struct TP_WORK {
+ dummy: *mut ::c_void,
+}}
+pub type PTP_WORK = *mut TP_WORK;
+STRUCT!{struct ACTIVATION_CONTEXT {
+ dummy: *mut ::c_void,
+}}
+ENUM!{enum TP_CALLBACK_PRIORITY {
+ TP_CALLBACK_PRIORITY_HIGH,
+ TP_CALLBACK_PRIORITY_NORMAL,
+ TP_CALLBACK_PRIORITY_LOW,
+ TP_CALLBACK_PRIORITY_INVALID,
+ TP_CALLBACK_PRIORITY_COUNT = 4,
+}}
+pub type PTP_CLEANUP_GROUP_CANCEL_CALLBACK = Option<unsafe extern "system" fn(
+ ObjectContext: ::PVOID, CleanupContext: ::PVOID,
+)>;
+pub type PTP_SIMPLE_CALLBACK = Option<unsafe extern "system" fn(
+ Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID,
+)>;
+pub type PTP_WORK_CALLBACK = Option<unsafe extern "system" fn(
+ Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Work: PTP_WORK,
+)>;
+pub type PTP_TIMER_CALLBACK = Option<unsafe extern "system" fn(
+ Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Timer: PTP_TIMER,
+)>;
+pub type TP_WAIT_RESULT = ::DWORD;
+pub type PTP_WAIT_CALLBACK = Option<unsafe extern "system" fn(
+ Instance: PTP_CALLBACK_INSTANCE, Context: ::PVOID, Wait: PTP_WAIT, WaitResult: TP_WAIT_RESULT,
+)>;
+pub type TP_VERSION = ::DWORD;
+pub type PTP_VERSION = *mut ::DWORD;
+STRUCT!{struct TP_POOL_STACK_INFORMATION {
+ StackReserve: ::SIZE_T,
+ StackCommit: ::SIZE_T,
+}}
+pub type PTP_POOL_STACK_INFORMATION = *mut TP_POOL_STACK_INFORMATION;
+STRUCT!{struct TP_CALLBACK_ENVIRON_V3_s {
+ BitFields: ::DWORD,
+}}
+BITFIELD!(TP_CALLBACK_ENVIRON_V3_s BitFields: ::DWORD [
+ LongFunction set_LongFunction[0..1],
+ Persistent set_Persistent[1..2],
+ Private set_Private[2..32],
+]);
+STRUCT!{nodebug struct TP_CALLBACK_ENVIRON_V3 {
+ Version: TP_VERSION,
+ Pool: PTP_POOL,
+ CleanupGroup: PTP_CLEANUP_GROUP,
+ CleanupGroupCancelCallback: PTP_CLEANUP_GROUP_CANCEL_CALLBACK,
+ RaceDll: ::PVOID,
+ ActivationContext: *mut ACTIVATION_CONTEXT,
+ FinalizationCallback: PTP_SIMPLE_CALLBACK,
+ u: ::DWORD,
+ CallbackPriority: TP_CALLBACK_PRIORITY,
+ Size: ::DWORD,
+}}
+UNION!(TP_CALLBACK_ENVIRON_V3, u, Flags, Flags_mut, ::DWORD);
+UNION!(TP_CALLBACK_ENVIRON_V3, u, s, s_mut, TP_CALLBACK_ENVIRON_V3_s);
+pub type TP_CALLBACK_ENVIRON = TP_CALLBACK_ENVIRON_V3;
+pub type PTP_CALLBACK_ENVIRON = *mut TP_CALLBACK_ENVIRON_V3;
+STRUCT!{struct JOB_SET_ARRAY {
+ JobHandle: ::HANDLE,
+ MemberLevel: ::DWORD,
+ Flags: ::DWORD,
+}}
+pub type PJOB_SET_ARRAY = *mut JOB_SET_ARRAY;
+STRUCT!{struct RTL_BARRIER {
+ Reserved1: ::DWORD,
+ Reserved2: ::DWORD,
+ Reserved3: [::ULONG_PTR; 2],
+ Reserved4: ::DWORD,
+ Reserved5: ::DWORD,
+}}
+pub type PRTL_BARRIER = *mut RTL_BARRIER;
+STRUCT!{struct RTL_RUN_ONCE {
+ Ptr: ::PVOID,
+}}
+pub type PRTL_RUN_ONCE = *mut RTL_RUN_ONCE;
+ENUM!{enum RTL_UMS_THREAD_INFO_CLASS {
+ UmsThreadInvalidInfoClass = 0,
+ UmsThreadUserContext,
+ UmsThreadPriority, // Reserved
+ UmsThreadAffinity, // Reserved
+ UmsThreadTeb,
+ UmsThreadIsSuspended,
+ UmsThreadIsTerminated,
+ UmsThreadMaxInfoClass,
+}}
+ENUM!{enum RTL_UMS_SCHEDULER_REASON {
+ UmsSchedulerStartup = 0,
+ UmsSchedulerThreadBlocked,
+ UmsSchedulerThreadYield,
+}}
+pub type PRTL_UMS_SCHEDULER_ENTRY_POINT = Option<unsafe extern "system" fn(
+ Reason: RTL_UMS_SCHEDULER_REASON, ActivationPayload: ::ULONG_PTR, SchedulerParam: ::PVOID,
+)>;
+ENUM!{enum FIRMWARE_TYPE {
+ FirmwareTypeUnknown,
+ FirmwareTypeBios,
+ FirmwareTypeUefi,
+ FirmwareTypeMax,
+}}
+pub type PFIRMWARE_TYPE = *mut FIRMWARE_TYPE;
+ENUM!{enum LOGICAL_PROCESSOR_RELATIONSHIP {
+ RelationProcessorCore,
+ RelationNumaNode,
+ RelationCache,
+ RelationProcessorPackage,
+ RelationGroup,
+ RelationAll = 0xffff,
+}}
+ENUM!{enum PROCESSOR_CACHE_TYPE {
+ CacheUnified,
+ CacheInstruction,
+ CacheData,
+ CacheTrace,
+}}
+STRUCT!{struct CACHE_DESCRIPTOR {
+ Level: ::BYTE,
+ Associativity: ::BYTE,
+ LineSize: ::WORD,
+ Size: ::DWORD,
+ Type: PROCESSOR_CACHE_TYPE,
+}}
+pub type PCACHE_DESCRIPTOR = *mut CACHE_DESCRIPTOR;
+STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION_ProcessorCore {
+ Flags: ::BYTE,
+}}
+STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION_NumaNode {
+ NodeNumber: ::DWORD,
+}}
+STRUCT!{struct SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
+ ProcessorMask: ::ULONG_PTR,
+ Relationship: LOGICAL_PROCESSOR_RELATIONSHIP,
+ Reserved: [::ULONGLONG; 2],
+}}
+UNION!(
+ SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, ProcessorCore, ProcessorCore_mut,
+ SYSTEM_LOGICAL_PROCESSOR_INFORMATION_ProcessorCore
+);
+UNION!(
+ SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, NumaNode, NumaNode_mut,
+ SYSTEM_LOGICAL_PROCESSOR_INFORMATION_NumaNode
+);
+UNION!(SYSTEM_LOGICAL_PROCESSOR_INFORMATION, Reserved, Cache, Cache_mut, CACHE_DESCRIPTOR);
+pub type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = *mut SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
+STRUCT!{struct SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION {
+ CycleTime: ::DWORD64,
+}}
+pub type PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION = *mut SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION;
+ENUM!{enum HARDWARE_COUNTER_TYPE {
+ PMCCounter,
+ MaxHardwareCounterType,
+}}
+pub type PHARDWARE_COUNTER_TYPE = *mut HARDWARE_COUNTER_TYPE;
+ENUM!{enum PROCESS_MITIGATION_POLICY {
+ ProcessDEPPolicy,
+ ProcessASLRPolicy,
+ ProcessDynamicCodePolicy,
+ ProcessStrictHandleCheckPolicy,
+ ProcessSystemCallDisablePolicy,
+ ProcessMitigationOptionsMask,
+ ProcessExtensionPointDisablePolicy,
+ ProcessReserved1Policy,
+ ProcessSignaturePolicy,
+ MaxProcessMitigationPolicy,
+}}
+STRUCT!{nodebug struct OSVERSIONINFOA {
+ dwOSVersionInfoSize: ::DWORD,
+ dwMajorVersion: ::DWORD,
+ dwMinorVersion: ::DWORD,
+ dwBuildNumber: ::DWORD,
+ dwPlatformId: ::DWORD,
+ szCSDVersion: [::CHAR; 128],
+}}
+pub type POSVERSIONINFOA = *mut OSVERSIONINFOA;
+pub type LPOSVERSIONINFOA = *mut OSVERSIONINFOA;
+STRUCT!{nodebug struct OSVERSIONINFOW {
+ dwOSVersionInfoSize: ::DWORD,
+ dwMajorVersion: ::DWORD,
+ dwMinorVersion: ::DWORD,
+ dwBuildNumber: ::DWORD,
+ dwPlatformId: ::DWORD,
+ szCSDVersion: [::WCHAR; 128],
+}}
+pub type POSVERSIONINFOW = *mut OSVERSIONINFOW;
+pub type LPOSVERSIONINFOW = *mut OSVERSIONINFOW;
+STRUCT!{nodebug struct OSVERSIONINFOEXA {
+ dwOSVersionInfoSize: ::DWORD,
+ dwMajorVersion: ::DWORD,
+ dwMinorVersion: ::DWORD,
+ dwBuildNumber: ::DWORD,
+ dwPlatformId: ::DWORD,
+ szCSDVersion: [::CHAR; 128],
+ wServicePackMajor: ::WORD,
+ wServicePackMinor: ::WORD,
+ wSuiteMask: ::WORD,
+ wProductType: ::BYTE,
+ wReserved: ::BYTE,
+}}
+pub type POSVERSIONINFOEXA = *mut OSVERSIONINFOEXA;
+pub type LPOSVERSIONINFOEXA = *mut OSVERSIONINFOEXA;
+STRUCT!{nodebug struct OSVERSIONINFOEXW {
+ dwOSVersionInfoSize: ::DWORD,
+ dwMajorVersion: ::DWORD,
+ dwMinorVersion: ::DWORD,
+ dwBuildNumber: ::DWORD,
+ dwPlatformId: ::DWORD,
+ szCSDVersion: [::WCHAR; 128],
+ wServicePackMajor: ::WORD,
+ wServicePackMinor: ::WORD,
+ wSuiteMask: ::WORD,
+ wProductType: ::BYTE,
+ wReserved: ::BYTE,
+}}
+pub type POSVERSIONINFOEXW = *mut OSVERSIONINFOEXW;
+pub type LPOSVERSIONINFOEXW = *mut OSVERSIONINFOEXW;
+STRUCT!{struct SLIST_ENTRY {
+ Next: *mut SLIST_ENTRY,
+}}
+pub type PSLIST_ENTRY = *mut SLIST_ENTRY;
+STRUCT!{struct SLIST_HEADER_HeaderX64 {
+ BitFields1: ::ULONGLONG,
+ BitFields2: ::ULONGLONG,
+}}
+BITFIELD!(SLIST_HEADER_HeaderX64 BitFields1: ::ULONGLONG [
+ Depth set_Depth[0..16],
+ Sequence set_Sequence[16..64],
+]);
+BITFIELD!(SLIST_HEADER_HeaderX64 BitFields2: ::ULONGLONG [
+ Reserved set_Reserved[0..4],
+ NextEntry set_NextEntry[4..64],
+]);
+STRUCT!{struct SLIST_HEADER {
+ Alignment: ::ULONGLONG,
+ Region: ::ULONGLONG,
+}}
+UNION!(SLIST_HEADER, Alignment, HeaderX64, HeaderX64_mut, SLIST_HEADER_HeaderX64);
+pub type PSLIST_HEADER = *mut SLIST_HEADER;
+ENUM!{enum SYSTEM_POWER_STATE {
+ PowerSystemUnspecified = 0,
+ PowerSystemWorking = 1,
+ PowerSystemSleeping1 = 2,
+ PowerSystemSleeping2 = 3,
+ PowerSystemSleeping3 = 4,
+ PowerSystemHibernate = 5,
+ PowerSystemShutdown = 6,
+ PowerSystemMaximum = 7,
+}}
+pub type PSYSTEM_POWER_STATE = *mut SYSTEM_POWER_STATE;
+ENUM!{enum POWER_ACTION {
+ PowerActionNone = 0,
+ PowerActionReserved,
+ PowerActionSleep,
+ PowerActionHibernate,
+ PowerActionShutdown,
+ PowerActionShutdownReset,
+ PowerActionShutdownOff,
+ PowerActionWarmEject,
+}}
+pub type PPOWER_ACTION = *mut POWER_ACTION;
+ENUM!{enum DEVICE_POWER_STATE {
+ PowerDeviceUnspecified = 0,
+ PowerDeviceD0,
+ PowerDeviceD1,
+ PowerDeviceD2,
+ PowerDeviceD3,
+ PowerDeviceMaximum,
+}}
+pub type PDEVICE_POWER_STATE = *mut DEVICE_POWER_STATE;
+ENUM!{enum MONITOR_DISPLAY_STATE {
+ PowerMonitorOff = 0,
+ PowerMonitorOn,
+ PowerMonitorDim,
+}}
+pub type PMONITOR_DISPLAY_STATE = *mut MONITOR_DISPLAY_STATE;
+ENUM!{enum USER_ACTIVITY_PRESENCE {
+ PowerUserPresent = 0,
+ PowerUserNotPresent,
+ PowerUserInactive,
+ PowerUserMaximum,
+ //PowerUserInvalid = 3,
+}}
+pub type PUSER_ACTIVITY_PRESENCE = *mut USER_ACTIVITY_PRESENCE;
+pub type EXECUTION_STATE = ::DWORD;
+pub type PEXECUTION_STATE = *mut ::DWORD;
+ENUM!{enum LATENCY_TIME {
+ LT_DONT_CARE,
+ LT_LOWEST_LATENCY,
+}}
+ENUM!{enum POWER_REQUEST_TYPE {
+ PowerRequestDisplayRequired,
+ PowerRequestSystemRequired,
+ PowerRequestAwayModeRequired,
+ PowerRequestExecutionRequired,
+}}
+pub type PPOWER_REQUEST_TYPE = *mut POWER_REQUEST_TYPE;
+pub const MAX_HW_COUNTERS: usize = 16;
+STRUCT!{struct HARDWARE_COUNTER_DATA {
+ Type: HARDWARE_COUNTER_TYPE,
+ Reserved: ::DWORD,
+ Value: ::DWORD64,
+}}
+pub type PHARDWARE_COUNTER_DATA = *mut HARDWARE_COUNTER_DATA;
+STRUCT!{struct PERFORMANCE_DATA {
+ Size: ::WORD,
+ Version: ::BYTE,
+ HwCountersCount: ::BYTE,
+ ContextSwitchCount: ::DWORD,
+ WaitReasonBitMap: ::DWORD64,
+ CycleTime: ::DWORD64,
+ RetryCount: ::DWORD,
+ Reserved: ::DWORD,
+ HwCounters: [HARDWARE_COUNTER_DATA; MAX_HW_COUNTERS],
+}}
+pub type PPERFORMANCE_DATA = *mut PERFORMANCE_DATA;
+STRUCT!{struct MEMORY_BASIC_INFORMATION {
+ BaseAddress: ::PVOID,
+ AllocationBase: ::PVOID,
+ AllocationProtect: ::DWORD,
+ RegionSize: ::SIZE_T,
+ State: ::DWORD,
+ Protect: ::DWORD,
+ Type: ::DWORD,
+}}
+pub type PMEMORY_BASIC_INFORMATION = *mut MEMORY_BASIC_INFORMATION;
+STRUCT!{struct MEMORY_BASIC_INFORMATION32 {
+ BaseAddress: ::DWORD,
+ AllocationBase: ::DWORD,
+ AllocationProtect: ::DWORD,
+ RegionSize: ::DWORD,
+ State: ::DWORD,
+ Protect: ::DWORD,
+ Type: ::DWORD,
+}}
+pub type PMEMORY_BASIC_INFORMATION32 = *mut MEMORY_BASIC_INFORMATION32;
+STRUCT!{struct MEMORY_BASIC_INFORMATION64 { // FIXME: align 16
+ BaseAddress: ::ULONGLONG,
+ AllocationBase: ::ULONGLONG,
+ AllocationProtect: ::DWORD,
+ __alignment1: ::DWORD,
+ RegionSize: ::ULONGLONG,
+ State: ::DWORD,
+ Protect: ::DWORD,
+ Type: ::DWORD,
+ __alignment2: ::DWORD,
+}}
+pub type PMEMORY_BASIC_INFORMATION64 = *mut MEMORY_BASIC_INFORMATION64;
+pub const WOW64_SIZE_OF_80387_REGISTERS: usize = 80;
+pub const WOW64_MAXIMUM_SUPPORTED_EXTENSION: usize = 512;
+STRUCT!{nodebug struct WOW64_FLOATING_SAVE_AREA {
+ ControlWord: ::DWORD,
+ StatusWord: ::DWORD,
+ TagWord: ::DWORD,
+ ErrorOffset: ::DWORD,
+ ErrorSelector: ::DWORD,
+ DataOffset: ::DWORD,
+ DataSelector: ::DWORD,
+ RegisterArea: [::BYTE; WOW64_SIZE_OF_80387_REGISTERS],
+ Cr0NpxState: ::DWORD,
+}}
+pub type PWOW64_FLOATING_SAVE_AREA = *mut WOW64_FLOATING_SAVE_AREA;
+STRUCT!{nodebug struct WOW64_CONTEXT {
+ ContextFlags: ::DWORD,
+ Dr0: ::DWORD,
+ Dr1: ::DWORD,
+ Dr2: ::DWORD,
+ Dr3: ::DWORD,
+ Dr4: ::DWORD,
+ Dr5: ::DWORD,
+ Dr6: ::DWORD,
+ Dr7: ::DWORD,
+ FloatSave: WOW64_FLOATING_SAVE_AREA,
+ SegGs: ::DWORD,
+ SegFs: ::DWORD,
+ SegEs: ::DWORD,
+ SegDs: ::DWORD,
+ Edi: ::DWORD,
+ Esi: ::DWORD,
+ Ebx: ::DWORD,
+ Edx: ::DWORD,
+ Ecx: ::DWORD,
+ Eax: ::DWORD,
+ Ebp: ::DWORD,
+ Eip: ::DWORD,
+ SegCs: ::DWORD,
+ EFlags: ::DWORD,
+ Esp: ::DWORD,
+ SegSs: ::DWORD,
+ ExtendedRegisters: [::BYTE; WOW64_MAXIMUM_SUPPORTED_EXTENSION],
+}}
+pub type PWOW64_CONTEXT = *mut WOW64_CONTEXT;
+STRUCT!{struct WOW64_LDT_ENTRY_Bytes {
+ BaseMid: ::BYTE,
+ Flags1: ::BYTE,
+ Flags2: ::BYTE,
+ BaseHi: ::BYTE,
+}}
+STRUCT!{struct WOW64_LDT_ENTRY_Bits {
+ BitFields: ::DWORD,
+}}
+BITFIELD!(WOW64_LDT_ENTRY_Bits BitFields: ::DWORD [
+ BaseMid set_BaseMid[0..8],
+ Type set_Type[8..13],
+ Dpl set_Dpl[13..15],
+ Pres set_Pres[15..16],
+ LimitHi set_LimitHi[16..20],
+ Sys set_Sys[20..21],
+ Reserved_0 set_Reserved_0[21..22],
+ Default_Big set_Default_Big[22..23],
+ Granularity set_Granularity[23..24],
+ BaseHi set_BaseHi[24..32],
+]);
+STRUCT!{struct WOW64_LDT_ENTRY {
+ LimitLow: ::WORD,
+ BaseLow: ::WORD,
+ HighWord: ::DWORD,
+}}
+UNION!(WOW64_LDT_ENTRY, HighWord, Bytes, Bytes_mut, WOW64_LDT_ENTRY_Bytes);
+UNION!(WOW64_LDT_ENTRY, HighWord, Bits, Bits_mut, WOW64_LDT_ENTRY_Bits);
+pub type PWOW64_LDT_ENTRY = *mut WOW64_LDT_ENTRY;
diff --git a/third_party/rust/winapi-0.2.8/src/winreg.rs b/third_party/rust/winapi-0.2.8/src/winreg.rs
new file mode 100644
index 0000000000..91ef168ca9
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winreg.rs
@@ -0,0 +1,41 @@
+// Copyright © 2016, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+use super::*;
+pub type REGSAM = ACCESS_MASK;
+STRUCT!{struct VALENTA {
+ ve_valuename: LPSTR,
+ ve_valuelen: DWORD,
+ ve_valueptr: DWORD_PTR,
+ ve_type: DWORD,
+}}
+pub type PVALENTA = *mut VALENTA;
+STRUCT!{struct VALENTW {
+ ve_valuename: LPWSTR,
+ ve_valuelen: DWORD,
+ ve_valueptr: DWORD_PTR,
+ ve_type: DWORD,
+}}
+pub type PVALENTW = *mut VALENTW;
+pub const HKEY_CLASSES_ROOT: HKEY = 0x80000000 as HKEY;
+pub const HKEY_CURRENT_USER: HKEY = 0x80000001 as HKEY;
+pub const HKEY_LOCAL_MACHINE: HKEY = 0x80000002 as HKEY;
+pub const HKEY_USERS: HKEY = 0x80000003 as HKEY;
+pub const HKEY_PERFORMANCE_DATA: HKEY = 0x80000004 as HKEY;
+pub const HKEY_PERFORMANCE_TEXT: HKEY = 0x80000050 as HKEY;
+pub const HKEY_PERFORMANCE_NLSTEXT: HKEY = 0x80000060 as HKEY;
+pub const HKEY_CURRENT_CONFIG: HKEY = 0x80000005 as HKEY;
+pub const HKEY_DYN_DATA: HKEY = 0x80000006 as HKEY;
+pub const HKEY_CURRENT_USER_LOCAL_SETTINGS: HKEY = 0x80000007 as HKEY;
+pub const REG_MUI_STRING_TRUNCATE: DWORD = 0x00000001;
+pub const RRF_RT_REG_NONE: DWORD = 0x00000001;
+pub const RRF_RT_REG_SZ: DWORD = 0x00000002;
+pub const RRF_RT_REG_EXPAND_SZ: DWORD = 0x00000004;
+pub const RRF_RT_REG_BINARY: DWORD = 0x00000008;
+pub const RRF_RT_REG_DWORD: DWORD = 0x00000010;
+pub const RRF_RT_REG_MULTI_SZ: DWORD = 0x00000020;
+pub const RRF_RT_REG_QWORD: DWORD = 0x00000040;
+pub const RRF_RT_DWORD: DWORD = RRF_RT_REG_BINARY|RRF_RT_REG_DWORD;
+pub const RRF_RT_QWORD: DWORD = RRF_RT_REG_BINARY|RRF_RT_REG_QWORD;
+pub const RRF_RT_ANY: DWORD = 0x0000ffff;
+pub const RRF_NOEXPAND: DWORD = 0x10000000;
+pub const RRF_ZEROONFAILURE: DWORD = 0x20000000;
diff --git a/third_party/rust/winapi-0.2.8/src/winscard.rs b/third_party/rust/winapi-0.2.8/src/winscard.rs
new file mode 100644
index 0000000000..7d20c2d999
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winscard.rs
@@ -0,0 +1,269 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Data Protection API Prototypes and Definitions
+// This header file provides the definitions and symbols necessary for an
+// Application or Smart Card Service Provider to access the Smartcard Subsystem.
+pub type LPCBYTE = *const ::BYTE;
+pub type SCARDCONTEXT = ::ULONG_PTR;
+pub type PSCARDCONTEXT = *mut SCARDCONTEXT;
+pub type LPSCARDCONTEXT = *mut SCARDCONTEXT;
+pub type SCARDHANDLE = ::ULONG_PTR;
+pub type PSCARDHANDLE = *mut SCARDHANDLE;
+pub type LPSCARDHANDLE = *mut SCARDHANDLE;
+pub const SCARD_AUTOALLOCATE: ::DWORD = -1i32 as ::DWORD;
+pub const SCARD_SCOPE_USER: ::DWORD = 0;
+pub const SCARD_SCOPE_TERMINAL: ::DWORD = 1;
+pub const SCARD_SCOPE_SYSTEM: ::DWORD = 2;
+pub const SCARD_PROVIDER_PRIMARY: ::DWORD = 1;
+pub const SCARD_PROVIDER_CSP: ::DWORD = 2;
+pub const SCARD_PROVIDER_KSP: ::DWORD = 3;
+STRUCT!{nodebug struct SCARD_READERSTATEA {
+ szReader: ::LPCSTR,
+ pvUserData: ::LPVOID,
+ dwCurrentState: ::DWORD,
+ dwEventState: ::DWORD,
+ cbAtr: ::DWORD,
+ rgbAtr: [::BYTE; 36],
+}}
+pub type PSCARD_READERSTATEA = *mut SCARD_READERSTATEA;
+pub type LPSCARD_READERSTATEA = *mut SCARD_READERSTATEA;
+STRUCT!{nodebug struct SCARD_READERSTATEW {
+ szReader: ::LPCWSTR,
+ pvUserData: ::LPVOID,
+ dwCurrentState: ::DWORD,
+ dwEventState: ::DWORD,
+ cbAtr: ::DWORD,
+ rgbAtr: [::BYTE; 36],
+}}
+pub type PSCARD_READERSTATEW = *mut SCARD_READERSTATEW;
+pub type LPSCARD_READERSTATEW = *mut SCARD_READERSTATEW;
+pub type SCARD_READERSTATE_A = SCARD_READERSTATEA;
+pub type SCARD_READERSTATE_W = SCARD_READERSTATEW;
+pub type PSCARD_READERSTATE_A = PSCARD_READERSTATEA;
+pub type PSCARD_READERSTATE_W = PSCARD_READERSTATEW;
+pub type LPSCARD_READERSTATE_A = LPSCARD_READERSTATEA;
+pub type LPSCARD_READERSTATE_W = LPSCARD_READERSTATEW;
+pub const SCARD_STATE_UNAWARE: ::DWORD = 0x00000000;
+pub const SCARD_STATE_IGNORE: ::DWORD = 0x00000001;
+pub const SCARD_STATE_CHANGED: ::DWORD = 0x00000002;
+pub const SCARD_STATE_UNKNOWN: ::DWORD = 0x00000004;
+pub const SCARD_STATE_UNAVAILABLE: ::DWORD = 0x00000008;
+pub const SCARD_STATE_EMPTY: ::DWORD = 0x00000010;
+pub const SCARD_STATE_PRESENT: ::DWORD = 0x00000020;
+pub const SCARD_STATE_ATRMATCH: ::DWORD = 0x00000040;
+pub const SCARD_STATE_EXCLUSIVE: ::DWORD = 0x00000080;
+pub const SCARD_STATE_INUSE: ::DWORD = 0x00000100;
+pub const SCARD_STATE_MUTE: ::DWORD = 0x00000200;
+pub const SCARD_STATE_UNPOWERED: ::DWORD = 0x00000400;
+STRUCT!{nodebug struct SCARD_ATRMASK {
+ cbAtr: ::DWORD,
+ rgbAtr: [::BYTE; 36],
+ rgbMask: [::BYTE; 36],
+}}
+pub type PSCARD_ATRMASK = *mut SCARD_ATRMASK;
+pub type LPSCARD_ATRMASK = *mut SCARD_ATRMASK;
+pub const SCARD_SHARE_EXCLUSIVE: ::DWORD = 1;
+pub const SCARD_SHARE_SHARED: ::DWORD = 2;
+pub const SCARD_SHARE_DIRECT: ::DWORD = 3;
+pub const SCARD_LEAVE_CARD: ::DWORD = 0;
+pub const SCARD_RESET_CARD: ::DWORD = 1;
+pub const SCARD_UNPOWER_CARD: ::DWORD = 2;
+pub const SCARD_EJECT_CARD: ::DWORD = 3;
+pub const SC_DLG_MINIMAL_UI: ::DWORD = 0x01;
+pub const SC_DLG_NO_UI: ::DWORD = 0x02;
+pub const SC_DLG_FORCE_UI: ::DWORD = 0x04;
+pub const SCERR_NOCARDNAME: ::DWORD = 0x4000;
+pub const SCERR_NOGUIDS: ::DWORD = 0x8000;
+pub type LPOCNCONNPROCA = Option<unsafe extern "system" fn(
+ SCARDCONTEXT, ::LPSTR, ::LPSTR, ::PVOID,
+) -> SCARDHANDLE>;
+pub type LPOCNCONNPROCW = Option<unsafe extern "system" fn(
+ SCARDCONTEXT, ::LPWSTR, ::LPWSTR, ::PVOID,
+) -> SCARDHANDLE>;
+pub type LPOCNCHKPROC = Option<unsafe extern "system" fn(
+ SCARDCONTEXT, SCARDHANDLE, ::PVOID,
+) -> ::BOOL>;
+pub type LPOCNDSCPROC = Option<unsafe extern "system" fn(SCARDCONTEXT, SCARDHANDLE, ::PVOID)>;
+STRUCT!{nodebug struct OPENCARD_SEARCH_CRITERIAA {
+ dwStructSize: ::DWORD,
+ lpstrGroupNames: ::LPSTR,
+ nMaxGroupNames: ::DWORD,
+ rgguidInterfaces: ::LPCGUID,
+ cguidInterfaces: ::DWORD,
+ lpstrCardNames: ::LPSTR,
+ nMaxCardNames: ::DWORD,
+ lpfnCheck: LPOCNCHKPROC,
+ lpfnConnect: LPOCNCONNPROCA,
+ lpfnDisconnect: LPOCNDSCPROC,
+ pvUserData: ::LPVOID,
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+}}
+pub type POPENCARD_SEARCH_CRITERIAA = *mut OPENCARD_SEARCH_CRITERIAA;
+pub type LPOPENCARD_SEARCH_CRITERIAA = *mut OPENCARD_SEARCH_CRITERIAA;
+STRUCT!{nodebug struct OPENCARD_SEARCH_CRITERIAW {
+ dwStructSize: ::DWORD,
+ lpstrGroupNames: ::LPWSTR,
+ nMaxGroupNames: ::DWORD,
+ rgguidInterfaces: ::LPCGUID,
+ cguidInterfaces: ::DWORD,
+ lpstrCardNames: ::LPWSTR,
+ nMaxCardNames: ::DWORD,
+ lpfnCheck: LPOCNCHKPROC,
+ lpfnConnect: LPOCNCONNPROCW,
+ lpfnDisconnect: LPOCNDSCPROC,
+ pvUserData: ::LPVOID,
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+}}
+pub type POPENCARD_SEARCH_CRITERIAW = *mut OPENCARD_SEARCH_CRITERIAW;
+pub type LPOPENCARD_SEARCH_CRITERIAW = *mut OPENCARD_SEARCH_CRITERIAW;
+STRUCT!{nodebug struct OPENCARDNAME_EXA {
+ dwStructSize: ::DWORD,
+ hSCardContext: SCARDCONTEXT,
+ hwndOwner: ::HWND,
+ dwFlags: ::DWORD,
+ lpstrTitle: ::LPCSTR,
+ lpstrSearchDesc: ::LPCSTR,
+ hIcon: ::HICON,
+ pOpenCardSearchCriteria: POPENCARD_SEARCH_CRITERIAA,
+ lpfnConnect: LPOCNCONNPROCA,
+ pvUserData: ::LPVOID,
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+ lpstrRdr: ::LPSTR,
+ nMaxRdr: ::DWORD,
+ lpstrCard: ::LPSTR,
+ nMaxCard: ::DWORD,
+ dwActiveProtocol: ::DWORD,
+ hCardHandle: SCARDHANDLE,
+}}
+pub type POPENCARDNAME_EXA = *mut OPENCARDNAME_EXA;
+pub type LPOPENCARDNAME_EXA = *mut OPENCARDNAME_EXA;
+STRUCT!{nodebug struct OPENCARDNAME_EXW {
+ dwStructSize: ::DWORD,
+ hSCardContext: SCARDCONTEXT,
+ hwndOwner: ::HWND,
+ dwFlags: ::DWORD,
+ lpstrTitle: ::LPCWSTR,
+ lpstrSearchDesc: ::LPCWSTR,
+ hIcon: ::HICON,
+ pOpenCardSearchCriteria: POPENCARD_SEARCH_CRITERIAW,
+ lpfnConnect: LPOCNCONNPROCW,
+ pvUserData: ::LPVOID,
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+ lpstrRdr: ::LPWSTR,
+ nMaxRdr: ::DWORD,
+ lpstrCard: ::LPWSTR,
+ nMaxCard: ::DWORD,
+ dwActiveProtocol: ::DWORD,
+ hCardHandle: SCARDHANDLE,
+}}
+pub type POPENCARDNAME_EXW = *mut OPENCARDNAME_EXW;
+pub type LPOPENCARDNAME_EXW = *mut OPENCARDNAME_EXW;
+pub type OPENCARDNAMEA_EX = OPENCARDNAME_EXA;
+pub type OPENCARDNAMEW_EX = OPENCARDNAME_EXW;
+pub type POPENCARDNAMEA_EX = POPENCARDNAME_EXA;
+pub type POPENCARDNAMEW_EX = POPENCARDNAME_EXW;
+pub type LPOPENCARDNAMEA_EX = LPOPENCARDNAME_EXA;
+pub type LPOPENCARDNAMEW_EX = LPOPENCARDNAME_EXW;
+pub const SCARD_READER_SEL_AUTH_PACKAGE: ::DWORD = -629i32 as ::DWORD;
+ENUM!{enum READER_SEL_REQUEST_MATCH_TYPE {
+ RSR_MATCH_TYPE_READER_AND_CONTAINER = 1,
+ RSR_MATCH_TYPE_SERIAL_NUMBER,
+ RSR_MATCH_TYPE_ALL_CARDS,
+}}
+STRUCT!{struct READER_SEL_REQUEST_ReaderAndContainerParameter {
+ cbReaderNameOffset: ::DWORD,
+ cchReaderNameLength: ::DWORD,
+ cbContainerNameOffset: ::DWORD,
+ cchContainerNameLength: ::DWORD,
+ dwDesiredCardModuleVersion: ::DWORD,
+ dwCspFlags: ::DWORD,
+}}
+STRUCT!{struct READER_SEL_REQUEST_SerialNumberParameter {
+ cbSerialNumberOffset: ::DWORD,
+ cbSerialNumberLength: ::DWORD,
+ dwDesiredCardModuleVersion: ::DWORD,
+}}
+STRUCT!{struct READER_SEL_REQUEST {
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+ MatchType: READER_SEL_REQUEST_MATCH_TYPE,
+ ReaderAndContainerParameter: READER_SEL_REQUEST_ReaderAndContainerParameter,
+}}
+UNION!(
+ READER_SEL_REQUEST, ReaderAndContainerParameter, SerialNumberParameter,
+ SerialNumberParameter_mut, READER_SEL_REQUEST_SerialNumberParameter
+);
+pub type PREADER_SEL_REQUEST = *mut READER_SEL_REQUEST;
+STRUCT!{struct READER_SEL_RESPONSE {
+ cbReaderNameOffset: ::DWORD,
+ cchReaderNameLength: ::DWORD,
+ cbCardNameOffset: ::DWORD,
+ cchCardNameLength: ::DWORD,
+}}
+pub type PREADER_SEL_RESPONSE = *mut READER_SEL_RESPONSE;
+STRUCT!{nodebug struct OPENCARDNAMEA {
+ dwStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hSCardContext: SCARDCONTEXT,
+ lpstrGroupNames: ::LPSTR,
+ nMaxGroupNames: ::DWORD,
+ lpstrCardNames: ::LPSTR,
+ nMaxCardNames: ::DWORD,
+ rgguidInterfaces: ::LPCGUID,
+ cguidInterfaces: ::DWORD,
+ lpstrRdr: ::LPSTR,
+ nMaxRdr: ::DWORD,
+ lpstrCard: ::LPSTR,
+ nMaxCard: ::DWORD,
+ lpstrTitle: ::LPCSTR,
+ dwFlags: ::DWORD,
+ pvUserData: ::LPVOID,
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+ dwActiveProtocol: ::DWORD,
+ lpfnConnect: LPOCNCONNPROCA,
+ lpfnCheck: LPOCNCHKPROC,
+ lpfnDisconnect: LPOCNDSCPROC,
+ hCardHandle: SCARDHANDLE,
+}}
+pub type POPENCARDNAMEA = *mut OPENCARDNAMEA;
+pub type LPOPENCARDNAMEA = *mut OPENCARDNAMEA;
+STRUCT!{nodebug struct OPENCARDNAMEW {
+ dwStructSize: ::DWORD,
+ hwndOwner: ::HWND,
+ hSCardContext: SCARDCONTEXT,
+ lpstrGroupNames: ::LPWSTR,
+ nMaxGroupNames: ::DWORD,
+ lpstrCardNames: ::LPWSTR,
+ nMaxCardNames: ::DWORD,
+ rgguidInterfaces: ::LPCGUID,
+ cguidInterfaces: ::DWORD,
+ lpstrRdr: ::LPWSTR,
+ nMaxRdr: ::DWORD,
+ lpstrCard: ::LPWSTR,
+ nMaxCard: ::DWORD,
+ lpstrTitle: ::LPCWSTR,
+ dwFlags: ::DWORD,
+ pvUserData: ::LPVOID,
+ dwShareMode: ::DWORD,
+ dwPreferredProtocols: ::DWORD,
+ dwActiveProtocol: ::DWORD,
+ lpfnConnect: LPOCNCONNPROCW,
+ lpfnCheck: LPOCNCHKPROC,
+ lpfnDisconnect: LPOCNDSCPROC,
+ hCardHandle: SCARDHANDLE,
+}}
+pub type POPENCARDNAMEW = *mut OPENCARDNAMEW;
+pub type LPOPENCARDNAMEW = *mut OPENCARDNAMEW;
+pub type OPENCARDNAME_A = OPENCARDNAMEA;
+pub type OPENCARDNAME_W = OPENCARDNAMEW;
+pub type POPENCARDNAME_A = POPENCARDNAMEA;
+pub type POPENCARDNAME_W = POPENCARDNAMEW;
+pub type LPOPENCARDNAME_A = LPOPENCARDNAMEA;
+pub type LPOPENCARDNAME_W = LPOPENCARDNAMEW;
+pub const SCARD_AUDIT_CHV_FAILURE: ::DWORD = 0x0;
+pub const SCARD_AUDIT_CHV_SUCCESS: ::DWORD = 0x1;
diff --git a/third_party/rust/winapi-0.2.8/src/winsmcrd.rs b/third_party/rust/winapi-0.2.8/src/winsmcrd.rs
new file mode 100644
index 0000000000..28f347492d
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winsmcrd.rs
@@ -0,0 +1,157 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+// Smart Card class/port IOCTL codes.
+pub type UWORD = ::WORD;
+DEFINE_GUID!(GUID_DEVINTERFACE_SMARTCARD_READER, 0x50DD5230, 0xBA8A, 0x11D1,
+ 0xBF, 0x5D, 0x00, 0x00, 0xF8, 0x05, 0xF5, 0x30);
+pub const SCARD_ATR_LENGTHL: ::DWORD = 33;
+pub const SCARD_PROTOCOL_UNDEFINED: ::DWORD = 0x00000000;
+pub const SCARD_PROTOCOL_T0: ::DWORD = 0x00000001;
+pub const SCARD_PROTOCOL_T1: ::DWORD = 0x00000002;
+pub const SCARD_PROTOCOL_RAW: ::DWORD = 0x00010000;
+pub const SCARD_PROTOCOL_Tx: ::DWORD = SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1;
+pub const SCARD_PROTOCOL_DEFAULT: ::DWORD = 0x80000000;
+pub const SCARD_PROTOCOL_OPTIMAL: ::DWORD = 0x00000000;
+pub const SCARD_POWER_DOWN: ::DWORD = 0;
+pub const SCARD_COLD_RESET: ::DWORD = 1;
+pub const SCARD_WARM_RESET: ::DWORD = 2;
+pub const IOCTL_SMARTCARD_POWER: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 1, ::METHOD_BUFFERED,
+ ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_GET_ATTRIBUTE: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 2,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_SET_ATTRIBUTE: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 3,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_CONFISCATE: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 4,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_TRANSMIT: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 5,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_EJECT: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 6, ::METHOD_BUFFERED,
+ ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_SWALLOW: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 7,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_IS_PRESENT: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 10,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_IS_ABSENT: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 11,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_SET_PROTOCOL: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 12,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_GET_STATE: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 14,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_GET_LAST_ERROR: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 15,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const IOCTL_SMARTCARD_GET_PERF_CNTR: ::DWORD = CTL_CODE!(::FILE_DEVICE_SMARTCARD, 16,
+ ::METHOD_BUFFERED, ::FILE_ANY_ACCESS);
+pub const MAXIMUM_ATTR_STRING_LENGTH: ::DWORD = 32;
+pub const MAXIMUM_SMARTCARD_READERS: ::DWORD = 10;
+pub const SCARD_CLASS_VENDOR_INFO: ::ULONG = 1;
+pub const SCARD_CLASS_COMMUNICATIONS: ::ULONG = 2;
+pub const SCARD_CLASS_PROTOCOL: ::ULONG = 3;
+pub const SCARD_CLASS_POWER_MGMT: ::ULONG = 4;
+pub const SCARD_CLASS_SECURITY: ::ULONG = 5;
+pub const SCARD_CLASS_MECHANICAL: ::ULONG = 6;
+pub const SCARD_CLASS_VENDOR_DEFINED: ::ULONG = 7;
+pub const SCARD_CLASS_IFD_PROTOCOL: ::ULONG = 8;
+pub const SCARD_CLASS_ICC_STATE: ::ULONG = 9;
+pub const SCARD_CLASS_PERF: ::ULONG = 0x7ffe;
+pub const SCARD_CLASS_SYSTEM: ::ULONG = 0x7fff;
+pub const SCARD_ATTR_VENDOR_NAME: ::ULONG = SCARD_CLASS_VENDOR_INFO << 16 | 0x0100;
+pub const SCARD_ATTR_VENDOR_IFD_TYPE: ::ULONG = SCARD_CLASS_VENDOR_INFO << 16 | 0x0101;
+pub const SCARD_ATTR_VENDOR_IFD_VERSION: ::ULONG = SCARD_CLASS_VENDOR_INFO << 16 | 0x0102;
+pub const SCARD_ATTR_VENDOR_IFD_SERIAL_NO: ::ULONG = SCARD_CLASS_VENDOR_INFO << 16 | 0x0103;
+pub const SCARD_ATTR_CHANNEL_ID: ::ULONG = SCARD_CLASS_COMMUNICATIONS << 16 | 0x0110;
+pub const SCARD_ATTR_PROTOCOL_TYPES: ::ULONG = SCARD_CLASS_PROTOCOL << 16 | 0x0120;
+pub const SCARD_ATTR_DEFAULT_CLK: ::ULONG = SCARD_CLASS_PROTOCOL << 16 | 0x0121;
+pub const SCARD_ATTR_MAX_CLK: ::ULONG = SCARD_CLASS_PROTOCOL << 16 | 0x0122;
+pub const SCARD_ATTR_DEFAULT_DATA_RATE: ::ULONG = SCARD_CLASS_PROTOCOL << 16 | 0x0123;
+pub const SCARD_ATTR_MAX_DATA_RATE: ::ULONG = SCARD_CLASS_PROTOCOL << 16 | 0x0124;
+pub const SCARD_ATTR_MAX_IFSD: ::ULONG = SCARD_CLASS_PROTOCOL << 16 | 0x0125;
+pub const SCARD_ATTR_POWER_MGMT_SUPPORT: ::ULONG = SCARD_CLASS_POWER_MGMT << 16 | 0x0131;
+pub const SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE: ::ULONG = SCARD_CLASS_SECURITY << 16 | 0x0140;
+pub const SCARD_ATTR_USER_AUTH_INPUT_DEVICE: ::ULONG = SCARD_CLASS_SECURITY << 16 | 0x0142;
+pub const SCARD_ATTR_CHARACTERISTICS: ::ULONG = SCARD_CLASS_MECHANICAL << 16 | 0x0150;
+pub const SCARD_ATTR_CURRENT_PROTOCOL_TYPE: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0201;
+pub const SCARD_ATTR_CURRENT_CLK: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0202;
+pub const SCARD_ATTR_CURRENT_F: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0203;
+pub const SCARD_ATTR_CURRENT_D: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0204;
+pub const SCARD_ATTR_CURRENT_N: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0205;
+pub const SCARD_ATTR_CURRENT_W: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0206;
+pub const SCARD_ATTR_CURRENT_IFSC: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0207;
+pub const SCARD_ATTR_CURRENT_IFSD: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0208;
+pub const SCARD_ATTR_CURRENT_BWT: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x0209;
+pub const SCARD_ATTR_CURRENT_CWT: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x020a;
+pub const SCARD_ATTR_CURRENT_EBC_ENCODING: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x020b;
+pub const SCARD_ATTR_EXTENDED_BWT: ::ULONG = SCARD_CLASS_IFD_PROTOCOL << 16 | 0x020c;
+pub const SCARD_ATTR_ICC_PRESENCE: ::ULONG = SCARD_CLASS_ICC_STATE << 16 | 0x0300;
+pub const SCARD_ATTR_ICC_INTERFACE_STATUS: ::ULONG = SCARD_CLASS_ICC_STATE << 16 | 0x0301;
+pub const SCARD_ATTR_CURRENT_IO_STATE: ::ULONG = SCARD_CLASS_ICC_STATE << 16 | 0x0302;
+pub const SCARD_ATTR_ATR_STRING: ::ULONG = SCARD_CLASS_ICC_STATE << 16 | 0x0303;
+pub const SCARD_ATTR_ICC_TYPE_PER_ATR: ::ULONG = SCARD_CLASS_ICC_STATE << 16 | 0x0304;
+pub const SCARD_ATTR_ESC_RESET: ::ULONG = SCARD_CLASS_VENDOR_DEFINED << 16 | 0xA000;
+pub const SCARD_ATTR_ESC_CANCEL: ::ULONG = SCARD_CLASS_VENDOR_DEFINED << 16 | 0xA003;
+pub const SCARD_ATTR_ESC_AUTHREQUEST: ::ULONG = SCARD_CLASS_VENDOR_DEFINED << 16 | 0xA005;
+pub const SCARD_ATTR_MAXINPUT: ::ULONG = SCARD_CLASS_VENDOR_DEFINED << 16 | 0xA007;
+pub const SCARD_ATTR_DEVICE_UNIT: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0001;
+pub const SCARD_ATTR_DEVICE_IN_USE: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0002;
+pub const SCARD_ATTR_DEVICE_FRIENDLY_NAME_A: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0003;
+pub const SCARD_ATTR_DEVICE_SYSTEM_NAME_A: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0004;
+pub const SCARD_ATTR_DEVICE_FRIENDLY_NAME_W: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0005;
+pub const SCARD_ATTR_DEVICE_SYSTEM_NAME_W: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0006;
+pub const SCARD_ATTR_SUPRESS_T1_IFS_REQUEST: ::ULONG = SCARD_CLASS_SYSTEM << 16 | 0x0007;
+pub const SCARD_PERF_NUM_TRANSMISSIONS: ::ULONG = SCARD_CLASS_PERF << 16 | 0x0001;
+pub const SCARD_PERF_BYTES_TRANSMITTED: ::ULONG = SCARD_CLASS_PERF << 16 | 0x0002;
+pub const SCARD_PERF_TRANSMISSION_TIME: ::ULONG = SCARD_CLASS_PERF << 16 | 0x0003;
+pub const SCARD_T0_HEADER_LENGTH: ::DWORD = 7;
+pub const SCARD_T0_CMD_LENGTH: ::DWORD = 5;
+pub const SCARD_T1_PROLOGUE_LENGTH: ::DWORD = 3;
+pub const SCARD_T1_EPILOGUE_LENGTH: ::DWORD = 2;
+pub const SCARD_T1_MAX_IFS: ::DWORD = 254;
+pub const SCARD_UNKNOWN: ::ULONG = 0;
+pub const SCARD_ABSENT: ::ULONG = 1;
+pub const SCARD_PRESENT: ::ULONG = 2;
+pub const SCARD_SWALLOWED: ::ULONG = 3;
+pub const SCARD_POWERED: ::ULONG = 4;
+pub const SCARD_NEGOTIABLE: ::ULONG = 5;
+pub const SCARD_SPECIFIC: ::ULONG = 6;
+STRUCT!{struct SCARD_IO_REQUEST {
+ dwProtocol: ::DWORD,
+ cbPciLength: ::DWORD,
+}}
+pub type PSCARD_IO_REQUEST = *mut SCARD_IO_REQUEST;
+pub type LPSCARD_IO_REQUEST = *mut SCARD_IO_REQUEST;
+pub type LPCSCARD_IO_REQUEST = *const SCARD_IO_REQUEST;
+STRUCT!{struct SCARD_T0_COMMAND {
+ bCla: ::BYTE,
+ bIns: ::BYTE,
+ bP1: ::BYTE,
+ bP2: ::BYTE,
+ bP3: ::BYTE,
+}}
+pub type LPSCARD_T0_COMMAND = *mut SCARD_T0_COMMAND;
+STRUCT!{struct SCARD_T0_REQUEST {
+ ioRequest: SCARD_IO_REQUEST,
+ bSw1: ::BYTE,
+ bSw2: ::BYTE,
+ CmdBytes: SCARD_T0_COMMAND,
+}}
+UNION!(SCARD_T0_REQUEST, CmdBytes, rgbHeader, rgbHeader_mut, [::BYTE; 5]);
+pub type PSCARD_T0_REQUEST = *mut SCARD_T0_REQUEST;
+pub type LPSCARD_T0_REQUEST = *mut SCARD_T0_REQUEST;
+STRUCT!{struct SCARD_T1_REQUEST {
+ ioRequest: SCARD_IO_REQUEST,
+}}
+pub type PSCARD_T1_REQUEST = *mut SCARD_T1_REQUEST;
+pub type LPSCARD_T1_REQUEST = *mut SCARD_T1_REQUEST;
+pub const SCARD_READER_SWALLOWS: ::ULONG = 0x00000001;
+pub const SCARD_READER_EJECTS: ::ULONG = 0x00000002;
+pub const SCARD_READER_CONFISCATES: ::ULONG = 0x00000004;
+pub const SCARD_READER_TYPE_SERIAL: ::ULONG = 0x01;
+pub const SCARD_READER_TYPE_PARALELL: ::ULONG = 0x02;
+pub const SCARD_READER_TYPE_KEYBOARD: ::ULONG = 0x04;
+pub const SCARD_READER_TYPE_SCSI: ::ULONG = 0x08;
+pub const SCARD_READER_TYPE_IDE: ::ULONG = 0x10;
+pub const SCARD_READER_TYPE_USB: ::ULONG = 0x20;
+pub const SCARD_READER_TYPE_PCMCIA: ::ULONG = 0x40;
+pub const SCARD_READER_TYPE_TPM: ::ULONG = 0x80;
+pub const SCARD_READER_TYPE_NFC: ::ULONG = 0x100;
+pub const SCARD_READER_TYPE_UICC: ::ULONG = 0x200;
+pub const SCARD_READER_TYPE_VENDOR: ::ULONG = 0xF0;
diff --git a/third_party/rust/winapi-0.2.8/src/winsock2.rs b/third_party/rust/winapi-0.2.8/src/winsock2.rs
new file mode 100644
index 0000000000..05b62f2c43
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winsock2.rs
@@ -0,0 +1,429 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! definitions to be used with the WinSock 2 DLL and WinSock 2 applications.
+//!
+//! This header file corresponds to version 2.2.x of the WinSock API specification.
+pub const WINSOCK_VERSION: ::WORD = 2 | (2 << 8);
+pub type u_char = ::c_uchar;
+pub type u_short = ::c_ushort;
+pub type u_int = ::c_uint;
+pub type u_long = ::c_ulong;
+pub type u_int64 = ::__uint64;
+pub type SOCKET = ::UINT_PTR;
+pub type GROUP = ::c_uint;
+pub const FD_SETSIZE: usize = 64;
+pub const FD_MAX_EVENTS: usize = 10;
+STRUCT!{nodebug struct fd_set {
+ fd_count: u_int,
+ fd_array: [SOCKET; FD_SETSIZE],
+}}
+STRUCT!{struct timeval {
+ tv_sec: ::c_long,
+ tv_usec: ::c_long,
+}}
+STRUCT!{struct hostent {
+ h_name: *mut ::c_char,
+ h_aliases: *mut *mut ::c_char,
+ h_addrtype: ::c_short,
+ h_length: ::c_short,
+ h_addr_list: *mut *mut ::c_char,
+}}
+STRUCT!{struct netent {
+ n_name: *mut ::c_char,
+ n_aliases: *mut *mut ::c_char,
+ n_addrtype: ::c_short,
+ n_net: u_long,
+}}
+#[cfg(target_arch="x86")]
+STRUCT!{struct servent {
+ s_name: *mut ::c_char,
+ s_aliases: *mut *mut ::c_char,
+ s_port: ::c_short,
+ s_proto: *mut ::c_char,
+}}
+#[cfg(target_arch="x86_64")]
+STRUCT!{struct servent {
+ s_name: *mut ::c_char,
+ s_aliases: *mut *mut ::c_char,
+ s_proto: *mut ::c_char,
+ s_port: ::c_short,
+}}
+STRUCT!{struct protoent {
+ p_name: *mut ::c_char,
+ p_aliases: *mut *mut ::c_char,
+ p_proto: ::c_short,
+}}
+pub const WSADESCRIPTION_LEN: usize = 256;
+pub const WSASYS_STATUS_LEN: usize = 128;
+#[cfg(target_arch="x86")]
+STRUCT!{nodebug struct WSADATA {
+ wVersion: ::WORD,
+ wHighVersion: ::WORD,
+ szDescription: [::c_char; WSADESCRIPTION_LEN + 1],
+ szSystemStatus: [::c_char; WSASYS_STATUS_LEN + 1],
+ iMaxSockets: ::c_ushort,
+ iMaxUdpDg: ::c_ushort,
+ lpVendorInfo: *mut ::c_char,
+}}
+#[cfg(target_arch="x86_64")]
+STRUCT!{nodebug struct WSADATA {
+ wVersion: ::WORD,
+ wHighVersion: ::WORD,
+ iMaxSockets: ::c_ushort,
+ iMaxUdpDg: ::c_ushort,
+ lpVendorInfo: *mut ::c_char,
+ szDescription: [::c_char; WSADESCRIPTION_LEN + 1],
+ szSystemStatus: [::c_char; WSASYS_STATUS_LEN + 1],
+}}
+pub type LPWSADATA = *mut WSADATA;
+//391
+pub const INVALID_SOCKET: SOCKET = !0;
+pub const SOCKET_ERROR: ::c_int = -1;
+STRUCT!{struct sockproto {
+ sp_family: u_short,
+ sp_protocol: u_short,
+}}
+pub const PF_UNSPEC: ::c_int = ::AF_UNSPEC;
+pub const PF_UNIX: ::c_int = ::AF_UNIX;
+pub const PF_INET: ::c_int = ::AF_INET;
+pub const PF_IMPLINK: ::c_int = ::AF_IMPLINK;
+pub const PF_PUP: ::c_int = ::AF_PUP;
+pub const PF_CHAOS: ::c_int = ::AF_CHAOS;
+pub const PF_NS: ::c_int = ::AF_NS;
+pub const PF_IPX: ::c_int = ::AF_IPX;
+pub const PF_ISO: ::c_int = ::AF_ISO;
+pub const PF_OSI: ::c_int = ::AF_OSI;
+pub const PF_ECMA: ::c_int = ::AF_ECMA;
+pub const PF_DATAKIT: ::c_int = ::AF_DATAKIT;
+pub const PF_CCITT: ::c_int = ::AF_CCITT;
+pub const PF_SNA: ::c_int = ::AF_SNA;
+pub const PF_DECnet: ::c_int = ::AF_DECnet;
+pub const PF_DLI: ::c_int = ::AF_DLI;
+pub const PF_LAT: ::c_int = ::AF_LAT;
+pub const PF_HYLINK: ::c_int = ::AF_HYLINK;
+pub const PF_APPLETALK: ::c_int = ::AF_APPLETALK;
+pub const PF_VOICEVIEW: ::c_int = ::AF_VOICEVIEW;
+pub const PF_FIREFOX: ::c_int = ::AF_FIREFOX;
+pub const PF_UNKNOWN1: ::c_int = ::AF_UNKNOWN1;
+pub const PF_BAN: ::c_int = ::AF_BAN;
+pub const PF_ATM: ::c_int = ::AF_ATM;
+pub const PF_INET6: ::c_int = ::AF_INET6;
+pub const PF_BTH: ::c_int = ::AF_BTH;
+pub const PF_MAX: ::c_int = ::AF_MAX;
+STRUCT!{struct linger {
+ l_onoff: u_short,
+ l_linger: u_short,
+}}
+pub const SOMAXCONN: ::c_int = 0x7fffffff;
+pub type WSAEVENT = ::HANDLE;
+pub type LPWSAEVENT = ::LPHANDLE;
+pub type WSAOVERLAPPED = ::OVERLAPPED;
+pub type LPWSAOVERLAPPED = *mut ::OVERLAPPED;
+pub const WSA_IO_PENDING: ::DWORD = ::ERROR_IO_PENDING;
+pub const WSA_IO_INCOMPLETE: ::DWORD = ::ERROR_IO_INCOMPLETE;
+pub const WSA_INVALID_HANDLE: ::DWORD = ::ERROR_INVALID_HANDLE;
+pub const WSA_INVALID_PARAMETER: ::DWORD = ::ERROR_INVALID_PARAMETER;
+pub const WSA_NOT_ENOUGH_MEMORY: ::DWORD = ::ERROR_NOT_ENOUGH_MEMORY;
+pub const WSA_OPERATION_ABORTED: ::DWORD = ::ERROR_OPERATION_ABORTED;
+STRUCT!{struct QOS {
+ SendingFlowspec: ::FLOWSPEC,
+ FLOWSPEC: ::FLOWSPEC,
+ ProviderSpecific: ::WSABUF,
+}}
+pub type LPQOS = *mut QOS;
+STRUCT!{struct WSANETWORKEVENTS {
+ lNetworkEvents: ::c_long,
+ iErrorCode: [::c_int; FD_MAX_EVENTS],
+}}
+pub type LPWSANETWORKEVENTS = *mut WSANETWORKEVENTS;
+pub const MAX_PROTOCOL_CHAIN: usize = 7;
+STRUCT!{struct WSAPROTOCOLCHAIN {
+ ChainLen: ::c_int,
+ ChainEntries: [::DWORD; MAX_PROTOCOL_CHAIN],
+}}
+pub type LPWSAPROTOCOLCHAIN = *mut WSAPROTOCOLCHAIN;
+pub const WSAPROTOCOL_LEN: usize = 255;
+STRUCT!{nodebug struct WSAPROTOCOL_INFOA {
+ dwServiceFlags1: ::DWORD,
+ dwServiceFlags2: ::DWORD,
+ dwServiceFlags3: ::DWORD,
+ dwServiceFlags4: ::DWORD,
+ dwServiceFlags5: ::DWORD,
+ ProviderId: ::GUID,
+ dwCatalogEntryId: ::DWORD,
+ ProtocolChain: WSAPROTOCOLCHAIN,
+ iVersion: ::c_int,
+ iAddressFamily: ::c_int,
+ iMaxSockAddr: ::c_int,
+ iMinSockAddr: ::c_int,
+ iSocketType: ::c_int,
+ iProtocol: ::c_int,
+ iProtocolMaxOffset: ::c_int,
+ iNetworkByteOrder: ::c_int,
+ iSecurityScheme: ::c_int,
+ dwMessageSize: ::DWORD,
+ dwProviderReserved: ::DWORD,
+ szProtocol: [::CHAR; WSAPROTOCOL_LEN + 1],
+}}
+pub type LPWSAPROTOCOL_INFOA = *mut WSAPROTOCOL_INFOA;
+STRUCT!{nodebug struct WSAPROTOCOL_INFOW {
+ dwServiceFlags1: ::DWORD,
+ dwServiceFlags2: ::DWORD,
+ dwServiceFlags3: ::DWORD,
+ dwServiceFlags4: ::DWORD,
+ dwServiceFlags5: ::DWORD,
+ ProviderId: ::GUID,
+ dwCatalogEntryId: ::DWORD,
+ ProtocolChain: WSAPROTOCOLCHAIN,
+ iVersion: ::c_int,
+ iAddressFamily: ::c_int,
+ iMaxSockAddr: ::c_int,
+ iMinSockAddr: ::c_int,
+ iSocketType: ::c_int,
+ iProtocol: ::c_int,
+ iProtocolMaxOffset: ::c_int,
+ iNetworkByteOrder: ::c_int,
+ iSecurityScheme: ::c_int,
+ dwMessageSize: ::DWORD,
+ dwProviderReserved: ::DWORD,
+ szProtocol: [::WCHAR; WSAPROTOCOL_LEN + 1],
+}}
+pub type LPWSAPROTOCOL_INFOW = *mut WSAPROTOCOL_INFOW;
+pub type LPCONDITIONPROC = Option<unsafe extern "system" fn(
+ lpCallerId: ::LPWSABUF, lpCallerData: ::LPWSABUF, lpSQOS: LPQOS, lpGQOS: LPQOS,
+ lpCalleeId: ::LPWSABUF, lpCalleeData: ::LPWSABUF, g: *mut GROUP, dwCallbackData: ::DWORD,
+) -> ::c_int>;
+pub type LPWSAOVERLAPPED_COMPLETION_ROUTINE = Option<unsafe extern "system" fn(
+ dwError: ::DWORD, cbTransferred: ::DWORD, lpOverlapped: LPWSAOVERLAPPED, dwFlags: ::DWORD,
+)>;
+ENUM!{enum WSACOMPLETIONTYPE {
+ NSP_NOTIFY_IMMEDIATELY = 0,
+ NSP_NOTIFY_HWND,
+ NSP_NOTIFY_EVENT,
+ NSP_NOTIFY_PORT,
+ NSP_NOTIFY_APC,
+}}
+pub type PWSACOMPLETIONTYPE = *mut WSACOMPLETIONTYPE;
+pub type LPWSACOMPLETIONTYPE = *mut WSACOMPLETIONTYPE;
+STRUCT!{struct WSACOMPLETION_WindowMessage {
+ hWnd: ::HWND,
+ uMsg: ::UINT,
+ context: ::WPARAM,
+}}
+STRUCT!{struct WSACOMPLETION_Event {
+ lpOverlapped: LPWSAOVERLAPPED,
+}}
+STRUCT!{nodebug struct WSACOMPLETION_Apc {
+ lpOverlapped: LPWSAOVERLAPPED,
+ lpfnCompletionProc: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
+}}
+STRUCT!{struct WSACOMPLETION_Port {
+ lpOverlapped: LPWSAOVERLAPPED,
+ hPort: ::HANDLE,
+ Key: ::ULONG_PTR,
+}}
+#[cfg(target_arch="x86")]
+STRUCT!{struct WSACOMPLETION {
+ Type: WSACOMPLETIONTYPE,
+ Parameters: [u8; 12],
+}}
+#[cfg(target_arch="x86_64")]
+STRUCT!{struct WSACOMPLETION {
+ Type: WSACOMPLETIONTYPE,
+ Parameters: [u8; 24],
+}}
+UNION!(WSACOMPLETION, Parameters, WindowMessage, WindowMessage_mut, WSACOMPLETION_WindowMessage);
+UNION!(WSACOMPLETION, Parameters, Event, Event_mut, WSACOMPLETION_Event);
+UNION!(WSACOMPLETION, Parameters, Apc, Apc_mut, WSACOMPLETION_Apc);
+UNION!(WSACOMPLETION, Parameters, Port, Port_mut, WSACOMPLETION_Port);
+pub type PWSACOMPLETION = *mut WSACOMPLETION;
+pub type LPWSACOMPLETION = *mut WSACOMPLETION;
+STRUCT!{struct AFPROTOCOLS {
+ iAddressFamily: ::INT,
+ iProtocol: ::INT,
+}}
+pub type PAFPROTOCOLS = *mut AFPROTOCOLS;
+pub type LPAFPROTOCOLS = *mut AFPROTOCOLS;
+ENUM!{enum WSAECOMPARATOR {
+ COMP_EQUAL = 0,
+ COMP_NOTLESS,
+}}
+pub type PWSAECOMPARATOR = *mut WSAECOMPARATOR;
+pub type LPWSAECOMPARATOR = *mut WSAECOMPARATOR;
+STRUCT!{struct WSAVERSION {
+ dwVersion: ::DWORD,
+ ecHow: WSAECOMPARATOR,
+}}
+pub type PWSAVERSION = *mut WSAVERSION;
+pub type LPWSAVERSION = *mut WSAVERSION;
+STRUCT!{struct WSAQUERYSETA {
+ dwSize: ::DWORD,
+ lpszServiceInstanceName: ::LPSTR,
+ lpServiceClassId: ::LPGUID,
+ lpVersion: LPWSAVERSION,
+ lpszComment: ::LPSTR,
+ dwNameSpace: ::DWORD,
+ lpNSProviderId: ::LPGUID,
+ lpszContext: ::LPSTR,
+ dwNumberOfProtocols: ::DWORD,
+ lpafpProtocols: LPAFPROTOCOLS,
+ lpszQueryString: ::LPSTR,
+ dwNumberOfCsAddrs: ::DWORD,
+ lpcsaBuffer: ::LPCSADDR_INFO,
+ dwOutputFlags: ::DWORD,
+ lpBlob: ::LPBLOB,
+}}
+pub type PWSAQUERYSETA = *mut WSAQUERYSETA;
+pub type LPWSAQUERYSETA = *mut WSAQUERYSETA;
+STRUCT!{struct WSAQUERYSETW {
+ dwSize: ::DWORD,
+ lpszServiceInstanceName: ::LPWSTR,
+ lpServiceClassId: ::LPGUID,
+ lpVersion: LPWSAVERSION,
+ lpszComment: ::LPWSTR,
+ dwNameSpace: ::DWORD,
+ lpNSProviderId: ::LPGUID,
+ lpszContext: ::LPWSTR,
+ dwNumberOfProtocols: ::DWORD,
+ lpafpProtocols: LPAFPROTOCOLS,
+ lpszQueryString: ::LPWSTR,
+ dwNumberOfCsAddrs: ::DWORD,
+ lpcsaBuffer: ::LPCSADDR_INFO,
+ dwOutputFlags: ::DWORD,
+ lpBlob: ::LPBLOB,
+}}
+pub type PWSAQUERYSETW = *mut WSAQUERYSETW;
+pub type LPWSAQUERYSETW = *mut WSAQUERYSETW;
+STRUCT!{struct WSAQUERYSET2A {
+ dwSize: ::DWORD,
+ lpszServiceInstanceName: ::LPSTR,
+ lpVersion: LPWSAVERSION,
+ lpszComment: ::LPSTR,
+ dwNameSpace: ::DWORD,
+ lpNSProviderId: ::LPGUID,
+ lpszContext: ::LPSTR,
+ dwNumberOfProtocols: ::DWORD,
+ lpafpProtocols: LPAFPROTOCOLS,
+ lpszQueryString: ::LPSTR,
+ dwNumberOfCsAddrs: ::DWORD,
+ lpcsaBuffer: ::LPCSADDR_INFO,
+ dwOutputFlags: ::DWORD,
+ lpBlob: ::LPBLOB,
+}}
+pub type PWSAQUERYSET2A = *mut WSAQUERYSET2A;
+pub type LPWSAQUERYSET2A = *mut WSAQUERYSET2A;
+STRUCT!{struct WSAQUERYSET2W {
+ dwSize: ::DWORD,
+ lpszServiceInstanceName: ::LPWSTR,
+ lpVersion: LPWSAVERSION,
+ lpszComment: ::LPWSTR,
+ dwNameSpace: ::DWORD,
+ lpNSProviderId: ::LPGUID,
+ lpszContext: ::LPWSTR,
+ dwNumberOfProtocols: ::DWORD,
+ lpafpProtocols: LPAFPROTOCOLS,
+ lpszQueryString: ::LPWSTR,
+ dwNumberOfCsAddrs: ::DWORD,
+ lpcsaBuffer: ::LPCSADDR_INFO,
+ dwOutputFlags: ::DWORD,
+ lpBlob: ::LPBLOB,
+}}
+pub type PWSAQUERYSET2W = *mut WSAQUERYSET2W;
+pub type LPWSAQUERYSET2W = *mut WSAQUERYSET2W;
+ENUM!{enum WSAESETSERVICEOP {
+ RNRSERVICE_REGISTER = 0,
+ RNRSERVICE_DEREGISTER,
+ RNRSERVICE_DELETE,
+}}
+pub type PWSAESETSERVICEOP = *mut WSAESETSERVICEOP;
+pub type LPWSAESETSERVICEOP = *mut WSAESETSERVICEOP;
+STRUCT!{struct WSANSCLASSINFOA {
+ lpszName: ::LPSTR,
+ dwNameSpace: ::DWORD,
+ dwValueType: ::DWORD,
+ dwValueSize: ::DWORD,
+ lpValue: ::LPVOID,
+}}
+pub type PWSANSCLASSINFOA = *mut WSANSCLASSINFOA;
+pub type LPWSANSCLASSINFOA = *mut WSANSCLASSINFOA;
+STRUCT!{struct WSANSCLASSINFOW {
+ lpszName: ::LPWSTR,
+ dwNameSpace: ::DWORD,
+ dwValueType: ::DWORD,
+ dwValueSize: ::DWORD,
+ lpValue: ::LPVOID,
+}}
+pub type PWSANSCLASSINFOW = *mut WSANSCLASSINFOW;
+pub type LPWSANSCLASSINFOW = *mut WSANSCLASSINFOW;
+STRUCT!{struct WSASERVICECLASSINFOA {
+ lpServiceClassId: ::LPGUID,
+ lpszServiceClassName: ::LPSTR,
+ dwCount: ::DWORD,
+ lpClassInfos: LPWSANSCLASSINFOA,
+}}
+pub type PWSASERVICECLASSINFOA = *mut WSASERVICECLASSINFOA;
+pub type LPWSASERVICECLASSINFOA = *mut WSASERVICECLASSINFOA;
+STRUCT!{struct WSASERVICECLASSINFOW {
+ lpServiceClassId: ::LPGUID,
+ lpszServiceClassName: ::LPWSTR,
+ dwCount: ::DWORD,
+ lpClassInfos: LPWSANSCLASSINFOW,
+}}
+pub type PWSASERVICECLASSINFOW = *mut WSASERVICECLASSINFOW;
+pub type LPWSASERVICECLASSINFOW = *mut WSASERVICECLASSINFOW;
+STRUCT!{struct WSANAMESPACE_INFOA {
+ NSProviderId: ::GUID,
+ dwNameSpace: ::DWORD,
+ fActive: ::BOOL,
+ dwVersion: ::DWORD,
+ lpszIdentifier: ::LPSTR,
+}}
+pub type PWSANAMESPACE_INFOA = *mut WSANAMESPACE_INFOA;
+pub type LPWSANAMESPACE_INFOA = *mut WSANAMESPACE_INFOA;
+STRUCT!{struct WSANAMESPACE_INFOW {
+ NSProviderId: ::GUID,
+ dwNameSpace: ::DWORD,
+ fActive: ::BOOL,
+ dwVersion: ::DWORD,
+ lpszIdentifier: ::LPWSTR,
+}}
+pub type PWSANAMESPACE_INFOW = *mut WSANAMESPACE_INFOW;
+pub type LPWSANAMESPACE_INFOW = *mut WSANAMESPACE_INFOW;
+STRUCT!{struct WSANAMESPACE_INFOEXA {
+ NSProviderId: ::GUID,
+ dwNameSpace: ::DWORD,
+ fActive: ::BOOL,
+ dwVersion: ::DWORD,
+ lpszIdentifier: ::LPSTR,
+ ProviderSpecific: ::BLOB,
+}}
+pub type PWSANAMESPACE_INFOEXA = *mut WSANAMESPACE_INFOEXA;
+pub type LPWSANAMESPACE_INFOEXA = *mut WSANAMESPACE_INFOEXA;
+STRUCT!{struct WSANAMESPACE_INFOEXW {
+ NSProviderId: ::GUID,
+ dwNameSpace: ::DWORD,
+ fActive: ::BOOL,
+ dwVersion: ::DWORD,
+ lpszIdentifier: ::LPWSTR,
+ ProviderSpecific: ::BLOB,
+}}
+pub type PWSANAMESPACE_INFOEXW = *mut WSANAMESPACE_INFOEXW;
+pub type LPWSANAMESPACE_INFOEXW = *mut WSANAMESPACE_INFOEXW;
+pub const POLLRDNORM: ::SHORT = 0x0100;
+pub const POLLRDBAND: ::SHORT = 0x0200;
+pub const POLLIN: ::SHORT = POLLRDNORM | POLLRDBAND;
+pub const POLLPRI: ::SHORT = 0x0400;
+pub const POLLWRNORM: ::SHORT = 0x0010;
+pub const POLLOUT: ::SHORT = POLLWRNORM;
+pub const POLLWRBAND: ::SHORT = 0x0020;
+pub const POLLERR: ::SHORT = 0x0001;
+pub const POLLHUP: ::SHORT = 0x0002;
+pub const POLLNVAL: ::SHORT = 0x0004;
+STRUCT!{struct WSAPOLLFD {
+ fd: ::SOCKET,
+ events: ::SHORT,
+ revents: ::SHORT,
+}}
+pub type PWSAPOLLFD = *mut WSAPOLLFD;
+pub type LPWSAPOLLFD = *mut WSAPOLLFD;
+pub const FIONBIO: ::c_ulong = 0x8004667e;
diff --git a/third_party/rust/winapi-0.2.8/src/winspool.rs b/third_party/rust/winapi-0.2.8/src/winspool.rs
new file mode 100644
index 0000000000..eec339cc15
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winspool.rs
@@ -0,0 +1,29 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Winspool header file
+STRUCT!{struct PRINTER_DEFAULTSA {
+ pDataType: ::LPSTR,
+ pDevMode: ::LPDEVMODEA,
+ DesiredAccess: ::ACCESS_MASK,
+}}
+pub type PPRINTER_DEFAULTSA = *mut PRINTER_DEFAULTSA;
+pub type LPPRINTER_DEFAULTSA = *mut PRINTER_DEFAULTSA;
+STRUCT!{struct PRINTER_DEFAULTSW {
+ pDataType: ::LPWSTR,
+ pDevMode: ::LPDEVMODEW,
+ DesiredAccess: ::ACCESS_MASK,
+}}
+pub type PPRINTER_DEFAULTSW = *mut PRINTER_DEFAULTSW;
+pub type LPPRINTER_DEFAULTSW = *mut PRINTER_DEFAULTSW;
+STRUCT!{struct PRINTER_OPTIONSA {
+ cbSize: ::UINT,
+ dwFlags: ::DWORD,
+}}
+pub type PPRINTER_OPTIONSA = *mut PRINTER_OPTIONSA;
+pub type LPPRINTER_OPTIONSA = *mut PRINTER_OPTIONSA;
+STRUCT!{struct PRINTER_OPTIONSW {
+ cbSize: ::UINT,
+ dwFlags: ::DWORD,
+}}
+pub type PPRINTER_OPTIONSW = *mut PRINTER_OPTIONSW;
+pub type LPPRINTER_OPTIONSW = *mut PRINTER_OPTIONSW;
diff --git a/third_party/rust/winapi-0.2.8/src/winstring.rs b/third_party/rust/winapi-0.2.8/src/winstring.rs
new file mode 100644
index 0000000000..74053d4e85
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winstring.rs
@@ -0,0 +1,3 @@
+pub type PINSPECT_HSTRING_CALLBACK = Option<unsafe extern "system" fn(
+ *const ::VOID, ::UINT_PTR, ::UINT32, *mut ::BYTE,
+) -> ::HRESULT>;
diff --git a/third_party/rust/winapi-0.2.8/src/winsvc.rs b/third_party/rust/winapi-0.2.8/src/winsvc.rs
new file mode 100644
index 0000000000..93513668a8
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winsvc.rs
@@ -0,0 +1,200 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! Header file for the Service Control Manager
+//80
+pub const SERVICE_NO_CHANGE: ::DWORD = 0xffffffff;
+pub const SERVICE_ACTIVE: ::DWORD = 0x00000001;
+pub const SERVICE_INACTIVE: ::DWORD = 0x00000002;
+pub const SERVICE_STATE_ALL: ::DWORD = SERVICE_ACTIVE | SERVICE_INACTIVE;
+pub const SERVICE_CONTROL_STOP: ::DWORD = 0x00000001;
+pub const SERVICE_CONTROL_PAUSE: ::DWORD = 0x00000002;
+pub const SERVICE_CONTROL_CONTINUE: ::DWORD = 0x00000003;
+pub const SERVICE_CONTROL_INTERROGATE: ::DWORD = 0x00000004;
+pub const SERVICE_CONTROL_SHUTDOWN: ::DWORD = 0x00000005;
+pub const SERVICE_CONTROL_PARAMCHANGE: ::DWORD = 0x00000006;
+pub const SERVICE_CONTROL_NETBINDADD: ::DWORD = 0x00000007;
+pub const SERVICE_CONTROL_NETBINDREMOVE: ::DWORD = 0x00000008;
+pub const SERVICE_CONTROL_NETBINDENABLE: ::DWORD = 0x00000009;
+pub const SERVICE_CONTROL_NETBINDDISABLE: ::DWORD = 0x0000000A;
+pub const SERVICE_CONTROL_DEVICEEVENT: ::DWORD = 0x0000000B;
+pub const SERVICE_CONTROL_HARDWAREPROFILECHANGE: ::DWORD = 0x0000000C;
+pub const SERVICE_CONTROL_POWEREVENT: ::DWORD = 0x0000000D;
+pub const SERVICE_CONTROL_SESSIONCHANGE: ::DWORD = 0x0000000E;
+pub const SERVICE_CONTROL_PRESHUTDOWN: ::DWORD = 0x0000000F;
+pub const SERVICE_CONTROL_TIMECHANGE: ::DWORD = 0x00000010;
+pub const SERVICE_CONTROL_TRIGGEREVENT: ::DWORD = 0x00000020;
+pub const SERVICE_STOPPED: ::DWORD = 0x00000001;
+pub const SERVICE_START_PENDING: ::DWORD = 0x00000002;
+pub const SERVICE_STOP_PENDING: ::DWORD = 0x00000003;
+pub const SERVICE_RUNNING: ::DWORD = 0x00000004;
+pub const SERVICE_CONTINUE_PENDING: ::DWORD = 0x00000005;
+pub const SERVICE_PAUSE_PENDING: ::DWORD = 0x00000006;
+pub const SERVICE_PAUSED: ::DWORD = 0x00000007;
+pub const SERVICE_ACCEPT_STOP: ::DWORD = 0x00000001;
+pub const SERVICE_ACCEPT_PAUSE_CONTINUE: ::DWORD = 0x00000002;
+pub const SERVICE_ACCEPT_SHUTDOWN: ::DWORD = 0x00000004;
+pub const SERVICE_ACCEPT_PARAMCHANGE: ::DWORD = 0x00000008;
+pub const SERVICE_ACCEPT_NETBINDCHANGE: ::DWORD = 0x00000010;
+pub const SERVICE_ACCEPT_HARDWAREPROFILECHANGE: ::DWORD = 0x00000020;
+pub const SERVICE_ACCEPT_POWEREVENT: ::DWORD = 0x00000040;
+pub const SERVICE_ACCEPT_SESSIONCHANGE: ::DWORD = 0x00000080;
+pub const SERVICE_ACCEPT_PRESHUTDOWN: ::DWORD = 0x00000100;
+pub const SERVICE_ACCEPT_TIMECHANGE: ::DWORD = 0x00000200;
+pub const SERVICE_ACCEPT_TRIGGEREVENT: ::DWORD = 0x00000400;
+pub const SC_MANAGER_CONNECT: ::DWORD = 0x0001;
+pub const SC_MANAGER_CREATE_SERVICE: ::DWORD = 0x0002;
+pub const SC_MANAGER_ENUMERATE_SERVICE: ::DWORD = 0x0004;
+pub const SC_MANAGER_LOCK: ::DWORD = 0x0008;
+pub const SC_MANAGER_QUERY_LOCK_STATUS: ::DWORD = 0x0010;
+pub const SC_MANAGER_MODIFY_BOOT_CONFIG: ::DWORD = 0x0020;
+pub const SC_MANAGER_ALL_ACCESS: ::DWORD = ::STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT
+ | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK
+ | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG;
+pub const SERVICE_QUERY_CONFIG: ::DWORD = 0x0001;
+pub const SERVICE_CHANGE_CONFIG: ::DWORD = 0x0002;
+pub const SERVICE_QUERY_STATUS: ::DWORD = 0x0004;
+pub const SERVICE_ENUMERATE_DEPENDENTS: ::DWORD = 0x0008;
+pub const SERVICE_START: ::DWORD = 0x0010;
+pub const SERVICE_STOP: ::DWORD = 0x0020;
+pub const SERVICE_PAUSE_CONTINUE: ::DWORD = 0x0040;
+pub const SERVICE_INTERROGATE: ::DWORD = 0x0080;
+pub const SERVICE_USER_DEFINED_CONTROL: ::DWORD = 0x0100;
+pub const SERVICE_ALL_ACCESS: ::DWORD = ::STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG
+ | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START
+ | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL;
+pub const SERVICE_RUNS_IN_SYSTEM_PROCESS: ::DWORD = 0x00000001;
+pub const SERVICE_CONFIG_DESCRIPTION: ::DWORD = 1;
+pub const SERVICE_CONFIG_FAILURE_ACTIONS: ::DWORD = 2;
+pub const SERVICE_CONFIG_DELAYED_AUTO_START_INFO: ::DWORD = 3;
+pub const SERVICE_CONFIG_FAILURE_ACTIONS_FLAG: ::DWORD = 4;
+pub const SERVICE_CONFIG_SERVICE_SID_INFO: ::DWORD = 5;
+pub const SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO: ::DWORD = 6;
+pub const SERVICE_CONFIG_PRESHUTDOWN_INFO: ::DWORD = 7;
+pub const SERVICE_CONFIG_TRIGGER_INFO: ::DWORD = 8;
+pub const SERVICE_CONFIG_PREFERRED_NODE: ::DWORD = 9;
+pub const SERVICE_CONFIG_LAUNCH_PROTECTED: ::DWORD = 12;
+pub const SERVICE_NOTIFY_STATUS_CHANGE_1: ::DWORD = 1;
+pub const SERVICE_NOTIFY_STATUS_CHANGE_2: ::DWORD = 2;
+pub const SERVICE_NOTIFY_STATUS_CHANGE: ::DWORD = SERVICE_NOTIFY_STATUS_CHANGE_2;
+pub const SERVICE_NOTIFY_STOPPED: ::DWORD = 0x00000001;
+pub const SERVICE_NOTIFY_START_PENDING: ::DWORD = 0x00000002;
+pub const SERVICE_NOTIFY_STOP_PENDING: ::DWORD = 0x00000004;
+pub const SERVICE_NOTIFY_RUNNING: ::DWORD = 0x00000008;
+pub const SERVICE_NOTIFY_CONTINUE_PENDING: ::DWORD = 0x00000010;
+pub const SERVICE_NOTIFY_PAUSE_PENDING: ::DWORD = 0x00000020;
+pub const SERVICE_NOTIFY_PAUSED: ::DWORD = 0x00000040;
+pub const SERVICE_NOTIFY_CREATED: ::DWORD = 0x00000080;
+pub const SERVICE_NOTIFY_DELETED: ::DWORD = 0x00000100;
+pub const SERVICE_NOTIFY_DELETE_PENDING: ::DWORD = 0x00000200;
+pub const SERVICE_STOP_REASON_FLAG_MIN: ::DWORD = 0x00000000;
+pub const SERVICE_STOP_REASON_FLAG_UNPLANNED: ::DWORD = 0x10000000;
+pub const SERVICE_STOP_REASON_FLAG_CUSTOM: ::DWORD = 0x20000000;
+pub const SERVICE_STOP_REASON_FLAG_PLANNED: ::DWORD = 0x40000000;
+pub const SERVICE_STOP_REASON_FLAG_MAX: ::DWORD = 0x80000000;
+pub const SERVICE_STOP_REASON_MAJOR_MIN: ::DWORD = 0x00000000;
+pub const SERVICE_STOP_REASON_MAJOR_OTHER: ::DWORD = 0x00010000;
+pub const SERVICE_STOP_REASON_MAJOR_HARDWARE: ::DWORD = 0x00020000;
+pub const SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM: ::DWORD = 0x00030000;
+pub const SERVICE_STOP_REASON_MAJOR_SOFTWARE: ::DWORD = 0x00040000;
+pub const SERVICE_STOP_REASON_MAJOR_APPLICATION: ::DWORD = 0x00050000;
+pub const SERVICE_STOP_REASON_MAJOR_NONE: ::DWORD = 0x00060000;
+pub const SERVICE_STOP_REASON_MAJOR_MAX: ::DWORD = 0x00070000;
+pub const SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM: ::DWORD = 0x00400000;
+pub const SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM: ::DWORD = 0x00ff0000;
+pub const SERVICE_STOP_REASON_MINOR_MIN: ::DWORD = 0x00000000;
+pub const SERVICE_STOP_REASON_MINOR_OTHER: ::DWORD = 0x00000001;
+pub const SERVICE_STOP_REASON_MINOR_MAINTENANCE: ::DWORD = 0x00000002;
+pub const SERVICE_STOP_REASON_MINOR_INSTALLATION: ::DWORD = 0x00000003;
+pub const SERVICE_STOP_REASON_MINOR_UPGRADE: ::DWORD = 0x00000004;
+pub const SERVICE_STOP_REASON_MINOR_RECONFIG: ::DWORD = 0x00000005;
+pub const SERVICE_STOP_REASON_MINOR_HUNG: ::DWORD = 0x00000006;
+pub const SERVICE_STOP_REASON_MINOR_UNSTABLE: ::DWORD = 0x00000007;
+pub const SERVICE_STOP_REASON_MINOR_DISK: ::DWORD = 0x00000008;
+pub const SERVICE_STOP_REASON_MINOR_NETWORKCARD: ::DWORD = 0x00000009;
+pub const SERVICE_STOP_REASON_MINOR_ENVIRONMENT: ::DWORD = 0x0000000a;
+pub const SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER: ::DWORD = 0x0000000b;
+pub const SERVICE_STOP_REASON_MINOR_OTHERDRIVER: ::DWORD = 0x0000000c;
+pub const SERVICE_STOP_REASON_MINOR_SERVICEPACK: ::DWORD = 0x0000000d;
+pub const SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE: ::DWORD = 0x0000000e;
+pub const SERVICE_STOP_REASON_MINOR_SECURITYFIX: ::DWORD = 0x0000000f;
+pub const SERVICE_STOP_REASON_MINOR_SECURITY: ::DWORD = 0x00000010;
+pub const SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY: ::DWORD = 0x00000011;
+pub const SERVICE_STOP_REASON_MINOR_WMI: ::DWORD = 0x00000012;
+pub const SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL: ::DWORD = 0x00000013;
+pub const SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL: ::DWORD = 0x00000014;
+pub const SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL: ::DWORD = 0x00000015;
+pub const SERVICE_STOP_REASON_MINOR_MMC: ::DWORD = 0x00000016;
+pub const SERVICE_STOP_REASON_MINOR_NONE: ::DWORD = 0x00000017;
+pub const SERVICE_STOP_REASON_MINOR_MAX: ::DWORD = 0x00000018;
+pub const SERVICE_STOP_REASON_MINOR_MIN_CUSTOM: ::DWORD = 0x00000100;
+pub const SERVICE_STOP_REASON_MINOR_MAX_CUSTOM: ::DWORD = 0x0000FFFF;
+pub const SERVICE_CONTROL_STATUS_REASON_INFO: ::DWORD = 1;
+pub const SERVICE_SID_TYPE_NONE: ::DWORD = 0x00000000;
+pub const SERVICE_SID_TYPE_UNRESTRICTED: ::DWORD = 0x00000001;
+pub const SERVICE_SID_TYPE_RESTRICTED: ::DWORD = 0x00000002 | SERVICE_SID_TYPE_UNRESTRICTED;
+pub const SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL: ::DWORD = 1;
+pub const SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY: ::DWORD = 2;
+pub const SERVICE_TRIGGER_TYPE_DOMAIN_JOIN: ::DWORD = 3;
+pub const SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT: ::DWORD = 4;
+pub const SERVICE_TRIGGER_TYPE_GROUP_POLICY: ::DWORD = 5;
+pub const SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT: ::DWORD = 6;
+pub const SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE: ::DWORD = 7;
+pub const SERVICE_TRIGGER_TYPE_CUSTOM: ::DWORD = 20;
+pub const SERVICE_TRIGGER_DATA_TYPE_BINARY: ::DWORD = 1;
+pub const SERVICE_TRIGGER_DATA_TYPE_STRING: ::DWORD = 2;
+pub const SERVICE_TRIGGER_DATA_TYPE_LEVEL: ::DWORD = 3;
+pub const SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY: ::DWORD = 4;
+pub const SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL: ::DWORD = 5;
+pub const SERVICE_START_REASON_DEMAND: ::DWORD = 0x00000001;
+pub const SERVICE_START_REASON_AUTO: ::DWORD = 0x00000002;
+pub const SERVICE_START_REASON_TRIGGER: ::DWORD = 0x00000004;
+pub const SERVICE_START_REASON_RESTART_ON_FAILURE: ::DWORD = 0x00000008;
+pub const SERVICE_START_REASON_DELAYEDAUTO: ::DWORD = 0x00000010;
+pub const SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON: ::DWORD = 1;
+pub const SERVICE_LAUNCH_PROTECTED_NONE: ::DWORD = 0;
+pub const SERVICE_LAUNCH_PROTECTED_WINDOWS: ::DWORD = 1;
+pub const SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT: ::DWORD = 2;
+pub const SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT: ::DWORD = 3;
+//678
+DECLARE_HANDLE!(SC_HANDLE, SC_HANDLE__);
+pub type LPSC_HANDLE = *mut SC_HANDLE;
+DECLARE_HANDLE!(SERVICE_STATUS_HANDLE, SERVICE_STATUS_HANDLE__);
+ENUM!{enum SC_STATUS_TYPE {
+ SC_STATUS_PROCESS_INFO = 0,
+}}
+ENUM!{enum _SC_ENUM_TYPE {
+ SC_ENUM_PROCESS_INFO = 0,
+}}
+//700
+STRUCT!{struct SERVICE_STATUS {
+ dwServiceType: ::DWORD,
+ dwCurrentState: ::DWORD,
+ dwControlsAccepted: ::DWORD,
+ dwWin32ExitCode: ::DWORD,
+ dwServiceSpecificExitCode: ::DWORD,
+ dwCheckPoint: ::DWORD,
+ dwWaitHint: ::DWORD,
+}}
+pub type LPSERVICE_STATUS = *mut SERVICE_STATUS;
+//848
+pub type LPSERVICE_MAIN_FUNCTIONW = Option<unsafe extern "system" fn(
+ dwNumServicesArgs: ::DWORD, lpServiceArgVectors: *mut ::LPWSTR,
+)>;
+pub type LPSERVICE_MAIN_FUNCTIONA = Option<unsafe extern "system" fn(
+ dwNumServicesArgs: ::DWORD, lpServiceArgVectors: *mut ::LPSTR,
+)>;
+STRUCT!{nodebug struct SERVICE_TABLE_ENTRYA {
+ lpServiceName: ::LPCSTR,
+ lpServiceProc: LPSERVICE_MAIN_FUNCTIONA,
+}}
+pub type LPSERVICE_TABLE_ENTRYA = *mut SERVICE_TABLE_ENTRYA;
+STRUCT!{nodebug struct SERVICE_TABLE_ENTRYW {
+ lpServiceName: ::LPCWSTR,
+ lpServiceProc: LPSERVICE_MAIN_FUNCTIONW,
+}}
+pub type LPSERVICE_TABLE_ENTRYW = *mut SERVICE_TABLE_ENTRYW;
+//900
+pub type LPHANDLER_FUNCTION = Option<unsafe extern "system" fn(dwControl: ::DWORD)>;
+pub type LPHANDLER_FUNCTION_EX = Option<unsafe extern "system" fn(
+ dwControl: ::DWORD, dwEventType: ::DWORD, lpEventData: ::LPVOID, lpContext: ::LPVOID,
+) -> ::DWORD>;
diff --git a/third_party/rust/winapi-0.2.8/src/winusb.rs b/third_party/rust/winapi-0.2.8/src/winusb.rs
new file mode 100644
index 0000000000..2fbb619975
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winusb.rs
@@ -0,0 +1,33 @@
+// Copyright © 2016, bitbegin
+// Licensed under the MIT License <LICENSE.md>
+//! FFI bindings to winusb.
+pub type WINUSB_INTERFACE_HANDLE = ::PVOID;
+pub type PWINUSB_INTERFACE_HANDLE = *mut ::PVOID;
+pub type WINUSB_ISOCH_BUFFER_HANDLE = ::PVOID;
+pub type PWINUSB_ISOCH_BUFFER_HANDLE = *mut ::PVOID;
+STRUCT!{#[repr(packed)] struct WINUSB_SETUP_PACKET {
+ RequestType: ::UCHAR,
+ Request: ::UCHAR,
+ Value: ::USHORT,
+ Index: ::USHORT,
+ Length: ::USHORT,
+}}
+pub type PWINUSB_SETUP_PACKET = *mut WINUSB_SETUP_PACKET;
+
+STRUCT!{struct USB_INTERFACE_DESCRIPTOR {
+ bLength: ::UCHAR,
+ bDescriptorType: ::UCHAR,
+ bInterfaceNumber: ::UCHAR,
+ bAlternateSetting: ::UCHAR,
+ bNumEndpoints: ::UCHAR,
+ bInterfaceClass: ::UCHAR,
+ bInterfaceSubClass: ::UCHAR,
+ bInterfaceProtocol: ::UCHAR,
+ iInterface: ::UCHAR,
+}}
+pub type PUSB_INTERFACE_DESCRIPTOR = *mut USB_INTERFACE_DESCRIPTOR;
+#[test]
+fn test_USB_INTERFACE_DESCRIPTOR_size() {
+ use std::mem::size_of;
+ assert_eq!(size_of::<USB_INTERFACE_DESCRIPTOR>(), 9)
+}
diff --git a/third_party/rust/winapi-0.2.8/src/winusbio.rs b/third_party/rust/winapi-0.2.8/src/winusbio.rs
new file mode 100644
index 0000000000..3dedf2265f
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winusbio.rs
@@ -0,0 +1,18 @@
+// Copyright © 2016, bitbegin
+// Licensed under the MIT License <LICENSE.md>
+//! USBIO Definitions.
+STRUCT!{struct WINUSB_PIPE_INFORMATION {
+ PipeType: ::USBD_PIPE_TYPE,
+ PipeId: ::UCHAR,
+ MaximumPacketSize: ::USHORT,
+ Interval: ::UCHAR,
+}}
+pub type PWINUSB_PIPE_INFORMATION = *mut WINUSB_PIPE_INFORMATION;
+STRUCT!{struct WINUSB_PIPE_INFORMATION_EX {
+ PipeType: ::USBD_PIPE_TYPE,
+ PipeId: ::UCHAR,
+ MaximumPacketSize: ::USHORT,
+ Interval: ::UCHAR,
+ MaximumBytesPerInterval: ::ULONG,
+}}
+pub type PWINUSB_PIPE_INFORMATION_EX = *mut WINUSB_PIPE_INFORMATION_EX;
diff --git a/third_party/rust/winapi-0.2.8/src/winuser.rs b/third_party/rust/winapi-0.2.8/src/winuser.rs
new file mode 100644
index 0000000000..5769489112
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/winuser.rs
@@ -0,0 +1,2334 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! USER procedure declarations, constant definitions and macros
+
+// Edit Control Styles
+//
+pub const ES_LEFT: ::DWORD = 0x0000;
+pub const ES_CENTER: ::DWORD = 0x0001;
+pub const ES_RIGHT: ::DWORD = 0x0002;
+pub const ES_MULTILINE: ::DWORD = 0x0004;
+pub const ES_UPPERCASE: ::DWORD = 0x0008;
+pub const ES_LOWERCASE: ::DWORD = 0x0010;
+pub const ES_PASSWORD: ::DWORD = 0x0020;
+pub const ES_AUTOVSCROLL: ::DWORD = 0x0040;
+pub const ES_AUTOHSCROLL: ::DWORD = 0x0080;
+pub const ES_NOHIDESEL: ::DWORD = 0x0100;
+pub const ES_OEMCONVERT: ::DWORD = 0x0400;
+pub const ES_READONLY: ::DWORD = 0x0800;
+pub const ES_WANTRETURN: ::DWORD = 0x1000;
+pub const ES_NUMBER: ::DWORD = 0x2000;
+
+// Edit Control Notification Codes
+//
+pub const EN_SETFOCUS: ::WORD = 0x0100;
+pub const EN_KILLFOCUS: ::WORD = 0x0200;
+pub const EN_CHANGE: ::WORD = 0x0300;
+pub const EN_UPDATE: ::WORD = 0x0400;
+pub const EN_ERRSPACE: ::WORD = 0x0500;
+pub const EN_MAXTEXT: ::WORD = 0x0501;
+pub const EN_HSCROLL: ::WORD = 0x0601;
+pub const EN_VSCROLL: ::WORD = 0x0602;
+
+pub const EN_ALIGN_LTR_EC: ::WORD = 0x0700;
+pub const EN_ALIGN_RTL_EC: ::WORD = 0x0701;
+
+// Edit control EM_SETMARGIN parameters
+pub const EC_LEFTMARGIN: ::WORD = 0x0001;
+pub const EC_RIGHTMARGIN: ::WORD = 0x0002;
+pub const EC_USEFONTINFO: ::WORD = 0xffff;
+
+// wParam of EM_GET/SETIMESTATUS
+pub const EMSIS_COMPOSITIONSTRING: ::WORD = 0x0001;
+
+// lParam for EMSIS_COMPOSITIONSTRING
+pub const EIMES_GETCOMPSTRATONCE: ::WORD = 0x0001;
+pub const EIMES_CANCELCOMPSTRINFOCUS: ::WORD = 0x0002;
+pub const EIMES_COMPLETECOMPSTRKILLFOCUS: ::WORD = 0x0004;
+
+// Edit Control Messages
+//
+pub const EM_GETSEL: ::WORD = 0x00B0;
+pub const EM_SETSEL: ::WORD = 0x00B1;
+pub const EM_GETRECT: ::WORD = 0x00B2;
+pub const EM_SETRECT: ::WORD = 0x00B3;
+pub const EM_SETRECTNP: ::WORD = 0x00B4;
+pub const EM_SCROLL: ::WORD = 0x00B5;
+pub const EM_LINESCROLL: ::WORD = 0x00B6;
+pub const EM_SCROLLCARET: ::WORD = 0x00B7;
+pub const EM_GETMODIFY: ::WORD = 0x00B8;
+pub const EM_SETMODIFY: ::WORD = 0x00B9;
+pub const EM_GETLINECOUNT: ::WORD = 0x00BA;
+pub const EM_LINEINDEX: ::WORD = 0x00BB;
+pub const EM_SETHANDLE: ::WORD = 0x00BC;
+pub const EM_GETHANDLE: ::WORD = 0x00BD;
+pub const EM_GETTHUMB: ::WORD = 0x00BE;
+pub const EM_LINELENGTH: ::WORD = 0x00C1;
+pub const EM_REPLACESEL: ::WORD = 0x00C2;
+pub const EM_GETLINE: ::WORD = 0x00C4;
+pub const EM_LIMITTEXT: ::WORD = 0x00C5;
+pub const EM_CANUNDO: ::WORD = 0x00C6;
+pub const EM_UNDO: ::WORD = 0x00C7;
+pub const EM_FMTLINES: ::WORD = 0x00C8;
+pub const EM_LINEFROMCHAR: ::WORD = 0x00C9;
+pub const EM_SETTABSTOPS: ::WORD = 0x00CB;
+pub const EM_SETPASSWORDCHAR: ::WORD = 0x00CC;
+pub const EM_EMPTYUNDOBUFFER: ::WORD = 0x00CD;
+pub const EM_GETFIRSTVISIBLELINE: ::WORD = 0x00CE;
+pub const EM_SETREADONLY: ::WORD = 0x00CF;
+pub const EM_SETWORDBREAKPROC: ::WORD = 0x00D0;
+pub const EM_GETWORDBREAKPROC: ::WORD = 0x00D1;
+pub const EM_GETPASSWORDCHAR: ::WORD = 0x00D2;
+
+pub const EM_SETMARGINS: ::WORD = 0x00D3;
+pub const EM_GETMARGINS: ::WORD = 0x00D4;
+pub const EM_SETLIMITTEXT: ::WORD = EM_LIMITTEXT;
+pub const EM_GETLIMITTEXT: ::WORD = 0x00D5;
+pub const EM_POSFROMCHAR: ::WORD = 0x00D6;
+pub const EM_CHARFROMPOS: ::WORD = 0x00D7;
+
+pub const EM_SETIMESTATUS: ::WORD = 0x00D8;
+pub const EM_GETIMESTATUS: ::WORD = 0x00D9;
+
+// EDITWORDBREAKPROC code values
+//
+pub const WB_LEFT: ::WORD = 0;
+pub const WB_RIGHT: ::WORD = 1;
+pub const WB_ISDELIMITER: ::WORD = 2;
+
+pub const BN_CLICKED: ::WORD = 0;
+pub const BN_PAINT: ::WORD = 1;
+pub const BN_HILITE: ::WORD = 2;
+pub const BN_UNHILITE: ::WORD = 3;
+pub const BN_DISABLE: ::WORD = 4;
+pub const BN_DOUBLECLICKED: ::WORD = 5;
+pub const BN_PUSHED: ::WORD = BN_HILITE;
+pub const BN_UNPUSHED: ::WORD = BN_UNHILITE;
+pub const BN_DBLCLK: ::WORD = BN_DOUBLECLICKED;
+pub const BN_SETFOCUS: ::WORD = 6;
+pub const BN_KILLFOCUS: ::WORD = 7;
+pub const BS_PUSHBUTTON: ::DWORD = 0x00000000;
+pub const BS_DEFPUSHBUTTON: ::DWORD = 0x00000001;
+pub const BS_CHECKBOX: ::DWORD = 0x00000002;
+pub const BS_AUTOCHECKBOX: ::DWORD = 0x00000003;
+pub const BS_RADIOBUTTON: ::DWORD = 0x00000004;
+pub const BS_3STATE: ::DWORD = 0x00000005;
+pub const BS_AUTO3STATE: ::DWORD = 0x00000006;
+pub const BS_GROUPBOX: ::DWORD = 0x00000007;
+pub const BS_USERBUTTON: ::DWORD = 0x00000008;
+pub const BS_AUTORADIOBUTTON: ::DWORD = 0x00000009;
+pub const BS_PUSHBOX: ::DWORD = 0x0000000A;
+pub const BS_OWNERDRAW: ::DWORD = 0x0000000B;
+pub const BS_TYPEMASK: ::DWORD = 0x0000000F;
+pub const BS_LEFTTEXT: ::DWORD = 0x00000020;
+pub const BS_TEXT: ::DWORD = 0x00000000;
+pub const BS_ICON: ::DWORD = 0x00000040;
+pub const BS_BITMAP: ::DWORD = 0x00000080;
+pub const BS_LEFT: ::DWORD = 0x00000100;
+pub const BS_RIGHT: ::DWORD = 0x00000200;
+pub const BS_CENTER: ::DWORD = 0x00000300;
+pub const BS_TOP: ::DWORD = 0x00000400;
+pub const BS_BOTTOM: ::DWORD = 0x00000800;
+pub const BS_VCENTER: ::DWORD = 0x00000C00;
+pub const BS_PUSHLIKE: ::DWORD = 0x00001000;
+pub const BS_MULTILINE: ::DWORD = 0x00002000;
+pub const BS_NOTIFY: ::DWORD = 0x00004000;
+pub const BS_FLAT: ::DWORD = 0x00008000;
+pub const BS_RIGHTBUTTON: ::DWORD = BS_LEFTTEXT;
+pub const CCHILDREN_SCROLLBAR: usize = 5;
+pub const CDS_UPDATEREGISTRY: ::DWORD = 0x00000001;
+pub const CDS_TEST: ::DWORD = 0x00000002;
+pub const CDS_FULLSCREEN: ::DWORD = 0x00000004;
+pub const CDS_GLOBAL: ::DWORD = 0x00000008;
+pub const CDS_SET_PRIMARY: ::DWORD = 0x00000010;
+pub const CDS_VIDEOPARAMETERS: ::DWORD = 0x00000020;
+pub const CDS_ENABLE_UNSAFE_MODES: ::DWORD = 0x00000100;
+pub const CDS_DISABLE_UNSAFE_MODES: ::DWORD = 0x00000200;
+pub const CDS_RESET: ::DWORD = 0x40000000;
+pub const CDS_RESET_EX: ::DWORD = 0x20000000;
+pub const CDS_NORESET: ::DWORD = 0x10000000;
+pub const CF_TEXT: ::UINT = 1;
+pub const CF_BITMAP: ::UINT = 2;
+pub const CF_METAFILEPICT: ::UINT = 3;
+pub const CF_SYLK: ::UINT = 4;
+pub const CF_DIF: ::UINT = 5;
+pub const CF_TIFF: ::UINT = 6;
+pub const CF_OEMTEXT: ::UINT = 7;
+pub const CF_DIB: ::UINT = 8;
+pub const CF_PALETTE: ::UINT = 9;
+pub const CF_PENDATA: ::UINT = 10;
+pub const CF_RIFF: ::UINT = 11;
+pub const CF_WAVE: ::UINT = 12;
+pub const CF_UNICODETEXT: ::UINT = 13;
+pub const CF_ENHMETAFILE: ::UINT = 14;
+pub const CF_HDROP: ::UINT = 15;
+pub const CF_LOCALE: ::UINT = 16;
+pub const CF_DIBV5: ::UINT = 17;
+pub const CF_OWNERDISPLAY: ::UINT = 0x0080;
+pub const CF_DSPTEXT: ::UINT = 0x0081;
+pub const CF_DSPBITMAP: ::UINT = 0x0082;
+pub const CF_DSPENHMETAFILE: ::UINT = 0x008E;
+pub const CF_DSPMETAFILEPICT: ::UINT = 0x0083;
+pub const CF_PRIVATEFIRST: ::UINT = 0x0200;
+pub const CF_PRIVATELAST: ::UINT = 0x02FF;
+pub const CF_GDIOBJFIRST: ::UINT = 0x0300;
+pub const CF_GDIOBJLAST: ::UINT = 0x03FF;
+pub const CS_VREDRAW: ::DWORD = 0x0001;
+pub const CS_HREDRAW: ::DWORD = 0x0002;
+pub const CS_DBLCLKS: ::DWORD = 0x0008;
+pub const CS_OWNDC: ::DWORD = 0x0020;
+pub const CS_CLASSDC: ::DWORD = 0x0040;
+pub const CS_PARENTDC: ::DWORD = 0x0080;
+pub const CS_NOCLOSE: ::DWORD = 0x0200;
+pub const CS_SAVEBITS: ::DWORD = 0x0800;
+pub const CS_BYTEALIGNCLIENT: ::DWORD = 0x1000;
+pub const CS_BYTEALIGNWINDOW: ::DWORD = 0x2000;
+pub const CS_GLOBALCLASS: ::DWORD = 0x4000;
+pub const CS_IME: ::DWORD = 0x00010000;
+pub const CS_DROPSHADOW: ::DWORD = 0x00020000;
+pub const DFC_CAPTION: ::UINT = 1;
+pub const DFC_MENU: ::UINT = 2;
+pub const DFC_SCROLL: ::UINT = 3;
+pub const DFC_BUTTON: ::UINT = 4;
+pub const DFCS_CAPTIONCLOSE: ::UINT = 0x0000;
+pub const DFCS_CAPTIONMIN: ::UINT = 0x0001;
+pub const DFCS_CAPTIONMAX: ::UINT = 0x0002;
+pub const DFCS_CAPTIONRESTORE: ::UINT = 0x0003;
+pub const DFCS_CAPTIONHELP: ::UINT = 0x0004;
+pub const DFCS_MENUARROW: ::UINT = 0x0000;
+pub const DFCS_MENUCHECK: ::UINT = 0x0001;
+pub const DFCS_MENUBULLET: ::UINT = 0x0002;
+pub const DFCS_MENUARROWRIGHT: ::UINT = 0x0004;
+pub const DFCS_SCROLLUP: ::UINT = 0x0000;
+pub const DFCS_SCROLLDOWN: ::UINT = 0x0001;
+pub const DFCS_SCROLLLEFT: ::UINT = 0x0002;
+pub const DFCS_SCROLLRIGHT: ::UINT = 0x0003;
+pub const DFCS_SCROLLCOMBOBOX: ::UINT = 0x0005;
+pub const DFCS_SCROLLSIZEGRIP: ::UINT = 0x0008;
+pub const DFCS_SCROLLSIZEGRIPRIGHT: ::UINT = 0x0010;
+pub const DFCS_BUTTONCHECK: ::UINT = 0x0000;
+pub const DFCS_BUTTONRADIOIMAGE: ::UINT = 0x0001;
+pub const DFCS_BUTTONRADIOMASK: ::UINT = 0x0002;
+pub const DFCS_BUTTONRADIO: ::UINT = 0x0004;
+pub const DFCS_BUTTON3STATE: ::UINT = 0x0008;
+pub const DFCS_BUTTONPUSH: ::UINT = 0x0010;
+pub const DFCS_INACTIVE: ::UINT = 0x0100;
+pub const DFCS_PUSHED: ::UINT = 0x0200;
+pub const DFCS_CHECKED: ::UINT = 0x0400;
+// if WINVER >= 0x0500
+pub const DFCS_TRANSPARENT: ::UINT = 0x0800;
+pub const DFCS_HOT: ::UINT = 0x1000;
+// end if WINVER >= 0x0500
+pub const DFCS_ADJUSTRECT: ::UINT = 0x2000;
+pub const DFCS_FLAT: ::UINT = 0x4000;
+pub const DFCS_MONO: ::UINT = 0x8000;
+pub const CW_USEDEFAULT: ::c_int = 0x80000000u32 as ::c_int;
+pub const DISP_CHANGE_SUCCESSFUL: ::LONG = 0;
+pub const DISP_CHANGE_RESTART: ::LONG = 1;
+pub const DISP_CHANGE_FAILED: ::LONG = -1;
+pub const DISP_CHANGE_BADMODE: ::LONG = -2;
+pub const DISP_CHANGE_NOTUPDATED: ::LONG = -3;
+pub const DISP_CHANGE_BADFLAGS: ::LONG = -4;
+pub const DISP_CHANGE_BADPARAM: ::LONG = -5;
+pub const DISP_CHANGE_BADDUALVIEW: ::LONG = -6;
+pub const EDD_GET_DEVICE_INTERFACE_NAME: ::DWORD = 0x00000001;
+pub const ENUM_CURRENT_SETTINGS: ::DWORD = 0xFFFFFFFF;
+pub const ENUM_REGISTRY_SETTINGS: ::DWORD = 0xFFFFFFFE;
+pub const GW_HWNDFIRST: ::UINT = 0;
+pub const GW_HWNDLAST: ::UINT = 1;
+pub const GW_HWNDNEXT: ::UINT = 2;
+pub const GW_HWNDPREV: ::UINT = 3;
+pub const GW_OWNER: ::UINT = 4;
+pub const GW_CHILD: ::UINT = 5;
+pub const GW_ENABLEDPOPUP: ::UINT = 6;
+pub const GW_MAX: ::UINT = 6;
+pub const HTERROR: ::c_int = -2;
+pub const HTTRANSPARENT: ::c_int = -1;
+pub const HTNOWHERE: ::c_int = 0;
+pub const HTCLIENT: ::c_int = 1;
+pub const HTCAPTION: ::c_int = 2;
+pub const HTSYSMENU: ::c_int = 3;
+pub const HTGROWBOX: ::c_int = 4;
+pub const HTSIZE: ::c_int = HTGROWBOX;
+pub const HTMENU: ::c_int = 5;
+pub const HTHSCROLL: ::c_int = 6;
+pub const HTVSCROLL: ::c_int = 7;
+pub const HTMINBUTTON: ::c_int = 8;
+pub const HTMAXBUTTON: ::c_int = 9;
+pub const HTLEFT: ::c_int = 10;
+pub const HTRIGHT: ::c_int = 11;
+pub const HTTOP: ::c_int = 12;
+pub const HTTOPLEFT: ::c_int = 13;
+pub const HTTOPRIGHT: ::c_int = 14;
+pub const HTBOTTOM: ::c_int = 15;
+pub const HTBOTTOMLEFT: ::c_int = 16;
+pub const HTBOTTOMRIGHT: ::c_int = 17;
+pub const HTBORDER: ::c_int = 18;
+pub const HTREDUCE: ::c_int = HTMINBUTTON;
+pub const HTZOOM: ::c_int = HTMAXBUTTON;
+pub const HTSIZEFIRST: ::c_int = HTLEFT;
+pub const HTSIZELAST: ::c_int = HTBOTTOMRIGHT;
+pub const HTOBJECT: ::c_int = 19;
+pub const HTCLOSE: ::c_int = 20;
+pub const HTHELP: ::c_int = 21;
+pub const LSFW_LOCK: ::UINT = 1;
+pub const LSFW_UNLOCK: ::UINT = 2;
+pub const MDITILE_VERTICAL: ::UINT = 0x0000;
+pub const MDITILE_HORIZONTAL: ::UINT = 0x0001;
+pub const MDITILE_SKIPDISABLED: ::UINT = 0x0002;
+pub const MDITILE_ZORDER: ::UINT = 0x0004;
+pub const MB_OK: ::DWORD = 0x00000000;
+pub const MB_OKCANCEL: ::DWORD = 0x00000001;
+pub const MB_ABORTRETRYIGNORE: ::DWORD = 0x00000002;
+pub const MB_YESNOCANCEL: ::DWORD = 0x00000003;
+pub const MB_YESNO: ::DWORD = 0x00000004;
+pub const MB_RETRYCANCEL: ::DWORD = 0x00000005;
+pub const MB_CANCELTRYCONTINUE: ::DWORD = 0x00000006;
+pub const MB_ICONHAND: ::DWORD = 0x00000010;
+pub const MB_ICONQUESTION: ::DWORD = 0x00000020;
+pub const MB_ICONEXCLAMATION: ::DWORD = 0x00000030;
+pub const MB_ICONASTERISK: ::DWORD = 0x00000040;
+pub const MB_USERICON: ::DWORD = 0x00000080;
+pub const MB_ICONWARNING: ::DWORD = MB_ICONEXCLAMATION;
+pub const MB_ICONERROR: ::DWORD = MB_ICONHAND;
+pub const MB_ICONINFORMATION: ::DWORD = MB_ICONASTERISK;
+pub const MB_ICONSTOP: ::DWORD = MB_ICONHAND;
+pub const MB_DEFBUTTON1: ::DWORD = 0x00000000;
+pub const MB_DEFBUTTON2: ::DWORD = 0x00000100;
+pub const MB_DEFBUTTON3: ::DWORD = 0x00000200;
+pub const MB_DEFBUTTON4: ::DWORD = 0x00000300;
+pub const MB_APPLMODAL: ::DWORD = 0x00000000;
+pub const MB_SYSTEMMODAL: ::DWORD = 0x00001000;
+pub const MB_TASKMODAL: ::DWORD = 0x00002000;
+pub const MB_HELP: ::DWORD = 0x00004000;
+pub const MB_NOFOCUS: ::DWORD = 0x00008000;
+pub const MB_SETFOREGROUND: ::DWORD = 0x00010000;
+pub const MB_DEFAULT_DESKTOP_ONLY: ::DWORD = 0x00020000;
+pub const MB_TOPMOST: ::DWORD = 0x00040000;
+pub const MB_RIGHT: ::DWORD = 0x00080000;
+pub const MB_RTLREADING: ::DWORD = 0x00100000;
+pub const MB_SERVICE_NOTIFICATION: ::DWORD = 0x00200000;
+pub const MB_SERVICE_NOTIFICATION_NT3X: ::DWORD = 0x00040000;
+pub const MB_TYPEMASK: ::DWORD = 0x0000000F;
+pub const MB_ICONMASK: ::DWORD = 0x000000F0;
+pub const MB_DEFMASK: ::DWORD = 0x00000F00;
+pub const MB_MODEMASK: ::DWORD = 0x00003000;
+pub const MB_MISCMASK: ::DWORD = 0x0000C000;
+pub const MF_BITMAP: ::UINT = 0x00000004;
+pub const MF_CHECKED: ::UINT = 0x00000008;
+pub const MF_DISABLED: ::UINT = 0x00000002;
+pub const MF_ENABLED: ::UINT = 0x00000000;
+pub const MF_GRAYED: ::UINT = 0x00000001;
+pub const MF_MENUBARBREAK: ::UINT = 0x00000020;
+pub const MF_MENUBREAK: ::UINT = 0x00000040;
+pub const MF_OWNERDRAW: ::UINT = 0x00000100;
+pub const MF_POPUP: ::UINT = 0x00000010;
+pub const MF_SEPARATOR: ::UINT = 0x00000800;
+pub const MF_STRING: ::UINT = 0x00000000;
+pub const MF_UNCHECKED: ::UINT = 0x00000000;
+pub const SB_HORZ: ::c_int = 0;
+pub const SB_VERT: ::c_int = 1;
+pub const SB_CTL: ::c_int = 2;
+pub const SB_BOTH: ::c_int = 3;
+pub const SW_HIDE: ::c_int = 0;
+pub const SW_SHOWNORMAL: ::c_int = 1;
+pub const SW_NORMAL: ::c_int = 1;
+pub const SW_SHOWMINIMIZED: ::c_int = 2;
+pub const SW_SHOWMAXIMIZED: ::c_int = 3;
+pub const SW_MAXIMIZE: ::c_int = 3;
+pub const SW_SHOWNOACTIVATE: ::c_int = 4;
+pub const SW_SHOW: ::c_int = 5;
+pub const SW_MINIMIZE: ::c_int = 6;
+pub const SW_SHOWMINNOACTIVE: ::c_int = 7;
+pub const SW_SHOWNA: ::c_int = 8;
+pub const SW_RESTORE: ::c_int = 9;
+pub const SW_SHOWDEFAULT: ::c_int = 10;
+pub const SW_FORCEMINIMIZE: ::c_int = 11;
+pub const SW_MAX: ::c_int = 11;
+pub const SWP_NOSIZE: ::UINT = 0x0001;
+pub const SWP_NOMOVE: ::UINT = 0x0002;
+pub const SWP_NOZORDER: ::UINT = 0x0004;
+pub const SWP_NOREDRAW: ::UINT = 0x0008;
+pub const SWP_NOACTIVATE: ::UINT = 0x0010;
+pub const SWP_FRAMECHANGED: ::UINT = 0x0020;
+pub const SWP_SHOWWINDOW: ::UINT = 0x0040;
+pub const SWP_HIDEWINDOW: ::UINT = 0x0080;
+pub const SWP_NOCOPYBITS: ::UINT = 0x0100;
+pub const SWP_NOOWNERZORDER: ::UINT = 0x0200;
+pub const SWP_NOSENDCHANGING: ::UINT = 0x0400;
+pub const SWP_DRAWFRAME: ::UINT = SWP_FRAMECHANGED;
+pub const SWP_NOREPOSITION: ::UINT = SWP_NOOWNERZORDER;
+pub const SWP_DEFERERASE: ::UINT = 0x2000;
+pub const SWP_ASYNCWINDOWPOS: ::UINT = 0x4000;
+pub const VK_LBUTTON: ::c_int = 0x01;
+pub const VK_RBUTTON: ::c_int = 0x02;
+pub const VK_CANCEL: ::c_int = 0x03;
+pub const VK_MBUTTON: ::c_int = 0x04;
+pub const VK_XBUTTON1: ::c_int = 0x05;
+pub const VK_XBUTTON2: ::c_int = 0x06;
+pub const VK_BACK: ::c_int = 0x08;
+pub const VK_TAB: ::c_int = 0x09;
+pub const VK_CLEAR: ::c_int = 0x0C;
+pub const VK_RETURN: ::c_int = 0x0D;
+pub const VK_SHIFT: ::c_int = 0x10;
+pub const VK_CONTROL: ::c_int = 0x11;
+pub const VK_MENU: ::c_int = 0x12;
+pub const VK_PAUSE: ::c_int = 0x13;
+pub const VK_CAPITAL: ::c_int = 0x14;
+pub const VK_KANA: ::c_int = 0x15;
+pub const VK_HANGUEL: ::c_int = 0x15;
+pub const VK_HANGUL: ::c_int = 0x15;
+pub const VK_JUNJA: ::c_int = 0x17;
+pub const VK_FINAL: ::c_int = 0x18;
+pub const VK_HANJA: ::c_int = 0x19;
+pub const VK_KANJI: ::c_int = 0x19;
+pub const VK_ESCAPE: ::c_int = 0x1B;
+pub const VK_CONVERT: ::c_int = 0x1C;
+pub const VK_NONCONVERT: ::c_int = 0x1D;
+pub const VK_ACCEPT: ::c_int = 0x1E;
+pub const VK_MODECHANGE: ::c_int = 0x1F;
+pub const VK_SPACE: ::c_int = 0x20;
+pub const VK_PRIOR: ::c_int = 0x21;
+pub const VK_NEXT: ::c_int = 0x22;
+pub const VK_END: ::c_int = 0x23;
+pub const VK_HOME: ::c_int = 0x24;
+pub const VK_LEFT: ::c_int = 0x25;
+pub const VK_UP: ::c_int = 0x26;
+pub const VK_RIGHT: ::c_int = 0x27;
+pub const VK_DOWN: ::c_int = 0x28;
+pub const VK_SELECT: ::c_int = 0x29;
+pub const VK_PRINT: ::c_int = 0x2A;
+pub const VK_EXECUTE: ::c_int = 0x2B;
+pub const VK_SNAPSHOT: ::c_int = 0x2C;
+pub const VK_INSERT: ::c_int = 0x2D;
+pub const VK_DELETE: ::c_int = 0x2E;
+pub const VK_HELP: ::c_int = 0x2F;
+pub const VK_LWIN: ::c_int = 0x5B;
+pub const VK_RWIN: ::c_int = 0x5C;
+pub const VK_APPS: ::c_int = 0x5D;
+pub const VK_SLEEP: ::c_int = 0x5F;
+pub const VK_NUMPAD0: ::c_int = 0x60;
+pub const VK_NUMPAD1: ::c_int = 0x61;
+pub const VK_NUMPAD2: ::c_int = 0x62;
+pub const VK_NUMPAD3: ::c_int = 0x63;
+pub const VK_NUMPAD4: ::c_int = 0x64;
+pub const VK_NUMPAD5: ::c_int = 0x65;
+pub const VK_NUMPAD6: ::c_int = 0x66;
+pub const VK_NUMPAD7: ::c_int = 0x67;
+pub const VK_NUMPAD8: ::c_int = 0x68;
+pub const VK_NUMPAD9: ::c_int = 0x69;
+pub const VK_MULTIPLY: ::c_int = 0x6A;
+pub const VK_ADD: ::c_int = 0x6B;
+pub const VK_SEPARATOR: ::c_int = 0x6C;
+pub const VK_SUBTRACT: ::c_int = 0x6D;
+pub const VK_DECIMAL: ::c_int = 0x6E;
+pub const VK_DIVIDE: ::c_int = 0x6F;
+pub const VK_F1: ::c_int = 0x70;
+pub const VK_F2: ::c_int = 0x71;
+pub const VK_F3: ::c_int = 0x72;
+pub const VK_F4: ::c_int = 0x73;
+pub const VK_F5: ::c_int = 0x74;
+pub const VK_F6: ::c_int = 0x75;
+pub const VK_F7: ::c_int = 0x76;
+pub const VK_F8: ::c_int = 0x77;
+pub const VK_F9: ::c_int = 0x78;
+pub const VK_F10: ::c_int = 0x79;
+pub const VK_F11: ::c_int = 0x7A;
+pub const VK_F12: ::c_int = 0x7B;
+pub const VK_F13: ::c_int = 0x7C;
+pub const VK_F14: ::c_int = 0x7D;
+pub const VK_F15: ::c_int = 0x7E;
+pub const VK_F16: ::c_int = 0x7F;
+pub const VK_F17: ::c_int = 0x80;
+pub const VK_F18: ::c_int = 0x81;
+pub const VK_F19: ::c_int = 0x82;
+pub const VK_F20: ::c_int = 0x83;
+pub const VK_F21: ::c_int = 0x84;
+pub const VK_F22: ::c_int = 0x85;
+pub const VK_F23: ::c_int = 0x86;
+pub const VK_F24: ::c_int = 0x87;
+pub const VK_NUMLOCK: ::c_int = 0x90;
+pub const VK_SCROLL: ::c_int = 0x91;
+pub const VK_OEM_NEC_EQUAL: ::c_int = 0x92;
+pub const VK_OEM_FJ_JISHO: ::c_int = 0x92;
+pub const VK_OEM_FJ_MASSHOU: ::c_int = 0x93;
+pub const VK_OEM_FJ_TOUROKU: ::c_int = 0x94;
+pub const VK_OEM_FJ_LOYA: ::c_int = 0x95;
+pub const VK_OEM_FJ_ROYA: ::c_int = 0x96;
+pub const VK_LSHIFT: ::c_int = 0xA0;
+pub const VK_RSHIFT: ::c_int = 0xA1;
+pub const VK_LCONTROL: ::c_int = 0xA2;
+pub const VK_RCONTROL: ::c_int = 0xA3;
+pub const VK_LMENU: ::c_int = 0xA4;
+pub const VK_RMENU: ::c_int = 0xA5;
+pub const VK_BROWSER_BACK: ::c_int = 0xA6;
+pub const VK_BROWSER_FORWARD: ::c_int = 0xA7;
+pub const VK_BROWSER_REFRESH: ::c_int = 0xA8;
+pub const VK_BROWSER_STOP: ::c_int = 0xA9;
+pub const VK_BROWSER_SEARCH: ::c_int = 0xAA;
+pub const VK_BROWSER_FAVORITES: ::c_int = 0xAB;
+pub const VK_BROWSER_HOME: ::c_int = 0xAC;
+pub const VK_VOLUME_MUTE: ::c_int = 0xAD;
+pub const VK_VOLUME_DOWN: ::c_int = 0xAE;
+pub const VK_VOLUME_UP: ::c_int = 0xAF;
+pub const VK_MEDIA_NEXT_TRACK: ::c_int = 0xB0;
+pub const VK_MEDIA_PREV_TRACK: ::c_int = 0xB1;
+pub const VK_MEDIA_STOP: ::c_int = 0xB2;
+pub const VK_MEDIA_PLAY_PAUSE: ::c_int = 0xB3;
+pub const VK_LAUNCH_MAIL: ::c_int = 0xB4;
+pub const VK_LAUNCH_MEDIA_SELECT: ::c_int = 0xB5;
+pub const VK_LAUNCH_APP1: ::c_int = 0xB6;
+pub const VK_LAUNCH_APP2: ::c_int = 0xB7;
+pub const VK_OEM_1: ::c_int = 0xBA;
+pub const VK_OEM_PLUS: ::c_int = 0xBB;
+pub const VK_OEM_COMMA: ::c_int = 0xBC;
+pub const VK_OEM_MINUS: ::c_int = 0xBD;
+pub const VK_OEM_PERIOD: ::c_int = 0xBE;
+pub const VK_OEM_2: ::c_int = 0xBF;
+pub const VK_OEM_3: ::c_int = 0xC0;
+pub const VK_OEM_4: ::c_int = 0xDB;
+pub const VK_OEM_5: ::c_int = 0xDC;
+pub const VK_OEM_6: ::c_int = 0xDD;
+pub const VK_OEM_7: ::c_int = 0xDE;
+pub const VK_OEM_8: ::c_int = 0xDF;
+pub const VK_OEM_AX: ::c_int = 0xE1;
+pub const VK_OEM_102: ::c_int = 0xE2;
+pub const VK_ICO_HELP: ::c_int = 0xE3;
+pub const VK_ICO_00: ::c_int = 0xE4;
+pub const VK_PROCESSKEY: ::c_int = 0xE5;
+pub const VK_ICO_CLEAR: ::c_int = 0xE6;
+pub const VK_PACKET: ::c_int = 0xE7;
+pub const VK_OEM_RESET: ::c_int = 0xE9;
+pub const VK_OEM_JUMP: ::c_int = 0xEA;
+pub const VK_OEM_PA1: ::c_int = 0xEB;
+pub const VK_OEM_PA2: ::c_int = 0xEC;
+pub const VK_OEM_PA3: ::c_int = 0xED;
+pub const VK_OEM_WSCTRL: ::c_int = 0xEE;
+pub const VK_OEM_CUSEL: ::c_int = 0xEF;
+pub const VK_OEM_ATTN: ::c_int = 0xF0;
+pub const VK_OEM_FINISH: ::c_int = 0xF1;
+pub const VK_OEM_COPY: ::c_int = 0xF2;
+pub const VK_OEM_AUTO: ::c_int = 0xF3;
+pub const VK_OEM_ENLW: ::c_int = 0xF4;
+pub const VK_OEM_BACKTAB: ::c_int = 0xF5;
+pub const VK_ATTN: ::c_int = 0xF6;
+pub const VK_CRSEL: ::c_int = 0xF7;
+pub const VK_EXSEL: ::c_int = 0xF8;
+pub const VK_EREOF: ::c_int = 0xF9;
+pub const VK_PLAY: ::c_int = 0xFA;
+pub const VK_ZOOM: ::c_int = 0xFB;
+pub const VK_NONAME: ::c_int = 0xFC;
+pub const VK_PA1: ::c_int = 0xFD;
+pub const VK_OEM_CLEAR: ::c_int = 0xFE;
+// if _WIN32_WINNT >= 0x0500
+pub const APPCOMMAND_BROWSER_BACKWARD: ::c_short = 1;
+pub const APPCOMMAND_BROWSER_FORWARD: ::c_short = 2;
+pub const APPCOMMAND_BROWSER_REFRESH: ::c_short = 3;
+pub const APPCOMMAND_BROWSER_STOP: ::c_short = 4;
+pub const APPCOMMAND_BROWSER_SEARCH: ::c_short = 5;
+pub const APPCOMMAND_BROWSER_FAVORITES: ::c_short = 6;
+pub const APPCOMMAND_BROWSER_HOME: ::c_short = 7;
+pub const APPCOMMAND_VOLUME_MUTE: ::c_short = 8;
+pub const APPCOMMAND_VOLUME_DOWN: ::c_short = 9;
+pub const APPCOMMAND_VOLUME_UP: ::c_short = 10;
+pub const APPCOMMAND_MEDIA_NEXTTRACK: ::c_short = 11;
+pub const APPCOMMAND_MEDIA_PREVIOUSTRACK: ::c_short = 12;
+pub const APPCOMMAND_MEDIA_STOP: ::c_short = 13;
+pub const APPCOMMAND_MEDIA_PLAY_PAUSE: ::c_short = 14;
+pub const APPCOMMAND_LAUNCH_MAIL: ::c_short = 15;
+pub const APPCOMMAND_LAUNCH_MEDIA_SELECT: ::c_short = 16;
+pub const APPCOMMAND_LAUNCH_APP1: ::c_short = 17;
+pub const APPCOMMAND_LAUNCH_APP2: ::c_short = 18;
+pub const APPCOMMAND_BASS_DOWN: ::c_short = 19;
+pub const APPCOMMAND_BASS_BOOST: ::c_short = 20;
+pub const APPCOMMAND_BASS_UP: ::c_short = 21;
+pub const APPCOMMAND_TREBLE_DOWN: ::c_short = 22;
+pub const APPCOMMAND_TREBLE_UP: ::c_short = 23;
+// if _WIN32_WINNT >= 0x0501
+pub const APPCOMMAND_MICROPHONE_VOLUME_MUTE: ::c_short = 24;
+pub const APPCOMMAND_MICROPHONE_VOLUME_DOWN: ::c_short = 25;
+pub const APPCOMMAND_MICROPHONE_VOLUME_UP: ::c_short = 26;
+pub const APPCOMMAND_HELP: ::c_short = 27;
+pub const APPCOMMAND_FIND: ::c_short = 28;
+pub const APPCOMMAND_NEW: ::c_short = 29;
+pub const APPCOMMAND_OPEN: ::c_short = 30;
+pub const APPCOMMAND_CLOSE: ::c_short = 31;
+pub const APPCOMMAND_SAVE: ::c_short = 32;
+pub const APPCOMMAND_PRINT: ::c_short = 33;
+pub const APPCOMMAND_UNDO: ::c_short = 34;
+pub const APPCOMMAND_REDO: ::c_short = 35;
+pub const APPCOMMAND_COPY: ::c_short = 36;
+pub const APPCOMMAND_CUT: ::c_short = 37;
+pub const APPCOMMAND_PASTE: ::c_short = 38;
+pub const APPCOMMAND_REPLY_TO_MAIL: ::c_short = 39;
+pub const APPCOMMAND_FORWARD_MAIL: ::c_short = 40;
+pub const APPCOMMAND_SEND_MAIL: ::c_short = 41;
+pub const APPCOMMAND_SPELL_CHECK: ::c_short = 42;
+pub const APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE: ::c_short = 43;
+pub const APPCOMMAND_MIC_ON_OFF_TOGGLE: ::c_short = 44;
+pub const APPCOMMAND_CORRECTION_LIST: ::c_short = 45;
+pub const APPCOMMAND_MEDIA_PLAY: ::c_short = 46;
+pub const APPCOMMAND_MEDIA_PAUSE: ::c_short = 47;
+pub const APPCOMMAND_MEDIA_RECORD: ::c_short = 48;
+pub const APPCOMMAND_MEDIA_FAST_FORWARD: ::c_short = 49;
+pub const APPCOMMAND_MEDIA_REWIND: ::c_short = 50;
+pub const APPCOMMAND_MEDIA_CHANNEL_UP: ::c_short = 51;
+pub const APPCOMMAND_MEDIA_CHANNEL_DOWN: ::c_short = 52;
+// end if _WIN32_WINNT >= 0x0501
+// if _WIN32_WINNT >= 0x0600
+pub const APPCOMMAND_DELETE: ::c_short = 53;
+pub const APPCOMMAND_DWM_FLIP3D: ::c_short = 54;
+// end if _WIN32_WINNT >= 0x0600
+pub const WM_NULL: ::UINT = 0x0000;
+pub const WM_CREATE: ::UINT = 0x0001;
+pub const WM_DESTROY: ::UINT = 0x0002;
+pub const WM_MOVE: ::UINT = 0x0003;
+pub const WM_SIZE: ::UINT = 0x0005;
+pub const WM_ACTIVATE: ::UINT = 0x0006;
+pub const WM_SETFOCUS: ::UINT = 0x0007;
+pub const WM_KILLFOCUS: ::UINT = 0x0008;
+pub const WM_ENABLE: ::UINT = 0x000A;
+pub const WM_SETREDRAW: ::UINT = 0x000B;
+pub const WM_SETTEXT: ::UINT = 0x000C;
+pub const WM_GETTEXT: ::UINT = 0x000D;
+pub const WM_GETTEXTLENGTH: ::UINT = 0x000E;
+pub const WM_PAINT: ::UINT = 0x000F;
+pub const WM_CLOSE: ::UINT = 0x0010;
+pub const WM_QUERYENDSESSION: ::UINT = 0x0011;
+pub const WM_QUERYOPEN: ::UINT = 0x0013;
+pub const WM_ENDSESSION: ::UINT = 0x0016;
+pub const WM_QUIT: ::UINT = 0x0012;
+pub const WM_ERASEBKGND: ::UINT = 0x0014;
+pub const WM_SYSCOLORCHANGE: ::UINT = 0x0015;
+pub const WM_SHOWWINDOW: ::UINT = 0x0018;
+pub const WM_WININICHANGE: ::UINT = 0x001A;
+pub const WM_SETTINGCHANGE: ::UINT = WM_WININICHANGE;
+pub const WM_DEVMODECHANGE: ::UINT = 0x001B;
+pub const WM_ACTIVATEAPP: ::UINT = 0x001C;
+pub const WM_FONTCHANGE: ::UINT = 0x001D;
+pub const WM_TIMECHANGE: ::UINT = 0x001E;
+pub const WM_CANCELMODE: ::UINT = 0x001F;
+pub const WM_SETCURSOR: ::UINT = 0x0020;
+pub const WM_MOUSEACTIVATE: ::UINT = 0x0021;
+pub const WM_CHILDACTIVATE: ::UINT = 0x0022;
+pub const WM_QUEUESYNC: ::UINT = 0x0023;
+pub const WM_GETMINMAXINFO: ::UINT = 0x0024;
+pub const WM_PAINTICON: ::UINT = 0x0026;
+pub const WM_ICONERASEBKGND: ::UINT = 0x0027;
+pub const WM_NEXTDLGCTL: ::UINT = 0x0028;
+pub const WM_SPOOLERSTATUS: ::UINT = 0x002A;
+pub const WM_DRAWITEM: ::UINT = 0x002B;
+pub const WM_MEASUREITEM: ::UINT = 0x002C;
+pub const WM_DELETEITEM: ::UINT = 0x002D;
+pub const WM_VKEYTOITEM: ::UINT = 0x002E;
+pub const WM_CHARTOITEM: ::UINT = 0x002F;
+pub const WM_SETFONT: ::UINT = 0x0030;
+pub const WM_GETFONT: ::UINT = 0x0031;
+pub const WM_SETHOTKEY: ::UINT = 0x0032;
+pub const WM_GETHOTKEY: ::UINT = 0x0033;
+pub const WM_QUERYDRAGICON: ::UINT = 0x0037;
+pub const WM_COMPAREITEM: ::UINT = 0x0039;
+pub const WM_GETOBJECT: ::UINT = 0x003D;
+pub const WM_COMPACTING: ::UINT = 0x0041;
+pub const WM_COMMNOTIFY: ::UINT = 0x0044;
+pub const WM_WINDOWPOSCHANGING: ::UINT = 0x0046;
+pub const WM_WINDOWPOSCHANGED: ::UINT = 0x0047;
+pub const WM_POWER: ::UINT = 0x0048;
+pub const WM_COPYDATA: ::UINT = 0x004A;
+pub const WM_CANCELJOURNAL: ::UINT = 0x004B;
+pub const WM_NOTIFY: ::UINT = 0x004E;
+pub const WM_INPUTLANGCHANGEREQUEST: ::UINT = 0x0050;
+pub const WM_INPUTLANGCHANGE: ::UINT = 0x0051;
+pub const WM_TCARD: ::UINT = 0x0052;
+pub const WM_HELP: ::UINT = 0x0053;
+pub const WM_USERCHANGED: ::UINT = 0x0054;
+pub const WM_NOTIFYFORMAT: ::UINT = 0x0055;
+pub const WM_CONTEXTMENU: ::UINT = 0x007B;
+pub const WM_STYLECHANGING: ::UINT = 0x007C;
+pub const WM_STYLECHANGED: ::UINT = 0x007D;
+pub const WM_DISPLAYCHANGE: ::UINT = 0x007E;
+pub const WM_GETICON: ::UINT = 0x007F;
+pub const WM_SETICON: ::UINT = 0x0080;
+pub const WM_NCCREATE: ::UINT = 0x0081;
+pub const WM_NCDESTROY: ::UINT = 0x0082;
+pub const WM_NCCALCSIZE: ::UINT = 0x0083;
+pub const WM_NCHITTEST: ::UINT = 0x0084;
+pub const WM_NCPAINT: ::UINT = 0x0085;
+pub const WM_NCACTIVATE: ::UINT = 0x0086;
+pub const WM_GETDLGCODE: ::UINT = 0x0087;
+pub const WM_SYNCPAINT: ::UINT = 0x0088;
+pub const WM_NCMOUSEMOVE: ::UINT = 0x00A0;
+pub const WM_NCLBUTTONDOWN: ::UINT = 0x00A1;
+pub const WM_NCLBUTTONUP: ::UINT = 0x00A2;
+pub const WM_NCLBUTTONDBLCLK: ::UINT = 0x00A3;
+pub const WM_NCRBUTTONDOWN: ::UINT = 0x00A4;
+pub const WM_NCRBUTTONUP: ::UINT = 0x00A5;
+pub const WM_NCRBUTTONDBLCLK: ::UINT = 0x00A6;
+pub const WM_NCMBUTTONDOWN: ::UINT = 0x00A7;
+pub const WM_NCMBUTTONUP: ::UINT = 0x00A8;
+pub const WM_NCMBUTTONDBLCLK: ::UINT = 0x00A9;
+pub const WM_NCXBUTTONDOWN: ::UINT = 0x00AB;
+pub const WM_NCXBUTTONUP: ::UINT = 0x00AC;
+pub const WM_NCXBUTTONDBLCLK: ::UINT = 0x00AD;
+pub const WM_INPUT_DEVICE_CHANGE: ::UINT = 0x00FE;
+pub const WM_INPUT: ::UINT = 0x00FF;
+pub const WM_KEYFIRST: ::UINT = 0x0100;
+pub const WM_KEYDOWN: ::UINT = 0x0100;
+pub const WM_KEYUP: ::UINT = 0x0101;
+pub const WM_CHAR: ::UINT = 0x0102;
+pub const WM_DEADCHAR: ::UINT = 0x0103;
+pub const WM_SYSKEYDOWN: ::UINT = 0x0104;
+pub const WM_SYSKEYUP: ::UINT = 0x0105;
+pub const WM_SYSCHAR: ::UINT = 0x0106;
+pub const WM_SYSDEADCHAR: ::UINT = 0x0107;
+pub const WM_UNICHAR: ::UINT = 0x0109;
+pub const WM_KEYLAST: ::UINT = 0x0109;
+pub const WM_IME_STARTCOMPOSITION: ::UINT = 0x010D;
+pub const WM_IME_ENDCOMPOSITION: ::UINT = 0x010E;
+pub const WM_IME_COMPOSITION: ::UINT = 0x010F;
+pub const WM_IME_KEYLAST: ::UINT = 0x010F;
+pub const WM_INITDIALOG: ::UINT = 0x0110;
+pub const WM_COMMAND: ::UINT = 0x0111;
+pub const WM_SYSCOMMAND: ::UINT = 0x0112;
+pub const WM_TIMER: ::UINT = 0x0113;
+pub const WM_HSCROLL: ::UINT = 0x0114;
+pub const WM_VSCROLL: ::UINT = 0x0115;
+pub const WM_INITMENU: ::UINT = 0x0116;
+pub const WM_INITMENUPOPUP: ::UINT = 0x0117;
+pub const WM_GESTURE: ::UINT = 0x0119;
+pub const WM_GESTURENOTIFY: ::UINT = 0x011A;
+pub const WM_MENUSELECT: ::UINT = 0x011F;
+pub const WM_MENUCHAR: ::UINT = 0x0120;
+pub const WM_ENTERIDLE: ::UINT = 0x0121;
+pub const WM_MENURBUTTONUP: ::UINT = 0x0122;
+pub const WM_MENUDRAG: ::UINT = 0x0123;
+pub const WM_MENUGETOBJECT: ::UINT = 0x0124;
+pub const WM_UNINITMENUPOPUP: ::UINT = 0x0125;
+pub const WM_MENUCOMMAND: ::UINT = 0x0126;
+pub const WM_CHANGEUISTATE: ::UINT = 0x0127;
+pub const WM_UPDATEUISTATE: ::UINT = 0x0128;
+pub const WM_QUERYUISTATE: ::UINT = 0x0129;
+pub const WM_CTLCOLORMSGBOX: ::UINT = 0x0132;
+pub const WM_CTLCOLOREDIT: ::UINT = 0x0133;
+pub const WM_CTLCOLORLISTBOX: ::UINT = 0x0134;
+pub const WM_CTLCOLORBTN: ::UINT = 0x0135;
+pub const WM_CTLCOLORDLG: ::UINT = 0x0136;
+pub const WM_CTLCOLORSCROLLBAR: ::UINT = 0x0137;
+pub const WM_CTLCOLORSTATIC: ::UINT = 0x0138;
+pub const WM_MOUSEFIRST: ::UINT = 0x0200;
+pub const WM_MOUSEMOVE: ::UINT = 0x0200;
+pub const WM_LBUTTONDOWN: ::UINT = 0x0201;
+pub const WM_LBUTTONUP: ::UINT = 0x0202;
+pub const WM_LBUTTONDBLCLK: ::UINT = 0x0203;
+pub const WM_RBUTTONDOWN: ::UINT = 0x0204;
+pub const WM_RBUTTONUP: ::UINT = 0x0205;
+pub const WM_RBUTTONDBLCLK: ::UINT = 0x0206;
+pub const WM_MBUTTONDOWN: ::UINT = 0x0207;
+pub const WM_MBUTTONUP: ::UINT = 0x0208;
+pub const WM_MBUTTONDBLCLK: ::UINT = 0x0209;
+pub const WM_MOUSEWHEEL: ::UINT = 0x020A;
+pub const WM_XBUTTONDOWN: ::UINT = 0x020B;
+pub const WM_XBUTTONUP: ::UINT = 0x020C;
+pub const WM_XBUTTONDBLCLK: ::UINT = 0x020D;
+pub const WM_MOUSEHWHEEL: ::UINT = 0x020E;
+pub const WM_MOUSELAST: ::UINT = 0x020E;
+pub const WM_PARENTNOTIFY: ::UINT = 0x0210;
+pub const WM_ENTERMENULOOP: ::UINT = 0x0211;
+pub const WM_EXITMENULOOP: ::UINT = 0x0212;
+pub const WM_NEXTMENU: ::UINT = 0x0213;
+pub const WM_SIZING: ::UINT = 0x0214;
+pub const WM_CAPTURECHANGED: ::UINT = 0x0215;
+pub const WM_MOVING: ::UINT = 0x0216;
+pub const WM_POWERBROADCAST: ::UINT = 0x0218;
+pub const WM_DEVICECHANGE: ::UINT = 0x0219;
+pub const WM_MDICREATE: ::UINT = 0x0220;
+pub const WM_MDIDESTROY: ::UINT = 0x0221;
+pub const WM_MDIACTIVATE: ::UINT = 0x0222;
+pub const WM_MDIRESTORE: ::UINT = 0x0223;
+pub const WM_MDINEXT: ::UINT = 0x0224;
+pub const WM_MDIMAXIMIZE: ::UINT = 0x0225;
+pub const WM_MDITILE: ::UINT = 0x0226;
+pub const WM_MDICASCADE: ::UINT = 0x0227;
+pub const WM_MDIICONARRANGE: ::UINT = 0x0228;
+pub const WM_MDIGETACTIVE: ::UINT = 0x0229;
+pub const WM_MDISETMENU: ::UINT = 0x0230;
+pub const WM_ENTERSIZEMOVE: ::UINT = 0x0231;
+pub const WM_EXITSIZEMOVE: ::UINT = 0x0232;
+pub const WM_DROPFILES: ::UINT = 0x0233;
+pub const WM_MDIREFRESHMENU: ::UINT = 0x0234;
+pub const WM_POINTERDEVICECHANGE: ::UINT = 0x238;
+pub const WM_POINTERDEVICEINRANGE: ::UINT = 0x239;
+pub const WM_POINTERDEVICEOUTOFRANGE: ::UINT = 0x23A;
+pub const WM_TOUCH: ::UINT = 0x0240;
+pub const WM_NCPOINTERUPDATE: ::UINT = 0x0241;
+pub const WM_NCPOINTERDOWN: ::UINT = 0x0242;
+pub const WM_NCPOINTERUP: ::UINT = 0x0243;
+pub const WM_POINTERUPDATE: ::UINT = 0x0245;
+pub const WM_POINTERDOWN: ::UINT = 0x0246;
+pub const WM_POINTERUP: ::UINT = 0x0247;
+pub const WM_POINTERENTER: ::UINT = 0x0249;
+pub const WM_POINTERLEAVE: ::UINT = 0x024A;
+pub const WM_POINTERACTIVATE: ::UINT = 0x024B;
+pub const WM_POINTERCAPTURECHANGED: ::UINT = 0x024C;
+pub const WM_TOUCHHITTESTING: ::UINT = 0x024D;
+pub const WM_POINTERWHEEL: ::UINT = 0x024E;
+pub const WM_POINTERHWHEEL: ::UINT = 0x024F;
+pub const WM_IME_SETCONTEXT: ::UINT = 0x0281;
+pub const WM_IME_NOTIFY: ::UINT = 0x0282;
+pub const WM_IME_CONTROL: ::UINT = 0x0283;
+pub const WM_IME_COMPOSITIONFULL: ::UINT = 0x0284;
+pub const WM_IME_SELECT: ::UINT = 0x0285;
+pub const WM_IME_CHAR: ::UINT = 0x0286;
+pub const WM_IME_REQUEST: ::UINT = 0x0288;
+pub const WM_IME_KEYDOWN: ::UINT = 0x0290;
+pub const WM_IME_KEYUP: ::UINT = 0x0291;
+pub const WM_MOUSEHOVER: ::UINT = 0x02A1;
+pub const WM_MOUSELEAVE: ::UINT = 0x02A3;
+pub const WM_NCMOUSEHOVER: ::UINT = 0x02A0;
+pub const WM_NCMOUSELEAVE: ::UINT = 0x02A2;
+pub const WM_WTSSESSION_CHANGE: ::UINT = 0x02B1;
+pub const WM_TABLET_FIRST: ::UINT = 0x02c0;
+pub const WM_TABLET_LAST: ::UINT = 0x02df;
+pub const WM_DPICHANGED: ::UINT = 0x02E0;
+pub const WM_CUT: ::UINT = 0x0300;
+pub const WM_COPY: ::UINT = 0x0301;
+pub const WM_PASTE: ::UINT = 0x0302;
+pub const WM_CLEAR: ::UINT = 0x0303;
+pub const WM_UNDO: ::UINT = 0x0304;
+pub const WM_RENDERFORMAT: ::UINT = 0x0305;
+pub const WM_RENDERALLFORMATS: ::UINT = 0x0306;
+pub const WM_DESTROYCLIPBOARD: ::UINT = 0x0307;
+pub const WM_DRAWCLIPBOARD: ::UINT = 0x0308;
+pub const WM_PAINTCLIPBOARD: ::UINT = 0x0309;
+pub const WM_VSCROLLCLIPBOARD: ::UINT = 0x030A;
+pub const WM_SIZECLIPBOARD: ::UINT = 0x030B;
+pub const WM_ASKCBFORMATNAME: ::UINT = 0x030C;
+pub const WM_CHANGECBCHAIN: ::UINT = 0x030D;
+pub const WM_HSCROLLCLIPBOARD: ::UINT = 0x030E;
+pub const WM_QUERYNEWPALETTE: ::UINT = 0x030F;
+pub const WM_PALETTEISCHANGING: ::UINT = 0x0310;
+pub const WM_PALETTECHANGED: ::UINT = 0x0311;
+pub const WM_HOTKEY: ::UINT = 0x0312;
+pub const WM_PRINT: ::UINT = 0x0317;
+pub const WM_PRINTCLIENT: ::UINT = 0x0318;
+pub const WM_APPCOMMAND: ::UINT = 0x0319;
+pub const WM_THEMECHANGED: ::UINT = 0x031A;
+pub const WM_CLIPBOARDUPDATE: ::UINT = 0x031D;
+pub const WM_DWMCOMPOSITIONCHANGED: ::UINT = 0x031E;
+pub const WM_DWMNCRENDERINGCHANGED: ::UINT = 0x031F;
+pub const WM_DWMCOLORIZATIONCOLORCHANGED: ::UINT = 0x0320;
+pub const WM_DWMWINDOWMAXIMIZEDCHANGE: ::UINT = 0x0321;
+pub const WM_DWMSENDICONICTHUMBNAIL: ::UINT = 0x0323;
+pub const WM_DWMSENDICONICLIVEPREVIEWBITMAP: ::UINT = 0x0326;
+pub const WM_GETTITLEBARINFOEX: ::UINT = 0x033F;
+pub const WM_HANDHELDFIRST: ::UINT = 0x0358;
+pub const WM_HANDHELDLAST: ::UINT = 0x035F;
+pub const WM_AFXFIRST: ::UINT = 0x0360;
+pub const WM_AFXLAST: ::UINT = 0x037F;
+pub const WM_PENWINFIRST: ::UINT = 0x0380;
+pub const WM_PENWINLAST: ::UINT = 0x038F;
+pub const WM_APP: ::UINT = 0x8000;
+pub const WM_USER: ::UINT = 0x0400;
+pub const WMSZ_LEFT: ::UINT = 1;
+pub const WMSZ_RIGHT: ::UINT = 2;
+pub const WMSZ_TOP: ::UINT = 3;
+pub const WMSZ_TOPLEFT: ::UINT = 4;
+pub const WMSZ_TOPRIGHT: ::UINT = 5;
+pub const WMSZ_BOTTOM: ::UINT = 6;
+pub const WMSZ_BOTTOMLEFT: ::UINT = 7;
+pub const WMSZ_BOTTOMRIGHT: ::UINT = 8;
+pub const SMTO_NORMAL: ::UINT = 0x0000;
+pub const SMTO_BLOCK: ::UINT = 0x0001;
+pub const SMTO_ABORTIFHUNG: ::UINT = 0x0002;
+pub const SMTO_NOTIMEOUTIFNOTHUNG: ::UINT = 0x0008;
+pub const SMTO_ERRORONEXIT: ::UINT = 0x0020;
+pub const MA_ACTIVATE: ::UINT = 1;
+pub const MA_ACTIVATEANDEAT: ::UINT = 2;
+pub const MA_NOACTIVATE: ::UINT = 3;
+pub const MA_NOACTIVATEANDEAT: ::UINT = 4;
+pub const ICON_SMALL: ::UINT = 0;
+pub const ICON_BIG: ::UINT = 1;
+pub const ICON_SMALL2: ::UINT = 2;
+pub const SIZE_RESTORED: ::UINT = 0;
+pub const SIZE_MINIMIZED: ::UINT = 1;
+pub const SIZE_MAXIMIZED: ::UINT = 2;
+pub const SIZE_MAXSHOW: ::UINT = 3;
+pub const SIZE_MAXHIDE: ::UINT = 4;
+pub const SIZENORMAL: ::UINT = SIZE_RESTORED;
+pub const SIZEICONIC: ::UINT = SIZE_MINIMIZED;
+pub const SIZEFULLSCREEN: ::UINT = SIZE_MAXIMIZED;
+pub const SIZEZOOMSHOW: ::UINT = SIZE_MAXSHOW;
+pub const SIZEZOOMHIDE: ::UINT = SIZE_MAXHIDE;
+STRUCT!{struct NCCALCSIZE_PARAMS {
+ rgrc: [::RECT; 3],
+ lppos: PWINDOWPOS,
+}}
+pub type PNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS;
+pub type NPNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS;
+pub type LPNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS;
+pub const WVR_ALIGNTOP: ::UINT = 0x0010;
+pub const WVR_ALIGNLEFT: ::UINT = 0x0020;
+pub const WVR_ALIGNBOTTOM: ::UINT = 0x0040;
+pub const WVR_ALIGNRIGHT: ::UINT = 0x0080;
+pub const WVR_HREDRAW: ::UINT = 0x0100;
+pub const WVR_VREDRAW: ::UINT = 0x0200;
+pub const WVR_REDRAW: ::UINT = WVR_HREDRAW | WVR_VREDRAW;
+pub const WVR_VALIDRECTS: ::UINT = 0x0400;
+pub const HOVER_DEFAULT: ::UINT = 0xFFFFFFFF;
+pub const WS_OVERLAPPED: ::DWORD = 0x00000000;
+pub const WS_POPUP: ::DWORD = 0x80000000;
+pub const WS_CHILD: ::DWORD = 0x40000000;
+pub const WS_MINIMIZE: ::DWORD = 0x20000000;
+pub const WS_VISIBLE: ::DWORD = 0x10000000;
+pub const WS_DISABLED: ::DWORD = 0x08000000;
+pub const WS_CLIPSIBLINGS: ::DWORD = 0x04000000;
+pub const WS_CLIPCHILDREN: ::DWORD = 0x02000000;
+pub const WS_MAXIMIZE: ::DWORD = 0x01000000;
+pub const WS_CAPTION: ::DWORD = 0x00C00000;
+pub const WS_BORDER: ::DWORD = 0x00800000;
+pub const WS_DLGFRAME: ::DWORD = 0x00400000;
+pub const WS_VSCROLL: ::DWORD = 0x00200000;
+pub const WS_HSCROLL: ::DWORD = 0x00100000;
+pub const WS_SYSMENU: ::DWORD = 0x00080000;
+pub const WS_THICKFRAME: ::DWORD = 0x00040000;
+pub const WS_GROUP: ::DWORD = 0x00020000;
+pub const WS_TABSTOP: ::DWORD = 0x00010000;
+pub const WS_MINIMIZEBOX: ::DWORD = 0x00020000;
+pub const WS_MAXIMIZEBOX: ::DWORD = 0x00010000;
+pub const WS_TILED: ::DWORD = WS_OVERLAPPED;
+pub const WS_ICONIC: ::DWORD = WS_MINIMIZE;
+pub const WS_SIZEBOX: ::DWORD = WS_THICKFRAME;
+pub const WS_TILEDWINDOW: ::DWORD = WS_OVERLAPPEDWINDOW;
+pub const WS_OVERLAPPEDWINDOW: ::DWORD = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
+pub const WS_POPUPWINDOW: ::DWORD = WS_POPUP | WS_BORDER | WS_SYSMENU;
+pub const WS_CHILDWINDOW: ::DWORD = WS_CHILD;
+pub const WS_EX_DLGMODALFRAME: ::DWORD = 0x00000001;
+pub const WS_EX_NOPARENTNOTIFY: ::DWORD = 0x00000004;
+pub const WS_EX_TOPMOST: ::DWORD = 0x00000008;
+pub const WS_EX_ACCEPTFILES: ::DWORD = 0x00000010;
+pub const WS_EX_TRANSPARENT: ::DWORD = 0x00000020;
+pub const WS_EX_MDICHILD: ::DWORD = 0x00000040;
+pub const WS_EX_TOOLWINDOW: ::DWORD = 0x00000080;
+pub const WS_EX_WINDOWEDGE: ::DWORD = 0x00000100;
+pub const WS_EX_CLIENTEDGE: ::DWORD = 0x00000200;
+pub const WS_EX_CONTEXTHELP: ::DWORD = 0x00000400;
+pub const WS_EX_RIGHT: ::DWORD = 0x00001000;
+pub const WS_EX_LEFT: ::DWORD = 0x00000000;
+pub const WS_EX_RTLREADING: ::DWORD = 0x00002000;
+pub const WS_EX_LTRREADING: ::DWORD = 0x00000000;
+pub const WS_EX_LEFTSCROLLBAR: ::DWORD = 0x00004000;
+pub const WS_EX_RIGHTSCROLLBAR: ::DWORD = 0x00000000;
+pub const WS_EX_CONTROLPARENT: ::DWORD = 0x00010000;
+pub const WS_EX_STATICEDGE: ::DWORD = 0x00020000;
+pub const WS_EX_APPWINDOW: ::DWORD = 0x00040000;
+pub const WS_EX_OVERLAPPEDWINDOW: ::DWORD = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE;
+pub const WS_EX_PALETTEWINDOW: ::DWORD = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST;
+pub const WS_EX_LAYERED: ::DWORD = 0x00080000;
+pub const WS_EX_NOINHERITLAYOUT: ::DWORD = 0x00100000;
+pub const WS_EX_NOREDIRECTIONBITMAP: ::DWORD = 0x00200000;
+pub const WS_EX_LAYOUTRTL: ::DWORD = 0x00400000;
+pub const WS_EX_COMPOSITED: ::DWORD = 0x02000000;
+pub const WS_EX_NOACTIVATE: ::DWORD = 0x08000000;
+pub type NAMEENUMPROCA = Option<unsafe extern "system" fn(::LPSTR, ::LPARAM) -> ::BOOL>;
+pub type NAMEENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR, ::LPARAM) -> ::BOOL>;
+pub type DESKTOPENUMPROCA = NAMEENUMPROCA;
+pub type DESKTOPENUMPROCW = NAMEENUMPROCW;
+pub type WINSTAENUMPROCA = NAMEENUMPROCA;
+pub type WINSTAENUMPROCW = NAMEENUMPROCW;
+pub type WNDENUMPROC = Option<unsafe extern "system" fn(::HWND, ::LPARAM) -> ::BOOL>;
+pub type WNDPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::LRESULT>;
+pub type DLGPROC = Option<unsafe extern "system" fn(
+ ::HWND, ::UINT, ::WPARAM, ::LPARAM,
+) -> ::INT_PTR>;
+pub type HOOKPROC = Option<unsafe extern "system" fn(
+ code: ::c_int, wParam: ::WPARAM, lParam: ::LPARAM,
+) -> ::LRESULT>;
+pub type TimerProc = Option<unsafe extern "system" fn(
+ hwnd: ::HWND, uMsg: ::UINT, idEvent: ::UINT_PTR, dwTime: ::DWORD,
+)>;
+pub type DRAWSTATEPROC = Option<unsafe extern "system" fn(
+ ::HDC, ::LPARAM, ::WPARAM, ::c_int, ::c_int,
+) -> ::BOOL>;
+pub type PROPENUMPROCA = Option<unsafe extern "system" fn(::HWND, ::LPCSTR, ::HANDLE) -> ::BOOL>;
+pub type PROPENUMPROCW = Option<unsafe extern "system" fn(::HWND, ::LPCWSTR, ::HANDLE) -> ::BOOL>;
+pub type GRAYSTRINGPROC = Option<unsafe extern "system" fn(::HDC, ::LPARAM, ::c_int) -> ::BOOL>;
+pub type MSGBOXCALLBACK = Option<unsafe extern "system" fn(LPHELPINFO)>;
+pub type WINEVENTPROC = Option<unsafe extern "system" fn(
+ ::HWINEVENTHOOK, ::DWORD, ::HWND, ::LONG, ::LONG, ::DWORD, ::DWORD,
+)>;
+pub type HDEVNOTIFY = ::PVOID;
+pub type MENUTEMPLATEA = ::VOID;
+pub type MENUTEMPLATEW = ::VOID;
+STRUCT!{struct MSG {
+ hwnd: ::HWND,
+ message: ::UINT,
+ wParam: ::WPARAM,
+ lParam: ::LPARAM,
+ time: ::DWORD,
+ pt: ::POINT,
+}}
+pub type PMSG = *mut MSG;
+pub type NPMSG = *mut MSG;
+pub type LPMSG = *mut MSG;
+STRUCT!{struct PAINTSTRUCT {
+ hdc: ::HDC,
+ fErase: ::BOOL,
+ rcPaint: ::RECT,
+ fRestore: ::BOOL,
+ fIncUpdate: ::BOOL,
+ rgbReserved: [::BYTE; 32],
+}}
+pub type PPAINTSTRUCT = *mut PAINTSTRUCT;
+pub type NPPAINTSTRUCT = *mut PAINTSTRUCT;
+pub type LPPAINTSTRUCT = *mut PAINTSTRUCT;
+STRUCT!{struct WINDOWPLACEMENT {
+ length: ::UINT,
+ flags: ::UINT,
+ showCmd: ::UINT,
+ ptMinPosition: ::POINT,
+ ptMaxPosition: ::POINT,
+ rcNormalPosition: ::RECT,
+}}
+pub type PWINDOWPLACEMENT = *mut WINDOWPLACEMENT;
+pub type LPWINDOWPLACEMENT = *mut WINDOWPLACEMENT;
+STRUCT!{nodebug struct WNDCLASSEXW {
+ cbSize: ::UINT,
+ style: ::UINT,
+ lpfnWndProc: WNDPROC,
+ cbClsExtra: ::c_int,
+ cbWndExtra: ::c_int,
+ hInstance: ::HINSTANCE,
+ hIcon: ::HICON,
+ hCursor: ::HCURSOR,
+ hbrBackground: ::HBRUSH,
+ lpszMenuName: ::LPCWSTR,
+ lpszClassName: ::LPCWSTR,
+ hIconSm: ::HICON,
+}}
+pub type PWNDCLASSEXW = *mut WNDCLASSEXW;
+pub type NPWNDCLASSEXW = *mut WNDCLASSEXW;
+pub type LPWNDCLASSEXW = *mut WNDCLASSEXW;
+STRUCT!{nodebug struct WNDCLASSW {
+ style: ::UINT,
+ lpfnWndProc: WNDPROC,
+ cbClsExtra: ::c_int,
+ cbWndExtra: ::c_int,
+ hInstance: ::HINSTANCE,
+ hIcon: ::HICON,
+ hCursor: ::HCURSOR,
+ hbrBackground: ::HBRUSH,
+ lpszMenuName: ::LPCWSTR,
+ lpszClassName: ::LPCWSTR,
+}}
+pub type PWNDCLASSW = *mut WNDCLASSW;
+pub type NPWNDCLASSW = *mut WNDCLASSW;
+pub type LPWNDCLASSW = *mut WNDCLASSW;
+STRUCT!{struct MINMAXINFO {
+ ptReserved: ::POINT,
+ ptMaxSize: ::POINT,
+ ptMaxPosition: ::POINT,
+ ptMinTrackSize: ::POINT,
+ ptMaxTrackSize: ::POINT,
+}}
+STRUCT!{struct SCROLLBARINFO {
+ cbSize: ::DWORD,
+ rcScrollBar: ::RECT,
+ dxyLineButton: ::c_int,
+ xyThumbTop: ::c_int,
+ xyThumbBottom: ::c_int,
+ reserved: ::c_int,
+ rgstate: [::DWORD; CCHILDREN_SCROLLBAR + 1],
+}}
+pub type PSCROLLBARINFO = *mut SCROLLBARINFO;
+pub type LPSCROLLBARINFO = *mut SCROLLBARINFO;
+STRUCT!{struct SCROLLINFO {
+ cbSize: ::UINT,
+ fMask: ::UINT,
+ nMin: ::c_int,
+ nMax: ::c_int,
+ nPage: ::UINT,
+ nPos: ::c_int,
+ nTrackPos: ::c_int,
+}}
+pub type LPSCROLLINFO = *mut SCROLLINFO;
+pub type LPCSCROLLINFO = *const SCROLLINFO;
+STRUCT!{struct SIZE {
+ cx: ::LONG,
+ cy: ::LONG,
+}}
+pub type PSIZE = *mut SIZE;
+pub type LPSIZE = *mut SIZE;
+pub type SIZEL = SIZE;
+pub type PSIZEL = *mut SIZEL;
+pub type LPSIZEL = *mut SIZEL;
+//1913
+pub const UNICODE_NOCHAR: ::WPARAM = 0xffff;
+pub type HDWP = *mut ::HANDLE;
+//2193
+pub const WHEEL_DELTA: ::DWORD = 120;
+//2206
+pub const XBUTTON1: ::DWORD = 0x0001;
+pub const XBUTTON2: ::DWORD = 0x0002;
+//2392
+pub const MK_LBUTTON: ::WPARAM = 0x0001;
+pub const MK_RBUTTON: ::WPARAM = 0x0002;
+pub const MK_SHIFT: ::WPARAM = 0x0004;
+pub const MK_CONTROL: ::WPARAM = 0x0008;
+pub const MK_MBUTTON: ::WPARAM = 0x0010;
+pub const MK_XBUTTON1: ::WPARAM = 0x0020;
+pub const MK_XBUTTON2: ::WPARAM = 0x0040;
+//2408
+pub const TME_HOVER: ::DWORD = 0x0000_0001;
+pub const TME_LEAVE: ::DWORD = 0x0000_0002;
+pub const TME_NONCLIENT: ::DWORD = 0x0000_0010;
+pub const TME_QUERY: ::DWORD = 0x4000_0000;
+pub const TME_CANCEL: ::DWORD = 0x8000_0000;
+pub const HWND_BROADCAST: ::HWND = 0xFFFF as ::HWND;
+pub const HWND_MESSAGE: ::HWND = -3isize as ::HWND;
+STRUCT!{struct TRACKMOUSEEVENT {
+ cbSize: ::DWORD,
+ dwFlags: ::DWORD,
+ hwndTrack: ::HWND,
+ dwHoverTime: ::DWORD,
+}}
+pub type LPTRACKMOUSEEVENT = *mut TRACKMOUSEEVENT;
+//2575
+STRUCT!{nodebug struct WINDOWPOS {
+ hwnd: ::HWND,
+ hwndInsertAfter: ::HWND,
+ x: ::c_int,
+ y: ::c_int,
+ cx: ::c_int,
+ cy: ::c_int,
+ flags: ::UINT,
+}}
+pub type LPWINDOWPOS = *mut WINDOWPOS;
+pub type PWINDOWPOS = *mut WINDOWPOS;
+//3082
+STRUCT!{struct CREATESTRUCTA {
+ lpCreateParams: ::LPVOID,
+ hInstance: ::HINSTANCE,
+ hMenu: ::HMENU,
+ hwndParent: ::HWND,
+ cy: ::c_int,
+ cx: ::c_int,
+ y: ::c_int,
+ x: ::c_int,
+ style: ::LONG,
+ lpszName: ::LPCSTR,
+ lpszClass: ::LPCSTR,
+ dwExStyle: ::DWORD,
+}}
+pub type LPCREATESTRUCTA = *mut CREATESTRUCTA;
+STRUCT!{struct CREATESTRUCTW {
+ lpCreateParams: ::LPVOID,
+ hInstance: ::HINSTANCE,
+ hMenu: ::HMENU,
+ hwndParent: ::HWND,
+ cy: ::c_int,
+ cx: ::c_int,
+ y: ::c_int,
+ x: ::c_int,
+ style: ::LONG,
+ lpszName: ::LPCWSTR,
+ lpszClass: ::LPCWSTR,
+ dwExStyle: ::DWORD,
+}}
+pub type LPCREATESTRUCTW = *mut CREATESTRUCTW;
+//3145
+STRUCT!{struct NMHDR {
+ hwndFrom: ::HWND,
+ idFrom: ::UINT_PTR,
+ code: ::UINT, // NM_ code
+}}
+pub type LPNMHDR = *mut NMHDR;
+//3400
+pub const PM_NOREMOVE: ::UINT = 0x0000;
+pub const PM_REMOVE: ::UINT = 0x0001;
+pub const PM_NOYIELD: ::UINT = 0x0002;
+pub const PM_QS_INPUT: ::UINT = QS_INPUT << 16;
+pub const PM_QS_POSTMESSAGE: ::UINT = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16;
+pub const PM_QS_PAINT: ::UINT = QS_PAINT << 16;
+pub const PM_QS_SENDMESSAGE: ::UINT = QS_SENDMESSAGE << 16;
+//
+pub const LWA_COLORKEY: ::DWORD = 0x00000001;
+pub const LWA_ALPHA: ::DWORD = 0x00000002;
+//3469
+pub const EWX_LOGOFF: ::UINT = 0x00000000;
+pub const EWX_SHUTDOWN: ::UINT = 0x00000001;
+pub const EWX_REBOOT: ::UINT = 0x00000002;
+pub const EWX_FORCE: ::UINT = 0x00000004;
+pub const EWX_POWEROFF: ::UINT = 0x00000008;
+pub const EWX_FORCEIFHUNG: ::UINT = 0x00000010;
+pub const EWX_QUICKRESOLVE: ::UINT = 0x00000020;
+pub const EWX_RESTARTAPPS: ::UINT = 0x00000040;
+pub const EWX_HYBRID_SHUTDOWN: ::UINT = 0x00400000;
+pub const EWX_BOOTOPTIONS: ::UINT = 0x01000000;
+//4054 (Win 7 SDK)
+STRUCT!{struct FLASHWINFO {
+ cbSize: ::UINT,
+ hwnd: ::HWND,
+ dwFlags: ::DWORD,
+ uCount: ::UINT,
+ dwTimeout: ::DWORD,
+}}
+pub type PFLASHWINFO = *mut FLASHWINFO;
+pub const FLASHW_STOP: ::DWORD = 0;
+pub const FLASHW_CAPTION: ::DWORD = 0x00000001;
+pub const FLASHW_TRAY: ::DWORD = 0x00000002;
+pub const FLASHW_ALL: ::DWORD = FLASHW_CAPTION | FLASHW_TRAY;
+pub const FLASHW_TIMER: ::DWORD = 0x00000004;
+pub const FLASHW_TIMERNOFG: ::DWORD = 0x0000000C;
+// 4674
+pub const HWND_TOP: ::HWND = 0 as ::HWND;
+pub const HWND_BOTTOM: ::HWND = 1 as ::HWND;
+pub const HWND_TOPMOST: ::HWND = -1isize as ::HWND;
+pub const HWND_NOTOPMOST: ::HWND = -2isize as ::HWND;
+//5499
+pub const MAPVK_VK_TO_VSC: ::UINT = 0;
+pub const MAPVK_VSC_TO_VK: ::UINT = 1;
+pub const MAPVK_VK_TO_CHAR: ::UINT = 2;
+pub const MAPVK_VSC_TO_VK_EX: ::UINT = 3;
+pub const MAPVK_VK_TO_VSC_EX: ::UINT = 4;
+//5741
+pub const KEYEVENTF_EXTENDEDKEY: ::DWORD = 0x0001;
+pub const KEYEVENTF_KEYUP: ::DWORD = 0x0002;
+pub const KEYEVENTF_UNICODE: ::DWORD = 0x0004;
+pub const KEYEVENTF_SCANCODE: ::DWORD = 0x0008;
+pub const MOUSEEVENTF_MOVE: ::DWORD = 0x0001;
+pub const MOUSEEVENTF_LEFTDOWN: ::DWORD = 0x0002;
+pub const MOUSEEVENTF_LEFTUP: ::DWORD = 0x0004;
+pub const MOUSEEVENTF_RIGHTDOWN: ::DWORD = 0x0008;
+pub const MOUSEEVENTF_RIGHTUP: ::DWORD = 0x0010;
+pub const MOUSEEVENTF_MIDDLEDOWN: ::DWORD = 0x0020;
+pub const MOUSEEVENTF_MIDDLEUP: ::DWORD = 0x0040;
+pub const MOUSEEVENTF_XDOWN: ::DWORD = 0x0080;
+pub const MOUSEEVENTF_XUP: ::DWORD = 0x0100;
+pub const MOUSEEVENTF_WHEEL: ::DWORD = 0x0800;
+pub const MOUSEEVENTF_HWHEEL: ::DWORD = 0x01000;
+pub const MOUSEEVENTF_MOVE_NOCOALESCE: ::DWORD = 0x2000;
+pub const MOUSEEVENTF_VIRTUALDESK: ::DWORD = 0x4000;
+pub const MOUSEEVENTF_ABSOLUTE: ::DWORD = 0x8000;
+STRUCT!{struct MOUSEINPUT {
+ dx: ::LONG,
+ dy: ::LONG,
+ mouseData: ::DWORD,
+ dwFlags: ::DWORD,
+ time: ::DWORD,
+ dwExtraInfo: ::ULONG_PTR,
+}}
+pub type PMOUSEINPUT = *mut MOUSEINPUT;
+pub type LPMOUSEINPUT = *mut MOUSEINPUT;
+STRUCT!{struct KEYBDINPUT {
+ wVk: ::WORD,
+ wScan: ::WORD,
+ dwFlags: ::DWORD,
+ time: ::DWORD,
+ dwExtraInfo: ::ULONG_PTR,
+}}
+pub type PKEYBDINPUT = *mut KEYBDINPUT;
+pub type LPKEYBDINPUT = *mut KEYBDINPUT;
+STRUCT!{struct HARDWAREINPUT {
+ uMsg: ::DWORD,
+ wParamL: ::WORD,
+ wParamH: ::WORD,
+}}
+pub type PHARDWAREINPUT = *mut HARDWAREINPUT;
+pub type LPHARDWAREINPUT= *mut HARDWAREINPUT;
+pub const INPUT_MOUSE: ::DWORD = 0;
+pub const INPUT_KEYBOARD: ::DWORD = 1;
+pub const INPUT_HARDWARE: ::DWORD = 2;
+#[cfg(target_arch = "x86")]
+STRUCT!{struct INPUT {
+ type_: ::DWORD,
+ u: [u32; 6],
+}}
+#[cfg(target_arch = "x86_64")]
+STRUCT!{struct INPUT {
+ type_: ::DWORD,
+ u: [u64; 4],
+}}
+UNION!{INPUT, u, mi, mi_mut, MOUSEINPUT}
+UNION!{INPUT, u, ki, ki_mut, KEYBDINPUT}
+UNION!{INPUT, u, hi, hi_mut, HARDWAREINPUT}
+pub type PINPUT = *mut INPUT;
+pub type LPINPUT = *mut INPUT;
+// if WINVER >= 0x0601
+DECLARE_HANDLE!(HTOUCHINPUT, HTOUCHINPUT__);
+STRUCT!{struct TOUCHINPUT {
+ x: ::LONG,
+ y: ::LONG,
+ hSource: ::HANDLE,
+ dwID: ::DWORD,
+ dwFlags: ::DWORD,
+ dwMask: ::DWORD,
+ dwTime: ::DWORD,
+ dwExtraInfo: ::ULONG_PTR,
+ cxContact: ::DWORD,
+ cyContact: ::DWORD,
+}}
+pub type PTOUCHINPUT = *mut TOUCHINPUT;
+pub type PCTOUCHINPUT = *const TOUCHINPUT;
+//Touch input flag values (TOUCHINPUT.dwFlags)
+pub const TOUCHEVENTF_MOVE: ::DWORD = 0x0001;
+pub const TOUCHEVENTF_DOWN: ::DWORD = 0x0002;
+pub const TOUCHEVENTF_UP: ::DWORD = 0x0004;
+pub const TOUCHEVENTF_INRANGE: ::DWORD = 0x0008;
+pub const TOUCHEVENTF_PRIMARY: ::DWORD = 0x0010;
+pub const TOUCHEVENTF_NOCOALESCE: ::DWORD = 0x0020;
+pub const TOUCHEVENTF_PEN: ::DWORD = 0x0040;
+pub const TOUCHEVENTF_PALM: ::DWORD = 0x0080;
+//Touch input mask values (TOUCHINPUT.dwMask)
+pub const TOUCHINPUTMASKF_TIMEFROMSYSTEM: ::DWORD = 0x0001;
+pub const TOUCHINPUTMASKF_EXTRAINFO: ::DWORD = 0x0002;
+pub const TOUCHINPUTMASKF_CONTACTAREA: ::DWORD = 0x0004;
+//RegisterTouchWindow flag values
+pub const TWF_FINETOUCH: ::ULONG = 0x00000001;
+pub const TWF_WANTPALM: ::ULONG = 0x00000002;
+// end if WINVER >= 0x0601
+//Indices for GetWindowLong etc.
+pub const GWL_EXSTYLE: ::c_int = -20;
+pub const GWL_STYLE: ::c_int = -16;
+pub const GWL_WNDPROC: ::c_int = -4;
+pub const GWLP_WNDPROC: ::c_int = -4;
+pub const GWL_HINSTANCE: ::c_int = -6;
+pub const GWLP_HINSTANCE: ::c_int = -6;
+pub const GWL_HWNDPARENT: ::c_int = -8;
+pub const GWLP_HWNDPARENT: ::c_int = -8;
+pub const GWL_ID: ::c_int = -12;
+pub const GWLP_ID: ::c_int = -12;
+pub const GWL_USERDATA: ::c_int = -21;
+pub const GWLP_USERDATA: ::c_int = -21;
+//5976
+ENUM!{enum POINTER_INPUT_TYPE {
+ PT_POINTER = 0x00000001,
+ PT_TOUCH = 0x00000002,
+ PT_PEN = 0x00000003,
+ PT_MOUSE = 0x00000004,
+ PT_TOUCHPAD = 0x00000005,
+}}
+//6566
+// flags for MsgWaitForMultipleObjectsEx
+pub const MWMO_WAITALL: ::DWORD = 0x0001;
+pub const MWMO_ALERTABLE: ::DWORD = 0x0002;
+pub const MWMO_INPUTAVAILABLE: ::DWORD = 0x0004;
+//6573
+pub const QS_KEY: ::UINT = 0x0001;
+pub const QS_MOUSEMOVE: ::UINT = 0x0002;
+pub const QS_MOUSEBUTTON: ::UINT = 0x0004;
+pub const QS_POSTMESSAGE: ::UINT = 0x0008;
+pub const QS_TIMER: ::UINT = 0x0010;
+pub const QS_PAINT: ::UINT = 0x0020;
+pub const QS_SENDMESSAGE: ::UINT = 0x0040;
+pub const QS_HOTKEY: ::UINT = 0x0080;
+pub const QS_ALLPOSTMESSAGE: ::UINT = 0x0100;
+pub const QS_RAWINPUT: ::UINT = 0x0400;
+pub const QS_TOUCH: ::UINT = 0x0800;
+pub const QS_POINTER: ::UINT = 0x1000;
+pub const QS_MOUSE: ::UINT = QS_MOUSEMOVE | QS_MOUSEBUTTON;
+pub const QS_INPUT: ::UINT = QS_MOUSE | QS_KEY | QS_RAWINPUT | QS_TOUCH | QS_POINTER;
+pub const QS_ALLEVENTS: ::UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY;
+pub const QS_ALLINPUT: ::UINT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER
+ | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE;
+//6789
+pub const SM_CXSCREEN: ::c_int = 0;
+pub const SM_CYSCREEN: ::c_int = 1;
+pub const SM_CXVSCROLL: ::c_int = 2;
+pub const SM_CYHSCROLL: ::c_int = 3;
+pub const SM_CYCAPTION: ::c_int = 4;
+pub const SM_CXBORDER: ::c_int = 5;
+pub const SM_CYBORDER: ::c_int = 6;
+pub const SM_CXDLGFRAME: ::c_int = 7;
+pub const SM_CYDLGFRAME: ::c_int = 8;
+pub const SM_CYVTHUMB: ::c_int = 9;
+pub const SM_CXHTHUMB: ::c_int = 10;
+pub const SM_CXICON: ::c_int = 11;
+pub const SM_CYICON: ::c_int = 12;
+pub const SM_CXCURSOR: ::c_int = 13;
+pub const SM_CYCURSOR: ::c_int = 14;
+pub const SM_CYMENU: ::c_int = 15;
+pub const SM_CXFULLSCREEN: ::c_int = 16;
+pub const SM_CYFULLSCREEN: ::c_int = 17;
+pub const SM_CYKANJIWINDOW: ::c_int = 18;
+pub const SM_MOUSEPRESENT: ::c_int = 19;
+pub const SM_CYVSCROLL: ::c_int = 20;
+pub const SM_CXHSCROLL: ::c_int = 21;
+pub const SM_DEBUG: ::c_int = 22;
+pub const SM_SWAPBUTTON: ::c_int = 23;
+pub const SM_RESERVED1: ::c_int = 24;
+pub const SM_RESERVED2: ::c_int = 25;
+pub const SM_RESERVED3: ::c_int = 26;
+pub const SM_RESERVED4: ::c_int = 27;
+pub const SM_CXMIN: ::c_int = 28;
+pub const SM_CYMIN: ::c_int = 29;
+pub const SM_CXSIZE: ::c_int = 30;
+pub const SM_CYSIZE: ::c_int = 31;
+pub const SM_CXFRAME: ::c_int = 32;
+pub const SM_CYFRAME: ::c_int = 33;
+pub const SM_CXMINTRACK: ::c_int = 34;
+pub const SM_CYMINTRACK: ::c_int = 35;
+pub const SM_CXDOUBLECLK: ::c_int = 36;
+pub const SM_CYDOUBLECLK: ::c_int = 37;
+pub const SM_CXICONSPACING: ::c_int = 38;
+pub const SM_CYICONSPACING: ::c_int = 39;
+pub const SM_MENUDROPALIGNMENT: ::c_int = 40;
+pub const SM_PENWINDOWS: ::c_int = 41;
+pub const SM_DBCSENABLED: ::c_int = 42;
+pub const SM_CMOUSEBUTTONS: ::c_int = 43;
+pub const SM_CXFIXEDFRAME: ::c_int = SM_CXDLGFRAME;
+pub const SM_CYFIXEDFRAME: ::c_int = SM_CYDLGFRAME;
+pub const SM_CXSIZEFRAME: ::c_int = SM_CXFRAME;
+pub const SM_CYSIZEFRAME: ::c_int = SM_CYFRAME;
+pub const SM_SECURE: ::c_int = 44;
+pub const SM_CXEDGE: ::c_int = 45;
+pub const SM_CYEDGE: ::c_int = 46;
+pub const SM_CXMINSPACING: ::c_int = 47;
+pub const SM_CYMINSPACING: ::c_int = 48;
+pub const SM_CXSMICON: ::c_int = 49;
+pub const SM_CYSMICON: ::c_int = 50;
+pub const SM_CYSMCAPTION: ::c_int = 51;
+pub const SM_CXSMSIZE: ::c_int = 52;
+pub const SM_CYSMSIZE: ::c_int = 53;
+pub const SM_CXMENUSIZE: ::c_int = 54;
+pub const SM_CYMENUSIZE: ::c_int = 55;
+pub const SM_ARRANGE: ::c_int = 56;
+pub const SM_CXMINIMIZED: ::c_int = 57;
+pub const SM_CYMINIMIZED: ::c_int = 58;
+pub const SM_CXMAXTRACK: ::c_int = 59;
+pub const SM_CYMAXTRACK: ::c_int = 60;
+pub const SM_CXMAXIMIZED: ::c_int = 61;
+pub const SM_CYMAXIMIZED: ::c_int = 62;
+pub const SM_NETWORK: ::c_int = 63;
+pub const SM_CLEANBOOT: ::c_int = 67;
+pub const SM_CXDRAG: ::c_int = 68;
+pub const SM_CYDRAG: ::c_int = 69;
+pub const SM_SHOWSOUNDS: ::c_int = 70;
+pub const SM_CXMENUCHECK: ::c_int = 71;
+pub const SM_CYMENUCHECK: ::c_int = 72;
+pub const SM_SLOWMACHINE: ::c_int = 73;
+pub const SM_MIDEASTENABLED: ::c_int = 74;
+pub const SM_MOUSEWHEELPRESENT: ::c_int = 75;
+pub const SM_XVIRTUALSCREEN: ::c_int = 76;
+pub const SM_YVIRTUALSCREEN: ::c_int = 77;
+pub const SM_CXVIRTUALSCREEN: ::c_int = 78;
+pub const SM_CYVIRTUALSCREEN: ::c_int = 79;
+pub const SM_CMONITORS: ::c_int = 80;
+pub const SM_SAMEDISPLAYFORMAT: ::c_int = 81;
+pub const SM_IMMENABLED: ::c_int = 82;
+pub const SM_CXFOCUSBORDER: ::c_int = 83;
+pub const SM_CYFOCUSBORDER: ::c_int = 84;
+pub const SM_TABLETPC: ::c_int = 86;
+pub const SM_MEDIACENTER: ::c_int = 87;
+pub const SM_STARTER: ::c_int = 88;
+pub const SM_SERVERR2: ::c_int = 89;
+pub const SM_MOUSEHORIZONTALWHEELPRESENT: ::c_int = 91;
+pub const SM_CXPADDEDBORDER: ::c_int = 92;
+pub const SM_DIGITIZER: ::c_int = 94;
+pub const SM_MAXIMUMTOUCHES: ::c_int = 95;
+pub const SM_CMETRICS: ::c_int = 97;
+pub const SM_REMOTESESSION: ::c_int = 0x1000;
+pub const SM_SHUTTINGDOWN: ::c_int = 0x2000;
+pub const SM_REMOTECONTROL: ::c_int = 0x2001;
+pub const SM_CARETBLINKINGENABLED: ::c_int = 0x2002;
+pub const SM_CONVERTIBLESLATEMODE: ::c_int = 0x2003;
+pub const SM_SYSTEMDOCKED: ::c_int = 0x2004;
+//8855 (Win 7 SDK)
+STRUCT!{struct ICONINFO {
+ fIcon: ::BOOL,
+ xHotspot: ::DWORD,
+ yHotspot: ::DWORD,
+ hbmMask: ::HBITMAP,
+ hbmColor: ::HBITMAP,
+}}
+pub type PICONINFO = *mut ICONINFO;
+//9066
+// Color indexes for use in GetSysColor and SetSysColor
+// 0-18 (after incrementing) are also valid in RegisterClass's WNDCLASS
+pub const COLOR_SCROLLBAR: ::c_int = 0;
+pub const COLOR_BACKGROUND: ::c_int = 1;
+pub const COLOR_ACTIVECAPTION: ::c_int = 2;
+pub const COLOR_INACTIVECAPTION: ::c_int = 3;
+pub const COLOR_MENU: ::c_int = 4;
+pub const COLOR_WINDOW: ::c_int = 5;
+pub const COLOR_WINDOWFRAME: ::c_int = 6;
+pub const COLOR_MENUTEXT: ::c_int = 7;
+pub const COLOR_WINDOWTEXT: ::c_int = 8;
+pub const COLOR_CAPTIONTEXT: ::c_int = 9;
+pub const COLOR_ACTIVEBORDER: ::c_int = 10;
+pub const COLOR_INACTIVEBORDER: ::c_int = 11;
+pub const COLOR_APPWORKSPACE: ::c_int = 12;
+pub const COLOR_HIGHLIGHT: ::c_int = 13;
+pub const COLOR_HIGHLIGHTTEXT: ::c_int = 14;
+pub const COLOR_BTNFACE: ::c_int = 15;
+pub const COLOR_BTNSHADOW: ::c_int = 16;
+pub const COLOR_GRAYTEXT: ::c_int = 17;
+pub const COLOR_BTNTEXT: ::c_int = 18;
+pub const COLOR_INACTIVECAPTIONTEXT: ::c_int = 19;
+pub const COLOR_BTNHIGHLIGHT: ::c_int = 20;
+// Introduced in Windows 95 (winver 0x0400):
+pub const COLOR_3DDKSHADOW: ::c_int = 21;
+pub const COLOR_3DLIGHT: ::c_int = 22;
+pub const COLOR_INFOTEXT: ::c_int = 23;
+pub const COLOR_INFOBK: ::c_int = 24;
+pub const COLOR_DESKTOP: ::c_int = COLOR_BACKGROUND;
+pub const COLOR_3DFACE: ::c_int = COLOR_BTNFACE;
+pub const COLOR_3DSHADOW: ::c_int = COLOR_BTNSHADOW;
+pub const COLOR_3DHIGHLIGHT: ::c_int = COLOR_BTNHIGHLIGHT;
+pub const COLOR_3DHILIGHT: ::c_int = COLOR_BTNHIGHLIGHT;
+pub const COLOR_BTNHILIGHT: ::c_int = COLOR_BTNHIGHLIGHT;
+// Introduced in Windows 2000 (winver 0x0500)
+pub const COLOR_HOTLIGHT: ::c_int = 26;
+pub const COLOR_GRADIENTACTIVECAPTION: ::c_int = 27;
+pub const COLOR_GRADIENTINACTIVECAPTION: ::c_int = 28;
+// Introduced in Windows XP (winver 0x0501)
+pub const COLOR_MENUHILIGHT: ::c_int = 29;
+pub const COLOR_MENUBAR: ::c_int = 30;
+//10069
+pub const IDC_ARROW: ::LPCWSTR = 32512 as ::LPCWSTR;
+pub const IDC_IBEAM: ::LPCWSTR = 32513 as ::LPCWSTR;
+pub const IDC_WAIT: ::LPCWSTR = 32514 as ::LPCWSTR;
+pub const IDC_CROSS: ::LPCWSTR = 32515 as ::LPCWSTR;
+pub const IDC_UPARROW: ::LPCWSTR = 32516 as ::LPCWSTR;
+pub const IDC_SIZE: ::LPCWSTR = 32640 as ::LPCWSTR;
+pub const IDC_ICON: ::LPCWSTR = 32641 as ::LPCWSTR;
+pub const IDC_SIZENWSE: ::LPCWSTR = 32642 as ::LPCWSTR;
+pub const IDC_SIZENESW: ::LPCWSTR = 32643 as ::LPCWSTR;
+pub const IDC_SIZEWE: ::LPCWSTR = 32644 as ::LPCWSTR;
+pub const IDC_SIZENS: ::LPCWSTR = 32645 as ::LPCWSTR;
+pub const IDC_SIZEALL: ::LPCWSTR = 32646 as ::LPCWSTR;
+pub const IDC_NO: ::LPCWSTR = 32648 as ::LPCWSTR;
+pub const IDC_HAND: ::LPCWSTR = 32649 as ::LPCWSTR;
+pub const IDC_APPSTARTING: ::LPCWSTR = 32650 as ::LPCWSTR;
+pub const IDC_HELP: ::LPCWSTR = 32651 as ::LPCWSTR;
+//10492
+pub const IDI_APPLICATION: ::LPCWSTR = 32512 as ::LPCWSTR;
+pub const IDI_HAND: ::LPCWSTR = 32513 as ::LPCWSTR;
+pub const IDI_QUESTION: ::LPCWSTR = 32514 as ::LPCWSTR;
+pub const IDI_EXCLAMATION: ::LPCWSTR = 32515 as ::LPCWSTR;
+pub const IDI_ASTERISK: ::LPCWSTR = 32516 as ::LPCWSTR;
+pub const IDI_WINLOGO: ::LPCWSTR = 32517 as ::LPCWSTR;
+pub const IDI_SHIELD: ::LPCWSTR = 32518 as ::LPCWSTR;
+pub const IDI_WARNING: ::LPCWSTR = IDI_EXCLAMATION;
+pub const IDI_ERROR: ::LPCWSTR = IDI_HAND;
+pub const IDI_INFORMATION: ::LPCWSTR = IDI_ASTERISK;
+pub const SPI_GETBEEP: ::UINT = 0x0001;
+pub const SPI_SETBEEP: ::UINT = 0x0002;
+pub const SPI_GETMOUSE: ::UINT = 0x0003;
+pub const SPI_SETMOUSE: ::UINT = 0x0004;
+pub const SPI_GETBORDER: ::UINT = 0x0005;
+pub const SPI_SETBORDER: ::UINT = 0x0006;
+pub const SPI_GETKEYBOARDSPEED: ::UINT = 0x000A;
+pub const SPI_SETKEYBOARDSPEED: ::UINT = 0x000B;
+pub const SPI_LANGDRIVER: ::UINT = 0x000C;
+pub const SPI_ICONHORIZONTALSPACING: ::UINT = 0x000D;
+pub const SPI_GETSCREENSAVETIMEOUT: ::UINT = 0x000E;
+pub const SPI_SETSCREENSAVETIMEOUT: ::UINT = 0x000F;
+pub const SPI_GETSCREENSAVEACTIVE: ::UINT = 0x0010;
+pub const SPI_SETSCREENSAVEACTIVE: ::UINT = 0x0011;
+pub const SPI_GETGRIDGRANULARITY: ::UINT = 0x0012;
+pub const SPI_SETGRIDGRANULARITY: ::UINT = 0x0013;
+pub const SPI_SETDESKWALLPAPER: ::UINT = 0x0014;
+pub const SPI_SETDESKPATTERN: ::UINT = 0x0015;
+pub const SPI_GETKEYBOARDDELAY: ::UINT = 0x0016;
+pub const SPI_SETKEYBOARDDELAY: ::UINT = 0x0017;
+pub const SPI_ICONVERTICALSPACING: ::UINT = 0x0018;
+pub const SPI_GETICONTITLEWRAP: ::UINT = 0x0019;
+pub const SPI_SETICONTITLEWRAP: ::UINT = 0x001A;
+pub const SPI_GETMENUDROPALIGNMENT: ::UINT = 0x001B;
+pub const SPI_SETMENUDROPALIGNMENT: ::UINT = 0x001C;
+pub const SPI_SETDOUBLECLKWIDTH: ::UINT = 0x001D;
+pub const SPI_SETDOUBLECLKHEIGHT: ::UINT = 0x001E;
+pub const SPI_GETICONTITLELOGFONT: ::UINT = 0x001F;
+pub const SPI_SETDOUBLECLICKTIME: ::UINT = 0x0020;
+pub const SPI_SETMOUSEBUTTONSWAP: ::UINT = 0x0021;
+pub const SPI_SETICONTITLELOGFONT: ::UINT = 0x0022;
+pub const SPI_GETFASTTASKSWITCH: ::UINT = 0x0023;
+pub const SPI_SETFASTTASKSWITCH: ::UINT = 0x0024;
+pub const SPI_SETDRAGFULLWINDOWS: ::UINT = 0x0025;
+pub const SPI_GETDRAGFULLWINDOWS: ::UINT = 0x0026;
+pub const SPI_GETNONCLIENTMETRICS: ::UINT = 0x0029;
+pub const SPI_SETNONCLIENTMETRICS: ::UINT = 0x002A;
+pub const SPI_GETMINIMIZEDMETRICS: ::UINT = 0x002B;
+pub const SPI_SETMINIMIZEDMETRICS: ::UINT = 0x002C;
+pub const SPI_GETICONMETRICS: ::UINT = 0x002D;
+pub const SPI_SETICONMETRICS: ::UINT = 0x002E;
+pub const SPI_SETWORKAREA: ::UINT = 0x002F;
+pub const SPI_GETWORKAREA: ::UINT = 0x0030;
+pub const SPI_SETPENWINDOWS: ::UINT = 0x0031;
+pub const SPI_GETHIGHCONTRAST: ::UINT = 0x0042;
+pub const SPI_SETHIGHCONTRAST: ::UINT = 0x0043;
+pub const SPI_GETKEYBOARDPREF: ::UINT = 0x0044;
+pub const SPI_SETKEYBOARDPREF: ::UINT = 0x0045;
+pub const SPI_GETSCREENREADER: ::UINT = 0x0046;
+pub const SPI_SETSCREENREADER: ::UINT = 0x0047;
+pub const SPI_GETANIMATION: ::UINT = 0x0048;
+pub const SPI_SETANIMATION: ::UINT = 0x0049;
+pub const SPI_GETFONTSMOOTHING: ::UINT = 0x004A;
+pub const SPI_SETFONTSMOOTHING: ::UINT = 0x004B;
+pub const SPI_SETDRAGWIDTH: ::UINT = 0x004C;
+pub const SPI_SETDRAGHEIGHT: ::UINT = 0x004D;
+pub const SPI_SETHANDHELD: ::UINT = 0x004E;
+pub const SPI_GETLOWPOWERTIMEOUT: ::UINT = 0x004F;
+pub const SPI_GETPOWEROFFTIMEOUT: ::UINT = 0x0050;
+pub const SPI_SETLOWPOWERTIMEOUT: ::UINT = 0x0051;
+pub const SPI_SETPOWEROFFTIMEOUT: ::UINT = 0x0052;
+pub const SPI_GETLOWPOWERACTIVE: ::UINT = 0x0053;
+pub const SPI_GETPOWEROFFACTIVE: ::UINT = 0x0054;
+pub const SPI_SETLOWPOWERACTIVE: ::UINT = 0x0055;
+pub const SPI_SETPOWEROFFACTIVE: ::UINT = 0x0056;
+pub const SPI_SETCURSORS: ::UINT = 0x0057;
+pub const SPI_SETICONS: ::UINT = 0x0058;
+pub const SPI_GETDEFAULTINPUTLANG: ::UINT = 0x0059;
+pub const SPI_SETDEFAULTINPUTLANG: ::UINT = 0x005A;
+pub const SPI_SETLANGTOGGLE: ::UINT = 0x005B;
+pub const SPI_GETWINDOWSEXTENSION: ::UINT = 0x005C;
+pub const SPI_SETMOUSETRAILS: ::UINT = 0x005D;
+pub const SPI_GETMOUSETRAILS: ::UINT = 0x005E;
+pub const SPI_SETSCREENSAVERRUNNING: ::UINT = 0x0061;
+pub const SPI_SCREENSAVERRUNNING: ::UINT = SPI_SETSCREENSAVERRUNNING;
+pub const SPI_GETFILTERKEYS: ::UINT = 0x0032;
+pub const SPI_SETFILTERKEYS: ::UINT = 0x0033;
+pub const SPI_GETTOGGLEKEYS: ::UINT = 0x0034;
+pub const SPI_SETTOGGLEKEYS: ::UINT = 0x0035;
+pub const SPI_GETMOUSEKEYS: ::UINT = 0x0036;
+pub const SPI_SETMOUSEKEYS: ::UINT = 0x0037;
+pub const SPI_GETSHOWSOUNDS: ::UINT = 0x0038;
+pub const SPI_SETSHOWSOUNDS: ::UINT = 0x0039;
+pub const SPI_GETSTICKYKEYS: ::UINT = 0x003A;
+pub const SPI_SETSTICKYKEYS: ::UINT = 0x003B;
+pub const SPI_GETACCESSTIMEOUT: ::UINT = 0x003C;
+pub const SPI_SETACCESSTIMEOUT: ::UINT = 0x003D;
+pub const SPI_GETSERIALKEYS: ::UINT = 0x003E;
+pub const SPI_SETSERIALKEYS: ::UINT = 0x003F;
+pub const SPI_GETSOUNDSENTRY: ::UINT = 0x0040;
+pub const SPI_SETSOUNDSENTRY: ::UINT = 0x0041;
+pub const SPI_GETSNAPTODEFBUTTON: ::UINT = 0x005F;
+pub const SPI_SETSNAPTODEFBUTTON: ::UINT = 0x0060;
+pub const SPI_GETMOUSEHOVERWIDTH: ::UINT = 0x0062;
+pub const SPI_SETMOUSEHOVERWIDTH: ::UINT = 0x0063;
+pub const SPI_GETMOUSEHOVERHEIGHT: ::UINT = 0x0064;
+pub const SPI_SETMOUSEHOVERHEIGHT: ::UINT = 0x0065;
+pub const SPI_GETMOUSEHOVERTIME: ::UINT = 0x0066;
+pub const SPI_SETMOUSEHOVERTIME: ::UINT = 0x0067;
+pub const SPI_GETWHEELSCROLLLINES: ::UINT = 0x0068;
+pub const SPI_SETWHEELSCROLLLINES: ::UINT = 0x0069;
+pub const SPI_GETMENUSHOWDELAY: ::UINT = 0x006A;
+pub const SPI_SETMENUSHOWDELAY: ::UINT = 0x006B;
+pub const SPI_GETWHEELSCROLLCHARS: ::UINT = 0x006C;
+pub const SPI_SETWHEELSCROLLCHARS: ::UINT = 0x006D;
+pub const SPI_GETSHOWIMEUI: ::UINT = 0x006E;
+pub const SPI_SETSHOWIMEUI: ::UINT = 0x006F;
+pub const SPI_GETMOUSESPEED: ::UINT = 0x0070;
+pub const SPI_SETMOUSESPEED: ::UINT = 0x0071;
+pub const SPI_GETSCREENSAVERRUNNING: ::UINT = 0x0072;
+pub const SPI_GETDESKWALLPAPER: ::UINT = 0x0073;
+pub const SPI_GETAUDIODESCRIPTION: ::UINT = 0x0074;
+pub const SPI_SETAUDIODESCRIPTION: ::UINT = 0x0075;
+pub const SPI_GETSCREENSAVESECURE: ::UINT = 0x0076;
+pub const SPI_SETSCREENSAVESECURE: ::UINT = 0x0077;
+pub const SPI_GETHUNGAPPTIMEOUT: ::UINT = 0x0078;
+pub const SPI_SETHUNGAPPTIMEOUT: ::UINT = 0x0079;
+pub const SPI_GETWAITTOKILLTIMEOUT: ::UINT = 0x007A;
+pub const SPI_SETWAITTOKILLTIMEOUT: ::UINT = 0x007B;
+pub const SPI_GETWAITTOKILLSERVICETIMEOUT: ::UINT = 0x007C;
+pub const SPI_SETWAITTOKILLSERVICETIMEOUT: ::UINT = 0x007D;
+pub const SPI_GETMOUSEDOCKTHRESHOLD: ::UINT = 0x007E;
+pub const SPI_SETMOUSEDOCKTHRESHOLD: ::UINT = 0x007F;
+pub const SPI_GETPENDOCKTHRESHOLD: ::UINT = 0x0080;
+pub const SPI_SETPENDOCKTHRESHOLD: ::UINT = 0x0081;
+pub const SPI_GETWINARRANGING: ::UINT = 0x0082;
+pub const SPI_SETWINARRANGING: ::UINT = 0x0083;
+pub const SPI_GETMOUSEDRAGOUTTHRESHOLD: ::UINT = 0x0084;
+pub const SPI_SETMOUSEDRAGOUTTHRESHOLD: ::UINT = 0x0085;
+pub const SPI_GETPENDRAGOUTTHRESHOLD: ::UINT = 0x0086;
+pub const SPI_SETPENDRAGOUTTHRESHOLD: ::UINT = 0x0087;
+pub const SPI_GETMOUSESIDEMOVETHRESHOLD: ::UINT = 0x0088;
+pub const SPI_SETMOUSESIDEMOVETHRESHOLD: ::UINT = 0x0089;
+pub const SPI_GETPENSIDEMOVETHRESHOLD: ::UINT = 0x008A;
+pub const SPI_SETPENSIDEMOVETHRESHOLD: ::UINT = 0x008B;
+pub const SPI_GETDRAGFROMMAXIMIZE: ::UINT = 0x008C;
+pub const SPI_SETDRAGFROMMAXIMIZE: ::UINT = 0x008D;
+pub const SPI_GETSNAPSIZING: ::UINT = 0x008E;
+pub const SPI_SETSNAPSIZING: ::UINT = 0x008F;
+pub const SPI_GETDOCKMOVING: ::UINT = 0x0090;
+pub const SPI_SETDOCKMOVING: ::UINT = 0x0091;
+pub const SPI_GETACTIVEWINDOWTRACKING: ::UINT = 0x1000;
+pub const SPI_SETACTIVEWINDOWTRACKING: ::UINT = 0x1001;
+pub const SPI_GETMENUANIMATION: ::UINT = 0x1002;
+pub const SPI_SETMENUANIMATION: ::UINT = 0x1003;
+pub const SPI_GETCOMBOBOXANIMATION: ::UINT = 0x1004;
+pub const SPI_SETCOMBOBOXANIMATION: ::UINT = 0x1005;
+pub const SPI_GETLISTBOXSMOOTHSCROLLING: ::UINT = 0x1006;
+pub const SPI_SETLISTBOXSMOOTHSCROLLING: ::UINT = 0x1007;
+pub const SPI_GETGRADIENTCAPTIONS: ::UINT = 0x1008;
+pub const SPI_SETGRADIENTCAPTIONS: ::UINT = 0x1009;
+pub const SPI_GETKEYBOARDCUES: ::UINT = 0x100A;
+pub const SPI_SETKEYBOARDCUES: ::UINT = 0x100B;
+pub const SPI_GETMENUUNDERLINES: ::UINT = SPI_GETKEYBOARDCUES;
+pub const SPI_SETMENUUNDERLINES: ::UINT = SPI_SETKEYBOARDCUES;
+pub const SPI_GETACTIVEWNDTRKZORDER: ::UINT = 0x100C;
+pub const SPI_SETACTIVEWNDTRKZORDER: ::UINT = 0x100D;
+pub const SPI_GETHOTTRACKING: ::UINT = 0x100E;
+pub const SPI_SETHOTTRACKING: ::UINT = 0x100F;
+pub const SPI_GETMENUFADE: ::UINT = 0x1012;
+pub const SPI_SETMENUFADE: ::UINT = 0x1013;
+pub const SPI_GETSELECTIONFADE: ::UINT = 0x1014;
+pub const SPI_SETSELECTIONFADE: ::UINT = 0x1015;
+pub const SPI_GETTOOLTIPANIMATION: ::UINT = 0x1016;
+pub const SPI_SETTOOLTIPANIMATION: ::UINT = 0x1017;
+pub const SPI_GETTOOLTIPFADE: ::UINT = 0x1018;
+pub const SPI_SETTOOLTIPFADE: ::UINT = 0x1019;
+pub const SPI_GETCURSORSHADOW: ::UINT = 0x101A;
+pub const SPI_SETCURSORSHADOW: ::UINT = 0x101B;
+pub const SPI_GETMOUSESONAR: ::UINT = 0x101C;
+pub const SPI_SETMOUSESONAR: ::UINT = 0x101D;
+pub const SPI_GETMOUSECLICKLOCK: ::UINT = 0x101E;
+pub const SPI_SETMOUSECLICKLOCK: ::UINT = 0x101F;
+pub const SPI_GETMOUSEVANISH: ::UINT = 0x1020;
+pub const SPI_SETMOUSEVANISH: ::UINT = 0x1021;
+pub const SPI_GETFLATMENU: ::UINT = 0x1022;
+pub const SPI_SETFLATMENU: ::UINT = 0x1023;
+pub const SPI_GETDROPSHADOW: ::UINT = 0x1024;
+pub const SPI_SETDROPSHADOW: ::UINT = 0x1025;
+pub const SPI_GETBLOCKSENDINPUTRESETS: ::UINT = 0x1026;
+pub const SPI_SETBLOCKSENDINPUTRESETS: ::UINT = 0x1027;
+pub const SPI_GETUIEFFECTS: ::UINT = 0x103E;
+pub const SPI_SETUIEFFECTS: ::UINT = 0x103F;
+pub const SPI_GETDISABLEOVERLAPPEDCONTENT: ::UINT = 0x1040;
+pub const SPI_SETDISABLEOVERLAPPEDCONTENT: ::UINT = 0x1041;
+pub const SPI_GETCLIENTAREAANIMATION: ::UINT = 0x1042;
+pub const SPI_SETCLIENTAREAANIMATION: ::UINT = 0x1043;
+pub const SPI_GETCLEARTYPE: ::UINT = 0x1048;
+pub const SPI_SETCLEARTYPE: ::UINT = 0x1049;
+pub const SPI_GETSPEECHRECOGNITION: ::UINT = 0x104A;
+pub const SPI_SETSPEECHRECOGNITION: ::UINT = 0x104B;
+pub const SPI_GETFOREGROUNDLOCKTIMEOUT: ::UINT = 0x2000;
+pub const SPI_SETFOREGROUNDLOCKTIMEOUT: ::UINT = 0x2001;
+pub const SPI_GETACTIVEWNDTRKTIMEOUT: ::UINT = 0x2002;
+pub const SPI_SETACTIVEWNDTRKTIMEOUT: ::UINT = 0x2003;
+pub const SPI_GETFOREGROUNDFLASHCOUNT: ::UINT = 0x2004;
+pub const SPI_SETFOREGROUNDFLASHCOUNT: ::UINT = 0x2005;
+pub const SPI_GETCARETWIDTH: ::UINT = 0x2006;
+pub const SPI_SETCARETWIDTH: ::UINT = 0x2007;
+pub const SPI_GETMOUSECLICKLOCKTIME: ::UINT = 0x2008;
+pub const SPI_SETMOUSECLICKLOCKTIME: ::UINT = 0x2009;
+pub const SPI_GETFONTSMOOTHINGTYPE: ::UINT = 0x200A;
+pub const SPI_SETFONTSMOOTHINGTYPE: ::UINT = 0x200B;
+pub const FE_FONTSMOOTHINGSTANDARD: ::UINT = 0x0001;
+pub const FE_FONTSMOOTHINGCLEARTYPE: ::UINT = 0x0002;
+pub const SPI_GETFONTSMOOTHINGCONTRAST: ::UINT = 0x200C;
+pub const SPI_SETFONTSMOOTHINGCONTRAST: ::UINT = 0x200D;
+pub const SPI_GETFOCUSBORDERWIDTH: ::UINT = 0x200E;
+pub const SPI_SETFOCUSBORDERWIDTH: ::UINT = 0x200F;
+pub const SPI_GETFOCUSBORDERHEIGHT: ::UINT = 0x2010;
+pub const SPI_SETFOCUSBORDERHEIGHT: ::UINT = 0x2011;
+pub const SPI_GETFONTSMOOTHINGORIENTATION: ::UINT = 0x2012;
+pub const SPI_SETFONTSMOOTHINGORIENTATION: ::UINT = 0x2013;
+pub const FE_FONTSMOOTHINGORIENTATIONBGR: ::UINT = 0x0000;
+pub const FE_FONTSMOOTHINGORIENTATIONRGB: ::UINT = 0x0001;
+pub const SPI_GETMINIMUMHITRADIUS: ::UINT = 0x2014;
+pub const SPI_SETMINIMUMHITRADIUS: ::UINT = 0x2015;
+pub const SPI_GETMESSAGEDURATION: ::UINT = 0x2016;
+pub const SPI_SETMESSAGEDURATION: ::UINT = 0x2017;
+//11264
+pub const CB_GETEDITSEL: ::UINT = 0x0140;
+pub const CB_LIMITTEXT: ::UINT = 0x0141;
+pub const CB_SETEDITSEL: ::UINT = 0x0142;
+pub const CB_ADDSTRING: ::UINT = 0x0143;
+pub const CB_DELETESTRING: ::UINT = 0x0144;
+pub const CB_DIR: ::UINT = 0x0145;
+pub const CB_GETCOUNT: ::UINT = 0x0146;
+pub const CB_GETCURSEL: ::UINT = 0x0147;
+pub const CB_GETLBTEXT: ::UINT = 0x0148;
+pub const CB_GETLBTEXTLEN: ::UINT = 0x0149;
+pub const CB_INSERTSTRING: ::UINT = 0x014A;
+pub const CB_RESETCONTENT: ::UINT = 0x014B;
+pub const CB_FINDSTRING: ::UINT = 0x014C;
+pub const CB_SELECTSTRING: ::UINT = 0x014D;
+pub const CB_SETCURSEL: ::UINT = 0x014E;
+pub const CB_SHOWDROPDOWN: ::UINT = 0x014F;
+pub const CB_GETITEMDATA: ::UINT = 0x0150;
+pub const CB_SETITEMDATA: ::UINT = 0x0151;
+pub const CB_GETDROPPEDCONTROLRECT: ::UINT = 0x0152;
+pub const CB_SETITEMHEIGHT: ::UINT = 0x0153;
+pub const CB_GETITEMHEIGHT: ::UINT = 0x0154;
+pub const CB_SETEXTENDEDUI: ::UINT = 0x0155;
+pub const CB_GETEXTENDEDUI: ::UINT = 0x0156;
+pub const CB_GETDROPPEDSTATE: ::UINT = 0x0157;
+pub const CB_FINDSTRINGEXACT: ::UINT = 0x0158;
+pub const CB_SETLOCALE: ::UINT = 0x0159;
+pub const CB_GETLOCALE: ::UINT = 0x015A;
+pub const CB_GETTOPINDEX: ::UINT = 0x015b;
+pub const CB_SETTOPINDEX: ::UINT = 0x015c;
+pub const CB_GETHORIZONTALEXTENT: ::UINT = 0x015d;
+pub const CB_SETHORIZONTALEXTENT: ::UINT = 0x015e;
+pub const CB_GETDROPPEDWIDTH: ::UINT = 0x015f;
+pub const CB_SETDROPPEDWIDTH: ::UINT = 0x0160;
+pub const CB_INITSTORAGE: ::UINT = 0x0161;
+//12141
+STRUCT!{nodebug struct NONCLIENTMETRICSA {
+ cbSize: ::UINT,
+ iBorderWidth: ::c_int,
+ iScrollWidth: ::c_int,
+ iScrollHeight: ::c_int,
+ iCaptionWidth: ::c_int,
+ iCaptionHeight: ::c_int,
+ lfCaptionFont: ::LOGFONTA,
+ iSmCaptionWidth: ::c_int,
+ iSmCaptionHeight: ::c_int,
+ lfSmCaptionFont: ::LOGFONTA,
+ iMenuWidth: ::c_int,
+ iMenuHeight: ::c_int,
+ lfMenuFont: ::LOGFONTA,
+ lfStatusFont: ::LOGFONTA,
+ lfMessageFont: ::LOGFONTA,
+ iPaddedBorderWidth: ::c_int,
+}}
+pub type LPNONCLIENTMETRICSA = *mut NONCLIENTMETRICSA;
+STRUCT!{nodebug struct NONCLIENTMETRICSW {
+ cbSize: ::UINT,
+ iBorderWidth: ::c_int,
+ iScrollWidth: ::c_int,
+ iScrollHeight: ::c_int,
+ iCaptionWidth: ::c_int,
+ iCaptionHeight: ::c_int,
+ lfCaptionFont: ::LOGFONTW,
+ iSmCaptionWidth: ::c_int,
+ iSmCaptionHeight: ::c_int,
+ lfSmCaptionFont: ::LOGFONTW,
+ iMenuWidth: ::c_int,
+ iMenuHeight: ::c_int,
+ lfMenuFont: ::LOGFONTW,
+ lfStatusFont: ::LOGFONTW,
+ lfMessageFont: ::LOGFONTW,
+ iPaddedBorderWidth: ::c_int,
+}}
+pub type LPNONCLIENTMETRICSW = *mut NONCLIENTMETRICSW;
+//12869
+pub const MONITOR_DEFAULTTONULL: ::DWORD = 0x00000000;
+pub const MONITOR_DEFAULTTOPRIMARY: ::DWORD = 0x00000001;
+pub const MONITOR_DEFAULTTONEAREST: ::DWORD = 0x00000002;
+//12900
+pub const MONITORINFOF_PRIMARY: ::DWORD = 1;
+pub const CCHDEVICENAME: usize = 32;
+STRUCT!{struct MONITORINFO {
+ cbSize: ::DWORD,
+ rcMonitor: ::RECT,
+ rcWork: ::RECT,
+ dwFlags: ::DWORD,
+}}
+pub type LPMONITORINFO = *mut MONITORINFO;
+STRUCT!{struct MONITORINFOEXA {
+ cbSize: ::DWORD,
+ rcMonitor: ::RECT,
+ rcWork: ::RECT,
+ dwFlags: ::DWORD,
+ szDevice: [::CHAR; ::CCHDEVICENAME],
+}}
+pub type LPMONITORINFOEXA = *mut MONITORINFOEXA;
+STRUCT!{struct MONITORINFOEXW {
+ cbSize: ::DWORD,
+ rcMonitor: ::RECT,
+ rcWork: ::RECT,
+ dwFlags: ::DWORD,
+ szDevice: [::WCHAR; ::CCHDEVICENAME],
+}}
+pub type LPMONITORINFOEXW = *mut MONITORINFOEXW;
+//12971
+pub type MONITORENUMPROC = Option<unsafe extern "system" fn(
+ ::HMONITOR, ::HDC, ::LPRECT, ::LPARAM,
+) -> ::BOOL>;
+//14098
+DECLARE_HANDLE!(HRAWINPUT, HRAWINPUT__);
+pub fn GET_RAWINPUT_CODE_WPARAM(wParam: ::WPARAM) -> ::WPARAM { wParam & 0xff }
+pub const RIM_INPUT: ::WPARAM = 0;
+pub const RIM_INPUTSINK: ::WPARAM = 1;
+STRUCT!{struct RAWINPUTHEADER {
+ dwType: ::DWORD,
+ dwSize: ::DWORD,
+ hDevice: ::HANDLE,
+ wParam: ::WPARAM,
+}}
+pub type PRAWINPUTHEADER = *mut RAWINPUTHEADER;
+pub type LPRAWINPUTHEADER = *mut RAWINPUTHEADER;
+pub const RIM_TYPEMOUSE: ::DWORD = 0;
+pub const RIM_TYPEKEYBOARD: ::DWORD = 1;
+pub const RIM_TYPEHID: ::DWORD = 2;
+STRUCT!{struct RAWMOUSE {
+ usFlags: ::USHORT,
+ memory_padding: ::USHORT, // 16bit Padding for 32bit align in following union
+ usButtonFlags: ::USHORT,
+ usButtonData: ::USHORT,
+ ulRawButtons: ::ULONG,
+ lLastX: ::LONG,
+ lLastY: ::LONG,
+ ulExtraInformation: ::ULONG,
+}}
+pub type PRAWMOUSE = *mut RAWMOUSE;
+pub type LPRAWMOUSE = *mut RAWMOUSE;
+pub const RI_MOUSE_LEFT_BUTTON_DOWN: ::USHORT = 0x0001;
+pub const RI_MOUSE_LEFT_BUTTON_UP: ::USHORT = 0x0002;
+pub const RI_MOUSE_RIGHT_BUTTON_DOWN: ::USHORT = 0x0004;
+pub const RI_MOUSE_RIGHT_BUTTON_UP: ::USHORT = 0x0008;
+pub const RI_MOUSE_MIDDLE_BUTTON_DOWN: ::USHORT = 0x0010;
+pub const RI_MOUSE_MIDDLE_BUTTON_UP: ::USHORT = 0x0020;
+pub const RI_MOUSE_BUTTON_1_DOWN: ::USHORT = RI_MOUSE_LEFT_BUTTON_DOWN;
+pub const RI_MOUSE_BUTTON_1_UP: ::USHORT = RI_MOUSE_LEFT_BUTTON_UP;
+pub const RI_MOUSE_BUTTON_2_DOWN: ::USHORT = RI_MOUSE_RIGHT_BUTTON_DOWN;
+pub const RI_MOUSE_BUTTON_2_UP: ::USHORT = RI_MOUSE_RIGHT_BUTTON_UP;
+pub const RI_MOUSE_BUTTON_3_DOWN: ::USHORT = RI_MOUSE_MIDDLE_BUTTON_DOWN;
+pub const RI_MOUSE_BUTTON_3_UP: ::USHORT = RI_MOUSE_MIDDLE_BUTTON_UP;
+pub const RI_MOUSE_BUTTON_4_DOWN: ::USHORT = 0x0040;
+pub const RI_MOUSE_BUTTON_4_UP: ::USHORT = 0x0080;
+pub const RI_MOUSE_BUTTON_5_DOWN: ::USHORT = 0x0100;
+pub const RI_MOUSE_BUTTON_5_UP: ::USHORT = 0x0200;
+pub const RI_MOUSE_WHEEL: ::USHORT = 0x0400;
+pub const MOUSE_MOVE_RELATIVE: ::USHORT = 0;
+pub const MOUSE_MOVE_ABSOLUTE: ::USHORT = 1;
+pub const MOUSE_VIRTUAL_DESKTOP: ::USHORT = 0x02;
+pub const MOUSE_ATTRIBUTES_CHANGED: ::USHORT = 0x04;
+pub const MOUSE_MOVE_NOCOALESCE: ::USHORT = 0x08;
+STRUCT!{struct RAWKEYBOARD {
+ MakeCode: ::USHORT,
+ Flags: ::USHORT,
+ Reserved: ::USHORT,
+ VKey: ::USHORT,
+ Message: ::UINT,
+ ExtraInformation: ::ULONG,
+}}
+pub type PRAWKEYBOARD = *mut RAWKEYBOARD;
+pub type LPRAWKEYBOARD = *mut RAWKEYBOARD;
+pub const KEYBOARD_OVERRUN_MAKE_CODE: ::DWORD = 0xFF;
+pub const RI_KEY_MAKE: ::DWORD = 0;
+pub const RI_KEY_BREAK: ::DWORD = 1;
+pub const RI_KEY_E0: ::DWORD = 2;
+pub const RI_KEY_E1: ::DWORD = 4;
+pub const RI_KEY_TERMSRV_SET_LED: ::DWORD = 8;
+pub const RI_KEY_TERMSRV_SHADOW: ::DWORD = 0x10;
+STRUCT!{struct RAWHID {
+ dwSizeHid: ::DWORD,
+ dwCount: ::DWORD,
+ bRawData: [::BYTE; 0],
+}}
+pub type PRAWHID = *mut RAWHID;
+pub type LPRAWHID = *mut RAWHID;
+STRUCT!{struct RAWINPUT {
+ header: RAWINPUTHEADER,
+ mouse: RAWMOUSE,
+}}
+UNION!(RAWINPUT, mouse, mouse, mouse_mut, RAWMOUSE);
+UNION!(RAWINPUT, mouse, keyboard, keyboard_mut, RAWKEYBOARD);
+UNION!(RAWINPUT, mouse, hid, hid_mut, RAWHID);
+#[test]
+fn test_RAWINPUT() {
+ use std::mem::{size_of, align_of};
+ assert!(size_of::<RAWMOUSE>() >= size_of::<RAWMOUSE>());
+ assert!(size_of::<RAWMOUSE>() >= size_of::<RAWKEYBOARD>());
+ assert!(size_of::<RAWMOUSE>() >= size_of::<RAWHID>());
+ assert!(align_of::<RAWMOUSE>() >= align_of::<RAWMOUSE>());
+ assert!(align_of::<RAWMOUSE>() >= align_of::<RAWKEYBOARD>());
+ assert!(align_of::<RAWMOUSE>() >= align_of::<RAWHID>());
+}
+pub type PRAWINPUT = *mut RAWINPUT;
+pub type LPRAWINPUT = *mut RAWINPUT;
+pub const RID_INPUT: ::DWORD = 0x10000003;
+pub const RID_HEADER: ::DWORD = 0x10000005;
+pub const RIDI_PREPARSEDDATA: ::DWORD = 0x20000005;
+pub const RIDI_DEVICENAME: ::DWORD = 0x20000007;
+pub const RIDI_DEVICEINFO: ::DWORD = 0x2000000b;
+STRUCT!{struct RID_DEVICE_INFO_MOUSE {
+ dwId: ::DWORD,
+ dwNumberOfButtons: ::DWORD,
+ dwSampleRate: ::DWORD,
+ fHasHorizontalWheel: ::BOOL,
+}}
+pub type PRID_DEVICE_INFO_MOUSE = *mut RID_DEVICE_INFO_MOUSE;
+STRUCT!{struct RID_DEVICE_INFO_KEYBOARD {
+ dwType: ::DWORD,
+ dwSubType: ::DWORD,
+ dwKeyboardMode: ::DWORD,
+ dwNumberOfFunctionKeys: ::DWORD,
+ dwNumberOfIndicators: ::DWORD,
+ dwNumberOfKeysTotal: ::DWORD,
+}}
+pub type PRID_DEVICE_INFO_KEYBOARD = *mut RID_DEVICE_INFO_KEYBOARD;
+STRUCT!{struct RID_DEVICE_INFO_HID {
+ dwVendorId: ::DWORD,
+ dwProductId: ::DWORD,
+ dwVersionNumber: ::DWORD,
+ usUsagePage: ::USHORT,
+ usUsage: ::USHORT,
+}}
+pub type PRID_DEVICE_INFO_HID = *mut RID_DEVICE_INFO_HID;
+STRUCT!{struct RID_DEVICE_INFO {
+ cbSize: ::DWORD,
+ dwType: ::DWORD,
+ keyboard: RID_DEVICE_INFO_KEYBOARD,
+}}
+UNION!(RID_DEVICE_INFO, keyboard, mouse, mouse_mut, RID_DEVICE_INFO_MOUSE);
+UNION!(RID_DEVICE_INFO, keyboard, keyboard, keyboard_mut, RID_DEVICE_INFO_KEYBOARD);
+UNION!(RID_DEVICE_INFO, keyboard, hid, hid_mut, RID_DEVICE_INFO_HID);
+#[test]
+fn test_RID_DEVICE_INFO() {
+ use std::mem::{size_of, align_of};
+ assert!(size_of::<RID_DEVICE_INFO_KEYBOARD>() >= size_of::<RID_DEVICE_INFO_MOUSE>());
+ assert!(size_of::<RID_DEVICE_INFO_KEYBOARD>() >= size_of::<RID_DEVICE_INFO_KEYBOARD>());
+ assert!(size_of::<RID_DEVICE_INFO_KEYBOARD>() >= size_of::<RID_DEVICE_INFO_HID>());
+ assert!(align_of::<RID_DEVICE_INFO_KEYBOARD>() >= align_of::<RID_DEVICE_INFO_MOUSE>());
+ assert!(align_of::<RID_DEVICE_INFO_KEYBOARD>()
+ >= align_of::<RID_DEVICE_INFO_KEYBOARD>());
+ assert!(align_of::<RID_DEVICE_INFO_KEYBOARD>() >= align_of::<RID_DEVICE_INFO_HID>());
+}
+pub type PRID_DEVICE_INFO = *mut RID_DEVICE_INFO;
+pub type LPRID_DEVICE_INFO = *mut RID_DEVICE_INFO;
+STRUCT!{struct RAWINPUTDEVICE {
+ usUsagePage: ::USHORT,
+ usUsage: ::USHORT,
+ dwFlags: ::DWORD,
+ hwndTarget: ::HWND,
+}}
+pub type PRAWINPUTDEVICE = *mut RAWINPUTDEVICE;
+pub type LPRAWINPUTDEVICE = *mut RAWINPUTDEVICE;
+pub type PCRAWINPUTDEVICE = *const RAWINPUTDEVICE;
+pub const RIDEV_REMOVE: ::DWORD = 0x00000001;
+pub const RIDEV_EXCLUDE: ::DWORD = 0x00000010;
+pub const RIDEV_PAGEONLY: ::DWORD = 0x00000020;
+pub const RIDEV_NOLEGACY: ::DWORD = 0x00000030;
+pub const RIDEV_INPUTSINK: ::DWORD = 0x00000100;
+pub const RIDEV_CAPTUREMOUSE: ::DWORD = 0x00000200;
+pub const RIDEV_NOHOTKEYS: ::DWORD = 0x00000200;
+pub const RIDEV_APPKEYS: ::DWORD = 0x00000400;
+pub const RIDEV_EXINPUTSINK: ::DWORD = 0x00001000;
+pub const RIDEV_DEVNOTIFY: ::DWORD = 0x00002000;
+pub const RIDEV_EXMODEMASK: ::DWORD = 0x000000F0;
+pub const GIDC_ARRIVAL: ::DWORD = 1;
+pub const GIDC_REMOVAL: ::DWORD = 2;
+STRUCT!{struct RAWINPUTDEVICELIST {
+ hDevice: ::HANDLE,
+ dwType: ::DWORD,
+}}
+pub type PRAWINPUTDEVICELIST = *mut RAWINPUTDEVICELIST;
+STRUCT!{struct CHANGEFILTERSTRUCT {
+ cbSize: ::DWORD,
+ ExtStatus: ::DWORD,
+}}
+pub type PCHANGEFILTERSTRUCT = *mut CHANGEFILTERSTRUCT;
+STRUCT!{struct DLGTEMPLATE {
+ style: ::DWORD,
+ dwExtendedStyle: ::DWORD,
+ cdit: ::WORD,
+ x: ::c_short,
+ y: ::c_short,
+ cx: ::c_short,
+ cy: ::c_short,
+}}
+pub type LPDLGTEMPLATEA = *mut DLGTEMPLATE;
+pub type LPDLGTEMPLATEW = *mut DLGTEMPLATE;
+pub type LPCDLGTEMPLATEA = *const DLGTEMPLATE;
+pub type LPCDLGTEMPLATEW = *const DLGTEMPLATE;
+STRUCT!{struct DRAWTEXTPARAMS {
+ cbSize: ::UINT,
+ iTabLength: ::c_int,
+ iLeftMargin: ::c_int,
+ iRightMargin: ::c_int,
+ uiLengthDrawn: ::UINT,
+}}
+pub type LPDRAWTEXTPARAMS = *mut DRAWTEXTPARAMS;
+STRUCT!{struct ACCEL {
+ fVirt: ::BYTE,
+ key: ::WORD,
+ cmd: ::WORD,
+}}
+pub type LPACCEL = *mut ACCEL;
+STRUCT!{struct MENUITEMINFOA {
+ cbSize: ::UINT,
+ fMask: ::UINT,
+ fType: ::UINT,
+ fState: ::UINT,
+ wID: ::UINT,
+ hSubMenu: ::HMENU,
+ hbmpChecked: ::HBITMAP,
+ hbmpUnchecked: ::HBITMAP,
+ dwItemData: ::ULONG_PTR,
+ dwTypeData: ::LPSTR,
+ cch: ::UINT,
+ hbmpItem: ::HBITMAP,
+}}
+pub type LPMENUITEMINFOA = *mut MENUITEMINFOA;
+pub type LPCMENUITEMINFOA = *const MENUITEMINFOA;
+STRUCT!{struct MENUITEMINFOW {
+ cbSize: ::UINT,
+ fMask: ::UINT,
+ fType: ::UINT,
+ fState: ::UINT,
+ wID: ::UINT,
+ hSubMenu: ::HMENU,
+ hbmpChecked: ::HBITMAP,
+ hbmpUnchecked: ::HBITMAP,
+ dwItemData: ::ULONG_PTR,
+ dwTypeData: ::LPWSTR,
+ cch: ::UINT,
+ hbmpItem: ::HBITMAP,
+}}
+pub type LPMENUITEMINFOW = *mut MENUITEMINFOW;
+pub type LPCMENUITEMINFOW = *const MENUITEMINFOW;
+STRUCT!{nodebug struct MSGBOXPARAMSA {
+ cbSize: ::UINT,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ lpszText: ::LPCSTR,
+ lpszCaption: ::LPCSTR,
+ dwStyle: ::DWORD,
+ lpszIcon: ::LPCSTR,
+ dwContextHelpId: ::DWORD_PTR,
+ lpfnMsgBoxCallback: ::MSGBOXCALLBACK,
+ dwLanguageId: ::DWORD,
+}}
+pub type PMSGBOXPARAMSA = *mut MSGBOXPARAMSA;
+pub type LPMSGBOXPARAMSA = *mut MSGBOXPARAMSA;
+STRUCT!{nodebug struct MSGBOXPARAMSW {
+ cbSize: ::UINT,
+ hwndOwner: ::HWND,
+ hInstance: ::HINSTANCE,
+ lpszText: ::LPCWSTR,
+ lpszCaption: ::LPCWSTR,
+ dwStyle: ::DWORD,
+ lpszIcon: ::LPCWSTR,
+ dwContextHelpId: ::DWORD_PTR,
+ lpfnMsgBoxCallback: ::MSGBOXCALLBACK,
+ dwLanguageId: ::DWORD,
+}}
+pub type PMSGBOXPARAMSW = *mut MSGBOXPARAMSW;
+pub type LPMSGBOXPARAMSW = *mut MSGBOXPARAMSW;
+STRUCT!{struct HELPINFO {
+ cbSize: ::UINT,
+ iContextType: ::c_int,
+ iCtrlId: ::c_int,
+ hItemHandle: ::HANDLE,
+ dwContextId: ::DWORD,
+ MousePos: ::POINT,
+}}
+pub type LPHELPINFO = *mut HELPINFO;
+#[allow(trivial_numeric_casts)]
+pub fn GET_WHEEL_DELTA_WPARAM(wParam: ::WPARAM) -> ::c_short {
+ ::HIWORD(wParam as ::DWORD) as ::c_short
+}
+#[allow(trivial_numeric_casts)]
+pub fn GET_KEYSTATE_WPARAM(wparam: ::WPARAM) -> ::c_int {
+ ::LOWORD(wparam as ::DWORD) as ::c_short as ::c_int
+}
+#[allow(trivial_numeric_casts)]
+pub fn GET_XBUTTON_WPARAM(wparam: ::WPARAM) -> ::c_int {
+ ::HIWORD(wparam as ::DWORD) as ::c_int
+}
+pub const SIF_RANGE: ::UINT = 0x0001;
+pub const SIF_PAGE: ::UINT = 0x0002;
+pub const SIF_POS: ::UINT = 0x0004;
+pub const SIF_DISABLENOSCROLL: ::UINT = 0x0008;
+pub const SIF_TRACKPOS: ::UINT = 0x0010;
+pub const SIF_ALL: ::UINT = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
+pub const SW_SCROLLCHILDREN: ::UINT = 0x0001;
+pub const SW_INVALIDATE: ::UINT = 0x0002;
+pub const SW_ERASE: ::UINT = 0x0004;
+pub const SW_SMOOTHSCROLL: ::UINT = 0x0010;
+pub const SB_LINEUP: ::c_int = 0;
+pub const SB_LINELEFT: ::c_int = 0;
+pub const SB_LINEDOWN: ::c_int = 1;
+pub const SB_LINERIGHT: ::c_int = 1;
+pub const SB_PAGEUP: ::c_int = 2;
+pub const SB_PAGELEFT: ::c_int = 2;
+pub const SB_PAGEDOWN: ::c_int = 3;
+pub const SB_PAGERIGHT: ::c_int = 3;
+pub const SB_THUMBPOSITION: ::c_int = 4;
+pub const SB_THUMBTRACK: ::c_int = 5;
+pub const SB_TOP: ::c_int = 6;
+pub const SB_LEFT: ::c_int = 6;
+pub const SB_BOTTOM: ::c_int = 7;
+pub const SB_RIGHT: ::c_int = 7;
+pub const SB_ENDSCROLL: ::c_int = 8;
+pub const LR_DEFAULTCOLOR: ::UINT = 0x00000000;
+pub const LR_MONOCHROME: ::UINT = 0x00000001;
+pub const LR_COLOR: ::UINT = 0x00000002;
+pub const LR_COPYRETURNORG: ::UINT = 0x00000004;
+pub const LR_COPYDELETEORG: ::UINT = 0x00000008;
+pub const LR_LOADFROMFILE: ::UINT = 0x00000010;
+pub const LR_LOADTRANSPARENT: ::UINT = 0x00000020;
+pub const LR_DEFAULTSIZE: ::UINT = 0x00000040;
+pub const LR_VGACOLOR: ::UINT = 0x00000080;
+pub const LR_LOADMAP3DCOLORS: ::UINT = 0x00001000;
+pub const LR_CREATEDIBSECTION: ::UINT = 0x00002000;
+pub const LR_COPYFROMRESOURCE: ::UINT = 0x00004000;
+pub const LR_SHARED: ::UINT = 0x00008000;
+pub const IMAGE_BITMAP: ::UINT = 0;
+pub const IMAGE_ICON: ::UINT = 1;
+pub const IMAGE_CURSOR: ::UINT = 2;
+pub const IMAGE_ENHMETAFILE: ::UINT = 3;
+pub const DT_TOP: ::UINT = 0x00000000;
+pub const DT_LEFT: ::UINT = 0x00000000;
+pub const DT_CENTER: ::UINT = 0x00000001;
+pub const DT_RIGHT: ::UINT = 0x00000002;
+pub const DT_VCENTER: ::UINT = 0x00000004;
+pub const DT_BOTTOM: ::UINT = 0x00000008;
+pub const DT_WORDBREAK: ::UINT = 0x00000010;
+pub const DT_SINGLELINE: ::UINT = 0x00000020;
+pub const DT_EXPANDTABS: ::UINT = 0x00000040;
+pub const DT_TABSTOP: ::UINT = 0x00000080;
+pub const DT_NOCLIP: ::UINT = 0x00000100;
+pub const DT_EXTERNALLEADING: ::UINT = 0x00000200;
+pub const DT_CALCRECT: ::UINT = 0x00000400;
+pub const DT_NOPREFIX: ::UINT = 0x00000800;
+pub const DT_INTERNAL: ::UINT = 0x00001000;
+pub const DT_EDITCONTROL: ::UINT = 0x00002000;
+pub const DT_PATH_ELLIPSIS: ::UINT = 0x00004000;
+pub const DT_END_ELLIPSIS: ::UINT = 0x00008000;
+pub const DT_MODIFYSTRING: ::UINT = 0x00010000;
+pub const DT_RTLREADING: ::UINT = 0x00020000;
+pub const DT_WORD_ELLIPSIS: ::UINT = 0x00040000;
+pub const DT_NOFULLWIDTHCHARBREAK: ::UINT = 0x00080000;
+pub const DT_HIDEPREFIX: ::UINT = 0x00100000;
+pub const DT_PREFIXONLY: ::UINT = 0x00200000;
+STRUCT!{struct KBDLLHOOKSTRUCT {
+ vkCode: ::DWORD,
+ scanCode: ::DWORD,
+ flags: ::DWORD,
+ time: ::DWORD,
+ dwExtraInfo: ::ULONG_PTR,
+}}
+pub type PKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT;
+pub type LPKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT;
+STRUCT!{struct MSLLHOOKSTRUCT {
+ pt: ::POINT,
+ mouseData: ::DWORD,
+ flags: ::DWORD,
+ time: ::DWORD,
+ dwExtraInfo: ::ULONG_PTR,
+}}
+pub type PMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT;
+pub type LPMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT;
+pub const WH_MIN: ::c_int = -1;
+pub const WH_MSGFILTER: ::c_int = -1;
+pub const WH_JOURNALRECORD: ::c_int = 0;
+pub const WH_JOURNALPLAYBACK: ::c_int = 1;
+pub const WH_KEYBOARD: ::c_int = 2;
+pub const WH_GETMESSAGE: ::c_int = 3;
+pub const WH_CALLWNDPROC: ::c_int = 4;
+pub const WH_CBT: ::c_int = 5;
+pub const WH_SYSMSGFILTER: ::c_int = 6;
+pub const WH_MOUSE: ::c_int = 7;
+pub const WH_HARDWARE: ::c_int = 8;
+pub const WH_DEBUG: ::c_int = 9;
+pub const WH_SHELL: ::c_int = 10;
+pub const WH_FOREGROUNDIDLE: ::c_int = 11;
+pub const WH_CALLWNDPROCRET: ::c_int = 12;
+pub const WH_KEYBOARD_LL: ::c_int = 13;
+pub const WH_MOUSE_LL: ::c_int = 14;
+pub const WH_MAX: ::c_int = 14;
+pub const WH_MINHOOK: ::c_int = WH_MIN;
+pub const WH_MAXHOOK: ::c_int = WH_MAX;
+pub const KLF_ACTIVATE: ::UINT = 1;
+pub const KLF_SUBSTITUTE_OK: ::UINT = 2;
+pub const KLF_UNLOADPREVIOUS: ::UINT = 4;
+pub const KLF_REORDER: ::UINT = 8;
+pub const KLF_REPLACELANG: ::UINT = 16;
+pub const KLF_NOTELLSHELL: ::UINT = 128;
+pub const KLF_SETFORPROCESS: ::UINT = 256;
+//RedrawWindow() flags
+pub const RDW_INVALIDATE: ::UINT = 0x0001;
+pub const RDW_INTERNALPAINT: ::UINT = 0x0002;
+pub const RDW_ERASE: ::UINT = 0x0004;
+pub const RDW_VALIDATE: ::UINT = 0x0008;
+pub const RDW_NOINTERNALPAINT: ::UINT = 0x0010;
+pub const RDW_NOERASE: ::UINT = 0x0020;
+pub const RDW_NOCHILDREN: ::UINT = 0x0040;
+pub const RDW_ALLCHILDREN: ::UINT = 0x0080;
+pub const RDW_UPDATENOW: ::UINT = 0x0100;
+pub const RDW_ERASENOW: ::UINT = 0x0200;
+pub const RDW_FRAME: ::UINT = 0x0400;
+pub const RDW_NOFRAME: ::UINT = 0x0800;
+STRUCT!{struct MEASUREITEMSTRUCT {
+ CtlType: ::UINT,
+ CtlID: ::UINT,
+ itemID: ::UINT,
+ itemWidth: ::UINT,
+ itemHeight: ::UINT,
+ itemData: ::ULONG_PTR,
+}}
+pub type LPMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT;
+STRUCT!{struct DRAWITEMSTRUCT {
+ CtlType: ::UINT,
+ CtlID: ::UINT,
+ itemID: ::UINT,
+ itemAction: ::UINT,
+ itemState: ::UINT,
+ hwndItem: ::HWND,
+ hDC: ::HDC,
+ rcItem: ::RECT,
+ itemData: ::ULONG_PTR,
+}}
+pub type LPDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT;
+STRUCT!{struct DELETEITEMSTRUCT {
+ CtlType: ::UINT,
+ CtlID: ::UINT,
+ itemID: ::UINT,
+ hwndItem: ::HWND,
+ itemData: ::ULONG_PTR,
+}}
+pub type LPDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT;
+STRUCT!{struct COMPAREITEMSTRUCT {
+ CtlType: ::UINT,
+ CtlID: ::UINT,
+ hwndItem: ::HWND,
+ itemID1: ::UINT,
+ itemData1: ::ULONG_PTR,
+ itemID2: ::UINT,
+ itemData2: ::ULONG_PTR,
+ dwLocaleId: ::DWORD,
+}}
+pub type LPCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT;
+/* Image type */
+pub const DST_COMPLEX: ::UINT = 0x0000;
+pub const DST_TEXT: ::UINT = 0x0001;
+pub const DST_PREFIXTEXT: ::UINT = 0x0002;
+pub const DST_ICON: ::UINT = 0x0003;
+pub const DST_BITMAP: ::UINT = 0x0004;
+pub const DI_MASK: ::UINT = 0x0001;
+pub const DI_IMAGE: ::UINT = 0x0002;
+pub const DI_NORMAL: ::UINT = 0x0003;
+pub const DI_COMPAT: ::UINT = 0x0004;
+pub const DI_DEFAULTSIZE: ::UINT = 0x0008;
+// if WINVER >= 0x0601
+// GetSystemMetrics(SM_DIGITIZER) flag values
+pub const NID_INTEGRATED_TOUCH: ::UINT = 0x00000001;
+pub const NID_EXTERNAL_TOUCH: ::UINT = 0x00000002;
+pub const NID_INTEGRATED_PEN: ::UINT = 0x00000004;
+pub const NID_EXTERNAL_PEN: ::UINT = 0x00000008;
+pub const NID_MULTI_INPUT: ::UINT = 0x00000040;
+pub const NID_READY: ::UINT = 0x00000080;
+// end if WINVER >= 0x0601
+
+// System Menu Command Values
+//
+pub const SC_SIZE: ::WPARAM = 0xF000;
+pub const SC_MOVE: ::WPARAM = 0xF010;
+pub const SC_MINIMIZE: ::WPARAM = 0xF020;
+pub const SC_MAXIMIZE: ::WPARAM = 0xF030;
+pub const SC_NEXTWINDOW: ::WPARAM = 0xF040;
+pub const SC_PREVWINDOW: ::WPARAM = 0xF050;
+pub const SC_CLOSE: ::WPARAM = 0xF060;
+pub const SC_VSCROLL: ::WPARAM = 0xF070;
+pub const SC_HSCROLL: ::WPARAM = 0xF080;
+pub const SC_MOUSEMENU: ::WPARAM = 0xF090;
+pub const SC_KEYMENU: ::WPARAM = 0xF100;
+pub const SC_ARRANGE: ::WPARAM = 0xF110;
+pub const SC_RESTORE: ::WPARAM = 0xF120;
+pub const SC_TASKLIST: ::WPARAM = 0xF130;
+pub const SC_SCREENSAVE: ::WPARAM = 0xF140;
+pub const SC_HOTKEY: ::WPARAM = 0xF150;
+// if WINVER >= 0x0400
+pub const SC_DEFAULT: ::WPARAM = 0xF160;
+pub const SC_MONITORPOWER: ::WPARAM = 0xF170;
+pub const SC_CONTEXTHELP: ::WPARAM = 0xF180;
+pub const SC_SEPARATOR: ::WPARAM = 0xF00F;
+// endif WINVER >= 0x0400
diff --git a/third_party/rust/winapi-0.2.8/src/ws2def.rs b/third_party/rust/winapi-0.2.8/src/ws2def.rs
new file mode 100644
index 0000000000..dcc4aaa6f1
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ws2def.rs
@@ -0,0 +1,279 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! This file contains the core definitions for the Winsock2 specification that can be used by
+//! both user-mode and kernel mode modules.
+pub type ADDRESS_FAMILY = ::USHORT;
+pub const AF_UNSPEC: ::c_int = 0;
+pub const AF_UNIX: ::c_int = 1;
+pub const AF_INET: ::c_int = 2;
+pub const AF_IMPLINK: ::c_int = 3;
+pub const AF_PUP: ::c_int = 4;
+pub const AF_CHAOS: ::c_int = 5;
+pub const AF_NS: ::c_int = 6;
+pub const AF_IPX: ::c_int = AF_NS;
+pub const AF_ISO: ::c_int = 7;
+pub const AF_OSI: ::c_int = AF_ISO;
+pub const AF_ECMA: ::c_int = 8;
+pub const AF_DATAKIT: ::c_int = 9;
+pub const AF_CCITT: ::c_int = 10;
+pub const AF_SNA: ::c_int = 11;
+pub const AF_DECnet: ::c_int = 12;
+pub const AF_DLI: ::c_int = 13;
+pub const AF_LAT: ::c_int = 14;
+pub const AF_HYLINK: ::c_int = 15;
+pub const AF_APPLETALK: ::c_int = 16;
+pub const AF_NETBIOS: ::c_int = 17;
+pub const AF_VOICEVIEW: ::c_int = 18;
+pub const AF_FIREFOX: ::c_int = 19;
+pub const AF_UNKNOWN1: ::c_int = 20;
+pub const AF_BAN: ::c_int = 21;
+pub const AF_ATM: ::c_int = 22;
+pub const AF_INET6: ::c_int = 23;
+pub const AF_CLUSTER: ::c_int = 24;
+pub const AF_12844: ::c_int = 25;
+pub const AF_IRDA: ::c_int = 26;
+pub const AF_NETDES: ::c_int = 28;
+pub const AF_TCNPROCESS: ::c_int = 29;
+pub const AF_TCNMESSAGE: ::c_int = 30;
+pub const AF_ICLFXBM: ::c_int = 31;
+pub const AF_BTH: ::c_int = 32;
+pub const AF_LINK: ::c_int = 33;
+pub const AF_MAX: ::c_int = 34;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+pub const SOCK_RAW: ::c_int = 3;
+pub const SOCK_RDM: ::c_int = 4;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+pub const SOL_SOCKET: ::c_int = 0xffff;
+pub const SO_DEBUG: ::c_int = 0x0001;
+pub const SO_ACCEPTCONN: ::c_int = 0x0002;
+pub const SO_REUSEADDR: ::c_int = 0x0004;
+pub const SO_KEEPALIVE: ::c_int = 0x0008;
+pub const SO_DONTROUTE: ::c_int = 0x0010;
+pub const SO_BROADCAST: ::c_int = 0x0020;
+pub const SO_USELOOPBACK: ::c_int = 0x0040;
+pub const SO_LINGER: ::c_int = 0x0080;
+pub const SO_OOBINLINE: ::c_int = 0x0100;
+pub const SO_DONTLINGER: ::c_int = !SO_LINGER;
+pub const SO_EXCLUSIVEADDRUSE: ::c_int = !SO_REUSEADDR;
+pub const SO_SNDBUF: ::c_int = 0x1001;
+pub const SO_RCVBUF: ::c_int = 0x1002;
+pub const SO_SNDLOWAT: ::c_int = 0x1003;
+pub const SO_RCVLOWAT: ::c_int = 0x1004;
+pub const SO_SNDTIMEO: ::c_int = 0x1005;
+pub const SO_RCVTIMEO: ::c_int = 0x1006;
+pub const SO_ERROR: ::c_int = 0x1007;
+pub const SO_TYPE: ::c_int = 0x1008;
+pub const SO_BSP_STATE: ::c_int = 0x1009;
+pub const SO_GROUP_ID: ::c_int = 0x2001;
+pub const SO_GROUP_PRIORITY: ::c_int = 0x2002;
+pub const SO_MAX_MSG_SIZE: ::c_int = 0x2003;
+pub const SO_CONDITIONAL_ACCEPT: ::c_int = 0x3002;
+pub const SO_PAUSE_ACCEPT: ::c_int = 0x3003;
+pub const SO_COMPARTMENT_ID: ::c_int = 0x3004;
+pub const SO_RANDOMIZE_PORT: ::c_int = 0x3005;
+pub const SO_PORT_SCALABILITY: ::c_int = 0x3006;
+pub const WSK_SO_BASE: ::c_int = 0x4000;
+pub const TCP_NODELAY: ::c_int = 0x0001;
+STRUCT!{struct SOCKADDR {
+ sa_family: ADDRESS_FAMILY,
+ sa_data: [::CHAR; 14],
+}}
+pub type PSOCKADDR = *mut SOCKADDR;
+pub type LPSOCKADDR = *mut SOCKADDR;
+STRUCT!{struct SOCKET_ADDRESS {
+ lpSockaddr: LPSOCKADDR,
+ iSockaddrLength: ::INT,
+}}
+pub type PSOCKET_ADDRESS = *mut SOCKET_ADDRESS;
+pub type LPSOCKET_ADDRESS = *mut SOCKET_ADDRESS;
+STRUCT!{nodebug struct SOCKET_ADDRESS_LIST {
+ iAddressCount: ::INT,
+ Address: [SOCKET_ADDRESS; 0],
+}}
+pub type PSOCKET_ADDRESS_LIST = *mut SOCKET_ADDRESS_LIST;
+pub type LPSOCKET_ADDRESS_LIST = *mut SOCKET_ADDRESS_LIST;
+STRUCT!{struct CSADDR_INFO {
+ LocalAddr: SOCKET_ADDRESS,
+ RemoteAddr: SOCKET_ADDRESS,
+ iSocketType: ::INT,
+ iProtocol: ::INT,
+}}
+pub type PCSADDR_INFO = *mut CSADDR_INFO;
+pub type LPCSADDR_INFO = *mut CSADDR_INFO;
+STRUCT!{nodebug struct SOCKADDR_STORAGE_LH {
+ ss_family: ADDRESS_FAMILY,
+ __ss_pad1: [::CHAR; 6],
+ __ss_align: ::__int64,
+ __ss_pad2: [::CHAR; 112],
+}}
+pub type PSOCKADDR_STORAGE_LH = *mut SOCKADDR_STORAGE_LH;
+pub type LPSOCKADDR_STORAGE_LH = *mut SOCKADDR_STORAGE_LH;
+STRUCT!{nodebug struct SOCKADDR_STORAGE_XP {
+ ss_family: ::c_short,
+ __ss_pad1: [::CHAR; 6],
+ __ss_align: ::__int64,
+ __ss_pad2: [::CHAR; 112],
+}}
+pub type PSOCKADDR_STORAGE_XP = *mut SOCKADDR_STORAGE_XP;
+pub type LPSOCKADDR_STORAGE_XP = *mut SOCKADDR_STORAGE_XP;
+pub type SOCKADDR_STORAGE = SOCKADDR_STORAGE_LH;
+pub type PSOCKADDR_STORAGE = *mut SOCKADDR_STORAGE;
+pub type LPSOCKADDR_STORAGE = *mut SOCKADDR_STORAGE;
+STRUCT!{struct SOCKET_PROCESSOR_AFFINITY {
+ Processor: ::PROCESSOR_NUMBER,
+ NumaNodeId: ::USHORT,
+ Reserved: ::USHORT,
+}}
+pub type PSOCKET_PROCESSOR_AFFINITY = *mut SOCKET_PROCESSOR_AFFINITY;
+pub const IOC_UNIX: ::DWORD = 0x00000000;
+pub const IOC_WS2: ::DWORD = 0x08000000;
+pub const IOC_PROTOCOL: ::DWORD = 0x10000000;
+pub const IOC_VENDOR: ::DWORD = 0x18000000;
+pub const IOC_WSK: ::DWORD = IOC_WS2 | 0x07000000;
+macro_rules! _WSAIO { ($x:expr, $y:expr) => { IOC_VOID | $x | $y } }
+macro_rules! _WSAIOR { ($x:expr, $y:expr) => { IOC_OUT | $x | $y } }
+macro_rules! _WSAIOW { ($x:expr, $y:expr) => { IOC_IN | $x | $y } }
+macro_rules! _WSAIORW { ($x:expr, $y:expr) => { IOC_INOUT | $x | $y } }
+pub const SIO_ASSOCIATE_HANDLE: ::DWORD = _WSAIOW!(IOC_WS2, 1);
+pub const SIO_ENABLE_CIRCULAR_QUEUEING: ::DWORD = _WSAIO!(IOC_WS2, 2);
+pub const SIO_FIND_ROUTE: ::DWORD = _WSAIOR!(IOC_WS2, 3);
+pub const SIO_FLUSH: ::DWORD = _WSAIO!(IOC_WS2, 4);
+pub const SIO_GET_BROADCAST_ADDRESS: ::DWORD = _WSAIOR!(IOC_WS2, 5);
+pub const SIO_GET_EXTENSION_FUNCTION_POINTER: ::DWORD = _WSAIORW!(IOC_WS2, 6);
+pub const SIO_GET_QOS: ::DWORD = _WSAIORW!(IOC_WS2, 7);
+pub const SIO_GET_GROUP_QOS: ::DWORD = _WSAIORW!(IOC_WS2, 8);
+pub const SIO_MULTIPOINT_LOOPBACK: ::DWORD = _WSAIOW!(IOC_WS2, 9);
+pub const SIO_MULTICAST_SCOPE: ::DWORD = _WSAIOW!(IOC_WS2, 10);
+pub const SIO_SET_QOS: ::DWORD = _WSAIOW!(IOC_WS2, 11);
+pub const SIO_SET_GROUP_QOS: ::DWORD = _WSAIOW!(IOC_WS2, 12);
+pub const SIO_TRANSLATE_HANDLE: ::DWORD = _WSAIORW!(IOC_WS2, 13);
+pub const SIO_ROUTING_INTERFACE_QUERY: ::DWORD = _WSAIORW!(IOC_WS2, 20);
+pub const SIO_ROUTING_INTERFACE_CHANGE: ::DWORD = _WSAIOW!(IOC_WS2, 21);
+pub const SIO_ADDRESS_LIST_QUERY: ::DWORD = _WSAIOR!(IOC_WS2, 22);
+pub const SIO_ADDRESS_LIST_CHANGE: ::DWORD = _WSAIO!(IOC_WS2, 23);
+pub const SIO_QUERY_TARGET_PNP_HANDLE: ::DWORD = _WSAIOR!(IOC_WS2, 24);
+pub const SIO_QUERY_RSS_PROCESSOR_INFO: ::DWORD = _WSAIOR!(IOC_WS2, 37);
+pub const SIO_ADDRESS_LIST_SORT: ::DWORD = _WSAIORW!(IOC_WS2, 25);
+pub const SIO_RESERVED_1: ::DWORD = _WSAIOW!(IOC_WS2, 26);
+pub const SIO_RESERVED_2: ::DWORD = _WSAIOW!(IOC_WS2, 33);
+pub const SIO_GET_MULTIPLE_EXTENSION_FUNCTION_POINTER: ::DWORD = _WSAIORW!(IOC_WS2, 36);
+pub const IPPROTO_IP: ::c_int = 0;
+ENUM!{enum IPPROTO {
+ IPPROTO_HOPOPTS = 0, // IPv6 Hop-by-Hop options
+ IPPROTO_ICMP = 1,
+ IPPROTO_IGMP = 2,
+ IPPROTO_GGP = 3,
+ IPPROTO_IPV4 = 4,
+ IPPROTO_ST = 5,
+ IPPROTO_TCP = 6,
+ IPPROTO_CBT = 7,
+ IPPROTO_EGP = 8,
+ IPPROTO_IGP = 9,
+ IPPROTO_PUP = 12,
+ IPPROTO_UDP = 17,
+ IPPROTO_IDP = 22,
+ IPPROTO_RDP = 27,
+ IPPROTO_IPV6 = 41, // IPv6 header
+ IPPROTO_ROUTING = 43, // IPv6 Routing header
+ IPPROTO_FRAGMENT = 44, // IPv6 fragmentation header
+ IPPROTO_ESP = 50, // encapsulating security payload
+ IPPROTO_AH = 51, // authentication header
+ IPPROTO_ICMPV6 = 58, // ICMPv6
+ IPPROTO_NONE = 59, // IPv6 no next header
+ IPPROTO_DSTOPTS = 60, // IPv6 Destination options
+ IPPROTO_ND = 77,
+ IPPROTO_ICLFXBM = 78,
+ IPPROTO_PIM = 103,
+ IPPROTO_PGM = 113,
+ IPPROTO_L2TP = 115,
+ IPPROTO_SCTP = 132,
+ IPPROTO_RAW = 255,
+ IPPROTO_MAX = 256,
+ IPPROTO_RESERVED_RAW = 257,
+ IPPROTO_RESERVED_IPSEC = 258,
+ IPPROTO_RESERVED_IPSECOFFLOAD = 259,
+ IPPROTO_RESERVED_WNV = 260,
+ IPPROTO_RESERVED_MAX = 261,
+}}
+pub type PIPPROTO = *mut IPPROTO;
+STRUCT!{struct SOCKADDR_IN {
+ sin_family: ADDRESS_FAMILY,
+ sin_port: ::USHORT,
+ sin_addr: ::IN_ADDR,
+ sin_zero: [::CHAR; 8],
+}}
+pub type PSOCKADDR_IN = *mut SOCKADDR_IN;
+//645
+pub const IOCPARM_MASK: ::DWORD = 0x7f;
+pub const IOC_VOID: ::DWORD = 0x20000000;
+pub const IOC_OUT: ::DWORD = 0x40000000;
+pub const IOC_IN: ::DWORD = 0x80000000;
+pub const IOC_INOUT: ::DWORD = IOC_IN | IOC_OUT;
+STRUCT!{struct WSABUF {
+ len: ::ULONG,
+ buf: *mut ::CHAR,
+}}
+pub type LPWSABUF = *mut WSABUF;
+STRUCT!{struct WSAMSG {
+ name: LPSOCKADDR,
+ namelen: ::INT,
+ lpBuffers: LPWSABUF,
+ dwBufferCount: ::ULONG,
+ Control: WSABUF,
+ dwFlags: ::ULONG,
+}}
+pub type PWSAMSG = *mut WSAMSG;
+pub type LPWSAMSG = *mut WSAMSG;
+STRUCT!{struct ADDRINFOA {
+ ai_flags: ::c_int,
+ ai_family: ::c_int,
+ ai_socktype: ::c_int,
+ ai_protocol: ::c_int,
+ ai_addrlen: ::size_t,
+ ai_canonname: *mut ::c_char,
+ ai_addr: *mut SOCKADDR,
+ ai_next: *mut ADDRINFOA,
+}}
+pub type PADDRINFOA = *mut ADDRINFOA;
+STRUCT!{struct ADDRINFOW {
+ ai_flags: ::c_int,
+ ai_family: ::c_int,
+ ai_socktype: ::c_int,
+ ai_protocol: ::c_int,
+ ai_addrlen: ::size_t,
+ ai_canonname: ::PWSTR,
+ ai_addr: *mut SOCKADDR,
+ ai_next: *mut ADDRINFOW,
+}}
+pub type PADDRINFOW = *mut ADDRINFOW;
+STRUCT!{struct ADDRINFOEXA {
+ ai_flags: ::c_int,
+ ai_family: ::c_int,
+ ai_socktype: ::c_int,
+ ai_protocol: ::c_int,
+ ai_addrlen: ::size_t,
+ ai_canonname: *mut ::c_char,
+ ai_addr: *mut SOCKADDR,
+ ai_blob: *mut ::c_void,
+ ai_bloblen: ::size_t,
+ ai_provider: ::LPGUID,
+ ai_next: *mut ADDRINFOEXW,
+}}
+pub type PADDRINFOEXA = *mut ADDRINFOEXA;
+pub type LPADDRINFOEXA = *mut ADDRINFOEXA;
+STRUCT!{struct ADDRINFOEXW {
+ ai_flags: ::c_int,
+ ai_family: ::c_int,
+ ai_socktype: ::c_int,
+ ai_protocol: ::c_int,
+ ai_addrlen: ::size_t,
+ ai_canonname: ::PWSTR,
+ ai_addr: *mut SOCKADDR,
+ ai_blob: *mut ::c_void,
+ ai_bloblen: ::size_t,
+ ai_provider: ::LPGUID,
+ ai_next: *mut ADDRINFOEXW,
+}}
+pub type PADDRINFOEXW = *mut ADDRINFOEXW;
+pub type LPADDRINFOEXW = *mut ADDRINFOEXW;
diff --git a/third_party/rust/winapi-0.2.8/src/ws2ipdef.rs b/third_party/rust/winapi-0.2.8/src/ws2ipdef.rs
new file mode 100644
index 0000000000..86d3ffae29
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ws2ipdef.rs
@@ -0,0 +1,42 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+pub const IPV6_HOPOPTS: ::c_int = 1;
+pub const IPV6_HDRINCL: ::c_int = 2;
+pub const IPV6_UNICAST_HOPS: ::c_int = 4;
+pub const IPV6_MULTICAST_IF: ::c_int = 9;
+pub const IPV6_MULTICAST_HOPS: ::c_int = 10;
+pub const IPV6_MULTICAST_LOOP: ::c_int = 11;
+pub const IPV6_ADD_MEMBERSHIP: ::c_int = 12;
+pub const IPV6_JOIN_GROUP: ::c_int = IPV6_ADD_MEMBERSHIP;
+pub const IPV6_DROP_MEMBERSHIP: ::c_int = 13;
+pub const IPV6_LEAVE_GROUP: ::c_int = IPV6_DROP_MEMBERSHIP;
+pub const IPV6_DONTFRAG: ::c_int = 14;
+pub const IPV6_PKTINFO: ::c_int = 19;
+pub const IPV6_HOPLIMIT: ::c_int = 21;
+pub const IPV6_PROTECTION_LEVEL: ::c_int = 23;
+pub const IPV6_RECVIF: ::c_int = 24;
+pub const IPV6_RECVDSTADDR: ::c_int = 25;
+pub const IPV6_CHECKSUM: ::c_int = 26;
+pub const IPV6_V6ONLY: ::c_int = 27;
+pub const IPV6_IFLIST: ::c_int = 28;
+pub const IPV6_ADD_IFLIST: ::c_int = 29;
+pub const IPV6_DEL_IFLIST: ::c_int = 30;
+pub const IPV6_UNICAST_IF: ::c_int = 31;
+pub const IPV6_RTHDR: ::c_int = 32;
+pub const IPV6_RECVRTHDR: ::c_int = 38;
+pub const IPV6_TCLASS: ::c_int = 39;
+pub const IPV6_RECVTCLASS: ::c_int = 40;
+STRUCT!{struct ipv6_mreq {
+ ipv6mr_multiaddr: in6_addr,
+ ipv6mr_interface: ::c_uint,
+}}
+STRUCT!{struct in6_addr {
+ s6_addr: [u8; 16],
+}}
+STRUCT!{struct sockaddr_in6 {
+ sin6_family: ::c_short,
+ sin6_port: ::c_ushort,
+ sin6_flowinfo: ::c_ulong,
+ sin6_addr: in6_addr,
+ sin6_scope_id: ::c_ulong,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/ws2spi.rs b/third_party/rust/winapi-0.2.8/src/ws2spi.rs
new file mode 100644
index 0000000000..9df67c191e
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ws2spi.rs
@@ -0,0 +1,57 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! Definitions to be used with the WinSock service provider
+pub const WSPDESCRIPTION_LEN: usize = 255;
+STRUCT!{nodebug struct WSPDATA {
+ wVersion: ::WORD,
+ wHighVersion: ::WORD,
+ szDescription: [::WCHAR; WSPDESCRIPTION_LEN + 1],
+}}
+pub type LPWSPDATA = *mut WSPDATA;
+STRUCT!{struct WSATHREADID {
+ ThreadHandle: ::HANDLE,
+ Reserved: ::DWORD_PTR,
+}}
+pub type LPWSATHREADID = *mut WSATHREADID;
+pub type LPNSPV2STARTUP = Option<unsafe extern "system" fn(
+ lpProviderId: ::LPGUID, ppvClientSessionArg: *mut ::LPVOID,
+) -> ::INT>;
+pub type LPNSPV2CLEANUP = Option<unsafe extern "system" fn(
+ lpProviderId: ::LPGUID, pvClientSessionArg: ::LPVOID,
+) -> ::INT>;
+pub type LPNSPV2LOOKUPSERVICEBEGIN = Option<unsafe extern "system" fn(
+ lpProviderId: ::LPGUID, lpqsRestrictions: ::LPWSAQUERYSET2W, dwControlFlags: ::DWORD,
+ lpvClientSessionArg: ::LPVOID, lphLookup: ::LPHANDLE,
+) -> ::INT>;
+pub type LPNSPV2LOOKUPSERVICENEXTEX = Option<unsafe extern "system" fn(
+ hAsyncCall: ::HANDLE, hLookup: ::HANDLE, dwControlFlags: ::DWORD, lpdwBufferLength: ::LPDWORD,
+ lpqsResults: ::LPWSAQUERYSET2W
+)>;
+pub type LPNSPV2LOOKUPSERVICEEND = Option<unsafe extern "system" fn(hLookup: ::HANDLE) -> ::INT>;
+pub type LPNSPV2SETSERVICEEX = Option<unsafe extern "system" fn(
+ hAsyncCall: ::HANDLE, lpProviderId: ::LPGUID, lpqsRegInfo: ::LPWSAQUERYSET2W,
+ essOperation: ::WSAESETSERVICEOP, dwControlFlags: ::DWORD, lpvClientSessionArg: ::LPVOID,
+)>;
+pub type LPNSPV2CLIENTSESSIONRUNDOWN = Option<unsafe extern "system" fn(
+ lpProviderId: ::LPGUID, pvClientSessionArg: ::LPVOID,
+)>;
+STRUCT!{nodebug struct NSPV2_ROUTINE {
+ cbSize: ::DWORD,
+ dwMajorVersion: ::DWORD,
+ dwMinorVersion: ::DWORD,
+ NSPv2Startup: LPNSPV2STARTUP,
+ NSPv2Cleanup: LPNSPV2CLEANUP,
+ NSPv2LookupServiceBegin: LPNSPV2LOOKUPSERVICEBEGIN,
+ NSPv2LookupServiceNextEx: LPNSPV2LOOKUPSERVICENEXTEX,
+ NSPv2LookupServiceEnd: LPNSPV2LOOKUPSERVICEEND,
+ NSPv2SetServiceEx: LPNSPV2SETSERVICEEX,
+ NSPv2ClientSessionRundown: LPNSPV2CLIENTSESSIONRUNDOWN,
+}}
+pub type PNSPV2_ROUTINE = *mut NSPV2_ROUTINE;
+pub type LPNSPV2_ROUTINE = *mut NSPV2_ROUTINE;
+pub type PCNSPV2_ROUTINE = *const NSPV2_ROUTINE;
+pub type LPCNSPV2_ROUTINE = *const NSPV2_ROUTINE;
+ENUM!{enum WSC_PROVIDER_INFO_TYPE {
+ ProviderInfoLspCategories,
+ ProviderInfoAudit,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/ws2tcpip.rs b/third_party/rust/winapi-0.2.8/src/ws2tcpip.rs
new file mode 100644
index 0000000000..d60c84178c
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/ws2tcpip.rs
@@ -0,0 +1,27 @@
+// Copyright © 2015, skdltmxn
+// Licensed under the MIT License <LICENSE.md>
+//! WinSock2 Extension for TCP/IP protocols
+pub type LPLOOKUPSERVICE_COMPLETION_ROUTINE = Option<unsafe extern "system" fn(
+ dwError: ::DWORD, dwBytes: ::DWORD, lpOverlapped: ::LPWSAOVERLAPPED,
+)>;
+pub type socklen_t = ::c_int;
+STRUCT!{struct ip_mreq {
+ imr_multiaddr: ::in_addr,
+ imr_interface: ::in_addr,
+}}
+pub const IP_OPTIONS: ::c_int = 1;
+pub const IP_HDRINCL: ::c_int = 2;
+pub const IP_TOS: ::c_int = 3;
+pub const IP_TTL: ::c_int = 4;
+pub const IP_MULTICAST_IF: ::c_int = 9;
+pub const IP_MULTICAST_TTL: ::c_int = 10;
+pub const IP_MULTICAST_LOOP: ::c_int = 11;
+pub const IP_ADD_MEMBERSHIP: ::c_int = 12;
+pub const IP_DROP_MEMBERSHIP: ::c_int = 13;
+pub const IP_DONTFRAGMENT: ::c_int = 14;
+pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 15;
+pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 16;
+pub const IP_BLOCK_SOURCE: ::c_int = 17;
+pub const IP_UNBLOCK_SOURCE: ::c_int = 18;
+pub const IP_PKTINFO: ::c_int = 19;
+pub const IP_RECEIVE_BROADCAST: ::c_int = 22;
diff --git a/third_party/rust/winapi-0.2.8/src/wtypes.rs b/third_party/rust/winapi-0.2.8/src/wtypes.rs
new file mode 100644
index 0000000000..36c8059ac8
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/wtypes.rs
@@ -0,0 +1,75 @@
+// Copyright © 2015, Connor Hilarides
+// Licensed under the MIT License <LICENSE.md>
+//! Mappings for the contents of wstypes.h
+ENUM!{enum VARENUM {
+ VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+ VT_RECORD = 36,
+ VT_INT_PTR = 37,
+ VT_UINT_PTR = 38,
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+ VT_VERSIONED_STREAM = 73,
+ VT_BSTR_BLOB = 0xfff,
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+ VT_ILLEGAL = 0xffff,
+}}
+pub const VT_ILLEGALMASKED: VARENUM = VT_BSTR_BLOB;
+pub const VT_TYPEMASK: VARENUM = VT_BSTR_BLOB;
+pub type DATE = ::c_double;
+STRUCT!{struct CY {
+ int64: ::LONGLONG,
+}}
+STRUCT!{struct DECIMAL {
+ wReserved: ::USHORT,
+ scale: ::BYTE,
+ sign: ::BYTE,
+ Hi32: ::ULONG,
+ Lo64: ::ULONGLONG,
+}}
+pub const DECIMAL_NEG: ::BYTE = 0x80;
+pub type LPDECIMAL = *mut DECIMAL;
+pub type VARTYPE = ::c_ushort;
+pub type wireBSTR = *mut ::FLAGGED_WORD_BLOB;
+pub type BSTR = *mut ::OLECHAR;
+pub type LPBSTR = *mut BSTR;
+pub type VARIANT_BOOL = ::c_short;
diff --git a/third_party/rust/winapi-0.2.8/src/wtypesbase.rs b/third_party/rust/winapi-0.2.8/src/wtypesbase.rs
new file mode 100644
index 0000000000..8683c53813
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/wtypesbase.rs
@@ -0,0 +1,37 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//114
+pub type OLECHAR = ::WCHAR;
+pub type LPOLESTR = *mut OLECHAR;
+pub type LPCOLESTR = *const OLECHAR;
+//147
+pub type DOUBLE = ::c_double;
+//281
+pub type SCODE = ::LONG;
+pub type PSCODE = *mut SCODE;
+STRUCT!{struct BLOB {
+ cbSize: ::ULONG,
+ pBlobData: *mut ::BYTE,
+}}
+pub type LPBLOB = *mut BLOB;
+STRUCT!{struct FLAGGED_WORD_BLOB {
+ fFlags: ::ULONG,
+ clSize: ::ULONG,
+ asData: [::c_ushort; 1],
+}}
+STRUCT!{struct BYTE_SIZEDARR {
+ clSize: ::ULONG,
+ pData: *mut ::BYTE,
+}}
+STRUCT!{struct WORD_SIZEDARR {
+ clSize: ::ULONG,
+ pData: *mut ::c_ushort,
+}}
+STRUCT!{struct DWORD_SIZEDARR {
+ clSize: ::ULONG,
+ pData: *mut ::ULONG,
+}}
+STRUCT!{struct HYPER_SIZEDARR {
+ clSize: ::ULONG,
+ pData: *mut i64,
+}}
diff --git a/third_party/rust/winapi-0.2.8/src/xinput.rs b/third_party/rust/winapi-0.2.8/src/xinput.rs
new file mode 100644
index 0000000000..d18d4659aa
--- /dev/null
+++ b/third_party/rust/winapi-0.2.8/src/xinput.rs
@@ -0,0 +1,118 @@
+// Copyright © 2015, Peter Atashian
+// Licensed under the MIT License <LICENSE.md>
+//! XInput procedure declarations, constant definitions and macros
+pub const XINPUT_DEVTYPE_GAMEPAD: ::BYTE = 0x01;
+pub const XINPUT_DEVSUBTYPE_GAMEPAD: ::BYTE = 0x01;
+pub const XINPUT_DEVSUBTYPE_WHEEL: ::BYTE = 0x02;
+pub const XINPUT_DEVSUBTYPE_ARCADE_STICK: ::BYTE = 0x03;
+pub const XINPUT_DEVSUBTYPE_FLIGHT_SICK: ::BYTE = 0x04;
+pub const XINPUT_DEVSUBTYPE_DANCE_PAD: ::BYTE = 0x05;
+pub const XINPUT_DEVSUBTYPE_GUITAR: ::BYTE = 0x06;
+pub const XINPUT_DEVSUBTYPE_DRUM_KIT: ::BYTE = 0x08;
+pub const XINPUT_CAPS_VOICE_SUPPORTED: ::WORD = 0x0004;
+pub const XINPUT_GAMEPAD_DPAD_UP: ::WORD = 0x0001;
+pub const XINPUT_GAMEPAD_DPAD_DOWN: ::WORD = 0x0002;
+pub const XINPUT_GAMEPAD_DPAD_LEFT: ::WORD = 0x0004;
+pub const XINPUT_GAMEPAD_DPAD_RIGHT: ::WORD = 0x0008;
+pub const XINPUT_GAMEPAD_START: ::WORD = 0x0010;
+pub const XINPUT_GAMEPAD_BACK: ::WORD = 0x0020;
+pub const XINPUT_GAMEPAD_LEFT_THUMB: ::WORD = 0x0040;
+pub const XINPUT_GAMEPAD_RIGHT_THUMB: ::WORD = 0x0080;
+pub const XINPUT_GAMEPAD_LEFT_SHOULDER: ::WORD = 0x0100;
+pub const XINPUT_GAMEPAD_RIGHT_SHOULDER: ::WORD = 0x0200;
+pub const XINPUT_GAMEPAD_A: ::WORD = 0x1000;
+pub const XINPUT_GAMEPAD_B: ::WORD = 0x2000;
+pub const XINPUT_GAMEPAD_X: ::WORD = 0x4000;
+pub const XINPUT_GAMEPAD_Y: ::WORD = 0x8000;
+pub const XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE: ::SHORT = 7849;
+pub const XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE: ::SHORT = 8689;
+pub const XINPUT_GAMEPAD_TRIGGER_THRESHOLD: ::BYTE = 30;
+pub const XINPUT_FLAG_GAMEPAD: ::DWORD = 0x00000001;
+pub const BATTERY_DEVTYPE_GAMEPAD: ::BYTE = 0x00;
+pub const BATTERY_DEVTYPE_HEADSET: ::BYTE = 0x01;
+pub const BATTERY_TYPE_DISCONNECTED: ::BYTE = 0x00;
+pub const BATTERY_TYPE_WIRED: ::BYTE = 0x01;
+pub const BATTERY_TYPE_ALKALINE: ::BYTE = 0x02;
+pub const BATTERY_TYPE_NIMH: ::BYTE = 0x03;
+pub const BATTERY_TYPE_UNKNOWN: ::BYTE = 0xFF;
+pub const BATTERY_LEVEL_EMPTY: ::BYTE = 0x00;
+pub const BATTERY_LEVEL_LOW: ::BYTE = 0x01;
+pub const BATTERY_LEVEL_MEDIUM: ::BYTE = 0x02;
+pub const BATTERY_LEVEL_FULL: ::BYTE = 0x03;
+pub const XUSER_MAX_COUNT: ::DWORD = 4;
+pub const XUSER_INDEX_ANY: ::DWORD = 0x000000FF;
+pub const VK_PAD_A: ::WORD = 0x5800;
+pub const VK_PAD_B: ::WORD = 0x5801;
+pub const VK_PAD_X: ::WORD = 0x5802;
+pub const VK_PAD_Y: ::WORD = 0x5803;
+pub const VK_PAD_RSHOULDER: ::WORD = 0x5804;
+pub const VK_PAD_LSHOULDER: ::WORD = 0x5805;
+pub const VK_PAD_LTRIGGER: ::WORD = 0x5806;
+pub const VK_PAD_RTRIGGER: ::WORD = 0x5807;
+pub const VK_PAD_DPAD_UP: ::WORD = 0x5810;
+pub const VK_PAD_DPAD_DOWN: ::WORD = 0x5811;
+pub const VK_PAD_DPAD_LEFT: ::WORD = 0x5812;
+pub const VK_PAD_DPAD_RIGHT: ::WORD = 0x5813;
+pub const VK_PAD_START: ::WORD = 0x5814;
+pub const VK_PAD_BACK: ::WORD = 0x5815;
+pub const VK_PAD_LTHUMB_PRESS: ::WORD = 0x5816;
+pub const VK_PAD_RTHUMB_PRESS: ::WORD = 0x5817;
+pub const VK_PAD_LTHUMB_UP: ::WORD = 0x5820;
+pub const VK_PAD_LTHUMB_DOWN: ::WORD = 0x5821;
+pub const VK_PAD_LTHUMB_RIGHT: ::WORD = 0x5822;
+pub const VK_PAD_LTHUMB_LEFT: ::WORD = 0x5823;
+pub const VK_PAD_LTHUMB_UPLEFT: ::WORD = 0x5824;
+pub const VK_PAD_LTHUMB_UPRIGHT: ::WORD = 0x5825;
+pub const VK_PAD_LTHUMB_DOWNRIGHT: ::WORD = 0x5826;
+pub const VK_PAD_LTHUMB_DOWNLEFT: ::WORD = 0x5827;
+pub const VK_PAD_RTHUMB_UP: ::WORD = 0x5830;
+pub const VK_PAD_RTHUMB_DOWN: ::WORD = 0x5831;
+pub const VK_PAD_RTHUMB_RIGHT: ::WORD = 0x5832;
+pub const VK_PAD_RTHUMB_LEFT: ::WORD = 0x5833;
+pub const VK_PAD_RTHUMB_UPLEFT: ::WORD = 0x5834;
+pub const VK_PAD_RTHUMB_UPRIGHT: ::WORD = 0x5835;
+pub const VK_PAD_RTHUMB_DOWNRIGHT: ::WORD = 0x5836;
+pub const VK_PAD_RTHUMB_DOWNLEFT: ::WORD = 0x5837;
+pub const XINPUT_KEYSTROKE_KEYDOWN: ::WORD = 0x0001;
+pub const XINPUT_KEYSTROKE_KEYUP: ::WORD = 0x0002;
+pub const XINPUT_KEYSTROKE_REPEAT: ::WORD = 0x0004;
+STRUCT!{struct XINPUT_GAMEPAD {
+ wButtons: ::WORD,
+ bLeftTrigger: ::BYTE,
+ bRightTrigger: ::BYTE,
+ sThumbLX: ::SHORT,
+ sThumbLY: ::SHORT,
+ sThumbRX: ::SHORT,
+ sThumbRY: ::SHORT,
+}}
+pub type PXINPUT_GAMEPAD = *mut XINPUT_GAMEPAD;
+STRUCT!{struct XINPUT_STATE {
+ dwPacketNumber: ::DWORD,
+ Gamepad: ::XINPUT_GAMEPAD,
+}}
+pub type PXINPUT_STATE = *mut XINPUT_STATE;
+STRUCT!{struct XINPUT_VIBRATION {
+ wLeftMotorSpeed: ::WORD,
+ wRightMotorSpeed: ::WORD,
+}}
+pub type PXINPUT_VIBRATION = *mut XINPUT_VIBRATION;
+STRUCT!{struct XINPUT_CAPABILITIES {
+ Type: ::BYTE,
+ SubType: ::BYTE,
+ Flags: ::WORD,
+ Gamepad: ::XINPUT_GAMEPAD,
+ Vibration: ::XINPUT_VIBRATION,
+}}
+pub type PXINPUT_CAPABILITIES = *mut XINPUT_CAPABILITIES;
+STRUCT!{struct XINPUT_BATTERY_INFORMATION {
+ BatteryType: ::BYTE,
+ BatteryLevel: ::BYTE,
+}}
+pub type PXINPUT_BATTERY_INFORMATION = *mut XINPUT_BATTERY_INFORMATION;
+STRUCT!{struct XINPUT_KEYSTROKE {
+ VirtualKey: ::WORD,
+ Unicode: ::WCHAR,
+ UserIndex: ::BYTE,
+ HidCode: ::BYTE,
+}}
+pub type PXINPUT_KEYSTROKE = *mut XINPUT_KEYSTROKE;