//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (401)
//--------------------------------------------------------------------------------
pub const CA_DISP_INCOMPLETE = @as(u32, 0);
pub const CA_DISP_ERROR = @as(u32, 1);
pub const CA_DISP_REVOKED = @as(u32, 2);
pub const CA_DISP_VALID = @as(u32, 3);
pub const CA_DISP_INVALID = @as(u32, 4);
pub const CA_DISP_UNDER_SUBMISSION = @as(u32, 5);
pub const KRA_DISP_EXPIRED = @as(u32, 0);
pub const KRA_DISP_NOTFOUND = @as(u32, 1);
pub const KRA_DISP_REVOKED = @as(u32, 2);
pub const KRA_DISP_VALID = @as(u32, 3);
pub const KRA_DISP_INVALID = @as(u32, 4);
pub const KRA_DISP_UNTRUSTED = @as(u32, 5);
pub const KRA_DISP_NOTLOADED = @as(u32, 6);
pub const CA_ACCESS_MASKROLES = @as(u32, 255);
pub const CA_CRL_BASE = @as(u32, 1);
pub const CA_CRL_DELTA = @as(u32, 2);
pub const CA_CRL_REPUBLISH = @as(u32, 16);
pub const ICF_ALLOWFOREIGN = @as(u32, 65536);
pub const ICF_EXISTINGROW = @as(u32, 131072);
pub const IKF_OVERWRITE = @as(u32, 65536);
pub const CSBACKUP_TYPE_MASK = @as(u32, 3);
pub const CSRESTORE_TYPE_FULL = @as(u32, 1);
pub const CSRESTORE_TYPE_ONLINE = @as(u32, 2);
pub const CSRESTORE_TYPE_CATCHUP = @as(u32, 4);
pub const CSRESTORE_TYPE_MASK = @as(u32, 5);
pub const CSBACKUP_DISABLE_INCREMENTAL = @as(u32, 4294967295);
pub const CSBFT_DIRECTORY = @as(u32, 128);
pub const CSBFT_DATABASE_DIRECTORY = @as(u32, 64);
pub const CSBFT_LOG_DIRECTORY = @as(u32, 32);
pub const CSCONTROL_SHUTDOWN = @as(u64, 1);
pub const CSCONTROL_SUSPEND = @as(u64, 2);
pub const CSCONTROL_RESTART = @as(u64, 3);
pub const CAIF_DSENTRY = @as(u32, 1);
pub const CAIF_SHAREDFOLDERENTRY = @as(u32, 2);
pub const CAIF_REGISTRY = @as(u32, 4);
pub const CAIF_LOCAL = @as(u32, 8);
pub const CAIF_REGISTRYPARENT = @as(u32, 16);
pub const CR_IN_ENCODEANY = @as(u32, 255);
pub const CR_IN_ENCODEMASK = @as(u32, 255);
pub const CR_IN_FORMATANY = @as(u32, 0);
pub const CR_IN_PKCS10 = @as(u32, 256);
pub const CR_IN_KEYGEN = @as(u32, 512);
pub const CR_IN_PKCS7 = @as(u32, 768);
pub const CR_IN_CMC = @as(u32, 1024);
pub const CR_IN_CHALLENGERESPONSE = @as(u32, 1280);
pub const CR_IN_SIGNEDCERTIFICATETIMESTAMPLIST = @as(u32, 1536);
pub const CR_IN_FORMATMASK = @as(u32, 65280);
pub const CR_IN_SCEP = @as(u32, 65536);
pub const CR_IN_RPC = @as(u32, 131072);
pub const CR_IN_HTTP = @as(u32, 196608);
pub const CR_IN_FULLRESPONSE = @as(u32, 262144);
pub const CR_IN_CRLS = @as(u32, 524288);
pub const CR_IN_MACHINE = @as(u32, 1048576);
pub const CR_IN_ROBO = @as(u32, 2097152);
pub const CR_IN_CLIENTIDNONE = @as(u32, 4194304);
pub const CR_IN_CONNECTONLY = @as(u32, 8388608);
pub const CR_IN_RETURNCHALLENGE = @as(u32, 16777216);
pub const CR_IN_SCEPPOST = @as(u32, 33554432);
pub const CR_IN_CERTIFICATETRANSPARENCY = @as(u32, 67108864);
pub const CC_UIPICKCONFIGSKIPLOCALCA = @as(u32, 5);
pub const CR_DISP_REVOKED = @as(u32, 6);
pub const CR_OUT_BASE64REQUESTHEADER = @as(u32, 3);
pub const CR_OUT_HEX = @as(u32, 4);
pub const CR_OUT_HEXASCII = @as(u32, 5);
pub const CR_OUT_BASE64X509CRLHEADER = @as(u32, 9);
pub const CR_OUT_HEXADDR = @as(u32, 10);
pub const CR_OUT_HEXASCIIADDR = @as(u32, 11);
pub const CR_OUT_HEXRAW = @as(u32, 12);
pub const CR_OUT_ENCODEMASK = @as(u32, 255);
pub const CR_OUT_CHAIN = @as(u32, 256);
pub const CR_OUT_CRLS = @as(u32, 512);
pub const CR_OUT_NOCRLF = @as(u32, 1073741824);
pub const CR_OUT_NOCR = @as(u32, 2147483648);
pub const CR_GEMT_DEFAULT = @as(u32, 0);
pub const CR_GEMT_HRESULT_STRING = @as(u32, 1);
pub const CR_GEMT_HTTP_ERROR = @as(u32, 2);
pub const CR_PROP_NONE = @as(u32, 0);
pub const CR_PROP_FILEVERSION = @as(u32, 1);
pub const CR_PROP_PRODUCTVERSION = @as(u32, 2);
pub const CR_PROP_EXITCOUNT = @as(u32, 3);
pub const CR_PROP_EXITDESCRIPTION = @as(u32, 4);
pub const CR_PROP_POLICYDESCRIPTION = @as(u32, 5);
pub const CR_PROP_CANAME = @as(u32, 6);
pub const CR_PROP_SANITIZEDCANAME = @as(u32, 7);
pub const CR_PROP_SHAREDFOLDER = @as(u32, 8);
pub const CR_PROP_PARENTCA = @as(u32, 9);
pub const CR_PROP_CATYPE = @as(u32, 10);
pub const CR_PROP_CASIGCERTCOUNT = @as(u32, 11);
pub const CR_PROP_CASIGCERT = @as(u32, 12);
pub const CR_PROP_CASIGCERTCHAIN = @as(u32, 13);
pub const CR_PROP_CAXCHGCERTCOUNT = @as(u32, 14);
pub const CR_PROP_CAXCHGCERT = @as(u32, 15);
pub const CR_PROP_CAXCHGCERTCHAIN = @as(u32, 16);
pub const CR_PROP_BASECRL = @as(u32, 17);
pub const CR_PROP_DELTACRL = @as(u32, 18);
pub const CR_PROP_CACERTSTATE = @as(u32, 19);
pub const CR_PROP_CRLSTATE = @as(u32, 20);
pub const CR_PROP_CAPROPIDMAX = @as(u32, 21);
pub const CR_PROP_DNSNAME = @as(u32, 22);
pub const CR_PROP_ROLESEPARATIONENABLED = @as(u32, 23);
pub const CR_PROP_KRACERTUSEDCOUNT = @as(u32, 24);
pub const CR_PROP_KRACERTCOUNT = @as(u32, 25);
pub const CR_PROP_KRACERT = @as(u32, 26);
pub const CR_PROP_KRACERTSTATE = @as(u32, 27);
pub const CR_PROP_ADVANCEDSERVER = @as(u32, 28);
pub const CR_PROP_TEMPLATES = @as(u32, 29);
pub const CR_PROP_BASECRLPUBLISHSTATUS = @as(u32, 30);
pub const CR_PROP_DELTACRLPUBLISHSTATUS = @as(u32, 31);
pub const CR_PROP_CASIGCERTCRLCHAIN = @as(u32, 32);
pub const CR_PROP_CAXCHGCERTCRLCHAIN = @as(u32, 33);
pub const CR_PROP_CACERTSTATUSCODE = @as(u32, 34);
pub const CR_PROP_CAFORWARDCROSSCERT = @as(u32, 35);
pub const CR_PROP_CABACKWARDCROSSCERT = @as(u32, 36);
pub const CR_PROP_CAFORWARDCROSSCERTSTATE = @as(u32, 37);
pub const CR_PROP_CABACKWARDCROSSCERTSTATE = @as(u32, 38);
pub const CR_PROP_CACERTVERSION = @as(u32, 39);
pub const CR_PROP_SANITIZEDCASHORTNAME = @as(u32, 40);
pub const CR_PROP_CERTCDPURLS = @as(u32, 41);
pub const CR_PROP_CERTAIAURLS = @as(u32, 42);
pub const CR_PROP_CERTAIAOCSPURLS = @as(u32, 43);
pub const CR_PROP_LOCALENAME = @as(u32, 44);
pub const CR_PROP_SUBJECTTEMPLATE_OIDS = @as(u32, 45);
pub const CR_PROP_SCEPSERVERCERTS = @as(u32, 1000);
pub const CR_PROP_SCEPSERVERCAPABILITIES = @as(u32, 1001);
pub const CR_PROP_SCEPSERVERCERTSCHAIN = @as(u32, 1002);
pub const CR_PROP_SCEPMIN = @as(u32, 1000);
pub const CR_PROP_SCEPMAX = @as(u32, 1002);
pub const FR_PROP_CLAIMCHALLENGE = @as(u32, 22);
pub const EAN_NAMEOBJECTID = @as(u32, 2147483648);
pub const EANR_SUPPRESS_IA5CONVERSION = @as(u32, 2147483648);
pub const CERTENROLL_INDEX_BASE = @as(u32, 0);
pub const EXITEVENT_INVALID = @as(u32, 0);
pub const EXITEVENT_STARTUP = @as(u32, 128);
pub const EXITEVENT_CERTIMPORTED = @as(u32, 512);
pub const ENUMEXT_OBJECTID = @as(u32, 1);
pub const CMM_REFRESHONLY = @as(u32, 1);
pub const CMM_READONLY = @as(u32, 2);
pub const DBSESSIONCOUNTDEFAULT = @as(u32, 100);
pub const DBFLAGS_READONLY = @as(u32, 1);
pub const DBFLAGS_CREATEIFNEEDED = @as(u32, 2);
pub const DBFLAGS_CIRCULARLOGGING = @as(u32, 4);
pub const DBFLAGS_LAZYFLUSH = @as(u32, 8);
pub const DBFLAGS_MAXCACHESIZEX100 = @as(u32, 16);
pub const DBFLAGS_CHECKPOINTDEPTH60MB = @as(u32, 32);
pub const DBFLAGS_LOGBUFFERSLARGE = @as(u32, 64);
pub const DBFLAGS_LOGBUFFERSHUGE = @as(u32, 128);
pub const DBFLAGS_LOGFILESIZE16MB = @as(u32, 256);
pub const DBFLAGS_MULTITHREADTRANSACTIONS = @as(u32, 512);
pub const DBFLAGS_DISABLESNAPSHOTBACKUP = @as(u32, 1024);
pub const DBFLAGS_ENABLEVOLATILEREQUESTS = @as(u32, 2048);
pub const LDAPF_SSLENABLE = @as(u32, 1);
pub const LDAPF_SIGNDISABLE = @as(u32, 2);
pub const CSVER_MAJOR_WIN2K = @as(u32, 1);
pub const CSVER_MINOR_WIN2K = @as(u32, 1);
pub const CSVER_MAJOR_WHISTLER = @as(u32, 2);
pub const CSVER_MINOR_WHISTLER_BETA2 = @as(u32, 1);
pub const CSVER_MINOR_WHISTLER_BETA3 = @as(u32, 2);
pub const CSVER_MAJOR_LONGHORN = @as(u32, 3);
pub const CSVER_MINOR_LONGHORN_BETA1 = @as(u32, 1);
pub const CSVER_MAJOR_WIN7 = @as(u32, 4);
pub const CSVER_MINOR_WIN7 = @as(u32, 1);
pub const CSVER_MAJOR_WIN8 = @as(u32, 5);
pub const CSVER_MINOR_WIN8 = @as(u32, 1);
pub const CSVER_MAJOR_WINBLUE = @as(u32, 6);
pub const CSVER_MINOR_WINBLUE = @as(u32, 1);
pub const CSVER_MAJOR_THRESHOLD = @as(u32, 7);
pub const CSVER_MINOR_THRESHOLD = @as(u32, 1);
pub const CSVER_MAJOR = @as(u32, 7);
pub const CSVER_MINOR = @as(u32, 1);
pub const CCLOCKSKEWMINUTESDEFAULT = @as(u32, 10);
pub const CVIEWAGEMINUTESDEFAULT = @as(u32, 16);
pub const SETUP_SERVER_FLAG = @as(u32, 1);
pub const SETUP_CLIENT_FLAG = @as(u32, 2);
pub const SETUP_SUSPEND_FLAG = @as(u32, 4);
pub const SETUP_REQUEST_FLAG = @as(u32, 8);
pub const SETUP_ONLINE_FLAG = @as(u32, 16);
pub const SETUP_DENIED_FLAG = @as(u32, 32);
pub const SETUP_CREATEDB_FLAG = @as(u32, 64);
pub const SETUP_ATTEMPT_VROOT_CREATE = @as(u32, 128);
pub const SETUP_FORCECRL_FLAG = @as(u32, 256);
pub const SETUP_UPDATE_CAOBJECT_SVRTYPE = @as(u32, 512);
pub const SETUP_SERVER_UPGRADED_FLAG = @as(u32, 1024);
pub const SETUP_W2K_SECURITY_NOT_UPGRADED_FLAG = @as(u32, 2048);
pub const SETUP_SECURITY_CHANGED = @as(u32, 4096);
pub const SETUP_DCOM_SECURITY_UPDATED_FLAG = @as(u32, 8192);
pub const SETUP_SERVER_IS_UP_TO_DATE_FLAG = @as(u32, 16384);
pub const CRLF_DELTA_USE_OLDEST_UNEXPIRED_BASE = @as(u32, 1);
pub const CRLF_DELETE_EXPIRED_CRLS = @as(u32, 2);
pub const CRLF_CRLNUMBER_CRITICAL = @as(u32, 4);
pub const CRLF_REVCHECK_IGNORE_OFFLINE = @as(u32, 8);
pub const CRLF_IGNORE_INVALID_POLICIES = @as(u32, 16);
pub const CRLF_REBUILD_MODIFIED_SUBJECT_ONLY = @as(u32, 32);
pub const CRLF_SAVE_FAILED_CERTS = @as(u32, 64);
pub const CRLF_IGNORE_UNKNOWN_CMC_ATTRIBUTES = @as(u32, 128);
pub const CRLF_IGNORE_CROSS_CERT_TRUST_ERROR = @as(u32, 256);
pub const CRLF_PUBLISH_EXPIRED_CERT_CRLS = @as(u32, 512);
pub const CRLF_ENFORCE_ENROLLMENT_AGENT = @as(u32, 1024);
pub const CRLF_DISABLE_RDN_REORDER = @as(u32, 2048);
pub const CRLF_DISABLE_ROOT_CROSS_CERTS = @as(u32, 4096);
pub const CRLF_LOG_FULL_RESPONSE = @as(u32, 8192);
pub const CRLF_USE_XCHG_CERT_TEMPLATE = @as(u32, 16384);
pub const CRLF_USE_CROSS_CERT_TEMPLATE = @as(u32, 32768);
pub const CRLF_ALLOW_REQUEST_ATTRIBUTE_SUBJECT = @as(u32, 65536);
pub const CRLF_REVCHECK_IGNORE_NOREVCHECK = @as(u32, 131072);
pub const CRLF_PRESERVE_EXPIRED_CA_CERTS = @as(u32, 262144);
pub const CRLF_PRESERVE_REVOKED_CA_CERTS = @as(u32, 524288);
pub const CRLF_DISABLE_CHAIN_VERIFICATION = @as(u32, 1048576);
pub const CRLF_BUILD_ROOTCA_CRLENTRIES_BASEDONKEY = @as(u32, 2097152);
pub const KRAF_ENABLEFOREIGN = @as(u32, 1);
pub const KRAF_SAVEBADREQUESTKEY = @as(u32, 2);
pub const KRAF_ENABLEARCHIVEALL = @as(u32, 4);
pub const KRAF_DISABLEUSEDEFAULTPROVIDER = @as(u32, 8);
pub const IF_LOCKICERTREQUEST = @as(u32, 1);
pub const IF_NOREMOTEICERTREQUEST = @as(u32, 2);
pub const IF_NOLOCALICERTREQUEST = @as(u32, 4);
pub const IF_NORPCICERTREQUEST = @as(u32, 8);
pub const IF_NOREMOTEICERTADMIN = @as(u32, 16);
pub const IF_NOLOCALICERTADMIN = @as(u32, 32);
pub const IF_NOREMOTEICERTADMINBACKUP = @as(u32, 64);
pub const IF_NOLOCALICERTADMINBACKUP = @as(u32, 128);
pub const IF_NOSNAPSHOTBACKUP = @as(u32, 256);
pub const IF_ENFORCEENCRYPTICERTREQUEST = @as(u32, 512);
pub const IF_ENFORCEENCRYPTICERTADMIN = @as(u32, 1024);
pub const IF_ENABLEEXITKEYRETRIEVAL = @as(u32, 2048);
pub const IF_ENABLEADMINASAUDITOR = @as(u32, 4096);
pub const PROCFLG_NONE = @as(u32, 0);
pub const PROCFLG_ENFORCEGOODKEYS = @as(u32, 1);
pub const CSURL_SERVERPUBLISH = @as(u32, 1);
pub const CSURL_ADDTOCERTCDP = @as(u32, 2);
pub const CSURL_ADDTOFRESHESTCRL = @as(u32, 4);
pub const CSURL_ADDTOCRLCDP = @as(u32, 8);
pub const CSURL_PUBLISHRETRY = @as(u32, 16);
pub const CSURL_ADDTOCERTOCSP = @as(u32, 32);
pub const CSURL_SERVERPUBLISHDELTA = @as(u32, 64);
pub const CSURL_ADDTOIDP = @as(u32, 128);
pub const CAPATHLENGTH_INFINITE = @as(u32, 4294967295);
pub const REQDISP_PENDING = @as(u32, 0);
pub const REQDISP_ISSUE = @as(u32, 1);
pub const REQDISP_DENY = @as(u32, 2);
pub const REQDISP_USEREQUESTATTRIBUTE = @as(u32, 3);
pub const REQDISP_MASK = @as(u32, 255);
pub const REQDISP_PENDINGFIRST = @as(u32, 256);
pub const REQDISP_DEFAULT_ENTERPRISE = @as(u32, 1);
pub const REVEXT_CDPLDAPURL_OLD = @as(u32, 1);
pub const REVEXT_CDPHTTPURL_OLD = @as(u32, 2);
pub const REVEXT_CDPFTPURL_OLD = @as(u32, 4);
pub const REVEXT_CDPFILEURL_OLD = @as(u32, 8);
pub const REVEXT_CDPURLMASK_OLD = @as(u32, 255);
pub const REVEXT_CDPENABLE = @as(u32, 256);
pub const REVEXT_ASPENABLE = @as(u32, 512);
pub const REVEXT_DEFAULT_NODS = @as(u32, 256);
pub const REVEXT_DEFAULT_DS = @as(u32, 256);
pub const ISSCERT_LDAPURL_OLD = @as(u32, 1);
pub const ISSCERT_HTTPURL_OLD = @as(u32, 2);
pub const ISSCERT_FTPURL_OLD = @as(u32, 4);
pub const ISSCERT_FILEURL_OLD = @as(u32, 8);
pub const ISSCERT_URLMASK_OLD = @as(u32, 255);
pub const ISSCERT_ENABLE = @as(u32, 256);
pub const ISSCERT_DEFAULT_NODS = @as(u32, 256);
pub const ISSCERT_DEFAULT_DS = @as(u32, 256);
pub const EDITF_ENABLEREQUESTEXTENSIONS = @as(u32, 1);
pub const EDITF_REQUESTEXTENSIONLIST = @as(u32, 2);
pub const EDITF_DISABLEEXTENSIONLIST = @as(u32, 4);
pub const EDITF_ADDOLDKEYUSAGE = @as(u32, 8);
pub const EDITF_ADDOLDCERTTYPE = @as(u32, 16);
pub const EDITF_ATTRIBUTEENDDATE = @as(u32, 32);
pub const EDITF_BASICCONSTRAINTSCRITICAL = @as(u32, 64);
pub const EDITF_BASICCONSTRAINTSCA = @as(u32, 128);
pub const EDITF_ENABLEAKIKEYID = @as(u32, 256);
pub const EDITF_ATTRIBUTECA = @as(u32, 512);
pub const EDITF_IGNOREREQUESTERGROUP = @as(u32, 1024);
pub const EDITF_ENABLEAKIISSUERNAME = @as(u32, 2048);
pub const EDITF_ENABLEAKIISSUERSERIAL = @as(u32, 4096);
pub const EDITF_ENABLEAKICRITICAL = @as(u32, 8192);
pub const EDITF_SERVERUPGRADED = @as(u32, 16384);
pub const EDITF_ATTRIBUTEEKU = @as(u32, 32768);
pub const EDITF_ENABLEDEFAULTSMIME = @as(u32, 65536);
pub const EDITF_EMAILOPTIONAL = @as(u32, 131072);
pub const EDITF_ATTRIBUTESUBJECTALTNAME2 = @as(u32, 262144);
pub const EDITF_ENABLELDAPREFERRALS = @as(u32, 524288);
pub const EDITF_ENABLECHASECLIENTDC = @as(u32, 1048576);
pub const EDITF_AUDITCERTTEMPLATELOAD = @as(u32, 2097152);
pub const EDITF_DISABLEOLDOSCNUPN = @as(u32, 4194304);
pub const EDITF_DISABLELDAPPACKAGELIST = @as(u32, 8388608);
pub const EDITF_ENABLEUPNMAP = @as(u32, 16777216);
pub const EDITF_ENABLEOCSPREVNOCHECK = @as(u32, 33554432);
pub const EDITF_ENABLERENEWONBEHALFOF = @as(u32, 67108864);
pub const EDITF_ENABLEKEYENCIPHERMENTCACERT = @as(u32, 134217728);
pub const EXITPUB_FILE = @as(u32, 1);
pub const EXITPUB_ACTIVEDIRECTORY = @as(u32, 2);
pub const EXITPUB_REMOVEOLDCERTS = @as(u32, 16);
pub const EXITPUB_DEFAULT_ENTERPRISE = @as(u32, 2);
pub const EXITPUB_DEFAULT_STANDALONE = @as(u32, 1);
pub const TP_MACHINEPOLICY = @as(u32, 1);
pub const KR_ENABLE_MACHINE = @as(u32, 1);
pub const KR_ENABLE_USER = @as(u32, 2);
pub const EXTENSION_CRITICAL_FLAG = @as(u32, 1);
pub const EXTENSION_DISABLE_FLAG = @as(u32, 2);
pub const EXTENSION_DELETE_FLAG = @as(u32, 4);
pub const EXTENSION_POLICY_MASK = @as(u32, 65535);
pub const EXTENSION_ORIGIN_REQUEST = @as(u32, 65536);
pub const EXTENSION_ORIGIN_POLICY = @as(u32, 131072);
pub const EXTENSION_ORIGIN_ADMIN = @as(u32, 196608);
pub const EXTENSION_ORIGIN_SERVER = @as(u32, 262144);
pub const EXTENSION_ORIGIN_RENEWALCERT = @as(u32, 327680);
pub const EXTENSION_ORIGIN_IMPORTEDCERT = @as(u32, 393216);
pub const EXTENSION_ORIGIN_PKCS7 = @as(u32, 458752);
pub const EXTENSION_ORIGIN_CMC = @as(u32, 524288);
pub const EXTENSION_ORIGIN_CACERT = @as(u32, 589824);
pub const EXTENSION_ORIGIN_MASK = @as(u32, 983040);
pub const CPF_BASE = @as(u32, 1);
pub const CPF_DELTA = @as(u32, 2);
pub const CPF_COMPLETE = @as(u32, 4);
pub const CPF_SHADOW = @as(u32, 8);
pub const CPF_CASTORE_ERROR = @as(u32, 16);
pub const CPF_BADURL_ERROR = @as(u32, 32);
pub const CPF_MANUAL = @as(u32, 64);
pub const CPF_SIGNATURE_ERROR = @as(u32, 128);
pub const CPF_LDAP_ERROR = @as(u32, 256);
pub const CPF_FILE_ERROR = @as(u32, 512);
pub const CPF_FTP_ERROR = @as(u32, 1024);
pub const CPF_HTTP_ERROR = @as(u32, 2048);
pub const CPF_POSTPONED_BASE_LDAP_ERROR = @as(u32, 4096);
pub const CPF_POSTPONED_BASE_FILE_ERROR = @as(u32, 8192);
pub const PROPTYPE_MASK = @as(u32, 255);
pub const PROPCALLER_SERVER = @as(u32, 256);
pub const PROPCALLER_POLICY = @as(u32, 512);
pub const PROPCALLER_EXIT = @as(u32, 768);
pub const PROPCALLER_ADMIN = @as(u32, 1024);
pub const PROPCALLER_REQUEST = @as(u32, 1280);
pub const PROPCALLER_MASK = @as(u32, 3840);
pub const PROPFLAGS_INDEXED = @as(u32, 65536);
pub const CR_FLG_FORCETELETEX = @as(u32, 1);
pub const CR_FLG_RENEWAL = @as(u32, 2);
pub const CR_FLG_FORCEUTF8 = @as(u32, 4);
pub const CR_FLG_CAXCHGCERT = @as(u32, 8);
pub const CR_FLG_ENROLLONBEHALFOF = @as(u32, 16);
pub const CR_FLG_SUBJECTUNMODIFIED = @as(u32, 32);
pub const CR_FLG_VALIDENCRYPTEDKEYHASH = @as(u32, 64);
pub const CR_FLG_CACROSSCERT = @as(u32, 128);
pub const CR_FLG_ENFORCEUTF8 = @as(u32, 256);
pub const CR_FLG_DEFINEDCACERT = @as(u32, 512);
pub const CR_FLG_CHALLENGEPENDING = @as(u32, 1024);
pub const CR_FLG_CHALLENGESATISFIED = @as(u32, 2048);
pub const CR_FLG_TRUSTONUSE = @as(u32, 4096);
pub const CR_FLG_TRUSTEKCERT = @as(u32, 8192);
pub const CR_FLG_TRUSTEKKEY = @as(u32, 16384);
pub const CR_FLG_PUBLISHERROR = @as(u32, 2147483648);
pub const DB_DISP_ACTIVE = @as(u32, 8);
pub const DB_DISP_PENDING = @as(u32, 9);
pub const DB_DISP_QUEUE_MAX = @as(u32, 9);
pub const DB_DISP_FOREIGN = @as(u32, 12);
pub const DB_DISP_CA_CERT = @as(u32, 15);
pub const DB_DISP_CA_CERT_CHAIN = @as(u32, 16);
pub const DB_DISP_KRA_CERT = @as(u32, 17);
pub const DB_DISP_LOG_MIN = @as(u32, 20);
pub const DB_DISP_ISSUED = @as(u32, 20);
pub const DB_DISP_REVOKED = @as(u32, 21);
pub const DB_DISP_LOG_FAILED_MIN = @as(u32, 30);
pub const DB_DISP_ERROR = @as(u32, 30);
pub const DB_DISP_DENIED = @as(u32, 31);
pub const VR_PENDING = @as(u32, 0);
pub const VR_INSTANT_OK = @as(u32, 1);
pub const VR_INSTANT_BAD = @as(u32, 2);
pub const CV_OUT_HEXRAW = @as(u32, 12);
pub const CV_OUT_ENCODEMASK = @as(u32, 255);
pub const CV_OUT_NOCRLF = @as(u32, 1073741824);
pub const CV_OUT_NOCR = @as(u32, 2147483648);
pub const CVR_SEEK_NONE = @as(u32, 0);
pub const CVR_SEEK_MASK = @as(u32, 255);
pub const CVR_SEEK_NODELTA = @as(u32, 4096);
pub const CVR_SORT_NONE = @as(u32, 0);
pub const CVR_SORT_ASCEND = @as(u32, 1);
pub const CVR_SORT_DESCEND = @as(u32, 2);
pub const CV_COLUMN_EXTENSION_DEFAULT = @as(i32, -4);
pub const CV_COLUMN_ATTRIBUTE_DEFAULT = @as(i32, -5);
pub const CV_COLUMN_CRL_DEFAULT = @as(i32, -6);
pub const CV_COLUMN_LOG_REVOKED_DEFAULT = @as(i32, -7);
pub const CVRC_TABLE_MASK = @as(u32, 61440);
pub const CVRC_TABLE_SHIFT = @as(u32, 12);
pub const CRYPT_ENUM_ALL_PROVIDERS = @as(u32, 1);
pub const XEPR_ENUM_FIRST = @as(i32, -1);
pub const XEPR_DATE = @as(u32, 5);
pub const XEPR_TEMPLATENAME = @as(u32, 6);
pub const XEPR_VERSION = @as(u32, 7);
pub const XEPR_V1TEMPLATENAME = @as(u32, 9);
pub const XEPR_V2TEMPLATEOID = @as(u32, 16);
pub const XEKL_KEYSIZE_DEFAULT = @as(u32, 4);
pub const XECP_STRING_PROPERTY = @as(u32, 1);
pub const XECI_DISABLE = @as(u32, 0);
pub const XECI_XENROLL = @as(u32, 1);
pub const XECI_AUTOENROLL = @as(u32, 2);
pub const XECI_REQWIZARD = @as(u32, 3);
pub const XECI_CERTREQ = @as(u32, 4);
pub const wszCMM_PROP_NAME = "Name";
pub const wszCMM_PROP_DESCRIPTION = "Description";
pub const wszCMM_PROP_COPYRIGHT = "Copyright";
pub const wszCMM_PROP_FILEVER = "File Version";
pub const wszCMM_PROP_PRODUCTVER = "Product Version";
pub const wszCMM_PROP_DISPLAY_HWND = "HWND";
pub const wszCMM_PROP_ISMULTITHREADED = "IsMultiThreaded";

//--------------------------------------------------------------------------------
// Section: Types (344)
//--------------------------------------------------------------------------------
pub const CERT_VIEW_COLUMN_INDEX = enum(i32) {
    LOG_DEFAULT = -2,
    LOG_FAILED_DEFAULT = -3,
    QUEUE_DEFAULT = -1,
};
pub const CV_COLUMN_LOG_DEFAULT = CERT_VIEW_COLUMN_INDEX.LOG_DEFAULT;
pub const CV_COLUMN_LOG_FAILED_DEFAULT = CERT_VIEW_COLUMN_INDEX.LOG_FAILED_DEFAULT;
pub const CV_COLUMN_QUEUE_DEFAULT = CERT_VIEW_COLUMN_INDEX.QUEUE_DEFAULT;

pub const CERT_DELETE_ROW_FLAGS = enum(u32) {
    EXPIRED = 1,
    REQUEST_LAST_CHANGED = 2,
};
pub const CDR_EXPIRED = CERT_DELETE_ROW_FLAGS.EXPIRED;
pub const CDR_REQUEST_LAST_CHANGED = CERT_DELETE_ROW_FLAGS.REQUEST_LAST_CHANGED;

pub const FULL_RESPONSE_PROPERTY_ID = enum(u32) {
    NONE = 0,
    FULLRESPONSE = 1,
    STATUSINFOCOUNT = 2,
    BODYPARTSTRING = 3,
    STATUS = 4,
    STATUSSTRING = 5,
    OTHERINFOCHOICE = 6,
    FAILINFO = 7,
    PENDINFOTOKEN = 8,
    PENDINFOTIME = 9,
    ISSUEDCERTIFICATEHASH = 10,
    ISSUEDCERTIFICATE = 11,
    ISSUEDCERTIFICATECHAIN = 12,
    ISSUEDCERTIFICATECRLCHAIN = 13,
    ENCRYPTEDKEYHASH = 14,
    FULLRESPONSENOPKCS7 = 15,
    CAEXCHANGECERTIFICATEHASH = 16,
    CAEXCHANGECERTIFICATE = 17,
    CAEXCHANGECERTIFICATECHAIN = 18,
    CAEXCHANGECERTIFICATECRLCHAIN = 19,
    ATTESTATIONCHALLENGE = 20,
    ATTESTATIONPROVIDERNAME = 21,
};
pub const FR_PROP_NONE = FULL_RESPONSE_PROPERTY_ID.NONE;
pub const FR_PROP_FULLRESPONSE = FULL_RESPONSE_PROPERTY_ID.FULLRESPONSE;
pub const FR_PROP_STATUSINFOCOUNT = FULL_RESPONSE_PROPERTY_ID.STATUSINFOCOUNT;
pub const FR_PROP_BODYPARTSTRING = FULL_RESPONSE_PROPERTY_ID.BODYPARTSTRING;
pub const FR_PROP_STATUS = FULL_RESPONSE_PROPERTY_ID.STATUS;
pub const FR_PROP_STATUSSTRING = FULL_RESPONSE_PROPERTY_ID.STATUSSTRING;
pub const FR_PROP_OTHERINFOCHOICE = FULL_RESPONSE_PROPERTY_ID.OTHERINFOCHOICE;
pub const FR_PROP_FAILINFO = FULL_RESPONSE_PROPERTY_ID.FAILINFO;
pub const FR_PROP_PENDINFOTOKEN = FULL_RESPONSE_PROPERTY_ID.PENDINFOTOKEN;
pub const FR_PROP_PENDINFOTIME = FULL_RESPONSE_PROPERTY_ID.PENDINFOTIME;
pub const FR_PROP_ISSUEDCERTIFICATEHASH = FULL_RESPONSE_PROPERTY_ID.ISSUEDCERTIFICATEHASH;
pub const FR_PROP_ISSUEDCERTIFICATE = FULL_RESPONSE_PROPERTY_ID.ISSUEDCERTIFICATE;
pub const FR_PROP_ISSUEDCERTIFICATECHAIN = FULL_RESPONSE_PROPERTY_ID.ISSUEDCERTIFICATECHAIN;
pub const FR_PROP_ISSUEDCERTIFICATECRLCHAIN = FULL_RESPONSE_PROPERTY_ID.ISSUEDCERTIFICATECRLCHAIN;
pub const FR_PROP_ENCRYPTEDKEYHASH = FULL_RESPONSE_PROPERTY_ID.ENCRYPTEDKEYHASH;
pub const FR_PROP_FULLRESPONSENOPKCS7 = FULL_RESPONSE_PROPERTY_ID.FULLRESPONSENOPKCS7;
pub const FR_PROP_CAEXCHANGECERTIFICATEHASH = FULL_RESPONSE_PROPERTY_ID.CAEXCHANGECERTIFICATEHASH;
pub const FR_PROP_CAEXCHANGECERTIFICATE = FULL_RESPONSE_PROPERTY_ID.CAEXCHANGECERTIFICATE;
pub const FR_PROP_CAEXCHANGECERTIFICATECHAIN = FULL_RESPONSE_PROPERTY_ID.CAEXCHANGECERTIFICATECHAIN;
pub const FR_PROP_CAEXCHANGECERTIFICATECRLCHAIN = FULL_RESPONSE_PROPERTY_ID.CAEXCHANGECERTIFICATECRLCHAIN;
pub const FR_PROP_ATTESTATIONCHALLENGE = FULL_RESPONSE_PROPERTY_ID.ATTESTATIONCHALLENGE;
pub const FR_PROP_ATTESTATIONPROVIDERNAME = FULL_RESPONSE_PROPERTY_ID.ATTESTATIONPROVIDERNAME;

pub const CVRC_COLUMN = enum(u32) {
    SCHEMA = 0,
    RESULT = 1,
    VALUE = 2,
    MASK = 4095,
};
pub const CVRC_COLUMN_SCHEMA = CVRC_COLUMN.SCHEMA;
pub const CVRC_COLUMN_RESULT = CVRC_COLUMN.RESULT;
pub const CVRC_COLUMN_VALUE = CVRC_COLUMN.VALUE;
pub const CVRC_COLUMN_MASK = CVRC_COLUMN.MASK;

pub const CERT_IMPORT_FLAGS = enum(u32) {
    ASE64HEADER = 0,
    ASE64 = 1,
    INARY = 2,
};
pub const CR_IN_BASE64HEADER = CERT_IMPORT_FLAGS.ASE64HEADER;
pub const CR_IN_BASE64 = CERT_IMPORT_FLAGS.ASE64;
pub const CR_IN_BINARY = CERT_IMPORT_FLAGS.INARY;

pub const CERT_GET_CONFIG_FLAGS = enum(u32) {
    DEFAULTCONFIG = 0,
    FIRSTCONFIG = 2,
    LOCALACTIVECONFIG = 4,
    LOCALCONFIG = 3,
    UIPICKCONFIG = 1,
    UIPICKCONFIGSKIPLOCALCA_ = 5,
};
pub const CC_DEFAULTCONFIG = CERT_GET_CONFIG_FLAGS.DEFAULTCONFIG;
pub const CC_FIRSTCONFIG = CERT_GET_CONFIG_FLAGS.FIRSTCONFIG;
pub const CC_LOCALACTIVECONFIG = CERT_GET_CONFIG_FLAGS.LOCALACTIVECONFIG;
pub const CC_LOCALCONFIG = CERT_GET_CONFIG_FLAGS.LOCALCONFIG;
pub const CC_UIPICKCONFIG = CERT_GET_CONFIG_FLAGS.UIPICKCONFIG;
pub const CC_UIPICKCONFIGSKIPLOCALCA_ = CERT_GET_CONFIG_FLAGS.UIPICKCONFIGSKIPLOCALCA_;

pub const ENUM_CERT_COLUMN_VALUE_FLAGS = enum(u32) {
    BASE64 = 1,
    BASE64HEADER = 0,
    BASE64REQUESTHEADER = 3,
    BASE64X509CRLHEADER = 9,
    BINARY = 2,
    HEX = 4,
    HEXADDR = 10,
    HEXASCII = 5,
    HEXASCIIADDR = 11,
};
pub const CV_OUT_BASE64 = ENUM_CERT_COLUMN_VALUE_FLAGS.BASE64;
pub const CV_OUT_BASE64HEADER = ENUM_CERT_COLUMN_VALUE_FLAGS.BASE64HEADER;
pub const CV_OUT_BASE64REQUESTHEADER = ENUM_CERT_COLUMN_VALUE_FLAGS.BASE64REQUESTHEADER;
pub const CV_OUT_BASE64X509CRLHEADER = ENUM_CERT_COLUMN_VALUE_FLAGS.BASE64X509CRLHEADER;
pub const CV_OUT_BINARY = ENUM_CERT_COLUMN_VALUE_FLAGS.BINARY;
pub const CV_OUT_HEX = ENUM_CERT_COLUMN_VALUE_FLAGS.HEX;
pub const CV_OUT_HEXADDR = ENUM_CERT_COLUMN_VALUE_FLAGS.HEXADDR;
pub const CV_OUT_HEXASCII = ENUM_CERT_COLUMN_VALUE_FLAGS.HEXASCII;
pub const CV_OUT_HEXASCIIADDR = ENUM_CERT_COLUMN_VALUE_FLAGS.HEXASCIIADDR;

pub const PENDING_REQUEST_DESIRED_PROPERTY = enum(u32) {
    CADNS = 1,
    CAFRIENDLYNAME = 3,
    CANAME = 2,
    HASH = 8,
    REQUESTID = 4,
};
pub const XEPR_CADNS = PENDING_REQUEST_DESIRED_PROPERTY.CADNS;
pub const XEPR_CAFRIENDLYNAME = PENDING_REQUEST_DESIRED_PROPERTY.CAFRIENDLYNAME;
pub const XEPR_CANAME = PENDING_REQUEST_DESIRED_PROPERTY.CANAME;
pub const XEPR_HASH = PENDING_REQUEST_DESIRED_PROPERTY.HASH;
pub const XEPR_REQUESTID = PENDING_REQUEST_DESIRED_PROPERTY.REQUESTID;

pub const CERTADMIN_GET_ROLES_FLAGS = enum(u32) {
    ADMIN = 1,
    AUDITOR = 4,
    ENROLL = 512,
    OFFICER = 2,
    OPERATOR = 8,
    READ = 256,
    _,
    pub fn initFlags(o: struct {
        ADMIN: u1 = 0,
        AUDITOR: u1 = 0,
        ENROLL: u1 = 0,
        OFFICER: u1 = 0,
        OPERATOR: u1 = 0,
        READ: u1 = 0,
    }) CERTADMIN_GET_ROLES_FLAGS {
        return @as(CERTADMIN_GET_ROLES_FLAGS, @enumFromInt((if (o.ADMIN == 1) @intFromEnum(CERTADMIN_GET_ROLES_FLAGS.ADMIN) else 0) | (if (o.AUDITOR == 1) @intFromEnum(CERTADMIN_GET_ROLES_FLAGS.AUDITOR) else 0) | (if (o.ENROLL == 1) @intFromEnum(CERTADMIN_GET_ROLES_FLAGS.ENROLL) else 0) | (if (o.OFFICER == 1) @intFromEnum(CERTADMIN_GET_ROLES_FLAGS.OFFICER) else 0) | (if (o.OPERATOR == 1) @intFromEnum(CERTADMIN_GET_ROLES_FLAGS.OPERATOR) else 0) | (if (o.READ == 1) @intFromEnum(CERTADMIN_GET_ROLES_FLAGS.READ) else 0)));
    }
};
pub const CA_ACCESS_ADMIN = CERTADMIN_GET_ROLES_FLAGS.ADMIN;
pub const CA_ACCESS_AUDITOR = CERTADMIN_GET_ROLES_FLAGS.AUDITOR;
pub const CA_ACCESS_ENROLL = CERTADMIN_GET_ROLES_FLAGS.ENROLL;
pub const CA_ACCESS_OFFICER = CERTADMIN_GET_ROLES_FLAGS.OFFICER;
pub const CA_ACCESS_OPERATOR = CERTADMIN_GET_ROLES_FLAGS.OPERATOR;
pub const CA_ACCESS_READ = CERTADMIN_GET_ROLES_FLAGS.READ;

pub const CR_DISP = enum(u32) {
    DENIED = 2,
    ERROR = 1,
    INCOMPLETE = 0,
    ISSUED = 3,
    ISSUED_OUT_OF_BAND = 4,
    UNDER_SUBMISSION = 5,
};
pub const CR_DISP_DENIED = CR_DISP.DENIED;
pub const CR_DISP_ERROR = CR_DISP.ERROR;
pub const CR_DISP_INCOMPLETE = CR_DISP.INCOMPLETE;
pub const CR_DISP_ISSUED = CR_DISP.ISSUED;
pub const CR_DISP_ISSUED_OUT_OF_BAND = CR_DISP.ISSUED_OUT_OF_BAND;
pub const CR_DISP_UNDER_SUBMISSION = CR_DISP.UNDER_SUBMISSION;

pub const XEKL_KEYSIZE = enum(u32) {
    MIN = 1,
    MAX = 2,
    INC = 3,
};
pub const XEKL_KEYSIZE_MIN = XEKL_KEYSIZE.MIN;
pub const XEKL_KEYSIZE_MAX = XEKL_KEYSIZE.MAX;
pub const XEKL_KEYSIZE_INC = XEKL_KEYSIZE.INC;

pub const CERT_CREATE_REQUEST_FLAGS = enum(u32) {
    CMC = 3,
    PKCS10_V1_5 = 4,
    PKCS10_V2_0 = 1,
    PKCS7 = 2,
};
pub const XECR_CMC = CERT_CREATE_REQUEST_FLAGS.CMC;
pub const XECR_PKCS10_V1_5 = CERT_CREATE_REQUEST_FLAGS.PKCS10_V1_5;
pub const XECR_PKCS10_V2_0 = CERT_CREATE_REQUEST_FLAGS.PKCS10_V2_0;
pub const XECR_PKCS7 = CERT_CREATE_REQUEST_FLAGS.PKCS7;

pub const CERT_EXIT_EVENT_MASK = enum(u32) {
    CERTDENIED = 4,
    CERTISSUED = 1,
    CERTPENDING = 2,
    CERTRETRIEVEPENDING = 16,
    CERTREVOKED = 8,
    CRLISSUED = 32,
    SHUTDOWN = 64,
    _,
    pub fn initFlags(o: struct {
        CERTDENIED: u1 = 0,
        CERTISSUED: u1 = 0,
        CERTPENDING: u1 = 0,
        CERTRETRIEVEPENDING: u1 = 0,
        CERTREVOKED: u1 = 0,
        CRLISSUED: u1 = 0,
        SHUTDOWN: u1 = 0,
    }) CERT_EXIT_EVENT_MASK {
        return @as(CERT_EXIT_EVENT_MASK, @enumFromInt((if (o.CERTDENIED == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.CERTDENIED) else 0) | (if (o.CERTISSUED == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.CERTISSUED) else 0) | (if (o.CERTPENDING == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.CERTPENDING) else 0) | (if (o.CERTRETRIEVEPENDING == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.CERTRETRIEVEPENDING) else 0) | (if (o.CERTREVOKED == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.CERTREVOKED) else 0) | (if (o.CRLISSUED == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.CRLISSUED) else 0) | (if (o.SHUTDOWN == 1) @intFromEnum(CERT_EXIT_EVENT_MASK.SHUTDOWN) else 0)));
    }
};
pub const EXITEVENT_CERTDENIED = CERT_EXIT_EVENT_MASK.CERTDENIED;
pub const EXITEVENT_CERTISSUED = CERT_EXIT_EVENT_MASK.CERTISSUED;
pub const EXITEVENT_CERTPENDING = CERT_EXIT_EVENT_MASK.CERTPENDING;
pub const EXITEVENT_CERTRETRIEVEPENDING = CERT_EXIT_EVENT_MASK.CERTRETRIEVEPENDING;
pub const EXITEVENT_CERTREVOKED = CERT_EXIT_EVENT_MASK.CERTREVOKED;
pub const EXITEVENT_CRLISSUED = CERT_EXIT_EVENT_MASK.CRLISSUED;
pub const EXITEVENT_SHUTDOWN = CERT_EXIT_EVENT_MASK.SHUTDOWN;

pub const ADDED_CERT_TYPE = enum(u32) {
    @"1" = 1,
    @"2" = 2,
};
pub const XECT_EXTENSION_V1 = ADDED_CERT_TYPE.@"1";
pub const XECT_EXTENSION_V2 = ADDED_CERT_TYPE.@"2";

pub const CVRC_TABLE = enum(u32) {
    ATTRIBUTES = 16384,
    CRL = 20480,
    EXTENSIONS = 12288,
    REQCERT = 0,
};
pub const CVRC_TABLE_ATTRIBUTES = CVRC_TABLE.ATTRIBUTES;
pub const CVRC_TABLE_CRL = CVRC_TABLE.CRL;
pub const CVRC_TABLE_EXTENSIONS = CVRC_TABLE.EXTENSIONS;
pub const CVRC_TABLE_REQCERT = CVRC_TABLE.REQCERT;

pub const CERT_PROPERTY_TYPE = enum(u32) {
    BINARY = 3,
    DATE = 2,
    LONG = 1,
    STRING = 4,
};
pub const PROPTYPE_BINARY = CERT_PROPERTY_TYPE.BINARY;
pub const PROPTYPE_DATE = CERT_PROPERTY_TYPE.DATE;
pub const PROPTYPE_LONG = CERT_PROPERTY_TYPE.LONG;
pub const PROPTYPE_STRING = CERT_PROPERTY_TYPE.STRING;

pub const CERT_ALT_NAME = enum(u32) {
    RFC822_NAME = 2,
    DNS_NAME = 3,
    URL = 7,
    REGISTERED_ID = 9,
    DIRECTORY_NAME = 5,
    IP_ADDRESS = 8,
    OTHER_NAME = 1,
};
pub const CERT_ALT_NAME_RFC822_NAME = CERT_ALT_NAME.RFC822_NAME;
pub const CERT_ALT_NAME_DNS_NAME = CERT_ALT_NAME.DNS_NAME;
pub const CERT_ALT_NAME_URL = CERT_ALT_NAME.URL;
pub const CERT_ALT_NAME_REGISTERED_ID = CERT_ALT_NAME.REGISTERED_ID;
pub const CERT_ALT_NAME_DIRECTORY_NAME = CERT_ALT_NAME.DIRECTORY_NAME;
pub const CERT_ALT_NAME_IP_ADDRESS = CERT_ALT_NAME.IP_ADDRESS;
pub const CERT_ALT_NAME_OTHER_NAME = CERT_ALT_NAME.OTHER_NAME;

pub const CSBACKUP_TYPE = enum(u32) {
    FULL = 1,
    LOGS_ONLY = 2,
};
pub const CSBACKUP_TYPE_FULL = CSBACKUP_TYPE.FULL;
pub const CSBACKUP_TYPE_LOGS_ONLY = CSBACKUP_TYPE.LOGS_ONLY;

pub const XEKL_KEYSPEC = enum(u32) {
    KEYX = 1,
    SIG = 2,
};
pub const XEKL_KEYSPEC_KEYX = XEKL_KEYSPEC.KEYX;
pub const XEKL_KEYSPEC_SIG = XEKL_KEYSPEC.SIG;

pub const CERT_REQUEST_OUT_TYPE = enum(u32) {
    ASE64HEADER = 0,
    ASE64 = 1,
    INARY = 2,
};
pub const CR_OUT_BASE64HEADER = CERT_REQUEST_OUT_TYPE.ASE64HEADER;
pub const CR_OUT_BASE64 = CERT_REQUEST_OUT_TYPE.ASE64;
pub const CR_OUT_BINARY = CERT_REQUEST_OUT_TYPE.INARY;

pub const CERT_VIEW_SEEK_OPERATOR_FLAGS = enum(u32) {
    EQ = 1,
    LE = 4,
    LT = 2,
    GE = 8,
    GT = 16,
};
pub const CVR_SEEK_EQ = CERT_VIEW_SEEK_OPERATOR_FLAGS.EQ;
pub const CVR_SEEK_LE = CERT_VIEW_SEEK_OPERATOR_FLAGS.LE;
pub const CVR_SEEK_LT = CERT_VIEW_SEEK_OPERATOR_FLAGS.LT;
pub const CVR_SEEK_GE = CERT_VIEW_SEEK_OPERATOR_FLAGS.GE;
pub const CVR_SEEK_GT = CERT_VIEW_SEEK_OPERATOR_FLAGS.GT;

const CLSID_CCertAdmin_Value = Guid.initString("37eabaf0-7fb6-11d0-8817-00a0c903b83c");
pub const CLSID_CCertAdmin = &CLSID_CCertAdmin_Value;

const CLSID_CCertView_Value = Guid.initString("a12d0f7a-1e84-11d1-9bd6-00c04fb683fa");
pub const CLSID_CCertView = &CLSID_CCertView_Value;

const CLSID_OCSPPropertyCollection_Value = Guid.initString("f935a528-ba8a-4dd9-ba79-f283275cb2de");
pub const CLSID_OCSPPropertyCollection = &CLSID_OCSPPropertyCollection_Value;

const CLSID_OCSPAdmin_Value = Guid.initString("d3f73511-92c9-47cb-8ff2-8d891a7c4de4");
pub const CLSID_OCSPAdmin = &CLSID_OCSPAdmin_Value;

// TODO: this type is limited to platform 'windowsServer2003'
const IID_IEnumCERTVIEWCOLUMN_Value = Guid.initString("9c735be2-57a5-11d1-9bdb-00c04fb683fa");
pub const IID_IEnumCERTVIEWCOLUMN = &IID_IEnumCERTVIEWCOLUMN_Value;
pub const IEnumCERTVIEWCOLUMN = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDisplayName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetType: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        IsIndexed: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pIndexed: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pIndexed: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMaxLength: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pMaxLength: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                pMaxLength: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                Flags: ENUM_CERT_COLUMN_VALUE_FLAGS,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                Flags: ENUM_CERT_COLUMN_VALUE_FLAGS,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWCOLUMN,
                ppenum: ?*?*IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWCOLUMN,
                ppenum: ?*?*IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_Next(self: *const T, pIndex: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_GetName(self: *const T, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).GetName(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), pstrOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_GetDisplayName(self: *const T, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).GetDisplayName(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), pstrOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_GetType(self: *const T, pType: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).GetType(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), pType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_IsIndexed(self: *const T, pIndexed: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).IsIndexed(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), pIndexed);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_GetMaxLength(self: *const T, pMaxLength: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).GetMaxLength(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), pMaxLength);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_GetValue(self: *const T, Flags: ENUM_CERT_COLUMN_VALUE_FLAGS, pvarValue: ?*VARIANT) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).GetValue(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), Flags, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_Skip(self: *const T, celt: i32) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_Reset(self: *const T) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWCOLUMN_Clone(self: *const T, ppenum: ?*?*IEnumCERTVIEWCOLUMN) HRESULT {
                return @as(*const IEnumCERTVIEWCOLUMN.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumCERTVIEWCOLUMN, @ptrCast(self)), ppenum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_IEnumCERTVIEWATTRIBUTE_Value = Guid.initString("e77db656-7653-11d1-9bde-00c04fb683fa");
pub const IID_IEnumCERTVIEWATTRIBUTE = &IID_IEnumCERTVIEWATTRIBUTE_Value;
pub const IEnumCERTVIEWATTRIBUTE = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                ppenum: ?*?*IEnumCERTVIEWATTRIBUTE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWATTRIBUTE,
                ppenum: ?*?*IEnumCERTVIEWATTRIBUTE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWATTRIBUTE_Next(self: *const T, pIndex: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWATTRIBUTE.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumCERTVIEWATTRIBUTE, @ptrCast(self)), pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWATTRIBUTE_GetName(self: *const T, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const IEnumCERTVIEWATTRIBUTE.VTable, @ptrCast(self.vtable)).GetName(@as(*const IEnumCERTVIEWATTRIBUTE, @ptrCast(self)), pstrOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWATTRIBUTE_GetValue(self: *const T, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const IEnumCERTVIEWATTRIBUTE.VTable, @ptrCast(self.vtable)).GetValue(@as(*const IEnumCERTVIEWATTRIBUTE, @ptrCast(self)), pstrOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWATTRIBUTE_Skip(self: *const T, celt: i32) HRESULT {
                return @as(*const IEnumCERTVIEWATTRIBUTE.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumCERTVIEWATTRIBUTE, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWATTRIBUTE_Reset(self: *const T) HRESULT {
                return @as(*const IEnumCERTVIEWATTRIBUTE.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumCERTVIEWATTRIBUTE, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWATTRIBUTE_Clone(self: *const T, ppenum: ?*?*IEnumCERTVIEWATTRIBUTE) HRESULT {
                return @as(*const IEnumCERTVIEWATTRIBUTE.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumCERTVIEWATTRIBUTE, @ptrCast(self)), ppenum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_IEnumCERTVIEWEXTENSION_Value = Guid.initString("e7dd1466-7653-11d1-9bde-00c04fb683fa");
pub const IID_IEnumCERTVIEWEXTENSION = &IID_IEnumCERTVIEWEXTENSION_Value;
pub const IEnumCERTVIEWEXTENSION = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
                pFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
                pFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
                Type: CERT_PROPERTY_TYPE,
                Flags: ENUM_CERT_COLUMN_VALUE_FLAGS,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
                Type: CERT_PROPERTY_TYPE,
                Flags: ENUM_CERT_COLUMN_VALUE_FLAGS,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWEXTENSION,
                ppenum: ?*?*IEnumCERTVIEWEXTENSION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWEXTENSION,
                ppenum: ?*?*IEnumCERTVIEWEXTENSION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_Next(self: *const T, pIndex: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)), pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_GetName(self: *const T, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).GetName(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)), pstrOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_GetFlags(self: *const T, pFlags: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).GetFlags(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)), pFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_GetValue(self: *const T, Type: CERT_PROPERTY_TYPE, Flags: ENUM_CERT_COLUMN_VALUE_FLAGS, pvarValue: ?*VARIANT) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).GetValue(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)), Type, Flags, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_Skip(self: *const T, celt: i32) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_Reset(self: *const T) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWEXTENSION_Clone(self: *const T, ppenum: ?*?*IEnumCERTVIEWEXTENSION) HRESULT {
                return @as(*const IEnumCERTVIEWEXTENSION.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumCERTVIEWEXTENSION, @ptrCast(self)), ppenum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_IEnumCERTVIEWROW_Value = Guid.initString("d1157f4c-5af2-11d1-9bdc-00c04fb683fa");
pub const IID_IEnumCERTVIEWROW = &IID_IEnumCERTVIEWROW_Value;
pub const IEnumCERTVIEWROW = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumCertViewColumn: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                ppenum: ?*?*IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                ppenum: ?*?*IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumCertViewAttribute: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                Flags: i32,
                ppenum: ?*?*IEnumCERTVIEWATTRIBUTE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                Flags: i32,
                ppenum: ?*?*IEnumCERTVIEWATTRIBUTE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumCertViewExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                Flags: i32,
                ppenum: ?*?*IEnumCERTVIEWEXTENSION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                Flags: i32,
                ppenum: ?*?*IEnumCERTVIEWEXTENSION,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                celt: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                ppenum: ?*?*IEnumCERTVIEWROW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                ppenum: ?*?*IEnumCERTVIEWROW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMaxIndex: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumCERTVIEWROW,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumCERTVIEWROW,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_Next(self: *const T, pIndex: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_EnumCertViewColumn(self: *const T, ppenum: ?*?*IEnumCERTVIEWCOLUMN) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).EnumCertViewColumn(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), ppenum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_EnumCertViewAttribute(self: *const T, Flags: i32, ppenum: ?*?*IEnumCERTVIEWATTRIBUTE) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).EnumCertViewAttribute(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), Flags, ppenum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_EnumCertViewExtension(self: *const T, Flags: i32, ppenum: ?*?*IEnumCERTVIEWEXTENSION) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).EnumCertViewExtension(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), Flags, ppenum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_Skip(self: *const T, celt: i32) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_Reset(self: *const T) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumCERTVIEWROW, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_Clone(self: *const T, ppenum: ?*?*IEnumCERTVIEWROW) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), ppenum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumCERTVIEWROW_GetMaxIndex(self: *const T, pIndex: ?*i32) HRESULT {
                return @as(*const IEnumCERTVIEWROW.VTable, @ptrCast(self.vtable)).GetMaxIndex(@as(*const IEnumCERTVIEWROW, @ptrCast(self)), pIndex);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertView_Value = Guid.initString("c3fac344-1e84-11d1-9bd6-00c04fb683fa");
pub const IID_ICertView = &IID_ICertView_Value;
pub const ICertView = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        OpenConnection: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                strConfig: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                strConfig: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumCertViewColumn: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                fResultColumn: CVRC_COLUMN,
                ppenum: ?*?*IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                fResultColumn: CVRC_COLUMN,
                ppenum: ?*?*IEnumCERTVIEWCOLUMN,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetColumnCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                fResultColumn: CVRC_COLUMN,
                pcColumn: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                fResultColumn: CVRC_COLUMN,
                pcColumn: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetColumnIndex: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                fResultColumn: CVRC_COLUMN,
                strColumnName: ?BSTR,
                pColumnIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                fResultColumn: CVRC_COLUMN,
                strColumnName: ?BSTR,
                pColumnIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetResultColumnCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                cResultColumn: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                cResultColumn: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetResultColumn: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                ColumnIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                ColumnIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetRestriction: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                ColumnIndex: CERT_VIEW_COLUMN_INDEX,
                SeekOperator: CERT_VIEW_SEEK_OPERATOR_FLAGS,
                SortOrder: i32,
                pvarValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                ColumnIndex: CERT_VIEW_COLUMN_INDEX,
                SeekOperator: CERT_VIEW_SEEK_OPERATOR_FLAGS,
                SortOrder: i32,
                pvarValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OpenView: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView,
                ppenum: ?*?*IEnumCERTVIEWROW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView,
                ppenum: ?*?*IEnumCERTVIEWROW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_OpenConnection(self: *const T, strConfig: ?BSTR) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).OpenConnection(@as(*const ICertView, @ptrCast(self)), strConfig);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_EnumCertViewColumn(self: *const T, fResultColumn: CVRC_COLUMN, ppenum: ?*?*IEnumCERTVIEWCOLUMN) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).EnumCertViewColumn(@as(*const ICertView, @ptrCast(self)), fResultColumn, ppenum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_GetColumnCount(self: *const T, fResultColumn: CVRC_COLUMN, pcColumn: ?*i32) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).GetColumnCount(@as(*const ICertView, @ptrCast(self)), fResultColumn, pcColumn);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_GetColumnIndex(self: *const T, fResultColumn: CVRC_COLUMN, strColumnName: ?BSTR, pColumnIndex: ?*i32) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).GetColumnIndex(@as(*const ICertView, @ptrCast(self)), fResultColumn, strColumnName, pColumnIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_SetResultColumnCount(self: *const T, cResultColumn: i32) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).SetResultColumnCount(@as(*const ICertView, @ptrCast(self)), cResultColumn);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_SetResultColumn(self: *const T, ColumnIndex: i32) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).SetResultColumn(@as(*const ICertView, @ptrCast(self)), ColumnIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_SetRestriction(self: *const T, ColumnIndex: CERT_VIEW_COLUMN_INDEX, SeekOperator: CERT_VIEW_SEEK_OPERATOR_FLAGS, SortOrder: i32, pvarValue: ?*const VARIANT) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).SetRestriction(@as(*const ICertView, @ptrCast(self)), ColumnIndex, SeekOperator, SortOrder, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView_OpenView(self: *const T, ppenum: ?*?*IEnumCERTVIEWROW) HRESULT {
                return @as(*const ICertView.VTable, @ptrCast(self.vtable)).OpenView(@as(*const ICertView, @ptrCast(self)), ppenum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertView2_Value = Guid.initString("d594b282-8851-4b61-9c66-3edadf848863");
pub const IID_ICertView2 = &IID_ICertView2_Value;
pub const ICertView2 = extern struct {
    pub const VTable = extern struct {
        base: ICertView.VTable,
        SetTable: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertView2,
                Table: CVRC_TABLE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertView2,
                Table: CVRC_TABLE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertView.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertView2_SetTable(self: *const T, Table: CVRC_TABLE) HRESULT {
                return @as(*const ICertView2.VTable, @ptrCast(self.vtable)).SetTable(@as(*const ICertView2, @ptrCast(self)), Table);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertAdmin_Value = Guid.initString("34df6950-7fb6-11d0-8817-00a0c903b83c");
pub const IID_ICertAdmin = &IID_ICertAdmin_Value;
pub const ICertAdmin = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        IsValidCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                strSerialNumber: ?BSTR,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                strSerialNumber: ?BSTR,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRevocationReason: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                pReason: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                pReason: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RevokeCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                strSerialNumber: ?BSTR,
                Reason: i32,
                Date: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                strSerialNumber: ?BSTR,
                Reason: i32,
                Date: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetRequestAttributes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
                strAttributes: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
                strAttributes: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCertificateExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
                strExtensionName: ?BSTR,
                Type: CERT_PROPERTY_TYPE,
                Flags: i32,
                pvarValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
                strExtensionName: ?BSTR,
                Type: CERT_PROPERTY_TYPE,
                Flags: i32,
                pvarValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DenyRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ResubmitRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                RequestId: i32,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        PublishCRL: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                Date: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                Date: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCRL: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                Flags: i32,
                pstrCRL: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                Flags: i32,
                pstrCRL: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ImportCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                strCertificate: ?BSTR,
                Flags: CERT_IMPORT_FLAGS,
                pRequestId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin,
                strConfig: ?BSTR,
                strCertificate: ?BSTR,
                Flags: CERT_IMPORT_FLAGS,
                pRequestId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_IsValidCertificate(self: *const T, strConfig: ?BSTR, strSerialNumber: ?BSTR, pDisposition: ?*i32) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).IsValidCertificate(@as(*const ICertAdmin, @ptrCast(self)), strConfig, strSerialNumber, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_GetRevocationReason(self: *const T, pReason: ?*i32) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).GetRevocationReason(@as(*const ICertAdmin, @ptrCast(self)), pReason);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_RevokeCertificate(self: *const T, strConfig: ?BSTR, strSerialNumber: ?BSTR, Reason: i32, Date: f64) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).RevokeCertificate(@as(*const ICertAdmin, @ptrCast(self)), strConfig, strSerialNumber, Reason, Date);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_SetRequestAttributes(self: *const T, strConfig: ?BSTR, RequestId: i32, strAttributes: ?BSTR) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).SetRequestAttributes(@as(*const ICertAdmin, @ptrCast(self)), strConfig, RequestId, strAttributes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_SetCertificateExtension(self: *const T, strConfig: ?BSTR, RequestId: i32, strExtensionName: ?BSTR, Type: CERT_PROPERTY_TYPE, Flags: i32, pvarValue: ?*const VARIANT) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).SetCertificateExtension(@as(*const ICertAdmin, @ptrCast(self)), strConfig, RequestId, strExtensionName, Type, Flags, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_DenyRequest(self: *const T, strConfig: ?BSTR, RequestId: i32) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).DenyRequest(@as(*const ICertAdmin, @ptrCast(self)), strConfig, RequestId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_ResubmitRequest(self: *const T, strConfig: ?BSTR, RequestId: i32, pDisposition: ?*i32) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).ResubmitRequest(@as(*const ICertAdmin, @ptrCast(self)), strConfig, RequestId, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_PublishCRL(self: *const T, strConfig: ?BSTR, Date: f64) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).PublishCRL(@as(*const ICertAdmin, @ptrCast(self)), strConfig, Date);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_GetCRL(self: *const T, strConfig: ?BSTR, Flags: i32, pstrCRL: ?*?BSTR) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).GetCRL(@as(*const ICertAdmin, @ptrCast(self)), strConfig, Flags, pstrCRL);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin_ImportCertificate(self: *const T, strConfig: ?BSTR, strCertificate: ?BSTR, Flags: CERT_IMPORT_FLAGS, pRequestId: ?*i32) HRESULT {
                return @as(*const ICertAdmin.VTable, @ptrCast(self.vtable)).ImportCertificate(@as(*const ICertAdmin, @ptrCast(self)), strConfig, strCertificate, Flags, pRequestId);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertAdmin2_Value = Guid.initString("f7c3ac41-b8ce-4fb4-aa58-3d1dc0e36b39");
pub const IID_ICertAdmin2 = &IID_ICertAdmin2_Value;
pub const ICertAdmin2 = extern struct {
    pub const VTable = extern struct {
        base: ICertAdmin.VTable,
        PublishCRLs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                Date: f64,
                CRLFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                Date: f64,
                CRLFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                PropIndex: i32,
                PropType: i32,
                Flags: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                PropIndex: i32,
                PropType: i32,
                Flags: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCAProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                PropIndex: i32,
                PropType: CERT_PROPERTY_TYPE,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                PropIndex: i32,
                PropType: CERT_PROPERTY_TYPE,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAPropertyFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                pPropFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                pPropFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAPropertyDisplayName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                pstrDisplayName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                PropId: i32,
                pstrDisplayName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetArchivedKey: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                RequestId: i32,
                Flags: i32,
                pstrArchivedKey: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                RequestId: i32,
                Flags: i32,
                pstrArchivedKey: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetConfigEntry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                strNodePath: ?BSTR,
                strEntryName: ?BSTR,
                pvarEntry: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                strNodePath: ?BSTR,
                strEntryName: ?BSTR,
                pvarEntry: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetConfigEntry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                strNodePath: ?BSTR,
                strEntryName: ?BSTR,
                pvarEntry: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                strNodePath: ?BSTR,
                strEntryName: ?BSTR,
                pvarEntry: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ImportKey: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                RequestId: i32,
                strCertHash: ?BSTR,
                Flags: CERT_IMPORT_FLAGS,
                strKey: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                RequestId: i32,
                strCertHash: ?BSTR,
                Flags: CERT_IMPORT_FLAGS,
                strKey: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMyRoles: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                pRoles: ?*CERTADMIN_GET_ROLES_FLAGS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                pRoles: ?*CERTADMIN_GET_ROLES_FLAGS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteRow: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                Flags: CERT_DELETE_ROW_FLAGS,
                Date: f64,
                Table: CVRC_TABLE,
                RowId: i32,
                pcDeleted: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertAdmin2,
                strConfig: ?BSTR,
                Flags: CERT_DELETE_ROW_FLAGS,
                Date: f64,
                Table: CVRC_TABLE,
                RowId: i32,
                pcDeleted: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertAdmin.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_PublishCRLs(self: *const T, strConfig: ?BSTR, Date: f64, CRLFlags: i32) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).PublishCRLs(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, Date, CRLFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_GetCAProperty(self: *const T, strConfig: ?BSTR, PropId: i32, PropIndex: i32, PropType: i32, Flags: i32, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).GetCAProperty(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, PropId, PropIndex, PropType, Flags, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_SetCAProperty(self: *const T, strConfig: ?BSTR, PropId: i32, PropIndex: i32, PropType: CERT_PROPERTY_TYPE, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).SetCAProperty(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, PropId, PropIndex, PropType, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_GetCAPropertyFlags(self: *const T, strConfig: ?BSTR, PropId: i32, pPropFlags: ?*i32) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).GetCAPropertyFlags(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, PropId, pPropFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_GetCAPropertyDisplayName(self: *const T, strConfig: ?BSTR, PropId: i32, pstrDisplayName: ?*?BSTR) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).GetCAPropertyDisplayName(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, PropId, pstrDisplayName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_GetArchivedKey(self: *const T, strConfig: ?BSTR, RequestId: i32, Flags: i32, pstrArchivedKey: ?*?BSTR) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).GetArchivedKey(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, RequestId, Flags, pstrArchivedKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_GetConfigEntry(self: *const T, strConfig: ?BSTR, strNodePath: ?BSTR, strEntryName: ?BSTR, pvarEntry: ?*VARIANT) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).GetConfigEntry(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, strNodePath, strEntryName, pvarEntry);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_SetConfigEntry(self: *const T, strConfig: ?BSTR, strNodePath: ?BSTR, strEntryName: ?BSTR, pvarEntry: ?*VARIANT) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).SetConfigEntry(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, strNodePath, strEntryName, pvarEntry);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_ImportKey(self: *const T, strConfig: ?BSTR, RequestId: i32, strCertHash: ?BSTR, Flags: CERT_IMPORT_FLAGS, strKey: ?BSTR) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).ImportKey(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, RequestId, strCertHash, Flags, strKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_GetMyRoles(self: *const T, strConfig: ?BSTR, pRoles: ?*CERTADMIN_GET_ROLES_FLAGS) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).GetMyRoles(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, pRoles);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertAdmin2_DeleteRow(self: *const T, strConfig: ?BSTR, Flags: CERT_DELETE_ROW_FLAGS, Date: f64, Table: CVRC_TABLE, RowId: i32, pcDeleted: ?*i32) HRESULT {
                return @as(*const ICertAdmin2.VTable, @ptrCast(self.vtable)).DeleteRow(@as(*const ICertAdmin2, @ptrCast(self)), strConfig, Flags, Date, Table, RowId, pcDeleted);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2008'
const IID_IOCSPProperty_Value = Guid.initString("66fb7839-5f04-4c25-ad18-9ff1a8376ee0");
pub const IID_IOCSPProperty = &IID_IOCSPProperty_Value;
pub const IOCSPProperty = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPProperty,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPProperty,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPProperty,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPProperty,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPProperty,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPProperty,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Modified: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPProperty,
                pVal: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPProperty,
                pVal: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPProperty_get_Name(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPProperty.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IOCSPProperty, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPProperty_get_Value(self: *const T, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPProperty.VTable, @ptrCast(self.vtable)).get_Value(@as(*const IOCSPProperty, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPProperty_put_Value(self: *const T, newVal: VARIANT) HRESULT {
                return @as(*const IOCSPProperty.VTable, @ptrCast(self.vtable)).put_Value(@as(*const IOCSPProperty, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPProperty_get_Modified(self: *const T, pVal: ?*i16) HRESULT {
                return @as(*const IOCSPProperty.VTable, @ptrCast(self.vtable)).get_Modified(@as(*const IOCSPProperty, @ptrCast(self)), pVal);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2008'
const IID_IOCSPPropertyCollection_Value = Guid.initString("2597c18d-54e6-4b74-9fa9-a6bfda99cbbe");
pub const IID_IOCSPPropertyCollection = &IID_IOCSPPropertyCollection_Value;
pub const IOCSPPropertyCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                ppVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                ppVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                Index: i32,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                Index: i32,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                bstrPropName: ?BSTR,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                bstrPropName: ?BSTR,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                bstrPropName: ?BSTR,
                pVarPropValue: ?*const VARIANT,
                ppVal: ?*?*IOCSPProperty,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                bstrPropName: ?BSTR,
                pVarPropValue: ?*const VARIANT,
                ppVal: ?*?*IOCSPProperty,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                bstrPropName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                bstrPropName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                pVarProperties: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                pVarProperties: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAllProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPPropertyCollection,
                pVarProperties: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPPropertyCollection,
                pVarProperties: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_get__NewEnum(self: *const T, ppVal: ?*?*IUnknown) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IOCSPPropertyCollection, @ptrCast(self)), ppVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_get_Item(self: *const T, Index: i32, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IOCSPPropertyCollection, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IOCSPPropertyCollection, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_get_ItemByName(self: *const T, bstrPropName: ?BSTR, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const IOCSPPropertyCollection, @ptrCast(self)), bstrPropName, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_CreateProperty(self: *const T, bstrPropName: ?BSTR, pVarPropValue: ?*const VARIANT, ppVal: ?*?*IOCSPProperty) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).CreateProperty(@as(*const IOCSPPropertyCollection, @ptrCast(self)), bstrPropName, pVarPropValue, ppVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_DeleteProperty(self: *const T, bstrPropName: ?BSTR) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).DeleteProperty(@as(*const IOCSPPropertyCollection, @ptrCast(self)), bstrPropName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_InitializeFromProperties(self: *const T, pVarProperties: ?*const VARIANT) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).InitializeFromProperties(@as(*const IOCSPPropertyCollection, @ptrCast(self)), pVarProperties);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPPropertyCollection_GetAllProperties(self: *const T, pVarProperties: ?*VARIANT) HRESULT {
                return @as(*const IOCSPPropertyCollection.VTable, @ptrCast(self.vtable)).GetAllProperties(@as(*const IOCSPPropertyCollection, @ptrCast(self)), pVarProperties);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2008'
const IID_IOCSPCAConfiguration_Value = Guid.initString("aec92b40-3d46-433f-87d1-b84d5c1e790d");
pub const IID_IOCSPCAConfiguration = &IID_IOCSPCAConfiguration_Value;
pub const IOCSPCAConfiguration = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Identifier: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CACertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SigningFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SigningFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SigningCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SigningCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReminderDuration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReminderDuration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ErrorCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSPName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderCLSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderCLSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderProperties: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderProperties: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Modified: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LocalRevocationInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LocalRevocationInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SigningCertificateTemplate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SigningCertificateTemplate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAConfig: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAConfig: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfiguration,
                newVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_Identifier(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_Identifier(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_CACertificate(self: *const T, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_CACertificate(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_HashAlgorithm(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_HashAlgorithm(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_HashAlgorithm(self: *const T, newVal: ?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_HashAlgorithm(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_SigningFlags(self: *const T, pVal: ?*u32) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_SigningFlags(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_SigningFlags(self: *const T, newVal: u32) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_SigningFlags(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_SigningCertificate(self: *const T, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_SigningCertificate(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_SigningCertificate(self: *const T, newVal: VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_SigningCertificate(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_ReminderDuration(self: *const T, pVal: ?*u32) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_ReminderDuration(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_ReminderDuration(self: *const T, newVal: u32) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_ReminderDuration(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_ErrorCode(self: *const T, pVal: ?*u32) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_ErrorCode(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_CSPName(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_CSPName(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_KeySpec(self: *const T, pVal: ?*u32) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_KeySpec(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_ProviderCLSID(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_ProviderCLSID(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_ProviderCLSID(self: *const T, newVal: ?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_ProviderCLSID(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_ProviderProperties(self: *const T, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_ProviderProperties(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_ProviderProperties(self: *const T, newVal: VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_ProviderProperties(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_Modified(self: *const T, pVal: ?*i16) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_Modified(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_LocalRevocationInformation(self: *const T, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_LocalRevocationInformation(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_LocalRevocationInformation(self: *const T, newVal: VARIANT) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_LocalRevocationInformation(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_SigningCertificateTemplate(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_SigningCertificateTemplate(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_SigningCertificateTemplate(self: *const T, newVal: ?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_SigningCertificateTemplate(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_get_CAConfig(self: *const T, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).get_CAConfig(@as(*const IOCSPCAConfiguration, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfiguration_put_CAConfig(self: *const T, newVal: ?BSTR) HRESULT {
                return @as(*const IOCSPCAConfiguration.VTable, @ptrCast(self.vtable)).put_CAConfig(@as(*const IOCSPCAConfiguration, @ptrCast(self)), newVal);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2008'
const IID_IOCSPCAConfigurationCollection_Value = Guid.initString("2bebea0b-5ece-4f28-a91c-86b4bb20f0d3");
pub const IID_IOCSPCAConfigurationCollection = &IID_IOCSPCAConfigurationCollection_Value;
pub const IOCSPCAConfigurationCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfigurationCollection,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfigurationCollection,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfigurationCollection,
                Index: i32,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfigurationCollection,
                Index: i32,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfigurationCollection,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfigurationCollection,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPCAConfigurationCollection,
                bstrIdentifier: ?BSTR,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPCAConfigurationCollection,
                bstrIdentifier: ?BSTR,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateCAConfiguration: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPCAConfigurationCollection,
                bstrIdentifier: ?BSTR,
                varCACert: VARIANT,
                ppVal: ?*?*IOCSPCAConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPCAConfigurationCollection,
                bstrIdentifier: ?BSTR,
                varCACert: VARIANT,
                ppVal: ?*?*IOCSPCAConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteCAConfiguration: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPCAConfigurationCollection,
                bstrIdentifier: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPCAConfigurationCollection,
                bstrIdentifier: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfigurationCollection_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IOCSPCAConfigurationCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IOCSPCAConfigurationCollection, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfigurationCollection_get_Item(self: *const T, Index: i32, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPCAConfigurationCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IOCSPCAConfigurationCollection, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfigurationCollection_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IOCSPCAConfigurationCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IOCSPCAConfigurationCollection, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfigurationCollection_get_ItemByName(self: *const T, bstrIdentifier: ?BSTR, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPCAConfigurationCollection.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const IOCSPCAConfigurationCollection, @ptrCast(self)), bstrIdentifier, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfigurationCollection_CreateCAConfiguration(self: *const T, bstrIdentifier: ?BSTR, varCACert: VARIANT, ppVal: ?*?*IOCSPCAConfiguration) HRESULT {
                return @as(*const IOCSPCAConfigurationCollection.VTable, @ptrCast(self.vtable)).CreateCAConfiguration(@as(*const IOCSPCAConfigurationCollection, @ptrCast(self)), bstrIdentifier, varCACert, ppVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPCAConfigurationCollection_DeleteCAConfiguration(self: *const T, bstrIdentifier: ?BSTR) HRESULT {
                return @as(*const IOCSPCAConfigurationCollection.VTable, @ptrCast(self.vtable)).DeleteCAConfiguration(@as(*const IOCSPCAConfigurationCollection, @ptrCast(self)), bstrIdentifier);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2008'
const IID_IOCSPAdmin_Value = Guid.initString("322e830d-67db-4fe9-9577-4596d9f09294");
pub const IID_IOCSPAdmin = &IID_IOCSPAdmin_Value;
pub const IOCSPAdmin = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OCSPServiceProperties: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPAdmin,
                ppVal: ?*?*IOCSPPropertyCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPAdmin,
                ppVal: ?*?*IOCSPPropertyCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OCSPCAConfigurationCollection: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IOCSPAdmin,
                pVal: ?*?*IOCSPCAConfigurationCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IOCSPAdmin,
                pVal: ?*?*IOCSPCAConfigurationCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetConfiguration: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bForce: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bForce: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetConfiguration: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bForce: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bForce: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMyRoles: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                pRoles: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                pRoles: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Ping: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetSecurity: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bstrVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bstrVal: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSecurity: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                pVal: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSigningCertificates: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                pCACertVar: ?*const VARIANT,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                pCACertVar: ?*const VARIANT,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetHashAlgorithms: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bstrCAId: ?BSTR,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IOCSPAdmin,
                bstrServerName: ?BSTR,
                bstrCAId: ?BSTR,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_get_OCSPServiceProperties(self: *const T, ppVal: ?*?*IOCSPPropertyCollection) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).get_OCSPServiceProperties(@as(*const IOCSPAdmin, @ptrCast(self)), ppVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_get_OCSPCAConfigurationCollection(self: *const T, pVal: ?*?*IOCSPCAConfigurationCollection) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).get_OCSPCAConfigurationCollection(@as(*const IOCSPAdmin, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_GetConfiguration(self: *const T, bstrServerName: ?BSTR, bForce: i16) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).GetConfiguration(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, bForce);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_SetConfiguration(self: *const T, bstrServerName: ?BSTR, bForce: i16) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).SetConfiguration(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, bForce);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_GetMyRoles(self: *const T, bstrServerName: ?BSTR, pRoles: ?*i32) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).GetMyRoles(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, pRoles);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_Ping(self: *const T, bstrServerName: ?BSTR) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).Ping(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_SetSecurity(self: *const T, bstrServerName: ?BSTR, bstrVal: ?BSTR) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).SetSecurity(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, bstrVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_GetSecurity(self: *const T, bstrServerName: ?BSTR, pVal: ?*?BSTR) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).GetSecurity(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_GetSigningCertificates(self: *const T, bstrServerName: ?BSTR, pCACertVar: ?*const VARIANT, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).GetSigningCertificates(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, pCACertVar, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IOCSPAdmin_GetHashAlgorithms(self: *const T, bstrServerName: ?BSTR, bstrCAId: ?BSTR, pVal: ?*VARIANT) HRESULT {
                return @as(*const IOCSPAdmin.VTable, @ptrCast(self.vtable)).GetHashAlgorithms(@as(*const IOCSPAdmin, @ptrCast(self)), bstrServerName, bstrCAId, pVal);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const OCSPSigningFlag = enum(i32) {
    SILENT = 1,
    USE_CACERT = 2,
    ALLOW_SIGNINGCERT_AUTORENEWAL = 4,
    FORCE_SIGNINGCERT_ISSUER_ISCA = 8,
    AUTODISCOVER_SIGNINGCERT = 16,
    MANUAL_ASSIGN_SIGNINGCERT = 32,
    RESPONDER_ID_KEYHASH = 64,
    RESPONDER_ID_NAME = 128,
    ALLOW_NONCE_EXTENSION = 256,
    ALLOW_SIGNINGCERT_AUTOENROLLMENT = 512,
};
pub const OCSP_SF_SILENT = OCSPSigningFlag.SILENT;
pub const OCSP_SF_USE_CACERT = OCSPSigningFlag.USE_CACERT;
pub const OCSP_SF_ALLOW_SIGNINGCERT_AUTORENEWAL = OCSPSigningFlag.ALLOW_SIGNINGCERT_AUTORENEWAL;
pub const OCSP_SF_FORCE_SIGNINGCERT_ISSUER_ISCA = OCSPSigningFlag.FORCE_SIGNINGCERT_ISSUER_ISCA;
pub const OCSP_SF_AUTODISCOVER_SIGNINGCERT = OCSPSigningFlag.AUTODISCOVER_SIGNINGCERT;
pub const OCSP_SF_MANUAL_ASSIGN_SIGNINGCERT = OCSPSigningFlag.MANUAL_ASSIGN_SIGNINGCERT;
pub const OCSP_SF_RESPONDER_ID_KEYHASH = OCSPSigningFlag.RESPONDER_ID_KEYHASH;
pub const OCSP_SF_RESPONDER_ID_NAME = OCSPSigningFlag.RESPONDER_ID_NAME;
pub const OCSP_SF_ALLOW_NONCE_EXTENSION = OCSPSigningFlag.ALLOW_NONCE_EXTENSION;
pub const OCSP_SF_ALLOW_SIGNINGCERT_AUTOENROLLMENT = OCSPSigningFlag.ALLOW_SIGNINGCERT_AUTOENROLLMENT;

pub const OCSPRequestFlag = enum(i32) {
    S = 1,
};
pub const OCSP_RF_REJECT_SIGNED_REQUESTS = OCSPRequestFlag.S;

pub const CSEDB_RSTMAPW = extern struct {
    pwszDatabaseName: ?PWSTR,
    pwszNewDatabaseName: ?PWSTR,
};

pub const FNCERTSRVISSERVERONLINEW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pwszServerName: ?[*:0]const u16,
        pfServerOnline: ?*BOOL,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        pwszServerName: ?[*:0]const u16,
        pfServerOnline: ?*BOOL,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPGETDYNAMICFILELISTW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        ppwszzFileList: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        ppwszzFileList: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPPREPAREW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pwszServerName: ?[*:0]const u16,
        grbitJet: u32,
        dwBackupFlags: u32,
        phbc: ?*?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        pwszServerName: ?[*:0]const u16,
        grbitJet: u32,
        dwBackupFlags: u32,
        phbc: ?*?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPGETDATABASENAMESW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        ppwszzAttachmentInformation: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        ppwszzAttachmentInformation: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPOPENFILEW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        pwszAttachmentName: ?[*:0]const u16,
        cbReadHintSize: u32,
        pliFileSize: ?*LARGE_INTEGER,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        pwszAttachmentName: ?[*:0]const u16,
        cbReadHintSize: u32,
        pliFileSize: ?*LARGE_INTEGER,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPREAD = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        pvBuffer: ?*anyopaque,
        cbBuffer: u32,
        pcbRead: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        pvBuffer: ?*anyopaque,
        cbBuffer: u32,
        pcbRead: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPCLOSE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPGETBACKUPLOGSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        ppwszzBackupLogFiles: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        ppwszzBackupLogFiles: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPTRUNCATELOGS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPEND = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVBACKUPFREE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pv: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        pv: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const FNCERTSRVRESTOREGETDATABASELOCATIONSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        ppwszzDatabaseLocationList: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        ppwszzDatabaseLocationList: ?*?*u16,
        pcbSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVRESTOREPREPAREW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pwszServerName: ?[*:0]const u16,
        dwRestoreFlags: u32,
        phbc: ?*?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        pwszServerName: ?[*:0]const u16,
        dwRestoreFlags: u32,
        phbc: ?*?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVRESTOREREGISTERW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        pwszCheckPointFilePath: ?[*:0]const u16,
        pwszLogPath: ?[*:0]const u16,
        rgrstmap: ?*CSEDB_RSTMAPW,
        crstmap: i32,
        pwszBackupLogPath: ?[*:0]const u16,
        genLow: u32,
        genHigh: u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        pwszCheckPointFilePath: ?[*:0]const u16,
        pwszLogPath: ?[*:0]const u16,
        rgrstmap: ?*CSEDB_RSTMAPW,
        crstmap: i32,
        pwszBackupLogPath: ?[*:0]const u16,
        genLow: u32,
        genHigh: u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVRESTOREREGISTERCOMPLETE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
        hrRestoreState: HRESULT,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
        hrRestoreState: HRESULT,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVRESTOREEND = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hbc: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNCERTSRVSERVERCONTROLW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pwszServerName: ?[*:0]const u16,
        dwControlFlags: u32,
        pcbOut: ?*u32,
        ppbOut: ?*?*u8,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        pwszServerName: ?[*:0]const u16,
        dwControlFlags: u32,
        pcbOut: ?*u32,
        ppbOut: ?*?*u8,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

const CLSID_CCertGetConfig_Value = Guid.initString("c6cc49b0-ce17-11d0-8833-00a0c903b83c");
pub const CLSID_CCertGetConfig = &CLSID_CCertGetConfig_Value;

const CLSID_CCertConfig_Value = Guid.initString("372fce38-4324-11d0-8810-00a0c903b83c");
pub const CLSID_CCertConfig = &CLSID_CCertConfig_Value;

const CLSID_CCertRequest_Value = Guid.initString("98aff3f0-5524-11d0-8812-00a0c903b83c");
pub const CLSID_CCertRequest = &CLSID_CCertRequest_Value;

const CLSID_CCertServerPolicy_Value = Guid.initString("aa000926-ffbe-11cf-8800-00a0c903b83c");
pub const CLSID_CCertServerPolicy = &CLSID_CCertServerPolicy_Value;

const CLSID_CCertServerExit_Value = Guid.initString("4c4a5e40-732c-11d0-8816-00a0c903b83c");
pub const CLSID_CCertServerExit = &CLSID_CCertServerExit_Value;

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertServerPolicy_Value = Guid.initString("aa000922-ffbe-11cf-8800-00a0c903b83c");
pub const IID_ICertServerPolicy = &IID_ICertServerPolicy_Value;
pub const ICertServerPolicy = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        SetContext: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                Context: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                Context: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestAttribute: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                strAttributeName: ?BSTR,
                pstrAttributeValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                strAttributeName: ?BSTR,
                pstrAttributeValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                strPropertyName: ?BSTR,
                PropertyType: CERT_PROPERTY_TYPE,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                strPropertyName: ?BSTR,
                PropertyType: CERT_PROPERTY_TYPE,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCertificateProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                strExtensionName: ?BSTR,
                Type: CERT_PROPERTY_TYPE,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                strExtensionName: ?BSTR,
                Type: CERT_PROPERTY_TYPE,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateExtensionFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                pExtFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                pExtFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCertificateExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                strExtensionName: ?BSTR,
                Type: i32,
                ExtFlags: i32,
                pvarValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                strExtensionName: ?BSTR,
                Type: i32,
                ExtFlags: i32,
                pvarValue: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateExtensionsSetup: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateExtensions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                pstrExtensionName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                pstrExtensionName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateExtensionsClose: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateAttributesSetup: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateAttributes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
                pstrAttributeName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
                pstrAttributeName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateAttributesClose: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_SetContext(self: *const T, Context: i32) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).SetContext(@as(*const ICertServerPolicy, @ptrCast(self)), Context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_GetRequestProperty(self: *const T, strPropertyName: ?BSTR, PropertyType: i32, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).GetRequestProperty(@as(*const ICertServerPolicy, @ptrCast(self)), strPropertyName, PropertyType, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_GetRequestAttribute(self: *const T, strAttributeName: ?BSTR, pstrAttributeValue: ?*?BSTR) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).GetRequestAttribute(@as(*const ICertServerPolicy, @ptrCast(self)), strAttributeName, pstrAttributeValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_GetCertificateProperty(self: *const T, strPropertyName: ?BSTR, PropertyType: CERT_PROPERTY_TYPE, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).GetCertificateProperty(@as(*const ICertServerPolicy, @ptrCast(self)), strPropertyName, PropertyType, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_SetCertificateProperty(self: *const T, strPropertyName: ?BSTR, PropertyType: i32, pvarPropertyValue: ?*const VARIANT) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).SetCertificateProperty(@as(*const ICertServerPolicy, @ptrCast(self)), strPropertyName, PropertyType, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_GetCertificateExtension(self: *const T, strExtensionName: ?BSTR, Type: CERT_PROPERTY_TYPE, pvarValue: ?*VARIANT) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).GetCertificateExtension(@as(*const ICertServerPolicy, @ptrCast(self)), strExtensionName, Type, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_GetCertificateExtensionFlags(self: *const T, pExtFlags: ?*i32) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).GetCertificateExtensionFlags(@as(*const ICertServerPolicy, @ptrCast(self)), pExtFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_SetCertificateExtension(self: *const T, strExtensionName: ?BSTR, Type: i32, ExtFlags: i32, pvarValue: ?*const VARIANT) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).SetCertificateExtension(@as(*const ICertServerPolicy, @ptrCast(self)), strExtensionName, Type, ExtFlags, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_EnumerateExtensionsSetup(self: *const T, Flags: i32) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).EnumerateExtensionsSetup(@as(*const ICertServerPolicy, @ptrCast(self)), Flags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_EnumerateExtensions(self: *const T, pstrExtensionName: ?*?BSTR) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).EnumerateExtensions(@as(*const ICertServerPolicy, @ptrCast(self)), pstrExtensionName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_EnumerateExtensionsClose(self: *const T) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).EnumerateExtensionsClose(@as(*const ICertServerPolicy, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_EnumerateAttributesSetup(self: *const T, Flags: i32) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).EnumerateAttributesSetup(@as(*const ICertServerPolicy, @ptrCast(self)), Flags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_EnumerateAttributes(self: *const T, pstrAttributeName: ?*?BSTR) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).EnumerateAttributes(@as(*const ICertServerPolicy, @ptrCast(self)), pstrAttributeName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerPolicy_EnumerateAttributesClose(self: *const T) HRESULT {
                return @as(*const ICertServerPolicy.VTable, @ptrCast(self.vtable)).EnumerateAttributesClose(@as(*const ICertServerPolicy, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertServerExit_Value = Guid.initString("4ba9eb90-732c-11d0-8816-00a0c903b83c");
pub const IID_ICertServerExit = &IID_ICertServerExit_Value;
pub const ICertServerExit = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        SetContext: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                Context: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                Context: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestAttribute: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                strAttributeName: ?BSTR,
                pstrAttributeValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                strAttributeName: ?BSTR,
                pstrAttributeValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                strPropertyName: ?BSTR,
                PropertyType: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                strExtensionName: ?BSTR,
                Type: i32,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                strExtensionName: ?BSTR,
                Type: i32,
                pvarValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateExtensionFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                pExtFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                pExtFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateExtensionsSetup: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateExtensions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                pstrExtensionName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                pstrExtensionName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateExtensionsClose: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateAttributesSetup: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateAttributes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
                pstrAttributeName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
                pstrAttributeName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumerateAttributesClose: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertServerExit,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertServerExit,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_SetContext(self: *const T, Context: i32) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).SetContext(@as(*const ICertServerExit, @ptrCast(self)), Context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_GetRequestProperty(self: *const T, strPropertyName: ?BSTR, PropertyType: i32, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).GetRequestProperty(@as(*const ICertServerExit, @ptrCast(self)), strPropertyName, PropertyType, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_GetRequestAttribute(self: *const T, strAttributeName: ?BSTR, pstrAttributeValue: ?*?BSTR) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).GetRequestAttribute(@as(*const ICertServerExit, @ptrCast(self)), strAttributeName, pstrAttributeValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_GetCertificateProperty(self: *const T, strPropertyName: ?BSTR, PropertyType: i32, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).GetCertificateProperty(@as(*const ICertServerExit, @ptrCast(self)), strPropertyName, PropertyType, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_GetCertificateExtension(self: *const T, strExtensionName: ?BSTR, Type: i32, pvarValue: ?*VARIANT) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).GetCertificateExtension(@as(*const ICertServerExit, @ptrCast(self)), strExtensionName, Type, pvarValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_GetCertificateExtensionFlags(self: *const T, pExtFlags: ?*i32) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).GetCertificateExtensionFlags(@as(*const ICertServerExit, @ptrCast(self)), pExtFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_EnumerateExtensionsSetup(self: *const T, Flags: i32) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).EnumerateExtensionsSetup(@as(*const ICertServerExit, @ptrCast(self)), Flags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_EnumerateExtensions(self: *const T, pstrExtensionName: ?*?BSTR) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).EnumerateExtensions(@as(*const ICertServerExit, @ptrCast(self)), pstrExtensionName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_EnumerateExtensionsClose(self: *const T) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).EnumerateExtensionsClose(@as(*const ICertServerExit, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_EnumerateAttributesSetup(self: *const T, Flags: i32) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).EnumerateAttributesSetup(@as(*const ICertServerExit, @ptrCast(self)), Flags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_EnumerateAttributes(self: *const T, pstrAttributeName: ?*?BSTR) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).EnumerateAttributes(@as(*const ICertServerExit, @ptrCast(self)), pstrAttributeName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertServerExit_EnumerateAttributesClose(self: *const T) HRESULT {
                return @as(*const ICertServerExit.VTable, @ptrCast(self.vtable)).EnumerateAttributesClose(@as(*const ICertServerExit, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertGetConfig_Value = Guid.initString("c7ea09c0-ce17-11d0-8833-00a0c903b83c");
pub const IID_ICertGetConfig = &IID_ICertGetConfig_Value;
pub const ICertGetConfig = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetConfig: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertGetConfig,
                Flags: CERT_GET_CONFIG_FLAGS,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertGetConfig,
                Flags: CERT_GET_CONFIG_FLAGS,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertGetConfig_GetConfig(self: *const T, Flags: CERT_GET_CONFIG_FLAGS, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const ICertGetConfig.VTable, @ptrCast(self.vtable)).GetConfig(@as(*const ICertGetConfig, @ptrCast(self)), Flags, pstrOut);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertConfig_Value = Guid.initString("372fce34-4324-11d0-8810-00a0c903b83c");
pub const IID_ICertConfig = &IID_ICertConfig_Value;
pub const ICertConfig = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertConfig,
                Index: i32,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertConfig,
                Index: i32,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertConfig,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertConfig,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetField: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertConfig,
                strFieldName: ?BSTR,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertConfig,
                strFieldName: ?BSTR,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetConfig: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertConfig,
                Flags: i32,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertConfig,
                Flags: i32,
                pstrOut: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertConfig_Reset(self: *const T, Index: i32, pCount: ?*i32) HRESULT {
                return @as(*const ICertConfig.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICertConfig, @ptrCast(self)), Index, pCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertConfig_Next(self: *const T, pIndex: ?*i32) HRESULT {
                return @as(*const ICertConfig.VTable, @ptrCast(self.vtable)).Next(@as(*const ICertConfig, @ptrCast(self)), pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertConfig_GetField(self: *const T, strFieldName: ?BSTR, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const ICertConfig.VTable, @ptrCast(self.vtable)).GetField(@as(*const ICertConfig, @ptrCast(self)), strFieldName, pstrOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertConfig_GetConfig(self: *const T, Flags: i32, pstrOut: ?*?BSTR) HRESULT {
                return @as(*const ICertConfig.VTable, @ptrCast(self.vtable)).GetConfig(@as(*const ICertConfig, @ptrCast(self)), Flags, pstrOut);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertConfig2_Value = Guid.initString("7a18edde-7e78-4163-8ded-78e2c9cee924");
pub const IID_ICertConfig2 = &IID_ICertConfig2_Value;
pub const ICertConfig2 = extern struct {
    pub const VTable = extern struct {
        base: ICertConfig.VTable,
        SetSharedFolder: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertConfig2,
                strSharedFolder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertConfig2,
                strSharedFolder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertConfig.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertConfig2_SetSharedFolder(self: *const T, strSharedFolder: ?BSTR) HRESULT {
                return @as(*const ICertConfig2.VTable, @ptrCast(self.vtable)).SetSharedFolder(@as(*const ICertConfig2, @ptrCast(self)), strSharedFolder);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_ICertRequest_Value = Guid.initString("014e4840-5523-11d0-8812-00a0c903b83c");
pub const IID_ICertRequest = &IID_ICertRequest_Value;
pub const ICertRequest = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Submit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                Flags: i32,
                strRequest: ?BSTR,
                strAttributes: ?BSTR,
                strConfig: ?BSTR,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                Flags: i32,
                strRequest: ?BSTR,
                strAttributes: ?BSTR,
                strConfig: ?BSTR,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RetrievePending: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                RequestId: i32,
                strConfig: ?BSTR,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                RequestId: i32,
                strConfig: ?BSTR,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                pStatus: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                pStatus: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                pRequestId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                pRequestId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDispositionMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                pstrDispositionMessage: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                pstrDispositionMessage: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCACertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                fExchangeCertificate: i32,
                strConfig: ?BSTR,
                Flags: i32,
                pstrCertificate: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                fExchangeCertificate: i32,
                strConfig: ?BSTR,
                Flags: i32,
                pstrCertificate: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest,
                Flags: i32,
                pstrCertificate: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest,
                Flags: i32,
                pstrCertificate: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_Submit(self: *const T, Flags: i32, strRequest: ?BSTR, strAttributes: ?BSTR, strConfig: ?BSTR, pDisposition: ?*i32) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).Submit(@as(*const ICertRequest, @ptrCast(self)), Flags, strRequest, strAttributes, strConfig, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_RetrievePending(self: *const T, RequestId: i32, strConfig: ?BSTR, pDisposition: ?*i32) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).RetrievePending(@as(*const ICertRequest, @ptrCast(self)), RequestId, strConfig, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_GetLastStatus(self: *const T, pStatus: ?*i32) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).GetLastStatus(@as(*const ICertRequest, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_GetRequestId(self: *const T, pRequestId: ?*i32) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).GetRequestId(@as(*const ICertRequest, @ptrCast(self)), pRequestId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_GetDispositionMessage(self: *const T, pstrDispositionMessage: ?*?BSTR) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).GetDispositionMessage(@as(*const ICertRequest, @ptrCast(self)), pstrDispositionMessage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_GetCACertificate(self: *const T, fExchangeCertificate: i32, strConfig: ?BSTR, Flags: i32, pstrCertificate: ?*?BSTR) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).GetCACertificate(@as(*const ICertRequest, @ptrCast(self)), fExchangeCertificate, strConfig, Flags, pstrCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest_GetCertificate(self: *const T, Flags: i32, pstrCertificate: ?*?BSTR) HRESULT {
                return @as(*const ICertRequest.VTable, @ptrCast(self.vtable)).GetCertificate(@as(*const ICertRequest, @ptrCast(self)), Flags, pstrCertificate);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_ICertRequest2_Value = Guid.initString("a4772988-4a85-4fa9-824e-b5cf5c16405a");
pub const IID_ICertRequest2 = &IID_ICertRequest2_Value;
pub const ICertRequest2 = extern struct {
    pub const VTable = extern struct {
        base: ICertRequest.VTable,
        GetIssuedCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                RequestId: i32,
                strSerialNumber: ?BSTR,
                pDisposition: ?*CR_DISP,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                RequestId: i32,
                strSerialNumber: ?BSTR,
                pDisposition: ?*CR_DISP,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetErrorMessageText: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest2,
                hrMessage: i32,
                Flags: i32,
                pstrErrorMessageText: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest2,
                hrMessage: i32,
                Flags: i32,
                pstrErrorMessageText: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                PropId: i32,
                PropIndex: i32,
                PropType: i32,
                Flags: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                PropId: i32,
                PropIndex: i32,
                PropType: i32,
                Flags: i32,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAPropertyFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                PropId: i32,
                pPropFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                PropId: i32,
                pPropFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAPropertyDisplayName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                PropId: i32,
                pstrDisplayName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest2,
                strConfig: ?BSTR,
                PropId: i32,
                pstrDisplayName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetFullResponseProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest2,
                PropId: FULL_RESPONSE_PROPERTY_ID,
                PropIndex: i32,
                PropType: CERT_PROPERTY_TYPE,
                Flags: CERT_REQUEST_OUT_TYPE,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest2,
                PropId: FULL_RESPONSE_PROPERTY_ID,
                PropIndex: i32,
                PropType: CERT_PROPERTY_TYPE,
                Flags: CERT_REQUEST_OUT_TYPE,
                pvarPropertyValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertRequest.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest2_GetIssuedCertificate(self: *const T, strConfig: ?BSTR, RequestId: i32, strSerialNumber: ?BSTR, pDisposition: ?*CR_DISP) HRESULT {
                return @as(*const ICertRequest2.VTable, @ptrCast(self.vtable)).GetIssuedCertificate(@as(*const ICertRequest2, @ptrCast(self)), strConfig, RequestId, strSerialNumber, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest2_GetErrorMessageText(self: *const T, hrMessage: i32, Flags: i32, pstrErrorMessageText: ?*?BSTR) HRESULT {
                return @as(*const ICertRequest2.VTable, @ptrCast(self.vtable)).GetErrorMessageText(@as(*const ICertRequest2, @ptrCast(self)), hrMessage, Flags, pstrErrorMessageText);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest2_GetCAProperty(self: *const T, strConfig: ?BSTR, PropId: i32, PropIndex: i32, PropType: i32, Flags: i32, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertRequest2.VTable, @ptrCast(self.vtable)).GetCAProperty(@as(*const ICertRequest2, @ptrCast(self)), strConfig, PropId, PropIndex, PropType, Flags, pvarPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest2_GetCAPropertyFlags(self: *const T, strConfig: ?BSTR, PropId: i32, pPropFlags: ?*i32) HRESULT {
                return @as(*const ICertRequest2.VTable, @ptrCast(self.vtable)).GetCAPropertyFlags(@as(*const ICertRequest2, @ptrCast(self)), strConfig, PropId, pPropFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest2_GetCAPropertyDisplayName(self: *const T, strConfig: ?BSTR, PropId: i32, pstrDisplayName: ?*?BSTR) HRESULT {
                return @as(*const ICertRequest2.VTable, @ptrCast(self.vtable)).GetCAPropertyDisplayName(@as(*const ICertRequest2, @ptrCast(self)), strConfig, PropId, pstrDisplayName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest2_GetFullResponseProperty(self: *const T, PropId: FULL_RESPONSE_PROPERTY_ID, PropIndex: i32, PropType: CERT_PROPERTY_TYPE, Flags: CERT_REQUEST_OUT_TYPE, pvarPropertyValue: ?*VARIANT) HRESULT {
                return @as(*const ICertRequest2.VTable, @ptrCast(self.vtable)).GetFullResponseProperty(@as(*const ICertRequest2, @ptrCast(self)), PropId, PropIndex, PropType, Flags, pvarPropertyValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509EnrollmentAuthFlags = enum(i32) {
    None = 0,
    Anonymous = 1,
    Kerberos = 2,
    Username = 4,
    Certificate = 8,
};
pub const X509AuthNone = X509EnrollmentAuthFlags.None;
pub const X509AuthAnonymous = X509EnrollmentAuthFlags.Anonymous;
pub const X509AuthKerberos = X509EnrollmentAuthFlags.Kerberos;
pub const X509AuthUsername = X509EnrollmentAuthFlags.Username;
pub const X509AuthCertificate = X509EnrollmentAuthFlags.Certificate;

// TODO: this type is limited to platform 'windows6.1'
const IID_ICertRequest3_Value = Guid.initString("afc8f92b-33a2-4861-bf36-2933b7cd67b3");
pub const IID_ICertRequest3 = &IID_ICertRequest3_Value;
pub const ICertRequest3 = extern struct {
    pub const VTable = extern struct {
        base: ICertRequest2.VTable,
        SetCredential: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest3,
                hWnd: i32,
                AuthType: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest3,
                hWnd: i32,
                AuthType: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestIdString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest3,
                pstrRequestId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest3,
                pstrRequestId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIssuedCertificate2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest3,
                strConfig: ?BSTR,
                strRequestId: ?BSTR,
                strSerialNumber: ?BSTR,
                pDisposition: ?*CR_DISP,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest3,
                strConfig: ?BSTR,
                strRequestId: ?BSTR,
                strSerialNumber: ?BSTR,
                pDisposition: ?*CR_DISP,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRefreshPolicy: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequest3,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequest3,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertRequest2.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest3_SetCredential(self: *const T, hWnd: i32, AuthType: X509EnrollmentAuthFlags, strCredential: ?BSTR, strPassword: ?BSTR) HRESULT {
                return @as(*const ICertRequest3.VTable, @ptrCast(self.vtable)).SetCredential(@as(*const ICertRequest3, @ptrCast(self)), hWnd, AuthType, strCredential, strPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest3_GetRequestIdString(self: *const T, pstrRequestId: ?*?BSTR) HRESULT {
                return @as(*const ICertRequest3.VTable, @ptrCast(self.vtable)).GetRequestIdString(@as(*const ICertRequest3, @ptrCast(self)), pstrRequestId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest3_GetIssuedCertificate2(self: *const T, strConfig: ?BSTR, strRequestId: ?BSTR, strSerialNumber: ?BSTR, pDisposition: ?*CR_DISP) HRESULT {
                return @as(*const ICertRequest3.VTable, @ptrCast(self.vtable)).GetIssuedCertificate2(@as(*const ICertRequest3, @ptrCast(self)), strConfig, strRequestId, strSerialNumber, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequest3_GetRefreshPolicy(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICertRequest3.VTable, @ptrCast(self.vtable)).GetRefreshPolicy(@as(*const ICertRequest3, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const CLSID_CCertEncodeStringArray_Value = Guid.initString("19a76fe0-7494-11d0-8816-00a0c903b83c");
pub const CLSID_CCertEncodeStringArray = &CLSID_CCertEncodeStringArray_Value;

const CLSID_CCertEncodeLongArray_Value = Guid.initString("4e0680a0-a0a2-11d0-8821-00a0c903b83c");
pub const CLSID_CCertEncodeLongArray = &CLSID_CCertEncodeLongArray_Value;

const CLSID_CCertEncodeDateArray_Value = Guid.initString("301f77b0-a470-11d0-8821-00a0c903b83c");
pub const CLSID_CCertEncodeDateArray = &CLSID_CCertEncodeDateArray_Value;

const CLSID_CCertEncodeCRLDistInfo_Value = Guid.initString("01fa60a0-bbff-11d0-8825-00a0c903b83c");
pub const CLSID_CCertEncodeCRLDistInfo = &CLSID_CCertEncodeCRLDistInfo_Value;

const CLSID_CCertEncodeAltName_Value = Guid.initString("1cfc4cda-1271-11d1-9bd4-00c04fb683fa");
pub const CLSID_CCertEncodeAltName = &CLSID_CCertEncodeAltName_Value;

const CLSID_CCertEncodeBitString_Value = Guid.initString("6d6b3cd8-1278-11d1-9bd4-00c04fb683fa");
pub const CLSID_CCertEncodeBitString = &CLSID_CCertEncodeBitString_Value;

const CLSID_CObjectId_Value = Guid.initString("884e2000-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CObjectId = &CLSID_CObjectId_Value;

const CLSID_CObjectIds_Value = Guid.initString("884e2001-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CObjectIds = &CLSID_CObjectIds_Value;

const CLSID_CBinaryConverter_Value = Guid.initString("884e2002-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CBinaryConverter = &CLSID_CBinaryConverter_Value;

const CLSID_CX500DistinguishedName_Value = Guid.initString("884e2003-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX500DistinguishedName = &CLSID_CX500DistinguishedName_Value;

const CLSID_CCspInformation_Value = Guid.initString("884e2007-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCspInformation = &CLSID_CCspInformation_Value;

const CLSID_CCspInformations_Value = Guid.initString("884e2008-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCspInformations = &CLSID_CCspInformations_Value;

const CLSID_CCspStatus_Value = Guid.initString("884e2009-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCspStatus = &CLSID_CCspStatus_Value;

const CLSID_CX509PublicKey_Value = Guid.initString("884e200b-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509PublicKey = &CLSID_CX509PublicKey_Value;

const CLSID_CX509PrivateKey_Value = Guid.initString("884e200c-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509PrivateKey = &CLSID_CX509PrivateKey_Value;

const CLSID_CX509EndorsementKey_Value = Guid.initString("11a25a1d-b9a3-4edd-af83-3b59adbed361");
pub const CLSID_CX509EndorsementKey = &CLSID_CX509EndorsementKey_Value;

const CLSID_CX509Extension_Value = Guid.initString("884e200d-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509Extension = &CLSID_CX509Extension_Value;

const CLSID_CX509Extensions_Value = Guid.initString("884e200e-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509Extensions = &CLSID_CX509Extensions_Value;

const CLSID_CX509ExtensionKeyUsage_Value = Guid.initString("884e200f-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionKeyUsage = &CLSID_CX509ExtensionKeyUsage_Value;

const CLSID_CX509ExtensionEnhancedKeyUsage_Value = Guid.initString("884e2010-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionEnhancedKeyUsage = &CLSID_CX509ExtensionEnhancedKeyUsage_Value;

const CLSID_CX509ExtensionTemplateName_Value = Guid.initString("884e2011-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionTemplateName = &CLSID_CX509ExtensionTemplateName_Value;

const CLSID_CX509ExtensionTemplate_Value = Guid.initString("884e2012-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionTemplate = &CLSID_CX509ExtensionTemplate_Value;

const CLSID_CAlternativeName_Value = Guid.initString("884e2013-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CAlternativeName = &CLSID_CAlternativeName_Value;

const CLSID_CAlternativeNames_Value = Guid.initString("884e2014-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CAlternativeNames = &CLSID_CAlternativeNames_Value;

const CLSID_CX509ExtensionAlternativeNames_Value = Guid.initString("884e2015-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionAlternativeNames = &CLSID_CX509ExtensionAlternativeNames_Value;

const CLSID_CX509ExtensionBasicConstraints_Value = Guid.initString("884e2016-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionBasicConstraints = &CLSID_CX509ExtensionBasicConstraints_Value;

const CLSID_CX509ExtensionSubjectKeyIdentifier_Value = Guid.initString("884e2017-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionSubjectKeyIdentifier = &CLSID_CX509ExtensionSubjectKeyIdentifier_Value;

const CLSID_CX509ExtensionAuthorityKeyIdentifier_Value = Guid.initString("884e2018-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionAuthorityKeyIdentifier = &CLSID_CX509ExtensionAuthorityKeyIdentifier_Value;

const CLSID_CSmimeCapability_Value = Guid.initString("884e2019-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CSmimeCapability = &CLSID_CSmimeCapability_Value;

const CLSID_CSmimeCapabilities_Value = Guid.initString("884e201a-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CSmimeCapabilities = &CLSID_CSmimeCapabilities_Value;

const CLSID_CX509ExtensionSmimeCapabilities_Value = Guid.initString("884e201b-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionSmimeCapabilities = &CLSID_CX509ExtensionSmimeCapabilities_Value;

const CLSID_CPolicyQualifier_Value = Guid.initString("884e201c-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CPolicyQualifier = &CLSID_CPolicyQualifier_Value;

const CLSID_CPolicyQualifiers_Value = Guid.initString("884e201d-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CPolicyQualifiers = &CLSID_CPolicyQualifiers_Value;

const CLSID_CCertificatePolicy_Value = Guid.initString("884e201e-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertificatePolicy = &CLSID_CCertificatePolicy_Value;

const CLSID_CCertificatePolicies_Value = Guid.initString("884e201f-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertificatePolicies = &CLSID_CCertificatePolicies_Value;

const CLSID_CX509ExtensionCertificatePolicies_Value = Guid.initString("884e2020-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionCertificatePolicies = &CLSID_CX509ExtensionCertificatePolicies_Value;

const CLSID_CX509ExtensionMSApplicationPolicies_Value = Guid.initString("884e2021-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509ExtensionMSApplicationPolicies = &CLSID_CX509ExtensionMSApplicationPolicies_Value;

const CLSID_CX509Attribute_Value = Guid.initString("884e2022-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509Attribute = &CLSID_CX509Attribute_Value;

const CLSID_CX509Attributes_Value = Guid.initString("884e2023-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509Attributes = &CLSID_CX509Attributes_Value;

const CLSID_CX509AttributeExtensions_Value = Guid.initString("884e2024-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeExtensions = &CLSID_CX509AttributeExtensions_Value;

const CLSID_CX509AttributeClientId_Value = Guid.initString("884e2025-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeClientId = &CLSID_CX509AttributeClientId_Value;

const CLSID_CX509AttributeRenewalCertificate_Value = Guid.initString("884e2026-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeRenewalCertificate = &CLSID_CX509AttributeRenewalCertificate_Value;

const CLSID_CX509AttributeArchiveKey_Value = Guid.initString("884e2027-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeArchiveKey = &CLSID_CX509AttributeArchiveKey_Value;

const CLSID_CX509AttributeArchiveKeyHash_Value = Guid.initString("884e2028-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeArchiveKeyHash = &CLSID_CX509AttributeArchiveKeyHash_Value;

const CLSID_CX509AttributeOSVersion_Value = Guid.initString("884e202a-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeOSVersion = &CLSID_CX509AttributeOSVersion_Value;

const CLSID_CX509AttributeCspProvider_Value = Guid.initString("884e202b-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509AttributeCspProvider = &CLSID_CX509AttributeCspProvider_Value;

const CLSID_CCryptAttribute_Value = Guid.initString("884e202c-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCryptAttribute = &CLSID_CCryptAttribute_Value;

const CLSID_CCryptAttributes_Value = Guid.initString("884e202d-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCryptAttributes = &CLSID_CCryptAttributes_Value;

const CLSID_CCertProperty_Value = Guid.initString("884e202e-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertProperty = &CLSID_CCertProperty_Value;

const CLSID_CCertProperties_Value = Guid.initString("884e202f-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertProperties = &CLSID_CCertProperties_Value;

const CLSID_CCertPropertyFriendlyName_Value = Guid.initString("884e2030-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyFriendlyName = &CLSID_CCertPropertyFriendlyName_Value;

const CLSID_CCertPropertyDescription_Value = Guid.initString("884e2031-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyDescription = &CLSID_CCertPropertyDescription_Value;

const CLSID_CCertPropertyAutoEnroll_Value = Guid.initString("884e2032-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyAutoEnroll = &CLSID_CCertPropertyAutoEnroll_Value;

const CLSID_CCertPropertyRequestOriginator_Value = Guid.initString("884e2033-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyRequestOriginator = &CLSID_CCertPropertyRequestOriginator_Value;

const CLSID_CCertPropertySHA1Hash_Value = Guid.initString("884e2034-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertySHA1Hash = &CLSID_CCertPropertySHA1Hash_Value;

const CLSID_CCertPropertyKeyProvInfo_Value = Guid.initString("884e2036-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyKeyProvInfo = &CLSID_CCertPropertyKeyProvInfo_Value;

const CLSID_CCertPropertyArchived_Value = Guid.initString("884e2037-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyArchived = &CLSID_CCertPropertyArchived_Value;

const CLSID_CCertPropertyBackedUp_Value = Guid.initString("884e2038-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyBackedUp = &CLSID_CCertPropertyBackedUp_Value;

const CLSID_CCertPropertyEnrollment_Value = Guid.initString("884e2039-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyEnrollment = &CLSID_CCertPropertyEnrollment_Value;

const CLSID_CCertPropertyRenewal_Value = Guid.initString("884e203a-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyRenewal = &CLSID_CCertPropertyRenewal_Value;

const CLSID_CCertPropertyArchivedKeyHash_Value = Guid.initString("884e203b-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyArchivedKeyHash = &CLSID_CCertPropertyArchivedKeyHash_Value;

const CLSID_CCertPropertyEnrollmentPolicyServer_Value = Guid.initString("884e204c-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CCertPropertyEnrollmentPolicyServer = &CLSID_CCertPropertyEnrollmentPolicyServer_Value;

const CLSID_CSignerCertificate_Value = Guid.initString("884e203d-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CSignerCertificate = &CLSID_CSignerCertificate_Value;

const CLSID_CX509NameValuePair_Value = Guid.initString("884e203f-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509NameValuePair = &CLSID_CX509NameValuePair_Value;

const CLSID_CCertificateAttestationChallenge_Value = Guid.initString("1362ada1-eb60-456a-b6e1-118050db741b");
pub const CLSID_CCertificateAttestationChallenge = &CLSID_CCertificateAttestationChallenge_Value;

const CLSID_CX509CertificateRequestPkcs10_Value = Guid.initString("884e2042-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRequestPkcs10 = &CLSID_CX509CertificateRequestPkcs10_Value;

const CLSID_CX509CertificateRequestCertificate_Value = Guid.initString("884e2043-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRequestCertificate = &CLSID_CX509CertificateRequestCertificate_Value;

const CLSID_CX509CertificateRequestPkcs7_Value = Guid.initString("884e2044-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRequestPkcs7 = &CLSID_CX509CertificateRequestPkcs7_Value;

const CLSID_CX509CertificateRequestCmc_Value = Guid.initString("884e2045-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRequestCmc = &CLSID_CX509CertificateRequestCmc_Value;

const CLSID_CX509Enrollment_Value = Guid.initString("884e2046-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509Enrollment = &CLSID_CX509Enrollment_Value;

const CLSID_CX509EnrollmentWebClassFactory_Value = Guid.initString("884e2049-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509EnrollmentWebClassFactory = &CLSID_CX509EnrollmentWebClassFactory_Value;

const CLSID_CX509EnrollmentHelper_Value = Guid.initString("884e2050-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509EnrollmentHelper = &CLSID_CX509EnrollmentHelper_Value;

const CLSID_CX509MachineEnrollmentFactory_Value = Guid.initString("884e2051-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509MachineEnrollmentFactory = &CLSID_CX509MachineEnrollmentFactory_Value;

const CLSID_CX509EnrollmentPolicyActiveDirectory_Value = Guid.initString("91f39027-217f-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509EnrollmentPolicyActiveDirectory = &CLSID_CX509EnrollmentPolicyActiveDirectory_Value;

const CLSID_CX509EnrollmentPolicyWebService_Value = Guid.initString("91f39028-217f-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509EnrollmentPolicyWebService = &CLSID_CX509EnrollmentPolicyWebService_Value;

const CLSID_CX509PolicyServerListManager_Value = Guid.initString("91f39029-217f-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509PolicyServerListManager = &CLSID_CX509PolicyServerListManager_Value;

const CLSID_CX509PolicyServerUrl_Value = Guid.initString("91f3902a-217f-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509PolicyServerUrl = &CLSID_CX509PolicyServerUrl_Value;

const CLSID_CX509CertificateTemplateADWritable_Value = Guid.initString("8336e323-2e6a-4a04-937c-548f681839b3");
pub const CLSID_CX509CertificateTemplateADWritable = &CLSID_CX509CertificateTemplateADWritable_Value;

const CLSID_CX509CertificateRevocationListEntry_Value = Guid.initString("884e205e-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRevocationListEntry = &CLSID_CX509CertificateRevocationListEntry_Value;

const CLSID_CX509CertificateRevocationListEntries_Value = Guid.initString("884e205f-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRevocationListEntries = &CLSID_CX509CertificateRevocationListEntries_Value;

const CLSID_CX509CertificateRevocationList_Value = Guid.initString("884e2060-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509CertificateRevocationList = &CLSID_CX509CertificateRevocationList_Value;

const CLSID_CX509SCEPEnrollment_Value = Guid.initString("884e2061-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509SCEPEnrollment = &CLSID_CX509SCEPEnrollment_Value;

const CLSID_CX509SCEPEnrollmentHelper_Value = Guid.initString("884e2062-217d-11da-b2a4-000e7bbb2b09");
pub const CLSID_CX509SCEPEnrollmentHelper = &CLSID_CX509SCEPEnrollmentHelper_Value;

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertManageModule_Value = Guid.initString("e7d7ad42-bd3d-11d1-9a4d-00c04fc297eb");
pub const IID_ICertManageModule = &IID_ICertManageModule_Value;
pub const ICertManageModule = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertManageModule,
                strConfig: ?BSTR,
                strStorageLocation: ?BSTR,
                strPropertyName: ?BSTR,
                Flags: i32,
                pvarProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertManageModule,
                strConfig: ?BSTR,
                strStorageLocation: ?BSTR,
                strPropertyName: ?BSTR,
                Flags: i32,
                pvarProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertManageModule,
                strConfig: ?BSTR,
                strStorageLocation: ?BSTR,
                strPropertyName: ?BSTR,
                Flags: i32,
                pvarProperty: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertManageModule,
                strConfig: ?BSTR,
                strStorageLocation: ?BSTR,
                strPropertyName: ?BSTR,
                Flags: i32,
                pvarProperty: ?*const VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Configure: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertManageModule,
                strConfig: ?BSTR,
                strStorageLocation: ?BSTR,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertManageModule,
                strConfig: ?BSTR,
                strStorageLocation: ?BSTR,
                Flags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertManageModule_GetProperty(self: *const T, strConfig: ?BSTR, strStorageLocation: ?BSTR, strPropertyName: ?BSTR, Flags: i32, pvarProperty: ?*VARIANT) HRESULT {
                return @as(*const ICertManageModule.VTable, @ptrCast(self.vtable)).GetProperty(@as(*const ICertManageModule, @ptrCast(self)), strConfig, strStorageLocation, strPropertyName, Flags, pvarProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertManageModule_SetProperty(self: *const T, strConfig: ?BSTR, strStorageLocation: ?BSTR, strPropertyName: ?BSTR, Flags: i32, pvarProperty: ?*const VARIANT) HRESULT {
                return @as(*const ICertManageModule.VTable, @ptrCast(self.vtable)).SetProperty(@as(*const ICertManageModule, @ptrCast(self)), strConfig, strStorageLocation, strPropertyName, Flags, pvarProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertManageModule_Configure(self: *const T, strConfig: ?BSTR, strStorageLocation: ?BSTR, Flags: i32) HRESULT {
                return @as(*const ICertManageModule.VTable, @ptrCast(self.vtable)).Configure(@as(*const ICertManageModule, @ptrCast(self)), strConfig, strStorageLocation, Flags);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const CERTTRANSBLOB = extern struct {
    cb: u32,
    pb: ?*u8,
};

pub const CERTVIEWRESTRICTION = extern struct {
    ColumnIndex: u32,
    SeekOperator: i32,
    SortOrder: i32,
    pbValue: ?*u8,
    cbValue: u32,
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertPolicy_Value = Guid.initString("38bb5a00-7636-11d0-b413-00a0c91bbf8c");
pub const IID_ICertPolicy = &IID_ICertPolicy_Value;
pub const ICertPolicy = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPolicy,
                strConfig: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPolicy,
                strConfig: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        VerifyRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPolicy,
                strConfig: ?BSTR,
                Context: i32,
                bNewRequest: i32,
                Flags: i32,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPolicy,
                strConfig: ?BSTR,
                Context: i32,
                bNewRequest: i32,
                Flags: i32,
                pDisposition: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDescription: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPolicy,
                pstrDescription: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPolicy,
                pstrDescription: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ShutDown: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPolicy_Initialize(self: *const T, strConfig: ?BSTR) HRESULT {
                return @as(*const ICertPolicy.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPolicy, @ptrCast(self)), strConfig);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPolicy_VerifyRequest(self: *const T, strConfig: ?BSTR, Context: i32, bNewRequest: i32, Flags: i32, pDisposition: ?*i32) HRESULT {
                return @as(*const ICertPolicy.VTable, @ptrCast(self.vtable)).VerifyRequest(@as(*const ICertPolicy, @ptrCast(self)), strConfig, Context, bNewRequest, Flags, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPolicy_GetDescription(self: *const T, pstrDescription: ?*?BSTR) HRESULT {
                return @as(*const ICertPolicy.VTable, @ptrCast(self.vtable)).GetDescription(@as(*const ICertPolicy, @ptrCast(self)), pstrDescription);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPolicy_ShutDown(self: *const T) HRESULT {
                return @as(*const ICertPolicy.VTable, @ptrCast(self.vtable)).ShutDown(@as(*const ICertPolicy, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertPolicy2_Value = Guid.initString("3db4910e-8001-4bf1-aa1b-f43a808317a0");
pub const IID_ICertPolicy2 = &IID_ICertPolicy2_Value;
pub const ICertPolicy2 = extern struct {
    pub const VTable = extern struct {
        base: ICertPolicy.VTable,
        GetManageModule: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPolicy2,
                ppManageModule: ?*?*ICertManageModule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPolicy2,
                ppManageModule: ?*?*ICertManageModule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertPolicy.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPolicy2_GetManageModule(self: *const T, ppManageModule: ?*?*ICertManageModule) HRESULT {
                return @as(*const ICertPolicy2.VTable, @ptrCast(self.vtable)).GetManageModule(@as(*const ICertPolicy2, @ptrCast(self)), ppManageModule);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509SCEPMessageType = enum(i32) {
    Unknown = -1,
    CertResponse = 3,
    PKCSRequest = 19,
    GetCertInitial = 20,
    GetCert = 21,
    GetCRL = 22,
    ClaimChallengeAnswer = 41,
};
pub const SCEPMessageUnknown = X509SCEPMessageType.Unknown;
pub const SCEPMessageCertResponse = X509SCEPMessageType.CertResponse;
pub const SCEPMessagePKCSRequest = X509SCEPMessageType.PKCSRequest;
pub const SCEPMessageGetCertInitial = X509SCEPMessageType.GetCertInitial;
pub const SCEPMessageGetCert = X509SCEPMessageType.GetCert;
pub const SCEPMessageGetCRL = X509SCEPMessageType.GetCRL;
pub const SCEPMessageClaimChallengeAnswer = X509SCEPMessageType.ClaimChallengeAnswer;

pub const X509SCEPDisposition = enum(i32) {
    Unknown = -1,
    Success = 0,
    Failure = 2,
    Pending = 3,
    PendingChallenge = 11,
};
pub const SCEPDispositionUnknown = X509SCEPDisposition.Unknown;
pub const SCEPDispositionSuccess = X509SCEPDisposition.Success;
pub const SCEPDispositionFailure = X509SCEPDisposition.Failure;
pub const SCEPDispositionPending = X509SCEPDisposition.Pending;
pub const SCEPDispositionPendingChallenge = X509SCEPDisposition.PendingChallenge;

pub const X509SCEPFailInfo = enum(i32) {
    Unknown = -1,
    BadAlgorithm = 0,
    BadMessageCheck = 1,
    BadRequest = 2,
    BadTime = 3,
    BadCertId = 4,
};
pub const SCEPFailUnknown = X509SCEPFailInfo.Unknown;
pub const SCEPFailBadAlgorithm = X509SCEPFailInfo.BadAlgorithm;
pub const SCEPFailBadMessageCheck = X509SCEPFailInfo.BadMessageCheck;
pub const SCEPFailBadRequest = X509SCEPFailInfo.BadRequest;
pub const SCEPFailBadTime = X509SCEPFailInfo.BadTime;
pub const SCEPFailBadCertId = X509SCEPFailInfo.BadCertId;

const IID_INDESPolicy_Value = Guid.initString("13ca515d-431d-46cc-8c2e-1da269bbd625");
pub const IID_INDESPolicy = &IID_INDESPolicy_Value;
pub const INDESPolicy = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const INDESPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const INDESPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Uninitialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const INDESPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const INDESPolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GenerateChallenge: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const INDESPolicy,
                pwszTemplate: ?[*:0]const u16,
                pwszParams: ?[*:0]const u16,
                ppwszResponse: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const INDESPolicy,
                pwszTemplate: ?[*:0]const u16,
                pwszParams: ?[*:0]const u16,
                ppwszResponse: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        VerifyRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const INDESPolicy,
                pctbRequest: ?*CERTTRANSBLOB,
                pctbSigningCertEncoded: ?*CERTTRANSBLOB,
                pwszTemplate: ?[*:0]const u16,
                pwszTransactionId: ?[*:0]const u16,
                pfVerified: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const INDESPolicy,
                pctbRequest: ?*CERTTRANSBLOB,
                pctbSigningCertEncoded: ?*CERTTRANSBLOB,
                pwszTemplate: ?[*:0]const u16,
                pwszTransactionId: ?[*:0]const u16,
                pfVerified: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Notify: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const INDESPolicy,
                pwszChallenge: ?[*:0]const u16,
                pwszTransactionId: ?[*:0]const u16,
                disposition: X509SCEPDisposition,
                lastHResult: i32,
                pctbIssuedCertEncoded: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const INDESPolicy,
                pwszChallenge: ?[*:0]const u16,
                pwszTransactionId: ?[*:0]const u16,
                disposition: X509SCEPDisposition,
                lastHResult: i32,
                pctbIssuedCertEncoded: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn INDESPolicy_Initialize(self: *const T) HRESULT {
                return @as(*const INDESPolicy.VTable, @ptrCast(self.vtable)).Initialize(@as(*const INDESPolicy, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn INDESPolicy_Uninitialize(self: *const T) HRESULT {
                return @as(*const INDESPolicy.VTable, @ptrCast(self.vtable)).Uninitialize(@as(*const INDESPolicy, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn INDESPolicy_GenerateChallenge(self: *const T, pwszTemplate: ?[*:0]const u16, pwszParams: ?[*:0]const u16, ppwszResponse: ?*?PWSTR) HRESULT {
                return @as(*const INDESPolicy.VTable, @ptrCast(self.vtable)).GenerateChallenge(@as(*const INDESPolicy, @ptrCast(self)), pwszTemplate, pwszParams, ppwszResponse);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn INDESPolicy_VerifyRequest(self: *const T, pctbRequest: ?*CERTTRANSBLOB, pctbSigningCertEncoded: ?*CERTTRANSBLOB, pwszTemplate: ?[*:0]const u16, pwszTransactionId: ?[*:0]const u16, pfVerified: ?*BOOL) HRESULT {
                return @as(*const INDESPolicy.VTable, @ptrCast(self.vtable)).VerifyRequest(@as(*const INDESPolicy, @ptrCast(self)), pctbRequest, pctbSigningCertEncoded, pwszTemplate, pwszTransactionId, pfVerified);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn INDESPolicy_Notify(self: *const T, pwszChallenge: ?[*:0]const u16, pwszTransactionId: ?[*:0]const u16, disposition: X509SCEPDisposition, lastHResult: i32, pctbIssuedCertEncoded: ?*CERTTRANSBLOB) HRESULT {
                return @as(*const INDESPolicy.VTable, @ptrCast(self.vtable)).Notify(@as(*const INDESPolicy, @ptrCast(self)), pwszChallenge, pwszTransactionId, disposition, lastHResult, pctbIssuedCertEncoded);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const CERTENROLL_OBJECTID = enum(i32) {
    _NONE = 0,
    _RSA = 1,
    _PKCS = 2,
    _RSA_HASH = 3,
    _RSA_ENCRYPT = 4,
    _PKCS_1 = 5,
    _PKCS_2 = 6,
    _PKCS_3 = 7,
    _PKCS_4 = 8,
    _PKCS_5 = 9,
    _PKCS_6 = 10,
    _PKCS_7 = 11,
    _PKCS_8 = 12,
    _PKCS_9 = 13,
    _PKCS_10 = 14,
    _PKCS_12 = 15,
    _RSA_RSA = 16,
    _RSA_MD2RSA = 17,
    _RSA_MD4RSA = 18,
    _RSA_MD5RSA = 19,
    _RSA_SHA1RSA = 20,
    _RSA_SETOAEP_RSA = 21,
    _RSA_DH = 22,
    _RSA_data = 23,
    _RSA_signedData = 24,
    _RSA_envelopedData = 25,
    _RSA_signEnvData = 26,
    _RSA_digestedData = 27,
    _RSA_hashedData = 28,
    _RSA_encryptedData = 29,
    _RSA_emailAddr = 30,
    _RSA_unstructName = 31,
    _RSA_contentType = 32,
    _RSA_messageDigest = 33,
    _RSA_signingTime = 34,
    _RSA_counterSign = 35,
    _RSA_challengePwd = 36,
    _RSA_unstructAddr = 37,
    _RSA_extCertAttrs = 38,
    _RSA_certExtensions = 39,
    _RSA_SMIMECapabilities = 40,
    _RSA_preferSignedData = 41,
    _RSA_SMIMEalg = 42,
    _RSA_SMIMEalgESDH = 43,
    _RSA_SMIMEalgCMS3DESwrap = 44,
    _RSA_SMIMEalgCMSRC2wrap = 45,
    _RSA_MD2 = 46,
    _RSA_MD4 = 47,
    _RSA_MD5 = 48,
    _RSA_RC2CBC = 49,
    _RSA_RC4 = 50,
    _RSA_DES_EDE3_CBC = 51,
    _RSA_RC5_CBCPad = 52,
    _ANSI_X942 = 53,
    _ANSI_X942_DH = 54,
    _X957 = 55,
    _X957_DSA = 56,
    _X957_SHA1DSA = 57,
    _DS = 58,
    _DSALG = 59,
    _DSALG_CRPT = 60,
    _DSALG_HASH = 61,
    _DSALG_SIGN = 62,
    _DSALG_RSA = 63,
    _OIW = 64,
    _OIWSEC = 65,
    _OIWSEC_md4RSA = 66,
    _OIWSEC_md5RSA = 67,
    _OIWSEC_md4RSA2 = 68,
    _OIWSEC_desECB = 69,
    _OIWSEC_desCBC = 70,
    _OIWSEC_desOFB = 71,
    _OIWSEC_desCFB = 72,
    _OIWSEC_desMAC = 73,
    _OIWSEC_rsaSign = 74,
    _OIWSEC_dsa = 75,
    _OIWSEC_shaDSA = 76,
    _OIWSEC_mdc2RSA = 77,
    _OIWSEC_shaRSA = 78,
    _OIWSEC_dhCommMod = 79,
    _OIWSEC_desEDE = 80,
    _OIWSEC_sha = 81,
    _OIWSEC_mdc2 = 82,
    _OIWSEC_dsaComm = 83,
    _OIWSEC_dsaCommSHA = 84,
    _OIWSEC_rsaXchg = 85,
    _OIWSEC_keyHashSeal = 86,
    _OIWSEC_md2RSASign = 87,
    _OIWSEC_md5RSASign = 88,
    _OIWSEC_sha1 = 89,
    _OIWSEC_dsaSHA1 = 90,
    _OIWSEC_dsaCommSHA1 = 91,
    _OIWSEC_sha1RSASign = 92,
    _OIWDIR = 93,
    _OIWDIR_CRPT = 94,
    _OIWDIR_HASH = 95,
    _OIWDIR_SIGN = 96,
    _OIWDIR_md2 = 97,
    _OIWDIR_md2RSA = 98,
    _INFOSEC = 99,
    _INFOSEC_sdnsSignature = 100,
    _INFOSEC_mosaicSignature = 101,
    _INFOSEC_sdnsConfidentiality = 102,
    _INFOSEC_mosaicConfidentiality = 103,
    _INFOSEC_sdnsIntegrity = 104,
    _INFOSEC_mosaicIntegrity = 105,
    _INFOSEC_sdnsTokenProtection = 106,
    _INFOSEC_mosaicTokenProtection = 107,
    _INFOSEC_sdnsKeyManagement = 108,
    _INFOSEC_mosaicKeyManagement = 109,
    _INFOSEC_sdnsKMandSig = 110,
    _INFOSEC_mosaicKMandSig = 111,
    _INFOSEC_SuiteASignature = 112,
    _INFOSEC_SuiteAConfidentiality = 113,
    _INFOSEC_SuiteAIntegrity = 114,
    _INFOSEC_SuiteATokenProtection = 115,
    _INFOSEC_SuiteAKeyManagement = 116,
    _INFOSEC_SuiteAKMandSig = 117,
    _INFOSEC_mosaicUpdatedSig = 118,
    _INFOSEC_mosaicKMandUpdSig = 119,
    _INFOSEC_mosaicUpdatedInteg = 120,
    _COMMON_NAME = 121,
    _SUR_NAME = 122,
    _DEVICE_SERIAL_NUMBER = 123,
    _COUNTRY_NAME = 124,
    _LOCALITY_NAME = 125,
    _STATE_OR_PROVINCE_NAME = 126,
    _STREET_ADDRESS = 127,
    _ORGANIZATION_NAME = 128,
    _ORGANIZATIONAL_UNIT_NAME = 129,
    _TITLE = 130,
    _DESCRIPTION = 131,
    _SEARCH_GUIDE = 132,
    _BUSINESS_CATEGORY = 133,
    _POSTAL_ADDRESS = 134,
    _POSTAL_CODE = 135,
    _POST_OFFICE_BOX = 136,
    _PHYSICAL_DELIVERY_OFFICE_NAME = 137,
    _TELEPHONE_NUMBER = 138,
    _TELEX_NUMBER = 139,
    _TELETEXT_TERMINAL_IDENTIFIER = 140,
    _FACSIMILE_TELEPHONE_NUMBER = 141,
    _X21_ADDRESS = 142,
    _INTERNATIONAL_ISDN_NUMBER = 143,
    _REGISTERED_ADDRESS = 144,
    _DESTINATION_INDICATOR = 145,
    _PREFERRED_DELIVERY_METHOD = 146,
    _PRESENTATION_ADDRESS = 147,
    _SUPPORTED_APPLICATION_CONTEXT = 148,
    _MEMBER = 149,
    _OWNER = 150,
    _ROLE_OCCUPANT = 151,
    _SEE_ALSO = 152,
    _USER_PASSWORD = 153,
    _USER_CERTIFICATE = 154,
    _CA_CERTIFICATE = 155,
    _AUTHORITY_REVOCATION_LIST = 156,
    _CERTIFICATE_REVOCATION_LIST = 157,
    _CROSS_CERTIFICATE_PAIR = 158,
    _GIVEN_NAME = 159,
    _INITIALS = 160,
    _DN_QUALIFIER = 161,
    _DOMAIN_COMPONENT = 162,
    _PKCS_12_FRIENDLY_NAME_ATTR = 163,
    _PKCS_12_LOCAL_KEY_ID = 164,
    _PKCS_12_KEY_PROVIDER_NAME_ATTR = 165,
    _LOCAL_MACHINE_KEYSET = 166,
    _PKCS_12_EXTENDED_ATTRIBUTES = 167,
    _KEYID_RDN = 168,
    _AUTHORITY_KEY_IDENTIFIER = 169,
    _KEY_ATTRIBUTES = 170,
    _CERT_POLICIES_95 = 171,
    _KEY_USAGE_RESTRICTION = 172,
    _SUBJECT_ALT_NAME = 173,
    _ISSUER_ALT_NAME = 174,
    _BASIC_CONSTRAINTS = 175,
    _KEY_USAGE = 176,
    _PRIVATEKEY_USAGE_PERIOD = 177,
    _BASIC_CONSTRAINTS2 = 178,
    _CERT_POLICIES = 179,
    _ANY_CERT_POLICY = 180,
    _AUTHORITY_KEY_IDENTIFIER2 = 181,
    _SUBJECT_KEY_IDENTIFIER = 182,
    _SUBJECT_ALT_NAME2 = 183,
    _ISSUER_ALT_NAME2 = 184,
    _CRL_REASON_CODE = 185,
    _REASON_CODE_HOLD = 186,
    _CRL_DIST_POINTS = 187,
    _ENHANCED_KEY_USAGE = 188,
    _CRL_NUMBER = 189,
    _DELTA_CRL_INDICATOR = 190,
    _ISSUING_DIST_POINT = 191,
    _FRESHEST_CRL = 192,
    _NAME_CONSTRAINTS = 193,
    _POLICY_MAPPINGS = 194,
    _LEGACY_POLICY_MAPPINGS = 195,
    _POLICY_CONSTRAINTS = 196,
    _RENEWAL_CERTIFICATE = 197,
    _ENROLLMENT_NAME_VALUE_PAIR = 198,
    _ENROLLMENT_CSP_PROVIDER = 199,
    _OS_VERSION = 200,
    _ENROLLMENT_AGENT = 201,
    _PKIX = 202,
    _PKIX_PE = 203,
    _AUTHORITY_INFO_ACCESS = 204,
    _BIOMETRIC_EXT = 205,
    _LOGOTYPE_EXT = 206,
    _CERT_EXTENSIONS = 207,
    _NEXT_UPDATE_LOCATION = 208,
    _REMOVE_CERTIFICATE = 209,
    _CROSS_CERT_DIST_POINTS = 210,
    _CTL = 211,
    _SORTED_CTL = 212,
    _SERIALIZED = 213,
    _NT_PRINCIPAL_NAME = 214,
    _PRODUCT_UPDATE = 215,
    _ANY_APPLICATION_POLICY = 216,
    _AUTO_ENROLL_CTL_USAGE = 217,
    _ENROLL_CERTTYPE_EXTENSION = 218,
    _CERT_MANIFOLD = 219,
    _CERTSRV_CA_VERSION = 220,
    _CERTSRV_PREVIOUS_CERT_HASH = 221,
    _CRL_VIRTUAL_BASE = 222,
    _CRL_NEXT_PUBLISH = 223,
    _KP_CA_EXCHANGE = 224,
    _KP_KEY_RECOVERY_AGENT = 225,
    _CERTIFICATE_TEMPLATE = 226,
    _ENTERPRISE_OID_ROOT = 227,
    _RDN_DUMMY_SIGNER = 228,
    _APPLICATION_CERT_POLICIES = 229,
    _APPLICATION_POLICY_MAPPINGS = 230,
    _APPLICATION_POLICY_CONSTRAINTS = 231,
    _ARCHIVED_KEY_ATTR = 232,
    _CRL_SELF_CDP = 233,
    _REQUIRE_CERT_CHAIN_POLICY = 234,
    _ARCHIVED_KEY_CERT_HASH = 235,
    _ISSUED_CERT_HASH = 236,
    _DS_EMAIL_REPLICATION = 237,
    _REQUEST_CLIENT_INFO = 238,
    _ENCRYPTED_KEY_HASH = 239,
    _CERTSRV_CROSSCA_VERSION = 240,
    _NTDS_REPLICATION = 241,
    _SUBJECT_DIR_ATTRS = 242,
    _PKIX_KP = 243,
    _PKIX_KP_SERVER_AUTH = 244,
    _PKIX_KP_CLIENT_AUTH = 245,
    _PKIX_KP_CODE_SIGNING = 246,
    _PKIX_KP_EMAIL_PROTECTION = 247,
    _PKIX_KP_IPSEC_END_SYSTEM = 248,
    _PKIX_KP_IPSEC_TUNNEL = 249,
    _PKIX_KP_IPSEC_USER = 250,
    _PKIX_KP_TIMESTAMP_SIGNING = 251,
    _PKIX_KP_OCSP_SIGNING = 252,
    _PKIX_OCSP_NOCHECK = 253,
    _IPSEC_KP_IKE_INTERMEDIATE = 254,
    _KP_CTL_USAGE_SIGNING = 255,
    _KP_TIME_STAMP_SIGNING = 256,
    _SERVER_GATED_CRYPTO = 257,
    _SGC_NETSCAPE = 258,
    _KP_EFS = 259,
    _EFS_RECOVERY = 260,
    _WHQL_CRYPTO = 261,
    _NT5_CRYPTO = 262,
    _OEM_WHQL_CRYPTO = 263,
    _EMBEDDED_NT_CRYPTO = 264,
    _ROOT_LIST_SIGNER = 265,
    _KP_QUALIFIED_SUBORDINATION = 266,
    _KP_KEY_RECOVERY = 267,
    _KP_DOCUMENT_SIGNING = 268,
    _KP_LIFETIME_SIGNING = 269,
    _KP_MOBILE_DEVICE_SOFTWARE = 270,
    _KP_SMART_DISPLAY = 271,
    _KP_CSP_SIGNATURE = 272,
    _DRM = 273,
    _DRM_INDIVIDUALIZATION = 274,
    _LICENSES = 275,
    _LICENSE_SERVER = 276,
    _KP_SMARTCARD_LOGON = 277,
    _YESNO_TRUST_ATTR = 278,
    _PKIX_POLICY_QUALIFIER_CPS = 279,
    _PKIX_POLICY_QUALIFIER_USERNOTICE = 280,
    _CERT_POLICIES_95_QUALIFIER1 = 281,
    _PKIX_ACC_DESCR = 282,
    _PKIX_OCSP = 283,
    _PKIX_CA_ISSUERS = 284,
    _VERISIGN_PRIVATE_6_9 = 285,
    _VERISIGN_ONSITE_JURISDICTION_HASH = 286,
    _VERISIGN_BITSTRING_6_13 = 287,
    _VERISIGN_ISS_STRONG_CRYPTO = 288,
    _NETSCAPE = 289,
    _NETSCAPE_CERT_EXTENSION = 290,
    _NETSCAPE_CERT_TYPE = 291,
    _NETSCAPE_BASE_URL = 292,
    _NETSCAPE_REVOCATION_URL = 293,
    _NETSCAPE_CA_REVOCATION_URL = 294,
    _NETSCAPE_CERT_RENEWAL_URL = 295,
    _NETSCAPE_CA_POLICY_URL = 296,
    _NETSCAPE_SSL_SERVER_NAME = 297,
    _NETSCAPE_COMMENT = 298,
    _NETSCAPE_DATA_TYPE = 299,
    _NETSCAPE_CERT_SEQUENCE = 300,
    _CT_PKI_DATA = 301,
    _CT_PKI_RESPONSE = 302,
    _PKIX_NO_SIGNATURE = 303,
    _CMC = 304,
    _CMC_STATUS_INFO = 305,
    _CMC_IDENTIFICATION = 306,
    _CMC_IDENTITY_PROOF = 307,
    _CMC_DATA_RETURN = 308,
    _CMC_TRANSACTION_ID = 309,
    _CMC_SENDER_NONCE = 310,
    _CMC_RECIPIENT_NONCE = 311,
    _CMC_ADD_EXTENSIONS = 312,
    _CMC_ENCRYPTED_POP = 313,
    _CMC_DECRYPTED_POP = 314,
    _CMC_LRA_POP_WITNESS = 315,
    _CMC_GET_CERT = 316,
    _CMC_GET_CRL = 317,
    _CMC_REVOKE_REQUEST = 318,
    _CMC_REG_INFO = 319,
    _CMC_RESPONSE_INFO = 320,
    _CMC_QUERY_PENDING = 321,
    _CMC_ID_POP_LINK_RANDOM = 322,
    _CMC_ID_POP_LINK_WITNESS = 323,
    _CMC_ID_CONFIRM_CERT_ACCEPTANCE = 324,
    _CMC_ADD_ATTRIBUTES = 325,
    _LOYALTY_OTHER_LOGOTYPE = 326,
    _BACKGROUND_OTHER_LOGOTYPE = 327,
    _PKIX_OCSP_BASIC_SIGNED_RESPONSE = 328,
    _PKCS_7_DATA = 329,
    _PKCS_7_SIGNED = 330,
    _PKCS_7_ENVELOPED = 331,
    _PKCS_7_SIGNEDANDENVELOPED = 332,
    _PKCS_7_DIGESTED = 333,
    _PKCS_7_ENCRYPTED = 334,
    _PKCS_9_CONTENT_TYPE = 335,
    _PKCS_9_MESSAGE_DIGEST = 336,
    _CERT_PROP_ID_PREFIX = 337,
    _CERT_KEY_IDENTIFIER_PROP_ID = 338,
    _CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID = 339,
    _CERT_SUBJECT_NAME_MD5_HASH_PROP_ID = 340,
    _CERT_MD5_HASH_PROP_ID = 341,
    _RSA_SHA256RSA = 342,
    _RSA_SHA384RSA = 343,
    _RSA_SHA512RSA = 344,
    _NIST_sha256 = 345,
    _NIST_sha384 = 346,
    _NIST_sha512 = 347,
    _RSA_MGF1 = 348,
    _ECC_PUBLIC_KEY = 349,
    _ECDSA_SHA1 = 350,
    _ECDSA_SPECIFIED = 351,
    _ANY_ENHANCED_KEY_USAGE = 352,
    _RSA_SSA_PSS = 353,
    _ATTR_SUPPORTED_ALGORITHMS = 355,
    _ATTR_TPM_SECURITY_ASSERTIONS = 356,
    _ATTR_TPM_SPECIFICATION = 357,
    _CERT_DISALLOWED_FILETIME_PROP_ID = 358,
    _CERT_SIGNATURE_HASH_PROP_ID = 359,
    _CERT_STRONG_KEY_OS_1 = 360,
    _CERT_STRONG_KEY_OS_CURRENT = 361,
    _CERT_STRONG_KEY_OS_PREFIX = 362,
    _CERT_STRONG_SIGN_OS_1 = 363,
    _CERT_STRONG_SIGN_OS_CURRENT = 364,
    _CERT_STRONG_SIGN_OS_PREFIX = 365,
    _DH_SINGLE_PASS_STDDH_SHA1_KDF = 366,
    _DH_SINGLE_PASS_STDDH_SHA256_KDF = 367,
    _DH_SINGLE_PASS_STDDH_SHA384_KDF = 368,
    _DISALLOWED_HASH = 369,
    _DISALLOWED_LIST = 370,
    _ECC_CURVE_P256 = 371,
    _ECC_CURVE_P384 = 372,
    _ECC_CURVE_P521 = 373,
    _ECDSA_SHA256 = 374,
    _ECDSA_SHA384 = 375,
    _ECDSA_SHA512 = 376,
    _ENROLL_CAXCHGCERT_HASH = 377,
    _ENROLL_EK_INFO = 378,
    _ENROLL_EKPUB_CHALLENGE = 379,
    _ENROLL_EKVERIFYCERT = 380,
    _ENROLL_EKVERIFYCREDS = 381,
    _ENROLL_EKVERIFYKEY = 382,
    _EV_RDN_COUNTRY = 383,
    _EV_RDN_LOCALE = 384,
    _EV_RDN_STATE_OR_PROVINCE = 385,
    _INHIBIT_ANY_POLICY = 386,
    _INTERNATIONALIZED_EMAIL_ADDRESS = 387,
    _KP_KERNEL_MODE_CODE_SIGNING = 388,
    _KP_KERNEL_MODE_HAL_EXTENSION_SIGNING = 389,
    _KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING = 390,
    _KP_TPM_AIK_CERTIFICATE = 391,
    _KP_TPM_EK_CERTIFICATE = 392,
    _KP_TPM_PLATFORM_CERTIFICATE = 393,
    _NIST_AES128_CBC = 394,
    _NIST_AES128_WRAP = 395,
    _NIST_AES192_CBC = 396,
    _NIST_AES192_WRAP = 397,
    _NIST_AES256_CBC = 398,
    _NIST_AES256_WRAP = 399,
    _PKCS_12_PbeIds = 400,
    _PKCS_12_pbeWithSHA1And128BitRC2 = 401,
    _PKCS_12_pbeWithSHA1And128BitRC4 = 402,
    _PKCS_12_pbeWithSHA1And2KeyTripleDES = 403,
    _PKCS_12_pbeWithSHA1And3KeyTripleDES = 404,
    _PKCS_12_pbeWithSHA1And40BitRC2 = 405,
    _PKCS_12_pbeWithSHA1And40BitRC4 = 406,
    _PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID = 407,
    _PKINIT_KP_KDC = 408,
    _PKIX_CA_REPOSITORY = 409,
    _PKIX_OCSP_NONCE = 410,
    _PKIX_TIME_STAMPING = 411,
    _QC_EU_COMPLIANCE = 412,
    _QC_SSCD = 413,
    _QC_STATEMENTS_EXT = 414,
    _RDN_TPM_MANUFACTURER = 415,
    _RDN_TPM_MODEL = 416,
    _RDN_TPM_VERSION = 417,
    _REVOKED_LIST_SIGNER = 418,
    _RFC3161_counterSign = 419,
    _ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION = 420,
    _ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION = 421,
    _ROOT_PROGRAM_FLAGS = 422,
    _ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL = 423,
    _RSA_PSPECIFIED = 424,
    _RSAES_OAEP = 425,
    _SUBJECT_INFO_ACCESS = 426,
    _TIMESTAMP_TOKEN = 427,
    _ENROLL_SCEP_ERROR = 428,
    Verisign_MessageType = 429,
    Verisign_PkiStatus = 430,
    Verisign_FailInfo = 431,
    Verisign_SenderNonce = 432,
    Verisign_RecipientNonce = 433,
    Verisign_TransactionID = 434,
    _ENROLL_ATTESTATION_CHALLENGE = 435,
    _ENROLL_ATTESTATION_STATEMENT = 436,
    _ENROLL_ENCRYPTION_ALGORITHM = 437,
    _ENROLL_KSP_NAME = 438,
};
pub const XCN_OID_NONE = CERTENROLL_OBJECTID._NONE;
pub const XCN_OID_RSA = CERTENROLL_OBJECTID._RSA;
pub const XCN_OID_PKCS = CERTENROLL_OBJECTID._PKCS;
pub const XCN_OID_RSA_HASH = CERTENROLL_OBJECTID._RSA_HASH;
pub const XCN_OID_RSA_ENCRYPT = CERTENROLL_OBJECTID._RSA_ENCRYPT;
pub const XCN_OID_PKCS_1 = CERTENROLL_OBJECTID._PKCS_1;
pub const XCN_OID_PKCS_2 = CERTENROLL_OBJECTID._PKCS_2;
pub const XCN_OID_PKCS_3 = CERTENROLL_OBJECTID._PKCS_3;
pub const XCN_OID_PKCS_4 = CERTENROLL_OBJECTID._PKCS_4;
pub const XCN_OID_PKCS_5 = CERTENROLL_OBJECTID._PKCS_5;
pub const XCN_OID_PKCS_6 = CERTENROLL_OBJECTID._PKCS_6;
pub const XCN_OID_PKCS_7 = CERTENROLL_OBJECTID._PKCS_7;
pub const XCN_OID_PKCS_8 = CERTENROLL_OBJECTID._PKCS_8;
pub const XCN_OID_PKCS_9 = CERTENROLL_OBJECTID._PKCS_9;
pub const XCN_OID_PKCS_10 = CERTENROLL_OBJECTID._PKCS_10;
pub const XCN_OID_PKCS_12 = CERTENROLL_OBJECTID._PKCS_12;
pub const XCN_OID_RSA_RSA = CERTENROLL_OBJECTID._RSA_RSA;
pub const XCN_OID_RSA_MD2RSA = CERTENROLL_OBJECTID._RSA_MD2RSA;
pub const XCN_OID_RSA_MD4RSA = CERTENROLL_OBJECTID._RSA_MD4RSA;
pub const XCN_OID_RSA_MD5RSA = CERTENROLL_OBJECTID._RSA_MD5RSA;
pub const XCN_OID_RSA_SHA1RSA = CERTENROLL_OBJECTID._RSA_SHA1RSA;
pub const XCN_OID_RSA_SETOAEP_RSA = CERTENROLL_OBJECTID._RSA_SETOAEP_RSA;
pub const XCN_OID_RSA_DH = CERTENROLL_OBJECTID._RSA_DH;
pub const XCN_OID_RSA_data = CERTENROLL_OBJECTID._RSA_data;
pub const XCN_OID_RSA_signedData = CERTENROLL_OBJECTID._RSA_signedData;
pub const XCN_OID_RSA_envelopedData = CERTENROLL_OBJECTID._RSA_envelopedData;
pub const XCN_OID_RSA_signEnvData = CERTENROLL_OBJECTID._RSA_signEnvData;
pub const XCN_OID_RSA_digestedData = CERTENROLL_OBJECTID._RSA_digestedData;
pub const XCN_OID_RSA_hashedData = CERTENROLL_OBJECTID._RSA_hashedData;
pub const XCN_OID_RSA_encryptedData = CERTENROLL_OBJECTID._RSA_encryptedData;
pub const XCN_OID_RSA_emailAddr = CERTENROLL_OBJECTID._RSA_emailAddr;
pub const XCN_OID_RSA_unstructName = CERTENROLL_OBJECTID._RSA_unstructName;
pub const XCN_OID_RSA_contentType = CERTENROLL_OBJECTID._RSA_contentType;
pub const XCN_OID_RSA_messageDigest = CERTENROLL_OBJECTID._RSA_messageDigest;
pub const XCN_OID_RSA_signingTime = CERTENROLL_OBJECTID._RSA_signingTime;
pub const XCN_OID_RSA_counterSign = CERTENROLL_OBJECTID._RSA_counterSign;
pub const XCN_OID_RSA_challengePwd = CERTENROLL_OBJECTID._RSA_challengePwd;
pub const XCN_OID_RSA_unstructAddr = CERTENROLL_OBJECTID._RSA_unstructAddr;
pub const XCN_OID_RSA_extCertAttrs = CERTENROLL_OBJECTID._RSA_extCertAttrs;
pub const XCN_OID_RSA_certExtensions = CERTENROLL_OBJECTID._RSA_certExtensions;
pub const XCN_OID_RSA_SMIMECapabilities = CERTENROLL_OBJECTID._RSA_SMIMECapabilities;
pub const XCN_OID_RSA_preferSignedData = CERTENROLL_OBJECTID._RSA_preferSignedData;
pub const XCN_OID_RSA_SMIMEalg = CERTENROLL_OBJECTID._RSA_SMIMEalg;
pub const XCN_OID_RSA_SMIMEalgESDH = CERTENROLL_OBJECTID._RSA_SMIMEalgESDH;
pub const XCN_OID_RSA_SMIMEalgCMS3DESwrap = CERTENROLL_OBJECTID._RSA_SMIMEalgCMS3DESwrap;
pub const XCN_OID_RSA_SMIMEalgCMSRC2wrap = CERTENROLL_OBJECTID._RSA_SMIMEalgCMSRC2wrap;
pub const XCN_OID_RSA_MD2 = CERTENROLL_OBJECTID._RSA_MD2;
pub const XCN_OID_RSA_MD4 = CERTENROLL_OBJECTID._RSA_MD4;
pub const XCN_OID_RSA_MD5 = CERTENROLL_OBJECTID._RSA_MD5;
pub const XCN_OID_RSA_RC2CBC = CERTENROLL_OBJECTID._RSA_RC2CBC;
pub const XCN_OID_RSA_RC4 = CERTENROLL_OBJECTID._RSA_RC4;
pub const XCN_OID_RSA_DES_EDE3_CBC = CERTENROLL_OBJECTID._RSA_DES_EDE3_CBC;
pub const XCN_OID_RSA_RC5_CBCPad = CERTENROLL_OBJECTID._RSA_RC5_CBCPad;
pub const XCN_OID_ANSI_X942 = CERTENROLL_OBJECTID._ANSI_X942;
pub const XCN_OID_ANSI_X942_DH = CERTENROLL_OBJECTID._ANSI_X942_DH;
pub const XCN_OID_X957 = CERTENROLL_OBJECTID._X957;
pub const XCN_OID_X957_DSA = CERTENROLL_OBJECTID._X957_DSA;
pub const XCN_OID_X957_SHA1DSA = CERTENROLL_OBJECTID._X957_SHA1DSA;
pub const XCN_OID_DS = CERTENROLL_OBJECTID._DS;
pub const XCN_OID_DSALG = CERTENROLL_OBJECTID._DSALG;
pub const XCN_OID_DSALG_CRPT = CERTENROLL_OBJECTID._DSALG_CRPT;
pub const XCN_OID_DSALG_HASH = CERTENROLL_OBJECTID._DSALG_HASH;
pub const XCN_OID_DSALG_SIGN = CERTENROLL_OBJECTID._DSALG_SIGN;
pub const XCN_OID_DSALG_RSA = CERTENROLL_OBJECTID._DSALG_RSA;
pub const XCN_OID_OIW = CERTENROLL_OBJECTID._OIW;
pub const XCN_OID_OIWSEC = CERTENROLL_OBJECTID._OIWSEC;
pub const XCN_OID_OIWSEC_md4RSA = CERTENROLL_OBJECTID._OIWSEC_md4RSA;
pub const XCN_OID_OIWSEC_md5RSA = CERTENROLL_OBJECTID._OIWSEC_md5RSA;
pub const XCN_OID_OIWSEC_md4RSA2 = CERTENROLL_OBJECTID._OIWSEC_md4RSA2;
pub const XCN_OID_OIWSEC_desECB = CERTENROLL_OBJECTID._OIWSEC_desECB;
pub const XCN_OID_OIWSEC_desCBC = CERTENROLL_OBJECTID._OIWSEC_desCBC;
pub const XCN_OID_OIWSEC_desOFB = CERTENROLL_OBJECTID._OIWSEC_desOFB;
pub const XCN_OID_OIWSEC_desCFB = CERTENROLL_OBJECTID._OIWSEC_desCFB;
pub const XCN_OID_OIWSEC_desMAC = CERTENROLL_OBJECTID._OIWSEC_desMAC;
pub const XCN_OID_OIWSEC_rsaSign = CERTENROLL_OBJECTID._OIWSEC_rsaSign;
pub const XCN_OID_OIWSEC_dsa = CERTENROLL_OBJECTID._OIWSEC_dsa;
pub const XCN_OID_OIWSEC_shaDSA = CERTENROLL_OBJECTID._OIWSEC_shaDSA;
pub const XCN_OID_OIWSEC_mdc2RSA = CERTENROLL_OBJECTID._OIWSEC_mdc2RSA;
pub const XCN_OID_OIWSEC_shaRSA = CERTENROLL_OBJECTID._OIWSEC_shaRSA;
pub const XCN_OID_OIWSEC_dhCommMod = CERTENROLL_OBJECTID._OIWSEC_dhCommMod;
pub const XCN_OID_OIWSEC_desEDE = CERTENROLL_OBJECTID._OIWSEC_desEDE;
pub const XCN_OID_OIWSEC_sha = CERTENROLL_OBJECTID._OIWSEC_sha;
pub const XCN_OID_OIWSEC_mdc2 = CERTENROLL_OBJECTID._OIWSEC_mdc2;
pub const XCN_OID_OIWSEC_dsaComm = CERTENROLL_OBJECTID._OIWSEC_dsaComm;
pub const XCN_OID_OIWSEC_dsaCommSHA = CERTENROLL_OBJECTID._OIWSEC_dsaCommSHA;
pub const XCN_OID_OIWSEC_rsaXchg = CERTENROLL_OBJECTID._OIWSEC_rsaXchg;
pub const XCN_OID_OIWSEC_keyHashSeal = CERTENROLL_OBJECTID._OIWSEC_keyHashSeal;
pub const XCN_OID_OIWSEC_md2RSASign = CERTENROLL_OBJECTID._OIWSEC_md2RSASign;
pub const XCN_OID_OIWSEC_md5RSASign = CERTENROLL_OBJECTID._OIWSEC_md5RSASign;
pub const XCN_OID_OIWSEC_sha1 = CERTENROLL_OBJECTID._OIWSEC_sha1;
pub const XCN_OID_OIWSEC_dsaSHA1 = CERTENROLL_OBJECTID._OIWSEC_dsaSHA1;
pub const XCN_OID_OIWSEC_dsaCommSHA1 = CERTENROLL_OBJECTID._OIWSEC_dsaCommSHA1;
pub const XCN_OID_OIWSEC_sha1RSASign = CERTENROLL_OBJECTID._OIWSEC_sha1RSASign;
pub const XCN_OID_OIWDIR = CERTENROLL_OBJECTID._OIWDIR;
pub const XCN_OID_OIWDIR_CRPT = CERTENROLL_OBJECTID._OIWDIR_CRPT;
pub const XCN_OID_OIWDIR_HASH = CERTENROLL_OBJECTID._OIWDIR_HASH;
pub const XCN_OID_OIWDIR_SIGN = CERTENROLL_OBJECTID._OIWDIR_SIGN;
pub const XCN_OID_OIWDIR_md2 = CERTENROLL_OBJECTID._OIWDIR_md2;
pub const XCN_OID_OIWDIR_md2RSA = CERTENROLL_OBJECTID._OIWDIR_md2RSA;
pub const XCN_OID_INFOSEC = CERTENROLL_OBJECTID._INFOSEC;
pub const XCN_OID_INFOSEC_sdnsSignature = CERTENROLL_OBJECTID._INFOSEC_sdnsSignature;
pub const XCN_OID_INFOSEC_mosaicSignature = CERTENROLL_OBJECTID._INFOSEC_mosaicSignature;
pub const XCN_OID_INFOSEC_sdnsConfidentiality = CERTENROLL_OBJECTID._INFOSEC_sdnsConfidentiality;
pub const XCN_OID_INFOSEC_mosaicConfidentiality = CERTENROLL_OBJECTID._INFOSEC_mosaicConfidentiality;
pub const XCN_OID_INFOSEC_sdnsIntegrity = CERTENROLL_OBJECTID._INFOSEC_sdnsIntegrity;
pub const XCN_OID_INFOSEC_mosaicIntegrity = CERTENROLL_OBJECTID._INFOSEC_mosaicIntegrity;
pub const XCN_OID_INFOSEC_sdnsTokenProtection = CERTENROLL_OBJECTID._INFOSEC_sdnsTokenProtection;
pub const XCN_OID_INFOSEC_mosaicTokenProtection = CERTENROLL_OBJECTID._INFOSEC_mosaicTokenProtection;
pub const XCN_OID_INFOSEC_sdnsKeyManagement = CERTENROLL_OBJECTID._INFOSEC_sdnsKeyManagement;
pub const XCN_OID_INFOSEC_mosaicKeyManagement = CERTENROLL_OBJECTID._INFOSEC_mosaicKeyManagement;
pub const XCN_OID_INFOSEC_sdnsKMandSig = CERTENROLL_OBJECTID._INFOSEC_sdnsKMandSig;
pub const XCN_OID_INFOSEC_mosaicKMandSig = CERTENROLL_OBJECTID._INFOSEC_mosaicKMandSig;
pub const XCN_OID_INFOSEC_SuiteASignature = CERTENROLL_OBJECTID._INFOSEC_SuiteASignature;
pub const XCN_OID_INFOSEC_SuiteAConfidentiality = CERTENROLL_OBJECTID._INFOSEC_SuiteAConfidentiality;
pub const XCN_OID_INFOSEC_SuiteAIntegrity = CERTENROLL_OBJECTID._INFOSEC_SuiteAIntegrity;
pub const XCN_OID_INFOSEC_SuiteATokenProtection = CERTENROLL_OBJECTID._INFOSEC_SuiteATokenProtection;
pub const XCN_OID_INFOSEC_SuiteAKeyManagement = CERTENROLL_OBJECTID._INFOSEC_SuiteAKeyManagement;
pub const XCN_OID_INFOSEC_SuiteAKMandSig = CERTENROLL_OBJECTID._INFOSEC_SuiteAKMandSig;
pub const XCN_OID_INFOSEC_mosaicUpdatedSig = CERTENROLL_OBJECTID._INFOSEC_mosaicUpdatedSig;
pub const XCN_OID_INFOSEC_mosaicKMandUpdSig = CERTENROLL_OBJECTID._INFOSEC_mosaicKMandUpdSig;
pub const XCN_OID_INFOSEC_mosaicUpdatedInteg = CERTENROLL_OBJECTID._INFOSEC_mosaicUpdatedInteg;
pub const XCN_OID_COMMON_NAME = CERTENROLL_OBJECTID._COMMON_NAME;
pub const XCN_OID_SUR_NAME = CERTENROLL_OBJECTID._SUR_NAME;
pub const XCN_OID_DEVICE_SERIAL_NUMBER = CERTENROLL_OBJECTID._DEVICE_SERIAL_NUMBER;
pub const XCN_OID_COUNTRY_NAME = CERTENROLL_OBJECTID._COUNTRY_NAME;
pub const XCN_OID_LOCALITY_NAME = CERTENROLL_OBJECTID._LOCALITY_NAME;
pub const XCN_OID_STATE_OR_PROVINCE_NAME = CERTENROLL_OBJECTID._STATE_OR_PROVINCE_NAME;
pub const XCN_OID_STREET_ADDRESS = CERTENROLL_OBJECTID._STREET_ADDRESS;
pub const XCN_OID_ORGANIZATION_NAME = CERTENROLL_OBJECTID._ORGANIZATION_NAME;
pub const XCN_OID_ORGANIZATIONAL_UNIT_NAME = CERTENROLL_OBJECTID._ORGANIZATIONAL_UNIT_NAME;
pub const XCN_OID_TITLE = CERTENROLL_OBJECTID._TITLE;
pub const XCN_OID_DESCRIPTION = CERTENROLL_OBJECTID._DESCRIPTION;
pub const XCN_OID_SEARCH_GUIDE = CERTENROLL_OBJECTID._SEARCH_GUIDE;
pub const XCN_OID_BUSINESS_CATEGORY = CERTENROLL_OBJECTID._BUSINESS_CATEGORY;
pub const XCN_OID_POSTAL_ADDRESS = CERTENROLL_OBJECTID._POSTAL_ADDRESS;
pub const XCN_OID_POSTAL_CODE = CERTENROLL_OBJECTID._POSTAL_CODE;
pub const XCN_OID_POST_OFFICE_BOX = CERTENROLL_OBJECTID._POST_OFFICE_BOX;
pub const XCN_OID_PHYSICAL_DELIVERY_OFFICE_NAME = CERTENROLL_OBJECTID._PHYSICAL_DELIVERY_OFFICE_NAME;
pub const XCN_OID_TELEPHONE_NUMBER = CERTENROLL_OBJECTID._TELEPHONE_NUMBER;
pub const XCN_OID_TELEX_NUMBER = CERTENROLL_OBJECTID._TELEX_NUMBER;
pub const XCN_OID_TELETEXT_TERMINAL_IDENTIFIER = CERTENROLL_OBJECTID._TELETEXT_TERMINAL_IDENTIFIER;
pub const XCN_OID_FACSIMILE_TELEPHONE_NUMBER = CERTENROLL_OBJECTID._FACSIMILE_TELEPHONE_NUMBER;
pub const XCN_OID_X21_ADDRESS = CERTENROLL_OBJECTID._X21_ADDRESS;
pub const XCN_OID_INTERNATIONAL_ISDN_NUMBER = CERTENROLL_OBJECTID._INTERNATIONAL_ISDN_NUMBER;
pub const XCN_OID_REGISTERED_ADDRESS = CERTENROLL_OBJECTID._REGISTERED_ADDRESS;
pub const XCN_OID_DESTINATION_INDICATOR = CERTENROLL_OBJECTID._DESTINATION_INDICATOR;
pub const XCN_OID_PREFERRED_DELIVERY_METHOD = CERTENROLL_OBJECTID._PREFERRED_DELIVERY_METHOD;
pub const XCN_OID_PRESENTATION_ADDRESS = CERTENROLL_OBJECTID._PRESENTATION_ADDRESS;
pub const XCN_OID_SUPPORTED_APPLICATION_CONTEXT = CERTENROLL_OBJECTID._SUPPORTED_APPLICATION_CONTEXT;
pub const XCN_OID_MEMBER = CERTENROLL_OBJECTID._MEMBER;
pub const XCN_OID_OWNER = CERTENROLL_OBJECTID._OWNER;
pub const XCN_OID_ROLE_OCCUPANT = CERTENROLL_OBJECTID._ROLE_OCCUPANT;
pub const XCN_OID_SEE_ALSO = CERTENROLL_OBJECTID._SEE_ALSO;
pub const XCN_OID_USER_PASSWORD = CERTENROLL_OBJECTID._USER_PASSWORD;
pub const XCN_OID_USER_CERTIFICATE = CERTENROLL_OBJECTID._USER_CERTIFICATE;
pub const XCN_OID_CA_CERTIFICATE = CERTENROLL_OBJECTID._CA_CERTIFICATE;
pub const XCN_OID_AUTHORITY_REVOCATION_LIST = CERTENROLL_OBJECTID._AUTHORITY_REVOCATION_LIST;
pub const XCN_OID_CERTIFICATE_REVOCATION_LIST = CERTENROLL_OBJECTID._CERTIFICATE_REVOCATION_LIST;
pub const XCN_OID_CROSS_CERTIFICATE_PAIR = CERTENROLL_OBJECTID._CROSS_CERTIFICATE_PAIR;
pub const XCN_OID_GIVEN_NAME = CERTENROLL_OBJECTID._GIVEN_NAME;
pub const XCN_OID_INITIALS = CERTENROLL_OBJECTID._INITIALS;
pub const XCN_OID_DN_QUALIFIER = CERTENROLL_OBJECTID._DN_QUALIFIER;
pub const XCN_OID_DOMAIN_COMPONENT = CERTENROLL_OBJECTID._DOMAIN_COMPONENT;
pub const XCN_OID_PKCS_12_FRIENDLY_NAME_ATTR = CERTENROLL_OBJECTID._PKCS_12_FRIENDLY_NAME_ATTR;
pub const XCN_OID_PKCS_12_LOCAL_KEY_ID = CERTENROLL_OBJECTID._PKCS_12_LOCAL_KEY_ID;
pub const XCN_OID_PKCS_12_KEY_PROVIDER_NAME_ATTR = CERTENROLL_OBJECTID._PKCS_12_KEY_PROVIDER_NAME_ATTR;
pub const XCN_OID_LOCAL_MACHINE_KEYSET = CERTENROLL_OBJECTID._LOCAL_MACHINE_KEYSET;
pub const XCN_OID_PKCS_12_EXTENDED_ATTRIBUTES = CERTENROLL_OBJECTID._PKCS_12_EXTENDED_ATTRIBUTES;
pub const XCN_OID_KEYID_RDN = CERTENROLL_OBJECTID._KEYID_RDN;
pub const XCN_OID_AUTHORITY_KEY_IDENTIFIER = CERTENROLL_OBJECTID._AUTHORITY_KEY_IDENTIFIER;
pub const XCN_OID_KEY_ATTRIBUTES = CERTENROLL_OBJECTID._KEY_ATTRIBUTES;
pub const XCN_OID_CERT_POLICIES_95 = CERTENROLL_OBJECTID._CERT_POLICIES_95;
pub const XCN_OID_KEY_USAGE_RESTRICTION = CERTENROLL_OBJECTID._KEY_USAGE_RESTRICTION;
pub const XCN_OID_SUBJECT_ALT_NAME = CERTENROLL_OBJECTID._SUBJECT_ALT_NAME;
pub const XCN_OID_ISSUER_ALT_NAME = CERTENROLL_OBJECTID._ISSUER_ALT_NAME;
pub const XCN_OID_BASIC_CONSTRAINTS = CERTENROLL_OBJECTID._BASIC_CONSTRAINTS;
pub const XCN_OID_KEY_USAGE = CERTENROLL_OBJECTID._KEY_USAGE;
pub const XCN_OID_PRIVATEKEY_USAGE_PERIOD = CERTENROLL_OBJECTID._PRIVATEKEY_USAGE_PERIOD;
pub const XCN_OID_BASIC_CONSTRAINTS2 = CERTENROLL_OBJECTID._BASIC_CONSTRAINTS2;
pub const XCN_OID_CERT_POLICIES = CERTENROLL_OBJECTID._CERT_POLICIES;
pub const XCN_OID_ANY_CERT_POLICY = CERTENROLL_OBJECTID._ANY_CERT_POLICY;
pub const XCN_OID_AUTHORITY_KEY_IDENTIFIER2 = CERTENROLL_OBJECTID._AUTHORITY_KEY_IDENTIFIER2;
pub const XCN_OID_SUBJECT_KEY_IDENTIFIER = CERTENROLL_OBJECTID._SUBJECT_KEY_IDENTIFIER;
pub const XCN_OID_SUBJECT_ALT_NAME2 = CERTENROLL_OBJECTID._SUBJECT_ALT_NAME2;
pub const XCN_OID_ISSUER_ALT_NAME2 = CERTENROLL_OBJECTID._ISSUER_ALT_NAME2;
pub const XCN_OID_CRL_REASON_CODE = CERTENROLL_OBJECTID._CRL_REASON_CODE;
pub const XCN_OID_REASON_CODE_HOLD = CERTENROLL_OBJECTID._REASON_CODE_HOLD;
pub const XCN_OID_CRL_DIST_POINTS = CERTENROLL_OBJECTID._CRL_DIST_POINTS;
pub const XCN_OID_ENHANCED_KEY_USAGE = CERTENROLL_OBJECTID._ENHANCED_KEY_USAGE;
pub const XCN_OID_CRL_NUMBER = CERTENROLL_OBJECTID._CRL_NUMBER;
pub const XCN_OID_DELTA_CRL_INDICATOR = CERTENROLL_OBJECTID._DELTA_CRL_INDICATOR;
pub const XCN_OID_ISSUING_DIST_POINT = CERTENROLL_OBJECTID._ISSUING_DIST_POINT;
pub const XCN_OID_FRESHEST_CRL = CERTENROLL_OBJECTID._FRESHEST_CRL;
pub const XCN_OID_NAME_CONSTRAINTS = CERTENROLL_OBJECTID._NAME_CONSTRAINTS;
pub const XCN_OID_POLICY_MAPPINGS = CERTENROLL_OBJECTID._POLICY_MAPPINGS;
pub const XCN_OID_LEGACY_POLICY_MAPPINGS = CERTENROLL_OBJECTID._LEGACY_POLICY_MAPPINGS;
pub const XCN_OID_POLICY_CONSTRAINTS = CERTENROLL_OBJECTID._POLICY_CONSTRAINTS;
pub const XCN_OID_RENEWAL_CERTIFICATE = CERTENROLL_OBJECTID._RENEWAL_CERTIFICATE;
pub const XCN_OID_ENROLLMENT_NAME_VALUE_PAIR = CERTENROLL_OBJECTID._ENROLLMENT_NAME_VALUE_PAIR;
pub const XCN_OID_ENROLLMENT_CSP_PROVIDER = CERTENROLL_OBJECTID._ENROLLMENT_CSP_PROVIDER;
pub const XCN_OID_OS_VERSION = CERTENROLL_OBJECTID._OS_VERSION;
pub const XCN_OID_ENROLLMENT_AGENT = CERTENROLL_OBJECTID._ENROLLMENT_AGENT;
pub const XCN_OID_PKIX = CERTENROLL_OBJECTID._PKIX;
pub const XCN_OID_PKIX_PE = CERTENROLL_OBJECTID._PKIX_PE;
pub const XCN_OID_AUTHORITY_INFO_ACCESS = CERTENROLL_OBJECTID._AUTHORITY_INFO_ACCESS;
pub const XCN_OID_BIOMETRIC_EXT = CERTENROLL_OBJECTID._BIOMETRIC_EXT;
pub const XCN_OID_LOGOTYPE_EXT = CERTENROLL_OBJECTID._LOGOTYPE_EXT;
pub const XCN_OID_CERT_EXTENSIONS = CERTENROLL_OBJECTID._CERT_EXTENSIONS;
pub const XCN_OID_NEXT_UPDATE_LOCATION = CERTENROLL_OBJECTID._NEXT_UPDATE_LOCATION;
pub const XCN_OID_REMOVE_CERTIFICATE = CERTENROLL_OBJECTID._REMOVE_CERTIFICATE;
pub const XCN_OID_CROSS_CERT_DIST_POINTS = CERTENROLL_OBJECTID._CROSS_CERT_DIST_POINTS;
pub const XCN_OID_CTL = CERTENROLL_OBJECTID._CTL;
pub const XCN_OID_SORTED_CTL = CERTENROLL_OBJECTID._SORTED_CTL;
pub const XCN_OID_SERIALIZED = CERTENROLL_OBJECTID._SERIALIZED;
pub const XCN_OID_NT_PRINCIPAL_NAME = CERTENROLL_OBJECTID._NT_PRINCIPAL_NAME;
pub const XCN_OID_PRODUCT_UPDATE = CERTENROLL_OBJECTID._PRODUCT_UPDATE;
pub const XCN_OID_ANY_APPLICATION_POLICY = CERTENROLL_OBJECTID._ANY_APPLICATION_POLICY;
pub const XCN_OID_AUTO_ENROLL_CTL_USAGE = CERTENROLL_OBJECTID._AUTO_ENROLL_CTL_USAGE;
pub const XCN_OID_ENROLL_CERTTYPE_EXTENSION = CERTENROLL_OBJECTID._ENROLL_CERTTYPE_EXTENSION;
pub const XCN_OID_CERT_MANIFOLD = CERTENROLL_OBJECTID._CERT_MANIFOLD;
pub const XCN_OID_CERTSRV_CA_VERSION = CERTENROLL_OBJECTID._CERTSRV_CA_VERSION;
pub const XCN_OID_CERTSRV_PREVIOUS_CERT_HASH = CERTENROLL_OBJECTID._CERTSRV_PREVIOUS_CERT_HASH;
pub const XCN_OID_CRL_VIRTUAL_BASE = CERTENROLL_OBJECTID._CRL_VIRTUAL_BASE;
pub const XCN_OID_CRL_NEXT_PUBLISH = CERTENROLL_OBJECTID._CRL_NEXT_PUBLISH;
pub const XCN_OID_KP_CA_EXCHANGE = CERTENROLL_OBJECTID._KP_CA_EXCHANGE;
pub const XCN_OID_KP_KEY_RECOVERY_AGENT = CERTENROLL_OBJECTID._KP_KEY_RECOVERY_AGENT;
pub const XCN_OID_CERTIFICATE_TEMPLATE = CERTENROLL_OBJECTID._CERTIFICATE_TEMPLATE;
pub const XCN_OID_ENTERPRISE_OID_ROOT = CERTENROLL_OBJECTID._ENTERPRISE_OID_ROOT;
pub const XCN_OID_RDN_DUMMY_SIGNER = CERTENROLL_OBJECTID._RDN_DUMMY_SIGNER;
pub const XCN_OID_APPLICATION_CERT_POLICIES = CERTENROLL_OBJECTID._APPLICATION_CERT_POLICIES;
pub const XCN_OID_APPLICATION_POLICY_MAPPINGS = CERTENROLL_OBJECTID._APPLICATION_POLICY_MAPPINGS;
pub const XCN_OID_APPLICATION_POLICY_CONSTRAINTS = CERTENROLL_OBJECTID._APPLICATION_POLICY_CONSTRAINTS;
pub const XCN_OID_ARCHIVED_KEY_ATTR = CERTENROLL_OBJECTID._ARCHIVED_KEY_ATTR;
pub const XCN_OID_CRL_SELF_CDP = CERTENROLL_OBJECTID._CRL_SELF_CDP;
pub const XCN_OID_REQUIRE_CERT_CHAIN_POLICY = CERTENROLL_OBJECTID._REQUIRE_CERT_CHAIN_POLICY;
pub const XCN_OID_ARCHIVED_KEY_CERT_HASH = CERTENROLL_OBJECTID._ARCHIVED_KEY_CERT_HASH;
pub const XCN_OID_ISSUED_CERT_HASH = CERTENROLL_OBJECTID._ISSUED_CERT_HASH;
pub const XCN_OID_DS_EMAIL_REPLICATION = CERTENROLL_OBJECTID._DS_EMAIL_REPLICATION;
pub const XCN_OID_REQUEST_CLIENT_INFO = CERTENROLL_OBJECTID._REQUEST_CLIENT_INFO;
pub const XCN_OID_ENCRYPTED_KEY_HASH = CERTENROLL_OBJECTID._ENCRYPTED_KEY_HASH;
pub const XCN_OID_CERTSRV_CROSSCA_VERSION = CERTENROLL_OBJECTID._CERTSRV_CROSSCA_VERSION;
pub const XCN_OID_NTDS_REPLICATION = CERTENROLL_OBJECTID._NTDS_REPLICATION;
pub const XCN_OID_SUBJECT_DIR_ATTRS = CERTENROLL_OBJECTID._SUBJECT_DIR_ATTRS;
pub const XCN_OID_PKIX_KP = CERTENROLL_OBJECTID._PKIX_KP;
pub const XCN_OID_PKIX_KP_SERVER_AUTH = CERTENROLL_OBJECTID._PKIX_KP_SERVER_AUTH;
pub const XCN_OID_PKIX_KP_CLIENT_AUTH = CERTENROLL_OBJECTID._PKIX_KP_CLIENT_AUTH;
pub const XCN_OID_PKIX_KP_CODE_SIGNING = CERTENROLL_OBJECTID._PKIX_KP_CODE_SIGNING;
pub const XCN_OID_PKIX_KP_EMAIL_PROTECTION = CERTENROLL_OBJECTID._PKIX_KP_EMAIL_PROTECTION;
pub const XCN_OID_PKIX_KP_IPSEC_END_SYSTEM = CERTENROLL_OBJECTID._PKIX_KP_IPSEC_END_SYSTEM;
pub const XCN_OID_PKIX_KP_IPSEC_TUNNEL = CERTENROLL_OBJECTID._PKIX_KP_IPSEC_TUNNEL;
pub const XCN_OID_PKIX_KP_IPSEC_USER = CERTENROLL_OBJECTID._PKIX_KP_IPSEC_USER;
pub const XCN_OID_PKIX_KP_TIMESTAMP_SIGNING = CERTENROLL_OBJECTID._PKIX_KP_TIMESTAMP_SIGNING;
pub const XCN_OID_PKIX_KP_OCSP_SIGNING = CERTENROLL_OBJECTID._PKIX_KP_OCSP_SIGNING;
pub const XCN_OID_PKIX_OCSP_NOCHECK = CERTENROLL_OBJECTID._PKIX_OCSP_NOCHECK;
pub const XCN_OID_IPSEC_KP_IKE_INTERMEDIATE = CERTENROLL_OBJECTID._IPSEC_KP_IKE_INTERMEDIATE;
pub const XCN_OID_KP_CTL_USAGE_SIGNING = CERTENROLL_OBJECTID._KP_CTL_USAGE_SIGNING;
pub const XCN_OID_KP_TIME_STAMP_SIGNING = CERTENROLL_OBJECTID._KP_TIME_STAMP_SIGNING;
pub const XCN_OID_SERVER_GATED_CRYPTO = CERTENROLL_OBJECTID._SERVER_GATED_CRYPTO;
pub const XCN_OID_SGC_NETSCAPE = CERTENROLL_OBJECTID._SGC_NETSCAPE;
pub const XCN_OID_KP_EFS = CERTENROLL_OBJECTID._KP_EFS;
pub const XCN_OID_EFS_RECOVERY = CERTENROLL_OBJECTID._EFS_RECOVERY;
pub const XCN_OID_WHQL_CRYPTO = CERTENROLL_OBJECTID._WHQL_CRYPTO;
pub const XCN_OID_NT5_CRYPTO = CERTENROLL_OBJECTID._NT5_CRYPTO;
pub const XCN_OID_OEM_WHQL_CRYPTO = CERTENROLL_OBJECTID._OEM_WHQL_CRYPTO;
pub const XCN_OID_EMBEDDED_NT_CRYPTO = CERTENROLL_OBJECTID._EMBEDDED_NT_CRYPTO;
pub const XCN_OID_ROOT_LIST_SIGNER = CERTENROLL_OBJECTID._ROOT_LIST_SIGNER;
pub const XCN_OID_KP_QUALIFIED_SUBORDINATION = CERTENROLL_OBJECTID._KP_QUALIFIED_SUBORDINATION;
pub const XCN_OID_KP_KEY_RECOVERY = CERTENROLL_OBJECTID._KP_KEY_RECOVERY;
pub const XCN_OID_KP_DOCUMENT_SIGNING = CERTENROLL_OBJECTID._KP_DOCUMENT_SIGNING;
pub const XCN_OID_KP_LIFETIME_SIGNING = CERTENROLL_OBJECTID._KP_LIFETIME_SIGNING;
pub const XCN_OID_KP_MOBILE_DEVICE_SOFTWARE = CERTENROLL_OBJECTID._KP_MOBILE_DEVICE_SOFTWARE;
pub const XCN_OID_KP_SMART_DISPLAY = CERTENROLL_OBJECTID._KP_SMART_DISPLAY;
pub const XCN_OID_KP_CSP_SIGNATURE = CERTENROLL_OBJECTID._KP_CSP_SIGNATURE;
pub const XCN_OID_DRM = CERTENROLL_OBJECTID._DRM;
pub const XCN_OID_DRM_INDIVIDUALIZATION = CERTENROLL_OBJECTID._DRM_INDIVIDUALIZATION;
pub const XCN_OID_LICENSES = CERTENROLL_OBJECTID._LICENSES;
pub const XCN_OID_LICENSE_SERVER = CERTENROLL_OBJECTID._LICENSE_SERVER;
pub const XCN_OID_KP_SMARTCARD_LOGON = CERTENROLL_OBJECTID._KP_SMARTCARD_LOGON;
pub const XCN_OID_YESNO_TRUST_ATTR = CERTENROLL_OBJECTID._YESNO_TRUST_ATTR;
pub const XCN_OID_PKIX_POLICY_QUALIFIER_CPS = CERTENROLL_OBJECTID._PKIX_POLICY_QUALIFIER_CPS;
pub const XCN_OID_PKIX_POLICY_QUALIFIER_USERNOTICE = CERTENROLL_OBJECTID._PKIX_POLICY_QUALIFIER_USERNOTICE;
pub const XCN_OID_CERT_POLICIES_95_QUALIFIER1 = CERTENROLL_OBJECTID._CERT_POLICIES_95_QUALIFIER1;
pub const XCN_OID_PKIX_ACC_DESCR = CERTENROLL_OBJECTID._PKIX_ACC_DESCR;
pub const XCN_OID_PKIX_OCSP = CERTENROLL_OBJECTID._PKIX_OCSP;
pub const XCN_OID_PKIX_CA_ISSUERS = CERTENROLL_OBJECTID._PKIX_CA_ISSUERS;
pub const XCN_OID_VERISIGN_PRIVATE_6_9 = CERTENROLL_OBJECTID._VERISIGN_PRIVATE_6_9;
pub const XCN_OID_VERISIGN_ONSITE_JURISDICTION_HASH = CERTENROLL_OBJECTID._VERISIGN_ONSITE_JURISDICTION_HASH;
pub const XCN_OID_VERISIGN_BITSTRING_6_13 = CERTENROLL_OBJECTID._VERISIGN_BITSTRING_6_13;
pub const XCN_OID_VERISIGN_ISS_STRONG_CRYPTO = CERTENROLL_OBJECTID._VERISIGN_ISS_STRONG_CRYPTO;
pub const XCN_OID_NETSCAPE = CERTENROLL_OBJECTID._NETSCAPE;
pub const XCN_OID_NETSCAPE_CERT_EXTENSION = CERTENROLL_OBJECTID._NETSCAPE_CERT_EXTENSION;
pub const XCN_OID_NETSCAPE_CERT_TYPE = CERTENROLL_OBJECTID._NETSCAPE_CERT_TYPE;
pub const XCN_OID_NETSCAPE_BASE_URL = CERTENROLL_OBJECTID._NETSCAPE_BASE_URL;
pub const XCN_OID_NETSCAPE_REVOCATION_URL = CERTENROLL_OBJECTID._NETSCAPE_REVOCATION_URL;
pub const XCN_OID_NETSCAPE_CA_REVOCATION_URL = CERTENROLL_OBJECTID._NETSCAPE_CA_REVOCATION_URL;
pub const XCN_OID_NETSCAPE_CERT_RENEWAL_URL = CERTENROLL_OBJECTID._NETSCAPE_CERT_RENEWAL_URL;
pub const XCN_OID_NETSCAPE_CA_POLICY_URL = CERTENROLL_OBJECTID._NETSCAPE_CA_POLICY_URL;
pub const XCN_OID_NETSCAPE_SSL_SERVER_NAME = CERTENROLL_OBJECTID._NETSCAPE_SSL_SERVER_NAME;
pub const XCN_OID_NETSCAPE_COMMENT = CERTENROLL_OBJECTID._NETSCAPE_COMMENT;
pub const XCN_OID_NETSCAPE_DATA_TYPE = CERTENROLL_OBJECTID._NETSCAPE_DATA_TYPE;
pub const XCN_OID_NETSCAPE_CERT_SEQUENCE = CERTENROLL_OBJECTID._NETSCAPE_CERT_SEQUENCE;
pub const XCN_OID_CT_PKI_DATA = CERTENROLL_OBJECTID._CT_PKI_DATA;
pub const XCN_OID_CT_PKI_RESPONSE = CERTENROLL_OBJECTID._CT_PKI_RESPONSE;
pub const XCN_OID_PKIX_NO_SIGNATURE = CERTENROLL_OBJECTID._PKIX_NO_SIGNATURE;
pub const XCN_OID_CMC = CERTENROLL_OBJECTID._CMC;
pub const XCN_OID_CMC_STATUS_INFO = CERTENROLL_OBJECTID._CMC_STATUS_INFO;
pub const XCN_OID_CMC_IDENTIFICATION = CERTENROLL_OBJECTID._CMC_IDENTIFICATION;
pub const XCN_OID_CMC_IDENTITY_PROOF = CERTENROLL_OBJECTID._CMC_IDENTITY_PROOF;
pub const XCN_OID_CMC_DATA_RETURN = CERTENROLL_OBJECTID._CMC_DATA_RETURN;
pub const XCN_OID_CMC_TRANSACTION_ID = CERTENROLL_OBJECTID._CMC_TRANSACTION_ID;
pub const XCN_OID_CMC_SENDER_NONCE = CERTENROLL_OBJECTID._CMC_SENDER_NONCE;
pub const XCN_OID_CMC_RECIPIENT_NONCE = CERTENROLL_OBJECTID._CMC_RECIPIENT_NONCE;
pub const XCN_OID_CMC_ADD_EXTENSIONS = CERTENROLL_OBJECTID._CMC_ADD_EXTENSIONS;
pub const XCN_OID_CMC_ENCRYPTED_POP = CERTENROLL_OBJECTID._CMC_ENCRYPTED_POP;
pub const XCN_OID_CMC_DECRYPTED_POP = CERTENROLL_OBJECTID._CMC_DECRYPTED_POP;
pub const XCN_OID_CMC_LRA_POP_WITNESS = CERTENROLL_OBJECTID._CMC_LRA_POP_WITNESS;
pub const XCN_OID_CMC_GET_CERT = CERTENROLL_OBJECTID._CMC_GET_CERT;
pub const XCN_OID_CMC_GET_CRL = CERTENROLL_OBJECTID._CMC_GET_CRL;
pub const XCN_OID_CMC_REVOKE_REQUEST = CERTENROLL_OBJECTID._CMC_REVOKE_REQUEST;
pub const XCN_OID_CMC_REG_INFO = CERTENROLL_OBJECTID._CMC_REG_INFO;
pub const XCN_OID_CMC_RESPONSE_INFO = CERTENROLL_OBJECTID._CMC_RESPONSE_INFO;
pub const XCN_OID_CMC_QUERY_PENDING = CERTENROLL_OBJECTID._CMC_QUERY_PENDING;
pub const XCN_OID_CMC_ID_POP_LINK_RANDOM = CERTENROLL_OBJECTID._CMC_ID_POP_LINK_RANDOM;
pub const XCN_OID_CMC_ID_POP_LINK_WITNESS = CERTENROLL_OBJECTID._CMC_ID_POP_LINK_WITNESS;
pub const XCN_OID_CMC_ID_CONFIRM_CERT_ACCEPTANCE = CERTENROLL_OBJECTID._CMC_ID_CONFIRM_CERT_ACCEPTANCE;
pub const XCN_OID_CMC_ADD_ATTRIBUTES = CERTENROLL_OBJECTID._CMC_ADD_ATTRIBUTES;
pub const XCN_OID_LOYALTY_OTHER_LOGOTYPE = CERTENROLL_OBJECTID._LOYALTY_OTHER_LOGOTYPE;
pub const XCN_OID_BACKGROUND_OTHER_LOGOTYPE = CERTENROLL_OBJECTID._BACKGROUND_OTHER_LOGOTYPE;
pub const XCN_OID_PKIX_OCSP_BASIC_SIGNED_RESPONSE = CERTENROLL_OBJECTID._PKIX_OCSP_BASIC_SIGNED_RESPONSE;
pub const XCN_OID_PKCS_7_DATA = CERTENROLL_OBJECTID._PKCS_7_DATA;
pub const XCN_OID_PKCS_7_SIGNED = CERTENROLL_OBJECTID._PKCS_7_SIGNED;
pub const XCN_OID_PKCS_7_ENVELOPED = CERTENROLL_OBJECTID._PKCS_7_ENVELOPED;
pub const XCN_OID_PKCS_7_SIGNEDANDENVELOPED = CERTENROLL_OBJECTID._PKCS_7_SIGNEDANDENVELOPED;
pub const XCN_OID_PKCS_7_DIGESTED = CERTENROLL_OBJECTID._PKCS_7_DIGESTED;
pub const XCN_OID_PKCS_7_ENCRYPTED = CERTENROLL_OBJECTID._PKCS_7_ENCRYPTED;
pub const XCN_OID_PKCS_9_CONTENT_TYPE = CERTENROLL_OBJECTID._PKCS_9_CONTENT_TYPE;
pub const XCN_OID_PKCS_9_MESSAGE_DIGEST = CERTENROLL_OBJECTID._PKCS_9_MESSAGE_DIGEST;
pub const XCN_OID_CERT_PROP_ID_PREFIX = CERTENROLL_OBJECTID._CERT_PROP_ID_PREFIX;
pub const XCN_OID_CERT_KEY_IDENTIFIER_PROP_ID = CERTENROLL_OBJECTID._CERT_KEY_IDENTIFIER_PROP_ID;
pub const XCN_OID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID = CERTENROLL_OBJECTID._CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID;
pub const XCN_OID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID = CERTENROLL_OBJECTID._CERT_SUBJECT_NAME_MD5_HASH_PROP_ID;
pub const XCN_OID_CERT_MD5_HASH_PROP_ID = CERTENROLL_OBJECTID._CERT_MD5_HASH_PROP_ID;
pub const XCN_OID_RSA_SHA256RSA = CERTENROLL_OBJECTID._RSA_SHA256RSA;
pub const XCN_OID_RSA_SHA384RSA = CERTENROLL_OBJECTID._RSA_SHA384RSA;
pub const XCN_OID_RSA_SHA512RSA = CERTENROLL_OBJECTID._RSA_SHA512RSA;
pub const XCN_OID_NIST_sha256 = CERTENROLL_OBJECTID._NIST_sha256;
pub const XCN_OID_NIST_sha384 = CERTENROLL_OBJECTID._NIST_sha384;
pub const XCN_OID_NIST_sha512 = CERTENROLL_OBJECTID._NIST_sha512;
pub const XCN_OID_RSA_MGF1 = CERTENROLL_OBJECTID._RSA_MGF1;
pub const XCN_OID_ECC_PUBLIC_KEY = CERTENROLL_OBJECTID._ECC_PUBLIC_KEY;
pub const XCN_OID_ECDSA_SHA1 = CERTENROLL_OBJECTID._ECDSA_SHA1;
pub const XCN_OID_ECDSA_SPECIFIED = CERTENROLL_OBJECTID._ECDSA_SPECIFIED;
pub const XCN_OID_ANY_ENHANCED_KEY_USAGE = CERTENROLL_OBJECTID._ANY_ENHANCED_KEY_USAGE;
pub const XCN_OID_RSA_SSA_PSS = CERTENROLL_OBJECTID._RSA_SSA_PSS;
pub const XCN_OID_ATTR_SUPPORTED_ALGORITHMS = CERTENROLL_OBJECTID._ATTR_SUPPORTED_ALGORITHMS;
pub const XCN_OID_ATTR_TPM_SECURITY_ASSERTIONS = CERTENROLL_OBJECTID._ATTR_TPM_SECURITY_ASSERTIONS;
pub const XCN_OID_ATTR_TPM_SPECIFICATION = CERTENROLL_OBJECTID._ATTR_TPM_SPECIFICATION;
pub const XCN_OID_CERT_DISALLOWED_FILETIME_PROP_ID = CERTENROLL_OBJECTID._CERT_DISALLOWED_FILETIME_PROP_ID;
pub const XCN_OID_CERT_SIGNATURE_HASH_PROP_ID = CERTENROLL_OBJECTID._CERT_SIGNATURE_HASH_PROP_ID;
pub const XCN_OID_CERT_STRONG_KEY_OS_1 = CERTENROLL_OBJECTID._CERT_STRONG_KEY_OS_1;
pub const XCN_OID_CERT_STRONG_KEY_OS_CURRENT = CERTENROLL_OBJECTID._CERT_STRONG_KEY_OS_CURRENT;
pub const XCN_OID_CERT_STRONG_KEY_OS_PREFIX = CERTENROLL_OBJECTID._CERT_STRONG_KEY_OS_PREFIX;
pub const XCN_OID_CERT_STRONG_SIGN_OS_1 = CERTENROLL_OBJECTID._CERT_STRONG_SIGN_OS_1;
pub const XCN_OID_CERT_STRONG_SIGN_OS_CURRENT = CERTENROLL_OBJECTID._CERT_STRONG_SIGN_OS_CURRENT;
pub const XCN_OID_CERT_STRONG_SIGN_OS_PREFIX = CERTENROLL_OBJECTID._CERT_STRONG_SIGN_OS_PREFIX;
pub const XCN_OID_DH_SINGLE_PASS_STDDH_SHA1_KDF = CERTENROLL_OBJECTID._DH_SINGLE_PASS_STDDH_SHA1_KDF;
pub const XCN_OID_DH_SINGLE_PASS_STDDH_SHA256_KDF = CERTENROLL_OBJECTID._DH_SINGLE_PASS_STDDH_SHA256_KDF;
pub const XCN_OID_DH_SINGLE_PASS_STDDH_SHA384_KDF = CERTENROLL_OBJECTID._DH_SINGLE_PASS_STDDH_SHA384_KDF;
pub const XCN_OID_DISALLOWED_HASH = CERTENROLL_OBJECTID._DISALLOWED_HASH;
pub const XCN_OID_DISALLOWED_LIST = CERTENROLL_OBJECTID._DISALLOWED_LIST;
pub const XCN_OID_ECC_CURVE_P256 = CERTENROLL_OBJECTID._ECC_CURVE_P256;
pub const XCN_OID_ECC_CURVE_P384 = CERTENROLL_OBJECTID._ECC_CURVE_P384;
pub const XCN_OID_ECC_CURVE_P521 = CERTENROLL_OBJECTID._ECC_CURVE_P521;
pub const XCN_OID_ECDSA_SHA256 = CERTENROLL_OBJECTID._ECDSA_SHA256;
pub const XCN_OID_ECDSA_SHA384 = CERTENROLL_OBJECTID._ECDSA_SHA384;
pub const XCN_OID_ECDSA_SHA512 = CERTENROLL_OBJECTID._ECDSA_SHA512;
pub const XCN_OID_ENROLL_CAXCHGCERT_HASH = CERTENROLL_OBJECTID._ENROLL_CAXCHGCERT_HASH;
pub const XCN_OID_ENROLL_EK_INFO = CERTENROLL_OBJECTID._ENROLL_EK_INFO;
pub const XCN_OID_ENROLL_EKPUB_CHALLENGE = CERTENROLL_OBJECTID._ENROLL_EKPUB_CHALLENGE;
pub const XCN_OID_ENROLL_EKVERIFYCERT = CERTENROLL_OBJECTID._ENROLL_EKVERIFYCERT;
pub const XCN_OID_ENROLL_EKVERIFYCREDS = CERTENROLL_OBJECTID._ENROLL_EKVERIFYCREDS;
pub const XCN_OID_ENROLL_EKVERIFYKEY = CERTENROLL_OBJECTID._ENROLL_EKVERIFYKEY;
pub const XCN_OID_EV_RDN_COUNTRY = CERTENROLL_OBJECTID._EV_RDN_COUNTRY;
pub const XCN_OID_EV_RDN_LOCALE = CERTENROLL_OBJECTID._EV_RDN_LOCALE;
pub const XCN_OID_EV_RDN_STATE_OR_PROVINCE = CERTENROLL_OBJECTID._EV_RDN_STATE_OR_PROVINCE;
pub const XCN_OID_INHIBIT_ANY_POLICY = CERTENROLL_OBJECTID._INHIBIT_ANY_POLICY;
pub const XCN_OID_INTERNATIONALIZED_EMAIL_ADDRESS = CERTENROLL_OBJECTID._INTERNATIONALIZED_EMAIL_ADDRESS;
pub const XCN_OID_KP_KERNEL_MODE_CODE_SIGNING = CERTENROLL_OBJECTID._KP_KERNEL_MODE_CODE_SIGNING;
pub const XCN_OID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING = CERTENROLL_OBJECTID._KP_KERNEL_MODE_HAL_EXTENSION_SIGNING;
pub const XCN_OID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING = CERTENROLL_OBJECTID._KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING;
pub const XCN_OID_KP_TPM_AIK_CERTIFICATE = CERTENROLL_OBJECTID._KP_TPM_AIK_CERTIFICATE;
pub const XCN_OID_KP_TPM_EK_CERTIFICATE = CERTENROLL_OBJECTID._KP_TPM_EK_CERTIFICATE;
pub const XCN_OID_KP_TPM_PLATFORM_CERTIFICATE = CERTENROLL_OBJECTID._KP_TPM_PLATFORM_CERTIFICATE;
pub const XCN_OID_NIST_AES128_CBC = CERTENROLL_OBJECTID._NIST_AES128_CBC;
pub const XCN_OID_NIST_AES128_WRAP = CERTENROLL_OBJECTID._NIST_AES128_WRAP;
pub const XCN_OID_NIST_AES192_CBC = CERTENROLL_OBJECTID._NIST_AES192_CBC;
pub const XCN_OID_NIST_AES192_WRAP = CERTENROLL_OBJECTID._NIST_AES192_WRAP;
pub const XCN_OID_NIST_AES256_CBC = CERTENROLL_OBJECTID._NIST_AES256_CBC;
pub const XCN_OID_NIST_AES256_WRAP = CERTENROLL_OBJECTID._NIST_AES256_WRAP;
pub const XCN_OID_PKCS_12_PbeIds = CERTENROLL_OBJECTID._PKCS_12_PbeIds;
pub const XCN_OID_PKCS_12_pbeWithSHA1And128BitRC2 = CERTENROLL_OBJECTID._PKCS_12_pbeWithSHA1And128BitRC2;
pub const XCN_OID_PKCS_12_pbeWithSHA1And128BitRC4 = CERTENROLL_OBJECTID._PKCS_12_pbeWithSHA1And128BitRC4;
pub const XCN_OID_PKCS_12_pbeWithSHA1And2KeyTripleDES = CERTENROLL_OBJECTID._PKCS_12_pbeWithSHA1And2KeyTripleDES;
pub const XCN_OID_PKCS_12_pbeWithSHA1And3KeyTripleDES = CERTENROLL_OBJECTID._PKCS_12_pbeWithSHA1And3KeyTripleDES;
pub const XCN_OID_PKCS_12_pbeWithSHA1And40BitRC2 = CERTENROLL_OBJECTID._PKCS_12_pbeWithSHA1And40BitRC2;
pub const XCN_OID_PKCS_12_pbeWithSHA1And40BitRC4 = CERTENROLL_OBJECTID._PKCS_12_pbeWithSHA1And40BitRC4;
pub const XCN_OID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID = CERTENROLL_OBJECTID._PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID;
pub const XCN_OID_PKINIT_KP_KDC = CERTENROLL_OBJECTID._PKINIT_KP_KDC;
pub const XCN_OID_PKIX_CA_REPOSITORY = CERTENROLL_OBJECTID._PKIX_CA_REPOSITORY;
pub const XCN_OID_PKIX_OCSP_NONCE = CERTENROLL_OBJECTID._PKIX_OCSP_NONCE;
pub const XCN_OID_PKIX_TIME_STAMPING = CERTENROLL_OBJECTID._PKIX_TIME_STAMPING;
pub const XCN_OID_QC_EU_COMPLIANCE = CERTENROLL_OBJECTID._QC_EU_COMPLIANCE;
pub const XCN_OID_QC_SSCD = CERTENROLL_OBJECTID._QC_SSCD;
pub const XCN_OID_QC_STATEMENTS_EXT = CERTENROLL_OBJECTID._QC_STATEMENTS_EXT;
pub const XCN_OID_RDN_TPM_MANUFACTURER = CERTENROLL_OBJECTID._RDN_TPM_MANUFACTURER;
pub const XCN_OID_RDN_TPM_MODEL = CERTENROLL_OBJECTID._RDN_TPM_MODEL;
pub const XCN_OID_RDN_TPM_VERSION = CERTENROLL_OBJECTID._RDN_TPM_VERSION;
pub const XCN_OID_REVOKED_LIST_SIGNER = CERTENROLL_OBJECTID._REVOKED_LIST_SIGNER;
pub const XCN_OID_RFC3161_counterSign = CERTENROLL_OBJECTID._RFC3161_counterSign;
pub const XCN_OID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION = CERTENROLL_OBJECTID._ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION;
pub const XCN_OID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION = CERTENROLL_OBJECTID._ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION;
pub const XCN_OID_ROOT_PROGRAM_FLAGS = CERTENROLL_OBJECTID._ROOT_PROGRAM_FLAGS;
pub const XCN_OID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL = CERTENROLL_OBJECTID._ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL;
pub const XCN_OID_RSA_PSPECIFIED = CERTENROLL_OBJECTID._RSA_PSPECIFIED;
pub const XCN_OID_RSAES_OAEP = CERTENROLL_OBJECTID._RSAES_OAEP;
pub const XCN_OID_SUBJECT_INFO_ACCESS = CERTENROLL_OBJECTID._SUBJECT_INFO_ACCESS;
pub const XCN_OID_TIMESTAMP_TOKEN = CERTENROLL_OBJECTID._TIMESTAMP_TOKEN;
pub const XCN_OID_ENROLL_SCEP_ERROR = CERTENROLL_OBJECTID._ENROLL_SCEP_ERROR;
pub const XCN_OIDVerisign_MessageType = CERTENROLL_OBJECTID.Verisign_MessageType;
pub const XCN_OIDVerisign_PkiStatus = CERTENROLL_OBJECTID.Verisign_PkiStatus;
pub const XCN_OIDVerisign_FailInfo = CERTENROLL_OBJECTID.Verisign_FailInfo;
pub const XCN_OIDVerisign_SenderNonce = CERTENROLL_OBJECTID.Verisign_SenderNonce;
pub const XCN_OIDVerisign_RecipientNonce = CERTENROLL_OBJECTID.Verisign_RecipientNonce;
pub const XCN_OIDVerisign_TransactionID = CERTENROLL_OBJECTID.Verisign_TransactionID;
pub const XCN_OID_ENROLL_ATTESTATION_CHALLENGE = CERTENROLL_OBJECTID._ENROLL_ATTESTATION_CHALLENGE;
pub const XCN_OID_ENROLL_ATTESTATION_STATEMENT = CERTENROLL_OBJECTID._ENROLL_ATTESTATION_STATEMENT;
pub const XCN_OID_ENROLL_ENCRYPTION_ALGORITHM = CERTENROLL_OBJECTID._ENROLL_ENCRYPTION_ALGORITHM;
pub const XCN_OID_ENROLL_KSP_NAME = CERTENROLL_OBJECTID._ENROLL_KSP_NAME;

pub const WebSecurityLevel = enum(i32) {
    Unsafe = 0,
    Safe = 1,
};
pub const LevelUnsafe = WebSecurityLevel.Unsafe;
pub const LevelSafe = WebSecurityLevel.Safe;

pub const EncodingType = enum(i32) {
    BASE64HEADER = 0,
    BASE64 = 1,
    BINARY = 2,
    BASE64REQUESTHEADER = 3,
    HEX = 4,
    HEXASCII = 5,
    BASE64_ANY = 6,
    ANY = 7,
    HEX_ANY = 8,
    BASE64X509CRLHEADER = 9,
    HEXADDR = 10,
    HEXASCIIADDR = 11,
    HEXRAW = 12,
    BASE64URI = 13,
    ENCODEMASK = 255,
    CHAIN = 256,
    TEXT = 512,
    PERCENTESCAPE = 134217728,
    HASHDATA = 268435456,
    STRICT = 536870912,
    NOCRLF = 1073741824,
    NOCR = -2147483648,
};
pub const XCN_CRYPT_STRING_BASE64HEADER = EncodingType.BASE64HEADER;
pub const XCN_CRYPT_STRING_BASE64 = EncodingType.BASE64;
pub const XCN_CRYPT_STRING_BINARY = EncodingType.BINARY;
pub const XCN_CRYPT_STRING_BASE64REQUESTHEADER = EncodingType.BASE64REQUESTHEADER;
pub const XCN_CRYPT_STRING_HEX = EncodingType.HEX;
pub const XCN_CRYPT_STRING_HEXASCII = EncodingType.HEXASCII;
pub const XCN_CRYPT_STRING_BASE64_ANY = EncodingType.BASE64_ANY;
pub const XCN_CRYPT_STRING_ANY = EncodingType.ANY;
pub const XCN_CRYPT_STRING_HEX_ANY = EncodingType.HEX_ANY;
pub const XCN_CRYPT_STRING_BASE64X509CRLHEADER = EncodingType.BASE64X509CRLHEADER;
pub const XCN_CRYPT_STRING_HEXADDR = EncodingType.HEXADDR;
pub const XCN_CRYPT_STRING_HEXASCIIADDR = EncodingType.HEXASCIIADDR;
pub const XCN_CRYPT_STRING_HEXRAW = EncodingType.HEXRAW;
pub const XCN_CRYPT_STRING_BASE64URI = EncodingType.BASE64URI;
pub const XCN_CRYPT_STRING_ENCODEMASK = EncodingType.ENCODEMASK;
pub const XCN_CRYPT_STRING_CHAIN = EncodingType.CHAIN;
pub const XCN_CRYPT_STRING_TEXT = EncodingType.TEXT;
pub const XCN_CRYPT_STRING_PERCENTESCAPE = EncodingType.PERCENTESCAPE;
pub const XCN_CRYPT_STRING_HASHDATA = EncodingType.HASHDATA;
pub const XCN_CRYPT_STRING_STRICT = EncodingType.STRICT;
pub const XCN_CRYPT_STRING_NOCRLF = EncodingType.NOCRLF;
pub const XCN_CRYPT_STRING_NOCR = EncodingType.NOCR;

pub const PFXExportOptions = enum(i32) {
    EEOnly = 0,
    ChainNoRoot = 1,
    ChainWithRoot = 2,
};
pub const PFXExportEEOnly = PFXExportOptions.EEOnly;
pub const PFXExportChainNoRoot = PFXExportOptions.ChainNoRoot;
pub const PFXExportChainWithRoot = PFXExportOptions.ChainWithRoot;

pub const ObjectIdGroupId = enum(i32) {
    ANY_GROUP_ID = 0,
    HASH_ALG_OID_GROUP_ID = 1,
    ENCRYPT_ALG_OID_GROUP_ID = 2,
    PUBKEY_ALG_OID_GROUP_ID = 3,
    SIGN_ALG_OID_GROUP_ID = 4,
    RDN_ATTR_OID_GROUP_ID = 5,
    EXT_OR_ATTR_OID_GROUP_ID = 6,
    ENHKEY_USAGE_OID_GROUP_ID = 7,
    POLICY_OID_GROUP_ID = 8,
    TEMPLATE_OID_GROUP_ID = 9,
    KDF_OID_GROUP_ID = 10,
    // LAST_OID_GROUP_ID = 10, this enum value conflicts with KDF_OID_GROUP_ID
    // FIRST_ALG_OID_GROUP_ID = 1, this enum value conflicts with HASH_ALG_OID_GROUP_ID
    // LAST_ALG_OID_GROUP_ID = 4, this enum value conflicts with SIGN_ALG_OID_GROUP_ID
    GROUP_ID_MASK = 65535,
    OID_PREFER_CNG_ALGID_FLAG = 1073741824,
    OID_DISABLE_SEARCH_DS_FLAG = -2147483648,
    OID_INFO_OID_GROUP_BIT_LEN_MASK = 268369920,
    OID_INFO_OID_GROUP_BIT_LEN_SHIFT = 16,
    // KEY_LENGTH_MASK = 268369920, this enum value conflicts with OID_INFO_OID_GROUP_BIT_LEN_MASK
};
pub const XCN_CRYPT_ANY_GROUP_ID = ObjectIdGroupId.ANY_GROUP_ID;
pub const XCN_CRYPT_HASH_ALG_OID_GROUP_ID = ObjectIdGroupId.HASH_ALG_OID_GROUP_ID;
pub const XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_ID = ObjectIdGroupId.ENCRYPT_ALG_OID_GROUP_ID;
pub const XCN_CRYPT_PUBKEY_ALG_OID_GROUP_ID = ObjectIdGroupId.PUBKEY_ALG_OID_GROUP_ID;
pub const XCN_CRYPT_SIGN_ALG_OID_GROUP_ID = ObjectIdGroupId.SIGN_ALG_OID_GROUP_ID;
pub const XCN_CRYPT_RDN_ATTR_OID_GROUP_ID = ObjectIdGroupId.RDN_ATTR_OID_GROUP_ID;
pub const XCN_CRYPT_EXT_OR_ATTR_OID_GROUP_ID = ObjectIdGroupId.EXT_OR_ATTR_OID_GROUP_ID;
pub const XCN_CRYPT_ENHKEY_USAGE_OID_GROUP_ID = ObjectIdGroupId.ENHKEY_USAGE_OID_GROUP_ID;
pub const XCN_CRYPT_POLICY_OID_GROUP_ID = ObjectIdGroupId.POLICY_OID_GROUP_ID;
pub const XCN_CRYPT_TEMPLATE_OID_GROUP_ID = ObjectIdGroupId.TEMPLATE_OID_GROUP_ID;
pub const XCN_CRYPT_KDF_OID_GROUP_ID = ObjectIdGroupId.KDF_OID_GROUP_ID;
pub const XCN_CRYPT_LAST_OID_GROUP_ID = ObjectIdGroupId.KDF_OID_GROUP_ID;
pub const XCN_CRYPT_FIRST_ALG_OID_GROUP_ID = ObjectIdGroupId.HASH_ALG_OID_GROUP_ID;
pub const XCN_CRYPT_LAST_ALG_OID_GROUP_ID = ObjectIdGroupId.SIGN_ALG_OID_GROUP_ID;
pub const XCN_CRYPT_GROUP_ID_MASK = ObjectIdGroupId.GROUP_ID_MASK;
pub const XCN_CRYPT_OID_PREFER_CNG_ALGID_FLAG = ObjectIdGroupId.OID_PREFER_CNG_ALGID_FLAG;
pub const XCN_CRYPT_OID_DISABLE_SEARCH_DS_FLAG = ObjectIdGroupId.OID_DISABLE_SEARCH_DS_FLAG;
pub const XCN_CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK = ObjectIdGroupId.OID_INFO_OID_GROUP_BIT_LEN_MASK;
pub const XCN_CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT = ObjectIdGroupId.OID_INFO_OID_GROUP_BIT_LEN_SHIFT;
pub const XCN_CRYPT_KEY_LENGTH_MASK = ObjectIdGroupId.OID_INFO_OID_GROUP_BIT_LEN_MASK;

pub const ObjectIdPublicKeyFlags = enum(i32) {
    ANY = 0,
    SIGN_KEY_FLAG = -2147483648,
    ENCRYPT_KEY_FLAG = 1073741824,
};
pub const XCN_CRYPT_OID_INFO_PUBKEY_ANY = ObjectIdPublicKeyFlags.ANY;
pub const XCN_CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = ObjectIdPublicKeyFlags.SIGN_KEY_FLAG;
pub const XCN_CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = ObjectIdPublicKeyFlags.ENCRYPT_KEY_FLAG;

pub const AlgorithmFlags = enum(i32) {
    None = 0,
    Wrap = 1,
};
pub const AlgorithmFlagsNone = AlgorithmFlags.None;
pub const AlgorithmFlagsWrap = AlgorithmFlags.Wrap;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IObjectId_Value = Guid.initString("728ab300-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IObjectId = &IID_IObjectId_Value;
pub const IObjectId = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        InitializeFromName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectId,
                Name: CERTENROLL_OBJECTID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectId,
                Name: CERTENROLL_OBJECTID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectId,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectId,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromAlgorithmName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectId,
                GroupId: ObjectIdGroupId,
                KeyFlags: ObjectIdPublicKeyFlags,
                AlgFlags: AlgorithmFlags,
                strAlgorithmName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectId,
                GroupId: ObjectIdGroupId,
                KeyFlags: ObjectIdPublicKeyFlags,
                AlgFlags: AlgorithmFlags,
                strAlgorithmName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectId,
                pValue: ?*CERTENROLL_OBJECTID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectId,
                pValue: ?*CERTENROLL_OBJECTID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectId,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectId,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAlgorithmName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectId,
                GroupId: ObjectIdGroupId,
                KeyFlags: ObjectIdPublicKeyFlags,
                pstrAlgorithmName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectId,
                GroupId: ObjectIdGroupId,
                KeyFlags: ObjectIdPublicKeyFlags,
                pstrAlgorithmName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_InitializeFromName(self: *const T, Name: CERTENROLL_OBJECTID) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).InitializeFromName(@as(*const IObjectId, @ptrCast(self)), Name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_InitializeFromValue(self: *const T, strValue: ?BSTR) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).InitializeFromValue(@as(*const IObjectId, @ptrCast(self)), strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_InitializeFromAlgorithmName(self: *const T, GroupId: ObjectIdGroupId, KeyFlags: ObjectIdPublicKeyFlags, AlgFlags: AlgorithmFlags, strAlgorithmName: ?BSTR) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).InitializeFromAlgorithmName(@as(*const IObjectId, @ptrCast(self)), GroupId, KeyFlags, AlgFlags, strAlgorithmName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_get_Name(self: *const T, pValue: ?*CERTENROLL_OBJECTID) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IObjectId, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_get_FriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).get_FriendlyName(@as(*const IObjectId, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_put_FriendlyName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).put_FriendlyName(@as(*const IObjectId, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_get_Value(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).get_Value(@as(*const IObjectId, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectId_GetAlgorithmName(self: *const T, GroupId: ObjectIdGroupId, KeyFlags: ObjectIdPublicKeyFlags, pstrAlgorithmName: ?*?BSTR) HRESULT {
                return @as(*const IObjectId.VTable, @ptrCast(self.vtable)).GetAlgorithmName(@as(*const IObjectId, @ptrCast(self)), GroupId, KeyFlags, pstrAlgorithmName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IObjectIds_Value = Guid.initString("728ab301-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IObjectIds = &IID_IObjectIds_Value;
pub const IObjectIds = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectIds,
                Index: i32,
                pVal: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectIds,
                Index: i32,
                pVal: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectIds,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectIds,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IObjectIds,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IObjectIds,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectIds,
                pVal: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectIds,
                pVal: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectIds,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectIds,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IObjectIds,
                pValue: ?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IObjectIds,
                pValue: ?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IObjectId) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IObjectIds, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IObjectIds, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IObjectIds, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_Add(self: *const T, pVal: ?*IObjectId) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).Add(@as(*const IObjectIds, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).Remove(@as(*const IObjectIds, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_Clear(self: *const T) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).Clear(@as(*const IObjectIds, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IObjectIds_AddRange(self: *const T, pValue: ?*IObjectIds) HRESULT {
                return @as(*const IObjectIds.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IObjectIds, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IBinaryConverter_Value = Guid.initString("728ab302-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IBinaryConverter = &IID_IBinaryConverter_Value;
pub const IBinaryConverter = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        StringToString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IBinaryConverter,
                strEncodedIn: ?BSTR,
                EncodingIn: EncodingType,
                Encoding: EncodingType,
                pstrEncoded: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IBinaryConverter,
                strEncodedIn: ?BSTR,
                EncodingIn: EncodingType,
                Encoding: EncodingType,
                pstrEncoded: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        VariantByteArrayToString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IBinaryConverter,
                pvarByteArray: ?*VARIANT,
                Encoding: EncodingType,
                pstrEncoded: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IBinaryConverter,
                pvarByteArray: ?*VARIANT,
                Encoding: EncodingType,
                pstrEncoded: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        StringToVariantByteArray: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IBinaryConverter,
                strEncoded: ?BSTR,
                Encoding: EncodingType,
                pvarByteArray: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IBinaryConverter,
                strEncoded: ?BSTR,
                Encoding: EncodingType,
                pvarByteArray: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IBinaryConverter_StringToString(self: *const T, strEncodedIn: ?BSTR, EncodingIn: EncodingType, Encoding: EncodingType, pstrEncoded: ?*?BSTR) HRESULT {
                return @as(*const IBinaryConverter.VTable, @ptrCast(self.vtable)).StringToString(@as(*const IBinaryConverter, @ptrCast(self)), strEncodedIn, EncodingIn, Encoding, pstrEncoded);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IBinaryConverter_VariantByteArrayToString(self: *const T, pvarByteArray: ?*VARIANT, Encoding: EncodingType, pstrEncoded: ?*?BSTR) HRESULT {
                return @as(*const IBinaryConverter.VTable, @ptrCast(self.vtable)).VariantByteArrayToString(@as(*const IBinaryConverter, @ptrCast(self)), pvarByteArray, Encoding, pstrEncoded);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IBinaryConverter_StringToVariantByteArray(self: *const T, strEncoded: ?BSTR, Encoding: EncodingType, pvarByteArray: ?*VARIANT) HRESULT {
                return @as(*const IBinaryConverter.VTable, @ptrCast(self.vtable)).StringToVariantByteArray(@as(*const IBinaryConverter, @ptrCast(self)), strEncoded, Encoding, pvarByteArray);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IBinaryConverter2_Value = Guid.initString("8d7928b4-4e17-428d-9a17-728df00d1b2b");
pub const IID_IBinaryConverter2 = &IID_IBinaryConverter2_Value;
pub const IBinaryConverter2 = extern struct {
    pub const VTable = extern struct {
        base: IBinaryConverter.VTable,
        StringArrayToVariantArray: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IBinaryConverter2,
                pvarStringArray: ?*VARIANT,
                pvarVariantArray: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IBinaryConverter2,
                pvarStringArray: ?*VARIANT,
                pvarVariantArray: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        VariantArrayToStringArray: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IBinaryConverter2,
                pvarVariantArray: ?*VARIANT,
                pvarStringArray: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IBinaryConverter2,
                pvarVariantArray: ?*VARIANT,
                pvarStringArray: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IBinaryConverter.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IBinaryConverter2_StringArrayToVariantArray(self: *const T, pvarStringArray: ?*VARIANT, pvarVariantArray: ?*VARIANT) HRESULT {
                return @as(*const IBinaryConverter2.VTable, @ptrCast(self.vtable)).StringArrayToVariantArray(@as(*const IBinaryConverter2, @ptrCast(self)), pvarStringArray, pvarVariantArray);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IBinaryConverter2_VariantArrayToStringArray(self: *const T, pvarVariantArray: ?*VARIANT, pvarStringArray: ?*VARIANT) HRESULT {
                return @as(*const IBinaryConverter2.VTable, @ptrCast(self.vtable)).VariantArrayToStringArray(@as(*const IBinaryConverter2, @ptrCast(self)), pvarVariantArray, pvarStringArray);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X500NameFlags = enum(i32) {
    NAME_STR_NONE = 0,
    SIMPLE_NAME_STR = 1,
    OID_NAME_STR = 2,
    X500_NAME_STR = 3,
    XML_NAME_STR = 4,
    NAME_STR_SEMICOLON_FLAG = 1073741824,
    NAME_STR_NO_PLUS_FLAG = 536870912,
    NAME_STR_NO_QUOTING_FLAG = 268435456,
    NAME_STR_CRLF_FLAG = 134217728,
    NAME_STR_COMMA_FLAG = 67108864,
    NAME_STR_REVERSE_FLAG = 33554432,
    NAME_STR_FORWARD_FLAG = 16777216,
    NAME_STR_AMBIGUOUS_SEPARATOR_FLAGS = 1275068416,
    NAME_STR_DISABLE_IE4_UTF8_FLAG = 65536,
    NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072,
    NAME_STR_ENABLE_UTF8_UNICODE_FLAG = 262144,
    NAME_STR_FORCE_UTF8_DIR_STR_FLAG = 524288,
    NAME_STR_DISABLE_UTF8_DIR_STR_FLAG = 1048576,
    NAME_STR_ENABLE_PUNYCODE_FLAG = 2097152,
    NAME_STR_DS_ESCAPED = 8388608,
};
pub const XCN_CERT_NAME_STR_NONE = X500NameFlags.NAME_STR_NONE;
pub const XCN_CERT_SIMPLE_NAME_STR = X500NameFlags.SIMPLE_NAME_STR;
pub const XCN_CERT_OID_NAME_STR = X500NameFlags.OID_NAME_STR;
pub const XCN_CERT_X500_NAME_STR = X500NameFlags.X500_NAME_STR;
pub const XCN_CERT_XML_NAME_STR = X500NameFlags.XML_NAME_STR;
pub const XCN_CERT_NAME_STR_SEMICOLON_FLAG = X500NameFlags.NAME_STR_SEMICOLON_FLAG;
pub const XCN_CERT_NAME_STR_NO_PLUS_FLAG = X500NameFlags.NAME_STR_NO_PLUS_FLAG;
pub const XCN_CERT_NAME_STR_NO_QUOTING_FLAG = X500NameFlags.NAME_STR_NO_QUOTING_FLAG;
pub const XCN_CERT_NAME_STR_CRLF_FLAG = X500NameFlags.NAME_STR_CRLF_FLAG;
pub const XCN_CERT_NAME_STR_COMMA_FLAG = X500NameFlags.NAME_STR_COMMA_FLAG;
pub const XCN_CERT_NAME_STR_REVERSE_FLAG = X500NameFlags.NAME_STR_REVERSE_FLAG;
pub const XCN_CERT_NAME_STR_FORWARD_FLAG = X500NameFlags.NAME_STR_FORWARD_FLAG;
pub const XCN_CERT_NAME_STR_AMBIGUOUS_SEPARATOR_FLAGS = X500NameFlags.NAME_STR_AMBIGUOUS_SEPARATOR_FLAGS;
pub const XCN_CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG = X500NameFlags.NAME_STR_DISABLE_IE4_UTF8_FLAG;
pub const XCN_CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = X500NameFlags.NAME_STR_ENABLE_T61_UNICODE_FLAG;
pub const XCN_CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG = X500NameFlags.NAME_STR_ENABLE_UTF8_UNICODE_FLAG;
pub const XCN_CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG = X500NameFlags.NAME_STR_FORCE_UTF8_DIR_STR_FLAG;
pub const XCN_CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG = X500NameFlags.NAME_STR_DISABLE_UTF8_DIR_STR_FLAG;
pub const XCN_CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = X500NameFlags.NAME_STR_ENABLE_PUNYCODE_FLAG;
pub const XCN_CERT_NAME_STR_DS_ESCAPED = X500NameFlags.NAME_STR_DS_ESCAPED;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX500DistinguishedName_Value = Guid.initString("728ab303-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX500DistinguishedName = &IID_IX500DistinguishedName_Value;
pub const IX500DistinguishedName = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX500DistinguishedName,
                strEncodedName: ?BSTR,
                Encoding: EncodingType,
                NameFlags: X500NameFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX500DistinguishedName,
                strEncodedName: ?BSTR,
                Encoding: EncodingType,
                NameFlags: X500NameFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX500DistinguishedName,
                strName: ?BSTR,
                NameFlags: X500NameFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX500DistinguishedName,
                strName: ?BSTR,
                NameFlags: X500NameFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX500DistinguishedName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX500DistinguishedName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncodedName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX500DistinguishedName,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX500DistinguishedName,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX500DistinguishedName_Decode(self: *const T, strEncodedName: ?BSTR, Encoding: EncodingType, NameFlags: X500NameFlags) HRESULT {
                return @as(*const IX500DistinguishedName.VTable, @ptrCast(self.vtable)).Decode(@as(*const IX500DistinguishedName, @ptrCast(self)), strEncodedName, Encoding, NameFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX500DistinguishedName_Encode(self: *const T, strName: ?BSTR, NameFlags: X500NameFlags) HRESULT {
                return @as(*const IX500DistinguishedName.VTable, @ptrCast(self.vtable)).Encode(@as(*const IX500DistinguishedName, @ptrCast(self)), strName, NameFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX500DistinguishedName_get_Name(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX500DistinguishedName.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IX500DistinguishedName, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX500DistinguishedName_get_EncodedName(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX500DistinguishedName.VTable, @ptrCast(self.vtable)).get_EncodedName(@as(*const IX500DistinguishedName, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509CertificateEnrollmentContext = enum(i32) {
    None = 0,
    User = 1,
    Machine = 2,
    AdministratorForceMachine = 3,
};
pub const ContextNone = X509CertificateEnrollmentContext.None;
pub const ContextUser = X509CertificateEnrollmentContext.User;
pub const ContextMachine = X509CertificateEnrollmentContext.Machine;
pub const ContextAdministratorForceMachine = X509CertificateEnrollmentContext.AdministratorForceMachine;

pub const EnrollmentEnrollStatus = enum(i32) {
    ed = 1,
    Pended = 2,
    UIDeferredEnrollmentRequired = 4,
    Error = 16,
    Unknown = 32,
    Skipped = 64,
    Denied = 256,
};
pub const Enrolled = EnrollmentEnrollStatus.ed;
pub const EnrollPended = EnrollmentEnrollStatus.Pended;
pub const EnrollUIDeferredEnrollmentRequired = EnrollmentEnrollStatus.UIDeferredEnrollmentRequired;
pub const EnrollError = EnrollmentEnrollStatus.Error;
pub const EnrollUnknown = EnrollmentEnrollStatus.Unknown;
pub const EnrollSkipped = EnrollmentEnrollStatus.Skipped;
pub const EnrollDenied = EnrollmentEnrollStatus.Denied;

pub const EnrollmentSelectionStatus = enum(i32) {
    No = 0,
    Yes = 1,
};
pub const SelectedNo = EnrollmentSelectionStatus.No;
pub const SelectedYes = EnrollmentSelectionStatus.Yes;

pub const EnrollmentDisplayStatus = enum(i32) {
    No = 0,
    Yes = 1,
};
pub const DisplayNo = EnrollmentDisplayStatus.No;
pub const DisplayYes = EnrollmentDisplayStatus.Yes;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509EnrollmentStatus_Value = Guid.initString("728ab304-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509EnrollmentStatus = &IID_IX509EnrollmentStatus_Value;
pub const IX509EnrollmentStatus = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        AppendText: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                strText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                strText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Text: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Text: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Selected: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*EnrollmentSelectionStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*EnrollmentSelectionStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Selected: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                Value: EnrollmentSelectionStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                Value: EnrollmentSelectionStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Display: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*EnrollmentDisplayStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*EnrollmentDisplayStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Display: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                Value: EnrollmentDisplayStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                Value: EnrollmentDisplayStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Status: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*EnrollmentEnrollStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*EnrollmentEnrollStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Status: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                Value: EnrollmentEnrollStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                Value: EnrollmentEnrollStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Error: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Error: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                Value: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                Value: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ErrorText: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentStatus,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_AppendText(self: *const T, strText: ?BSTR) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).AppendText(@as(*const IX509EnrollmentStatus, @ptrCast(self)), strText);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_get_Text(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).get_Text(@as(*const IX509EnrollmentStatus, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_put_Text(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).put_Text(@as(*const IX509EnrollmentStatus, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_get_Selected(self: *const T, pValue: ?*EnrollmentSelectionStatus) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).get_Selected(@as(*const IX509EnrollmentStatus, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_put_Selected(self: *const T, Value: EnrollmentSelectionStatus) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).put_Selected(@as(*const IX509EnrollmentStatus, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_get_Display(self: *const T, pValue: ?*EnrollmentDisplayStatus) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).get_Display(@as(*const IX509EnrollmentStatus, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_put_Display(self: *const T, Value: EnrollmentDisplayStatus) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).put_Display(@as(*const IX509EnrollmentStatus, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_get_Status(self: *const T, pValue: ?*EnrollmentEnrollStatus) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IX509EnrollmentStatus, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_put_Status(self: *const T, Value: EnrollmentEnrollStatus) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).put_Status(@as(*const IX509EnrollmentStatus, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_get_Error(self: *const T, pValue: ?*HRESULT) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).get_Error(@as(*const IX509EnrollmentStatus, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_put_Error(self: *const T, Value: HRESULT) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).put_Error(@as(*const IX509EnrollmentStatus, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentStatus_get_ErrorText(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentStatus.VTable, @ptrCast(self.vtable)).get_ErrorText(@as(*const IX509EnrollmentStatus, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509ProviderType = enum(i32) {
    NONE = 0,
    RSA_FULL = 1,
    RSA_SIG = 2,
    DSS = 3,
    FORTEZZA = 4,
    MS_EXCHANGE = 5,
    SSL = 6,
    RSA_SCHANNEL = 12,
    DSS_DH = 13,
    EC_ECDSA_SIG = 14,
    EC_ECNRA_SIG = 15,
    EC_ECDSA_FULL = 16,
    EC_ECNRA_FULL = 17,
    DH_SCHANNEL = 18,
    SPYRUS_LYNKS = 20,
    RNG = 21,
    INTEL_SEC = 22,
    REPLACE_OWF = 23,
    RSA_AES = 24,
};
pub const XCN_PROV_NONE = X509ProviderType.NONE;
pub const XCN_PROV_RSA_FULL = X509ProviderType.RSA_FULL;
pub const XCN_PROV_RSA_SIG = X509ProviderType.RSA_SIG;
pub const XCN_PROV_DSS = X509ProviderType.DSS;
pub const XCN_PROV_FORTEZZA = X509ProviderType.FORTEZZA;
pub const XCN_PROV_MS_EXCHANGE = X509ProviderType.MS_EXCHANGE;
pub const XCN_PROV_SSL = X509ProviderType.SSL;
pub const XCN_PROV_RSA_SCHANNEL = X509ProviderType.RSA_SCHANNEL;
pub const XCN_PROV_DSS_DH = X509ProviderType.DSS_DH;
pub const XCN_PROV_EC_ECDSA_SIG = X509ProviderType.EC_ECDSA_SIG;
pub const XCN_PROV_EC_ECNRA_SIG = X509ProviderType.EC_ECNRA_SIG;
pub const XCN_PROV_EC_ECDSA_FULL = X509ProviderType.EC_ECDSA_FULL;
pub const XCN_PROV_EC_ECNRA_FULL = X509ProviderType.EC_ECNRA_FULL;
pub const XCN_PROV_DH_SCHANNEL = X509ProviderType.DH_SCHANNEL;
pub const XCN_PROV_SPYRUS_LYNKS = X509ProviderType.SPYRUS_LYNKS;
pub const XCN_PROV_RNG = X509ProviderType.RNG;
pub const XCN_PROV_INTEL_SEC = X509ProviderType.INTEL_SEC;
pub const XCN_PROV_REPLACE_OWF = X509ProviderType.REPLACE_OWF;
pub const XCN_PROV_RSA_AES = X509ProviderType.RSA_AES;

pub const AlgorithmType = enum(i32) {
    UNKNOWN_INTERFACE = 0,
    CIPHER_INTERFACE = 1,
    HASH_INTERFACE = 2,
    ASYMMETRIC_ENCRYPTION_INTERFACE = 3,
    SIGNATURE_INTERFACE = 5,
    SECRET_AGREEMENT_INTERFACE = 4,
    RNG_INTERFACE = 6,
    KEY_DERIVATION_INTERFACE = 7,
};
pub const XCN_BCRYPT_UNKNOWN_INTERFACE = AlgorithmType.UNKNOWN_INTERFACE;
pub const XCN_BCRYPT_CIPHER_INTERFACE = AlgorithmType.CIPHER_INTERFACE;
pub const XCN_BCRYPT_HASH_INTERFACE = AlgorithmType.HASH_INTERFACE;
pub const XCN_BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE = AlgorithmType.ASYMMETRIC_ENCRYPTION_INTERFACE;
pub const XCN_BCRYPT_SIGNATURE_INTERFACE = AlgorithmType.SIGNATURE_INTERFACE;
pub const XCN_BCRYPT_SECRET_AGREEMENT_INTERFACE = AlgorithmType.SECRET_AGREEMENT_INTERFACE;
pub const XCN_BCRYPT_RNG_INTERFACE = AlgorithmType.RNG_INTERFACE;
pub const XCN_BCRYPT_KEY_DERIVATION_INTERFACE = AlgorithmType.KEY_DERIVATION_INTERFACE;

pub const AlgorithmOperationFlags = enum(i32) {
    NO_OPERATION = 0,
    CIPHER_OPERATION = 1,
    HASH_OPERATION = 2,
    ASYMMETRIC_ENCRYPTION_OPERATION = 4,
    SECRET_AGREEMENT_OPERATION = 8,
    SIGNATURE_OPERATION = 16,
    RNG_OPERATION = 32,
    KEY_DERIVATION_OPERATION = 64,
    ANY_ASYMMETRIC_OPERATION = 28,
    PREFER_SIGNATURE_ONLY_OPERATION = 2097152,
    PREFER_NON_SIGNATURE_OPERATION = 4194304,
    EXACT_MATCH_OPERATION = 8388608,
    PREFERENCE_MASK_OPERATION = 14680064,
};
pub const XCN_NCRYPT_NO_OPERATION = AlgorithmOperationFlags.NO_OPERATION;
pub const XCN_NCRYPT_CIPHER_OPERATION = AlgorithmOperationFlags.CIPHER_OPERATION;
pub const XCN_NCRYPT_HASH_OPERATION = AlgorithmOperationFlags.HASH_OPERATION;
pub const XCN_NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION = AlgorithmOperationFlags.ASYMMETRIC_ENCRYPTION_OPERATION;
pub const XCN_NCRYPT_SECRET_AGREEMENT_OPERATION = AlgorithmOperationFlags.SECRET_AGREEMENT_OPERATION;
pub const XCN_NCRYPT_SIGNATURE_OPERATION = AlgorithmOperationFlags.SIGNATURE_OPERATION;
pub const XCN_NCRYPT_RNG_OPERATION = AlgorithmOperationFlags.RNG_OPERATION;
pub const XCN_NCRYPT_KEY_DERIVATION_OPERATION = AlgorithmOperationFlags.KEY_DERIVATION_OPERATION;
pub const XCN_NCRYPT_ANY_ASYMMETRIC_OPERATION = AlgorithmOperationFlags.ANY_ASYMMETRIC_OPERATION;
pub const XCN_NCRYPT_PREFER_SIGNATURE_ONLY_OPERATION = AlgorithmOperationFlags.PREFER_SIGNATURE_ONLY_OPERATION;
pub const XCN_NCRYPT_PREFER_NON_SIGNATURE_OPERATION = AlgorithmOperationFlags.PREFER_NON_SIGNATURE_OPERATION;
pub const XCN_NCRYPT_EXACT_MATCH_OPERATION = AlgorithmOperationFlags.EXACT_MATCH_OPERATION;
pub const XCN_NCRYPT_PREFERENCE_MASK_OPERATION = AlgorithmOperationFlags.PREFERENCE_MASK_OPERATION;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICspAlgorithm_Value = Guid.initString("728ab305-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICspAlgorithm = &IID_ICspAlgorithm_Value;
pub const ICspAlgorithm = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetAlgorithmOid: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspAlgorithm,
                Length: i32,
                AlgFlags: AlgorithmFlags,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspAlgorithm,
                Length: i32,
                AlgFlags: AlgorithmFlags,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DefaultLength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncrementLength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LongName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Valid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaxLength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinLength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Type: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*AlgorithmType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*AlgorithmType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Operations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithm,
                pValue: ?*AlgorithmOperationFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithm,
                pValue: ?*AlgorithmOperationFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_GetAlgorithmOid(self: *const T, Length: i32, AlgFlags: AlgorithmFlags, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).GetAlgorithmOid(@as(*const ICspAlgorithm, @ptrCast(self)), Length, AlgFlags, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_DefaultLength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_DefaultLength(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_IncrementLength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_IncrementLength(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_LongName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_LongName(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_Valid(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_Valid(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_MaxLength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_MaxLength(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_MinLength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_MinLength(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_Name(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_Name(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_Type(self: *const T, pValue: ?*AlgorithmType) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_Type(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithm_get_Operations(self: *const T, pValue: ?*AlgorithmOperationFlags) HRESULT {
                return @as(*const ICspAlgorithm.VTable, @ptrCast(self.vtable)).get_Operations(@as(*const ICspAlgorithm, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICspAlgorithms_Value = Guid.initString("728ab306-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICspAlgorithms = &IID_ICspAlgorithms_Value;
pub const ICspAlgorithms = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithms,
                Index: i32,
                pVal: ?*?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithms,
                Index: i32,
                pVal: ?*?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithms,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithms,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithms,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithms,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspAlgorithms,
                pVal: ?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspAlgorithms,
                pVal: ?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspAlgorithms,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspAlgorithms,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspAlgorithms,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspAlgorithms,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithms,
                strName: ?BSTR,
                ppValue: ?*?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithms,
                strName: ?BSTR,
                ppValue: ?*?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IndexByObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspAlgorithms,
                pObjectId: ?*IObjectId,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspAlgorithms,
                pObjectId: ?*IObjectId,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICspAlgorithm) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICspAlgorithms, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICspAlgorithms, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICspAlgorithms, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_Add(self: *const T, pVal: ?*ICspAlgorithm) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).Add(@as(*const ICspAlgorithms, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICspAlgorithms, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_Clear(self: *const T) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICspAlgorithms, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_get_ItemByName(self: *const T, strName: ?BSTR, ppValue: ?*?*ICspAlgorithm) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const ICspAlgorithms, @ptrCast(self)), strName, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspAlgorithms_get_IndexByObjectId(self: *const T, pObjectId: ?*IObjectId, pIndex: ?*i32) HRESULT {
                return @as(*const ICspAlgorithms.VTable, @ptrCast(self.vtable)).get_IndexByObjectId(@as(*const ICspAlgorithms, @ptrCast(self)), pObjectId, pIndex);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509KeySpec = enum(i32) {
    NONE = 0,
    KEYEXCHANGE = 1,
    SIGNATURE = 2,
};
pub const XCN_AT_NONE = X509KeySpec.NONE;
pub const XCN_AT_KEYEXCHANGE = X509KeySpec.KEYEXCHANGE;
pub const XCN_AT_SIGNATURE = X509KeySpec.SIGNATURE;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICspInformation_Value = Guid.initString("728ab307-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICspInformation = &IID_ICspInformation_Value;
pub const ICspInformation = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        InitializeFromName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformation,
                strName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformation,
                strName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromType: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformation,
                Type: X509ProviderType,
                pAlgorithm: ?*IObjectId,
                MachineContext: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformation,
                Type: X509ProviderType,
                pAlgorithm: ?*IObjectId,
                MachineContext: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspAlgorithms: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                ppValue: ?*?*ICspAlgorithms,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                ppValue: ?*?*ICspAlgorithms,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HasHardwareRandomNumberGenerator: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IsHardwareDevice: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IsRemovable: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IsSoftwareDevice: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Valid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaxKeyContainerNameLength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Type: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*X509ProviderType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*X509ProviderType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Version: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IsSmartCard: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDefaultSecurityDescriptor: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformation,
                MachineContext: i16,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformation,
                MachineContext: i16,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LegacyCsp: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCspStatusFromOperations: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformation,
                pAlgorithm: ?*IObjectId,
                Operations: AlgorithmOperationFlags,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformation,
                pAlgorithm: ?*IObjectId,
                Operations: AlgorithmOperationFlags,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_InitializeFromName(self: *const T, strName: ?BSTR) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).InitializeFromName(@as(*const ICspInformation, @ptrCast(self)), strName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_InitializeFromType(self: *const T, Type: X509ProviderType, pAlgorithm: ?*IObjectId, MachineContext: i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).InitializeFromType(@as(*const ICspInformation, @ptrCast(self)), Type, pAlgorithm, MachineContext);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_CspAlgorithms(self: *const T, ppValue: ?*?*ICspAlgorithms) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_CspAlgorithms(@as(*const ICspInformation, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_HasHardwareRandomNumberGenerator(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_HasHardwareRandomNumberGenerator(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_IsHardwareDevice(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_IsHardwareDevice(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_IsRemovable(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_IsRemovable(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_IsSoftwareDevice(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_IsSoftwareDevice(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_Valid(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_Valid(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_MaxKeyContainerNameLength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_MaxKeyContainerNameLength(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_Name(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_Name(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_Type(self: *const T, pValue: ?*X509ProviderType) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_Type(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_Version(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_Version(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_KeySpec(self: *const T, pValue: ?*X509KeySpec) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_KeySpec(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_IsSmartCard(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_IsSmartCard(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_GetDefaultSecurityDescriptor(self: *const T, MachineContext: i16, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).GetDefaultSecurityDescriptor(@as(*const ICspInformation, @ptrCast(self)), MachineContext, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_get_LegacyCsp(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).get_LegacyCsp(@as(*const ICspInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformation_GetCspStatusFromOperations(self: *const T, pAlgorithm: ?*IObjectId, Operations: AlgorithmOperationFlags, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspInformation.VTable, @ptrCast(self.vtable)).GetCspStatusFromOperations(@as(*const ICspInformation, @ptrCast(self)), pAlgorithm, Operations, ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICspInformations_Value = Guid.initString("728ab308-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICspInformations = &IID_ICspInformations_Value;
pub const ICspInformations = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformations,
                Index: i32,
                pVal: ?*?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformations,
                Index: i32,
                pVal: ?*?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformations,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformations,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformations,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformations,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
                pVal: ?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
                pVal: ?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddAvailableCsps: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspInformations,
                strName: ?BSTR,
                ppCspInformation: ?*?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspInformations,
                strName: ?BSTR,
                ppCspInformation: ?*?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCspStatusFromProviderName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
                strProviderName: ?BSTR,
                LegacyKeySpec: X509KeySpec,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
                strProviderName: ?BSTR,
                LegacyKeySpec: X509KeySpec,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCspStatusesFromOperations: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
                Operations: AlgorithmOperationFlags,
                pCspInformation: ?*ICspInformation,
                ppValue: ?*?*ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
                Operations: AlgorithmOperationFlags,
                pCspInformation: ?*ICspInformation,
                ppValue: ?*?*ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetEncryptionCspAlgorithms: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
                pCspInformation: ?*ICspInformation,
                ppValue: ?*?*ICspAlgorithms,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
                pCspInformation: ?*ICspInformation,
                ppValue: ?*?*ICspAlgorithms,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetHashAlgorithms: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspInformations,
                pCspInformation: ?*ICspInformation,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspInformations,
                pCspInformation: ?*ICspInformation,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICspInformation) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICspInformations, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICspInformations, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICspInformations, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_Add(self: *const T, pVal: ?*ICspInformation) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).Add(@as(*const ICspInformations, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICspInformations, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_Clear(self: *const T) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICspInformations, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_AddAvailableCsps(self: *const T) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).AddAvailableCsps(@as(*const ICspInformations, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_get_ItemByName(self: *const T, strName: ?BSTR, ppCspInformation: ?*?*ICspInformation) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const ICspInformations, @ptrCast(self)), strName, ppCspInformation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_GetCspStatusFromProviderName(self: *const T, strProviderName: ?BSTR, LegacyKeySpec: X509KeySpec, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).GetCspStatusFromProviderName(@as(*const ICspInformations, @ptrCast(self)), strProviderName, LegacyKeySpec, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_GetCspStatusesFromOperations(self: *const T, Operations: AlgorithmOperationFlags, pCspInformation: ?*ICspInformation, ppValue: ?*?*ICspStatuses) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).GetCspStatusesFromOperations(@as(*const ICspInformations, @ptrCast(self)), Operations, pCspInformation, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_GetEncryptionCspAlgorithms(self: *const T, pCspInformation: ?*ICspInformation, ppValue: ?*?*ICspAlgorithms) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).GetEncryptionCspAlgorithms(@as(*const ICspInformations, @ptrCast(self)), pCspInformation, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspInformations_GetHashAlgorithms(self: *const T, pCspInformation: ?*ICspInformation, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const ICspInformations.VTable, @ptrCast(self.vtable)).GetHashAlgorithms(@as(*const ICspInformations, @ptrCast(self)), pCspInformation, ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICspStatus_Value = Guid.initString("728ab309-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICspStatus = &IID_ICspStatus_Value;
pub const ICspStatus = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspStatus,
                pCsp: ?*ICspInformation,
                pAlgorithm: ?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspStatus,
                pCsp: ?*ICspInformation,
                pAlgorithm: ?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Ordinal: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatus,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatus,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Ordinal: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatus,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatus,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatus,
                ppValue: ?*?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatus,
                ppValue: ?*?*ICspAlgorithm,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatus,
                ppValue: ?*?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatus,
                ppValue: ?*?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnrollmentStatus: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatus,
                ppValue: ?*?*IX509EnrollmentStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatus,
                ppValue: ?*?*IX509EnrollmentStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatus,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatus,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_Initialize(self: *const T, pCsp: ?*ICspInformation, pAlgorithm: ?*ICspAlgorithm) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICspStatus, @ptrCast(self)), pCsp, pAlgorithm);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_get_Ordinal(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).get_Ordinal(@as(*const ICspStatus, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_put_Ordinal(self: *const T, Value: i32) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).put_Ordinal(@as(*const ICspStatus, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_get_CspAlgorithm(self: *const T, ppValue: ?*?*ICspAlgorithm) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).get_CspAlgorithm(@as(*const ICspStatus, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_get_CspInformation(self: *const T, ppValue: ?*?*ICspInformation) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).get_CspInformation(@as(*const ICspStatus, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_get_EnrollmentStatus(self: *const T, ppValue: ?*?*IX509EnrollmentStatus) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).get_EnrollmentStatus(@as(*const ICspStatus, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatus_get_DisplayName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICspStatus.VTable, @ptrCast(self.vtable)).get_DisplayName(@as(*const ICspStatus, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICspStatuses_Value = Guid.initString("728ab30a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICspStatuses = &IID_ICspStatuses_Value;
pub const ICspStatuses = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                Index: i32,
                pVal: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                Index: i32,
                pVal: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspStatuses,
                pVal: ?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspStatuses,
                pVal: ?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspStatuses,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspStatuses,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                strCspName: ?BSTR,
                strAlgorithmName: ?BSTR,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                strCspName: ?BSTR,
                strAlgorithmName: ?BSTR,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByOrdinal: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                Ordinal: i32,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                Ordinal: i32,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByOperations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                strCspName: ?BSTR,
                strAlgorithmName: ?BSTR,
                Operations: AlgorithmOperationFlags,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                strCspName: ?BSTR,
                strAlgorithmName: ?BSTR,
                Operations: AlgorithmOperationFlags,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByProvider: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICspStatuses,
                pCspStatus: ?*ICspStatus,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICspStatuses,
                pCspStatus: ?*ICspStatus,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICspStatuses, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICspStatuses, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICspStatuses, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_Add(self: *const T, pVal: ?*ICspStatus) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).Add(@as(*const ICspStatuses, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICspStatuses, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_Clear(self: *const T) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICspStatuses, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get_ItemByName(self: *const T, strCspName: ?BSTR, strAlgorithmName: ?BSTR, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const ICspStatuses, @ptrCast(self)), strCspName, strAlgorithmName, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get_ItemByOrdinal(self: *const T, Ordinal: i32, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get_ItemByOrdinal(@as(*const ICspStatuses, @ptrCast(self)), Ordinal, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get_ItemByOperations(self: *const T, strCspName: ?BSTR, strAlgorithmName: ?BSTR, Operations: AlgorithmOperationFlags, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get_ItemByOperations(@as(*const ICspStatuses, @ptrCast(self)), strCspName, strAlgorithmName, Operations, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICspStatuses_get_ItemByProvider(self: *const T, pCspStatus: ?*ICspStatus, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const ICspStatuses.VTable, @ptrCast(self.vtable)).get_ItemByProvider(@as(*const ICspStatuses, @ptrCast(self)), pCspStatus, ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const KeyIdentifierHashAlgorithm = enum(i32) {
    Default = 0,
    Sha1 = 1,
    CapiSha1 = 2,
    Sha256 = 3,
    HPKP = 5,
};
pub const SKIHashDefault = KeyIdentifierHashAlgorithm.Default;
pub const SKIHashSha1 = KeyIdentifierHashAlgorithm.Sha1;
pub const SKIHashCapiSha1 = KeyIdentifierHashAlgorithm.CapiSha1;
pub const SKIHashSha256 = KeyIdentifierHashAlgorithm.Sha256;
pub const SKIHashHPKP = KeyIdentifierHashAlgorithm.HPKP;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509PublicKey_Value = Guid.initString("728ab30b-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509PublicKey = &IID_IX509PublicKey_Value;
pub const IX509PublicKey = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PublicKey,
                pObjectId: ?*IObjectId,
                strEncodedKey: ?BSTR,
                strEncodedParameters: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PublicKey,
                pObjectId: ?*IObjectId,
                strEncodedKey: ?BSTR,
                strEncodedParameters: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromEncodedPublicKeyInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PublicKey,
                strEncodedPublicKeyInfo: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PublicKey,
                strEncodedPublicKeyInfo: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Algorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PublicKey,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PublicKey,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Length: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PublicKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PublicKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncodedKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PublicKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PublicKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncodedParameters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PublicKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PublicKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ComputeKeyIdentifier: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PublicKey,
                Algorithm: KeyIdentifierHashAlgorithm,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PublicKey,
                Algorithm: KeyIdentifierHashAlgorithm,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_Initialize(self: *const T, pObjectId: ?*IObjectId, strEncodedKey: ?BSTR, strEncodedParameters: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509PublicKey, @ptrCast(self)), pObjectId, strEncodedKey, strEncodedParameters, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_InitializeFromEncodedPublicKeyInfo(self: *const T, strEncodedPublicKeyInfo: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).InitializeFromEncodedPublicKeyInfo(@as(*const IX509PublicKey, @ptrCast(self)), strEncodedPublicKeyInfo, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_get_Algorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).get_Algorithm(@as(*const IX509PublicKey, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_get_Length(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).get_Length(@as(*const IX509PublicKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_get_EncodedKey(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).get_EncodedKey(@as(*const IX509PublicKey, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_get_EncodedParameters(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).get_EncodedParameters(@as(*const IX509PublicKey, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PublicKey_ComputeKeyIdentifier(self: *const T, Algorithm: KeyIdentifierHashAlgorithm, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PublicKey.VTable, @ptrCast(self.vtable)).ComputeKeyIdentifier(@as(*const IX509PublicKey, @ptrCast(self)), Algorithm, Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509PrivateKeyExportFlags = enum(i32) {
    EXPORT_NONE = 0,
    EXPORT_FLAG = 1,
    PLAINTEXT_EXPORT_FLAG = 2,
    ARCHIVING_FLAG = 4,
    PLAINTEXT_ARCHIVING_FLAG = 8,
};
pub const XCN_NCRYPT_ALLOW_EXPORT_NONE = X509PrivateKeyExportFlags.EXPORT_NONE;
pub const XCN_NCRYPT_ALLOW_EXPORT_FLAG = X509PrivateKeyExportFlags.EXPORT_FLAG;
pub const XCN_NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG = X509PrivateKeyExportFlags.PLAINTEXT_EXPORT_FLAG;
pub const XCN_NCRYPT_ALLOW_ARCHIVING_FLAG = X509PrivateKeyExportFlags.ARCHIVING_FLAG;
pub const XCN_NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG = X509PrivateKeyExportFlags.PLAINTEXT_ARCHIVING_FLAG;

pub const X509PrivateKeyUsageFlags = enum(i32) {
    USAGES_NONE = 0,
    DECRYPT_FLAG = 1,
    SIGNING_FLAG = 2,
    KEY_AGREEMENT_FLAG = 4,
    KEY_IMPORT_FLAG = 8,
    ALL_USAGES = 16777215,
};
pub const XCN_NCRYPT_ALLOW_USAGES_NONE = X509PrivateKeyUsageFlags.USAGES_NONE;
pub const XCN_NCRYPT_ALLOW_DECRYPT_FLAG = X509PrivateKeyUsageFlags.DECRYPT_FLAG;
pub const XCN_NCRYPT_ALLOW_SIGNING_FLAG = X509PrivateKeyUsageFlags.SIGNING_FLAG;
pub const XCN_NCRYPT_ALLOW_KEY_AGREEMENT_FLAG = X509PrivateKeyUsageFlags.KEY_AGREEMENT_FLAG;
pub const XCN_NCRYPT_ALLOW_KEY_IMPORT_FLAG = X509PrivateKeyUsageFlags.KEY_IMPORT_FLAG;
pub const XCN_NCRYPT_ALLOW_ALL_USAGES = X509PrivateKeyUsageFlags.ALL_USAGES;

pub const X509PrivateKeyProtection = enum(i32) {
    NO_PROTECTION_FLAG = 0,
    PROTECT_KEY_FLAG = 1,
    FORCE_HIGH_PROTECTION_FLAG = 2,
    FINGERPRINT_PROTECTION_FLAG = 4,
    APPCONTAINER_ACCESS_MEDIUM_FLAG = 8,
};
pub const XCN_NCRYPT_UI_NO_PROTECTION_FLAG = X509PrivateKeyProtection.NO_PROTECTION_FLAG;
pub const XCN_NCRYPT_UI_PROTECT_KEY_FLAG = X509PrivateKeyProtection.PROTECT_KEY_FLAG;
pub const XCN_NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG = X509PrivateKeyProtection.FORCE_HIGH_PROTECTION_FLAG;
pub const XCN_NCRYPT_UI_FINGERPRINT_PROTECTION_FLAG = X509PrivateKeyProtection.FINGERPRINT_PROTECTION_FLAG;
pub const XCN_NCRYPT_UI_APPCONTAINER_ACCESS_MEDIUM_FLAG = X509PrivateKeyProtection.APPCONTAINER_ACCESS_MEDIUM_FLAG;

pub const X509PrivateKeyVerify = enum(i32) {
    None = 0,
    Silent = 1,
    SmartCardNone = 2,
    SmartCardSilent = 3,
    AllowUI = 4,
};
pub const VerifyNone = X509PrivateKeyVerify.None;
pub const VerifySilent = X509PrivateKeyVerify.Silent;
pub const VerifySmartCardNone = X509PrivateKeyVerify.SmartCardNone;
pub const VerifySmartCardSilent = X509PrivateKeyVerify.SmartCardSilent;
pub const VerifyAllowUI = X509PrivateKeyVerify.AllowUI;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509PrivateKey_Value = Guid.initString("728ab30c-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509PrivateKey = &IID_IX509PrivateKey_Value;
pub const IX509PrivateKey = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Open: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Create: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Close: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Delete: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Verify: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
                VerifyType: X509PrivateKeyVerify,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
                VerifyType: X509PrivateKeyVerify,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Import: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
                strExportType: ?BSTR,
                strEncodedKey: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
                strExportType: ?BSTR,
                strEncodedKey: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Export: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
                strExportType: ?BSTR,
                Encoding: EncodingType,
                pstrEncodedKey: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
                strExportType: ?BSTR,
                Encoding: EncodingType,
                pstrEncodedKey: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ExportPublicKey: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PrivateKey,
                ppPublicKey: ?*?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PrivateKey,
                ppPublicKey: ?*?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ContainerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ContainerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ContainerNamePrefix: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ContainerNamePrefix: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReaderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReaderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspInformations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                ppValue: ?*?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                ppValue: ?*?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CspInformations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspStatus: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                ppValue: ?*?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CspStatus: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*ICspStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509ProviderType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509ProviderType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: X509ProviderType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: X509ProviderType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LegacyCsp: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LegacyCsp: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Algorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Algorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Length: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Length: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExportPolicy: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509PrivateKeyExportFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509PrivateKeyExportFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ExportPolicy: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: X509PrivateKeyExportFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: X509PrivateKeyExportFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeyUsage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509PrivateKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509PrivateKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeyUsage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: X509PrivateKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: X509PrivateKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeyProtection: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509PrivateKeyProtection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*X509PrivateKeyProtection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeyProtection: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: X509PrivateKeyProtection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: X509PrivateKeyProtection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MachineContext: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MachineContext: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SecurityDescriptor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SecurityDescriptor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Certificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Certificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UniqueContainerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Opened: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DefaultContainer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Existing: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Existing: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UIContextMessage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UIContextMessage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Pin: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Open(self: *const T) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Open(@as(*const IX509PrivateKey, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Create(self: *const T) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Create(@as(*const IX509PrivateKey, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Close(self: *const T) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Close(@as(*const IX509PrivateKey, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Delete(self: *const T) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Delete(@as(*const IX509PrivateKey, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Verify(self: *const T, VerifyType: X509PrivateKeyVerify) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Verify(@as(*const IX509PrivateKey, @ptrCast(self)), VerifyType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Import(self: *const T, strExportType: ?BSTR, strEncodedKey: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Import(@as(*const IX509PrivateKey, @ptrCast(self)), strExportType, strEncodedKey, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_Export(self: *const T, strExportType: ?BSTR, Encoding: EncodingType, pstrEncodedKey: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).Export(@as(*const IX509PrivateKey, @ptrCast(self)), strExportType, Encoding, pstrEncodedKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_ExportPublicKey(self: *const T, ppPublicKey: ?*?*IX509PublicKey) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).ExportPublicKey(@as(*const IX509PrivateKey, @ptrCast(self)), ppPublicKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ContainerName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ContainerName(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ContainerName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ContainerName(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ContainerNamePrefix(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ContainerNamePrefix(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ContainerNamePrefix(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ContainerNamePrefix(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ReaderName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ReaderName(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ReaderName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ReaderName(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_CspInformations(self: *const T, ppValue: ?*?*ICspInformations) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_CspInformations(@as(*const IX509PrivateKey, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_CspInformations(self: *const T, pValue: ?*ICspInformations) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_CspInformations(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_CspStatus(self: *const T, ppValue: ?*?*ICspStatus) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_CspStatus(@as(*const IX509PrivateKey, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_CspStatus(self: *const T, pValue: ?*ICspStatus) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_CspStatus(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ProviderName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ProviderName(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ProviderName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ProviderName(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ProviderType(self: *const T, pValue: ?*X509ProviderType) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ProviderType(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ProviderType(self: *const T, Value: X509ProviderType) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ProviderType(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_LegacyCsp(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_LegacyCsp(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_LegacyCsp(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_LegacyCsp(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Algorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Algorithm(@as(*const IX509PrivateKey, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Algorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Algorithm(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_KeySpec(self: *const T, pValue: ?*X509KeySpec) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_KeySpec(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_KeySpec(self: *const T, Value: X509KeySpec) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_KeySpec(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Length(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Length(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Length(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Length(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ExportPolicy(self: *const T, pValue: ?*X509PrivateKeyExportFlags) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ExportPolicy(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ExportPolicy(self: *const T, Value: X509PrivateKeyExportFlags) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ExportPolicy(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_KeyUsage(self: *const T, pValue: ?*X509PrivateKeyUsageFlags) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_KeyUsage(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_KeyUsage(self: *const T, Value: X509PrivateKeyUsageFlags) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_KeyUsage(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_KeyProtection(self: *const T, pValue: ?*X509PrivateKeyProtection) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_KeyProtection(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_KeyProtection(self: *const T, Value: X509PrivateKeyProtection) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_KeyProtection(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_MachineContext(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_MachineContext(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_MachineContext(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_MachineContext(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_SecurityDescriptor(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_SecurityDescriptor(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_SecurityDescriptor(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_SecurityDescriptor(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Certificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Certificate(@as(*const IX509PrivateKey, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Certificate(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Certificate(@as(*const IX509PrivateKey, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_UniqueContainerName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_UniqueContainerName(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Opened(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Opened(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_DefaultContainer(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_DefaultContainer(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Existing(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Existing(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Existing(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Existing(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Silent(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Silent(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Silent(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Silent(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_ParentWindow(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_ParentWindow(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_ParentWindow(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_ParentWindow(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_UIContextMessage(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_UIContextMessage(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_UIContextMessage(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_UIContextMessage(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Pin(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Pin(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_FriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_FriendlyName(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_FriendlyName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_FriendlyName(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_get_Description(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).get_Description(@as(*const IX509PrivateKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey_put_Description(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey.VTable, @ptrCast(self.vtable)).put_Description(@as(*const IX509PrivateKey, @ptrCast(self)), Value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509HardwareKeyUsageFlags = enum(i32) {
    PCP_NONE = 0,
    TPM12_PROVIDER = 65536,
    PCP_SIGNATURE_KEY = 1,
    PCP_ENCRYPTION_KEY = 2,
    PCP_GENERIC_KEY = 3,
    PCP_STORAGE_KEY = 4,
    PCP_IDENTITY_KEY = 8,
};
pub const XCN_NCRYPT_PCP_NONE = X509HardwareKeyUsageFlags.PCP_NONE;
pub const XCN_NCRYPT_TPM12_PROVIDER = X509HardwareKeyUsageFlags.TPM12_PROVIDER;
pub const XCN_NCRYPT_PCP_SIGNATURE_KEY = X509HardwareKeyUsageFlags.PCP_SIGNATURE_KEY;
pub const XCN_NCRYPT_PCP_ENCRYPTION_KEY = X509HardwareKeyUsageFlags.PCP_ENCRYPTION_KEY;
pub const XCN_NCRYPT_PCP_GENERIC_KEY = X509HardwareKeyUsageFlags.PCP_GENERIC_KEY;
pub const XCN_NCRYPT_PCP_STORAGE_KEY = X509HardwareKeyUsageFlags.PCP_STORAGE_KEY;
pub const XCN_NCRYPT_PCP_IDENTITY_KEY = X509HardwareKeyUsageFlags.PCP_IDENTITY_KEY;

pub const X509KeyParametersExportType = enum(i32) {
    NONE = 0,
    NAME_FOR_ENCODE_FLAG = 536870912,
    PARAMETERS_FOR_ENCODE_FLAG = 268435456,
};
pub const XCN_CRYPT_OID_USE_CURVE_NONE = X509KeyParametersExportType.NONE;
pub const XCN_CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG = X509KeyParametersExportType.NAME_FOR_ENCODE_FLAG;
pub const XCN_CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG = X509KeyParametersExportType.PARAMETERS_FOR_ENCODE_FLAG;

const IID_IX509PrivateKey2_Value = Guid.initString("728ab362-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509PrivateKey2 = &IID_IX509PrivateKey2_Value;
pub const IX509PrivateKey2 = extern struct {
    pub const VTable = extern struct {
        base: IX509PrivateKey.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HardwareKeyUsage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                pValue: ?*X509HardwareKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                pValue: ?*X509HardwareKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HardwareKeyUsage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                Value: X509HardwareKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                Value: X509HardwareKeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlternateStorageLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlternateStorageLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlgorithmName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlgorithmName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlgorithmParameters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlgorithmParameters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ParametersExportType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                pValue: ?*X509KeyParametersExportType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                pValue: ?*X509KeyParametersExportType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ParametersExportType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PrivateKey2,
                Value: X509KeyParametersExportType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PrivateKey2,
                Value: X509KeyParametersExportType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509PrivateKey.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_get_HardwareKeyUsage(self: *const T, pValue: ?*X509HardwareKeyUsageFlags) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).get_HardwareKeyUsage(@as(*const IX509PrivateKey2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_put_HardwareKeyUsage(self: *const T, Value: X509HardwareKeyUsageFlags) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).put_HardwareKeyUsage(@as(*const IX509PrivateKey2, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_get_AlternateStorageLocation(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).get_AlternateStorageLocation(@as(*const IX509PrivateKey2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_put_AlternateStorageLocation(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).put_AlternateStorageLocation(@as(*const IX509PrivateKey2, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_get_AlgorithmName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).get_AlgorithmName(@as(*const IX509PrivateKey2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_put_AlgorithmName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).put_AlgorithmName(@as(*const IX509PrivateKey2, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_get_AlgorithmParameters(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).get_AlgorithmParameters(@as(*const IX509PrivateKey2, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_put_AlgorithmParameters(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).put_AlgorithmParameters(@as(*const IX509PrivateKey2, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_get_ParametersExportType(self: *const T, pValue: ?*X509KeyParametersExportType) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).get_ParametersExportType(@as(*const IX509PrivateKey2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PrivateKey2_put_ParametersExportType(self: *const T, Value: X509KeyParametersExportType) HRESULT {
                return @as(*const IX509PrivateKey2.VTable, @ptrCast(self.vtable)).put_ParametersExportType(@as(*const IX509PrivateKey2, @ptrCast(self)), Value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IX509EndorsementKey_Value = Guid.initString("b11cd855-f4c4-4fc6-b710-4422237f09e9");
pub const IID_IX509EndorsementKey = &IID_IX509EndorsementKey_Value;
pub const IX509EndorsementKey = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EndorsementKey,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EndorsementKey,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Length: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EndorsementKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Opened: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EndorsementKey,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RemoveCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateByIndex: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                ManufacturerOnly: i16,
                dwIndex: i32,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
                ManufacturerOnly: i16,
                dwIndex: i32,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCertificateCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                ManufacturerOnly: i16,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
                ManufacturerOnly: i16,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ExportPublicKey: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
                ppPublicKey: ?*?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
                ppPublicKey: ?*?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Open: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Close: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EndorsementKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EndorsementKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_get_ProviderName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).get_ProviderName(@as(*const IX509EndorsementKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_put_ProviderName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).put_ProviderName(@as(*const IX509EndorsementKey, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_get_Length(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).get_Length(@as(*const IX509EndorsementKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_get_Opened(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).get_Opened(@as(*const IX509EndorsementKey, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_AddCertificate(self: *const T, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).AddCertificate(@as(*const IX509EndorsementKey, @ptrCast(self)), Encoding, strCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_RemoveCertificate(self: *const T, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).RemoveCertificate(@as(*const IX509EndorsementKey, @ptrCast(self)), Encoding, strCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_GetCertificateByIndex(self: *const T, ManufacturerOnly: i16, dwIndex: i32, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).GetCertificateByIndex(@as(*const IX509EndorsementKey, @ptrCast(self)), ManufacturerOnly, dwIndex, Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_GetCertificateCount(self: *const T, ManufacturerOnly: i16, pCount: ?*i32) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).GetCertificateCount(@as(*const IX509EndorsementKey, @ptrCast(self)), ManufacturerOnly, pCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_ExportPublicKey(self: *const T, ppPublicKey: ?*?*IX509PublicKey) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).ExportPublicKey(@as(*const IX509EndorsementKey, @ptrCast(self)), ppPublicKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_Open(self: *const T) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).Open(@as(*const IX509EndorsementKey, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EndorsementKey_Close(self: *const T) HRESULT {
                return @as(*const IX509EndorsementKey.VTable, @ptrCast(self.vtable)).Close(@as(*const IX509EndorsementKey, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509Extension_Value = Guid.initString("728ab30d-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509Extension = &IID_IX509Extension_Value;
pub const IX509Extension = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Extension,
                pObjectId: ?*IObjectId,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Extension,
                pObjectId: ?*IObjectId,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extension,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extension,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extension,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extension,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Critical: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extension,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extension,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Critical: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extension,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extension,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extension_Initialize(self: *const T, pObjectId: ?*IObjectId, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509Extension.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509Extension, @ptrCast(self)), pObjectId, Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extension_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509Extension.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const IX509Extension, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extension_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Extension.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const IX509Extension, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extension_get_Critical(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509Extension.VTable, @ptrCast(self.vtable)).get_Critical(@as(*const IX509Extension, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extension_put_Critical(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509Extension.VTable, @ptrCast(self.vtable)).put_Critical(@as(*const IX509Extension, @ptrCast(self)), Value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509Extensions_Value = Guid.initString("728ab30e-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509Extensions = &IID_IX509Extensions_Value;
pub const IX509Extensions = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extensions,
                Index: i32,
                pVal: ?*?*IX509Extension,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extensions,
                Index: i32,
                pVal: ?*?*IX509Extension,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extensions,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extensions,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extensions,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extensions,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Extensions,
                pVal: ?*IX509Extension,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Extensions,
                pVal: ?*IX509Extension,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Extensions,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Extensions,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IndexByObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Extensions,
                pObjectId: ?*IObjectId,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Extensions,
                pObjectId: ?*IObjectId,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Extensions,
                pValue: ?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Extensions,
                pValue: ?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IX509Extension) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IX509Extensions, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IX509Extensions, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IX509Extensions, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_Add(self: *const T, pVal: ?*IX509Extension) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).Add(@as(*const IX509Extensions, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).Remove(@as(*const IX509Extensions, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_Clear(self: *const T) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).Clear(@as(*const IX509Extensions, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_get_IndexByObjectId(self: *const T, pObjectId: ?*IObjectId, pIndex: ?*i32) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).get_IndexByObjectId(@as(*const IX509Extensions, @ptrCast(self)), pObjectId, pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Extensions_AddRange(self: *const T, pValue: ?*IX509Extensions) HRESULT {
                return @as(*const IX509Extensions.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IX509Extensions, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509KeyUsageFlags = enum(i32) {
    NO_KEY_USAGE = 0,
    DIGITAL_SIGNATURE_KEY_USAGE = 128,
    NON_REPUDIATION_KEY_USAGE = 64,
    KEY_ENCIPHERMENT_KEY_USAGE = 32,
    DATA_ENCIPHERMENT_KEY_USAGE = 16,
    KEY_AGREEMENT_KEY_USAGE = 8,
    KEY_CERT_SIGN_KEY_USAGE = 4,
    OFFLINE_CRL_SIGN_KEY_USAGE = 2,
    // CRL_SIGN_KEY_USAGE = 2, this enum value conflicts with OFFLINE_CRL_SIGN_KEY_USAGE
    ENCIPHER_ONLY_KEY_USAGE = 1,
    DECIPHER_ONLY_KEY_USAGE = 32768,
};
pub const XCN_CERT_NO_KEY_USAGE = X509KeyUsageFlags.NO_KEY_USAGE;
pub const XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE = X509KeyUsageFlags.DIGITAL_SIGNATURE_KEY_USAGE;
pub const XCN_CERT_NON_REPUDIATION_KEY_USAGE = X509KeyUsageFlags.NON_REPUDIATION_KEY_USAGE;
pub const XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE = X509KeyUsageFlags.KEY_ENCIPHERMENT_KEY_USAGE;
pub const XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE = X509KeyUsageFlags.DATA_ENCIPHERMENT_KEY_USAGE;
pub const XCN_CERT_KEY_AGREEMENT_KEY_USAGE = X509KeyUsageFlags.KEY_AGREEMENT_KEY_USAGE;
pub const XCN_CERT_KEY_CERT_SIGN_KEY_USAGE = X509KeyUsageFlags.KEY_CERT_SIGN_KEY_USAGE;
pub const XCN_CERT_OFFLINE_CRL_SIGN_KEY_USAGE = X509KeyUsageFlags.OFFLINE_CRL_SIGN_KEY_USAGE;
pub const XCN_CERT_CRL_SIGN_KEY_USAGE = X509KeyUsageFlags.OFFLINE_CRL_SIGN_KEY_USAGE;
pub const XCN_CERT_ENCIPHER_ONLY_KEY_USAGE = X509KeyUsageFlags.ENCIPHER_ONLY_KEY_USAGE;
pub const XCN_CERT_DECIPHER_ONLY_KEY_USAGE = X509KeyUsageFlags.DECIPHER_ONLY_KEY_USAGE;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionKeyUsage_Value = Guid.initString("728ab30f-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionKeyUsage = &IID_IX509ExtensionKeyUsage_Value;
pub const IX509ExtensionKeyUsage = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionKeyUsage,
                UsageFlags: X509KeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionKeyUsage,
                UsageFlags: X509KeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionKeyUsage,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionKeyUsage,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeyUsage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionKeyUsage,
                pValue: ?*X509KeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionKeyUsage,
                pValue: ?*X509KeyUsageFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionKeyUsage_InitializeEncode(self: *const T, UsageFlags: X509KeyUsageFlags) HRESULT {
                return @as(*const IX509ExtensionKeyUsage.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionKeyUsage, @ptrCast(self)), UsageFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionKeyUsage_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionKeyUsage.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionKeyUsage, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionKeyUsage_get_KeyUsage(self: *const T, pValue: ?*X509KeyUsageFlags) HRESULT {
                return @as(*const IX509ExtensionKeyUsage.VTable, @ptrCast(self.vtable)).get_KeyUsage(@as(*const IX509ExtensionKeyUsage, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionEnhancedKeyUsage_Value = Guid.initString("728ab310-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionEnhancedKeyUsage = &IID_IX509ExtensionEnhancedKeyUsage_Value;
pub const IX509ExtensionEnhancedKeyUsage = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionEnhancedKeyUsage,
                pValue: ?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionEnhancedKeyUsage,
                pValue: ?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionEnhancedKeyUsage,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionEnhancedKeyUsage,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnhancedKeyUsage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionEnhancedKeyUsage,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionEnhancedKeyUsage,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionEnhancedKeyUsage_InitializeEncode(self: *const T, pValue: ?*IObjectIds) HRESULT {
                return @as(*const IX509ExtensionEnhancedKeyUsage.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionEnhancedKeyUsage, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionEnhancedKeyUsage_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionEnhancedKeyUsage.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionEnhancedKeyUsage, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionEnhancedKeyUsage_get_EnhancedKeyUsage(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509ExtensionEnhancedKeyUsage.VTable, @ptrCast(self.vtable)).get_EnhancedKeyUsage(@as(*const IX509ExtensionEnhancedKeyUsage, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionTemplateName_Value = Guid.initString("728ab311-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionTemplateName = &IID_IX509ExtensionTemplateName_Value;
pub const IX509ExtensionTemplateName = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionTemplateName,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionTemplateName,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionTemplateName,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionTemplateName,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TemplateName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionTemplateName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionTemplateName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplateName_InitializeEncode(self: *const T, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionTemplateName.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionTemplateName, @ptrCast(self)), strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplateName_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionTemplateName.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionTemplateName, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplateName_get_TemplateName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509ExtensionTemplateName.VTable, @ptrCast(self.vtable)).get_TemplateName(@as(*const IX509ExtensionTemplateName, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionTemplate_Value = Guid.initString("728ab312-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionTemplate = &IID_IX509ExtensionTemplate_Value;
pub const IX509ExtensionTemplate = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionTemplate,
                pTemplateOid: ?*IObjectId,
                MajorVersion: i32,
                MinorVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionTemplate,
                pTemplateOid: ?*IObjectId,
                MajorVersion: i32,
                MinorVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionTemplate,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionTemplate,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TemplateOid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionTemplate,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionTemplate,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionTemplate,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionTemplate,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionTemplate,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionTemplate,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplate_InitializeEncode(self: *const T, pTemplateOid: ?*IObjectId, MajorVersion: i32, MinorVersion: i32) HRESULT {
                return @as(*const IX509ExtensionTemplate.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionTemplate, @ptrCast(self)), pTemplateOid, MajorVersion, MinorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplate_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionTemplate.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionTemplate, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplate_get_TemplateOid(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509ExtensionTemplate.VTable, @ptrCast(self.vtable)).get_TemplateOid(@as(*const IX509ExtensionTemplate, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplate_get_MajorVersion(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509ExtensionTemplate.VTable, @ptrCast(self.vtable)).get_MajorVersion(@as(*const IX509ExtensionTemplate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionTemplate_get_MinorVersion(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509ExtensionTemplate.VTable, @ptrCast(self.vtable)).get_MinorVersion(@as(*const IX509ExtensionTemplate, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const AlternativeNameType = enum(i32) {
    UNKNOWN = 0,
    OTHER_NAME = 1,
    RFC822_NAME = 2,
    DNS_NAME = 3,
    X400_ADDRESS = 4,
    DIRECTORY_NAME = 5,
    EDI_PARTY_NAME = 6,
    URL = 7,
    IP_ADDRESS = 8,
    REGISTERED_ID = 9,
    GUID = 10,
    USER_PRINCIPLE_NAME = 11,
};
pub const XCN_CERT_ALT_NAME_UNKNOWN = AlternativeNameType.UNKNOWN;
pub const XCN_CERT_ALT_NAME_OTHER_NAME = AlternativeNameType.OTHER_NAME;
pub const XCN_CERT_ALT_NAME_RFC822_NAME = AlternativeNameType.RFC822_NAME;
pub const XCN_CERT_ALT_NAME_DNS_NAME = AlternativeNameType.DNS_NAME;
pub const XCN_CERT_ALT_NAME_X400_ADDRESS = AlternativeNameType.X400_ADDRESS;
pub const XCN_CERT_ALT_NAME_DIRECTORY_NAME = AlternativeNameType.DIRECTORY_NAME;
pub const XCN_CERT_ALT_NAME_EDI_PARTY_NAME = AlternativeNameType.EDI_PARTY_NAME;
pub const XCN_CERT_ALT_NAME_URL = AlternativeNameType.URL;
pub const XCN_CERT_ALT_NAME_IP_ADDRESS = AlternativeNameType.IP_ADDRESS;
pub const XCN_CERT_ALT_NAME_REGISTERED_ID = AlternativeNameType.REGISTERED_ID;
pub const XCN_CERT_ALT_NAME_GUID = AlternativeNameType.GUID;
pub const XCN_CERT_ALT_NAME_USER_PRINCIPLE_NAME = AlternativeNameType.USER_PRINCIPLE_NAME;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IAlternativeName_Value = Guid.initString("728ab313-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IAlternativeName = &IID_IAlternativeName_Value;
pub const IAlternativeName = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        InitializeFromString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IAlternativeName,
                Type: AlternativeNameType,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IAlternativeName,
                Type: AlternativeNameType,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromRawData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IAlternativeName,
                Type: AlternativeNameType,
                Encoding: EncodingType,
                strRawData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IAlternativeName,
                Type: AlternativeNameType,
                Encoding: EncodingType,
                strRawData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromOtherName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IAlternativeName,
                pObjectId: ?*IObjectId,
                Encoding: EncodingType,
                strRawData: ?BSTR,
                ToBeWrapped: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IAlternativeName,
                pObjectId: ?*IObjectId,
                Encoding: EncodingType,
                strRawData: ?BSTR,
                ToBeWrapped: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Type: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeName,
                pValue: ?*AlternativeNameType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeName,
                pValue: ?*AlternativeNameType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_StrValue: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeName,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeName,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeName,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeName,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_InitializeFromString(self: *const T, Type: AlternativeNameType, strValue: ?BSTR) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).InitializeFromString(@as(*const IAlternativeName, @ptrCast(self)), Type, strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_InitializeFromRawData(self: *const T, Type: AlternativeNameType, Encoding: EncodingType, strRawData: ?BSTR) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).InitializeFromRawData(@as(*const IAlternativeName, @ptrCast(self)), Type, Encoding, strRawData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_InitializeFromOtherName(self: *const T, pObjectId: ?*IObjectId, Encoding: EncodingType, strRawData: ?BSTR, ToBeWrapped: i16) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).InitializeFromOtherName(@as(*const IAlternativeName, @ptrCast(self)), pObjectId, Encoding, strRawData, ToBeWrapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_get_Type(self: *const T, pValue: ?*AlternativeNameType) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).get_Type(@as(*const IAlternativeName, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_get_StrValue(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).get_StrValue(@as(*const IAlternativeName, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const IAlternativeName, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeName_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IAlternativeName.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const IAlternativeName, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IAlternativeNames_Value = Guid.initString("728ab314-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IAlternativeNames = &IID_IAlternativeNames_Value;
pub const IAlternativeNames = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeNames,
                Index: i32,
                pVal: ?*?*IAlternativeName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeNames,
                Index: i32,
                pVal: ?*?*IAlternativeName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeNames,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeNames,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlternativeNames,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlternativeNames,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IAlternativeNames,
                pVal: ?*IAlternativeName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IAlternativeNames,
                pVal: ?*IAlternativeName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IAlternativeNames,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IAlternativeNames,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IAlternativeNames,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IAlternativeNames,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeNames_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IAlternativeName) HRESULT {
                return @as(*const IAlternativeNames.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IAlternativeNames, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeNames_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IAlternativeNames.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IAlternativeNames, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeNames_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IAlternativeNames.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IAlternativeNames, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeNames_Add(self: *const T, pVal: ?*IAlternativeName) HRESULT {
                return @as(*const IAlternativeNames.VTable, @ptrCast(self.vtable)).Add(@as(*const IAlternativeNames, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeNames_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IAlternativeNames.VTable, @ptrCast(self.vtable)).Remove(@as(*const IAlternativeNames, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlternativeNames_Clear(self: *const T) HRESULT {
                return @as(*const IAlternativeNames.VTable, @ptrCast(self.vtable)).Clear(@as(*const IAlternativeNames, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionAlternativeNames_Value = Guid.initString("728ab315-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionAlternativeNames = &IID_IX509ExtensionAlternativeNames_Value;
pub const IX509ExtensionAlternativeNames = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionAlternativeNames,
                pValue: ?*IAlternativeNames,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionAlternativeNames,
                pValue: ?*IAlternativeNames,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionAlternativeNames,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionAlternativeNames,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlternativeNames: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionAlternativeNames,
                ppValue: ?*?*IAlternativeNames,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionAlternativeNames,
                ppValue: ?*?*IAlternativeNames,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionAlternativeNames_InitializeEncode(self: *const T, pValue: ?*IAlternativeNames) HRESULT {
                return @as(*const IX509ExtensionAlternativeNames.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionAlternativeNames, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionAlternativeNames_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionAlternativeNames.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionAlternativeNames, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionAlternativeNames_get_AlternativeNames(self: *const T, ppValue: ?*?*IAlternativeNames) HRESULT {
                return @as(*const IX509ExtensionAlternativeNames.VTable, @ptrCast(self.vtable)).get_AlternativeNames(@as(*const IX509ExtensionAlternativeNames, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionBasicConstraints_Value = Guid.initString("728ab316-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionBasicConstraints = &IID_IX509ExtensionBasicConstraints_Value;
pub const IX509ExtensionBasicConstraints = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionBasicConstraints,
                IsCA: i16,
                PathLenConstraint: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionBasicConstraints,
                IsCA: i16,
                PathLenConstraint: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionBasicConstraints,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionBasicConstraints,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IsCA: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionBasicConstraints,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionBasicConstraints,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PathLenConstraint: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionBasicConstraints,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionBasicConstraints,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionBasicConstraints_InitializeEncode(self: *const T, IsCA: i16, PathLenConstraint: i32) HRESULT {
                return @as(*const IX509ExtensionBasicConstraints.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionBasicConstraints, @ptrCast(self)), IsCA, PathLenConstraint);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionBasicConstraints_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionBasicConstraints.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionBasicConstraints, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionBasicConstraints_get_IsCA(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509ExtensionBasicConstraints.VTable, @ptrCast(self.vtable)).get_IsCA(@as(*const IX509ExtensionBasicConstraints, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionBasicConstraints_get_PathLenConstraint(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509ExtensionBasicConstraints.VTable, @ptrCast(self.vtable)).get_PathLenConstraint(@as(*const IX509ExtensionBasicConstraints, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionSubjectKeyIdentifier_Value = Guid.initString("728ab317-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionSubjectKeyIdentifier = &IID_IX509ExtensionSubjectKeyIdentifier_Value;
pub const IX509ExtensionSubjectKeyIdentifier = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionSubjectKeyIdentifier,
                Encoding: EncodingType,
                strKeyIdentifier: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionSubjectKeyIdentifier,
                Encoding: EncodingType,
                strKeyIdentifier: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionSubjectKeyIdentifier,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionSubjectKeyIdentifier,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubjectKeyIdentifier: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionSubjectKeyIdentifier,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionSubjectKeyIdentifier,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionSubjectKeyIdentifier_InitializeEncode(self: *const T, Encoding: EncodingType, strKeyIdentifier: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionSubjectKeyIdentifier.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionSubjectKeyIdentifier, @ptrCast(self)), Encoding, strKeyIdentifier);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionSubjectKeyIdentifier_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionSubjectKeyIdentifier.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionSubjectKeyIdentifier, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionSubjectKeyIdentifier_get_SubjectKeyIdentifier(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509ExtensionSubjectKeyIdentifier.VTable, @ptrCast(self.vtable)).get_SubjectKeyIdentifier(@as(*const IX509ExtensionSubjectKeyIdentifier, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionAuthorityKeyIdentifier_Value = Guid.initString("728ab318-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionAuthorityKeyIdentifier = &IID_IX509ExtensionAuthorityKeyIdentifier_Value;
pub const IX509ExtensionAuthorityKeyIdentifier = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionAuthorityKeyIdentifier,
                Encoding: EncodingType,
                strKeyIdentifier: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionAuthorityKeyIdentifier,
                Encoding: EncodingType,
                strKeyIdentifier: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionAuthorityKeyIdentifier,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionAuthorityKeyIdentifier,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AuthorityKeyIdentifier: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionAuthorityKeyIdentifier,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionAuthorityKeyIdentifier,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionAuthorityKeyIdentifier_InitializeEncode(self: *const T, Encoding: EncodingType, strKeyIdentifier: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionAuthorityKeyIdentifier.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionAuthorityKeyIdentifier, @ptrCast(self)), Encoding, strKeyIdentifier);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionAuthorityKeyIdentifier_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionAuthorityKeyIdentifier.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionAuthorityKeyIdentifier, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionAuthorityKeyIdentifier_get_AuthorityKeyIdentifier(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509ExtensionAuthorityKeyIdentifier.VTable, @ptrCast(self.vtable)).get_AuthorityKeyIdentifier(@as(*const IX509ExtensionAuthorityKeyIdentifier, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ISmimeCapability_Value = Guid.initString("728ab319-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ISmimeCapability = &IID_ISmimeCapability_Value;
pub const ISmimeCapability = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISmimeCapability,
                pObjectId: ?*IObjectId,
                BitCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISmimeCapability,
                pObjectId: ?*IObjectId,
                BitCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISmimeCapability,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISmimeCapability,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BitCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISmimeCapability,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISmimeCapability,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapability_Initialize(self: *const T, pObjectId: ?*IObjectId, BitCount: i32) HRESULT {
                return @as(*const ISmimeCapability.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ISmimeCapability, @ptrCast(self)), pObjectId, BitCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapability_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const ISmimeCapability.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const ISmimeCapability, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapability_get_BitCount(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ISmimeCapability.VTable, @ptrCast(self.vtable)).get_BitCount(@as(*const ISmimeCapability, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ISmimeCapabilities_Value = Guid.initString("728ab31a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ISmimeCapabilities = &IID_ISmimeCapabilities_Value;
pub const ISmimeCapabilities = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                Index: i32,
                pVal: ?*?*ISmimeCapability,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISmimeCapabilities,
                Index: i32,
                pVal: ?*?*ISmimeCapability,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISmimeCapabilities,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISmimeCapabilities,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                pVal: ?*ISmimeCapability,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISmimeCapabilities,
                pVal: ?*ISmimeCapability,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISmimeCapabilities,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISmimeCapabilities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISmimeCapabilities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddFromCsp: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                pValue: ?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISmimeCapabilities,
                pValue: ?*ICspInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddAvailableSmimeCapabilities: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISmimeCapabilities,
                MachineContext: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISmimeCapabilities,
                MachineContext: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ISmimeCapability) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ISmimeCapabilities, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ISmimeCapabilities, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ISmimeCapabilities, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_Add(self: *const T, pVal: ?*ISmimeCapability) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).Add(@as(*const ISmimeCapabilities, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).Remove(@as(*const ISmimeCapabilities, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_Clear(self: *const T) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).Clear(@as(*const ISmimeCapabilities, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_AddFromCsp(self: *const T, pValue: ?*ICspInformation) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).AddFromCsp(@as(*const ISmimeCapabilities, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISmimeCapabilities_AddAvailableSmimeCapabilities(self: *const T, MachineContext: i16) HRESULT {
                return @as(*const ISmimeCapabilities.VTable, @ptrCast(self.vtable)).AddAvailableSmimeCapabilities(@as(*const ISmimeCapabilities, @ptrCast(self)), MachineContext);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionSmimeCapabilities_Value = Guid.initString("728ab31b-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionSmimeCapabilities = &IID_IX509ExtensionSmimeCapabilities_Value;
pub const IX509ExtensionSmimeCapabilities = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionSmimeCapabilities,
                pValue: ?*ISmimeCapabilities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionSmimeCapabilities,
                pValue: ?*ISmimeCapabilities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionSmimeCapabilities,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionSmimeCapabilities,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SmimeCapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionSmimeCapabilities,
                ppValue: ?*?*ISmimeCapabilities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionSmimeCapabilities,
                ppValue: ?*?*ISmimeCapabilities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionSmimeCapabilities_InitializeEncode(self: *const T, pValue: ?*ISmimeCapabilities) HRESULT {
                return @as(*const IX509ExtensionSmimeCapabilities.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionSmimeCapabilities, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionSmimeCapabilities_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionSmimeCapabilities.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionSmimeCapabilities, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionSmimeCapabilities_get_SmimeCapabilities(self: *const T, ppValue: ?*?*ISmimeCapabilities) HRESULT {
                return @as(*const IX509ExtensionSmimeCapabilities.VTable, @ptrCast(self.vtable)).get_SmimeCapabilities(@as(*const IX509ExtensionSmimeCapabilities, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const PolicyQualifierType = enum(i32) {
    Unknown = 0,
    Url = 1,
    UserNotice = 2,
    Flags = 3,
};
pub const PolicyQualifierTypeUnknown = PolicyQualifierType.Unknown;
pub const PolicyQualifierTypeUrl = PolicyQualifierType.Url;
pub const PolicyQualifierTypeUserNotice = PolicyQualifierType.UserNotice;
pub const PolicyQualifierTypeFlags = PolicyQualifierType.Flags;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IPolicyQualifier_Value = Guid.initString("728ab31c-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IPolicyQualifier = &IID_IPolicyQualifier_Value;
pub const IPolicyQualifier = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IPolicyQualifier,
                strQualifier: ?BSTR,
                Type: PolicyQualifierType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IPolicyQualifier,
                strQualifier: ?BSTR,
                Type: PolicyQualifierType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifier,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifier,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Qualifier: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifier,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifier,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Type: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifier,
                pValue: ?*PolicyQualifierType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifier,
                pValue: ?*PolicyQualifierType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifier,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifier,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifier_InitializeEncode(self: *const T, strQualifier: ?BSTR, Type: PolicyQualifierType) HRESULT {
                return @as(*const IPolicyQualifier.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IPolicyQualifier, @ptrCast(self)), strQualifier, Type);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifier_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IPolicyQualifier.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const IPolicyQualifier, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifier_get_Qualifier(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IPolicyQualifier.VTable, @ptrCast(self.vtable)).get_Qualifier(@as(*const IPolicyQualifier, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifier_get_Type(self: *const T, pValue: ?*PolicyQualifierType) HRESULT {
                return @as(*const IPolicyQualifier.VTable, @ptrCast(self.vtable)).get_Type(@as(*const IPolicyQualifier, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifier_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IPolicyQualifier.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const IPolicyQualifier, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IPolicyQualifiers_Value = Guid.initString("728ab31d-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IPolicyQualifiers = &IID_IPolicyQualifiers_Value;
pub const IPolicyQualifiers = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifiers,
                Index: i32,
                pVal: ?*?*IPolicyQualifier,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifiers,
                Index: i32,
                pVal: ?*?*IPolicyQualifier,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifiers,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifiers,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPolicyQualifiers,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPolicyQualifiers,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IPolicyQualifiers,
                pVal: ?*IPolicyQualifier,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IPolicyQualifiers,
                pVal: ?*IPolicyQualifier,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IPolicyQualifiers,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IPolicyQualifiers,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IPolicyQualifiers,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IPolicyQualifiers,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifiers_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IPolicyQualifier) HRESULT {
                return @as(*const IPolicyQualifiers.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IPolicyQualifiers, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifiers_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IPolicyQualifiers.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IPolicyQualifiers, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifiers_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IPolicyQualifiers.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IPolicyQualifiers, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifiers_Add(self: *const T, pVal: ?*IPolicyQualifier) HRESULT {
                return @as(*const IPolicyQualifiers.VTable, @ptrCast(self.vtable)).Add(@as(*const IPolicyQualifiers, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifiers_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IPolicyQualifiers.VTable, @ptrCast(self.vtable)).Remove(@as(*const IPolicyQualifiers, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPolicyQualifiers_Clear(self: *const T) HRESULT {
                return @as(*const IPolicyQualifiers.VTable, @ptrCast(self.vtable)).Clear(@as(*const IPolicyQualifiers, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertificatePolicy_Value = Guid.initString("728ab31e-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertificatePolicy = &IID_ICertificatePolicy_Value;
pub const ICertificatePolicy = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificatePolicy,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificatePolicy,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificatePolicy,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificatePolicy,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PolicyQualifiers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificatePolicy,
                ppValue: ?*?*IPolicyQualifiers,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificatePolicy,
                ppValue: ?*?*IPolicyQualifiers,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicy_Initialize(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const ICertificatePolicy.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertificatePolicy, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicy_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const ICertificatePolicy.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const ICertificatePolicy, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicy_get_PolicyQualifiers(self: *const T, ppValue: ?*?*IPolicyQualifiers) HRESULT {
                return @as(*const ICertificatePolicy.VTable, @ptrCast(self.vtable)).get_PolicyQualifiers(@as(*const ICertificatePolicy, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertificatePolicies_Value = Guid.initString("728ab31f-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertificatePolicies = &IID_ICertificatePolicies_Value;
pub const ICertificatePolicies = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificatePolicies,
                Index: i32,
                pVal: ?*?*ICertificatePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificatePolicies,
                Index: i32,
                pVal: ?*?*ICertificatePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificatePolicies,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificatePolicies,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificatePolicies,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificatePolicies,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificatePolicies,
                pVal: ?*ICertificatePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificatePolicies,
                pVal: ?*ICertificatePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificatePolicies,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificatePolicies,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicies_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICertificatePolicy) HRESULT {
                return @as(*const ICertificatePolicies.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICertificatePolicies, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicies_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICertificatePolicies.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICertificatePolicies, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicies_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICertificatePolicies.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICertificatePolicies, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicies_Add(self: *const T, pVal: ?*ICertificatePolicy) HRESULT {
                return @as(*const ICertificatePolicies.VTable, @ptrCast(self.vtable)).Add(@as(*const ICertificatePolicies, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicies_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICertificatePolicies.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICertificatePolicies, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificatePolicies_Clear(self: *const T) HRESULT {
                return @as(*const ICertificatePolicies.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICertificatePolicies, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionCertificatePolicies_Value = Guid.initString("728ab320-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionCertificatePolicies = &IID_IX509ExtensionCertificatePolicies_Value;
pub const IX509ExtensionCertificatePolicies = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionCertificatePolicies,
                pValue: ?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionCertificatePolicies,
                pValue: ?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionCertificatePolicies,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionCertificatePolicies,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Policies: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionCertificatePolicies,
                ppValue: ?*?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionCertificatePolicies,
                ppValue: ?*?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionCertificatePolicies_InitializeEncode(self: *const T, pValue: ?*ICertificatePolicies) HRESULT {
                return @as(*const IX509ExtensionCertificatePolicies.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionCertificatePolicies, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionCertificatePolicies_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionCertificatePolicies.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionCertificatePolicies, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionCertificatePolicies_get_Policies(self: *const T, ppValue: ?*?*ICertificatePolicies) HRESULT {
                return @as(*const IX509ExtensionCertificatePolicies.VTable, @ptrCast(self.vtable)).get_Policies(@as(*const IX509ExtensionCertificatePolicies, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509ExtensionMSApplicationPolicies_Value = Guid.initString("728ab321-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509ExtensionMSApplicationPolicies = &IID_IX509ExtensionMSApplicationPolicies_Value;
pub const IX509ExtensionMSApplicationPolicies = extern struct {
    pub const VTable = extern struct {
        base: IX509Extension.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionMSApplicationPolicies,
                pValue: ?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionMSApplicationPolicies,
                pValue: ?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509ExtensionMSApplicationPolicies,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509ExtensionMSApplicationPolicies,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Policies: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509ExtensionMSApplicationPolicies,
                ppValue: ?*?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509ExtensionMSApplicationPolicies,
                ppValue: ?*?*ICertificatePolicies,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Extension.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionMSApplicationPolicies_InitializeEncode(self: *const T, pValue: ?*ICertificatePolicies) HRESULT {
                return @as(*const IX509ExtensionMSApplicationPolicies.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509ExtensionMSApplicationPolicies, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionMSApplicationPolicies_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509ExtensionMSApplicationPolicies.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509ExtensionMSApplicationPolicies, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509ExtensionMSApplicationPolicies_get_Policies(self: *const T, ppValue: ?*?*ICertificatePolicies) HRESULT {
                return @as(*const IX509ExtensionMSApplicationPolicies.VTable, @ptrCast(self.vtable)).get_Policies(@as(*const IX509ExtensionMSApplicationPolicies, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509Attribute_Value = Guid.initString("728ab322-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509Attribute = &IID_IX509Attribute_Value;
pub const IX509Attribute = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Attribute,
                pObjectId: ?*IObjectId,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Attribute,
                pObjectId: ?*IObjectId,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Attribute,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Attribute,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Attribute,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Attribute,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attribute_Initialize(self: *const T, pObjectId: ?*IObjectId, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509Attribute.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509Attribute, @ptrCast(self)), pObjectId, Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attribute_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509Attribute.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const IX509Attribute, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attribute_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Attribute.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const IX509Attribute, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509Attributes_Value = Guid.initString("728ab323-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509Attributes = &IID_IX509Attributes_Value;
pub const IX509Attributes = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Attributes,
                Index: i32,
                pVal: ?*?*IX509Attribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Attributes,
                Index: i32,
                pVal: ?*?*IX509Attribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Attributes,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Attributes,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Attributes,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Attributes,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Attributes,
                pVal: ?*IX509Attribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Attributes,
                pVal: ?*IX509Attribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Attributes,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Attributes,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Attributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Attributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attributes_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IX509Attribute) HRESULT {
                return @as(*const IX509Attributes.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IX509Attributes, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attributes_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IX509Attributes.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IX509Attributes, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attributes_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IX509Attributes.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IX509Attributes, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attributes_Add(self: *const T, pVal: ?*IX509Attribute) HRESULT {
                return @as(*const IX509Attributes.VTable, @ptrCast(self.vtable)).Add(@as(*const IX509Attributes, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attributes_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IX509Attributes.VTable, @ptrCast(self.vtable)).Remove(@as(*const IX509Attributes, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Attributes_Clear(self: *const T) HRESULT {
                return @as(*const IX509Attributes.VTable, @ptrCast(self.vtable)).Clear(@as(*const IX509Attributes, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeExtensions_Value = Guid.initString("728ab324-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeExtensions = &IID_IX509AttributeExtensions_Value;
pub const IX509AttributeExtensions = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeExtensions,
                pExtensions: ?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeExtensions,
                pExtensions: ?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeExtensions,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeExtensions,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509Extensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeExtensions,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeExtensions,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeExtensions_InitializeEncode(self: *const T, pExtensions: ?*IX509Extensions) HRESULT {
                return @as(*const IX509AttributeExtensions.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509AttributeExtensions, @ptrCast(self)), pExtensions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeExtensions_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeExtensions.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeExtensions, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeExtensions_get_X509Extensions(self: *const T, ppValue: ?*?*IX509Extensions) HRESULT {
                return @as(*const IX509AttributeExtensions.VTable, @ptrCast(self.vtable)).get_X509Extensions(@as(*const IX509AttributeExtensions, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const RequestClientInfoClientId = enum(i32) {
    None = 0,
    XEnroll2003 = 1,
    AutoEnroll2003 = 2,
    Wizard2003 = 3,
    CertReq2003 = 4,
    DefaultRequest = 5,
    AutoEnroll = 6,
    RequestWizard = 7,
    EOBO = 8,
    CertReq = 9,
    Test = 10,
    WinRT = 11,
    UserStart = 1000,
};
pub const ClientIdNone = RequestClientInfoClientId.None;
pub const ClientIdXEnroll2003 = RequestClientInfoClientId.XEnroll2003;
pub const ClientIdAutoEnroll2003 = RequestClientInfoClientId.AutoEnroll2003;
pub const ClientIdWizard2003 = RequestClientInfoClientId.Wizard2003;
pub const ClientIdCertReq2003 = RequestClientInfoClientId.CertReq2003;
pub const ClientIdDefaultRequest = RequestClientInfoClientId.DefaultRequest;
pub const ClientIdAutoEnroll = RequestClientInfoClientId.AutoEnroll;
pub const ClientIdRequestWizard = RequestClientInfoClientId.RequestWizard;
pub const ClientIdEOBO = RequestClientInfoClientId.EOBO;
pub const ClientIdCertReq = RequestClientInfoClientId.CertReq;
pub const ClientIdTest = RequestClientInfoClientId.Test;
pub const ClientIdWinRT = RequestClientInfoClientId.WinRT;
pub const ClientIdUserStart = RequestClientInfoClientId.UserStart;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeClientId_Value = Guid.initString("728ab325-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeClientId = &IID_IX509AttributeClientId_Value;
pub const IX509AttributeClientId = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeClientId,
                ClientId: RequestClientInfoClientId,
                strMachineDnsName: ?BSTR,
                strUserSamName: ?BSTR,
                strProcessName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeClientId,
                ClientId: RequestClientInfoClientId,
                strMachineDnsName: ?BSTR,
                strUserSamName: ?BSTR,
                strProcessName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeClientId,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeClientId,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeClientId,
                pValue: ?*RequestClientInfoClientId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeClientId,
                pValue: ?*RequestClientInfoClientId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MachineDnsName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeClientId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeClientId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UserSamName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeClientId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeClientId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProcessName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeClientId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeClientId,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeClientId_InitializeEncode(self: *const T, ClientId: RequestClientInfoClientId, strMachineDnsName: ?BSTR, strUserSamName: ?BSTR, strProcessName: ?BSTR) HRESULT {
                return @as(*const IX509AttributeClientId.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509AttributeClientId, @ptrCast(self)), ClientId, strMachineDnsName, strUserSamName, strProcessName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeClientId_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeClientId.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeClientId, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeClientId_get_ClientId(self: *const T, pValue: ?*RequestClientInfoClientId) HRESULT {
                return @as(*const IX509AttributeClientId.VTable, @ptrCast(self.vtable)).get_ClientId(@as(*const IX509AttributeClientId, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeClientId_get_MachineDnsName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeClientId.VTable, @ptrCast(self.vtable)).get_MachineDnsName(@as(*const IX509AttributeClientId, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeClientId_get_UserSamName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeClientId.VTable, @ptrCast(self.vtable)).get_UserSamName(@as(*const IX509AttributeClientId, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeClientId_get_ProcessName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeClientId.VTable, @ptrCast(self.vtable)).get_ProcessName(@as(*const IX509AttributeClientId, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeRenewalCertificate_Value = Guid.initString("728ab326-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeRenewalCertificate = &IID_IX509AttributeRenewalCertificate_Value;
pub const IX509AttributeRenewalCertificate = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeRenewalCertificate,
                Encoding: EncodingType,
                strCert: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeRenewalCertificate,
                Encoding: EncodingType,
                strCert: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeRenewalCertificate,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeRenewalCertificate,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RenewalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeRenewalCertificate,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeRenewalCertificate,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeRenewalCertificate_InitializeEncode(self: *const T, Encoding: EncodingType, strCert: ?BSTR) HRESULT {
                return @as(*const IX509AttributeRenewalCertificate.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509AttributeRenewalCertificate, @ptrCast(self)), Encoding, strCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeRenewalCertificate_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeRenewalCertificate.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeRenewalCertificate, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeRenewalCertificate_get_RenewalCertificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeRenewalCertificate.VTable, @ptrCast(self.vtable)).get_RenewalCertificate(@as(*const IX509AttributeRenewalCertificate, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeArchiveKey_Value = Guid.initString("728ab327-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeArchiveKey = &IID_IX509AttributeArchiveKey_Value;
pub const IX509AttributeArchiveKey = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeArchiveKey,
                pKey: ?*IX509PrivateKey,
                Encoding: EncodingType,
                strCAXCert: ?BSTR,
                pAlgorithm: ?*IObjectId,
                EncryptionStrength: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeArchiveKey,
                pKey: ?*IX509PrivateKey,
                Encoding: EncodingType,
                strCAXCert: ?BSTR,
                pAlgorithm: ?*IObjectId,
                EncryptionStrength: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeArchiveKey,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeArchiveKey,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptedKeyBlob: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeArchiveKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeArchiveKey,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptionAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeArchiveKey,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeArchiveKey,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptionStrength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeArchiveKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeArchiveKey,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKey_InitializeEncode(self: *const T, pKey: ?*IX509PrivateKey, Encoding: EncodingType, strCAXCert: ?BSTR, pAlgorithm: ?*IObjectId, EncryptionStrength: i32) HRESULT {
                return @as(*const IX509AttributeArchiveKey.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509AttributeArchiveKey, @ptrCast(self)), pKey, Encoding, strCAXCert, pAlgorithm, EncryptionStrength);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKey_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeArchiveKey.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeArchiveKey, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKey_get_EncryptedKeyBlob(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeArchiveKey.VTable, @ptrCast(self.vtable)).get_EncryptedKeyBlob(@as(*const IX509AttributeArchiveKey, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKey_get_EncryptionAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509AttributeArchiveKey.VTable, @ptrCast(self.vtable)).get_EncryptionAlgorithm(@as(*const IX509AttributeArchiveKey, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKey_get_EncryptionStrength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509AttributeArchiveKey.VTable, @ptrCast(self.vtable)).get_EncryptionStrength(@as(*const IX509AttributeArchiveKey, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeArchiveKeyHash_Value = Guid.initString("728ab328-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeArchiveKeyHash = &IID_IX509AttributeArchiveKeyHash_Value;
pub const IX509AttributeArchiveKeyHash = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncodeFromEncryptedKeyBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeArchiveKeyHash,
                Encoding: EncodingType,
                strEncryptedKeyBlob: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeArchiveKeyHash,
                Encoding: EncodingType,
                strEncryptedKeyBlob: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeArchiveKeyHash,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeArchiveKeyHash,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptedKeyHashBlob: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeArchiveKeyHash,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeArchiveKeyHash,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKeyHash_InitializeEncodeFromEncryptedKeyBlob(self: *const T, Encoding: EncodingType, strEncryptedKeyBlob: ?BSTR) HRESULT {
                return @as(*const IX509AttributeArchiveKeyHash.VTable, @ptrCast(self.vtable)).InitializeEncodeFromEncryptedKeyBlob(@as(*const IX509AttributeArchiveKeyHash, @ptrCast(self)), Encoding, strEncryptedKeyBlob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKeyHash_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeArchiveKeyHash.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeArchiveKeyHash, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeArchiveKeyHash_get_EncryptedKeyHashBlob(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeArchiveKeyHash.VTable, @ptrCast(self.vtable)).get_EncryptedKeyHashBlob(@as(*const IX509AttributeArchiveKeyHash, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeOSVersion_Value = Guid.initString("728ab32a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeOSVersion = &IID_IX509AttributeOSVersion_Value;
pub const IX509AttributeOSVersion = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeOSVersion,
                strOSVersion: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeOSVersion,
                strOSVersion: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeOSVersion,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeOSVersion,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OSVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeOSVersion,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeOSVersion,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeOSVersion_InitializeEncode(self: *const T, strOSVersion: ?BSTR) HRESULT {
                return @as(*const IX509AttributeOSVersion.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509AttributeOSVersion, @ptrCast(self)), strOSVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeOSVersion_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeOSVersion.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeOSVersion, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeOSVersion_get_OSVersion(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeOSVersion.VTable, @ptrCast(self.vtable)).get_OSVersion(@as(*const IX509AttributeOSVersion, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509AttributeCspProvider_Value = Guid.initString("728ab32b-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509AttributeCspProvider = &IID_IX509AttributeCspProvider_Value;
pub const IX509AttributeCspProvider = extern struct {
    pub const VTable = extern struct {
        base: IX509Attribute.VTable,
        InitializeEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeCspProvider,
                KeySpec: X509KeySpec,
                strProviderName: ?BSTR,
                Encoding: EncodingType,
                strSignature: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeCspProvider,
                KeySpec: X509KeySpec,
                strProviderName: ?BSTR,
                Encoding: EncodingType,
                strSignature: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509AttributeCspProvider,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509AttributeCspProvider,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeCspProvider,
                pValue: ?*X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeCspProvider,
                pValue: ?*X509KeySpec,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeCspProvider,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeCspProvider,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Signature: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509AttributeCspProvider,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509AttributeCspProvider,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Attribute.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeCspProvider_InitializeEncode(self: *const T, KeySpec: X509KeySpec, strProviderName: ?BSTR, Encoding: EncodingType, strSignature: ?BSTR) HRESULT {
                return @as(*const IX509AttributeCspProvider.VTable, @ptrCast(self.vtable)).InitializeEncode(@as(*const IX509AttributeCspProvider, @ptrCast(self)), KeySpec, strProviderName, Encoding, strSignature);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeCspProvider_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const IX509AttributeCspProvider.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509AttributeCspProvider, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeCspProvider_get_KeySpec(self: *const T, pValue: ?*X509KeySpec) HRESULT {
                return @as(*const IX509AttributeCspProvider.VTable, @ptrCast(self.vtable)).get_KeySpec(@as(*const IX509AttributeCspProvider, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeCspProvider_get_ProviderName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeCspProvider.VTable, @ptrCast(self.vtable)).get_ProviderName(@as(*const IX509AttributeCspProvider, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509AttributeCspProvider_get_Signature(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509AttributeCspProvider.VTable, @ptrCast(self.vtable)).get_Signature(@as(*const IX509AttributeCspProvider, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICryptAttribute_Value = Guid.initString("728ab32c-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICryptAttribute = &IID_ICryptAttribute_Value;
pub const ICryptAttribute = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        InitializeFromObjectId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICryptAttribute,
                pObjectId: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICryptAttribute,
                pObjectId: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromValues: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICryptAttribute,
                pAttributes: ?*IX509Attributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICryptAttribute,
                pAttributes: ?*IX509Attributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICryptAttribute,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICryptAttribute,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Values: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICryptAttribute,
                ppValue: ?*?*IX509Attributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICryptAttribute,
                ppValue: ?*?*IX509Attributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttribute_InitializeFromObjectId(self: *const T, pObjectId: ?*IObjectId) HRESULT {
                return @as(*const ICryptAttribute.VTable, @ptrCast(self.vtable)).InitializeFromObjectId(@as(*const ICryptAttribute, @ptrCast(self)), pObjectId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttribute_InitializeFromValues(self: *const T, pAttributes: ?*IX509Attributes) HRESULT {
                return @as(*const ICryptAttribute.VTable, @ptrCast(self.vtable)).InitializeFromValues(@as(*const ICryptAttribute, @ptrCast(self)), pAttributes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttribute_get_ObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const ICryptAttribute.VTable, @ptrCast(self.vtable)).get_ObjectId(@as(*const ICryptAttribute, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttribute_get_Values(self: *const T, ppValue: ?*?*IX509Attributes) HRESULT {
                return @as(*const ICryptAttribute.VTable, @ptrCast(self.vtable)).get_Values(@as(*const ICryptAttribute, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICryptAttributes_Value = Guid.initString("728ab32d-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICryptAttributes = &IID_ICryptAttributes_Value;
pub const ICryptAttributes = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICryptAttributes,
                Index: i32,
                pVal: ?*?*ICryptAttribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICryptAttributes,
                Index: i32,
                pVal: ?*?*ICryptAttribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICryptAttributes,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICryptAttributes,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICryptAttributes,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICryptAttributes,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICryptAttributes,
                pVal: ?*ICryptAttribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICryptAttributes,
                pVal: ?*ICryptAttribute,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICryptAttributes,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICryptAttributes,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IndexByObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICryptAttributes,
                pObjectId: ?*IObjectId,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICryptAttributes,
                pObjectId: ?*IObjectId,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICryptAttributes,
                pValue: ?*ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICryptAttributes,
                pValue: ?*ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICryptAttribute) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICryptAttributes, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICryptAttributes, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICryptAttributes, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_Add(self: *const T, pVal: ?*ICryptAttribute) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).Add(@as(*const ICryptAttributes, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICryptAttributes, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_Clear(self: *const T) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICryptAttributes, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_get_IndexByObjectId(self: *const T, pObjectId: ?*IObjectId, pIndex: ?*i32) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).get_IndexByObjectId(@as(*const ICryptAttributes, @ptrCast(self)), pObjectId, pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICryptAttributes_AddRange(self: *const T, pValue: ?*ICryptAttributes) HRESULT {
                return @as(*const ICryptAttributes.VTable, @ptrCast(self.vtable)).AddRange(@as(*const ICryptAttributes, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const CERTENROLL_PROPERTYID = enum(i32) {
    PROPERTYID_NONE = 0,
    CERT_KEY_PROV_HANDLE_PROP_ID = 1,
    CERT_KEY_PROV_INFO_PROP_ID = 2,
    CERT_SHA1_HASH_PROP_ID = 3,
    CERT_MD5_HASH_PROP_ID = 4,
    // CERT_HASH_PROP_ID = 3, this enum value conflicts with CERT_SHA1_HASH_PROP_ID
    CERT_KEY_CONTEXT_PROP_ID = 5,
    CERT_KEY_SPEC_PROP_ID = 6,
    CERT_IE30_RESERVED_PROP_ID = 7,
    CERT_PUBKEY_HASH_RESERVED_PROP_ID = 8,
    CERT_ENHKEY_USAGE_PROP_ID = 9,
    // CERT_CTL_USAGE_PROP_ID = 9, this enum value conflicts with CERT_ENHKEY_USAGE_PROP_ID
    CERT_NEXT_UPDATE_LOCATION_PROP_ID = 10,
    CERT_FRIENDLY_NAME_PROP_ID = 11,
    CERT_PVK_FILE_PROP_ID = 12,
    CERT_DESCRIPTION_PROP_ID = 13,
    CERT_ACCESS_STATE_PROP_ID = 14,
    CERT_SIGNATURE_HASH_PROP_ID = 15,
    CERT_SMART_CARD_DATA_PROP_ID = 16,
    CERT_EFS_PROP_ID = 17,
    CERT_FORTEZZA_DATA_PROP_ID = 18,
    CERT_ARCHIVED_PROP_ID = 19,
    CERT_KEY_IDENTIFIER_PROP_ID = 20,
    CERT_AUTO_ENROLL_PROP_ID = 21,
    CERT_PUBKEY_ALG_PARA_PROP_ID = 22,
    CERT_CROSS_CERT_DIST_POINTS_PROP_ID = 23,
    CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID = 24,
    CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID = 25,
    CERT_ENROLLMENT_PROP_ID = 26,
    CERT_DATE_STAMP_PROP_ID = 27,
    CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID = 28,
    CERT_SUBJECT_NAME_MD5_HASH_PROP_ID = 29,
    CERT_EXTENDED_ERROR_INFO_PROP_ID = 30,
    CERT_RENEWAL_PROP_ID = 64,
    CERT_ARCHIVED_KEY_HASH_PROP_ID = 65,
    CERT_AUTO_ENROLL_RETRY_PROP_ID = 66,
    CERT_AIA_URL_RETRIEVED_PROP_ID = 67,
    CERT_AUTHORITY_INFO_ACCESS_PROP_ID = 68,
    CERT_BACKED_UP_PROP_ID = 69,
    CERT_OCSP_RESPONSE_PROP_ID = 70,
    CERT_REQUEST_ORIGINATOR_PROP_ID = 71,
    CERT_SOURCE_LOCATION_PROP_ID = 72,
    CERT_SOURCE_URL_PROP_ID = 73,
    CERT_NEW_KEY_PROP_ID = 74,
    CERT_OCSP_CACHE_PREFIX_PROP_ID = 75,
    CERT_SMART_CARD_ROOT_INFO_PROP_ID = 76,
    CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID = 77,
    CERT_NCRYPT_KEY_HANDLE_PROP_ID = 78,
    CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID = 79,
    CERT_SUBJECT_INFO_ACCESS_PROP_ID = 80,
    CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID = 81,
    CERT_CA_DISABLE_CRL_PROP_ID = 82,
    CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID = 83,
    CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID = 84,
    CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID = 85,
    CERT_SUBJECT_DISABLE_CRL_PROP_ID = 86,
    CERT_CEP_PROP_ID = 87,
    CERT_SIGN_HASH_CNG_ALG_PROP_ID = 89,
    CERT_SCARD_PIN_ID_PROP_ID = 90,
    CERT_SCARD_PIN_INFO_PROP_ID = 91,
    CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID = 92,
    CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = 93,
    CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID = 94,
    CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID = 95,
    CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = 96,
    CERT_NO_EXPIRE_NOTIFICATION_PROP_ID = 97,
    CERT_AUTH_ROOT_SHA256_HASH_PROP_ID = 98,
    CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID = 99,
    CERT_HCRYPTPROV_TRANSFER_PROP_ID = 100,
    CERT_SMART_CARD_READER_PROP_ID = 101,
    CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID = 102,
    CERT_KEY_REPAIR_ATTEMPTED_PROP_ID = 103,
    CERT_DISALLOWED_FILETIME_PROP_ID = 104,
    CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID = 105,
    CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID = 106,
    CERT_SHA256_HASH_PROP_ID = 107,
    CERT_SCEP_SERVER_CERTS_PROP_ID = 108,
    CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID = 109,
    CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID = 110,
    CERT_SCEP_CA_CERT_PROP_ID = 111,
    CERT_SCEP_SIGNER_CERT_PROP_ID = 112,
    CERT_SCEP_NONCE_PROP_ID = 113,
    CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID = 114,
    CERT_SCEP_FLAGS_PROP_ID = 115,
    CERT_SCEP_GUID_PROP_ID = 116,
    CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID = 117,
    CERT_ISOLATED_KEY_PROP_ID = 118,
    CERT_SERIAL_CHAIN_PROP_ID = 119,
    CERT_KEY_CLASSIFICATION_PROP_ID = 120,
    CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID = 122,
    CERT_NONCOMPLIANT_ROOT_URL_PROP_ID = 123,
    CERT_PIN_SHA256_HASH_PROP_ID = 124,
    CERT_CLR_DELETE_KEY_PROP_ID = 125,
    CERT_NOT_BEFORE_FILETIME_PROP_ID = 126,
    CERT_CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID = 127,
    CERT_FIRST_RESERVED_PROP_ID = 128,
    CERT_LAST_RESERVED_PROP_ID = 32767,
    CERT_FIRST_USER_PROP_ID = 32768,
    CERT_LAST_USER_PROP_ID = 65535,
    CERT_STORE_LOCALIZED_NAME_PROP_ID = 4096,
};
pub const XCN_PROPERTYID_NONE = CERTENROLL_PROPERTYID.PROPERTYID_NONE;
pub const XCN_CERT_KEY_PROV_HANDLE_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_PROV_HANDLE_PROP_ID;
pub const XCN_CERT_KEY_PROV_INFO_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_PROV_INFO_PROP_ID;
pub const XCN_CERT_SHA1_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SHA1_HASH_PROP_ID;
pub const XCN_CERT_MD5_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_MD5_HASH_PROP_ID;
pub const XCN_CERT_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SHA1_HASH_PROP_ID;
pub const XCN_CERT_KEY_CONTEXT_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_CONTEXT_PROP_ID;
pub const XCN_CERT_KEY_SPEC_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_SPEC_PROP_ID;
pub const XCN_CERT_IE30_RESERVED_PROP_ID = CERTENROLL_PROPERTYID.CERT_IE30_RESERVED_PROP_ID;
pub const XCN_CERT_PUBKEY_HASH_RESERVED_PROP_ID = CERTENROLL_PROPERTYID.CERT_PUBKEY_HASH_RESERVED_PROP_ID;
pub const XCN_CERT_ENHKEY_USAGE_PROP_ID = CERTENROLL_PROPERTYID.CERT_ENHKEY_USAGE_PROP_ID;
pub const XCN_CERT_CTL_USAGE_PROP_ID = CERTENROLL_PROPERTYID.CERT_ENHKEY_USAGE_PROP_ID;
pub const XCN_CERT_NEXT_UPDATE_LOCATION_PROP_ID = CERTENROLL_PROPERTYID.CERT_NEXT_UPDATE_LOCATION_PROP_ID;
pub const XCN_CERT_FRIENDLY_NAME_PROP_ID = CERTENROLL_PROPERTYID.CERT_FRIENDLY_NAME_PROP_ID;
pub const XCN_CERT_PVK_FILE_PROP_ID = CERTENROLL_PROPERTYID.CERT_PVK_FILE_PROP_ID;
pub const XCN_CERT_DESCRIPTION_PROP_ID = CERTENROLL_PROPERTYID.CERT_DESCRIPTION_PROP_ID;
pub const XCN_CERT_ACCESS_STATE_PROP_ID = CERTENROLL_PROPERTYID.CERT_ACCESS_STATE_PROP_ID;
pub const XCN_CERT_SIGNATURE_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SIGNATURE_HASH_PROP_ID;
pub const XCN_CERT_SMART_CARD_DATA_PROP_ID = CERTENROLL_PROPERTYID.CERT_SMART_CARD_DATA_PROP_ID;
pub const XCN_CERT_EFS_PROP_ID = CERTENROLL_PROPERTYID.CERT_EFS_PROP_ID;
pub const XCN_CERT_FORTEZZA_DATA_PROP_ID = CERTENROLL_PROPERTYID.CERT_FORTEZZA_DATA_PROP_ID;
pub const XCN_CERT_ARCHIVED_PROP_ID = CERTENROLL_PROPERTYID.CERT_ARCHIVED_PROP_ID;
pub const XCN_CERT_KEY_IDENTIFIER_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_IDENTIFIER_PROP_ID;
pub const XCN_CERT_AUTO_ENROLL_PROP_ID = CERTENROLL_PROPERTYID.CERT_AUTO_ENROLL_PROP_ID;
pub const XCN_CERT_PUBKEY_ALG_PARA_PROP_ID = CERTENROLL_PROPERTYID.CERT_PUBKEY_ALG_PARA_PROP_ID;
pub const XCN_CERT_CROSS_CERT_DIST_POINTS_PROP_ID = CERTENROLL_PROPERTYID.CERT_CROSS_CERT_DIST_POINTS_PROP_ID;
pub const XCN_CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID;
pub const XCN_CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID;
pub const XCN_CERT_ENROLLMENT_PROP_ID = CERTENROLL_PROPERTYID.CERT_ENROLLMENT_PROP_ID;
pub const XCN_CERT_DATE_STAMP_PROP_ID = CERTENROLL_PROPERTYID.CERT_DATE_STAMP_PROP_ID;
pub const XCN_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID;
pub const XCN_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SUBJECT_NAME_MD5_HASH_PROP_ID;
pub const XCN_CERT_EXTENDED_ERROR_INFO_PROP_ID = CERTENROLL_PROPERTYID.CERT_EXTENDED_ERROR_INFO_PROP_ID;
pub const XCN_CERT_RENEWAL_PROP_ID = CERTENROLL_PROPERTYID.CERT_RENEWAL_PROP_ID;
pub const XCN_CERT_ARCHIVED_KEY_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_ARCHIVED_KEY_HASH_PROP_ID;
pub const XCN_CERT_AUTO_ENROLL_RETRY_PROP_ID = CERTENROLL_PROPERTYID.CERT_AUTO_ENROLL_RETRY_PROP_ID;
pub const XCN_CERT_AIA_URL_RETRIEVED_PROP_ID = CERTENROLL_PROPERTYID.CERT_AIA_URL_RETRIEVED_PROP_ID;
pub const XCN_CERT_AUTHORITY_INFO_ACCESS_PROP_ID = CERTENROLL_PROPERTYID.CERT_AUTHORITY_INFO_ACCESS_PROP_ID;
pub const XCN_CERT_BACKED_UP_PROP_ID = CERTENROLL_PROPERTYID.CERT_BACKED_UP_PROP_ID;
pub const XCN_CERT_OCSP_RESPONSE_PROP_ID = CERTENROLL_PROPERTYID.CERT_OCSP_RESPONSE_PROP_ID;
pub const XCN_CERT_REQUEST_ORIGINATOR_PROP_ID = CERTENROLL_PROPERTYID.CERT_REQUEST_ORIGINATOR_PROP_ID;
pub const XCN_CERT_SOURCE_LOCATION_PROP_ID = CERTENROLL_PROPERTYID.CERT_SOURCE_LOCATION_PROP_ID;
pub const XCN_CERT_SOURCE_URL_PROP_ID = CERTENROLL_PROPERTYID.CERT_SOURCE_URL_PROP_ID;
pub const XCN_CERT_NEW_KEY_PROP_ID = CERTENROLL_PROPERTYID.CERT_NEW_KEY_PROP_ID;
pub const XCN_CERT_OCSP_CACHE_PREFIX_PROP_ID = CERTENROLL_PROPERTYID.CERT_OCSP_CACHE_PREFIX_PROP_ID;
pub const XCN_CERT_SMART_CARD_ROOT_INFO_PROP_ID = CERTENROLL_PROPERTYID.CERT_SMART_CARD_ROOT_INFO_PROP_ID;
pub const XCN_CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID = CERTENROLL_PROPERTYID.CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID;
pub const XCN_CERT_NCRYPT_KEY_HANDLE_PROP_ID = CERTENROLL_PROPERTYID.CERT_NCRYPT_KEY_HANDLE_PROP_ID;
pub const XCN_CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID = CERTENROLL_PROPERTYID.CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID;
pub const XCN_CERT_SUBJECT_INFO_ACCESS_PROP_ID = CERTENROLL_PROPERTYID.CERT_SUBJECT_INFO_ACCESS_PROP_ID;
pub const XCN_CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID = CERTENROLL_PROPERTYID.CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID;
pub const XCN_CERT_CA_DISABLE_CRL_PROP_ID = CERTENROLL_PROPERTYID.CERT_CA_DISABLE_CRL_PROP_ID;
pub const XCN_CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID = CERTENROLL_PROPERTYID.CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID;
pub const XCN_CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID = CERTENROLL_PROPERTYID.CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID;
pub const XCN_CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID = CERTENROLL_PROPERTYID.CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID;
pub const XCN_CERT_SUBJECT_DISABLE_CRL_PROP_ID = CERTENROLL_PROPERTYID.CERT_SUBJECT_DISABLE_CRL_PROP_ID;
pub const XCN_CERT_CEP_PROP_ID = CERTENROLL_PROPERTYID.CERT_CEP_PROP_ID;
pub const XCN_CERT_SIGN_HASH_CNG_ALG_PROP_ID = CERTENROLL_PROPERTYID.CERT_SIGN_HASH_CNG_ALG_PROP_ID;
pub const XCN_CERT_SCARD_PIN_ID_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCARD_PIN_ID_PROP_ID;
pub const XCN_CERT_SCARD_PIN_INFO_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCARD_PIN_INFO_PROP_ID;
pub const XCN_CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID;
pub const XCN_CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = CERTENROLL_PROPERTYID.CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID;
pub const XCN_CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID = CERTENROLL_PROPERTYID.CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID;
pub const XCN_CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID = CERTENROLL_PROPERTYID.CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID;
pub const XCN_CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = CERTENROLL_PROPERTYID.CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID;
pub const XCN_CERT_NO_EXPIRE_NOTIFICATION_PROP_ID = CERTENROLL_PROPERTYID.CERT_NO_EXPIRE_NOTIFICATION_PROP_ID;
pub const XCN_CERT_AUTH_ROOT_SHA256_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_AUTH_ROOT_SHA256_HASH_PROP_ID;
pub const XCN_CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID = CERTENROLL_PROPERTYID.CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID;
pub const XCN_CERT_HCRYPTPROV_TRANSFER_PROP_ID = CERTENROLL_PROPERTYID.CERT_HCRYPTPROV_TRANSFER_PROP_ID;
pub const XCN_CERT_SMART_CARD_READER_PROP_ID = CERTENROLL_PROPERTYID.CERT_SMART_CARD_READER_PROP_ID;
pub const XCN_CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID = CERTENROLL_PROPERTYID.CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID;
pub const XCN_CERT_KEY_REPAIR_ATTEMPTED_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_REPAIR_ATTEMPTED_PROP_ID;
pub const XCN_CERT_DISALLOWED_FILETIME_PROP_ID = CERTENROLL_PROPERTYID.CERT_DISALLOWED_FILETIME_PROP_ID;
pub const XCN_CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID = CERTENROLL_PROPERTYID.CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID;
pub const XCN_CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID = CERTENROLL_PROPERTYID.CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID;
pub const XCN_CERT_SHA256_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_SHA256_HASH_PROP_ID;
pub const XCN_CERT_SCEP_SERVER_CERTS_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_SERVER_CERTS_PROP_ID;
pub const XCN_CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID;
pub const XCN_CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID;
pub const XCN_CERT_SCEP_CA_CERT_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_CA_CERT_PROP_ID;
pub const XCN_CERT_SCEP_SIGNER_CERT_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_SIGNER_CERT_PROP_ID;
pub const XCN_CERT_SCEP_NONCE_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_NONCE_PROP_ID;
pub const XCN_CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID;
pub const XCN_CERT_SCEP_FLAGS_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_FLAGS_PROP_ID;
pub const XCN_CERT_SCEP_GUID_PROP_ID = CERTENROLL_PROPERTYID.CERT_SCEP_GUID_PROP_ID;
pub const XCN_CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID = CERTENROLL_PROPERTYID.CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID;
pub const XCN_CERT_ISOLATED_KEY_PROP_ID = CERTENROLL_PROPERTYID.CERT_ISOLATED_KEY_PROP_ID;
pub const XCN_CERT_SERIAL_CHAIN_PROP_ID = CERTENROLL_PROPERTYID.CERT_SERIAL_CHAIN_PROP_ID;
pub const XCN_CERT_KEY_CLASSIFICATION_PROP_ID = CERTENROLL_PROPERTYID.CERT_KEY_CLASSIFICATION_PROP_ID;
pub const XCN_CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID = CERTENROLL_PROPERTYID.CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID;
pub const XCN_CERT_NONCOMPLIANT_ROOT_URL_PROP_ID = CERTENROLL_PROPERTYID.CERT_NONCOMPLIANT_ROOT_URL_PROP_ID;
pub const XCN_CERT_PIN_SHA256_HASH_PROP_ID = CERTENROLL_PROPERTYID.CERT_PIN_SHA256_HASH_PROP_ID;
pub const XCN_CERT_CLR_DELETE_KEY_PROP_ID = CERTENROLL_PROPERTYID.CERT_CLR_DELETE_KEY_PROP_ID;
pub const XCN_CERT_NOT_BEFORE_FILETIME_PROP_ID = CERTENROLL_PROPERTYID.CERT_NOT_BEFORE_FILETIME_PROP_ID;
pub const XCN_CERT_CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID = CERTENROLL_PROPERTYID.CERT_CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID;
pub const XCN_CERT_FIRST_RESERVED_PROP_ID = CERTENROLL_PROPERTYID.CERT_FIRST_RESERVED_PROP_ID;
pub const XCN_CERT_LAST_RESERVED_PROP_ID = CERTENROLL_PROPERTYID.CERT_LAST_RESERVED_PROP_ID;
pub const XCN_CERT_FIRST_USER_PROP_ID = CERTENROLL_PROPERTYID.CERT_FIRST_USER_PROP_ID;
pub const XCN_CERT_LAST_USER_PROP_ID = CERTENROLL_PROPERTYID.CERT_LAST_USER_PROP_ID;
pub const XCN_CERT_STORE_LOCALIZED_NAME_PROP_ID = CERTENROLL_PROPERTYID.CERT_STORE_LOCALIZED_NAME_PROP_ID;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertProperty_Value = Guid.initString("728ab32e-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertProperty = &IID_ICertProperty_Value;
pub const ICertProperty = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        InitializeFromCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperty,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperty,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperty,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperty,
                Encoding: EncodingType,
                strEncodedData: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PropertyId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertProperty,
                pValue: ?*CERTENROLL_PROPERTYID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertProperty,
                pValue: ?*CERTENROLL_PROPERTYID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PropertyId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertProperty,
                Value: CERTENROLL_PROPERTYID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertProperty,
                Value: CERTENROLL_PROPERTYID,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertProperty,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertProperty,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RemoveFromCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperty,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperty,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetValueOnCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperty,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperty,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_InitializeFromCertificate(self: *const T, MachineContext: i16, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).InitializeFromCertificate(@as(*const ICertProperty, @ptrCast(self)), MachineContext, Encoding, strCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_InitializeDecode(self: *const T, Encoding: EncodingType, strEncodedData: ?BSTR) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const ICertProperty, @ptrCast(self)), Encoding, strEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_get_PropertyId(self: *const T, pValue: ?*CERTENROLL_PROPERTYID) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).get_PropertyId(@as(*const ICertProperty, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_put_PropertyId(self: *const T, Value: CERTENROLL_PROPERTYID) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).put_PropertyId(@as(*const ICertProperty, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const ICertProperty, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_RemoveFromCertificate(self: *const T, MachineContext: i16, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).RemoveFromCertificate(@as(*const ICertProperty, @ptrCast(self)), MachineContext, Encoding, strCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperty_SetValueOnCertificate(self: *const T, MachineContext: i16, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const ICertProperty.VTable, @ptrCast(self.vtable)).SetValueOnCertificate(@as(*const ICertProperty, @ptrCast(self)), MachineContext, Encoding, strCertificate);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertProperties_Value = Guid.initString("728ab32f-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertProperties = &IID_ICertProperties_Value;
pub const ICertProperties = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertProperties,
                Index: i32,
                pVal: ?*?*ICertProperty,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertProperties,
                Index: i32,
                pVal: ?*?*ICertProperty,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertProperties,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertProperties,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertProperties,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertProperties,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperties,
                pVal: ?*ICertProperty,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperties,
                pVal: ?*ICertProperty,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperties,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperties,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperties,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperties,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertProperties,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertProperties,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICertProperty) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICertProperties, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICertProperties, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICertProperties, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_Add(self: *const T, pVal: ?*ICertProperty) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).Add(@as(*const ICertProperties, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICertProperties, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_Clear(self: *const T) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICertProperties, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertProperties_InitializeFromCertificate(self: *const T, MachineContext: i16, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const ICertProperties.VTable, @ptrCast(self.vtable)).InitializeFromCertificate(@as(*const ICertProperties, @ptrCast(self)), MachineContext, Encoding, strCertificate);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyFriendlyName_Value = Guid.initString("728ab330-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyFriendlyName = &IID_ICertPropertyFriendlyName_Value;
pub const ICertPropertyFriendlyName = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyFriendlyName,
                strFriendlyName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyFriendlyName,
                strFriendlyName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyFriendlyName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyFriendlyName,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyFriendlyName_Initialize(self: *const T, strFriendlyName: ?BSTR) HRESULT {
                return @as(*const ICertPropertyFriendlyName.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyFriendlyName, @ptrCast(self)), strFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyFriendlyName_get_FriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyFriendlyName.VTable, @ptrCast(self.vtable)).get_FriendlyName(@as(*const ICertPropertyFriendlyName, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyDescription_Value = Guid.initString("728ab331-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyDescription = &IID_ICertPropertyDescription_Value;
pub const ICertPropertyDescription = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyDescription,
                strDescription: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyDescription,
                strDescription: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyDescription,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyDescription,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyDescription_Initialize(self: *const T, strDescription: ?BSTR) HRESULT {
                return @as(*const ICertPropertyDescription.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyDescription, @ptrCast(self)), strDescription);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyDescription_get_Description(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyDescription.VTable, @ptrCast(self.vtable)).get_Description(@as(*const ICertPropertyDescription, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyAutoEnroll_Value = Guid.initString("728ab332-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyAutoEnroll = &IID_ICertPropertyAutoEnroll_Value;
pub const ICertPropertyAutoEnroll = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyAutoEnroll,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyAutoEnroll,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TemplateName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyAutoEnroll,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyAutoEnroll,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyAutoEnroll_Initialize(self: *const T, strTemplateName: ?BSTR) HRESULT {
                return @as(*const ICertPropertyAutoEnroll.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyAutoEnroll, @ptrCast(self)), strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyAutoEnroll_get_TemplateName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyAutoEnroll.VTable, @ptrCast(self.vtable)).get_TemplateName(@as(*const ICertPropertyAutoEnroll, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyRequestOriginator_Value = Guid.initString("728ab333-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyRequestOriginator = &IID_ICertPropertyRequestOriginator_Value;
pub const ICertPropertyRequestOriginator = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyRequestOriginator,
                strRequestOriginator: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyRequestOriginator,
                strRequestOriginator: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromLocalRequestOriginator: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyRequestOriginator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyRequestOriginator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestOriginator: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyRequestOriginator,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyRequestOriginator,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyRequestOriginator_Initialize(self: *const T, strRequestOriginator: ?BSTR) HRESULT {
                return @as(*const ICertPropertyRequestOriginator.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyRequestOriginator, @ptrCast(self)), strRequestOriginator);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyRequestOriginator_InitializeFromLocalRequestOriginator(self: *const T) HRESULT {
                return @as(*const ICertPropertyRequestOriginator.VTable, @ptrCast(self.vtable)).InitializeFromLocalRequestOriginator(@as(*const ICertPropertyRequestOriginator, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyRequestOriginator_get_RequestOriginator(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyRequestOriginator.VTable, @ptrCast(self.vtable)).get_RequestOriginator(@as(*const ICertPropertyRequestOriginator, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertySHA1Hash_Value = Guid.initString("728ab334-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertySHA1Hash = &IID_ICertPropertySHA1Hash_Value;
pub const ICertPropertySHA1Hash = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertySHA1Hash,
                Encoding: EncodingType,
                strRenewalValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertySHA1Hash,
                Encoding: EncodingType,
                strRenewalValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SHA1Hash: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertySHA1Hash,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertySHA1Hash,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertySHA1Hash_Initialize(self: *const T, Encoding: EncodingType, strRenewalValue: ?BSTR) HRESULT {
                return @as(*const ICertPropertySHA1Hash.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertySHA1Hash, @ptrCast(self)), Encoding, strRenewalValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertySHA1Hash_get_SHA1Hash(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertySHA1Hash.VTable, @ptrCast(self.vtable)).get_SHA1Hash(@as(*const ICertPropertySHA1Hash, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyKeyProvInfo_Value = Guid.initString("728ab336-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyKeyProvInfo = &IID_ICertPropertyKeyProvInfo_Value;
pub const ICertPropertyKeyProvInfo = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyKeyProvInfo,
                pValue: ?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyKeyProvInfo,
                pValue: ?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyKeyProvInfo,
                ppValue: ?*?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyKeyProvInfo,
                ppValue: ?*?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyKeyProvInfo_Initialize(self: *const T, pValue: ?*IX509PrivateKey) HRESULT {
                return @as(*const ICertPropertyKeyProvInfo.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyKeyProvInfo, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyKeyProvInfo_get_PrivateKey(self: *const T, ppValue: ?*?*IX509PrivateKey) HRESULT {
                return @as(*const ICertPropertyKeyProvInfo.VTable, @ptrCast(self.vtable)).get_PrivateKey(@as(*const ICertPropertyKeyProvInfo, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyArchived_Value = Guid.initString("728ab337-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyArchived = &IID_ICertPropertyArchived_Value;
pub const ICertPropertyArchived = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyArchived,
                ArchivedValue: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyArchived,
                ArchivedValue: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Archived: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyArchived,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyArchived,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyArchived_Initialize(self: *const T, ArchivedValue: i16) HRESULT {
                return @as(*const ICertPropertyArchived.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyArchived, @ptrCast(self)), ArchivedValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyArchived_get_Archived(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICertPropertyArchived.VTable, @ptrCast(self.vtable)).get_Archived(@as(*const ICertPropertyArchived, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyBackedUp_Value = Guid.initString("728ab338-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyBackedUp = &IID_ICertPropertyBackedUp_Value;
pub const ICertPropertyBackedUp = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        InitializeFromCurrentTime: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyBackedUp,
                BackedUpValue: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyBackedUp,
                BackedUpValue: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyBackedUp,
                BackedUpValue: i16,
                Date: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyBackedUp,
                BackedUpValue: i16,
                Date: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BackedUpValue: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyBackedUp,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyBackedUp,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BackedUpTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyBackedUp,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyBackedUp,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyBackedUp_InitializeFromCurrentTime(self: *const T, BackedUpValue: i16) HRESULT {
                return @as(*const ICertPropertyBackedUp.VTable, @ptrCast(self.vtable)).InitializeFromCurrentTime(@as(*const ICertPropertyBackedUp, @ptrCast(self)), BackedUpValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyBackedUp_Initialize(self: *const T, BackedUpValue: i16, Date: f64) HRESULT {
                return @as(*const ICertPropertyBackedUp.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyBackedUp, @ptrCast(self)), BackedUpValue, Date);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyBackedUp_get_BackedUpValue(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ICertPropertyBackedUp.VTable, @ptrCast(self.vtable)).get_BackedUpValue(@as(*const ICertPropertyBackedUp, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyBackedUp_get_BackedUpTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const ICertPropertyBackedUp.VTable, @ptrCast(self.vtable)).get_BackedUpTime(@as(*const ICertPropertyBackedUp, @ptrCast(self)), pDate);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyEnrollment_Value = Guid.initString("728ab339-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyEnrollment = &IID_ICertPropertyEnrollment_Value;
pub const ICertPropertyEnrollment = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollment,
                RequestId: i32,
                strCADnsName: ?BSTR,
                strCAName: ?BSTR,
                strFriendlyName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollment,
                RequestId: i32,
                strCADnsName: ?BSTR,
                strCAName: ?BSTR,
                strFriendlyName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CADnsName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollment_Initialize(self: *const T, RequestId: i32, strCADnsName: ?BSTR, strCAName: ?BSTR, strFriendlyName: ?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollment.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyEnrollment, @ptrCast(self)), RequestId, strCADnsName, strCAName, strFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollment_get_RequestId(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ICertPropertyEnrollment.VTable, @ptrCast(self.vtable)).get_RequestId(@as(*const ICertPropertyEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollment_get_CADnsName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollment.VTable, @ptrCast(self.vtable)).get_CADnsName(@as(*const ICertPropertyEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollment_get_CAName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollment.VTable, @ptrCast(self.vtable)).get_CAName(@as(*const ICertPropertyEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollment_get_FriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollment.VTable, @ptrCast(self.vtable)).get_FriendlyName(@as(*const ICertPropertyEnrollment, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyRenewal_Value = Guid.initString("728ab33a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyRenewal = &IID_ICertPropertyRenewal_Value;
pub const ICertPropertyRenewal = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyRenewal,
                Encoding: EncodingType,
                strRenewalValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyRenewal,
                Encoding: EncodingType,
                strRenewalValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromCertificateHash: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyRenewal,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyRenewal,
                MachineContext: i16,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Renewal: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyRenewal,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyRenewal,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyRenewal_Initialize(self: *const T, Encoding: EncodingType, strRenewalValue: ?BSTR) HRESULT {
                return @as(*const ICertPropertyRenewal.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyRenewal, @ptrCast(self)), Encoding, strRenewalValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyRenewal_InitializeFromCertificateHash(self: *const T, MachineContext: i16, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const ICertPropertyRenewal.VTable, @ptrCast(self.vtable)).InitializeFromCertificateHash(@as(*const ICertPropertyRenewal, @ptrCast(self)), MachineContext, Encoding, strCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyRenewal_get_Renewal(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyRenewal.VTable, @ptrCast(self.vtable)).get_Renewal(@as(*const ICertPropertyRenewal, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ICertPropertyArchivedKeyHash_Value = Guid.initString("728ab33b-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyArchivedKeyHash = &IID_ICertPropertyArchivedKeyHash_Value;
pub const ICertPropertyArchivedKeyHash = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyArchivedKeyHash,
                Encoding: EncodingType,
                strArchivedKeyHashValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyArchivedKeyHash,
                Encoding: EncodingType,
                strArchivedKeyHashValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchivedKeyHash: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertPropertyArchivedKeyHash,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertPropertyArchivedKeyHash,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyArchivedKeyHash_Initialize(self: *const T, Encoding: EncodingType, strArchivedKeyHashValue: ?BSTR) HRESULT {
                return @as(*const ICertPropertyArchivedKeyHash.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyArchivedKeyHash, @ptrCast(self)), Encoding, strArchivedKeyHashValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyArchivedKeyHash_get_ArchivedKeyHash(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyArchivedKeyHash.VTable, @ptrCast(self.vtable)).get_ArchivedKeyHash(@as(*const ICertPropertyArchivedKeyHash, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const EnrollmentPolicyServerPropertyFlags = enum(i32) {
    None = 0,
    PolicyServer = 1,
};
pub const DefaultNone = EnrollmentPolicyServerPropertyFlags.None;
pub const DefaultPolicyServer = EnrollmentPolicyServerPropertyFlags.PolicyServer;

pub const PolicyServerUrlFlags = enum(i32) {
    None = 0,
    LocationGroupPolicy = 1,
    LocationRegistry = 2,
    UseClientId = 4,
    AutoEnrollmentEnabled = 16,
    AllowUnTrustedCA = 32,
};
pub const PsfNone = PolicyServerUrlFlags.None;
pub const PsfLocationGroupPolicy = PolicyServerUrlFlags.LocationGroupPolicy;
pub const PsfLocationRegistry = PolicyServerUrlFlags.LocationRegistry;
pub const PsfUseClientId = PolicyServerUrlFlags.UseClientId;
pub const PsfAutoEnrollmentEnabled = PolicyServerUrlFlags.AutoEnrollmentEnabled;
pub const PsfAllowUnTrustedCA = PolicyServerUrlFlags.AllowUnTrustedCA;

// TODO: this type is limited to platform 'windows6.1'
const IID_ICertPropertyEnrollmentPolicyServer_Value = Guid.initString("728ab34a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ICertPropertyEnrollmentPolicyServer = &IID_ICertPropertyEnrollmentPolicyServer_Value;
pub const ICertPropertyEnrollmentPolicyServer = extern struct {
    pub const VTable = extern struct {
        base: ICertProperty.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                PropertyFlags: EnrollmentPolicyServerPropertyFlags,
                AuthFlags: X509EnrollmentAuthFlags,
                EnrollmentServerAuthFlags: X509EnrollmentAuthFlags,
                UrlFlags: PolicyServerUrlFlags,
                strRequestId: ?BSTR,
                strUrl: ?BSTR,
                strId: ?BSTR,
                strEnrollmentServerUrl: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                PropertyFlags: EnrollmentPolicyServerPropertyFlags,
                AuthFlags: X509EnrollmentAuthFlags,
                EnrollmentServerAuthFlags: X509EnrollmentAuthFlags,
                UrlFlags: PolicyServerUrlFlags,
                strRequestId: ?BSTR,
                strUrl: ?BSTR,
                strId: ?BSTR,
                strEnrollmentServerUrl: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPolicyServerUrl: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPolicyServerId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetEnrollmentServerUrl: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRequestIdString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPropertyFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*EnrollmentPolicyServerPropertyFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*EnrollmentPolicyServerPropertyFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetUrlFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAuthentication: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetEnrollmentServerAuthentication: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertPropertyEnrollmentPolicyServer,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertProperty.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_Initialize(self: *const T, PropertyFlags: EnrollmentPolicyServerPropertyFlags, AuthFlags: X509EnrollmentAuthFlags, EnrollmentServerAuthFlags: X509EnrollmentAuthFlags, UrlFlags: PolicyServerUrlFlags, strRequestId: ?BSTR, strUrl: ?BSTR, strId: ?BSTR, strEnrollmentServerUrl: ?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), PropertyFlags, AuthFlags, EnrollmentServerAuthFlags, UrlFlags, strRequestId, strUrl, strId, strEnrollmentServerUrl);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetPolicyServerUrl(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetPolicyServerUrl(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetPolicyServerId(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetPolicyServerId(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetEnrollmentServerUrl(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetEnrollmentServerUrl(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetRequestIdString(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetRequestIdString(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetPropertyFlags(self: *const T, pValue: ?*EnrollmentPolicyServerPropertyFlags) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetPropertyFlags(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetUrlFlags(self: *const T, pValue: ?*PolicyServerUrlFlags) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetUrlFlags(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetAuthentication(self: *const T, pValue: ?*X509EnrollmentAuthFlags) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetAuthentication(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertPropertyEnrollmentPolicyServer_GetEnrollmentServerAuthentication(self: *const T, pValue: ?*X509EnrollmentAuthFlags) HRESULT {
                return @as(*const ICertPropertyEnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetEnrollmentServerAuthentication(@as(*const ICertPropertyEnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509SignatureInformation_Value = Guid.initString("728ab33c-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509SignatureInformation = &IID_IX509SignatureInformation_Value;
pub const IX509SignatureInformation = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PublicKeyAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PublicKeyAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Parameters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Parameters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlternateSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlternateSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlternateSignatureAlgorithmSet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NullSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_NullSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SignatureInformation,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SignatureInformation,
                Pkcs7Signature: i16,
                SignatureKey: i16,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SignatureInformation,
                Pkcs7Signature: i16,
                SignatureKey: i16,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetDefaultValues: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_get_HashAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).get_HashAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_put_HashAlgorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).put_HashAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_get_PublicKeyAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).get_PublicKeyAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_put_PublicKeyAlgorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).put_PublicKeyAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_get_Parameters(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).get_Parameters(@as(*const IX509SignatureInformation, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_put_Parameters(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).put_Parameters(@as(*const IX509SignatureInformation, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_get_AlternateSignatureAlgorithm(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).get_AlternateSignatureAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_put_AlternateSignatureAlgorithm(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).put_AlternateSignatureAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_get_AlternateSignatureAlgorithmSet(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).get_AlternateSignatureAlgorithmSet(@as(*const IX509SignatureInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_get_NullSigned(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).get_NullSigned(@as(*const IX509SignatureInformation, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_put_NullSigned(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).put_NullSigned(@as(*const IX509SignatureInformation, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_GetSignatureAlgorithm(self: *const T, Pkcs7Signature: i16, SignatureKey: i16, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).GetSignatureAlgorithm(@as(*const IX509SignatureInformation, @ptrCast(self)), Pkcs7Signature, SignatureKey, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SignatureInformation_SetDefaultValues(self: *const T) HRESULT {
                return @as(*const IX509SignatureInformation.VTable, @ptrCast(self.vtable)).SetDefaultValues(@as(*const IX509SignatureInformation, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ISignerCertificate_Value = Guid.initString("728ab33d-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ISignerCertificate = &IID_ISignerCertificate_Value;
pub const ISignerCertificate = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISignerCertificate,
                MachineContext: i16,
                VerifyType: X509PrivateKeyVerify,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISignerCertificate,
                MachineContext: i16,
                VerifyType: X509PrivateKeyVerify,
                Encoding: EncodingType,
                strCertificate: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Certificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                ppValue: ?*?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                ppValue: ?*?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UIContextMessage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UIContextMessage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Pin: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignatureInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificate,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificate,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_Initialize(self: *const T, MachineContext: i16, VerifyType: X509PrivateKeyVerify, Encoding: EncodingType, strCertificate: ?BSTR) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ISignerCertificate, @ptrCast(self)), MachineContext, VerifyType, Encoding, strCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_get_Certificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).get_Certificate(@as(*const ISignerCertificate, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_get_PrivateKey(self: *const T, ppValue: ?*?*IX509PrivateKey) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).get_PrivateKey(@as(*const ISignerCertificate, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_get_Silent(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).get_Silent(@as(*const ISignerCertificate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_put_Silent(self: *const T, Value: i16) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).put_Silent(@as(*const ISignerCertificate, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_get_ParentWindow(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).get_ParentWindow(@as(*const ISignerCertificate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_put_ParentWindow(self: *const T, Value: i32) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).put_ParentWindow(@as(*const ISignerCertificate, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_get_UIContextMessage(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).get_UIContextMessage(@as(*const ISignerCertificate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_put_UIContextMessage(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).put_UIContextMessage(@as(*const ISignerCertificate, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_put_Pin(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).put_Pin(@as(*const ISignerCertificate, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificate_get_SignatureInformation(self: *const T, ppValue: ?*?*IX509SignatureInformation) HRESULT {
                return @as(*const ISignerCertificate.VTable, @ptrCast(self.vtable)).get_SignatureInformation(@as(*const ISignerCertificate, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ISignerCertificates_Value = Guid.initString("728ab33e-217d-11da-b2a4-000e7bbb2b09");
pub const IID_ISignerCertificates = &IID_ISignerCertificates_Value;
pub const ISignerCertificates = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificates,
                Index: i32,
                pVal: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificates,
                Index: i32,
                pVal: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificates,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificates,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISignerCertificates,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISignerCertificates,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISignerCertificates,
                pVal: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISignerCertificates,
                pVal: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISignerCertificates,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISignerCertificates,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISignerCertificates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISignerCertificates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Find: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISignerCertificates,
                pSignerCert: ?*ISignerCertificate,
                piSignerCert: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISignerCertificates,
                pSignerCert: ?*ISignerCertificate,
                piSignerCert: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ISignerCertificate) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ISignerCertificates, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ISignerCertificates, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ISignerCertificates, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_Add(self: *const T, pVal: ?*ISignerCertificate) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).Add(@as(*const ISignerCertificates, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).Remove(@as(*const ISignerCertificates, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_Clear(self: *const T) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).Clear(@as(*const ISignerCertificates, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISignerCertificates_Find(self: *const T, pSignerCert: ?*ISignerCertificate, piSignerCert: ?*i32) HRESULT {
                return @as(*const ISignerCertificates.VTable, @ptrCast(self.vtable)).Find(@as(*const ISignerCertificates, @ptrCast(self)), pSignerCert, piSignerCert);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509NameValuePair_Value = Guid.initString("728ab33f-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509NameValuePair = &IID_IX509NameValuePair_Value;
pub const IX509NameValuePair = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509NameValuePair,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509NameValuePair,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509NameValuePair,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509NameValuePair,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509NameValuePair,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509NameValuePair,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePair_Initialize(self: *const T, strName: ?BSTR, strValue: ?BSTR) HRESULT {
                return @as(*const IX509NameValuePair.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509NameValuePair, @ptrCast(self)), strName, strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePair_get_Value(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509NameValuePair.VTable, @ptrCast(self.vtable)).get_Value(@as(*const IX509NameValuePair, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePair_get_Name(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509NameValuePair.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IX509NameValuePair, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509NameValuePairs_Value = Guid.initString("728ab340-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509NameValuePairs = &IID_IX509NameValuePairs_Value;
pub const IX509NameValuePairs = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509NameValuePairs,
                Index: i32,
                pVal: ?*?*IX509NameValuePair,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509NameValuePairs,
                Index: i32,
                pVal: ?*?*IX509NameValuePair,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509NameValuePairs,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509NameValuePairs,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509NameValuePairs,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509NameValuePairs,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509NameValuePairs,
                pVal: ?*IX509NameValuePair,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509NameValuePairs,
                pVal: ?*IX509NameValuePair,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509NameValuePairs,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509NameValuePairs,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePairs_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IX509NameValuePair) HRESULT {
                return @as(*const IX509NameValuePairs.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IX509NameValuePairs, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePairs_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IX509NameValuePairs.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IX509NameValuePairs, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePairs_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IX509NameValuePairs.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IX509NameValuePairs, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePairs_Add(self: *const T, pVal: ?*IX509NameValuePair) HRESULT {
                return @as(*const IX509NameValuePairs.VTable, @ptrCast(self.vtable)).Add(@as(*const IX509NameValuePairs, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePairs_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IX509NameValuePairs.VTable, @ptrCast(self.vtable)).Remove(@as(*const IX509NameValuePairs, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509NameValuePairs_Clear(self: *const T) HRESULT {
                return @as(*const IX509NameValuePairs.VTable, @ptrCast(self.vtable)).Clear(@as(*const IX509NameValuePairs, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const EnrollmentTemplateProperty = enum(i32) {
    CommonName = 1,
    FriendlyName = 2,
    EKUs = 3,
    CryptoProviders = 4,
    MajorRevision = 5,
    Description = 6,
    KeySpec = 7,
    SchemaVersion = 8,
    MinorRevision = 9,
    RASignatureCount = 10,
    MinimumKeySize = 11,
    OID = 12,
    Supersede = 13,
    RACertificatePolicies = 14,
    RAEKUs = 15,
    CertificatePolicies = 16,
    V1ApplicationPolicy = 17,
    AsymmetricAlgorithm = 18,
    KeySecurityDescriptor = 19,
    SymmetricAlgorithm = 20,
    SymmetricKeyLength = 21,
    HashAlgorithm = 22,
    KeyUsage = 23,
    EnrollmentFlags = 24,
    SubjectNameFlags = 25,
    PrivateKeyFlags = 26,
    GeneralFlags = 27,
    SecurityDescriptor = 28,
    Extensions = 29,
    ValidityPeriod = 30,
    RenewalPeriod = 31,
};
pub const TemplatePropCommonName = EnrollmentTemplateProperty.CommonName;
pub const TemplatePropFriendlyName = EnrollmentTemplateProperty.FriendlyName;
pub const TemplatePropEKUs = EnrollmentTemplateProperty.EKUs;
pub const TemplatePropCryptoProviders = EnrollmentTemplateProperty.CryptoProviders;
pub const TemplatePropMajorRevision = EnrollmentTemplateProperty.MajorRevision;
pub const TemplatePropDescription = EnrollmentTemplateProperty.Description;
pub const TemplatePropKeySpec = EnrollmentTemplateProperty.KeySpec;
pub const TemplatePropSchemaVersion = EnrollmentTemplateProperty.SchemaVersion;
pub const TemplatePropMinorRevision = EnrollmentTemplateProperty.MinorRevision;
pub const TemplatePropRASignatureCount = EnrollmentTemplateProperty.RASignatureCount;
pub const TemplatePropMinimumKeySize = EnrollmentTemplateProperty.MinimumKeySize;
pub const TemplatePropOID = EnrollmentTemplateProperty.OID;
pub const TemplatePropSupersede = EnrollmentTemplateProperty.Supersede;
pub const TemplatePropRACertificatePolicies = EnrollmentTemplateProperty.RACertificatePolicies;
pub const TemplatePropRAEKUs = EnrollmentTemplateProperty.RAEKUs;
pub const TemplatePropCertificatePolicies = EnrollmentTemplateProperty.CertificatePolicies;
pub const TemplatePropV1ApplicationPolicy = EnrollmentTemplateProperty.V1ApplicationPolicy;
pub const TemplatePropAsymmetricAlgorithm = EnrollmentTemplateProperty.AsymmetricAlgorithm;
pub const TemplatePropKeySecurityDescriptor = EnrollmentTemplateProperty.KeySecurityDescriptor;
pub const TemplatePropSymmetricAlgorithm = EnrollmentTemplateProperty.SymmetricAlgorithm;
pub const TemplatePropSymmetricKeyLength = EnrollmentTemplateProperty.SymmetricKeyLength;
pub const TemplatePropHashAlgorithm = EnrollmentTemplateProperty.HashAlgorithm;
pub const TemplatePropKeyUsage = EnrollmentTemplateProperty.KeyUsage;
pub const TemplatePropEnrollmentFlags = EnrollmentTemplateProperty.EnrollmentFlags;
pub const TemplatePropSubjectNameFlags = EnrollmentTemplateProperty.SubjectNameFlags;
pub const TemplatePropPrivateKeyFlags = EnrollmentTemplateProperty.PrivateKeyFlags;
pub const TemplatePropGeneralFlags = EnrollmentTemplateProperty.GeneralFlags;
pub const TemplatePropSecurityDescriptor = EnrollmentTemplateProperty.SecurityDescriptor;
pub const TemplatePropExtensions = EnrollmentTemplateProperty.Extensions;
pub const TemplatePropValidityPeriod = EnrollmentTemplateProperty.ValidityPeriod;
pub const TemplatePropRenewalPeriod = EnrollmentTemplateProperty.RenewalPeriod;

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateTemplate_Value = Guid.initString("54244a13-555a-4e22-896d-1b0e52f76406");
pub const IID_IX509CertificateTemplate = &IID_IX509CertificateTemplate_Value;
pub const IX509CertificateTemplate = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Property: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplate,
                property: EnrollmentTemplateProperty,
                pValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplate,
                property: EnrollmentTemplateProperty,
                pValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplate_get_Property(self: *const T, property: EnrollmentTemplateProperty, pValue: ?*VARIANT) HRESULT {
                return @as(*const IX509CertificateTemplate.VTable, @ptrCast(self.vtable)).get_Property(@as(*const IX509CertificateTemplate, @ptrCast(self)), property, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateTemplates_Value = Guid.initString("13b79003-2181-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateTemplates = &IID_IX509CertificateTemplates_Value;
pub const IX509CertificateTemplates = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                Index: i32,
                pVal: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplates,
                Index: i32,
                pVal: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplates,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplates,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                pVal: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateTemplates,
                pVal: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateTemplates,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateTemplates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                bstrName: ?BSTR,
                ppValue: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplates,
                bstrName: ?BSTR,
                ppValue: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByOid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplates,
                pOid: ?*IObjectId,
                ppValue: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplates,
                pOid: ?*IObjectId,
                ppValue: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IX509CertificateTemplates, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IX509CertificateTemplates, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IX509CertificateTemplates, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_Add(self: *const T, pVal: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).Add(@as(*const IX509CertificateTemplates, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).Remove(@as(*const IX509CertificateTemplates, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_Clear(self: *const T) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).Clear(@as(*const IX509CertificateTemplates, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_get_ItemByName(self: *const T, bstrName: ?BSTR, ppValue: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const IX509CertificateTemplates, @ptrCast(self)), bstrName, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplates_get_ItemByOid(self: *const T, pOid: ?*IObjectId, ppValue: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateTemplates.VTable, @ptrCast(self.vtable)).get_ItemByOid(@as(*const IX509CertificateTemplates, @ptrCast(self)), pOid, ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const CommitTemplateFlags = enum(i32) {
    SaveTemplateGenerateOID = 1,
    SaveTemplateUseCurrentOID = 2,
    SaveTemplateOverwrite = 3,
    DeleteTemplate = 4,
};
pub const CommitFlagSaveTemplateGenerateOID = CommitTemplateFlags.SaveTemplateGenerateOID;
pub const CommitFlagSaveTemplateUseCurrentOID = CommitTemplateFlags.SaveTemplateUseCurrentOID;
pub const CommitFlagSaveTemplateOverwrite = CommitTemplateFlags.SaveTemplateOverwrite;
pub const CommitFlagDeleteTemplate = CommitTemplateFlags.DeleteTemplate;

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateTemplateWritable_Value = Guid.initString("f49466a7-395a-4e9e-b6e7-32b331600dc0");
pub const IID_IX509CertificateTemplateWritable = &IID_IX509CertificateTemplateWritable_Value;
pub const IX509CertificateTemplateWritable = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateTemplateWritable,
                pValue: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateTemplateWritable,
                pValue: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Commit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateTemplateWritable,
                commitFlags: CommitTemplateFlags,
                strServerContext: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateTemplateWritable,
                commitFlags: CommitTemplateFlags,
                strServerContext: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Property: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplateWritable,
                property: EnrollmentTemplateProperty,
                pValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplateWritable,
                property: EnrollmentTemplateProperty,
                pValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Property: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplateWritable,
                property: EnrollmentTemplateProperty,
                value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplateWritable,
                property: EnrollmentTemplateProperty,
                value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Template: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateTemplateWritable,
                ppValue: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateTemplateWritable,
                ppValue: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplateWritable_Initialize(self: *const T, pValue: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateTemplateWritable.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509CertificateTemplateWritable, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplateWritable_Commit(self: *const T, commitFlags: CommitTemplateFlags, strServerContext: ?BSTR) HRESULT {
                return @as(*const IX509CertificateTemplateWritable.VTable, @ptrCast(self.vtable)).Commit(@as(*const IX509CertificateTemplateWritable, @ptrCast(self)), commitFlags, strServerContext);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplateWritable_get_Property(self: *const T, property: EnrollmentTemplateProperty, pValue: ?*VARIANT) HRESULT {
                return @as(*const IX509CertificateTemplateWritable.VTable, @ptrCast(self.vtable)).get_Property(@as(*const IX509CertificateTemplateWritable, @ptrCast(self)), property, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplateWritable_put_Property(self: *const T, property: EnrollmentTemplateProperty, value: VARIANT) HRESULT {
                return @as(*const IX509CertificateTemplateWritable.VTable, @ptrCast(self.vtable)).put_Property(@as(*const IX509CertificateTemplateWritable, @ptrCast(self)), property, value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateTemplateWritable_get_Template(self: *const T, ppValue: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateTemplateWritable.VTable, @ptrCast(self.vtable)).get_Template(@as(*const IX509CertificateTemplateWritable, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const EnrollmentCAProperty = enum(i32) {
    CommonName = 1,
    DistinguishedName = 2,
    SanitizedName = 3,
    SanitizedShortName = 4,
    DNSName = 5,
    CertificateTypes = 6,
    Certificate = 7,
    Description = 8,
    WebServers = 9,
    SiteName = 10,
    Security = 11,
    RenewalOnly = 12,
};
pub const CAPropCommonName = EnrollmentCAProperty.CommonName;
pub const CAPropDistinguishedName = EnrollmentCAProperty.DistinguishedName;
pub const CAPropSanitizedName = EnrollmentCAProperty.SanitizedName;
pub const CAPropSanitizedShortName = EnrollmentCAProperty.SanitizedShortName;
pub const CAPropDNSName = EnrollmentCAProperty.DNSName;
pub const CAPropCertificateTypes = EnrollmentCAProperty.CertificateTypes;
pub const CAPropCertificate = EnrollmentCAProperty.Certificate;
pub const CAPropDescription = EnrollmentCAProperty.Description;
pub const CAPropWebServers = EnrollmentCAProperty.WebServers;
pub const CAPropSiteName = EnrollmentCAProperty.SiteName;
pub const CAPropSecurity = EnrollmentCAProperty.Security;
pub const CAPropRenewalOnly = EnrollmentCAProperty.RenewalOnly;

// TODO: this type is limited to platform 'windows6.1'
const IID_ICertificationAuthority_Value = Guid.initString("835d1f61-1e95-4bc8-b4d3-976c42b968f7");
pub const IID_ICertificationAuthority = &IID_ICertificationAuthority_Value;
pub const ICertificationAuthority = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Property: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificationAuthority,
                property: EnrollmentCAProperty,
                pValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificationAuthority,
                property: EnrollmentCAProperty,
                pValue: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthority_get_Property(self: *const T, property: EnrollmentCAProperty, pValue: ?*VARIANT) HRESULT {
                return @as(*const ICertificationAuthority.VTable, @ptrCast(self.vtable)).get_Property(@as(*const ICertificationAuthority, @ptrCast(self)), property, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_ICertificationAuthorities_Value = Guid.initString("13b79005-2181-11da-b2a4-000e7bbb2b09");
pub const IID_ICertificationAuthorities = &IID_ICertificationAuthorities_Value;
pub const ICertificationAuthorities = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificationAuthorities,
                Index: i32,
                pVal: ?*?*ICertificationAuthority,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificationAuthorities,
                Index: i32,
                pVal: ?*?*ICertificationAuthority,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificationAuthorities,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificationAuthorities,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificationAuthorities,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificationAuthorities,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificationAuthorities,
                pVal: ?*ICertificationAuthority,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificationAuthorities,
                pVal: ?*ICertificationAuthority,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificationAuthorities,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificationAuthorities,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ComputeSiteCosts: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificationAuthorities,
                strName: ?BSTR,
                ppValue: ?*?*ICertificationAuthority,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificationAuthorities,
                strName: ?BSTR,
                ppValue: ?*?*ICertificationAuthority,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*ICertificationAuthority) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const ICertificationAuthorities, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICertificationAuthorities, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICertificationAuthorities, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_Add(self: *const T, pVal: ?*ICertificationAuthority) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).Add(@as(*const ICertificationAuthorities, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICertificationAuthorities, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_Clear(self: *const T) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).Clear(@as(*const ICertificationAuthorities, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_ComputeSiteCosts(self: *const T) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).ComputeSiteCosts(@as(*const ICertificationAuthorities, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificationAuthorities_get_ItemByName(self: *const T, strName: ?BSTR, ppValue: ?*?*ICertificationAuthority) HRESULT {
                return @as(*const ICertificationAuthorities.VTable, @ptrCast(self.vtable)).get_ItemByName(@as(*const ICertificationAuthorities, @ptrCast(self)), strName, ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509EnrollmentPolicyLoadOption = enum(i32) {
    Default = 0,
    CacheOnly = 1,
    Reload = 2,
    RegisterForADChanges = 4,
};
pub const LoadOptionDefault = X509EnrollmentPolicyLoadOption.Default;
pub const LoadOptionCacheOnly = X509EnrollmentPolicyLoadOption.CacheOnly;
pub const LoadOptionReload = X509EnrollmentPolicyLoadOption.Reload;
pub const LoadOptionRegisterForADChanges = X509EnrollmentPolicyLoadOption.RegisterForADChanges;

pub const EnrollmentPolicyFlags = enum(i32) {
    GroupPolicyList = 2,
    UserServerList = 4,
};
pub const DisableGroupPolicyList = EnrollmentPolicyFlags.GroupPolicyList;
pub const DisableUserServerList = EnrollmentPolicyFlags.UserServerList;

pub const PolicyServerUrlPropertyID = enum(i32) {
    PolicyID = 0,
    FriendlyName = 1,
};
pub const PsPolicyID = PolicyServerUrlPropertyID.PolicyID;
pub const PsFriendlyName = PolicyServerUrlPropertyID.FriendlyName;

pub const X509EnrollmentPolicyExportFlags = enum(i32) {
    Templates = 1,
    OIDs = 2,
    CAs = 4,
};
pub const ExportTemplates = X509EnrollmentPolicyExportFlags.Templates;
pub const ExportOIDs = X509EnrollmentPolicyExportFlags.OIDs;
pub const ExportCAs = X509EnrollmentPolicyExportFlags.CAs;

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509EnrollmentPolicyServer_Value = Guid.initString("13b79026-2181-11da-b2a4-000e7bbb2b09");
pub const IID_IX509EnrollmentPolicyServer = &IID_IX509EnrollmentPolicyServer_Value;
pub const IX509EnrollmentPolicyServer = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                bstrPolicyServerUrl: ?BSTR,
                bstrPolicyServerId: ?BSTR,
                authFlags: X509EnrollmentAuthFlags,
                fIsUnTrusted: i16,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                bstrPolicyServerUrl: ?BSTR,
                bstrPolicyServerId: ?BSTR,
                authFlags: X509EnrollmentAuthFlags,
                fIsUnTrusted: i16,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LoadPolicy: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                option: X509EnrollmentPolicyLoadOption,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                option: X509EnrollmentPolicyLoadOption,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetTemplates: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pTemplates: ?*?*IX509CertificateTemplates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pTemplates: ?*?*IX509CertificateTemplates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAsForTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
                ppCAs: ?*?*ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
                ppCAs: ?*?*ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                ppCAs: ?*?*ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                ppCAs: ?*?*ICertificationAuthorities,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Validate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCustomOids: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                ppObjectIds: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                ppObjectIds: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNextUpdateTime: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastUpdateTime: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPolicyServerUrl: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPolicyServerId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetFriendlyName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetIsDefaultCEP: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetUseClientId: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAllowUnTrustedCA: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCachePath: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCacheDir: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAuthFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCredential: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                hWndParent: i32,
                flag: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                hWndParent: i32,
                flag: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        QueryChanges: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeImport: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                val: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                val: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Export: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                exportFlags: X509EnrollmentPolicyExportFlags,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                exportFlags: X509EnrollmentPolicyExportFlags,
                pVal: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Cost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                pValue: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Cost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509EnrollmentPolicyServer,
                value: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509EnrollmentPolicyServer,
                value: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_Initialize(self: *const T, bstrPolicyServerUrl: ?BSTR, bstrPolicyServerId: ?BSTR, authFlags: X509EnrollmentAuthFlags, fIsUnTrusted: i16, context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), bstrPolicyServerUrl, bstrPolicyServerId, authFlags, fIsUnTrusted, context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_LoadPolicy(self: *const T, option: X509EnrollmentPolicyLoadOption) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).LoadPolicy(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), option);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetTemplates(self: *const T, pTemplates: ?*?*IX509CertificateTemplates) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetTemplates(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pTemplates);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetCAsForTemplate(self: *const T, pTemplate: ?*IX509CertificateTemplate, ppCAs: ?*?*ICertificationAuthorities) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetCAsForTemplate(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pTemplate, ppCAs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetCAs(self: *const T, ppCAs: ?*?*ICertificationAuthorities) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetCAs(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), ppCAs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_Validate(self: *const T) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).Validate(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetCustomOids(self: *const T, ppObjectIds: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetCustomOids(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), ppObjectIds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetNextUpdateTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetNextUpdateTime(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetLastUpdateTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetLastUpdateTime(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetPolicyServerUrl(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetPolicyServerUrl(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetPolicyServerId(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetPolicyServerId(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetFriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetFriendlyName(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetIsDefaultCEP(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetIsDefaultCEP(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetUseClientId(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetUseClientId(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetAllowUnTrustedCA(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetAllowUnTrustedCA(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetCachePath(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetCachePath(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetCacheDir(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetCacheDir(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_GetAuthFlags(self: *const T, pValue: ?*X509EnrollmentAuthFlags) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).GetAuthFlags(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_SetCredential(self: *const T, hWndParent: i32, flag: X509EnrollmentAuthFlags, strCredential: ?BSTR, strPassword: ?BSTR) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).SetCredential(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), hWndParent, flag, strCredential, strPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_QueryChanges(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).QueryChanges(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_InitializeImport(self: *const T, val: VARIANT) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).InitializeImport(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), val);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_Export(self: *const T, exportFlags: X509EnrollmentPolicyExportFlags, pVal: ?*VARIANT) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).Export(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), exportFlags, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_get_Cost(self: *const T, pValue: ?*u32) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).get_Cost(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentPolicyServer_put_Cost(self: *const T, value: u32) HRESULT {
                return @as(*const IX509EnrollmentPolicyServer.VTable, @ptrCast(self.vtable)).put_Cost(@as(*const IX509EnrollmentPolicyServer, @ptrCast(self)), value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509PolicyServerUrl_Value = Guid.initString("884e204a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509PolicyServerUrl = &IID_IX509PolicyServerUrl_Value;
pub const IX509PolicyServerUrl = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Url: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                ppValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                ppValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Url: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Default: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Default: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Flags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Flags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                Flags: PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                Flags: PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AuthFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AuthFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                Flags: X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                Flags: X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Cost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                pValue: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Cost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                value: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                value: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStringProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                propertyId: PolicyServerUrlPropertyID,
                ppValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                propertyId: PolicyServerUrlPropertyID,
                ppValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetStringProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                propertyId: PolicyServerUrlPropertyID,
                pValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                propertyId: PolicyServerUrlPropertyID,
                pValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UpdateRegistry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RemoveFromRegistry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerUrl,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerUrl,
                context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_Initialize(self: *const T, context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509PolicyServerUrl, @ptrCast(self)), context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_get_Url(self: *const T, ppValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).get_Url(@as(*const IX509PolicyServerUrl, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_put_Url(self: *const T, pValue: ?BSTR) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).put_Url(@as(*const IX509PolicyServerUrl, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_get_Default(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).get_Default(@as(*const IX509PolicyServerUrl, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_put_Default(self: *const T, value: i16) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).put_Default(@as(*const IX509PolicyServerUrl, @ptrCast(self)), value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_get_Flags(self: *const T, pValue: ?*PolicyServerUrlFlags) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).get_Flags(@as(*const IX509PolicyServerUrl, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_put_Flags(self: *const T, Flags: PolicyServerUrlFlags) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).put_Flags(@as(*const IX509PolicyServerUrl, @ptrCast(self)), Flags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_get_AuthFlags(self: *const T, pValue: ?*X509EnrollmentAuthFlags) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).get_AuthFlags(@as(*const IX509PolicyServerUrl, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_put_AuthFlags(self: *const T, Flags: X509EnrollmentAuthFlags) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).put_AuthFlags(@as(*const IX509PolicyServerUrl, @ptrCast(self)), Flags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_get_Cost(self: *const T, pValue: ?*u32) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).get_Cost(@as(*const IX509PolicyServerUrl, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_put_Cost(self: *const T, value: u32) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).put_Cost(@as(*const IX509PolicyServerUrl, @ptrCast(self)), value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_GetStringProperty(self: *const T, propertyId: PolicyServerUrlPropertyID, ppValue: ?*?BSTR) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).GetStringProperty(@as(*const IX509PolicyServerUrl, @ptrCast(self)), propertyId, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_SetStringProperty(self: *const T, propertyId: PolicyServerUrlPropertyID, pValue: ?BSTR) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).SetStringProperty(@as(*const IX509PolicyServerUrl, @ptrCast(self)), propertyId, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_UpdateRegistry(self: *const T, context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).UpdateRegistry(@as(*const IX509PolicyServerUrl, @ptrCast(self)), context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerUrl_RemoveFromRegistry(self: *const T, context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509PolicyServerUrl.VTable, @ptrCast(self.vtable)).RemoveFromRegistry(@as(*const IX509PolicyServerUrl, @ptrCast(self)), context);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509PolicyServerListManager_Value = Guid.initString("884e204b-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509PolicyServerListManager = &IID_IX509PolicyServerListManager_Value;
pub const IX509PolicyServerListManager = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
                Index: i32,
                pVal: ?*?*IX509PolicyServerUrl,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerListManager,
                Index: i32,
                pVal: ?*?*IX509PolicyServerUrl,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerListManager,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509PolicyServerListManager,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
                pVal: ?*IX509PolicyServerUrl,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerListManager,
                pVal: ?*IX509PolicyServerUrl,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerListManager,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerListManager,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509PolicyServerListManager,
                context: X509CertificateEnrollmentContext,
                Flags: PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509PolicyServerListManager,
                context: X509CertificateEnrollmentContext,
                Flags: PolicyServerUrlFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IX509PolicyServerUrl) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IX509PolicyServerListManager, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IX509PolicyServerListManager, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IX509PolicyServerListManager, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_Add(self: *const T, pVal: ?*IX509PolicyServerUrl) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).Add(@as(*const IX509PolicyServerListManager, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).Remove(@as(*const IX509PolicyServerListManager, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_Clear(self: *const T) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).Clear(@as(*const IX509PolicyServerListManager, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509PolicyServerListManager_Initialize(self: *const T, context: X509CertificateEnrollmentContext, Flags: PolicyServerUrlFlags) HRESULT {
                return @as(*const IX509PolicyServerListManager.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509PolicyServerListManager, @ptrCast(self)), context, Flags);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509RequestType = enum(i32) {
    Any = 0,
    Pkcs10 = 1,
    Pkcs7 = 2,
    Cmc = 3,
    Certificate = 4,
};
pub const TypeAny = X509RequestType.Any;
pub const TypePkcs10 = X509RequestType.Pkcs10;
pub const TypePkcs7 = X509RequestType.Pkcs7;
pub const TypeCmc = X509RequestType.Cmc;
pub const TypeCertificate = X509RequestType.Certificate;

pub const X509RequestInheritOptions = enum(i32) {
    Default = 0,
    NewDefaultKey = 1,
    NewSimilarKey = 2,
    PrivateKey = 3,
    PublicKey = 4,
    KeyMask = 15,
    None = 16,
    RenewalCertificateFlag = 32,
    TemplateFlag = 64,
    SubjectFlag = 128,
    ExtensionsFlag = 256,
    SubjectAltNameFlag = 512,
    ValidityPeriodFlag = 1024,
    Reserved80000000 = -2147483648,
};
pub const InheritDefault = X509RequestInheritOptions.Default;
pub const InheritNewDefaultKey = X509RequestInheritOptions.NewDefaultKey;
pub const InheritNewSimilarKey = X509RequestInheritOptions.NewSimilarKey;
pub const InheritPrivateKey = X509RequestInheritOptions.PrivateKey;
pub const InheritPublicKey = X509RequestInheritOptions.PublicKey;
pub const InheritKeyMask = X509RequestInheritOptions.KeyMask;
pub const InheritNone = X509RequestInheritOptions.None;
pub const InheritRenewalCertificateFlag = X509RequestInheritOptions.RenewalCertificateFlag;
pub const InheritTemplateFlag = X509RequestInheritOptions.TemplateFlag;
pub const InheritSubjectFlag = X509RequestInheritOptions.SubjectFlag;
pub const InheritExtensionsFlag = X509RequestInheritOptions.ExtensionsFlag;
pub const InheritSubjectAltNameFlag = X509RequestInheritOptions.SubjectAltNameFlag;
pub const InheritValidityPeriodFlag = X509RequestInheritOptions.ValidityPeriodFlag;
pub const InheritReserved80000000 = X509RequestInheritOptions.Reserved80000000;

pub const InnerRequestLevel = enum(i32) {
    Innermost = 0,
    Next = 1,
};
pub const LevelInnermost = InnerRequestLevel.Innermost;
pub const LevelNext = InnerRequestLevel.Next;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509CertificateRequest_Value = Guid.initString("728ab341-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequest = &IID_IX509CertificateRequest_Value;
pub const IX509CertificateRequest = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequest,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ResetForEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetInnerRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Level: InnerRequestLevel,
                ppValue: ?*?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequest,
                Level: InnerRequestLevel,
                ppValue: ?*?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Type: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*X509RequestType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*X509RequestType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnrollmentContext: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UIContextMessage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UIContextMessage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SuppressDefaults: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SuppressDefaults: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RenewalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RenewalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*RequestClientInfoClientId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*RequestClientInfoClientId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Value: RequestClientInfoClientId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Value: RequestClientInfoClientId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspInformations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                ppValue: ?*?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                ppValue: ?*?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CspInformations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*ICspInformations,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlternateSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlternateSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequest,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequest,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_Initialize(self: *const T, Context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509CertificateRequest, @ptrCast(self)), Context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_Encode(self: *const T) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).Encode(@as(*const IX509CertificateRequest, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_ResetForEncode(self: *const T) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).ResetForEncode(@as(*const IX509CertificateRequest, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_GetInnerRequest(self: *const T, Level: InnerRequestLevel, ppValue: ?*?*IX509CertificateRequest) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).GetInnerRequest(@as(*const IX509CertificateRequest, @ptrCast(self)), Level, ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_Type(self: *const T, pValue: ?*X509RequestType) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_Type(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_EnrollmentContext(self: *const T, pValue: ?*X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_EnrollmentContext(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_Silent(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_Silent(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_Silent(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_Silent(@as(*const IX509CertificateRequest, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_ParentWindow(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_ParentWindow(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_ParentWindow(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_ParentWindow(@as(*const IX509CertificateRequest, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_UIContextMessage(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_UIContextMessage(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_UIContextMessage(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_UIContextMessage(@as(*const IX509CertificateRequest, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_SuppressDefaults(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_SuppressDefaults(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_SuppressDefaults(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_SuppressDefaults(@as(*const IX509CertificateRequest, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_RenewalCertificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_RenewalCertificate(@as(*const IX509CertificateRequest, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_RenewalCertificate(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_RenewalCertificate(@as(*const IX509CertificateRequest, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_ClientId(self: *const T, pValue: ?*RequestClientInfoClientId) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_ClientId(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_ClientId(self: *const T, Value: RequestClientInfoClientId) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_ClientId(@as(*const IX509CertificateRequest, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_CspInformations(self: *const T, ppValue: ?*?*ICspInformations) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_CspInformations(@as(*const IX509CertificateRequest, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_CspInformations(self: *const T, pValue: ?*ICspInformations) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_CspInformations(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_HashAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_HashAlgorithm(@as(*const IX509CertificateRequest, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_HashAlgorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_HashAlgorithm(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_AlternateSignatureAlgorithm(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_AlternateSignatureAlgorithm(@as(*const IX509CertificateRequest, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_put_AlternateSignatureAlgorithm(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).put_AlternateSignatureAlgorithm(@as(*const IX509CertificateRequest, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequest_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequest.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const IX509CertificateRequest, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const Pkcs10AllowedSignatureTypes = enum(i32) {
    KeySignature = 1,
    NullSignature = 2,
};
pub const AllowedKeySignature = Pkcs10AllowedSignatureTypes.KeySignature;
pub const AllowedNullSignature = Pkcs10AllowedSignatureTypes.NullSignature;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509CertificateRequestPkcs10_Value = Guid.initString("728ab342-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestPkcs10 = &IID_IX509CertificateRequestPkcs10_Value;
pub const IX509CertificateRequestPkcs10 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequest.VTable,
        InitializeFromTemplateName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromPrivateKey: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                pPrivateKey: ?*IX509PrivateKey,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                pPrivateKey: ?*IX509PrivateKey,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromPublicKey: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                pPublicKey: ?*IX509PublicKey,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                pPublicKey: ?*IX509PublicKey,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                strCertificate: ?BSTR,
                Encoding: EncodingType,
                InheritOptions: X509RequestInheritOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Context: X509CertificateEnrollmentContext,
                strCertificate: ?BSTR,
                Encoding: EncodingType,
                InheritOptions: X509RequestInheritOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                AllowedSignatureTypes: Pkcs10AllowedSignatureTypes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                AllowedSignatureTypes: Pkcs10AllowedSignatureTypes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        IsSmartCard: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TemplateObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PublicKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509PrivateKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NullSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReuseKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OldCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CspStatuses: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SmimeCapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SmimeCapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignatureInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeyContainerNamePrefix: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeyContainerNamePrefix: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CryptAttributes: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509Extensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CriticalExtensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SuppressOids: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawDataToBeSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Signature: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCspStatuses: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10,
                KeySpec: X509KeySpec,
                ppCspStatuses: ?*?*ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10,
                KeySpec: X509KeySpec,
                ppCspStatuses: ?*?*ICspStatuses,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequest.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_InitializeFromTemplateName(self: *const T, Context: X509CertificateEnrollmentContext, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).InitializeFromTemplateName(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Context, strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_InitializeFromPrivateKey(self: *const T, Context: X509CertificateEnrollmentContext, pPrivateKey: ?*IX509PrivateKey, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).InitializeFromPrivateKey(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Context, pPrivateKey, strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_InitializeFromPublicKey(self: *const T, Context: X509CertificateEnrollmentContext, pPublicKey: ?*IX509PublicKey, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).InitializeFromPublicKey(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Context, pPublicKey, strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_InitializeFromCertificate(self: *const T, Context: X509CertificateEnrollmentContext, strCertificate: ?BSTR, Encoding: EncodingType, InheritOptions: X509RequestInheritOptions) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).InitializeFromCertificate(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Context, strCertificate, Encoding, InheritOptions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_InitializeDecode(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_CheckSignature(self: *const T, AllowedSignatureTypes: Pkcs10AllowedSignatureTypes) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).CheckSignature(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), AllowedSignatureTypes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_IsSmartCard(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).IsSmartCard(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_TemplateObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_TemplateObjectId(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_PublicKey(self: *const T, ppValue: ?*?*IX509PublicKey) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_PublicKey(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_PrivateKey(self: *const T, ppValue: ?*?*IX509PrivateKey) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_PrivateKey(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_NullSigned(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_NullSigned(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_ReuseKey(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_ReuseKey(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_OldCertificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_OldCertificate(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_Subject(self: *const T, ppValue: ?*?*IX500DistinguishedName) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_Subject(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_put_Subject(self: *const T, pValue: ?*IX500DistinguishedName) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).put_Subject(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_CspStatuses(self: *const T, ppValue: ?*?*ICspStatuses) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_CspStatuses(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_SmimeCapabilities(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_SmimeCapabilities(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_put_SmimeCapabilities(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).put_SmimeCapabilities(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_SignatureInformation(self: *const T, ppValue: ?*?*IX509SignatureInformation) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_SignatureInformation(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_KeyContainerNamePrefix(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_KeyContainerNamePrefix(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_put_KeyContainerNamePrefix(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).put_KeyContainerNamePrefix(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_CryptAttributes(self: *const T, ppValue: ?*?*ICryptAttributes) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_CryptAttributes(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_X509Extensions(self: *const T, ppValue: ?*?*IX509Extensions) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_X509Extensions(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_CriticalExtensions(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_CriticalExtensions(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_SuppressOids(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_SuppressOids(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_RawDataToBeSigned(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_RawDataToBeSigned(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_get_Signature(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).get_Signature(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10_GetCspStatuses(self: *const T, KeySpec: X509KeySpec, ppCspStatuses: ?*?*ICspStatuses) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10.VTable, @ptrCast(self.vtable)).GetCspStatuses(@as(*const IX509CertificateRequestPkcs10, @ptrCast(self)), KeySpec, ppCspStatuses);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateRequestPkcs10V2_Value = Guid.initString("728ab35b-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestPkcs10V2 = &IID_IX509CertificateRequestPkcs10V2_Value;
pub const IX509CertificateRequestPkcs10V2 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestPkcs10.VTable,
        InitializeFromTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromPrivateKeyTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V2,
                Context: X509CertificateEnrollmentContext,
                pPrivateKey: ?*IX509PrivateKey,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V2,
                Context: X509CertificateEnrollmentContext,
                pPrivateKey: ?*IX509PrivateKey,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromPublicKeyTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V2,
                Context: X509CertificateEnrollmentContext,
                pPublicKey: ?*IX509PublicKey,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V2,
                Context: X509CertificateEnrollmentContext,
                pPublicKey: ?*IX509PublicKey,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PolicyServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Template: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestPkcs10.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V2_InitializeFromTemplate(self: *const T, context: X509CertificateEnrollmentContext, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V2.VTable, @ptrCast(self.vtable)).InitializeFromTemplate(@as(*const IX509CertificateRequestPkcs10V2, @ptrCast(self)), context, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V2_InitializeFromPrivateKeyTemplate(self: *const T, Context: X509CertificateEnrollmentContext, pPrivateKey: ?*IX509PrivateKey, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V2.VTable, @ptrCast(self.vtable)).InitializeFromPrivateKeyTemplate(@as(*const IX509CertificateRequestPkcs10V2, @ptrCast(self)), Context, pPrivateKey, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V2_InitializeFromPublicKeyTemplate(self: *const T, Context: X509CertificateEnrollmentContext, pPublicKey: ?*IX509PublicKey, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V2.VTable, @ptrCast(self.vtable)).InitializeFromPublicKeyTemplate(@as(*const IX509CertificateRequestPkcs10V2, @ptrCast(self)), Context, pPublicKey, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V2_get_PolicyServer(self: *const T, ppPolicyServer: ?*?*IX509EnrollmentPolicyServer) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V2.VTable, @ptrCast(self.vtable)).get_PolicyServer(@as(*const IX509CertificateRequestPkcs10V2, @ptrCast(self)), ppPolicyServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V2_get_Template(self: *const T, ppTemplate: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V2.VTable, @ptrCast(self.vtable)).get_Template(@as(*const IX509CertificateRequestPkcs10V2, @ptrCast(self)), ppTemplate);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IX509CertificateRequestPkcs10V3_Value = Guid.initString("54ea9942-3d66-4530-b76e-7c9170d3ec52");
pub const IID_IX509CertificateRequestPkcs10V3 = &IID_IX509CertificateRequestPkcs10V3_Value;
pub const IX509CertificateRequestPkcs10V3 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestPkcs10V2.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AttestPrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AttestPrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AttestationEncryptionCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AttestationEncryptionCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptionAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EncryptionAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptionStrength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EncryptionStrength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ChallengePassword: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ChallengePassword: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NameValuePairs: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V3,
                ppValue: ?*?*IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V3,
                ppValue: ?*?*IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestPkcs10V2.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_get_AttestPrivateKey(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).get_AttestPrivateKey(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_put_AttestPrivateKey(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).put_AttestPrivateKey(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_get_AttestationEncryptionCertificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).get_AttestationEncryptionCertificate(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_put_AttestationEncryptionCertificate(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).put_AttestationEncryptionCertificate(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_get_EncryptionAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).get_EncryptionAlgorithm(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_put_EncryptionAlgorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).put_EncryptionAlgorithm(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_get_EncryptionStrength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).get_EncryptionStrength(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_put_EncryptionStrength(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).put_EncryptionStrength(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_get_ChallengePassword(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).get_ChallengePassword(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_put_ChallengePassword(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).put_ChallengePassword(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V3_get_NameValuePairs(self: *const T, ppValue: ?*?*IX509NameValuePairs) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V3.VTable, @ptrCast(self.vtable)).get_NameValuePairs(@as(*const IX509CertificateRequestPkcs10V3, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const KeyAttestationClaimType = enum(i32) {
    NONE = 0,
    AUTHORITY_AND_SUBJECT = 3,
    AUTHORITY_ONLY = 1,
    SUBJECT_ONLY = 2,
    UNKNOWN = 4096,
};
pub const XCN_NCRYPT_CLAIM_NONE = KeyAttestationClaimType.NONE;
pub const XCN_NCRYPT_CLAIM_AUTHORITY_AND_SUBJECT = KeyAttestationClaimType.AUTHORITY_AND_SUBJECT;
pub const XCN_NCRYPT_CLAIM_AUTHORITY_ONLY = KeyAttestationClaimType.AUTHORITY_ONLY;
pub const XCN_NCRYPT_CLAIM_SUBJECT_ONLY = KeyAttestationClaimType.SUBJECT_ONLY;
pub const XCN_NCRYPT_CLAIM_UNKNOWN = KeyAttestationClaimType.UNKNOWN;

const IID_IX509CertificateRequestPkcs10V4_Value = Guid.initString("728ab363-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestPkcs10V4 = &IID_IX509CertificateRequestPkcs10V4_Value;
pub const IX509CertificateRequestPkcs10V4 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestPkcs10V3.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ClaimType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V4,
                pValue: ?*KeyAttestationClaimType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V4,
                pValue: ?*KeyAttestationClaimType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ClaimType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V4,
                Value: KeyAttestationClaimType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V4,
                Value: KeyAttestationClaimType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AttestPrivateKeyPreferred: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V4,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V4,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AttestPrivateKeyPreferred: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs10V4,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs10V4,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestPkcs10V3.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V4_get_ClaimType(self: *const T, pValue: ?*KeyAttestationClaimType) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V4.VTable, @ptrCast(self.vtable)).get_ClaimType(@as(*const IX509CertificateRequestPkcs10V4, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V4_put_ClaimType(self: *const T, Value: KeyAttestationClaimType) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V4.VTable, @ptrCast(self.vtable)).put_ClaimType(@as(*const IX509CertificateRequestPkcs10V4, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V4_get_AttestPrivateKeyPreferred(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V4.VTable, @ptrCast(self.vtable)).get_AttestPrivateKeyPreferred(@as(*const IX509CertificateRequestPkcs10V4, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs10V4_put_AttestPrivateKeyPreferred(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs10V4.VTable, @ptrCast(self.vtable)).put_AttestPrivateKeyPreferred(@as(*const IX509CertificateRequestPkcs10V4, @ptrCast(self)), Value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509CertificateRequestCertificate_Value = Guid.initString("728ab343-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestCertificate = &IID_IX509CertificateRequestCertificate_Value;
pub const IX509CertificateRequestCertificate = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestPkcs10.VTable,
        CheckPublicKeySignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                pPublicKey: ?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                pPublicKey: ?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Issuer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                ppValue: ?*?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                ppValue: ?*?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Issuer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NotBefore: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_NotBefore: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NotAfter: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_NotAfter: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SerialNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SerialNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestPkcs10.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_CheckPublicKeySignature(self: *const T, pPublicKey: ?*IX509PublicKey) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).CheckPublicKeySignature(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), pPublicKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_get_Issuer(self: *const T, ppValue: ?*?*IX500DistinguishedName) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).get_Issuer(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_put_Issuer(self: *const T, pValue: ?*IX500DistinguishedName) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).put_Issuer(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_get_NotBefore(self: *const T, pValue: ?*f64) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).get_NotBefore(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_put_NotBefore(self: *const T, Value: f64) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).put_NotBefore(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_get_NotAfter(self: *const T, pValue: ?*f64) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).get_NotAfter(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_put_NotAfter(self: *const T, Value: f64) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).put_NotAfter(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_get_SerialNumber(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).get_SerialNumber(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_put_SerialNumber(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).put_SerialNumber(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_get_SignerCertificate(self: *const T, ppValue: ?*?*ISignerCertificate) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).get_SignerCertificate(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate_put_SignerCertificate(self: *const T, pValue: ?*ISignerCertificate) HRESULT {
                return @as(*const IX509CertificateRequestCertificate.VTable, @ptrCast(self.vtable)).put_SignerCertificate(@as(*const IX509CertificateRequestCertificate, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateRequestCertificate2_Value = Guid.initString("728ab35a-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestCertificate2 = &IID_IX509CertificateRequestCertificate2_Value;
pub const IX509CertificateRequestCertificate2 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestCertificate.VTable,
        InitializeFromTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCertificate2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromPrivateKeyTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate2,
                Context: X509CertificateEnrollmentContext,
                pPrivateKey: ?*IX509PrivateKey,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCertificate2,
                Context: X509CertificateEnrollmentContext,
                pPrivateKey: ?*IX509PrivateKey,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PolicyServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Template: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCertificate2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCertificate2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestCertificate.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate2_InitializeFromTemplate(self: *const T, context: X509CertificateEnrollmentContext, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestCertificate2.VTable, @ptrCast(self.vtable)).InitializeFromTemplate(@as(*const IX509CertificateRequestCertificate2, @ptrCast(self)), context, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate2_InitializeFromPrivateKeyTemplate(self: *const T, Context: X509CertificateEnrollmentContext, pPrivateKey: ?*IX509PrivateKey, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestCertificate2.VTable, @ptrCast(self.vtable)).InitializeFromPrivateKeyTemplate(@as(*const IX509CertificateRequestCertificate2, @ptrCast(self)), Context, pPrivateKey, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate2_get_PolicyServer(self: *const T, ppPolicyServer: ?*?*IX509EnrollmentPolicyServer) HRESULT {
                return @as(*const IX509CertificateRequestCertificate2.VTable, @ptrCast(self.vtable)).get_PolicyServer(@as(*const IX509CertificateRequestCertificate2, @ptrCast(self)), ppPolicyServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCertificate2_get_Template(self: *const T, ppTemplate: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestCertificate2.VTable, @ptrCast(self.vtable)).get_Template(@as(*const IX509CertificateRequestCertificate2, @ptrCast(self)), ppTemplate);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509CertificateRequestPkcs7_Value = Guid.initString("728ab344-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestPkcs7 = &IID_IX509CertificateRequestPkcs7_Value;
pub const IX509CertificateRequestPkcs7 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequest.VTable,
        InitializeFromTemplateName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                Context: X509CertificateEnrollmentContext,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                Context: X509CertificateEnrollmentContext,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                Context: X509CertificateEnrollmentContext,
                RenewalRequest: i16,
                strCertificate: ?BSTR,
                Encoding: EncodingType,
                InheritOptions: X509RequestInheritOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                Context: X509CertificateEnrollmentContext,
                RenewalRequest: i16,
                strCertificate: ?BSTR,
                Encoding: EncodingType,
                InheritOptions: X509RequestInheritOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromInnerRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                pInnerRequest: ?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                pInnerRequest: ?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequesterName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequesterName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequest.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_InitializeFromTemplateName(self: *const T, Context: X509CertificateEnrollmentContext, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).InitializeFromTemplateName(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), Context, strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_InitializeFromCertificate(self: *const T, Context: X509CertificateEnrollmentContext, RenewalRequest: i16, strCertificate: ?BSTR, Encoding: EncodingType, InheritOptions: X509RequestInheritOptions) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).InitializeFromCertificate(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), Context, RenewalRequest, strCertificate, Encoding, InheritOptions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_InitializeFromInnerRequest(self: *const T, pInnerRequest: ?*IX509CertificateRequest) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).InitializeFromInnerRequest(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), pInnerRequest);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_InitializeDecode(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_get_RequesterName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).get_RequesterName(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_put_RequesterName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).put_RequesterName(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_get_SignerCertificate(self: *const T, ppValue: ?*?*ISignerCertificate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).get_SignerCertificate(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7_put_SignerCertificate(self: *const T, pValue: ?*ISignerCertificate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7.VTable, @ptrCast(self.vtable)).put_SignerCertificate(@as(*const IX509CertificateRequestPkcs7, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateRequestPkcs7V2_Value = Guid.initString("728ab35c-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestPkcs7V2 = &IID_IX509CertificateRequestPkcs7V2_Value;
pub const IX509CertificateRequestPkcs7V2 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestPkcs7.VTable,
        InitializeFromTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7V2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7V2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PolicyServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7V2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7V2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Template: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7V2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7V2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckCertificateSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestPkcs7V2,
                ValidateCertificateChain: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestPkcs7V2,
                ValidateCertificateChain: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestPkcs7.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7V2_InitializeFromTemplate(self: *const T, context: X509CertificateEnrollmentContext, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7V2.VTable, @ptrCast(self.vtable)).InitializeFromTemplate(@as(*const IX509CertificateRequestPkcs7V2, @ptrCast(self)), context, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7V2_get_PolicyServer(self: *const T, ppPolicyServer: ?*?*IX509EnrollmentPolicyServer) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7V2.VTable, @ptrCast(self.vtable)).get_PolicyServer(@as(*const IX509CertificateRequestPkcs7V2, @ptrCast(self)), ppPolicyServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7V2_get_Template(self: *const T, ppTemplate: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7V2.VTable, @ptrCast(self.vtable)).get_Template(@as(*const IX509CertificateRequestPkcs7V2, @ptrCast(self)), ppTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestPkcs7V2_CheckCertificateSignature(self: *const T, ValidateCertificateChain: i16) HRESULT {
                return @as(*const IX509CertificateRequestPkcs7V2.VTable, @ptrCast(self.vtable)).CheckCertificateSignature(@as(*const IX509CertificateRequestPkcs7V2, @ptrCast(self)), ValidateCertificateChain);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509CertificateRequestCmc_Value = Guid.initString("728ab345-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestCmc = &IID_IX509CertificateRequestCmc_Value;
pub const IX509CertificateRequestCmc = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestPkcs7.VTable,
        InitializeFromInnerRequestTemplateName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                pInnerRequest: ?*IX509CertificateRequest,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                pInnerRequest: ?*IX509CertificateRequest,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TemplateObjectId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NullSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CryptAttributes: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*ICryptAttributes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NameValuePairs: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509Extensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CriticalExtensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SuppressOids: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransactionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TransactionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SenderNonce: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SenderNonce: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignatureInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchivePrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ArchivePrivateKey: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeyArchivalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeyArchivalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptionAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EncryptionAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptionStrength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EncryptionStrength: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EncryptedKeyHash: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignerCertificates: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*ISignerCertificates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc,
                ppValue: ?*?*ISignerCertificates,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestPkcs7.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_InitializeFromInnerRequestTemplateName(self: *const T, pInnerRequest: ?*IX509CertificateRequest, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).InitializeFromInnerRequestTemplateName(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), pInnerRequest, strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_TemplateObjectId(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_TemplateObjectId(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_NullSigned(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_NullSigned(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_CryptAttributes(self: *const T, ppValue: ?*?*ICryptAttributes) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_CryptAttributes(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_NameValuePairs(self: *const T, ppValue: ?*?*IX509NameValuePairs) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_NameValuePairs(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_X509Extensions(self: *const T, ppValue: ?*?*IX509Extensions) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_X509Extensions(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_CriticalExtensions(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_CriticalExtensions(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_SuppressOids(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_SuppressOids(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_TransactionId(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_TransactionId(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_put_TransactionId(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).put_TransactionId(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_SenderNonce(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_SenderNonce(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_put_SenderNonce(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).put_SenderNonce(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_SignatureInformation(self: *const T, ppValue: ?*?*IX509SignatureInformation) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_SignatureInformation(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_ArchivePrivateKey(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_ArchivePrivateKey(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_put_ArchivePrivateKey(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).put_ArchivePrivateKey(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_KeyArchivalCertificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_KeyArchivalCertificate(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_put_KeyArchivalCertificate(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).put_KeyArchivalCertificate(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_EncryptionAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_EncryptionAlgorithm(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_put_EncryptionAlgorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).put_EncryptionAlgorithm(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_EncryptionStrength(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_EncryptionStrength(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_put_EncryptionStrength(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).put_EncryptionStrength(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_EncryptedKeyHash(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_EncryptedKeyHash(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc_get_SignerCertificates(self: *const T, ppValue: ?*?*ISignerCertificates) HRESULT {
                return @as(*const IX509CertificateRequestCmc.VTable, @ptrCast(self.vtable)).get_SignerCertificates(@as(*const IX509CertificateRequestCmc, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509CertificateRequestCmc2_Value = Guid.initString("728ab35d-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRequestCmc2 = &IID_IX509CertificateRequestCmc2_Value;
pub const IX509CertificateRequestCmc2 = extern struct {
    pub const VTable = extern struct {
        base: IX509CertificateRequestCmc.VTable,
        InitializeFromTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCmc2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromInnerRequestTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc2,
                pInnerRequest: ?*IX509CertificateRequest,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCmc2,
                pInnerRequest: ?*IX509CertificateRequest,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PolicyServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Template: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRequestCmc2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc2,
                AllowedSignatureTypes: Pkcs10AllowedSignatureTypes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCmc2,
                AllowedSignatureTypes: Pkcs10AllowedSignatureTypes,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckCertificateSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRequestCmc2,
                pSignerCertificate: ?*ISignerCertificate,
                ValidateCertificateChain: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRequestCmc2,
                pSignerCertificate: ?*ISignerCertificate,
                ValidateCertificateChain: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509CertificateRequestCmc.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc2_InitializeFromTemplate(self: *const T, context: X509CertificateEnrollmentContext, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestCmc2.VTable, @ptrCast(self.vtable)).InitializeFromTemplate(@as(*const IX509CertificateRequestCmc2, @ptrCast(self)), context, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc2_InitializeFromInnerRequestTemplate(self: *const T, pInnerRequest: ?*IX509CertificateRequest, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestCmc2.VTable, @ptrCast(self.vtable)).InitializeFromInnerRequestTemplate(@as(*const IX509CertificateRequestCmc2, @ptrCast(self)), pInnerRequest, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc2_get_PolicyServer(self: *const T, ppPolicyServer: ?*?*IX509EnrollmentPolicyServer) HRESULT {
                return @as(*const IX509CertificateRequestCmc2.VTable, @ptrCast(self.vtable)).get_PolicyServer(@as(*const IX509CertificateRequestCmc2, @ptrCast(self)), ppPolicyServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc2_get_Template(self: *const T, ppTemplate: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509CertificateRequestCmc2.VTable, @ptrCast(self.vtable)).get_Template(@as(*const IX509CertificateRequestCmc2, @ptrCast(self)), ppTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc2_CheckSignature(self: *const T, AllowedSignatureTypes: Pkcs10AllowedSignatureTypes) HRESULT {
                return @as(*const IX509CertificateRequestCmc2.VTable, @ptrCast(self.vtable)).CheckSignature(@as(*const IX509CertificateRequestCmc2, @ptrCast(self)), AllowedSignatureTypes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRequestCmc2_CheckCertificateSignature(self: *const T, pSignerCertificate: ?*ISignerCertificate, ValidateCertificateChain: i16) HRESULT {
                return @as(*const IX509CertificateRequestCmc2.VTable, @ptrCast(self.vtable)).CheckCertificateSignature(@as(*const IX509CertificateRequestCmc2, @ptrCast(self)), pSignerCertificate, ValidateCertificateChain);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const InstallResponseRestrictionFlags = enum(i32) {
    None = 0,
    NoOutstandingRequest = 1,
    UntrustedCertificate = 2,
    UntrustedRoot = 4,
};
pub const AllowNone = InstallResponseRestrictionFlags.None;
pub const AllowNoOutstandingRequest = InstallResponseRestrictionFlags.NoOutstandingRequest;
pub const AllowUntrustedCertificate = InstallResponseRestrictionFlags.UntrustedCertificate;
pub const AllowUntrustedRoot = InstallResponseRestrictionFlags.UntrustedRoot;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509Enrollment_Value = Guid.initString("728ab346-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509Enrollment = &IID_IX509Enrollment_Value;
pub const IX509Enrollment = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromTemplateName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
                Context: X509CertificateEnrollmentContext,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
                Context: X509CertificateEnrollmentContext,
                strTemplateName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeFromRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
                pRequest: ?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
                pRequest: ?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Enroll: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InstallResponse: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
                Restrictions: InstallResponseRestrictionFlags,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
                Restrictions: InstallResponseRestrictionFlags,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreatePFX: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment,
                strPassword: ?BSTR,
                ExportOptions: PFXExportOptions,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment,
                strPassword: ?BSTR,
                ExportOptions: PFXExportOptions,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Request: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*?*IX509CertificateRequest,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ParentWindow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NameValuePairs: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                ppValue: ?*?*IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                ppValue: ?*?*IX509NameValuePairs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnrollmentContext: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Status: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                ppValue: ?*?*IX509EnrollmentStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                ppValue: ?*?*IX509EnrollmentStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Certificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Response: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CertificateFriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CertificateFriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CertificateDescription: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CertificateDescription: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAConfigString: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_Initialize(self: *const T, Context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509Enrollment, @ptrCast(self)), Context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_InitializeFromTemplateName(self: *const T, Context: X509CertificateEnrollmentContext, strTemplateName: ?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).InitializeFromTemplateName(@as(*const IX509Enrollment, @ptrCast(self)), Context, strTemplateName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_InitializeFromRequest(self: *const T, pRequest: ?*IX509CertificateRequest) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).InitializeFromRequest(@as(*const IX509Enrollment, @ptrCast(self)), pRequest);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_CreateRequest(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).CreateRequest(@as(*const IX509Enrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_Enroll(self: *const T) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).Enroll(@as(*const IX509Enrollment, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_InstallResponse(self: *const T, Restrictions: InstallResponseRestrictionFlags, strResponse: ?BSTR, Encoding: EncodingType, strPassword: ?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).InstallResponse(@as(*const IX509Enrollment, @ptrCast(self)), Restrictions, strResponse, Encoding, strPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_CreatePFX(self: *const T, strPassword: ?BSTR, ExportOptions: PFXExportOptions, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).CreatePFX(@as(*const IX509Enrollment, @ptrCast(self)), strPassword, ExportOptions, Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_Request(self: *const T, pValue: ?*?*IX509CertificateRequest) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_Request(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_Silent(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_Silent(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_put_Silent(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).put_Silent(@as(*const IX509Enrollment, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_ParentWindow(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_ParentWindow(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_put_ParentWindow(self: *const T, Value: i32) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).put_ParentWindow(@as(*const IX509Enrollment, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_NameValuePairs(self: *const T, ppValue: ?*?*IX509NameValuePairs) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_NameValuePairs(@as(*const IX509Enrollment, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_EnrollmentContext(self: *const T, pValue: ?*X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_EnrollmentContext(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_Status(self: *const T, ppValue: ?*?*IX509EnrollmentStatus) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IX509Enrollment, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_Certificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_Certificate(@as(*const IX509Enrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_Response(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_Response(@as(*const IX509Enrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_CertificateFriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_CertificateFriendlyName(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_put_CertificateFriendlyName(self: *const T, strValue: ?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).put_CertificateFriendlyName(@as(*const IX509Enrollment, @ptrCast(self)), strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_CertificateDescription(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_CertificateDescription(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_put_CertificateDescription(self: *const T, strValue: ?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).put_CertificateDescription(@as(*const IX509Enrollment, @ptrCast(self)), strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_RequestId(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_RequestId(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment_get_CAConfigString(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment.VTable, @ptrCast(self.vtable)).get_CAConfigString(@as(*const IX509Enrollment, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509Enrollment2_Value = Guid.initString("728ab350-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509Enrollment2 = &IID_IX509Enrollment2_Value;
pub const IX509Enrollment2 = extern struct {
    pub const VTable = extern struct {
        base: IX509Enrollment.VTable,
        InitializeFromTemplate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment2,
                context: X509CertificateEnrollmentContext,
                pPolicyServer: ?*IX509EnrollmentPolicyServer,
                pTemplate: ?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InstallResponse2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509Enrollment2,
                Restrictions: InstallResponseRestrictionFlags,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                strPassword: ?BSTR,
                strEnrollmentPolicyServerUrl: ?BSTR,
                strEnrollmentPolicyServerID: ?BSTR,
                EnrollmentPolicyServerFlags: PolicyServerUrlFlags,
                authFlags: X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509Enrollment2,
                Restrictions: InstallResponseRestrictionFlags,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                strPassword: ?BSTR,
                strEnrollmentPolicyServerUrl: ?BSTR,
                strEnrollmentPolicyServerID: ?BSTR,
                EnrollmentPolicyServerFlags: PolicyServerUrlFlags,
                authFlags: X509EnrollmentAuthFlags,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PolicyServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment2,
                ppPolicyServer: ?*?*IX509EnrollmentPolicyServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Template: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment2,
                ppTemplate: ?*?*IX509CertificateTemplate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestIdString: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509Enrollment2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509Enrollment2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509Enrollment.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment2_InitializeFromTemplate(self: *const T, context: X509CertificateEnrollmentContext, pPolicyServer: ?*IX509EnrollmentPolicyServer, pTemplate: ?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509Enrollment2.VTable, @ptrCast(self.vtable)).InitializeFromTemplate(@as(*const IX509Enrollment2, @ptrCast(self)), context, pPolicyServer, pTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment2_InstallResponse2(self: *const T, Restrictions: InstallResponseRestrictionFlags, strResponse: ?BSTR, Encoding: EncodingType, strPassword: ?BSTR, strEnrollmentPolicyServerUrl: ?BSTR, strEnrollmentPolicyServerID: ?BSTR, EnrollmentPolicyServerFlags: PolicyServerUrlFlags, authFlags: X509EnrollmentAuthFlags) HRESULT {
                return @as(*const IX509Enrollment2.VTable, @ptrCast(self.vtable)).InstallResponse2(@as(*const IX509Enrollment2, @ptrCast(self)), Restrictions, strResponse, Encoding, strPassword, strEnrollmentPolicyServerUrl, strEnrollmentPolicyServerID, EnrollmentPolicyServerFlags, authFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment2_get_PolicyServer(self: *const T, ppPolicyServer: ?*?*IX509EnrollmentPolicyServer) HRESULT {
                return @as(*const IX509Enrollment2.VTable, @ptrCast(self.vtable)).get_PolicyServer(@as(*const IX509Enrollment2, @ptrCast(self)), ppPolicyServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment2_get_Template(self: *const T, ppTemplate: ?*?*IX509CertificateTemplate) HRESULT {
                return @as(*const IX509Enrollment2.VTable, @ptrCast(self.vtable)).get_Template(@as(*const IX509Enrollment2, @ptrCast(self)), ppTemplate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509Enrollment2_get_RequestIdString(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509Enrollment2.VTable, @ptrCast(self.vtable)).get_RequestIdString(@as(*const IX509Enrollment2, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const WebEnrollmentFlags = enum(i32) {
    t = 1,
};
pub const EnrollPrompt = WebEnrollmentFlags.t;

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509EnrollmentHelper_Value = Guid.initString("728ab351-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509EnrollmentHelper = &IID_IX509EnrollmentHelper_Value;
pub const IX509EnrollmentHelper = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        AddPolicyServer: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentHelper,
                strEnrollmentPolicyServerURI: ?BSTR,
                strEnrollmentPolicyID: ?BSTR,
                EnrollmentPolicyServerFlags: PolicyServerUrlFlags,
                authFlags: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentHelper,
                strEnrollmentPolicyServerURI: ?BSTR,
                strEnrollmentPolicyID: ?BSTR,
                EnrollmentPolicyServerFlags: PolicyServerUrlFlags,
                authFlags: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddEnrollmentServer: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentHelper,
                strEnrollmentServerURI: ?BSTR,
                authFlags: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentHelper,
                strEnrollmentServerURI: ?BSTR,
                authFlags: X509EnrollmentAuthFlags,
                strCredential: ?BSTR,
                strPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Enroll: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentHelper,
                strEnrollmentPolicyServerURI: ?BSTR,
                strTemplateName: ?BSTR,
                Encoding: EncodingType,
                enrollFlags: WebEnrollmentFlags,
                pstrCertificate: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentHelper,
                strEnrollmentPolicyServerURI: ?BSTR,
                strTemplateName: ?BSTR,
                Encoding: EncodingType,
                enrollFlags: WebEnrollmentFlags,
                pstrCertificate: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentHelper,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentHelper,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentHelper_AddPolicyServer(self: *const T, strEnrollmentPolicyServerURI: ?BSTR, strEnrollmentPolicyID: ?BSTR, EnrollmentPolicyServerFlags: PolicyServerUrlFlags, authFlags: X509EnrollmentAuthFlags, strCredential: ?BSTR, strPassword: ?BSTR) HRESULT {
                return @as(*const IX509EnrollmentHelper.VTable, @ptrCast(self.vtable)).AddPolicyServer(@as(*const IX509EnrollmentHelper, @ptrCast(self)), strEnrollmentPolicyServerURI, strEnrollmentPolicyID, EnrollmentPolicyServerFlags, authFlags, strCredential, strPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentHelper_AddEnrollmentServer(self: *const T, strEnrollmentServerURI: ?BSTR, authFlags: X509EnrollmentAuthFlags, strCredential: ?BSTR, strPassword: ?BSTR) HRESULT {
                return @as(*const IX509EnrollmentHelper.VTable, @ptrCast(self.vtable)).AddEnrollmentServer(@as(*const IX509EnrollmentHelper, @ptrCast(self)), strEnrollmentServerURI, authFlags, strCredential, strPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentHelper_Enroll(self: *const T, strEnrollmentPolicyServerURI: ?BSTR, strTemplateName: ?BSTR, Encoding: EncodingType, enrollFlags: WebEnrollmentFlags, pstrCertificate: ?*?BSTR) HRESULT {
                return @as(*const IX509EnrollmentHelper.VTable, @ptrCast(self.vtable)).Enroll(@as(*const IX509EnrollmentHelper, @ptrCast(self)), strEnrollmentPolicyServerURI, strTemplateName, Encoding, enrollFlags, pstrCertificate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentHelper_Initialize(self: *const T, Context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509EnrollmentHelper.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509EnrollmentHelper, @ptrCast(self)), Context);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IX509EnrollmentWebClassFactory_Value = Guid.initString("728ab349-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509EnrollmentWebClassFactory = &IID_IX509EnrollmentWebClassFactory_Value;
pub const IX509EnrollmentWebClassFactory = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        CreateObject: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509EnrollmentWebClassFactory,
                strProgID: ?BSTR,
                ppIUnknown: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509EnrollmentWebClassFactory,
                strProgID: ?BSTR,
                ppIUnknown: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509EnrollmentWebClassFactory_CreateObject(self: *const T, strProgID: ?BSTR, ppIUnknown: ?*?*IUnknown) HRESULT {
                return @as(*const IX509EnrollmentWebClassFactory.VTable, @ptrCast(self.vtable)).CreateObject(@as(*const IX509EnrollmentWebClassFactory, @ptrCast(self)), strProgID, ppIUnknown);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.1'
const IID_IX509MachineEnrollmentFactory_Value = Guid.initString("728ab352-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509MachineEnrollmentFactory = &IID_IX509MachineEnrollmentFactory_Value;
pub const IX509MachineEnrollmentFactory = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        CreateObject: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509MachineEnrollmentFactory,
                strProgID: ?BSTR,
                ppIHelper: ?*?*IX509EnrollmentHelper,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509MachineEnrollmentFactory,
                strProgID: ?BSTR,
                ppIHelper: ?*?*IX509EnrollmentHelper,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509MachineEnrollmentFactory_CreateObject(self: *const T, strProgID: ?BSTR, ppIHelper: ?*?*IX509EnrollmentHelper) HRESULT {
                return @as(*const IX509MachineEnrollmentFactory.VTable, @ptrCast(self.vtable)).CreateObject(@as(*const IX509MachineEnrollmentFactory, @ptrCast(self)), strProgID, ppIHelper);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const CRLRevocationReason = enum(i32) {
    UNSPECIFIED = 0,
    KEY_COMPROMISE = 1,
    CA_COMPROMISE = 2,
    AFFILIATION_CHANGED = 3,
    SUPERSEDED = 4,
    CESSATION_OF_OPERATION = 5,
    CERTIFICATE_HOLD = 6,
    REMOVE_FROM_CRL = 8,
    PRIVILEGE_WITHDRAWN = 9,
    AA_COMPROMISE = 10,
};
pub const XCN_CRL_REASON_UNSPECIFIED = CRLRevocationReason.UNSPECIFIED;
pub const XCN_CRL_REASON_KEY_COMPROMISE = CRLRevocationReason.KEY_COMPROMISE;
pub const XCN_CRL_REASON_CA_COMPROMISE = CRLRevocationReason.CA_COMPROMISE;
pub const XCN_CRL_REASON_AFFILIATION_CHANGED = CRLRevocationReason.AFFILIATION_CHANGED;
pub const XCN_CRL_REASON_SUPERSEDED = CRLRevocationReason.SUPERSEDED;
pub const XCN_CRL_REASON_CESSATION_OF_OPERATION = CRLRevocationReason.CESSATION_OF_OPERATION;
pub const XCN_CRL_REASON_CERTIFICATE_HOLD = CRLRevocationReason.CERTIFICATE_HOLD;
pub const XCN_CRL_REASON_REMOVE_FROM_CRL = CRLRevocationReason.REMOVE_FROM_CRL;
pub const XCN_CRL_REASON_PRIVILEGE_WITHDRAWN = CRLRevocationReason.PRIVILEGE_WITHDRAWN;
pub const XCN_CRL_REASON_AA_COMPROMISE = CRLRevocationReason.AA_COMPROMISE;

const IID_IX509CertificateRevocationListEntry_Value = Guid.initString("728ab35e-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRevocationListEntry = &IID_IX509CertificateRevocationListEntry_Value;
pub const IX509CertificateRevocationListEntry = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                Encoding: EncodingType,
                SerialNumber: ?BSTR,
                RevocationDate: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                Encoding: EncodingType,
                SerialNumber: ?BSTR,
                RevocationDate: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SerialNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RevocationDate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RevocationReason: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                pValue: ?*CRLRevocationReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                pValue: ?*CRLRevocationReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RevocationReason: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                Value: CRLRevocationReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                Value: CRLRevocationReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509Extensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CriticalExtensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntry,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntry,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_Initialize(self: *const T, Encoding: EncodingType, SerialNumber: ?BSTR, RevocationDate: f64) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), Encoding, SerialNumber, RevocationDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_get_SerialNumber(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).get_SerialNumber(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_get_RevocationDate(self: *const T, pValue: ?*f64) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).get_RevocationDate(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_get_RevocationReason(self: *const T, pValue: ?*CRLRevocationReason) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).get_RevocationReason(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_put_RevocationReason(self: *const T, Value: CRLRevocationReason) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).put_RevocationReason(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_get_X509Extensions(self: *const T, ppValue: ?*?*IX509Extensions) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).get_X509Extensions(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntry_get_CriticalExtensions(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509CertificateRevocationListEntry.VTable, @ptrCast(self.vtable)).get_CriticalExtensions(@as(*const IX509CertificateRevocationListEntry, @ptrCast(self)), ppValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IX509CertificateRevocationListEntries_Value = Guid.initString("728ab35f-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRevocationListEntries = &IID_IX509CertificateRevocationListEntries_Value;
pub const IX509CertificateRevocationListEntries = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemByIndex: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                Index: i32,
                pVal: ?*?*IX509CertificateRevocationListEntry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                Index: i32,
                pVal: ?*?*IX509CertificateRevocationListEntry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                pVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                pVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                pVal: ?*IX509CertificateRevocationListEntry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                pVal: ?*IX509CertificateRevocationListEntry,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IndexBySerialNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                Encoding: EncodingType,
                SerialNumber: ?BSTR,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                Encoding: EncodingType,
                SerialNumber: ?BSTR,
                pIndex: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationListEntries,
                pValue: ?*IX509CertificateRevocationListEntries,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationListEntries,
                pValue: ?*IX509CertificateRevocationListEntries,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_get_ItemByIndex(self: *const T, Index: i32, pVal: ?*?*IX509CertificateRevocationListEntry) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).get_ItemByIndex(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), Index, pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_get_Count(self: *const T, pVal: ?*i32) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_get__NewEnum(self: *const T, pVal: ?*?*IUnknown) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_Add(self: *const T, pVal: ?*IX509CertificateRevocationListEntry) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).Add(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), pVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_Remove(self: *const T, Index: i32) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).Remove(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_Clear(self: *const T) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).Clear(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_get_IndexBySerialNumber(self: *const T, Encoding: EncodingType, SerialNumber: ?BSTR, pIndex: ?*i32) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).get_IndexBySerialNumber(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), Encoding, SerialNumber, pIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationListEntries_AddRange(self: *const T, pValue: ?*IX509CertificateRevocationListEntries) HRESULT {
                return @as(*const IX509CertificateRevocationListEntries.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IX509CertificateRevocationListEntries, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IX509CertificateRevocationList_Value = Guid.initString("728ab360-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509CertificateRevocationList = &IID_IX509CertificateRevocationList_Value;
pub const IX509CertificateRevocationList = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeDecode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ResetForEncode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckPublicKeySignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pPublicKey: ?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pPublicKey: ?*IX509PublicKey,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509CertificateRevocationList,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Issuer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Issuer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*IX500DistinguishedName,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ThisUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ThisUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NextUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_NextUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509CRLEntries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX509CertificateRevocationListEntries,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX509CertificateRevocationListEntries,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509Extensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX509Extensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CriticalExtensions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IObjectIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CRLNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CRLNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BaseCRL: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NullSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*IObjectId,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlternateSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlternateSignatureAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignatureInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                ppValue: ?*?*IX509SignatureInformation,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RawDataToBeSigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Signature: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509CertificateRevocationList,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_Initialize(self: *const T) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509CertificateRevocationList, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_InitializeDecode(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).InitializeDecode(@as(*const IX509CertificateRevocationList, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_Encode(self: *const T) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).Encode(@as(*const IX509CertificateRevocationList, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_ResetForEncode(self: *const T) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).ResetForEncode(@as(*const IX509CertificateRevocationList, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_CheckPublicKeySignature(self: *const T, pPublicKey: ?*IX509PublicKey) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).CheckPublicKeySignature(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pPublicKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_CheckSignature(self: *const T) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).CheckSignature(@as(*const IX509CertificateRevocationList, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_Issuer(self: *const T, ppValue: ?*?*IX500DistinguishedName) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_Issuer(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_Issuer(self: *const T, pValue: ?*IX500DistinguishedName) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_Issuer(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_ThisUpdate(self: *const T, pValue: ?*f64) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_ThisUpdate(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_ThisUpdate(self: *const T, Value: f64) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_ThisUpdate(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_NextUpdate(self: *const T, pValue: ?*f64) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_NextUpdate(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_NextUpdate(self: *const T, Value: f64) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_NextUpdate(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_X509CRLEntries(self: *const T, ppValue: ?*?*IX509CertificateRevocationListEntries) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_X509CRLEntries(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_X509Extensions(self: *const T, ppValue: ?*?*IX509Extensions) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_X509Extensions(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_CriticalExtensions(self: *const T, ppValue: ?*?*IObjectIds) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_CriticalExtensions(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_SignerCertificate(self: *const T, ppValue: ?*?*ISignerCertificate) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_SignerCertificate(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_SignerCertificate(self: *const T, pValue: ?*ISignerCertificate) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_SignerCertificate(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_CRLNumber(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_CRLNumber(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_CRLNumber(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_CRLNumber(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_CAVersion(self: *const T, pValue: ?*i32) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_CAVersion(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_CAVersion(self: *const T, pValue: i32) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_CAVersion(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_BaseCRL(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_BaseCRL(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_NullSigned(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_NullSigned(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_HashAlgorithm(self: *const T, ppValue: ?*?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_HashAlgorithm(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_HashAlgorithm(self: *const T, pValue: ?*IObjectId) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_HashAlgorithm(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_AlternateSignatureAlgorithm(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_AlternateSignatureAlgorithm(@as(*const IX509CertificateRevocationList, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_put_AlternateSignatureAlgorithm(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).put_AlternateSignatureAlgorithm(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_SignatureInformation(self: *const T, ppValue: ?*?*IX509SignatureInformation) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_SignatureInformation(@as(*const IX509CertificateRevocationList, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_RawData(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_RawData(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_RawDataToBeSigned(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_RawDataToBeSigned(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509CertificateRevocationList_get_Signature(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509CertificateRevocationList.VTable, @ptrCast(self.vtable)).get_Signature(@as(*const IX509CertificateRevocationList, @ptrCast(self)), Encoding, pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertificateAttestationChallenge_Value = Guid.initString("6f175a7c-4a3a-40ae-9dba-592fd6bbf9b8");
pub const IID_ICertificateAttestationChallenge = &IID_ICertificateAttestationChallenge_Value;
pub const ICertificateAttestationChallenge = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificateAttestationChallenge,
                Encoding: EncodingType,
                strPendingFullCmcResponseWithChallenge: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificateAttestationChallenge,
                Encoding: EncodingType,
                strPendingFullCmcResponseWithChallenge: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DecryptChallenge: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertificateAttestationChallenge,
                Encoding: EncodingType,
                pstrEnvelopedPkcs7ReencryptedToCA: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertificateAttestationChallenge,
                Encoding: EncodingType,
                pstrEnvelopedPkcs7ReencryptedToCA: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificateAttestationChallenge,
                pstrRequestID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificateAttestationChallenge,
                pstrRequestID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificateAttestationChallenge_Initialize(self: *const T, Encoding: EncodingType, strPendingFullCmcResponseWithChallenge: ?BSTR) HRESULT {
                return @as(*const ICertificateAttestationChallenge.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertificateAttestationChallenge, @ptrCast(self)), Encoding, strPendingFullCmcResponseWithChallenge);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificateAttestationChallenge_DecryptChallenge(self: *const T, Encoding: EncodingType, pstrEnvelopedPkcs7ReencryptedToCA: ?*?BSTR) HRESULT {
                return @as(*const ICertificateAttestationChallenge.VTable, @ptrCast(self.vtable)).DecryptChallenge(@as(*const ICertificateAttestationChallenge, @ptrCast(self)), Encoding, pstrEnvelopedPkcs7ReencryptedToCA);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificateAttestationChallenge_get_RequestID(self: *const T, pstrRequestID: ?*?BSTR) HRESULT {
                return @as(*const ICertificateAttestationChallenge.VTable, @ptrCast(self.vtable)).get_RequestID(@as(*const ICertificateAttestationChallenge, @ptrCast(self)), pstrRequestID);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertificateAttestationChallenge2_Value = Guid.initString("4631334d-e266-47d6-bd79-be53cb2e2753");
pub const IID_ICertificateAttestationChallenge2 = &IID_ICertificateAttestationChallenge2_Value;
pub const ICertificateAttestationChallenge2 = extern struct {
    pub const VTable = extern struct {
        base: ICertificateAttestationChallenge.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeyContainerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificateAttestationChallenge2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificateAttestationChallenge2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeyBlob: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICertificateAttestationChallenge2,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICertificateAttestationChallenge2,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertificateAttestationChallenge.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificateAttestationChallenge2_put_KeyContainerName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const ICertificateAttestationChallenge2.VTable, @ptrCast(self.vtable)).put_KeyContainerName(@as(*const ICertificateAttestationChallenge2, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertificateAttestationChallenge2_put_KeyBlob(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const ICertificateAttestationChallenge2.VTable, @ptrCast(self.vtable)).put_KeyBlob(@as(*const ICertificateAttestationChallenge2, @ptrCast(self)), Encoding, Value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IX509SCEPEnrollment_Value = Guid.initString("728ab361-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509SCEPEnrollment = &IID_IX509SCEPEnrollment_Value;
pub const IX509SCEPEnrollment = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                pRequest: ?*IX509CertificateRequestPkcs10,
                strThumbprint: ?BSTR,
                ThumprintEncoding: EncodingType,
                strServerCertificates: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                pRequest: ?*IX509CertificateRequestPkcs10,
                strThumbprint: ?BSTR,
                ThumprintEncoding: EncodingType,
                strServerCertificates: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeForPending: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Context: X509CertificateEnrollmentContext,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateRequestMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateRetrievePendingMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateRetrieveCertificateMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Context: X509CertificateEnrollmentContext,
                strIssuer: ?BSTR,
                IssuerEncoding: EncodingType,
                strSerialNumber: ?BSTR,
                SerialNumberEncoding: EncodingType,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Context: X509CertificateEnrollmentContext,
                strIssuer: ?BSTR,
                IssuerEncoding: EncodingType,
                strSerialNumber: ?BSTR,
                SerialNumberEncoding: EncodingType,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ProcessResponseMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ServerCapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FailInfo: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*X509SCEPFailInfo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*X509SCEPFailInfo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OldCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OldCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*ISignerCertificate,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransactionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TransactionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Request: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*IX509CertificateRequestPkcs10,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*IX509CertificateRequestPkcs10,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CertificateFriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CertificateFriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Status: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*IX509EnrollmentStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                ppValue: ?*?*IX509EnrollmentStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Certificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                pValue: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Silent: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment,
                Value: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_Initialize(self: *const T, pRequest: ?*IX509CertificateRequestPkcs10, strThumbprint: ?BSTR, ThumprintEncoding: EncodingType, strServerCertificates: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509SCEPEnrollment, @ptrCast(self)), pRequest, strThumbprint, ThumprintEncoding, strServerCertificates, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_InitializeForPending(self: *const T, Context: X509CertificateEnrollmentContext) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).InitializeForPending(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_CreateRequestMessage(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).CreateRequestMessage(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_CreateRetrievePendingMessage(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).CreateRetrievePendingMessage(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_CreateRetrieveCertificateMessage(self: *const T, Context: X509CertificateEnrollmentContext, strIssuer: ?BSTR, IssuerEncoding: EncodingType, strSerialNumber: ?BSTR, SerialNumberEncoding: EncodingType, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).CreateRetrieveCertificateMessage(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Context, strIssuer, IssuerEncoding, strSerialNumber, SerialNumberEncoding, Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_ProcessResponseMessage(self: *const T, strResponse: ?BSTR, Encoding: EncodingType, pDisposition: ?*X509SCEPDisposition) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).ProcessResponseMessage(@as(*const IX509SCEPEnrollment, @ptrCast(self)), strResponse, Encoding, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_put_ServerCapabilities(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).put_ServerCapabilities(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_FailInfo(self: *const T, pValue: ?*X509SCEPFailInfo) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_FailInfo(@as(*const IX509SCEPEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_SignerCertificate(self: *const T, ppValue: ?*?*ISignerCertificate) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_SignerCertificate(@as(*const IX509SCEPEnrollment, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_put_SignerCertificate(self: *const T, pValue: ?*ISignerCertificate) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).put_SignerCertificate(@as(*const IX509SCEPEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_OldCertificate(self: *const T, ppValue: ?*?*ISignerCertificate) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_OldCertificate(@as(*const IX509SCEPEnrollment, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_put_OldCertificate(self: *const T, pValue: ?*ISignerCertificate) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).put_OldCertificate(@as(*const IX509SCEPEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_TransactionId(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_TransactionId(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_put_TransactionId(self: *const T, Encoding: EncodingType, Value: ?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).put_TransactionId(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Encoding, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_Request(self: *const T, ppValue: ?*?*IX509CertificateRequestPkcs10) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_Request(@as(*const IX509SCEPEnrollment, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_CertificateFriendlyName(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_CertificateFriendlyName(@as(*const IX509SCEPEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_put_CertificateFriendlyName(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).put_CertificateFriendlyName(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_Status(self: *const T, ppValue: ?*?*IX509EnrollmentStatus) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IX509SCEPEnrollment, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_Certificate(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_Certificate(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_get_Silent(self: *const T, pValue: ?*i16) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).get_Silent(@as(*const IX509SCEPEnrollment, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_put_Silent(self: *const T, Value: i16) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).put_Silent(@as(*const IX509SCEPEnrollment, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment_DeleteRequest(self: *const T) HRESULT {
                return @as(*const IX509SCEPEnrollment.VTable, @ptrCast(self.vtable)).DeleteRequest(@as(*const IX509SCEPEnrollment, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509SCEPProcessMessageFlags = enum(i32) {
    Default = 0,
    SkipCertInstall = 1,
};
pub const SCEPProcessDefault = X509SCEPProcessMessageFlags.Default;
pub const SCEPProcessSkipCertInstall = X509SCEPProcessMessageFlags.SkipCertInstall;

pub const DelayRetryAction = enum(i32) {
    Unknown = 0,
    None = 1,
    Short = 2,
    Long = 3,
    Success = 4,
    PastSuccess = 5,
};
pub const DelayRetryUnknown = DelayRetryAction.Unknown;
pub const DelayRetryNone = DelayRetryAction.None;
pub const DelayRetryShort = DelayRetryAction.Short;
pub const DelayRetryLong = DelayRetryAction.Long;
pub const DelayRetrySuccess = DelayRetryAction.Success;
pub const DelayRetryPastSuccess = DelayRetryAction.PastSuccess;

const IID_IX509SCEPEnrollment2_Value = Guid.initString("728ab364-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509SCEPEnrollment2 = &IID_IX509SCEPEnrollment2_Value;
pub const IX509SCEPEnrollment2 = extern struct {
    pub const VTable = extern struct {
        base: IX509SCEPEnrollment.VTable,
        CreateChallengeAnswerMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment2,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment2,
                Encoding: EncodingType,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ProcessResponseMessage2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollment2,
                Flags: X509SCEPProcessMessageFlags,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollment2,
                Flags: X509SCEPProcessMessageFlags,
                strResponse: ?BSTR,
                Encoding: EncodingType,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ResultMessageText: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DelayRetry: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment2,
                pValue: ?*DelayRetryAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment2,
                pValue: ?*DelayRetryAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ActivityId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment2,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ActivityId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollment2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollment2,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IX509SCEPEnrollment.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment2_CreateChallengeAnswerMessage(self: *const T, Encoding: EncodingType, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment2.VTable, @ptrCast(self.vtable)).CreateChallengeAnswerMessage(@as(*const IX509SCEPEnrollment2, @ptrCast(self)), Encoding, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment2_ProcessResponseMessage2(self: *const T, Flags: X509SCEPProcessMessageFlags, strResponse: ?BSTR, Encoding: EncodingType, pDisposition: ?*X509SCEPDisposition) HRESULT {
                return @as(*const IX509SCEPEnrollment2.VTable, @ptrCast(self.vtable)).ProcessResponseMessage2(@as(*const IX509SCEPEnrollment2, @ptrCast(self)), Flags, strResponse, Encoding, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment2_get_ResultMessageText(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment2.VTable, @ptrCast(self.vtable)).get_ResultMessageText(@as(*const IX509SCEPEnrollment2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment2_get_DelayRetry(self: *const T, pValue: ?*DelayRetryAction) HRESULT {
                return @as(*const IX509SCEPEnrollment2.VTable, @ptrCast(self.vtable)).get_DelayRetry(@as(*const IX509SCEPEnrollment2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment2_get_ActivityId(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment2.VTable, @ptrCast(self.vtable)).get_ActivityId(@as(*const IX509SCEPEnrollment2, @ptrCast(self)), pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollment2_put_ActivityId(self: *const T, Value: ?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollment2.VTable, @ptrCast(self.vtable)).put_ActivityId(@as(*const IX509SCEPEnrollment2, @ptrCast(self)), Value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IX509SCEPEnrollmentHelper_Value = Guid.initString("728ab365-217d-11da-b2a4-000e7bbb2b09");
pub const IID_IX509SCEPEnrollmentHelper = &IID_IX509SCEPEnrollmentHelper_Value;
pub const IX509SCEPEnrollmentHelper = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollmentHelper,
                strServerUrl: ?BSTR,
                strRequestHeaders: ?BSTR,
                pRequest: ?*IX509CertificateRequestPkcs10,
                strCACertificateThumbprint: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollmentHelper,
                strServerUrl: ?BSTR,
                strRequestHeaders: ?BSTR,
                pRequest: ?*IX509CertificateRequestPkcs10,
                strCACertificateThumbprint: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InitializeForPending: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollmentHelper,
                strServerUrl: ?BSTR,
                strRequestHeaders: ?BSTR,
                Context: X509CertificateEnrollmentContext,
                strTransactionId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollmentHelper,
                strServerUrl: ?BSTR,
                strRequestHeaders: ?BSTR,
                Context: X509CertificateEnrollmentContext,
                strTransactionId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Enroll: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollmentHelper,
                ProcessFlags: X509SCEPProcessMessageFlags,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollmentHelper,
                ProcessFlags: X509SCEPProcessMessageFlags,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        FetchPending: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IX509SCEPEnrollmentHelper,
                ProcessFlags: X509SCEPProcessMessageFlags,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IX509SCEPEnrollmentHelper,
                ProcessFlags: X509SCEPProcessMessageFlags,
                pDisposition: ?*X509SCEPDisposition,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_X509SCEPEnrollment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollmentHelper,
                ppValue: ?*?*IX509SCEPEnrollment,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollmentHelper,
                ppValue: ?*?*IX509SCEPEnrollment,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ResultMessageText: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IX509SCEPEnrollmentHelper,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IX509SCEPEnrollmentHelper,
                pValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollmentHelper_Initialize(self: *const T, strServerUrl: ?BSTR, strRequestHeaders: ?BSTR, pRequest: ?*IX509CertificateRequestPkcs10, strCACertificateThumbprint: ?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollmentHelper.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IX509SCEPEnrollmentHelper, @ptrCast(self)), strServerUrl, strRequestHeaders, pRequest, strCACertificateThumbprint);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollmentHelper_InitializeForPending(self: *const T, strServerUrl: ?BSTR, strRequestHeaders: ?BSTR, Context: X509CertificateEnrollmentContext, strTransactionId: ?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollmentHelper.VTable, @ptrCast(self.vtable)).InitializeForPending(@as(*const IX509SCEPEnrollmentHelper, @ptrCast(self)), strServerUrl, strRequestHeaders, Context, strTransactionId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollmentHelper_Enroll(self: *const T, ProcessFlags: X509SCEPProcessMessageFlags, pDisposition: ?*X509SCEPDisposition) HRESULT {
                return @as(*const IX509SCEPEnrollmentHelper.VTable, @ptrCast(self.vtable)).Enroll(@as(*const IX509SCEPEnrollmentHelper, @ptrCast(self)), ProcessFlags, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollmentHelper_FetchPending(self: *const T, ProcessFlags: X509SCEPProcessMessageFlags, pDisposition: ?*X509SCEPDisposition) HRESULT {
                return @as(*const IX509SCEPEnrollmentHelper.VTable, @ptrCast(self.vtable)).FetchPending(@as(*const IX509SCEPEnrollmentHelper, @ptrCast(self)), ProcessFlags, pDisposition);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollmentHelper_get_X509SCEPEnrollment(self: *const T, ppValue: ?*?*IX509SCEPEnrollment) HRESULT {
                return @as(*const IX509SCEPEnrollmentHelper.VTable, @ptrCast(self.vtable)).get_X509SCEPEnrollment(@as(*const IX509SCEPEnrollmentHelper, @ptrCast(self)), ppValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IX509SCEPEnrollmentHelper_get_ResultMessageText(self: *const T, pValue: ?*?BSTR) HRESULT {
                return @as(*const IX509SCEPEnrollmentHelper.VTable, @ptrCast(self.vtable)).get_ResultMessageText(@as(*const IX509SCEPEnrollmentHelper, @ptrCast(self)), pValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const X509CertificateTemplateGeneralFlag = enum(i32) {
    MachineType = 64,
    CA = 128,
    CrossCA = 2048,
    Default = 65536,
    Modified = 131072,
    DonotPersist = 4096,
};
pub const GeneralMachineType = X509CertificateTemplateGeneralFlag.MachineType;
pub const GeneralCA = X509CertificateTemplateGeneralFlag.CA;
pub const GeneralCrossCA = X509CertificateTemplateGeneralFlag.CrossCA;
pub const GeneralDefault = X509CertificateTemplateGeneralFlag.Default;
pub const GeneralModified = X509CertificateTemplateGeneralFlag.Modified;
pub const GeneralDonotPersist = X509CertificateTemplateGeneralFlag.DonotPersist;

pub const X509CertificateTemplateEnrollmentFlag = enum(i32) {
    IncludeSymmetricAlgorithms = 1,
    PendAllRequests = 2,
    PublishToKRAContainer = 4,
    PublishToDS = 8,
    AutoEnrollmentCheckUserDSCertificate = 16,
    AutoEnrollment = 32,
    DomainAuthenticationNotRequired = 128,
    PreviousApprovalValidateReenrollment = 64,
    UserInteractionRequired = 256,
    AddTemplateName = 512,
    RemoveInvalidCertificateFromPersonalStore = 1024,
    AllowEnrollOnBehalfOf = 2048,
    AddOCSPNoCheck = 4096,
    ReuseKeyOnFullSmartCard = 8192,
    NoRevocationInfoInCerts = 16384,
    IncludeBasicConstraintsForEECerts = 32768,
    PreviousApprovalKeyBasedValidateReenrollment = 65536,
    CertificateIssuancePoliciesFromRequest = 131072,
    SkipAutoRenewal = 262144,
};
pub const EnrollmentIncludeSymmetricAlgorithms = X509CertificateTemplateEnrollmentFlag.IncludeSymmetricAlgorithms;
pub const EnrollmentPendAllRequests = X509CertificateTemplateEnrollmentFlag.PendAllRequests;
pub const EnrollmentPublishToKRAContainer = X509CertificateTemplateEnrollmentFlag.PublishToKRAContainer;
pub const EnrollmentPublishToDS = X509CertificateTemplateEnrollmentFlag.PublishToDS;
pub const EnrollmentAutoEnrollmentCheckUserDSCertificate = X509CertificateTemplateEnrollmentFlag.AutoEnrollmentCheckUserDSCertificate;
pub const EnrollmentAutoEnrollment = X509CertificateTemplateEnrollmentFlag.AutoEnrollment;
pub const EnrollmentDomainAuthenticationNotRequired = X509CertificateTemplateEnrollmentFlag.DomainAuthenticationNotRequired;
pub const EnrollmentPreviousApprovalValidateReenrollment = X509CertificateTemplateEnrollmentFlag.PreviousApprovalValidateReenrollment;
pub const EnrollmentUserInteractionRequired = X509CertificateTemplateEnrollmentFlag.UserInteractionRequired;
pub const EnrollmentAddTemplateName = X509CertificateTemplateEnrollmentFlag.AddTemplateName;
pub const EnrollmentRemoveInvalidCertificateFromPersonalStore = X509CertificateTemplateEnrollmentFlag.RemoveInvalidCertificateFromPersonalStore;
pub const EnrollmentAllowEnrollOnBehalfOf = X509CertificateTemplateEnrollmentFlag.AllowEnrollOnBehalfOf;
pub const EnrollmentAddOCSPNoCheck = X509CertificateTemplateEnrollmentFlag.AddOCSPNoCheck;
pub const EnrollmentReuseKeyOnFullSmartCard = X509CertificateTemplateEnrollmentFlag.ReuseKeyOnFullSmartCard;
pub const EnrollmentNoRevocationInfoInCerts = X509CertificateTemplateEnrollmentFlag.NoRevocationInfoInCerts;
pub const EnrollmentIncludeBasicConstraintsForEECerts = X509CertificateTemplateEnrollmentFlag.IncludeBasicConstraintsForEECerts;
pub const EnrollmentPreviousApprovalKeyBasedValidateReenrollment = X509CertificateTemplateEnrollmentFlag.PreviousApprovalKeyBasedValidateReenrollment;
pub const EnrollmentCertificateIssuancePoliciesFromRequest = X509CertificateTemplateEnrollmentFlag.CertificateIssuancePoliciesFromRequest;
pub const EnrollmentSkipAutoRenewal = X509CertificateTemplateEnrollmentFlag.SkipAutoRenewal;

pub const X509CertificateTemplateSubjectNameFlag = enum(i32) {
    NameEnrolleeSupplies = 1,
    NameRequireDirectoryPath = -2147483648,
    NameRequireCommonName = 1073741824,
    NameRequireEmail = 536870912,
    NameRequireDNS = 268435456,
    NameAndAlternativeNameOldCertSupplies = 8,
    AlternativeNameEnrolleeSupplies = 65536,
    AlternativeNameRequireDirectoryGUID = 16777216,
    AlternativeNameRequireUPN = 33554432,
    AlternativeNameRequireEmail = 67108864,
    AlternativeNameRequireSPN = 8388608,
    AlternativeNameRequireDNS = 134217728,
    AlternativeNameRequireDomainDNS = 4194304,
};
pub const SubjectNameEnrolleeSupplies = X509CertificateTemplateSubjectNameFlag.NameEnrolleeSupplies;
pub const SubjectNameRequireDirectoryPath = X509CertificateTemplateSubjectNameFlag.NameRequireDirectoryPath;
pub const SubjectNameRequireCommonName = X509CertificateTemplateSubjectNameFlag.NameRequireCommonName;
pub const SubjectNameRequireEmail = X509CertificateTemplateSubjectNameFlag.NameRequireEmail;
pub const SubjectNameRequireDNS = X509CertificateTemplateSubjectNameFlag.NameRequireDNS;
pub const SubjectNameAndAlternativeNameOldCertSupplies = X509CertificateTemplateSubjectNameFlag.NameAndAlternativeNameOldCertSupplies;
pub const SubjectAlternativeNameEnrolleeSupplies = X509CertificateTemplateSubjectNameFlag.AlternativeNameEnrolleeSupplies;
pub const SubjectAlternativeNameRequireDirectoryGUID = X509CertificateTemplateSubjectNameFlag.AlternativeNameRequireDirectoryGUID;
pub const SubjectAlternativeNameRequireUPN = X509CertificateTemplateSubjectNameFlag.AlternativeNameRequireUPN;
pub const SubjectAlternativeNameRequireEmail = X509CertificateTemplateSubjectNameFlag.AlternativeNameRequireEmail;
pub const SubjectAlternativeNameRequireSPN = X509CertificateTemplateSubjectNameFlag.AlternativeNameRequireSPN;
pub const SubjectAlternativeNameRequireDNS = X509CertificateTemplateSubjectNameFlag.AlternativeNameRequireDNS;
pub const SubjectAlternativeNameRequireDomainDNS = X509CertificateTemplateSubjectNameFlag.AlternativeNameRequireDomainDNS;

pub const X509CertificateTemplatePrivateKeyFlag = enum(i32) {
    RequireArchival = 1,
    Exportable = 16,
    RequireStrongKeyProtection = 32,
    RequireAlternateSignatureAlgorithm = 64,
    RequireSameKeyRenewal = 128,
    UseLegacyProvider = 256,
    EKTrustOnUse = 512,
    EKValidateCert = 1024,
    EKValidateKey = 2048,
    AttestNone = 0,
    AttestPreferred = 4096,
    AttestRequired = 8192,
    AttestMask = 12288,
    AttestWithoutPolicy = 16384,
    ServerVersionMask = 983040,
    // ServerVersionShift = 16, this enum value conflicts with Exportable
    HelloKspKey = 1048576,
    HelloLogonKey = 2097152,
    ClientVersionMask = 251658240,
    ClientVersionShift = 24,
};
pub const PrivateKeyRequireArchival = X509CertificateTemplatePrivateKeyFlag.RequireArchival;
pub const PrivateKeyExportable = X509CertificateTemplatePrivateKeyFlag.Exportable;
pub const PrivateKeyRequireStrongKeyProtection = X509CertificateTemplatePrivateKeyFlag.RequireStrongKeyProtection;
pub const PrivateKeyRequireAlternateSignatureAlgorithm = X509CertificateTemplatePrivateKeyFlag.RequireAlternateSignatureAlgorithm;
pub const PrivateKeyRequireSameKeyRenewal = X509CertificateTemplatePrivateKeyFlag.RequireSameKeyRenewal;
pub const PrivateKeyUseLegacyProvider = X509CertificateTemplatePrivateKeyFlag.UseLegacyProvider;
pub const PrivateKeyEKTrustOnUse = X509CertificateTemplatePrivateKeyFlag.EKTrustOnUse;
pub const PrivateKeyEKValidateCert = X509CertificateTemplatePrivateKeyFlag.EKValidateCert;
pub const PrivateKeyEKValidateKey = X509CertificateTemplatePrivateKeyFlag.EKValidateKey;
pub const PrivateKeyAttestNone = X509CertificateTemplatePrivateKeyFlag.AttestNone;
pub const PrivateKeyAttestPreferred = X509CertificateTemplatePrivateKeyFlag.AttestPreferred;
pub const PrivateKeyAttestRequired = X509CertificateTemplatePrivateKeyFlag.AttestRequired;
pub const PrivateKeyAttestMask = X509CertificateTemplatePrivateKeyFlag.AttestMask;
pub const PrivateKeyAttestWithoutPolicy = X509CertificateTemplatePrivateKeyFlag.AttestWithoutPolicy;
pub const PrivateKeyServerVersionMask = X509CertificateTemplatePrivateKeyFlag.ServerVersionMask;
pub const PrivateKeyServerVersionShift = X509CertificateTemplatePrivateKeyFlag.Exportable;
pub const PrivateKeyHelloKspKey = X509CertificateTemplatePrivateKeyFlag.HelloKspKey;
pub const PrivateKeyHelloLogonKey = X509CertificateTemplatePrivateKeyFlag.HelloLogonKey;
pub const PrivateKeyClientVersionMask = X509CertificateTemplatePrivateKeyFlag.ClientVersionMask;
pub const PrivateKeyClientVersionShift = X509CertificateTemplatePrivateKeyFlag.ClientVersionShift;

pub const ImportPFXFlags = enum(i32) {
    None = 0,
    MachineContext = 1,
    ForceOverwrite = 2,
    Silent = 4,
    SaveProperties = 8,
    Exportable = 16,
    ExportableEncrypted = 32,
    NoUserProtected = 64,
    UserProtected = 128,
    UserProtectedHigh = 256,
    InstallCertificate = 512,
    InstallChain = 1024,
    InstallChainAndRoot = 2048,
};
pub const ImportNone = ImportPFXFlags.None;
pub const ImportMachineContext = ImportPFXFlags.MachineContext;
pub const ImportForceOverwrite = ImportPFXFlags.ForceOverwrite;
pub const ImportSilent = ImportPFXFlags.Silent;
pub const ImportSaveProperties = ImportPFXFlags.SaveProperties;
pub const ImportExportable = ImportPFXFlags.Exportable;
pub const ImportExportableEncrypted = ImportPFXFlags.ExportableEncrypted;
pub const ImportNoUserProtected = ImportPFXFlags.NoUserProtected;
pub const ImportUserProtected = ImportPFXFlags.UserProtected;
pub const ImportUserProtectedHigh = ImportPFXFlags.UserProtectedHigh;
pub const ImportInstallCertificate = ImportPFXFlags.InstallCertificate;
pub const ImportInstallChain = ImportPFXFlags.InstallChain;
pub const ImportInstallChainAndRoot = ImportPFXFlags.InstallChainAndRoot;

pub const FNIMPORTPFXTOPROVIDER = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hWndParent: ?HWND,
        // TODO: what to do with BytesParamIndex 2?
        pbPFX: ?*const u8,
        cbPFX: u32,
        ImportFlags: ImportPFXFlags,
        pwszPassword: ?[*:0]const u16,
        pwszProviderName: ?[*:0]const u16,
        pwszReaderName: ?[*:0]const u16,
        pwszContainerNamePrefix: ?[*:0]const u16,
        pwszPin: ?[*:0]const u16,
        pwszFriendlyName: ?[*:0]const u16,
        pcCertOut: ?*u32,
        prgpCertOut: ?*?*?*CERT_CONTEXT,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        hWndParent: ?HWND,
        // TODO: what to do with BytesParamIndex 2?
        pbPFX: ?*const u8,
        cbPFX: u32,
        ImportFlags: ImportPFXFlags,
        pwszPassword: ?[*:0]const u16,
        pwszProviderName: ?[*:0]const u16,
        pwszReaderName: ?[*:0]const u16,
        pwszContainerNamePrefix: ?[*:0]const u16,
        pwszPin: ?[*:0]const u16,
        pwszFriendlyName: ?[*:0]const u16,
        pcCertOut: ?*u32,
        prgpCertOut: ?*?*?*CERT_CONTEXT,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const FNIMPORTPFXTOPROVIDERFREEDATA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        cCert: u32,
        rgpCert: ?[*]?*CERT_CONTEXT,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        cCert: u32,
        rgpCert: ?[*]?*CERT_CONTEXT,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertEncodeStringArray_Value = Guid.initString("12a88820-7494-11d0-8816-00a0c903b83c");
pub const IID_ICertEncodeStringArray = &IID_ICertEncodeStringArray_Value;
pub const ICertEncodeStringArray = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStringType: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                pStringType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                pStringType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                Index: i32,
                pstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                Index: i32,
                pstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                Count: i32,
                StringType: CERT_RDN_ATTR_VALUE_TYPE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                Count: i32,
                StringType: CERT_RDN_ATTR_VALUE_TYPE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                Index: i32,
                str: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                Index: i32,
                str: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_Decode(self: *const T, strBinary: ?BSTR) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).Decode(@as(*const ICertEncodeStringArray, @ptrCast(self)), strBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_GetStringType(self: *const T, pStringType: ?*i32) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).GetStringType(@as(*const ICertEncodeStringArray, @ptrCast(self)), pStringType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_GetCount(self: *const T, pCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).GetCount(@as(*const ICertEncodeStringArray, @ptrCast(self)), pCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_GetValue(self: *const T, Index: i32, pstr: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).GetValue(@as(*const ICertEncodeStringArray, @ptrCast(self)), Index, pstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_Reset(self: *const T, Count: i32, StringType: CERT_RDN_ATTR_VALUE_TYPE) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICertEncodeStringArray, @ptrCast(self)), Count, StringType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_SetValue(self: *const T, Index: i32, str: ?BSTR) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).SetValue(@as(*const ICertEncodeStringArray, @ptrCast(self)), Index, str);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray_Encode(self: *const T, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeStringArray.VTable, @ptrCast(self.vtable)).Encode(@as(*const ICertEncodeStringArray, @ptrCast(self)), pstrBinary);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertEncodeStringArray2_Value = Guid.initString("9c680d93-9b7d-4e95-9018-4ffe10ba5ada");
pub const IID_ICertEncodeStringArray2 = &IID_ICertEncodeStringArray2_Value;
pub const ICertEncodeStringArray2 = extern struct {
    pub const VTable = extern struct {
        base: ICertEncodeStringArray.VTable,
        DecodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EncodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeStringArray2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeStringArray2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertEncodeStringArray.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray2_DecodeBlob(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeStringArray2.VTable, @ptrCast(self.vtable)).DecodeBlob(@as(*const ICertEncodeStringArray2, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeStringArray2_EncodeBlob(self: *const T, Encoding: EncodingType, pstrEncodedData: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeStringArray2.VTable, @ptrCast(self.vtable)).EncodeBlob(@as(*const ICertEncodeStringArray2, @ptrCast(self)), Encoding, pstrEncodedData);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertEncodeLongArray_Value = Guid.initString("15e2f230-a0a2-11d0-8821-00a0c903b83c");
pub const IID_ICertEncodeLongArray = &IID_ICertEncodeLongArray_Value;
pub const ICertEncodeLongArray = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray,
                Index: i32,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray,
                Index: i32,
                pValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray,
                Count: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray,
                Count: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray,
                Index: i32,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray,
                Index: i32,
                Value: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray_Decode(self: *const T, strBinary: ?BSTR) HRESULT {
                return @as(*const ICertEncodeLongArray.VTable, @ptrCast(self.vtable)).Decode(@as(*const ICertEncodeLongArray, @ptrCast(self)), strBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray_GetCount(self: *const T, pCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeLongArray.VTable, @ptrCast(self.vtable)).GetCount(@as(*const ICertEncodeLongArray, @ptrCast(self)), pCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray_GetValue(self: *const T, Index: i32, pValue: ?*i32) HRESULT {
                return @as(*const ICertEncodeLongArray.VTable, @ptrCast(self.vtable)).GetValue(@as(*const ICertEncodeLongArray, @ptrCast(self)), Index, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray_Reset(self: *const T, Count: i32) HRESULT {
                return @as(*const ICertEncodeLongArray.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICertEncodeLongArray, @ptrCast(self)), Count);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray_SetValue(self: *const T, Index: i32, Value: i32) HRESULT {
                return @as(*const ICertEncodeLongArray.VTable, @ptrCast(self.vtable)).SetValue(@as(*const ICertEncodeLongArray, @ptrCast(self)), Index, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray_Encode(self: *const T, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeLongArray.VTable, @ptrCast(self.vtable)).Encode(@as(*const ICertEncodeLongArray, @ptrCast(self)), pstrBinary);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertEncodeLongArray2_Value = Guid.initString("4efde84a-bd9b-4fc2-a108-c347d478840f");
pub const IID_ICertEncodeLongArray2 = &IID_ICertEncodeLongArray2_Value;
pub const ICertEncodeLongArray2 = extern struct {
    pub const VTable = extern struct {
        base: ICertEncodeLongArray.VTable,
        DecodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EncodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeLongArray2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeLongArray2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertEncodeLongArray.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray2_DecodeBlob(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeLongArray2.VTable, @ptrCast(self.vtable)).DecodeBlob(@as(*const ICertEncodeLongArray2, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeLongArray2_EncodeBlob(self: *const T, Encoding: EncodingType, pstrEncodedData: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeLongArray2.VTable, @ptrCast(self.vtable)).EncodeBlob(@as(*const ICertEncodeLongArray2, @ptrCast(self)), Encoding, pstrEncodedData);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertEncodeDateArray_Value = Guid.initString("2f9469a0-a470-11d0-8821-00a0c903b83c");
pub const IID_ICertEncodeDateArray = &IID_ICertEncodeDateArray_Value;
pub const ICertEncodeDateArray = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray,
                pCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray,
                Index: i32,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray,
                Index: i32,
                pValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray,
                Count: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray,
                Count: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray,
                Index: i32,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray,
                Index: i32,
                Value: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray_Decode(self: *const T, strBinary: ?BSTR) HRESULT {
                return @as(*const ICertEncodeDateArray.VTable, @ptrCast(self.vtable)).Decode(@as(*const ICertEncodeDateArray, @ptrCast(self)), strBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray_GetCount(self: *const T, pCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeDateArray.VTable, @ptrCast(self.vtable)).GetCount(@as(*const ICertEncodeDateArray, @ptrCast(self)), pCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray_GetValue(self: *const T, Index: i32, pValue: ?*f64) HRESULT {
                return @as(*const ICertEncodeDateArray.VTable, @ptrCast(self.vtable)).GetValue(@as(*const ICertEncodeDateArray, @ptrCast(self)), Index, pValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray_Reset(self: *const T, Count: i32) HRESULT {
                return @as(*const ICertEncodeDateArray.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICertEncodeDateArray, @ptrCast(self)), Count);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray_SetValue(self: *const T, Index: i32, Value: f64) HRESULT {
                return @as(*const ICertEncodeDateArray.VTable, @ptrCast(self.vtable)).SetValue(@as(*const ICertEncodeDateArray, @ptrCast(self)), Index, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray_Encode(self: *const T, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeDateArray.VTable, @ptrCast(self.vtable)).Encode(@as(*const ICertEncodeDateArray, @ptrCast(self)), pstrBinary);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertEncodeDateArray2_Value = Guid.initString("99a4edb5-2b8e-448d-bf95-bba8d7789dc8");
pub const IID_ICertEncodeDateArray2 = &IID_ICertEncodeDateArray2_Value;
pub const ICertEncodeDateArray2 = extern struct {
    pub const VTable = extern struct {
        base: ICertEncodeDateArray.VTable,
        DecodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EncodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeDateArray2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeDateArray2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertEncodeDateArray.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray2_DecodeBlob(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeDateArray2.VTable, @ptrCast(self.vtable)).DecodeBlob(@as(*const ICertEncodeDateArray2, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeDateArray2_EncodeBlob(self: *const T, Encoding: EncodingType, pstrEncodedData: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeDateArray2.VTable, @ptrCast(self.vtable)).EncodeBlob(@as(*const ICertEncodeDateArray2, @ptrCast(self)), Encoding, pstrEncodedData);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertEncodeCRLDistInfo_Value = Guid.initString("01958640-bbff-11d0-8825-00a0c903b83c");
pub const IID_ICertEncodeCRLDistInfo = &IID_ICertEncodeCRLDistInfo_Value;
pub const ICertEncodeCRLDistInfo = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDistPointCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                pDistPointCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                pDistPointCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNameCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                pNameCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                pNameCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNameChoice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameIndex: i32,
                pNameChoice: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameIndex: i32,
                pNameChoice: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameIndex: i32,
                pstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameIndex: i32,
                pstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetNameCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetNameEntry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameIndex: i32,
                NameChoice: CERT_ALT_NAME,
                strName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                DistPointIndex: i32,
                NameIndex: i32,
                NameChoice: CERT_ALT_NAME,
                strName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_Decode(self: *const T, strBinary: ?BSTR) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).Decode(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), strBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_GetDistPointCount(self: *const T, pDistPointCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).GetDistPointCount(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), pDistPointCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_GetNameCount(self: *const T, DistPointIndex: i32, pNameCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).GetNameCount(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), DistPointIndex, pNameCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_GetNameChoice(self: *const T, DistPointIndex: i32, NameIndex: i32, pNameChoice: ?*i32) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).GetNameChoice(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), DistPointIndex, NameIndex, pNameChoice);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_GetName(self: *const T, DistPointIndex: i32, NameIndex: i32, pstrName: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).GetName(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), DistPointIndex, NameIndex, pstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_Reset(self: *const T, DistPointCount: i32) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), DistPointCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_SetNameCount(self: *const T, DistPointIndex: i32, NameCount: i32) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).SetNameCount(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), DistPointIndex, NameCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_SetNameEntry(self: *const T, DistPointIndex: i32, NameIndex: i32, NameChoice: CERT_ALT_NAME, strName: ?BSTR) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).SetNameEntry(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), DistPointIndex, NameIndex, NameChoice, strName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo_Encode(self: *const T, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo.VTable, @ptrCast(self.vtable)).Encode(@as(*const ICertEncodeCRLDistInfo, @ptrCast(self)), pstrBinary);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertEncodeCRLDistInfo2_Value = Guid.initString("b4275d4b-3e30-446f-ad36-09d03120b078");
pub const IID_ICertEncodeCRLDistInfo2 = &IID_ICertEncodeCRLDistInfo2_Value;
pub const ICertEncodeCRLDistInfo2 = extern struct {
    pub const VTable = extern struct {
        base: ICertEncodeCRLDistInfo.VTable,
        DecodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EncodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeCRLDistInfo2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeCRLDistInfo2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertEncodeCRLDistInfo.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo2_DecodeBlob(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo2.VTable, @ptrCast(self.vtable)).DecodeBlob(@as(*const ICertEncodeCRLDistInfo2, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeCRLDistInfo2_EncodeBlob(self: *const T, Encoding: EncodingType, pstrEncodedData: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeCRLDistInfo2.VTable, @ptrCast(self.vtable)).EncodeBlob(@as(*const ICertEncodeCRLDistInfo2, @ptrCast(self)), Encoding, pstrEncodedData);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertEncodeAltName_Value = Guid.initString("1c9a8c70-1271-11d1-9bd4-00c04fb683fa");
pub const IID_ICertEncodeAltName = &IID_ICertEncodeAltName_Value;
pub const ICertEncodeAltName = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNameCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                pNameCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                pNameCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNameChoice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                NameIndex: i32,
                pNameChoice: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                NameIndex: i32,
                pNameChoice: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                NameIndex: i32,
                pstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                NameIndex: i32,
                pstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                NameCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                NameCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetNameEntry: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                NameIndex: i32,
                NameChoice: CERT_ALT_NAME,
                strName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                NameIndex: i32,
                NameChoice: CERT_ALT_NAME,
                strName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_Decode(self: *const T, strBinary: ?BSTR) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).Decode(@as(*const ICertEncodeAltName, @ptrCast(self)), strBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_GetNameCount(self: *const T, pNameCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).GetNameCount(@as(*const ICertEncodeAltName, @ptrCast(self)), pNameCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_GetNameChoice(self: *const T, NameIndex: i32, pNameChoice: ?*i32) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).GetNameChoice(@as(*const ICertEncodeAltName, @ptrCast(self)), NameIndex, pNameChoice);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_GetName(self: *const T, NameIndex: i32, pstrName: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).GetName(@as(*const ICertEncodeAltName, @ptrCast(self)), NameIndex, pstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_Reset(self: *const T, NameCount: i32) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICertEncodeAltName, @ptrCast(self)), NameCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_SetNameEntry(self: *const T, NameIndex: i32, NameChoice: CERT_ALT_NAME, strName: ?BSTR) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).SetNameEntry(@as(*const ICertEncodeAltName, @ptrCast(self)), NameIndex, NameChoice, strName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName_Encode(self: *const T, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeAltName.VTable, @ptrCast(self.vtable)).Encode(@as(*const ICertEncodeAltName, @ptrCast(self)), pstrBinary);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertEncodeAltName2_Value = Guid.initString("f67fe177-5ef1-4535-b4ce-29df15e2e0c3");
pub const IID_ICertEncodeAltName2 = &IID_ICertEncodeAltName2_Value;
pub const ICertEncodeAltName2 = extern struct {
    pub const VTable = extern struct {
        base: ICertEncodeAltName.VTable,
        DecodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EncodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName2,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNameBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName2,
                NameIndex: i32,
                Encoding: EncodingType,
                pstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName2,
                NameIndex: i32,
                Encoding: EncodingType,
                pstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetNameEntryBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeAltName2,
                NameIndex: i32,
                NameChoice: i32,
                strName: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeAltName2,
                NameIndex: i32,
                NameChoice: i32,
                strName: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertEncodeAltName.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName2_DecodeBlob(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeAltName2.VTable, @ptrCast(self.vtable)).DecodeBlob(@as(*const ICertEncodeAltName2, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName2_EncodeBlob(self: *const T, Encoding: EncodingType, pstrEncodedData: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeAltName2.VTable, @ptrCast(self.vtable)).EncodeBlob(@as(*const ICertEncodeAltName2, @ptrCast(self)), Encoding, pstrEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName2_GetNameBlob(self: *const T, NameIndex: i32, Encoding: EncodingType, pstrName: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeAltName2.VTable, @ptrCast(self.vtable)).GetNameBlob(@as(*const ICertEncodeAltName2, @ptrCast(self)), NameIndex, Encoding, pstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeAltName2_SetNameEntryBlob(self: *const T, NameIndex: i32, NameChoice: i32, strName: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeAltName2.VTable, @ptrCast(self.vtable)).SetNameEntryBlob(@as(*const ICertEncodeAltName2, @ptrCast(self)), NameIndex, NameChoice, strName, Encoding);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertEncodeBitString_Value = Guid.initString("6db525be-1278-11d1-9bd4-00c04fb683fa");
pub const IID_ICertEncodeBitString = &IID_ICertEncodeBitString_Value;
pub const ICertEncodeBitString = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Decode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString,
                strBinary: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetBitCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString,
                pBitCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString,
                pBitCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetBitString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString,
                pstrBitString: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString,
                pstrBitString: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Encode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString,
                BitCount: i32,
                strBitString: ?BSTR,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString,
                BitCount: i32,
                strBitString: ?BSTR,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString_Decode(self: *const T, strBinary: ?BSTR) HRESULT {
                return @as(*const ICertEncodeBitString.VTable, @ptrCast(self.vtable)).Decode(@as(*const ICertEncodeBitString, @ptrCast(self)), strBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString_GetBitCount(self: *const T, pBitCount: ?*i32) HRESULT {
                return @as(*const ICertEncodeBitString.VTable, @ptrCast(self.vtable)).GetBitCount(@as(*const ICertEncodeBitString, @ptrCast(self)), pBitCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString_GetBitString(self: *const T, pstrBitString: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeBitString.VTable, @ptrCast(self.vtable)).GetBitString(@as(*const ICertEncodeBitString, @ptrCast(self)), pstrBitString);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString_Encode(self: *const T, BitCount: i32, strBitString: ?BSTR, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeBitString.VTable, @ptrCast(self.vtable)).Encode(@as(*const ICertEncodeBitString, @ptrCast(self)), BitCount, strBitString, pstrBinary);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertEncodeBitString2_Value = Guid.initString("e070d6e7-23ef-4dd2-8242-ebd9c928cb30");
pub const IID_ICertEncodeBitString2 = &IID_ICertEncodeBitString2_Value;
pub const ICertEncodeBitString2 = extern struct {
    pub const VTable = extern struct {
        base: ICertEncodeBitString.VTable,
        DecodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString2,
                strEncodedData: ?BSTR,
                Encoding: EncodingType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EncodeBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString2,
                BitCount: i32,
                strBitString: ?BSTR,
                EncodingIn: EncodingType,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString2,
                BitCount: i32,
                strBitString: ?BSTR,
                EncodingIn: EncodingType,
                Encoding: EncodingType,
                pstrEncodedData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetBitStringBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertEncodeBitString2,
                Encoding: EncodingType,
                pstrBitString: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertEncodeBitString2,
                Encoding: EncodingType,
                pstrBitString: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertEncodeBitString.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString2_DecodeBlob(self: *const T, strEncodedData: ?BSTR, Encoding: EncodingType) HRESULT {
                return @as(*const ICertEncodeBitString2.VTable, @ptrCast(self.vtable)).DecodeBlob(@as(*const ICertEncodeBitString2, @ptrCast(self)), strEncodedData, Encoding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString2_EncodeBlob(self: *const T, BitCount: i32, strBitString: ?BSTR, EncodingIn: EncodingType, Encoding: EncodingType, pstrEncodedData: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeBitString2.VTable, @ptrCast(self.vtable)).EncodeBlob(@as(*const ICertEncodeBitString2, @ptrCast(self)), BitCount, strBitString, EncodingIn, Encoding, pstrEncodedData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertEncodeBitString2_GetBitStringBlob(self: *const T, Encoding: EncodingType, pstrBitString: ?*?BSTR) HRESULT {
                return @as(*const ICertEncodeBitString2.VTable, @ptrCast(self.vtable)).GetBitStringBlob(@as(*const ICertEncodeBitString2, @ptrCast(self)), Encoding, pstrBitString);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertExit_Value = Guid.initString("e19ae1a0-7364-11d0-8816-00a0c903b83c");
pub const IID_ICertExit = &IID_ICertExit_Value;
pub const ICertExit = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertExit,
                strConfig: ?BSTR,
                pEventMask: ?*CERT_EXIT_EVENT_MASK,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertExit,
                strConfig: ?BSTR,
                pEventMask: ?*CERT_EXIT_EVENT_MASK,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Notify: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertExit,
                ExitEvent: i32,
                Context: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertExit,
                ExitEvent: i32,
                Context: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDescription: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertExit,
                pstrDescription: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertExit,
                pstrDescription: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertExit_Initialize(self: *const T, strConfig: ?BSTR, pEventMask: ?*CERT_EXIT_EVENT_MASK) HRESULT {
                return @as(*const ICertExit.VTable, @ptrCast(self.vtable)).Initialize(@as(*const ICertExit, @ptrCast(self)), strConfig, pEventMask);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertExit_Notify(self: *const T, ExitEvent: i32, Context: i32) HRESULT {
                return @as(*const ICertExit.VTable, @ptrCast(self.vtable)).Notify(@as(*const ICertExit, @ptrCast(self)), ExitEvent, Context);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertExit_GetDescription(self: *const T, pstrDescription: ?*?BSTR) HRESULT {
                return @as(*const ICertExit.VTable, @ptrCast(self.vtable)).GetDescription(@as(*const ICertExit, @ptrCast(self)), pstrDescription);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windowsServer2003'
const IID_ICertExit2_Value = Guid.initString("0abf484b-d049-464d-a7ed-552e7529b0ff");
pub const IID_ICertExit2 = &IID_ICertExit2_Value;
pub const ICertExit2 = extern struct {
    pub const VTable = extern struct {
        base: ICertExit.VTable,
        GetManageModule: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertExit2,
                ppManageModule: ?*?*ICertManageModule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertExit2,
                ppManageModule: ?*?*ICertManageModule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertExit.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertExit2_GetManageModule(self: *const T, ppManageModule: ?*?*ICertManageModule) HRESULT {
                return @as(*const ICertExit2.VTable, @ptrCast(self.vtable)).GetManageModule(@as(*const ICertExit2, @ptrCast(self)), ppManageModule);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const ENUM_CATYPES = enum(i32) {
    ENTERPRISE_ROOTCA = 0,
    ENTERPRISE_SUBCA = 1,
    STANDALONE_ROOTCA = 3,
    STANDALONE_SUBCA = 4,
    UNKNOWN_CA = 5,
};
pub const ENUM_ENTERPRISE_ROOTCA = ENUM_CATYPES.ENTERPRISE_ROOTCA;
pub const ENUM_ENTERPRISE_SUBCA = ENUM_CATYPES.ENTERPRISE_SUBCA;
pub const ENUM_STANDALONE_ROOTCA = ENUM_CATYPES.STANDALONE_ROOTCA;
pub const ENUM_STANDALONE_SUBCA = ENUM_CATYPES.STANDALONE_SUBCA;
pub const ENUM_UNKNOWN_CA = ENUM_CATYPES.UNKNOWN_CA;

pub const CAINFO = extern struct {
    cbSize: u32,
    CAType: ENUM_CATYPES,
    cCASignatureCerts: u32,
    cCAExchangeCerts: u32,
    cExitModules: u32,
    lPropIdMax: i32,
    lRoleSeparationEnabled: i32,
    cKRACertUsedCount: u32,
    cKRACertCount: u32,
    fAdvancedServer: u32,
};

const CLSID_CEnroll2_Value = Guid.initString("127698e4-e730-4e5c-a2b1-21490a70c8a1");
pub const CLSID_CEnroll2 = &CLSID_CEnroll2_Value;

const CLSID_CEnroll_Value = Guid.initString("43f8f289-7a20-11d0-8f06-00c04fc295e1");
pub const CLSID_CEnroll = &CLSID_CEnroll_Value;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_ICEnroll_Value = Guid.initString("43f8f288-7a20-11d0-8f06-00c04fc295e1");
pub const IID_ICEnroll = &IID_ICEnroll_Value;
pub const ICEnroll = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        createFilePKCS10: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                DNName: ?BSTR,
                Usage: ?BSTR,
                wszPKCS10FileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                DNName: ?BSTR,
                Usage: ?BSTR,
                wszPKCS10FileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptFilePKCS7: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                wszPKCS7FileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                wszPKCS7FileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createPKCS10: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                DNName: ?BSTR,
                Usage: ?BSTR,
                pPKCS10: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                DNName: ?BSTR,
                Usage: ?BSTR,
                pPKCS10: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptPKCS7: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                PKCS7: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                PKCS7: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getCertFromPKCS7: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                wszPKCS7: ?BSTR,
                pbstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                wszPKCS7: ?BSTR,
                pbstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        enumProviders: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                dwIndex: i32,
                dwFlags: i32,
                pbstrProvName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                dwIndex: i32,
                dwFlags: i32,
                pbstrProvName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        enumContainers: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                dwIndex: i32,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                dwIndex: i32,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        freeRequestInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll,
                PKCS7OrPKCS10: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll,
                PKCS7OrPKCS10: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MyStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MyStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MyStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MyStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MyStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MyStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequestStoreName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrType: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequestStoreType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequestStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ContainerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrContainer: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrContainer: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ContainerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrContainer: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrContainer: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstrProvider: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstrProvider: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstrProvider: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstrProvider: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwType: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwType: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdw: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdw: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dw: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dw: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseExistingKeySet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                fUseExistingKeys: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                fUseExistingKeys: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseExistingKeySet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                fUseExistingKeys: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                fUseExistingKeys: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GenKeyFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GenKeyFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeleteRequestCert: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                fDelete: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                fDelete: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DeleteRequestCert: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                fDelete: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                fDelete: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_WriteCertToCSP: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_WriteCertToCSP: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SPCFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SPCFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstr: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstr: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PVKFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PVKFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstr: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstr: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgorithm: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll,
                bstr: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll,
                bstr: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_createFilePKCS10(self: *const T, DNName: ?BSTR, Usage: ?BSTR, wszPKCS10FileName: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).createFilePKCS10(@as(*const ICEnroll, @ptrCast(self)), DNName, Usage, wszPKCS10FileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_acceptFilePKCS7(self: *const T, wszPKCS7FileName: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).acceptFilePKCS7(@as(*const ICEnroll, @ptrCast(self)), wszPKCS7FileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_createPKCS10(self: *const T, DNName: ?BSTR, Usage: ?BSTR, pPKCS10: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).createPKCS10(@as(*const ICEnroll, @ptrCast(self)), DNName, Usage, pPKCS10);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_acceptPKCS7(self: *const T, PKCS7: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).acceptPKCS7(@as(*const ICEnroll, @ptrCast(self)), PKCS7);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_getCertFromPKCS7(self: *const T, wszPKCS7: ?BSTR, pbstrCert: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).getCertFromPKCS7(@as(*const ICEnroll, @ptrCast(self)), wszPKCS7, pbstrCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_enumProviders(self: *const T, dwIndex: i32, dwFlags: i32, pbstrProvName: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).enumProviders(@as(*const ICEnroll, @ptrCast(self)), dwIndex, dwFlags, pbstrProvName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_enumContainers(self: *const T, dwIndex: i32, pbstr: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).enumContainers(@as(*const ICEnroll, @ptrCast(self)), dwIndex, pbstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_freeRequestInfo(self: *const T, PKCS7OrPKCS10: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).freeRequestInfo(@as(*const ICEnroll, @ptrCast(self)), PKCS7OrPKCS10);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_MyStoreName(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_MyStoreName(@as(*const ICEnroll, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_MyStoreName(self: *const T, bstrName: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_MyStoreName(@as(*const ICEnroll, @ptrCast(self)), bstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_MyStoreType(self: *const T, pbstrType: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_MyStoreType(@as(*const ICEnroll, @ptrCast(self)), pbstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_MyStoreType(self: *const T, bstrType: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_MyStoreType(@as(*const ICEnroll, @ptrCast(self)), bstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_MyStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_MyStoreFlags(@as(*const ICEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_MyStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_MyStoreFlags(@as(*const ICEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_CAStoreName(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_CAStoreName(@as(*const ICEnroll, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_CAStoreName(self: *const T, bstrName: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_CAStoreName(@as(*const ICEnroll, @ptrCast(self)), bstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_CAStoreType(self: *const T, pbstrType: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_CAStoreType(@as(*const ICEnroll, @ptrCast(self)), pbstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_CAStoreType(self: *const T, bstrType: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_CAStoreType(@as(*const ICEnroll, @ptrCast(self)), bstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_CAStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_CAStoreFlags(@as(*const ICEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_CAStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_CAStoreFlags(@as(*const ICEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_RootStoreName(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_RootStoreName(@as(*const ICEnroll, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_RootStoreName(self: *const T, bstrName: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_RootStoreName(@as(*const ICEnroll, @ptrCast(self)), bstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_RootStoreType(self: *const T, pbstrType: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_RootStoreType(@as(*const ICEnroll, @ptrCast(self)), pbstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_RootStoreType(self: *const T, bstrType: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_RootStoreType(@as(*const ICEnroll, @ptrCast(self)), bstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_RootStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_RootStoreFlags(@as(*const ICEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_RootStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_RootStoreFlags(@as(*const ICEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_RequestStoreName(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_RequestStoreName(@as(*const ICEnroll, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_RequestStoreName(self: *const T, bstrName: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_RequestStoreName(@as(*const ICEnroll, @ptrCast(self)), bstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_RequestStoreType(self: *const T, pbstrType: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_RequestStoreType(@as(*const ICEnroll, @ptrCast(self)), pbstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_RequestStoreType(self: *const T, bstrType: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_RequestStoreType(@as(*const ICEnroll, @ptrCast(self)), bstrType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_RequestStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_RequestStoreFlags(@as(*const ICEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_RequestStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_RequestStoreFlags(@as(*const ICEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_ContainerName(self: *const T, pbstrContainer: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_ContainerName(@as(*const ICEnroll, @ptrCast(self)), pbstrContainer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_ContainerName(self: *const T, bstrContainer: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_ContainerName(@as(*const ICEnroll, @ptrCast(self)), bstrContainer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_ProviderName(self: *const T, pbstrProvider: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_ProviderName(@as(*const ICEnroll, @ptrCast(self)), pbstrProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_ProviderName(self: *const T, bstrProvider: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_ProviderName(@as(*const ICEnroll, @ptrCast(self)), bstrProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_ProviderType(self: *const T, pdwType: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_ProviderType(@as(*const ICEnroll, @ptrCast(self)), pdwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_ProviderType(self: *const T, dwType: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_ProviderType(@as(*const ICEnroll, @ptrCast(self)), dwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_KeySpec(self: *const T, pdw: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_KeySpec(@as(*const ICEnroll, @ptrCast(self)), pdw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_KeySpec(self: *const T, dw: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_KeySpec(@as(*const ICEnroll, @ptrCast(self)), dw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_ProviderFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_ProviderFlags(@as(*const ICEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_ProviderFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_ProviderFlags(@as(*const ICEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_UseExistingKeySet(self: *const T, fUseExistingKeys: ?*BOOL) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_UseExistingKeySet(@as(*const ICEnroll, @ptrCast(self)), fUseExistingKeys);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_UseExistingKeySet(self: *const T, fUseExistingKeys: BOOL) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_UseExistingKeySet(@as(*const ICEnroll, @ptrCast(self)), fUseExistingKeys);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_GenKeyFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_GenKeyFlags(@as(*const ICEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_GenKeyFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_GenKeyFlags(@as(*const ICEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_DeleteRequestCert(self: *const T, fDelete: ?*BOOL) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_DeleteRequestCert(@as(*const ICEnroll, @ptrCast(self)), fDelete);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_DeleteRequestCert(self: *const T, fDelete: BOOL) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_DeleteRequestCert(@as(*const ICEnroll, @ptrCast(self)), fDelete);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_WriteCertToCSP(self: *const T, fBool: ?*BOOL) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_WriteCertToCSP(@as(*const ICEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_WriteCertToCSP(self: *const T, fBool: BOOL) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_WriteCertToCSP(@as(*const ICEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_SPCFileName(self: *const T, pbstr: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_SPCFileName(@as(*const ICEnroll, @ptrCast(self)), pbstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_SPCFileName(self: *const T, bstr: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_SPCFileName(@as(*const ICEnroll, @ptrCast(self)), bstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_PVKFileName(self: *const T, pbstr: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_PVKFileName(@as(*const ICEnroll, @ptrCast(self)), pbstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_PVKFileName(self: *const T, bstr: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_PVKFileName(@as(*const ICEnroll, @ptrCast(self)), bstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_get_HashAlgorithm(self: *const T, pbstr: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).get_HashAlgorithm(@as(*const ICEnroll, @ptrCast(self)), pbstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll_put_HashAlgorithm(self: *const T, bstr: ?BSTR) HRESULT {
                return @as(*const ICEnroll.VTable, @ptrCast(self.vtable)).put_HashAlgorithm(@as(*const ICEnroll, @ptrCast(self)), bstr);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_ICEnroll2_Value = Guid.initString("704ca730-c90b-11d1-9bec-00c04fc295e1");
pub const IID_ICEnroll2 = &IID_ICEnroll2_Value;
pub const ICEnroll2 = extern struct {
    pub const VTable = extern struct {
        base: ICEnroll.VTable,
        addCertTypeToRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll2,
                CertType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll2,
                CertType: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addNameValuePairToSignature: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll2,
                Name: ?BSTR,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll2,
                Name: ?BSTR,
                Value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_WriteCertToUserDS: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll2,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll2,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_WriteCertToUserDS: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll2,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll2,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableT61DNEncoding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll2,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll2,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableT61DNEncoding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll2,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll2,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICEnroll.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll2_addCertTypeToRequest(self: *const T, CertType: ?BSTR) HRESULT {
                return @as(*const ICEnroll2.VTable, @ptrCast(self.vtable)).addCertTypeToRequest(@as(*const ICEnroll2, @ptrCast(self)), CertType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll2_addNameValuePairToSignature(self: *const T, Name: ?BSTR, Value: ?BSTR) HRESULT {
                return @as(*const ICEnroll2.VTable, @ptrCast(self.vtable)).addNameValuePairToSignature(@as(*const ICEnroll2, @ptrCast(self)), Name, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll2_get_WriteCertToUserDS(self: *const T, fBool: ?*BOOL) HRESULT {
                return @as(*const ICEnroll2.VTable, @ptrCast(self.vtable)).get_WriteCertToUserDS(@as(*const ICEnroll2, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll2_put_WriteCertToUserDS(self: *const T, fBool: BOOL) HRESULT {
                return @as(*const ICEnroll2.VTable, @ptrCast(self.vtable)).put_WriteCertToUserDS(@as(*const ICEnroll2, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll2_get_EnableT61DNEncoding(self: *const T, fBool: ?*BOOL) HRESULT {
                return @as(*const ICEnroll2.VTable, @ptrCast(self.vtable)).get_EnableT61DNEncoding(@as(*const ICEnroll2, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll2_put_EnableT61DNEncoding(self: *const T, fBool: BOOL) HRESULT {
                return @as(*const ICEnroll2.VTable, @ptrCast(self.vtable)).put_EnableT61DNEncoding(@as(*const ICEnroll2, @ptrCast(self)), fBool);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_ICEnroll3_Value = Guid.initString("c28c2d95-b7de-11d2-a421-00c04f79fe8e");
pub const IID_ICEnroll3 = &IID_ICEnroll3_Value;
pub const ICEnroll3 = extern struct {
    pub const VTable = extern struct {
        base: ICEnroll2.VTable,
        InstallPKCS7: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll3,
                PKCS7: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll3,
                PKCS7: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll3,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll3,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSupportedKeySpec: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll3,
                pdwKeySpec: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll3,
                pdwKeySpec: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetKeyLen: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll3,
                fMin: BOOL,
                fExchange: BOOL,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll3,
                fMin: BOOL,
                fExchange: BOOL,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumAlgs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll3,
                dwIndex: i32,
                algClass: i32,
                pdwAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll3,
                dwIndex: i32,
                algClass: i32,
                pdwAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAlgName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll3,
                algID: i32,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll3,
                algID: i32,
                pbstr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReuseHardwareKeyIfUnableToGenNew: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                fReuseHardwareKeyIfUnableToGenNew: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                fReuseHardwareKeyIfUnableToGenNew: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReuseHardwareKeyIfUnableToGenNew: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                fReuseHardwareKeyIfUnableToGenNew: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                fReuseHardwareKeyIfUnableToGenNew: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                hashAlgID: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                hashAlgID: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                hashAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                hashAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LimitExchangeKeyToEncipherment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                fLimitExchangeKeyToEncipherment: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                fLimitExchangeKeyToEncipherment: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LimitExchangeKeyToEncipherment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                fLimitExchangeKeyToEncipherment: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                fLimitExchangeKeyToEncipherment: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableSMIMECapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                fEnableSMIMECapabilities: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                fEnableSMIMECapabilities: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableSMIMECapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll3,
                fEnableSMIMECapabilities: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll3,
                fEnableSMIMECapabilities: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICEnroll2.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_InstallPKCS7(self: *const T, PKCS7: ?BSTR) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).InstallPKCS7(@as(*const ICEnroll3, @ptrCast(self)), PKCS7);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_Reset(self: *const T) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).Reset(@as(*const ICEnroll3, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_GetSupportedKeySpec(self: *const T, pdwKeySpec: ?*i32) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).GetSupportedKeySpec(@as(*const ICEnroll3, @ptrCast(self)), pdwKeySpec);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_GetKeyLen(self: *const T, fMin: BOOL, fExchange: BOOL, pdwKeySize: ?*i32) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).GetKeyLen(@as(*const ICEnroll3, @ptrCast(self)), fMin, fExchange, pdwKeySize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_EnumAlgs(self: *const T, dwIndex: i32, algClass: i32, pdwAlgID: ?*i32) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).EnumAlgs(@as(*const ICEnroll3, @ptrCast(self)), dwIndex, algClass, pdwAlgID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_GetAlgName(self: *const T, algID: i32, pbstr: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).GetAlgName(@as(*const ICEnroll3, @ptrCast(self)), algID, pbstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_put_ReuseHardwareKeyIfUnableToGenNew(self: *const T, fReuseHardwareKeyIfUnableToGenNew: BOOL) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).put_ReuseHardwareKeyIfUnableToGenNew(@as(*const ICEnroll3, @ptrCast(self)), fReuseHardwareKeyIfUnableToGenNew);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_get_ReuseHardwareKeyIfUnableToGenNew(self: *const T, fReuseHardwareKeyIfUnableToGenNew: ?*BOOL) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).get_ReuseHardwareKeyIfUnableToGenNew(@as(*const ICEnroll3, @ptrCast(self)), fReuseHardwareKeyIfUnableToGenNew);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_put_HashAlgID(self: *const T, hashAlgID: i32) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).put_HashAlgID(@as(*const ICEnroll3, @ptrCast(self)), hashAlgID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_get_HashAlgID(self: *const T, hashAlgID: ?*i32) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).get_HashAlgID(@as(*const ICEnroll3, @ptrCast(self)), hashAlgID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_put_LimitExchangeKeyToEncipherment(self: *const T, fLimitExchangeKeyToEncipherment: BOOL) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).put_LimitExchangeKeyToEncipherment(@as(*const ICEnroll3, @ptrCast(self)), fLimitExchangeKeyToEncipherment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_get_LimitExchangeKeyToEncipherment(self: *const T, fLimitExchangeKeyToEncipherment: ?*BOOL) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).get_LimitExchangeKeyToEncipherment(@as(*const ICEnroll3, @ptrCast(self)), fLimitExchangeKeyToEncipherment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_put_EnableSMIMECapabilities(self: *const T, fEnableSMIMECapabilities: BOOL) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).put_EnableSMIMECapabilities(@as(*const ICEnroll3, @ptrCast(self)), fEnableSMIMECapabilities);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll3_get_EnableSMIMECapabilities(self: *const T, fEnableSMIMECapabilities: ?*BOOL) HRESULT {
                return @as(*const ICEnroll3.VTable, @ptrCast(self.vtable)).get_EnableSMIMECapabilities(@as(*const ICEnroll3, @ptrCast(self)), fEnableSMIMECapabilities);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_ICEnroll4_Value = Guid.initString("c1f1188a-2eb5-4a80-841b-7e729a356d90");
pub const IID_ICEnroll4 = &IID_ICEnroll4_Value;
pub const ICEnroll4 = extern struct {
    pub const VTable = extern struct {
        base: ICEnroll3.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PrivateKeyArchiveCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                bstrCert: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                bstrCert: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PrivateKeyArchiveCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                pbstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                pbstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ThumbPrint: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                bstrThumbPrint: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                bstrThumbPrint: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ThumbPrint: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                pbstrThumbPrint: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                pbstrThumbPrint: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        binaryToString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: i32,
                strBinary: ?BSTR,
                pstrEncoded: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: i32,
                strBinary: ?BSTR,
                pstrEncoded: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        stringToBinary: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: i32,
                strEncoded: ?BSTR,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: i32,
                strEncoded: ?BSTR,
                pstrBinary: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addExtensionToRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: i32,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: i32,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addAttributeToRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: i32,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: i32,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addNameValuePairToRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: i32,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: i32,
                strName: ?BSTR,
                strValue: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        resetExtensions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        resetAttributes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                strDNName: ?BSTR,
                Usage: ?BSTR,
                pstrRequest: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                strDNName: ?BSTR,
                Usage: ?BSTR,
                pstrRequest: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createFileRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                strDNName: ?BSTR,
                strUsage: ?BSTR,
                strRequestFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                strDNName: ?BSTR,
                strUsage: ?BSTR,
                strRequestFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptResponse: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strResponse: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strResponse: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptFileResponse: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strResponseFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strResponseFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getCertFromResponse: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strResponse: ?BSTR,
                pstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strResponse: ?BSTR,
                pstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getCertFromFileResponse: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strResponseFileName: ?BSTR,
                pstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strResponseFileName: ?BSTR,
                pstrCert: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createPFX: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strPassword: ?BSTR,
                pstrPFX: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strPassword: ?BSTR,
                pstrPFX: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createFilePFX: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strPassword: ?BSTR,
                strPFXFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strPassword: ?BSTR,
                strPFXFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        setPendingRequestInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                lRequestID: i32,
                strCADNS: ?BSTR,
                strCAName: ?BSTR,
                strFriendlyName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                lRequestID: i32,
                strCADNS: ?BSTR,
                strCAName: ?BSTR,
                strFriendlyName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        enumPendingRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                lIndex: i32,
                lDesiredProperty: PENDING_REQUEST_DESIRED_PROPERTY,
                pvarProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                lIndex: i32,
                lDesiredProperty: PENDING_REQUEST_DESIRED_PROPERTY,
                pvarProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        removePendingRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strThumbprint: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strThumbprint: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetKeyLenEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                lSizeSpec: XEKL_KEYSIZE,
                lKeySpec: XEKL_KEYSPEC,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                lSizeSpec: XEKL_KEYSIZE,
                lKeySpec: XEKL_KEYSPEC,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InstallPKCS7Ex: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                PKCS7: ?BSTR,
                plCertInstalled: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                PKCS7: ?BSTR,
                plCertInstalled: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addCertTypeToRequestEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                lType: ADDED_CERT_TYPE,
                bstrOIDOrName: ?BSTR,
                lMajorVersion: i32,
                fMinorVersion: BOOL,
                lMinorVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                lType: ADDED_CERT_TYPE,
                bstrOIDOrName: ?BSTR,
                lMajorVersion: i32,
                fMinorVersion: BOOL,
                lMinorVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getProviderType: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                strProvName: ?BSTR,
                plProvType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                strProvName: ?BSTR,
                plProvType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SignerCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                bstrCert: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                bstrCert: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                lClientId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                lClientId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                plClientId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                plClientId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addBlobPropertyToCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
                lPropertyId: i32,
                lReserved: i32,
                bstrProperty: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
                lPropertyId: i32,
                lReserved: i32,
                bstrProperty: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        resetBlobProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_IncludeSubjectKeyID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                fInclude: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                fInclude: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncludeSubjectKeyID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICEnroll4,
                pfInclude: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICEnroll4,
                pfInclude: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICEnroll3.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_put_PrivateKeyArchiveCertificate(self: *const T, bstrCert: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).put_PrivateKeyArchiveCertificate(@as(*const ICEnroll4, @ptrCast(self)), bstrCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_get_PrivateKeyArchiveCertificate(self: *const T, pbstrCert: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).get_PrivateKeyArchiveCertificate(@as(*const ICEnroll4, @ptrCast(self)), pbstrCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_put_ThumbPrint(self: *const T, bstrThumbPrint: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).put_ThumbPrint(@as(*const ICEnroll4, @ptrCast(self)), bstrThumbPrint);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_get_ThumbPrint(self: *const T, pbstrThumbPrint: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).get_ThumbPrint(@as(*const ICEnroll4, @ptrCast(self)), pbstrThumbPrint);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_binaryToString(self: *const T, Flags: i32, strBinary: ?BSTR, pstrEncoded: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).binaryToString(@as(*const ICEnroll4, @ptrCast(self)), Flags, strBinary, pstrEncoded);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_stringToBinary(self: *const T, Flags: i32, strEncoded: ?BSTR, pstrBinary: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).stringToBinary(@as(*const ICEnroll4, @ptrCast(self)), Flags, strEncoded, pstrBinary);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_addExtensionToRequest(self: *const T, Flags: i32, strName: ?BSTR, strValue: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).addExtensionToRequest(@as(*const ICEnroll4, @ptrCast(self)), Flags, strName, strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_addAttributeToRequest(self: *const T, Flags: i32, strName: ?BSTR, strValue: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).addAttributeToRequest(@as(*const ICEnroll4, @ptrCast(self)), Flags, strName, strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_addNameValuePairToRequest(self: *const T, Flags: i32, strName: ?BSTR, strValue: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).addNameValuePairToRequest(@as(*const ICEnroll4, @ptrCast(self)), Flags, strName, strValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_resetExtensions(self: *const T) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).resetExtensions(@as(*const ICEnroll4, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_resetAttributes(self: *const T) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).resetAttributes(@as(*const ICEnroll4, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_createRequest(self: *const T, Flags: CERT_CREATE_REQUEST_FLAGS, strDNName: ?BSTR, Usage: ?BSTR, pstrRequest: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).createRequest(@as(*const ICEnroll4, @ptrCast(self)), Flags, strDNName, Usage, pstrRequest);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_createFileRequest(self: *const T, Flags: CERT_CREATE_REQUEST_FLAGS, strDNName: ?BSTR, strUsage: ?BSTR, strRequestFileName: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).createFileRequest(@as(*const ICEnroll4, @ptrCast(self)), Flags, strDNName, strUsage, strRequestFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_acceptResponse(self: *const T, strResponse: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).acceptResponse(@as(*const ICEnroll4, @ptrCast(self)), strResponse);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_acceptFileResponse(self: *const T, strResponseFileName: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).acceptFileResponse(@as(*const ICEnroll4, @ptrCast(self)), strResponseFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_getCertFromResponse(self: *const T, strResponse: ?BSTR, pstrCert: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).getCertFromResponse(@as(*const ICEnroll4, @ptrCast(self)), strResponse, pstrCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_getCertFromFileResponse(self: *const T, strResponseFileName: ?BSTR, pstrCert: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).getCertFromFileResponse(@as(*const ICEnroll4, @ptrCast(self)), strResponseFileName, pstrCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_createPFX(self: *const T, strPassword: ?BSTR, pstrPFX: ?*?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).createPFX(@as(*const ICEnroll4, @ptrCast(self)), strPassword, pstrPFX);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_createFilePFX(self: *const T, strPassword: ?BSTR, strPFXFileName: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).createFilePFX(@as(*const ICEnroll4, @ptrCast(self)), strPassword, strPFXFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_setPendingRequestInfo(self: *const T, lRequestID: i32, strCADNS: ?BSTR, strCAName: ?BSTR, strFriendlyName: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).setPendingRequestInfo(@as(*const ICEnroll4, @ptrCast(self)), lRequestID, strCADNS, strCAName, strFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_enumPendingRequest(self: *const T, lIndex: i32, lDesiredProperty: PENDING_REQUEST_DESIRED_PROPERTY, pvarProperty: ?*VARIANT) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).enumPendingRequest(@as(*const ICEnroll4, @ptrCast(self)), lIndex, lDesiredProperty, pvarProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_removePendingRequest(self: *const T, strThumbprint: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).removePendingRequest(@as(*const ICEnroll4, @ptrCast(self)), strThumbprint);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_GetKeyLenEx(self: *const T, lSizeSpec: XEKL_KEYSIZE, lKeySpec: XEKL_KEYSPEC, pdwKeySize: ?*i32) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).GetKeyLenEx(@as(*const ICEnroll4, @ptrCast(self)), lSizeSpec, lKeySpec, pdwKeySize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_InstallPKCS7Ex(self: *const T, PKCS7: ?BSTR, plCertInstalled: ?*i32) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).InstallPKCS7Ex(@as(*const ICEnroll4, @ptrCast(self)), PKCS7, plCertInstalled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_addCertTypeToRequestEx(self: *const T, lType: ADDED_CERT_TYPE, bstrOIDOrName: ?BSTR, lMajorVersion: i32, fMinorVersion: BOOL, lMinorVersion: i32) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).addCertTypeToRequestEx(@as(*const ICEnroll4, @ptrCast(self)), lType, bstrOIDOrName, lMajorVersion, fMinorVersion, lMinorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_getProviderType(self: *const T, strProvName: ?BSTR, plProvType: ?*i32) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).getProviderType(@as(*const ICEnroll4, @ptrCast(self)), strProvName, plProvType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_put_SignerCertificate(self: *const T, bstrCert: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).put_SignerCertificate(@as(*const ICEnroll4, @ptrCast(self)), bstrCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_put_ClientId(self: *const T, lClientId: i32) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).put_ClientId(@as(*const ICEnroll4, @ptrCast(self)), lClientId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_get_ClientId(self: *const T, plClientId: ?*i32) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).get_ClientId(@as(*const ICEnroll4, @ptrCast(self)), plClientId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_addBlobPropertyToCertificate(self: *const T, lPropertyId: i32, lReserved: i32, bstrProperty: ?BSTR) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).addBlobPropertyToCertificate(@as(*const ICEnroll4, @ptrCast(self)), lPropertyId, lReserved, bstrProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_resetBlobProperties(self: *const T) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).resetBlobProperties(@as(*const ICEnroll4, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_put_IncludeSubjectKeyID(self: *const T, fInclude: BOOL) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).put_IncludeSubjectKeyID(@as(*const ICEnroll4, @ptrCast(self)), fInclude);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICEnroll4_get_IncludeSubjectKeyID(self: *const T, pfInclude: ?*BOOL) HRESULT {
                return @as(*const ICEnroll4.VTable, @ptrCast(self.vtable)).get_IncludeSubjectKeyID(@as(*const ICEnroll4, @ptrCast(self)), pfInclude);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IEnroll_Value = Guid.initString("acaa7838-4585-11d1-ab57-00c04fc295e1");
pub const IID_IEnroll = &IID_IEnroll_Value;
pub const IEnroll = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        createFilePKCS10WStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                DNName: ?[*:0]const u16,
                Usage: ?[*:0]const u16,
                wszPKCS10FileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                DNName: ?[*:0]const u16,
                Usage: ?[*:0]const u16,
                wszPKCS10FileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptFilePKCS7WStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                wszPKCS7FileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                wszPKCS7FileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createPKCS10WStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                DNName: ?[*:0]const u16,
                Usage: ?[*:0]const u16,
                pPkcs10Blob: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                DNName: ?[*:0]const u16,
                Usage: ?[*:0]const u16,
                pPkcs10Blob: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptPKCS7Blob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getCertContextFromPKCS7: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) ?*CERT_CONTEXT,
            else => *const fn (
                self: *const IEnroll,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) ?*CERT_CONTEXT,
        },
        getMyStore: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
            ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
            else => *const fn (
                self: *const IEnroll,
            ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
        },
        getCAStore: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
            ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
            else => *const fn (
                self: *const IEnroll,
            ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
        },
        getROOTHStore: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
            ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
            else => *const fn (
                self: *const IEnroll,
            ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
        },
        enumProvidersWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                dwIndex: i32,
                dwFlags: i32,
                pbstrProvName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                dwIndex: i32,
                dwFlags: i32,
                pbstrProvName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        enumContainersWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                dwIndex: i32,
                pbstr: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                dwIndex: i32,
                pbstr: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        freeRequestInfoBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                pkcs7OrPkcs10: CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                pkcs7OrPkcs10: CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MyStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MyStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MyStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MyStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MyStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MyStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CAStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CAStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequestStoreNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequestStoreTypeWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwType: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RequestStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RequestStoreFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ContainerNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwContainer: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwContainer: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ContainerNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwContainer: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwContainer: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwProvider: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwProvider: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szwProvider: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szwProvider: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwType: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwType: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdw: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdw: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_KeySpec: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dw: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dw: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProviderFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseExistingKeySet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fUseExistingKeys: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fUseExistingKeys: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseExistingKeySet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fUseExistingKeys: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fUseExistingKeys: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GenKeyFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GenKeyFlags: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                dwFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeleteRequestCert: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fDelete: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fDelete: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DeleteRequestCert: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fDelete: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fDelete: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_WriteCertToUserDS: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_WriteCertToUserDS: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableT61DNEncoding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableT61DNEncoding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_WriteCertToCSP: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fBool: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_WriteCertToCSP: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                fBool: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SPCFileNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szw: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SPCFileNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PVKFileNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szw: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PVKFileNameWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgorithmWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szw: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgorithmWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RenewalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                ppCertContext: ?*?*CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                ppCertContext: ?*?*CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RenewalCertificate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll,
                pCertContext: ?*const CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll,
                pCertContext: ?*const CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddCertTypeToRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                szw: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddNameValuePairToSignatureWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                Name: ?PWSTR,
                Value: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                Name: ?PWSTR,
                Value: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddExtensionsToRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                pCertExtensions: ?*CERT_EXTENSIONS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                pCertExtensions: ?*CERT_EXTENSIONS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddAuthenticatedAttributesToPKCS7Request: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                pAttributes: ?*CRYPT_ATTRIBUTES,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                pAttributes: ?*CRYPT_ATTRIBUTES,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreatePKCS7RequestFromRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll,
                pRequest: ?*CRYPTOAPI_BLOB,
                pSigningCertContext: ?*const CERT_CONTEXT,
                pPkcs7Blob: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll,
                pRequest: ?*CRYPTOAPI_BLOB,
                pSigningCertContext: ?*const CERT_CONTEXT,
                pPkcs7Blob: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_createFilePKCS10WStr(self: *const T, DNName: ?[*:0]const u16, Usage: ?[*:0]const u16, wszPKCS10FileName: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).createFilePKCS10WStr(@as(*const IEnroll, @ptrCast(self)), DNName, Usage, wszPKCS10FileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_acceptFilePKCS7WStr(self: *const T, wszPKCS7FileName: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).acceptFilePKCS7WStr(@as(*const IEnroll, @ptrCast(self)), wszPKCS7FileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_createPKCS10WStr(self: *const T, DNName: ?[*:0]const u16, Usage: ?[*:0]const u16, pPkcs10Blob: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).createPKCS10WStr(@as(*const IEnroll, @ptrCast(self)), DNName, Usage, pPkcs10Blob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_acceptPKCS7Blob(self: *const T, pBlobPKCS7: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).acceptPKCS7Blob(@as(*const IEnroll, @ptrCast(self)), pBlobPKCS7);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_getCertContextFromPKCS7(self: *const T, pBlobPKCS7: ?*CRYPTOAPI_BLOB) ?*CERT_CONTEXT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).getCertContextFromPKCS7(@as(*const IEnroll, @ptrCast(self)), pBlobPKCS7);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_getMyStore(self: *const T) ?*anyopaque {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).getMyStore(@as(*const IEnroll, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_getCAStore(self: *const T) ?*anyopaque {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).getCAStore(@as(*const IEnroll, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_getROOTHStore(self: *const T) ?*anyopaque {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).getROOTHStore(@as(*const IEnroll, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_enumProvidersWStr(self: *const T, dwIndex: i32, dwFlags: i32, pbstrProvName: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).enumProvidersWStr(@as(*const IEnroll, @ptrCast(self)), dwIndex, dwFlags, pbstrProvName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_enumContainersWStr(self: *const T, dwIndex: i32, pbstr: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).enumContainersWStr(@as(*const IEnroll, @ptrCast(self)), dwIndex, pbstr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_freeRequestInfoBlob(self: *const T, pkcs7OrPkcs10: CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).freeRequestInfoBlob(@as(*const IEnroll, @ptrCast(self)), pkcs7OrPkcs10);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_MyStoreNameWStr(self: *const T, szwName: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_MyStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_MyStoreNameWStr(self: *const T, szwName: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_MyStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_MyStoreTypeWStr(self: *const T, szwType: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_MyStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_MyStoreTypeWStr(self: *const T, szwType: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_MyStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_MyStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_MyStoreFlags(@as(*const IEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_MyStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_MyStoreFlags(@as(*const IEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_CAStoreNameWStr(self: *const T, szwName: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_CAStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_CAStoreNameWStr(self: *const T, szwName: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_CAStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_CAStoreTypeWStr(self: *const T, szwType: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_CAStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_CAStoreTypeWStr(self: *const T, szwType: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_CAStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_CAStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_CAStoreFlags(@as(*const IEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_CAStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_CAStoreFlags(@as(*const IEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RootStoreNameWStr(self: *const T, szwName: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RootStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RootStoreNameWStr(self: *const T, szwName: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RootStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RootStoreTypeWStr(self: *const T, szwType: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RootStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RootStoreTypeWStr(self: *const T, szwType: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RootStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RootStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RootStoreFlags(@as(*const IEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RootStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RootStoreFlags(@as(*const IEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RequestStoreNameWStr(self: *const T, szwName: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RequestStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RequestStoreNameWStr(self: *const T, szwName: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RequestStoreNameWStr(@as(*const IEnroll, @ptrCast(self)), szwName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RequestStoreTypeWStr(self: *const T, szwType: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RequestStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RequestStoreTypeWStr(self: *const T, szwType: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RequestStoreTypeWStr(@as(*const IEnroll, @ptrCast(self)), szwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RequestStoreFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RequestStoreFlags(@as(*const IEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RequestStoreFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RequestStoreFlags(@as(*const IEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_ContainerNameWStr(self: *const T, szwContainer: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_ContainerNameWStr(@as(*const IEnroll, @ptrCast(self)), szwContainer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_ContainerNameWStr(self: *const T, szwContainer: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_ContainerNameWStr(@as(*const IEnroll, @ptrCast(self)), szwContainer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_ProviderNameWStr(self: *const T, szwProvider: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_ProviderNameWStr(@as(*const IEnroll, @ptrCast(self)), szwProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_ProviderNameWStr(self: *const T, szwProvider: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_ProviderNameWStr(@as(*const IEnroll, @ptrCast(self)), szwProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_ProviderType(self: *const T, pdwType: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_ProviderType(@as(*const IEnroll, @ptrCast(self)), pdwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_ProviderType(self: *const T, dwType: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_ProviderType(@as(*const IEnroll, @ptrCast(self)), dwType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_KeySpec(self: *const T, pdw: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_KeySpec(@as(*const IEnroll, @ptrCast(self)), pdw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_KeySpec(self: *const T, dw: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_KeySpec(@as(*const IEnroll, @ptrCast(self)), dw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_ProviderFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_ProviderFlags(@as(*const IEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_ProviderFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_ProviderFlags(@as(*const IEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_UseExistingKeySet(self: *const T, fUseExistingKeys: ?*BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_UseExistingKeySet(@as(*const IEnroll, @ptrCast(self)), fUseExistingKeys);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_UseExistingKeySet(self: *const T, fUseExistingKeys: BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_UseExistingKeySet(@as(*const IEnroll, @ptrCast(self)), fUseExistingKeys);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_GenKeyFlags(self: *const T, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_GenKeyFlags(@as(*const IEnroll, @ptrCast(self)), pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_GenKeyFlags(self: *const T, dwFlags: i32) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_GenKeyFlags(@as(*const IEnroll, @ptrCast(self)), dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_DeleteRequestCert(self: *const T, fDelete: ?*BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_DeleteRequestCert(@as(*const IEnroll, @ptrCast(self)), fDelete);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_DeleteRequestCert(self: *const T, fDelete: BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_DeleteRequestCert(@as(*const IEnroll, @ptrCast(self)), fDelete);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_WriteCertToUserDS(self: *const T, fBool: ?*BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_WriteCertToUserDS(@as(*const IEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_WriteCertToUserDS(self: *const T, fBool: BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_WriteCertToUserDS(@as(*const IEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_EnableT61DNEncoding(self: *const T, fBool: ?*BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_EnableT61DNEncoding(@as(*const IEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_EnableT61DNEncoding(self: *const T, fBool: BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_EnableT61DNEncoding(@as(*const IEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_WriteCertToCSP(self: *const T, fBool: ?*BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_WriteCertToCSP(@as(*const IEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_WriteCertToCSP(self: *const T, fBool: BOOL) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_WriteCertToCSP(@as(*const IEnroll, @ptrCast(self)), fBool);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_SPCFileNameWStr(self: *const T, szw: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_SPCFileNameWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_SPCFileNameWStr(self: *const T, szw: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_SPCFileNameWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_PVKFileNameWStr(self: *const T, szw: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_PVKFileNameWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_PVKFileNameWStr(self: *const T, szw: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_PVKFileNameWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_HashAlgorithmWStr(self: *const T, szw: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_HashAlgorithmWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_HashAlgorithmWStr(self: *const T, szw: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_HashAlgorithmWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_get_RenewalCertificate(self: *const T, ppCertContext: ?*?*CERT_CONTEXT) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).get_RenewalCertificate(@as(*const IEnroll, @ptrCast(self)), ppCertContext);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_put_RenewalCertificate(self: *const T, pCertContext: ?*const CERT_CONTEXT) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).put_RenewalCertificate(@as(*const IEnroll, @ptrCast(self)), pCertContext);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_AddCertTypeToRequestWStr(self: *const T, szw: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).AddCertTypeToRequestWStr(@as(*const IEnroll, @ptrCast(self)), szw);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_AddNameValuePairToSignatureWStr(self: *const T, Name: ?PWSTR, Value: ?PWSTR) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).AddNameValuePairToSignatureWStr(@as(*const IEnroll, @ptrCast(self)), Name, Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_AddExtensionsToRequest(self: *const T, pCertExtensions: ?*CERT_EXTENSIONS) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).AddExtensionsToRequest(@as(*const IEnroll, @ptrCast(self)), pCertExtensions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_AddAuthenticatedAttributesToPKCS7Request(self: *const T, pAttributes: ?*CRYPT_ATTRIBUTES) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).AddAuthenticatedAttributesToPKCS7Request(@as(*const IEnroll, @ptrCast(self)), pAttributes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll_CreatePKCS7RequestFromRequest(self: *const T, pRequest: ?*CRYPTOAPI_BLOB, pSigningCertContext: ?*const CERT_CONTEXT, pPkcs7Blob: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll.VTable, @ptrCast(self.vtable)).CreatePKCS7RequestFromRequest(@as(*const IEnroll, @ptrCast(self)), pRequest, pSigningCertContext, pPkcs7Blob);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IEnroll2_Value = Guid.initString("c080e199-b7df-11d2-a421-00c04f79fe8e");
pub const IID_IEnroll2 = &IID_IEnroll2_Value;
pub const IEnroll2 = extern struct {
    pub const VTable = extern struct {
        base: IEnroll.VTable,
        InstallPKCS7Blob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSupportedKeySpec: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                pdwKeySpec: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                pdwKeySpec: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetKeyLen: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                fMin: BOOL,
                fExchange: BOOL,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                fMin: BOOL,
                fExchange: BOOL,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumAlgs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                dwIndex: i32,
                algClass: i32,
                pdwAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                dwIndex: i32,
                algClass: i32,
                pdwAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAlgNameWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                algID: i32,
                ppwsz: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                algID: i32,
                ppwsz: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReuseHardwareKeyIfUnableToGenNew: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                fReuseHardwareKeyIfUnableToGenNew: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                fReuseHardwareKeyIfUnableToGenNew: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReuseHardwareKeyIfUnableToGenNew: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                fReuseHardwareKeyIfUnableToGenNew: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                fReuseHardwareKeyIfUnableToGenNew: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HashAlgID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                hashAlgID: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                hashAlgID: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HashAlgID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                hashAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                hashAlgID: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetHStoreMy: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetHStoreCA: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetHStoreROOT: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetHStoreRequest: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll2,
                hStore: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LimitExchangeKeyToEncipherment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                fLimitExchangeKeyToEncipherment: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                fLimitExchangeKeyToEncipherment: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LimitExchangeKeyToEncipherment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                fLimitExchangeKeyToEncipherment: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                fLimitExchangeKeyToEncipherment: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableSMIMECapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                fEnableSMIMECapabilities: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                fEnableSMIMECapabilities: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableSMIMECapabilities: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll2,
                fEnableSMIMECapabilities: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll2,
                fEnableSMIMECapabilities: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IEnroll.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_InstallPKCS7Blob(self: *const T, pBlobPKCS7: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).InstallPKCS7Blob(@as(*const IEnroll2, @ptrCast(self)), pBlobPKCS7);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_Reset(self: *const T) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnroll2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_GetSupportedKeySpec(self: *const T, pdwKeySpec: ?*i32) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).GetSupportedKeySpec(@as(*const IEnroll2, @ptrCast(self)), pdwKeySpec);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_GetKeyLen(self: *const T, fMin: BOOL, fExchange: BOOL, pdwKeySize: ?*i32) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).GetKeyLen(@as(*const IEnroll2, @ptrCast(self)), fMin, fExchange, pdwKeySize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_EnumAlgs(self: *const T, dwIndex: i32, algClass: i32, pdwAlgID: ?*i32) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).EnumAlgs(@as(*const IEnroll2, @ptrCast(self)), dwIndex, algClass, pdwAlgID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_GetAlgNameWStr(self: *const T, algID: i32, ppwsz: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).GetAlgNameWStr(@as(*const IEnroll2, @ptrCast(self)), algID, ppwsz);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_put_ReuseHardwareKeyIfUnableToGenNew(self: *const T, fReuseHardwareKeyIfUnableToGenNew: BOOL) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).put_ReuseHardwareKeyIfUnableToGenNew(@as(*const IEnroll2, @ptrCast(self)), fReuseHardwareKeyIfUnableToGenNew);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_get_ReuseHardwareKeyIfUnableToGenNew(self: *const T, fReuseHardwareKeyIfUnableToGenNew: ?*BOOL) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).get_ReuseHardwareKeyIfUnableToGenNew(@as(*const IEnroll2, @ptrCast(self)), fReuseHardwareKeyIfUnableToGenNew);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_put_HashAlgID(self: *const T, hashAlgID: i32) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).put_HashAlgID(@as(*const IEnroll2, @ptrCast(self)), hashAlgID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_get_HashAlgID(self: *const T, hashAlgID: ?*i32) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).get_HashAlgID(@as(*const IEnroll2, @ptrCast(self)), hashAlgID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_SetHStoreMy(self: *const T, hStore: ?*anyopaque) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).SetHStoreMy(@as(*const IEnroll2, @ptrCast(self)), hStore);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_SetHStoreCA(self: *const T, hStore: ?*anyopaque) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).SetHStoreCA(@as(*const IEnroll2, @ptrCast(self)), hStore);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_SetHStoreROOT(self: *const T, hStore: ?*anyopaque) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).SetHStoreROOT(@as(*const IEnroll2, @ptrCast(self)), hStore);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_SetHStoreRequest(self: *const T, hStore: ?*anyopaque) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).SetHStoreRequest(@as(*const IEnroll2, @ptrCast(self)), hStore);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_put_LimitExchangeKeyToEncipherment(self: *const T, fLimitExchangeKeyToEncipherment: BOOL) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).put_LimitExchangeKeyToEncipherment(@as(*const IEnroll2, @ptrCast(self)), fLimitExchangeKeyToEncipherment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_get_LimitExchangeKeyToEncipherment(self: *const T, fLimitExchangeKeyToEncipherment: ?*BOOL) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).get_LimitExchangeKeyToEncipherment(@as(*const IEnroll2, @ptrCast(self)), fLimitExchangeKeyToEncipherment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_put_EnableSMIMECapabilities(self: *const T, fEnableSMIMECapabilities: BOOL) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).put_EnableSMIMECapabilities(@as(*const IEnroll2, @ptrCast(self)), fEnableSMIMECapabilities);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll2_get_EnableSMIMECapabilities(self: *const T, fEnableSMIMECapabilities: ?*BOOL) HRESULT {
                return @as(*const IEnroll2.VTable, @ptrCast(self.vtable)).get_EnableSMIMECapabilities(@as(*const IEnroll2, @ptrCast(self)), fEnableSMIMECapabilities);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IEnroll4_Value = Guid.initString("f8053fe5-78f4-448f-a0db-41d61b73446b");
pub const IID_IEnroll4 = &IID_IEnroll4_Value;
pub const IEnroll4 = extern struct {
    pub const VTable = extern struct {
        base: IEnroll2.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ThumbPrintWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll4,
                thumbPrintBlob: CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll4,
                thumbPrintBlob: CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ThumbPrintWStr: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll4,
                thumbPrintBlob: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll4,
                thumbPrintBlob: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetPrivateKeyArchiveCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pPrivateKeyArchiveCert: ?*const CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pPrivateKeyArchiveCert: ?*const CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPrivateKeyArchiveCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) ?*CERT_CONTEXT,
            else => *const fn (
                self: *const IEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) ?*CERT_CONTEXT,
        },
        binaryBlobToString: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: i32,
                pblobBinary: ?*CRYPTOAPI_BLOB,
                ppwszString: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: i32,
                pblobBinary: ?*CRYPTOAPI_BLOB,
                ppwszString: ?*?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        stringToBinaryBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszString: ?[*:0]const u16,
                pblobBinary: ?*CRYPTOAPI_BLOB,
                pdwSkip: ?*i32,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszString: ?[*:0]const u16,
                pblobBinary: ?*CRYPTOAPI_BLOB,
                pdwSkip: ?*i32,
                pdwFlags: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addExtensionToRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszName: ?[*:0]const u16,
                pblobValue: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszName: ?[*:0]const u16,
                pblobValue: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addAttributeToRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszName: ?[*:0]const u16,
                pblobValue: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszName: ?[*:0]const u16,
                pblobValue: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addNameValuePairToRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszName: ?[*:0]const u16,
                pwszValue: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: i32,
                pwszName: ?[*:0]const u16,
                pwszValue: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        resetExtensions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        resetAttributes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                pwszDNName: ?[*:0]const u16,
                pwszUsage: ?[*:0]const u16,
                pblobRequest: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                pwszDNName: ?[*:0]const u16,
                pwszUsage: ?[*:0]const u16,
                pblobRequest: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createFileRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                pwszDNName: ?[*:0]const u16,
                pwszUsage: ?[*:0]const u16,
                pwszRequestFileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                Flags: CERT_CREATE_REQUEST_FLAGS,
                pwszDNName: ?[*:0]const u16,
                pwszUsage: ?[*:0]const u16,
                pwszRequestFileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptResponseBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pblobResponse: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pblobResponse: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        acceptFileResponseWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pwszResponseFileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pwszResponseFileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getCertContextFromResponseBlob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pblobResponse: ?*CRYPTOAPI_BLOB,
                ppCertContext: ?*?*CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pblobResponse: ?*CRYPTOAPI_BLOB,
                ppCertContext: ?*?*CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getCertContextFromFileResponseWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pwszResponseFileName: ?[*:0]const u16,
                ppCertContext: ?*?*CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pwszResponseFileName: ?[*:0]const u16,
                ppCertContext: ?*?*CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createPFXWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pwszPassword: ?[*:0]const u16,
                pblobPFX: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pwszPassword: ?[*:0]const u16,
                pblobPFX: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        createFilePFXWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pwszPassword: ?[*:0]const u16,
                pwszPFXFileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pwszPassword: ?[*:0]const u16,
                pwszPFXFileName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        setPendingRequestInfoWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                lRequestID: i32,
                pwszCADNS: ?[*:0]const u16,
                pwszCAName: ?[*:0]const u16,
                pwszFriendlyName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                lRequestID: i32,
                pwszCADNS: ?[*:0]const u16,
                pwszCAName: ?[*:0]const u16,
                pwszFriendlyName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        enumPendingRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                lIndex: i32,
                lDesiredProperty: PENDING_REQUEST_DESIRED_PROPERTY,
                ppProperty: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                lIndex: i32,
                lDesiredProperty: PENDING_REQUEST_DESIRED_PROPERTY,
                ppProperty: ?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        removePendingRequestWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                thumbPrintBlob: CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                thumbPrintBlob: CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetKeyLenEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                lSizeSpec: XEKL_KEYSIZE,
                lKeySpec: XEKL_KEYSPEC,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                lSizeSpec: XEKL_KEYSIZE,
                lKeySpec: XEKL_KEYSPEC,
                pdwKeySize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        InstallPKCS7BlobEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
                plCertInstalled: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pBlobPKCS7: ?*CRYPTOAPI_BLOB,
                plCertInstalled: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddCertTypeToRequestWStrEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                lType: ADDED_CERT_TYPE,
                pwszOIDOrName: ?[*:0]const u16,
                lMajorVersion: i32,
                fMinorVersion: BOOL,
                lMinorVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                lType: ADDED_CERT_TYPE,
                pwszOIDOrName: ?[*:0]const u16,
                lMajorVersion: i32,
                fMinorVersion: BOOL,
                lMinorVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        getProviderTypeWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pwszProvName: ?[*:0]const u16,
                plProvType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pwszProvName: ?[*:0]const u16,
                plProvType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        addBlobPropertyToCertificateWStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                lPropertyId: i32,
                lReserved: i32,
                pBlobProperty: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                lPropertyId: i32,
                lReserved: i32,
                pBlobProperty: ?*CRYPTOAPI_BLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetSignerCertificate: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnroll4,
                pSignerCert: ?*const CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnroll4,
                pSignerCert: ?*const CERT_CONTEXT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll4,
                lClientId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll4,
                lClientId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ClientId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll4,
                plClientId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll4,
                plClientId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_IncludeSubjectKeyID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll4,
                fInclude: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll4,
                fInclude: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncludeSubjectKeyID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IEnroll4,
                pfInclude: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IEnroll4,
                pfInclude: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IEnroll2.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_put_ThumbPrintWStr(self: *const T, thumbPrintBlob: CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).put_ThumbPrintWStr(@as(*const IEnroll4, @ptrCast(self)), thumbPrintBlob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_get_ThumbPrintWStr(self: *const T, thumbPrintBlob: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).get_ThumbPrintWStr(@as(*const IEnroll4, @ptrCast(self)), thumbPrintBlob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_SetPrivateKeyArchiveCertificate(self: *const T, pPrivateKeyArchiveCert: ?*const CERT_CONTEXT) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).SetPrivateKeyArchiveCertificate(@as(*const IEnroll4, @ptrCast(self)), pPrivateKeyArchiveCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_GetPrivateKeyArchiveCertificate(self: *const T) ?*CERT_CONTEXT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).GetPrivateKeyArchiveCertificate(@as(*const IEnroll4, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_binaryBlobToString(self: *const T, Flags: i32, pblobBinary: ?*CRYPTOAPI_BLOB, ppwszString: ?*?PWSTR) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).binaryBlobToString(@as(*const IEnroll4, @ptrCast(self)), Flags, pblobBinary, ppwszString);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_stringToBinaryBlob(self: *const T, Flags: i32, pwszString: ?[*:0]const u16, pblobBinary: ?*CRYPTOAPI_BLOB, pdwSkip: ?*i32, pdwFlags: ?*i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).stringToBinaryBlob(@as(*const IEnroll4, @ptrCast(self)), Flags, pwszString, pblobBinary, pdwSkip, pdwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_addExtensionToRequestWStr(self: *const T, Flags: i32, pwszName: ?[*:0]const u16, pblobValue: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).addExtensionToRequestWStr(@as(*const IEnroll4, @ptrCast(self)), Flags, pwszName, pblobValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_addAttributeToRequestWStr(self: *const T, Flags: i32, pwszName: ?[*:0]const u16, pblobValue: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).addAttributeToRequestWStr(@as(*const IEnroll4, @ptrCast(self)), Flags, pwszName, pblobValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_addNameValuePairToRequestWStr(self: *const T, Flags: i32, pwszName: ?[*:0]const u16, pwszValue: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).addNameValuePairToRequestWStr(@as(*const IEnroll4, @ptrCast(self)), Flags, pwszName, pwszValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_resetExtensions(self: *const T) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).resetExtensions(@as(*const IEnroll4, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_resetAttributes(self: *const T) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).resetAttributes(@as(*const IEnroll4, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_createRequestWStr(self: *const T, Flags: CERT_CREATE_REQUEST_FLAGS, pwszDNName: ?[*:0]const u16, pwszUsage: ?[*:0]const u16, pblobRequest: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).createRequestWStr(@as(*const IEnroll4, @ptrCast(self)), Flags, pwszDNName, pwszUsage, pblobRequest);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_createFileRequestWStr(self: *const T, Flags: CERT_CREATE_REQUEST_FLAGS, pwszDNName: ?[*:0]const u16, pwszUsage: ?[*:0]const u16, pwszRequestFileName: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).createFileRequestWStr(@as(*const IEnroll4, @ptrCast(self)), Flags, pwszDNName, pwszUsage, pwszRequestFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_acceptResponseBlob(self: *const T, pblobResponse: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).acceptResponseBlob(@as(*const IEnroll4, @ptrCast(self)), pblobResponse);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_acceptFileResponseWStr(self: *const T, pwszResponseFileName: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).acceptFileResponseWStr(@as(*const IEnroll4, @ptrCast(self)), pwszResponseFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_getCertContextFromResponseBlob(self: *const T, pblobResponse: ?*CRYPTOAPI_BLOB, ppCertContext: ?*?*CERT_CONTEXT) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).getCertContextFromResponseBlob(@as(*const IEnroll4, @ptrCast(self)), pblobResponse, ppCertContext);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_getCertContextFromFileResponseWStr(self: *const T, pwszResponseFileName: ?[*:0]const u16, ppCertContext: ?*?*CERT_CONTEXT) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).getCertContextFromFileResponseWStr(@as(*const IEnroll4, @ptrCast(self)), pwszResponseFileName, ppCertContext);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_createPFXWStr(self: *const T, pwszPassword: ?[*:0]const u16, pblobPFX: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).createPFXWStr(@as(*const IEnroll4, @ptrCast(self)), pwszPassword, pblobPFX);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_createFilePFXWStr(self: *const T, pwszPassword: ?[*:0]const u16, pwszPFXFileName: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).createFilePFXWStr(@as(*const IEnroll4, @ptrCast(self)), pwszPassword, pwszPFXFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_setPendingRequestInfoWStr(self: *const T, lRequestID: i32, pwszCADNS: ?[*:0]const u16, pwszCAName: ?[*:0]const u16, pwszFriendlyName: ?[*:0]const u16) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).setPendingRequestInfoWStr(@as(*const IEnroll4, @ptrCast(self)), lRequestID, pwszCADNS, pwszCAName, pwszFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_enumPendingRequestWStr(self: *const T, lIndex: i32, lDesiredProperty: PENDING_REQUEST_DESIRED_PROPERTY, ppProperty: ?*anyopaque) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).enumPendingRequestWStr(@as(*const IEnroll4, @ptrCast(self)), lIndex, lDesiredProperty, ppProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_removePendingRequestWStr(self: *const T, thumbPrintBlob: CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).removePendingRequestWStr(@as(*const IEnroll4, @ptrCast(self)), thumbPrintBlob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_GetKeyLenEx(self: *const T, lSizeSpec: XEKL_KEYSIZE, lKeySpec: XEKL_KEYSPEC, pdwKeySize: ?*i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).GetKeyLenEx(@as(*const IEnroll4, @ptrCast(self)), lSizeSpec, lKeySpec, pdwKeySize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_InstallPKCS7BlobEx(self: *const T, pBlobPKCS7: ?*CRYPTOAPI_BLOB, plCertInstalled: ?*i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).InstallPKCS7BlobEx(@as(*const IEnroll4, @ptrCast(self)), pBlobPKCS7, plCertInstalled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_AddCertTypeToRequestWStrEx(self: *const T, lType: ADDED_CERT_TYPE, pwszOIDOrName: ?[*:0]const u16, lMajorVersion: i32, fMinorVersion: BOOL, lMinorVersion: i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).AddCertTypeToRequestWStrEx(@as(*const IEnroll4, @ptrCast(self)), lType, pwszOIDOrName, lMajorVersion, fMinorVersion, lMinorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_getProviderTypeWStr(self: *const T, pwszProvName: ?[*:0]const u16, plProvType: ?*i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).getProviderTypeWStr(@as(*const IEnroll4, @ptrCast(self)), pwszProvName, plProvType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_addBlobPropertyToCertificateWStr(self: *const T, lPropertyId: i32, lReserved: i32, pBlobProperty: ?*CRYPTOAPI_BLOB) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).addBlobPropertyToCertificateWStr(@as(*const IEnroll4, @ptrCast(self)), lPropertyId, lReserved, pBlobProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_SetSignerCertificate(self: *const T, pSignerCert: ?*const CERT_CONTEXT) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).SetSignerCertificate(@as(*const IEnroll4, @ptrCast(self)), pSignerCert);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_put_ClientId(self: *const T, lClientId: i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).put_ClientId(@as(*const IEnroll4, @ptrCast(self)), lClientId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_get_ClientId(self: *const T, plClientId: ?*i32) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).get_ClientId(@as(*const IEnroll4, @ptrCast(self)), plClientId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_put_IncludeSubjectKeyID(self: *const T, fInclude: BOOL) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).put_IncludeSubjectKeyID(@as(*const IEnroll4, @ptrCast(self)), fInclude);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnroll4_get_IncludeSubjectKeyID(self: *const T, pfInclude: ?*BOOL) HRESULT {
                return @as(*const IEnroll4.VTable, @ptrCast(self.vtable)).get_IncludeSubjectKeyID(@as(*const IEnroll4, @ptrCast(self)), pfInclude);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertRequestD_Value = Guid.initString("d99e6e70-fc88-11d0-b498-00a0c90312f3");
pub const IID_ICertRequestD = &IID_ICertRequestD_Value;
pub const ICertRequestD = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Request: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD,
                dwFlags: u32,
                pwszAuthority: ?[*:0]const u16,
                pdwRequestId: ?*u32,
                pdwDisposition: ?*u32,
                pwszAttributes: ?[*:0]const u16,
                pctbRequest: ?*const CERTTRANSBLOB,
                pctbCertChain: ?*CERTTRANSBLOB,
                pctbEncodedCert: ?*CERTTRANSBLOB,
                pctbDispositionMessage: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD,
                dwFlags: u32,
                pwszAuthority: ?[*:0]const u16,
                pdwRequestId: ?*u32,
                pdwDisposition: ?*u32,
                pwszAttributes: ?[*:0]const u16,
                pctbRequest: ?*const CERTTRANSBLOB,
                pctbCertChain: ?*CERTTRANSBLOB,
                pctbEncodedCert: ?*CERTTRANSBLOB,
                pctbDispositionMessage: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCACert: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD,
                fchain: u32,
                pwszAuthority: ?[*:0]const u16,
                pctbOut: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD,
                fchain: u32,
                pwszAuthority: ?[*:0]const u16,
                pctbOut: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Ping: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD,
                pwszAuthority: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD,
                pwszAuthority: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD_Request(self: *const T, dwFlags: u32, pwszAuthority: ?[*:0]const u16, pdwRequestId: ?*u32, pdwDisposition: ?*u32, pwszAttributes: ?[*:0]const u16, pctbRequest: ?*const CERTTRANSBLOB, pctbCertChain: ?*CERTTRANSBLOB, pctbEncodedCert: ?*CERTTRANSBLOB, pctbDispositionMessage: ?*CERTTRANSBLOB) HRESULT {
                return @as(*const ICertRequestD.VTable, @ptrCast(self.vtable)).Request(@as(*const ICertRequestD, @ptrCast(self)), dwFlags, pwszAuthority, pdwRequestId, pdwDisposition, pwszAttributes, pctbRequest, pctbCertChain, pctbEncodedCert, pctbDispositionMessage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD_GetCACert(self: *const T, fchain: u32, pwszAuthority: ?[*:0]const u16, pctbOut: ?*CERTTRANSBLOB) HRESULT {
                return @as(*const ICertRequestD.VTable, @ptrCast(self.vtable)).GetCACert(@as(*const ICertRequestD, @ptrCast(self)), fchain, pwszAuthority, pctbOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD_Ping(self: *const T, pwszAuthority: ?[*:0]const u16) HRESULT {
                return @as(*const ICertRequestD.VTable, @ptrCast(self.vtable)).Ping(@as(*const ICertRequestD, @ptrCast(self)), pwszAuthority);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICertRequestD2_Value = Guid.initString("5422fd3a-d4b8-4cef-a12e-e87d4ca22e90");
pub const IID_ICertRequestD2 = &IID_ICertRequestD2_Value;
pub const ICertRequestD2 = extern struct {
    pub const VTable = extern struct {
        base: ICertRequestD.VTable,
        Request2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
                dwFlags: u32,
                pwszSerialNumber: ?[*:0]const u16,
                pdwRequestId: ?*u32,
                pdwDisposition: ?*u32,
                pwszAttributes: ?[*:0]const u16,
                pctbRequest: ?*const CERTTRANSBLOB,
                pctbFullResponse: ?*CERTTRANSBLOB,
                pctbEncodedCert: ?*CERTTRANSBLOB,
                pctbDispositionMessage: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
                dwFlags: u32,
                pwszSerialNumber: ?[*:0]const u16,
                pdwRequestId: ?*u32,
                pdwDisposition: ?*u32,
                pwszAttributes: ?[*:0]const u16,
                pctbRequest: ?*const CERTTRANSBLOB,
                pctbFullResponse: ?*CERTTRANSBLOB,
                pctbEncodedCert: ?*CERTTRANSBLOB,
                pctbDispositionMessage: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
                PropId: i32,
                PropIndex: i32,
                PropType: i32,
                pctbPropertyValue: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
                PropId: i32,
                PropIndex: i32,
                PropType: i32,
                pctbPropertyValue: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCAPropertyInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
                pcProperty: ?*i32,
                pctbPropInfo: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
                pcProperty: ?*i32,
                pctbPropInfo: ?*CERTTRANSBLOB,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Ping2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICertRequestD2,
                pwszAuthority: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICertRequestD.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD2_Request2(self: *const T, pwszAuthority: ?[*:0]const u16, dwFlags: u32, pwszSerialNumber: ?[*:0]const u16, pdwRequestId: ?*u32, pdwDisposition: ?*u32, pwszAttributes: ?[*:0]const u16, pctbRequest: ?*const CERTTRANSBLOB, pctbFullResponse: ?*CERTTRANSBLOB, pctbEncodedCert: ?*CERTTRANSBLOB, pctbDispositionMessage: ?*CERTTRANSBLOB) HRESULT {
                return @as(*const ICertRequestD2.VTable, @ptrCast(self.vtable)).Request2(@as(*const ICertRequestD2, @ptrCast(self)), pwszAuthority, dwFlags, pwszSerialNumber, pdwRequestId, pdwDisposition, pwszAttributes, pctbRequest, pctbFullResponse, pctbEncodedCert, pctbDispositionMessage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD2_GetCAProperty(self: *const T, pwszAuthority: ?[*:0]const u16, PropId: i32, PropIndex: i32, PropType: i32, pctbPropertyValue: ?*CERTTRANSBLOB) HRESULT {
                return @as(*const ICertRequestD2.VTable, @ptrCast(self.vtable)).GetCAProperty(@as(*const ICertRequestD2, @ptrCast(self)), pwszAuthority, PropId, PropIndex, PropType, pctbPropertyValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD2_GetCAPropertyInfo(self: *const T, pwszAuthority: ?[*:0]const u16, pcProperty: ?*i32, pctbPropInfo: ?*CERTTRANSBLOB) HRESULT {
                return @as(*const ICertRequestD2.VTable, @ptrCast(self.vtable)).GetCAPropertyInfo(@as(*const ICertRequestD2, @ptrCast(self)), pwszAuthority, pcProperty, pctbPropInfo);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICertRequestD2_Ping2(self: *const T, pwszAuthority: ?[*:0]const u16) HRESULT {
                return @as(*const ICertRequestD2.VTable, @ptrCast(self.vtable)).Ping2(@as(*const ICertRequestD2, @ptrCast(self)), pwszAuthority);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

//--------------------------------------------------------------------------------
// Section: Functions (26)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvIsServerOnlineW(
    pwszServerName: ?[*:0]const u16,
    pfServerOnline: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupGetDynamicFileListW(
    hbc: ?*anyopaque,
    ppwszzFileList: ?*?PWSTR,
    pcbSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupPrepareW(
    pwszServerName: ?[*:0]const u16,
    grbitJet: u32,
    dwBackupFlags: CSBACKUP_TYPE,
    phbc: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupGetDatabaseNamesW(
    hbc: ?*anyopaque,
    ppwszzAttachmentInformation: ?*?PWSTR,
    pcbSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupOpenFileW(
    hbc: ?*anyopaque,
    pwszAttachmentName: ?[*:0]const u16,
    cbReadHintSize: u32,
    pliFileSize: ?*LARGE_INTEGER,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupRead(
    hbc: ?*anyopaque,
    pvBuffer: ?*anyopaque,
    cbBuffer: u32,
    pcbRead: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupClose(
    hbc: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupGetBackupLogsW(
    hbc: ?*anyopaque,
    ppwszzBackupLogFiles: ?*?PWSTR,
    pcbSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupTruncateLogs(
    hbc: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupEnd(
    hbc: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvBackupFree(
    pv: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvRestoreGetDatabaseLocationsW(
    hbc: ?*anyopaque,
    ppwszzDatabaseLocationList: ?*?PWSTR,
    pcbSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvRestorePrepareW(
    pwszServerName: ?[*:0]const u16,
    dwRestoreFlags: u32,
    phbc: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvRestoreRegisterW(
    hbc: ?*anyopaque,
    pwszCheckPointFilePath: ?[*:0]const u16,
    pwszLogPath: ?[*:0]const u16,
    rgrstmap: ?*CSEDB_RSTMAPW,
    crstmap: i32,
    pwszBackupLogPath: ?[*:0]const u16,
    genLow: u32,
    genHigh: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvRestoreRegisterThroughFile(
    hbc: ?*anyopaque,
    pwszCheckPointFilePath: ?[*:0]const u16,
    pwszLogPath: ?[*:0]const u16,
    rgrstmap: ?*CSEDB_RSTMAPW,
    crstmap: i32,
    pwszBackupLogPath: ?[*:0]const u16,
    genLow: u32,
    genHigh: u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvRestoreRegisterComplete(
    hbc: ?*anyopaque,
    hrRestoreState: HRESULT,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvRestoreEnd(
    hbc: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "certadm" fn CertSrvServerControlW(
    pwszServerName: ?[*:0]const u16,
    dwControlFlags: u32,
    pcbOut: ?*u32,
    ppbOut: ?*?*u8,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.1'
pub extern "certpoleng" fn PstGetTrustAnchors(
    pTargetName: ?*UNICODE_STRING,
    cCriteria: u32,
    rgpCriteria: ?[*]CERT_SELECT_CRITERIA,
    ppTrustedIssuers: ?*?*SecPkgContext_IssuerListInfoEx,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

pub extern "certpoleng" fn PstGetTrustAnchorsEx(
    pTargetName: ?*UNICODE_STRING,
    cCriteria: u32,
    rgpCriteria: ?[*]CERT_SELECT_CRITERIA,
    pCertContext: ?*const CERT_CONTEXT,
    ppTrustedIssuers: ?*?*SecPkgContext_IssuerListInfoEx,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

pub extern "certpoleng" fn PstGetCertificateChain(
    pCert: ?*const CERT_CONTEXT,
    pTrustedIssuers: ?*SecPkgContext_IssuerListInfoEx,
    ppCertChainContext: ?*?*CERT_CHAIN_CONTEXT,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

// TODO: this type is limited to platform 'windows6.1'
pub extern "certpoleng" fn PstGetCertificates(
    pTargetName: ?*UNICODE_STRING,
    cCriteria: u32,
    rgpCriteria: ?[*]CERT_SELECT_CRITERIA,
    bIsClient: BOOL,
    pdwCertChainContextCount: ?*u32,
    ppCertChainContexts: ?*?*?*CERT_CHAIN_CONTEXT,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

// TODO: this type is limited to platform 'windows6.1'
pub extern "certpoleng" fn PstAcquirePrivateKey(
    pCert: ?*const CERT_CONTEXT,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

// TODO: this type is limited to platform 'windows6.1'
pub extern "certpoleng" fn PstValidate(
    pTargetName: ?*UNICODE_STRING,
    bIsClient: BOOL,
    pRequestedIssuancePolicy: ?*CERT_USAGE_MATCH,
    phAdditionalCertStore: ?*?*anyopaque,
    pCert: ?*const CERT_CONTEXT,
    pProvGUID: ?*Guid,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

// TODO: this type is limited to platform 'windows6.1'
pub extern "certpoleng" fn PstMapCertificate(
    pCert: ?*const CERT_CONTEXT,
    pTokenInformationType: ?*LSA_TOKEN_INFORMATION_TYPE,
    ppTokenInformation: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

// TODO: this type is limited to platform 'windows6.1'
pub extern "certpoleng" fn PstGetUserNameForCertificate(
    pCertContext: ?*const CERT_CONTEXT,
    UserName: ?*UNICODE_STRING,
) callconv(@import("std").os.windows.WINAPI) NTSTATUS;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (22)
//--------------------------------------------------------------------------------
const Guid = @import("../../zig.zig").Guid;
const BOOL = @import("../../foundation.zig").BOOL;
const BSTR = @import("../../foundation.zig").BSTR;
const CERT_CHAIN_CONTEXT = @import("../../security/cryptography.zig").CERT_CHAIN_CONTEXT;
const CERT_CONTEXT = @import("../../security/cryptography.zig").CERT_CONTEXT;
const CERT_EXTENSIONS = @import("../../security/cryptography.zig").CERT_EXTENSIONS;
const CERT_RDN_ATTR_VALUE_TYPE = @import("../../security/cryptography.zig").CERT_RDN_ATTR_VALUE_TYPE;
const CERT_SELECT_CRITERIA = @import("../../security/cryptography.zig").CERT_SELECT_CRITERIA;
const CERT_USAGE_MATCH = @import("../../security/cryptography.zig").CERT_USAGE_MATCH;
const CRYPT_ATTRIBUTES = @import("../../security/cryptography.zig").CRYPT_ATTRIBUTES;
const CRYPTOAPI_BLOB = @import("../../security/cryptography.zig").CRYPTOAPI_BLOB;
const HRESULT = @import("../../foundation.zig").HRESULT;
const HWND = @import("../../foundation.zig").HWND;
const IDispatch = @import("../../system/com.zig").IDispatch;
const IUnknown = @import("../../system/com.zig").IUnknown;
const LARGE_INTEGER = @import("../../foundation.zig").LARGE_INTEGER;
const LSA_TOKEN_INFORMATION_TYPE = @import("../../security/authentication/identity.zig").LSA_TOKEN_INFORMATION_TYPE;
const NTSTATUS = @import("../../foundation.zig").NTSTATUS;
const PWSTR = @import("../../foundation.zig").PWSTR;
const SecPkgContext_IssuerListInfoEx = @import("../../security/authentication/identity.zig").SecPkgContext_IssuerListInfoEx;
const UNICODE_STRING = @import("../../foundation.zig").UNICODE_STRING;
const VARIANT = @import("../../system/com.zig").VARIANT;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "FNCERTSRVISSERVERONLINEW")) {
        _ = FNCERTSRVISSERVERONLINEW;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPGETDYNAMICFILELISTW")) {
        _ = FNCERTSRVBACKUPGETDYNAMICFILELISTW;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPPREPAREW")) {
        _ = FNCERTSRVBACKUPPREPAREW;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPGETDATABASENAMESW")) {
        _ = FNCERTSRVBACKUPGETDATABASENAMESW;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPOPENFILEW")) {
        _ = FNCERTSRVBACKUPOPENFILEW;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPREAD")) {
        _ = FNCERTSRVBACKUPREAD;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPCLOSE")) {
        _ = FNCERTSRVBACKUPCLOSE;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPGETBACKUPLOGSW")) {
        _ = FNCERTSRVBACKUPGETBACKUPLOGSW;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPTRUNCATELOGS")) {
        _ = FNCERTSRVBACKUPTRUNCATELOGS;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPEND")) {
        _ = FNCERTSRVBACKUPEND;
    }
    if (@hasDecl(@This(), "FNCERTSRVBACKUPFREE")) {
        _ = FNCERTSRVBACKUPFREE;
    }
    if (@hasDecl(@This(), "FNCERTSRVRESTOREGETDATABASELOCATIONSW")) {
        _ = FNCERTSRVRESTOREGETDATABASELOCATIONSW;
    }
    if (@hasDecl(@This(), "FNCERTSRVRESTOREPREPAREW")) {
        _ = FNCERTSRVRESTOREPREPAREW;
    }
    if (@hasDecl(@This(), "FNCERTSRVRESTOREREGISTERW")) {
        _ = FNCERTSRVRESTOREREGISTERW;
    }
    if (@hasDecl(@This(), "FNCERTSRVRESTOREREGISTERCOMPLETE")) {
        _ = FNCERTSRVRESTOREREGISTERCOMPLETE;
    }
    if (@hasDecl(@This(), "FNCERTSRVRESTOREEND")) {
        _ = FNCERTSRVRESTOREEND;
    }
    if (@hasDecl(@This(), "FNCERTSRVSERVERCONTROLW")) {
        _ = FNCERTSRVSERVERCONTROLW;
    }
    if (@hasDecl(@This(), "FNIMPORTPFXTOPROVIDER")) {
        _ = FNIMPORTPFXTOPROVIDER;
    }
    if (@hasDecl(@This(), "FNIMPORTPFXTOPROVIDERFREEDATA")) {
        _ = FNIMPORTPFXTOPROVIDERFREEDATA;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
