mswmdm.h 346 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913
  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2. /* File created by MIDL compiler version 7.00.0498 */
  3. /* Compiler settings for mswmdm.idl:
  4. Oicf, W1, Zp8, env=Win32 (32b run)
  5. protocol : dce , ms_ext, c_ext, robust
  6. error checks: allocation ref bounds_check enum stub_data
  7. VC __declspec() decoration level:
  8. __declspec(uuid()), __declspec(selectany), __declspec(novtable)
  9. DECLSPEC_UUID(), MIDL_INTERFACE()
  10. */
  11. //@@MIDL_FILE_HEADING( )
  12. #pragma warning( disable: 4049 ) /* more than 64k source lines */
  13. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  14. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  15. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  16. #endif
  17. /* verify that the <rpcsal.h> version is high enough to compile this file*/
  18. #ifndef __REQUIRED_RPCSAL_H_VERSION__
  19. #define __REQUIRED_RPCSAL_H_VERSION__ 100
  20. #endif
  21. #include "rpc.h"
  22. #include "rpcndr.h"
  23. #ifndef __RPCNDR_H_VERSION__
  24. #error this stub requires an updated version of <rpcndr.h>
  25. #endif // __RPCNDR_H_VERSION__
  26. #ifndef COM_NO_WINDOWS_H
  27. #include "windows.h"
  28. #include "ole2.h"
  29. #endif /*COM_NO_WINDOWS_H*/
  30. #ifndef __mswmdm_h__
  31. #define __mswmdm_h__
  32. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  33. #pragma once
  34. #endif
  35. /* Forward Declarations */
  36. #ifndef __IWMDMMetaData_FWD_DEFINED__
  37. #define __IWMDMMetaData_FWD_DEFINED__
  38. typedef interface IWMDMMetaData IWMDMMetaData;
  39. #endif /* __IWMDMMetaData_FWD_DEFINED__ */
  40. #ifndef __IWMDeviceManager_FWD_DEFINED__
  41. #define __IWMDeviceManager_FWD_DEFINED__
  42. typedef interface IWMDeviceManager IWMDeviceManager;
  43. #endif /* __IWMDeviceManager_FWD_DEFINED__ */
  44. #ifndef __IWMDeviceManager2_FWD_DEFINED__
  45. #define __IWMDeviceManager2_FWD_DEFINED__
  46. typedef interface IWMDeviceManager2 IWMDeviceManager2;
  47. #endif /* __IWMDeviceManager2_FWD_DEFINED__ */
  48. #ifndef __IWMDeviceManager3_FWD_DEFINED__
  49. #define __IWMDeviceManager3_FWD_DEFINED__
  50. typedef interface IWMDeviceManager3 IWMDeviceManager3;
  51. #endif /* __IWMDeviceManager3_FWD_DEFINED__ */
  52. #ifndef __IWMDMStorageGlobals_FWD_DEFINED__
  53. #define __IWMDMStorageGlobals_FWD_DEFINED__
  54. typedef interface IWMDMStorageGlobals IWMDMStorageGlobals;
  55. #endif /* __IWMDMStorageGlobals_FWD_DEFINED__ */
  56. #ifndef __IWMDMStorage_FWD_DEFINED__
  57. #define __IWMDMStorage_FWD_DEFINED__
  58. typedef interface IWMDMStorage IWMDMStorage;
  59. #endif /* __IWMDMStorage_FWD_DEFINED__ */
  60. #ifndef __IWMDMStorage2_FWD_DEFINED__
  61. #define __IWMDMStorage2_FWD_DEFINED__
  62. typedef interface IWMDMStorage2 IWMDMStorage2;
  63. #endif /* __IWMDMStorage2_FWD_DEFINED__ */
  64. #ifndef __IWMDMStorage3_FWD_DEFINED__
  65. #define __IWMDMStorage3_FWD_DEFINED__
  66. typedef interface IWMDMStorage3 IWMDMStorage3;
  67. #endif /* __IWMDMStorage3_FWD_DEFINED__ */
  68. #ifndef __IWMDMStorage4_FWD_DEFINED__
  69. #define __IWMDMStorage4_FWD_DEFINED__
  70. typedef interface IWMDMStorage4 IWMDMStorage4;
  71. #endif /* __IWMDMStorage4_FWD_DEFINED__ */
  72. #ifndef __IWMDMOperation_FWD_DEFINED__
  73. #define __IWMDMOperation_FWD_DEFINED__
  74. typedef interface IWMDMOperation IWMDMOperation;
  75. #endif /* __IWMDMOperation_FWD_DEFINED__ */
  76. #ifndef __IWMDMOperation2_FWD_DEFINED__
  77. #define __IWMDMOperation2_FWD_DEFINED__
  78. typedef interface IWMDMOperation2 IWMDMOperation2;
  79. #endif /* __IWMDMOperation2_FWD_DEFINED__ */
  80. #ifndef __IWMDMOperation3_FWD_DEFINED__
  81. #define __IWMDMOperation3_FWD_DEFINED__
  82. typedef interface IWMDMOperation3 IWMDMOperation3;
  83. #endif /* __IWMDMOperation3_FWD_DEFINED__ */
  84. #ifndef __IWMDMProgress_FWD_DEFINED__
  85. #define __IWMDMProgress_FWD_DEFINED__
  86. typedef interface IWMDMProgress IWMDMProgress;
  87. #endif /* __IWMDMProgress_FWD_DEFINED__ */
  88. #ifndef __IWMDMProgress2_FWD_DEFINED__
  89. #define __IWMDMProgress2_FWD_DEFINED__
  90. typedef interface IWMDMProgress2 IWMDMProgress2;
  91. #endif /* __IWMDMProgress2_FWD_DEFINED__ */
  92. #ifndef __IWMDMProgress3_FWD_DEFINED__
  93. #define __IWMDMProgress3_FWD_DEFINED__
  94. typedef interface IWMDMProgress3 IWMDMProgress3;
  95. #endif /* __IWMDMProgress3_FWD_DEFINED__ */
  96. #ifndef __IWMDMDevice_FWD_DEFINED__
  97. #define __IWMDMDevice_FWD_DEFINED__
  98. typedef interface IWMDMDevice IWMDMDevice;
  99. #endif /* __IWMDMDevice_FWD_DEFINED__ */
  100. #ifndef __IWMDMDevice2_FWD_DEFINED__
  101. #define __IWMDMDevice2_FWD_DEFINED__
  102. typedef interface IWMDMDevice2 IWMDMDevice2;
  103. #endif /* __IWMDMDevice2_FWD_DEFINED__ */
  104. #ifndef __IWMDMDevice3_FWD_DEFINED__
  105. #define __IWMDMDevice3_FWD_DEFINED__
  106. typedef interface IWMDMDevice3 IWMDMDevice3;
  107. #endif /* __IWMDMDevice3_FWD_DEFINED__ */
  108. #ifndef __IWMDMDeviceSession_FWD_DEFINED__
  109. #define __IWMDMDeviceSession_FWD_DEFINED__
  110. typedef interface IWMDMDeviceSession IWMDMDeviceSession;
  111. #endif /* __IWMDMDeviceSession_FWD_DEFINED__ */
  112. #ifndef __IWMDMEnumDevice_FWD_DEFINED__
  113. #define __IWMDMEnumDevice_FWD_DEFINED__
  114. typedef interface IWMDMEnumDevice IWMDMEnumDevice;
  115. #endif /* __IWMDMEnumDevice_FWD_DEFINED__ */
  116. #ifndef __IWMDMDeviceControl_FWD_DEFINED__
  117. #define __IWMDMDeviceControl_FWD_DEFINED__
  118. typedef interface IWMDMDeviceControl IWMDMDeviceControl;
  119. #endif /* __IWMDMDeviceControl_FWD_DEFINED__ */
  120. #ifndef __IWMDMEnumStorage_FWD_DEFINED__
  121. #define __IWMDMEnumStorage_FWD_DEFINED__
  122. typedef interface IWMDMEnumStorage IWMDMEnumStorage;
  123. #endif /* __IWMDMEnumStorage_FWD_DEFINED__ */
  124. #ifndef __IWMDMStorageControl_FWD_DEFINED__
  125. #define __IWMDMStorageControl_FWD_DEFINED__
  126. typedef interface IWMDMStorageControl IWMDMStorageControl;
  127. #endif /* __IWMDMStorageControl_FWD_DEFINED__ */
  128. #ifndef __IWMDMStorageControl2_FWD_DEFINED__
  129. #define __IWMDMStorageControl2_FWD_DEFINED__
  130. typedef interface IWMDMStorageControl2 IWMDMStorageControl2;
  131. #endif /* __IWMDMStorageControl2_FWD_DEFINED__ */
  132. #ifndef __IWMDMStorageControl3_FWD_DEFINED__
  133. #define __IWMDMStorageControl3_FWD_DEFINED__
  134. typedef interface IWMDMStorageControl3 IWMDMStorageControl3;
  135. #endif /* __IWMDMStorageControl3_FWD_DEFINED__ */
  136. #ifndef __IWMDMObjectInfo_FWD_DEFINED__
  137. #define __IWMDMObjectInfo_FWD_DEFINED__
  138. typedef interface IWMDMObjectInfo IWMDMObjectInfo;
  139. #endif /* __IWMDMObjectInfo_FWD_DEFINED__ */
  140. #ifndef __IWMDMRevoked_FWD_DEFINED__
  141. #define __IWMDMRevoked_FWD_DEFINED__
  142. typedef interface IWMDMRevoked IWMDMRevoked;
  143. #endif /* __IWMDMRevoked_FWD_DEFINED__ */
  144. #ifndef __IWMDMNotification_FWD_DEFINED__
  145. #define __IWMDMNotification_FWD_DEFINED__
  146. typedef interface IWMDMNotification IWMDMNotification;
  147. #endif /* __IWMDMNotification_FWD_DEFINED__ */
  148. #ifndef __IMDServiceProvider_FWD_DEFINED__
  149. #define __IMDServiceProvider_FWD_DEFINED__
  150. typedef interface IMDServiceProvider IMDServiceProvider;
  151. #endif /* __IMDServiceProvider_FWD_DEFINED__ */
  152. #ifndef __IMDServiceProvider2_FWD_DEFINED__
  153. #define __IMDServiceProvider2_FWD_DEFINED__
  154. typedef interface IMDServiceProvider2 IMDServiceProvider2;
  155. #endif /* __IMDServiceProvider2_FWD_DEFINED__ */
  156. #ifndef __IMDServiceProvider3_FWD_DEFINED__
  157. #define __IMDServiceProvider3_FWD_DEFINED__
  158. typedef interface IMDServiceProvider3 IMDServiceProvider3;
  159. #endif /* __IMDServiceProvider3_FWD_DEFINED__ */
  160. #ifndef __IMDSPEnumDevice_FWD_DEFINED__
  161. #define __IMDSPEnumDevice_FWD_DEFINED__
  162. typedef interface IMDSPEnumDevice IMDSPEnumDevice;
  163. #endif /* __IMDSPEnumDevice_FWD_DEFINED__ */
  164. #ifndef __IMDSPDevice_FWD_DEFINED__
  165. #define __IMDSPDevice_FWD_DEFINED__
  166. typedef interface IMDSPDevice IMDSPDevice;
  167. #endif /* __IMDSPDevice_FWD_DEFINED__ */
  168. #ifndef __IMDSPDevice2_FWD_DEFINED__
  169. #define __IMDSPDevice2_FWD_DEFINED__
  170. typedef interface IMDSPDevice2 IMDSPDevice2;
  171. #endif /* __IMDSPDevice2_FWD_DEFINED__ */
  172. #ifndef __IMDSPDevice3_FWD_DEFINED__
  173. #define __IMDSPDevice3_FWD_DEFINED__
  174. typedef interface IMDSPDevice3 IMDSPDevice3;
  175. #endif /* __IMDSPDevice3_FWD_DEFINED__ */
  176. #ifndef __IMDSPDeviceControl_FWD_DEFINED__
  177. #define __IMDSPDeviceControl_FWD_DEFINED__
  178. typedef interface IMDSPDeviceControl IMDSPDeviceControl;
  179. #endif /* __IMDSPDeviceControl_FWD_DEFINED__ */
  180. #ifndef __IMDSPEnumStorage_FWD_DEFINED__
  181. #define __IMDSPEnumStorage_FWD_DEFINED__
  182. typedef interface IMDSPEnumStorage IMDSPEnumStorage;
  183. #endif /* __IMDSPEnumStorage_FWD_DEFINED__ */
  184. #ifndef __IMDSPStorage_FWD_DEFINED__
  185. #define __IMDSPStorage_FWD_DEFINED__
  186. typedef interface IMDSPStorage IMDSPStorage;
  187. #endif /* __IMDSPStorage_FWD_DEFINED__ */
  188. #ifndef __IMDSPStorage2_FWD_DEFINED__
  189. #define __IMDSPStorage2_FWD_DEFINED__
  190. typedef interface IMDSPStorage2 IMDSPStorage2;
  191. #endif /* __IMDSPStorage2_FWD_DEFINED__ */
  192. #ifndef __IMDSPStorage3_FWD_DEFINED__
  193. #define __IMDSPStorage3_FWD_DEFINED__
  194. typedef interface IMDSPStorage3 IMDSPStorage3;
  195. #endif /* __IMDSPStorage3_FWD_DEFINED__ */
  196. #ifndef __IMDSPStorage4_FWD_DEFINED__
  197. #define __IMDSPStorage4_FWD_DEFINED__
  198. typedef interface IMDSPStorage4 IMDSPStorage4;
  199. #endif /* __IMDSPStorage4_FWD_DEFINED__ */
  200. #ifndef __IMDSPStorageGlobals_FWD_DEFINED__
  201. #define __IMDSPStorageGlobals_FWD_DEFINED__
  202. typedef interface IMDSPStorageGlobals IMDSPStorageGlobals;
  203. #endif /* __IMDSPStorageGlobals_FWD_DEFINED__ */
  204. #ifndef __IMDSPObjectInfo_FWD_DEFINED__
  205. #define __IMDSPObjectInfo_FWD_DEFINED__
  206. typedef interface IMDSPObjectInfo IMDSPObjectInfo;
  207. #endif /* __IMDSPObjectInfo_FWD_DEFINED__ */
  208. #ifndef __IMDSPObject_FWD_DEFINED__
  209. #define __IMDSPObject_FWD_DEFINED__
  210. typedef interface IMDSPObject IMDSPObject;
  211. #endif /* __IMDSPObject_FWD_DEFINED__ */
  212. #ifndef __IMDSPObject2_FWD_DEFINED__
  213. #define __IMDSPObject2_FWD_DEFINED__
  214. typedef interface IMDSPObject2 IMDSPObject2;
  215. #endif /* __IMDSPObject2_FWD_DEFINED__ */
  216. #ifndef __IMDSPDirectTransfer_FWD_DEFINED__
  217. #define __IMDSPDirectTransfer_FWD_DEFINED__
  218. typedef interface IMDSPDirectTransfer IMDSPDirectTransfer;
  219. #endif /* __IMDSPDirectTransfer_FWD_DEFINED__ */
  220. #ifndef __IMDSPRevoked_FWD_DEFINED__
  221. #define __IMDSPRevoked_FWD_DEFINED__
  222. typedef interface IMDSPRevoked IMDSPRevoked;
  223. #endif /* __IMDSPRevoked_FWD_DEFINED__ */
  224. #ifndef __ISCPSecureAuthenticate_FWD_DEFINED__
  225. #define __ISCPSecureAuthenticate_FWD_DEFINED__
  226. typedef interface ISCPSecureAuthenticate ISCPSecureAuthenticate;
  227. #endif /* __ISCPSecureAuthenticate_FWD_DEFINED__ */
  228. #ifndef __ISCPSecureAuthenticate2_FWD_DEFINED__
  229. #define __ISCPSecureAuthenticate2_FWD_DEFINED__
  230. typedef interface ISCPSecureAuthenticate2 ISCPSecureAuthenticate2;
  231. #endif /* __ISCPSecureAuthenticate2_FWD_DEFINED__ */
  232. #ifndef __ISCPSecureQuery_FWD_DEFINED__
  233. #define __ISCPSecureQuery_FWD_DEFINED__
  234. typedef interface ISCPSecureQuery ISCPSecureQuery;
  235. #endif /* __ISCPSecureQuery_FWD_DEFINED__ */
  236. #ifndef __ISCPSecureQuery2_FWD_DEFINED__
  237. #define __ISCPSecureQuery2_FWD_DEFINED__
  238. typedef interface ISCPSecureQuery2 ISCPSecureQuery2;
  239. #endif /* __ISCPSecureQuery2_FWD_DEFINED__ */
  240. #ifndef __ISCPSecureExchange_FWD_DEFINED__
  241. #define __ISCPSecureExchange_FWD_DEFINED__
  242. typedef interface ISCPSecureExchange ISCPSecureExchange;
  243. #endif /* __ISCPSecureExchange_FWD_DEFINED__ */
  244. #ifndef __ISCPSecureExchange2_FWD_DEFINED__
  245. #define __ISCPSecureExchange2_FWD_DEFINED__
  246. typedef interface ISCPSecureExchange2 ISCPSecureExchange2;
  247. #endif /* __ISCPSecureExchange2_FWD_DEFINED__ */
  248. #ifndef __ISCPSecureExchange3_FWD_DEFINED__
  249. #define __ISCPSecureExchange3_FWD_DEFINED__
  250. typedef interface ISCPSecureExchange3 ISCPSecureExchange3;
  251. #endif /* __ISCPSecureExchange3_FWD_DEFINED__ */
  252. #ifndef __ISCPSession_FWD_DEFINED__
  253. #define __ISCPSession_FWD_DEFINED__
  254. typedef interface ISCPSession ISCPSession;
  255. #endif /* __ISCPSession_FWD_DEFINED__ */
  256. #ifndef __ISCPSecureQuery3_FWD_DEFINED__
  257. #define __ISCPSecureQuery3_FWD_DEFINED__
  258. typedef interface ISCPSecureQuery3 ISCPSecureQuery3;
  259. #endif /* __ISCPSecureQuery3_FWD_DEFINED__ */
  260. #ifndef __IComponentAuthenticate_FWD_DEFINED__
  261. #define __IComponentAuthenticate_FWD_DEFINED__
  262. typedef interface IComponentAuthenticate IComponentAuthenticate;
  263. #endif /* __IComponentAuthenticate_FWD_DEFINED__ */
  264. #ifndef __MediaDevMgrClassFactory_FWD_DEFINED__
  265. #define __MediaDevMgrClassFactory_FWD_DEFINED__
  266. #ifdef __cplusplus
  267. typedef class MediaDevMgrClassFactory MediaDevMgrClassFactory;
  268. #else
  269. typedef struct MediaDevMgrClassFactory MediaDevMgrClassFactory;
  270. #endif /* __cplusplus */
  271. #endif /* __MediaDevMgrClassFactory_FWD_DEFINED__ */
  272. #ifndef __MediaDevMgr_FWD_DEFINED__
  273. #define __MediaDevMgr_FWD_DEFINED__
  274. #ifdef __cplusplus
  275. typedef class MediaDevMgr MediaDevMgr;
  276. #else
  277. typedef struct MediaDevMgr MediaDevMgr;
  278. #endif /* __cplusplus */
  279. #endif /* __MediaDevMgr_FWD_DEFINED__ */
  280. #ifndef __WMDMDevice_FWD_DEFINED__
  281. #define __WMDMDevice_FWD_DEFINED__
  282. #ifdef __cplusplus
  283. typedef class WMDMDevice WMDMDevice;
  284. #else
  285. typedef struct WMDMDevice WMDMDevice;
  286. #endif /* __cplusplus */
  287. #endif /* __WMDMDevice_FWD_DEFINED__ */
  288. #ifndef __WMDMStorage_FWD_DEFINED__
  289. #define __WMDMStorage_FWD_DEFINED__
  290. #ifdef __cplusplus
  291. typedef class WMDMStorage WMDMStorage;
  292. #else
  293. typedef struct WMDMStorage WMDMStorage;
  294. #endif /* __cplusplus */
  295. #endif /* __WMDMStorage_FWD_DEFINED__ */
  296. #ifndef __WMDMStorageGlobal_FWD_DEFINED__
  297. #define __WMDMStorageGlobal_FWD_DEFINED__
  298. #ifdef __cplusplus
  299. typedef class WMDMStorageGlobal WMDMStorageGlobal;
  300. #else
  301. typedef struct WMDMStorageGlobal WMDMStorageGlobal;
  302. #endif /* __cplusplus */
  303. #endif /* __WMDMStorageGlobal_FWD_DEFINED__ */
  304. #ifndef __WMDMDeviceEnum_FWD_DEFINED__
  305. #define __WMDMDeviceEnum_FWD_DEFINED__
  306. #ifdef __cplusplus
  307. typedef class WMDMDeviceEnum WMDMDeviceEnum;
  308. #else
  309. typedef struct WMDMDeviceEnum WMDMDeviceEnum;
  310. #endif /* __cplusplus */
  311. #endif /* __WMDMDeviceEnum_FWD_DEFINED__ */
  312. #ifndef __WMDMStorageEnum_FWD_DEFINED__
  313. #define __WMDMStorageEnum_FWD_DEFINED__
  314. #ifdef __cplusplus
  315. typedef class WMDMStorageEnum WMDMStorageEnum;
  316. #else
  317. typedef struct WMDMStorageEnum WMDMStorageEnum;
  318. #endif /* __cplusplus */
  319. #endif /* __WMDMStorageEnum_FWD_DEFINED__ */
  320. /* header files for imported files */
  321. #include "oaidl.h"
  322. #include "ocidl.h"
  323. #include "propidl.h"
  324. #ifdef __cplusplus
  325. extern "C"{
  326. #endif
  327. /* interface __MIDL_itf_mswmdm_0000_0000 */
  328. /* [local] */
  329. #ifndef _DEFINE_WMDM_DEVICE_PROTOCOL_MTP
  330. #define _DEFINE_WMDM_DEVICE_PROTOCOL_MTP
  331. // {979E54E5-0AFC-4604-8D93-DC798A4BCF45}
  332. DEFINE_GUID(WMDM_DEVICE_PROTOCOL_MTP,
  333. 0x979e54e5, 0xafc, 0x4604, 0x8d, 0x93, 0xdc, 0x79, 0x8a, 0x4b, 0xcf, 0x45);
  334. #endif
  335. #ifndef _DEFINE_WMDM_DEVICE_PROTOCOL_RAPI
  336. #define _DEFINE_WMDM_DEVICE_PROTOCOL_RAPI
  337. // {2A11ED91-8C8F-41e4-82D1-8386E003561C}
  338. DEFINE_GUID(WMDM_DEVICE_PROTOCOL_RAPI,
  339. 0x2a11ed91, 0x8c8f, 0x41e4, 0x82, 0xd1, 0x83, 0x86, 0xe0, 0x3, 0x56, 0x1c);
  340. #endif
  341. #ifndef _DEFINE_WMDM_DEVICE_PROTOCOL_MSC
  342. #define _DEFINE_WMDM_DEVICE_PROTOCOL_MSC
  343. // {A4D2C26C-A881-44bb-BD5D-1F703C71F7A9}
  344. DEFINE_GUID(WMDM_DEVICE_PROTOCOL_MSC,
  345. 0xa4d2c26c, 0xa881, 0x44bb, 0xbd, 0x5d, 0x1f, 0x70, 0x3c, 0x71, 0xf7, 0xa9);
  346. #endif
  347. #ifndef _DEFINE_WMDM_SERVICE_PROVIDER_VENDOR_MICROSOFT
  348. #define _DEFINE_WMDM_SERVICE_PROVIDER_VENDOR_MICROSOFT
  349. // {7DE8686D-78EE-43ea-A496-C625AC91CC5D}
  350. DEFINE_GUID(WMDM_SERVICE_PROVIDER_VENDOR_MICROSOFT,
  351. 0x7de8686d, 0x78ee, 0x43ea, 0xa4, 0x96, 0xc6, 0x25, 0xac, 0x91, 0xcc, 0x5d);
  352. #endif
  353. typedef
  354. enum tagWMDM_TAG_DATATYPE
  355. { WMDM_TYPE_DWORD = 0,
  356. WMDM_TYPE_STRING = 1,
  357. WMDM_TYPE_BINARY = 2,
  358. WMDM_TYPE_BOOL = 3,
  359. WMDM_TYPE_QWORD = 4,
  360. WMDM_TYPE_WORD = 5,
  361. WMDM_TYPE_GUID = 6,
  362. WMDM_TYPE_DATE = 7
  363. } WMDM_TAG_DATATYPE;
  364. typedef
  365. enum tagWMDM_SESSION_TYPE
  366. { WMDM_SESSION_NONE = 0,
  367. WMDM_SESSION_TRANSFER_TO_DEVICE = 0x1,
  368. WMDM_SESSION_TRANSFER_FROM_DEVICE = 0x10,
  369. WMDM_SESSION_DELETE = 0x100,
  370. WMDM_SESSION_CUSTOM = 0x1000
  371. } WMDM_SESSION_TYPE;
  372. typedef struct _tWAVEFORMATEX
  373. {
  374. WORD wFormatTag;
  375. WORD nChannels;
  376. DWORD nSamplesPerSec;
  377. DWORD nAvgBytesPerSec;
  378. WORD nBlockAlign;
  379. WORD wBitsPerSample;
  380. WORD cbSize;
  381. } _WAVEFORMATEX;
  382. typedef struct _tagBITMAPINFOHEADER
  383. {
  384. DWORD biSize;
  385. LONG biWidth;
  386. LONG biHeight;
  387. WORD biPlanes;
  388. WORD biBitCount;
  389. DWORD biCompression;
  390. DWORD biSizeImage;
  391. LONG biXPelsPerMeter;
  392. LONG biYPelsPerMeter;
  393. DWORD biClrUsed;
  394. DWORD biClrImportant;
  395. } _BITMAPINFOHEADER;
  396. typedef struct _tagVIDEOINFOHEADER
  397. {
  398. RECT rcSource;
  399. RECT rcTarget;
  400. DWORD dwBitRate;
  401. DWORD dwBitErrorRate;
  402. LONGLONG AvgTimePerFrame;
  403. _BITMAPINFOHEADER bmiHeader;
  404. } _VIDEOINFOHEADER;
  405. typedef struct _tagWMFILECAPABILITIES
  406. {
  407. LPWSTR pwszMimeType;
  408. DWORD dwReserved;
  409. } WMFILECAPABILITIES;
  410. typedef struct __OPAQUECOMMAND
  411. {
  412. GUID guidCommand;
  413. DWORD dwDataLen;
  414. BYTE *pData;
  415. BYTE abMAC[ 20 ];
  416. } OPAQUECOMMAND;
  417. #define WMDMID_LENGTH ( 128 )
  418. typedef struct __WMDMID
  419. {
  420. UINT cbSize;
  421. DWORD dwVendorID;
  422. BYTE pID[ 128 ];
  423. UINT SerialNumberLength;
  424. } WMDMID;
  425. typedef struct __WMDMID *PWMDMID;
  426. typedef struct _WMDMDATETIME
  427. {
  428. WORD wYear;
  429. WORD wMonth;
  430. WORD wDay;
  431. WORD wHour;
  432. WORD wMinute;
  433. WORD wSecond;
  434. } WMDMDATETIME;
  435. typedef struct _WMDMDATETIME *PWMDMDATETIME;
  436. typedef struct __WMDMRIGHTS
  437. {
  438. UINT cbSize;
  439. DWORD dwContentType;
  440. DWORD fuFlags;
  441. DWORD fuRights;
  442. DWORD dwAppSec;
  443. DWORD dwPlaybackCount;
  444. WMDMDATETIME ExpirationDate;
  445. } WMDMRIGHTS;
  446. typedef struct __WMDMRIGHTS *PWMDMRIGHTS;
  447. typedef struct __WMDMMetadataView
  448. {
  449. WCHAR *pwszViewName;
  450. UINT nDepth;
  451. WCHAR **ppwszTags;
  452. } WMDMMetadataView;
  453. typedef
  454. enum tagWMDM_STORAGE_ENUM_MODE
  455. { ENUM_MODE_RAW = 0,
  456. ENUM_MODE_USE_DEVICE_PREF = ( ENUM_MODE_RAW + 1 ) ,
  457. ENUM_MODE_METADATA_VIEWS = ( ENUM_MODE_USE_DEVICE_PREF + 1 )
  458. } WMDM_STORAGE_ENUM_MODE;
  459. typedef /* [v1_enum] */
  460. enum tagWMDM_FORMATCODE
  461. { WMDM_FORMATCODE_NOTUSED = 0,
  462. WMDM_FORMATCODE_ALLIMAGES = 0xffffffff,
  463. WMDM_FORMATCODE_UNDEFINED = 0x3000,
  464. WMDM_FORMATCODE_ASSOCIATION = 0x3001,
  465. WMDM_FORMATCODE_SCRIPT = 0x3002,
  466. WMDM_FORMATCODE_EXECUTABLE = 0x3003,
  467. WMDM_FORMATCODE_TEXT = 0x3004,
  468. WMDM_FORMATCODE_HTML = 0x3005,
  469. WMDM_FORMATCODE_DPOF = 0x3006,
  470. WMDM_FORMATCODE_AIFF = 0x3007,
  471. WMDM_FORMATCODE_WAVE = 0x3008,
  472. WMDM_FORMATCODE_MP3 = 0x3009,
  473. WMDM_FORMATCODE_AVI = 0x300a,
  474. WMDM_FORMATCODE_MPEG = 0x300b,
  475. WMDM_FORMATCODE_ASF = 0x300c,
  476. WMDM_FORMATCODE_RESERVED_FIRST = 0x300d,
  477. WMDM_FORMATCODE_RESERVED_LAST = 0x37ff,
  478. WMDM_FORMATCODE_IMAGE_UNDEFINED = 0x3800,
  479. WMDM_FORMATCODE_IMAGE_EXIF = 0x3801,
  480. WMDM_FORMATCODE_IMAGE_TIFFEP = 0x3802,
  481. WMDM_FORMATCODE_IMAGE_FLASHPIX = 0x3803,
  482. WMDM_FORMATCODE_IMAGE_BMP = 0x3804,
  483. WMDM_FORMATCODE_IMAGE_CIFF = 0x3805,
  484. WMDM_FORMATCODE_IMAGE_GIF = 0x3807,
  485. WMDM_FORMATCODE_IMAGE_JFIF = 0x3808,
  486. WMDM_FORMATCODE_IMAGE_PCD = 0x3809,
  487. WMDM_FORMATCODE_IMAGE_PICT = 0x380a,
  488. WMDM_FORMATCODE_IMAGE_PNG = 0x380b,
  489. WMDM_FORMATCODE_IMAGE_TIFF = 0x380d,
  490. WMDM_FORMATCODE_IMAGE_TIFFIT = 0x380e,
  491. WMDM_FORMATCODE_IMAGE_JP2 = 0x380f,
  492. WMDM_FORMATCODE_IMAGE_JPX = 0x3810,
  493. WMDM_FORMATCODE_IMAGE_RESERVED_FIRST = 0x3811,
  494. WMDM_FORMATCODE_IMAGE_RESERVED_LAST = 0x3fff,
  495. WMDM_FORMATCODE_UNDEFINEDFIRMWARE = 0xb802,
  496. WMDM_FORMATCODE_WINDOWSIMAGEFORMAT = 0xb881,
  497. WMDM_FORMATCODE_UNDEFINEDAUDIO = 0xb900,
  498. WMDM_FORMATCODE_WMA = 0xb901,
  499. WMDM_FORMATCODE_OGG = 0xb902,
  500. WMDM_FORMATCODE_AAC = 0xb903,
  501. WMDM_FORMATCODE_AUDIBLE = 0xb904,
  502. WMDM_FORMATCODE_FLAC = 0xb906,
  503. WMDM_FORMATCODE_UNDEFINEDVIDEO = 0xb980,
  504. WMDM_FORMATCODE_WMV = 0xb981,
  505. WMDM_FORMATCODE_MP4 = 0xb982,
  506. WMDM_FORMATCODE_MP2 = 0xb983,
  507. WMDM_FORMATCODE_3GP = 0xb984,
  508. WMDM_FORMATCODE_UNDEFINEDCOLLECTION = 0xba00,
  509. WMDM_FORMATCODE_ABSTRACTMULTIMEDIAALBUM = 0xba01,
  510. WMDM_FORMATCODE_ABSTRACTIMAGEALBUM = 0xba02,
  511. WMDM_FORMATCODE_ABSTRACTAUDIOALBUM = 0xba03,
  512. WMDM_FORMATCODE_ABSTRACTVIDEOALBUM = 0xba04,
  513. WMDM_FORMATCODE_ABSTRACTAUDIOVIDEOPLAYLIST = 0xba05,
  514. WMDM_FORMATCODE_ABSTRACTCONTACTGROUP = 0xba06,
  515. WMDM_FORMATCODE_ABSTRACTMESSAGEFOLDER = 0xba07,
  516. WMDM_FORMATCODE_ABSTRACTCHAPTEREDPRODUCTION = 0xba08,
  517. WMDM_FORMATCODE_MEDIA_CAST = 0xba0b,
  518. WMDM_FORMATCODE_WPLPLAYLIST = 0xba10,
  519. WMDM_FORMATCODE_M3UPLAYLIST = 0xba11,
  520. WMDM_FORMATCODE_MPLPLAYLIST = 0xba12,
  521. WMDM_FORMATCODE_ASXPLAYLIST = 0xba13,
  522. WMDM_FORMATCODE_PLSPLAYLIST = 0xba14,
  523. WMDM_FORMATCODE_UNDEFINEDDOCUMENT = 0xba80,
  524. WMDM_FORMATCODE_ABSTRACTDOCUMENT = 0xba81,
  525. WMDM_FORMATCODE_XMLDOCUMENT = 0xba82,
  526. WMDM_FORMATCODE_MICROSOFTWORDDOCUMENT = 0xba83,
  527. WMDM_FORMATCODE_MHTCOMPILEDHTMLDOCUMENT = 0xba84,
  528. WMDM_FORMATCODE_MICROSOFTEXCELSPREADSHEET = 0xba85,
  529. WMDM_FORMATCODE_MICROSOFTPOWERPOINTDOCUMENT = 0xba86,
  530. WMDM_FORMATCODE_UNDEFINEDMESSAGE = 0xbb00,
  531. WMDM_FORMATCODE_ABSTRACTMESSAGE = 0xbb01,
  532. WMDM_FORMATCODE_UNDEFINEDCONTACT = 0xbb80,
  533. WMDM_FORMATCODE_ABSTRACTCONTACT = 0xbb81,
  534. WMDM_FORMATCODE_VCARD2 = 0xbb82,
  535. WMDM_FORMATCODE_VCARD3 = 0xbb83,
  536. WMDM_FORMATCODE_UNDEFINEDCALENDARITEM = 0xbe00,
  537. WMDM_FORMATCODE_ABSTRACTCALENDARITEM = 0xbe01,
  538. WMDM_FORMATCODE_VCALENDAR1 = 0xbe02,
  539. WMDM_FORMATCODE_VCALENDAR2 = 0xbe03,
  540. WMDM_FORMATCODE_UNDEFINEDWINDOWSEXECUTABLE = 0xbe80,
  541. WMDM_FORMATCODE_SECTION = 0xbe82
  542. } WMDM_FORMATCODE;
  543. typedef /* [v1_enum] */
  544. enum _WMDM_ENUM_PROP_VALID_VALUES_FORM
  545. { WMDM_ENUM_PROP_VALID_VALUES_ANY = 0,
  546. WMDM_ENUM_PROP_VALID_VALUES_RANGE = ( WMDM_ENUM_PROP_VALID_VALUES_ANY + 1 ) ,
  547. WMDM_ENUM_PROP_VALID_VALUES_ENUM = ( WMDM_ENUM_PROP_VALID_VALUES_RANGE + 1 )
  548. } WMDM_ENUM_PROP_VALID_VALUES_FORM;
  549. typedef struct _WMDM_PROP_VALUES_RANGE
  550. {
  551. PROPVARIANT rangeMin;
  552. PROPVARIANT rangeMax;
  553. PROPVARIANT rangeStep;
  554. } WMDM_PROP_VALUES_RANGE;
  555. typedef struct _WMDM_PROP_VALUES_ENUM
  556. {
  557. UINT cEnumValues;
  558. PROPVARIANT *pValues;
  559. } WMDM_PROP_VALUES_ENUM;
  560. typedef struct _WMDM_PROP_DESC
  561. {
  562. LPWSTR pwszPropName;
  563. WMDM_ENUM_PROP_VALID_VALUES_FORM ValidValuesForm;
  564. union
  565. {
  566. /* Empty union arm */
  567. WMDM_PROP_VALUES_RANGE ValidValuesRange;
  568. WMDM_PROP_VALUES_ENUM EnumeratedValidValues;
  569. } ValidValues;
  570. } WMDM_PROP_DESC;
  571. typedef struct _WMDM_PROP_CONFIG
  572. {
  573. UINT nPreference;
  574. UINT nPropDesc;
  575. WMDM_PROP_DESC *pPropDesc;
  576. } WMDM_PROP_CONFIG;
  577. typedef struct _WMDM_FORMAT_CAPABILITY
  578. {
  579. UINT nPropConfig;
  580. WMDM_PROP_CONFIG *pConfigs;
  581. } WMDM_FORMAT_CAPABILITY;
  582. #define WMDM_MAC_LENGTH ( 8 )
  583. typedef
  584. enum tagWMDM_FIND_SCOPE
  585. { WMDM_FIND_SCOPE_GLOBAL = 0,
  586. WMDM_FIND_SCOPE_IMMEDIATE_CHILDREN = ( WMDM_FIND_SCOPE_GLOBAL + 1 )
  587. } WMDM_FIND_SCOPE;
  588. // WMDM HRESULTS
  589. //
  590. //Success codes
  591. //
  592. #define WMDM_S_NOT_ALL_PROPERTIES_APPLIED 0x00045001L
  593. #define WMDM_S_NOT_ALL_PROPERTIES_RETRIEVED 0x00045002L
  594. //
  595. //Error codes
  596. //
  597. #define WMDM_E_BUSY 0x80045000L
  598. #define WMDM_E_INTERFACEDEAD 0x80045001L
  599. #define WMDM_E_INVALIDTYPE 0x80045002L
  600. #define WMDM_E_PROCESSFAILED 0x80045003L
  601. #define WMDM_E_NOTSUPPORTED 0x80045004L
  602. #define WMDM_E_NOTCERTIFIED 0x80045005L
  603. #define WMDM_E_NORIGHTS 0x80045006L
  604. #define WMDM_E_CALL_OUT_OF_SEQUENCE 0x80045007L
  605. #define WMDM_E_BUFFERTOOSMALL 0x80045008L
  606. #define WMDM_E_MOREDATA 0x80045009L
  607. #define WMDM_E_MAC_CHECK_FAILED 0x8004500AL
  608. #define WMDM_E_USER_CANCELLED 0x8004500BL
  609. #define WMDM_E_SDMI_TRIGGER 0x8004500CL
  610. #define WMDM_E_SDMI_NOMORECOPIES 0x8004500DL
  611. #define WMDM_E_REVOKED 0x8004500EL
  612. #define WMDM_E_LICENSE_NOTEXIST 0x8004500FL
  613. #define WMDM_E_INCORRECT_APPSEC 0x80045010L
  614. #define WMDM_E_INCORRECT_RIGHTS 0x80045011L
  615. #define WMDM_E_LICENSE_EXPIRED 0x80045012L
  616. #define WMDM_E_CANTOPEN_PMSN_SERVICE_PIPE 0x80045013L
  617. #define WMDM_E_TOO_MANY_SESSIONS 0x80045013L
  618. // Revocation Flags
  619. #define WMDM_WMDM_REVOKED 0x00000001
  620. #define WMDM_APP_REVOKED 0x00000002
  621. #define WMDM_SP_REVOKED 0x00000004
  622. #define WMDM_SCP_REVOKED 0x00000008
  623. // GetFormatSupport2 Flags
  624. #define WMDM_GET_FORMAT_SUPPORT_AUDIO 0x00000001
  625. #define WMDM_GET_FORMAT_SUPPORT_VIDEO 0x00000002
  626. #define WMDM_GET_FORMAT_SUPPORT_FILE 0x00000004
  627. // MDMRIGHTS Flags
  628. #define WMDM_RIGHTS_PLAYBACKCOUNT 0x00000001
  629. #define WMDM_RIGHTS_EXPIRATIONDATE 0x00000002
  630. #define WMDM_RIGHTS_GROUPID 0x00000004
  631. #define WMDM_RIGHTS_FREESERIALIDS 0x00000008
  632. #define WMDM_RIGHTS_NAMEDSERIALIDS 0x00000010
  633. // Device Type Flags
  634. #define WMDM_DEVICE_TYPE_PLAYBACK 0x00000001
  635. #define WMDM_DEVICE_TYPE_RECORD 0x00000002
  636. #define WMDM_DEVICE_TYPE_DECODE 0x00000004
  637. #define WMDM_DEVICE_TYPE_ENCODE 0x00000008
  638. #define WMDM_DEVICE_TYPE_STORAGE 0x00000010
  639. #define WMDM_DEVICE_TYPE_VIRTUAL 0x00000020
  640. #define WMDM_DEVICE_TYPE_SDMI 0x00000040
  641. #define WMDM_DEVICE_TYPE_NONSDMI 0x00000080
  642. #define WMDM_DEVICE_TYPE_NONREENTRANT 0x00000100
  643. #define WMDM_DEVICE_TYPE_FILELISTRESYNC 0x00000200
  644. #define WMDM_DEVICE_TYPE_VIEW_PREF_METADATAVIEW 0x00000400
  645. // Device Power Source Flags
  646. #define WMDM_POWER_CAP_BATTERY 0x00000001
  647. #define WMDM_POWER_CAP_EXTERNAL 0x00000002
  648. #define WMDM_POWER_IS_BATTERY 0x00000004
  649. #define WMDM_POWER_IS_EXTERNAL 0x00000008
  650. #define WMDM_POWER_PERCENT_AVAILABLE 0x00000010
  651. // Device Status Flags
  652. #define WMDM_STATUS_READY 0x00000001
  653. #define WMDM_STATUS_BUSY 0x00000002
  654. #define WMDM_STATUS_DEVICE_NOTPRESENT 0x00000004
  655. #define WMDM_STATUS_DEVICECONTROL_PLAYING 0x00000008
  656. #define WMDM_STATUS_DEVICECONTROL_RECORDING 0x00000010
  657. #define WMDM_STATUS_DEVICECONTROL_PAUSED 0x00000020
  658. #define WMDM_STATUS_DEVICECONTROL_REMOTE 0x00000040
  659. #define WMDM_STATUS_DEVICECONTROL_STREAM 0x00000080
  660. #define WMDM_STATUS_STORAGE_NOTPRESENT 0x00000100
  661. #define WMDM_STATUS_STORAGE_INITIALIZING 0x00000200
  662. #define WMDM_STATUS_STORAGE_BROKEN 0x00000400
  663. #define WMDM_STATUS_STORAGE_NOTSUPPORTED 0x00000800
  664. #define WMDM_STATUS_STORAGE_UNFORMATTED 0x00001000
  665. #define WMDM_STATUS_STORAGECONTROL_INSERTING 0x00002000
  666. #define WMDM_STATUS_STORAGECONTROL_DELETING 0x00004000
  667. #define WMDM_STATUS_STORAGECONTROL_APPENDING 0x00008000
  668. #define WMDM_STATUS_STORAGECONTROL_MOVING 0x00010000
  669. #define WMDM_STATUS_STORAGECONTROL_READING 0x00020000
  670. // Device Capabilities Flags
  671. #define WMDM_DEVICECAP_CANPLAY 0x00000001
  672. #define WMDM_DEVICECAP_CANSTREAMPLAY 0x00000002
  673. #define WMDM_DEVICECAP_CANRECORD 0x00000004
  674. #define WMDM_DEVICECAP_CANSTREAMRECORD 0x00000008
  675. #define WMDM_DEVICECAP_CANPAUSE 0x00000010
  676. #define WMDM_DEVICECAP_CANRESUME 0x00000020
  677. #define WMDM_DEVICECAP_CANSTOP 0x00000040
  678. #define WMDM_DEVICECAP_CANSEEK 0x00000080
  679. #define WMDM_DEVICECAP_HASSECURECLOCK 0x00000100
  680. // WMDM Seek Flags
  681. #define WMDM_SEEK_REMOTECONTROL 0x00000001
  682. #define WMDM_SEEK_STREAMINGAUDIO 0x00000002
  683. // Storage Attributes Flags
  684. #define WMDM_STORAGE_ATTR_FILESYSTEM 0x00000001
  685. #define WMDM_STORAGE_ATTR_REMOVABLE 0x00000002
  686. #define WMDM_STORAGE_ATTR_NONREMOVABLE 0x00000004
  687. #define WMDM_FILE_ATTR_FOLDER 0x00000008
  688. #define WMDM_FILE_ATTR_LINK 0x00000010
  689. #define WMDM_FILE_ATTR_FILE 0x00000020
  690. #define WMDM_FILE_ATTR_VIDEO 0x00000040
  691. #define WMDM_STORAGE_ATTR_CANEDITMETADATA 0x00000080
  692. #define WMDM_STORAGE_ATTR_FOLDERS 0x00000100
  693. #define WMDM_FILE_ATTR_AUDIO 0x00001000
  694. #define WMDM_FILE_ATTR_DATA 0x00002000
  695. #define WMDM_FILE_ATTR_CANPLAY 0x00004000
  696. #define WMDM_FILE_ATTR_CANDELETE 0x00008000
  697. #define WMDM_FILE_ATTR_CANMOVE 0x00010000
  698. #define WMDM_FILE_ATTR_CANRENAME 0x00020000
  699. #define WMDM_FILE_ATTR_CANREAD 0x00040000
  700. #define WMDM_FILE_ATTR_MUSIC 0x00080000
  701. #define WMDM_FILE_CREATE_OVERWRITE 0x00100000
  702. #define WMDM_FILE_ATTR_AUDIOBOOK 0x00200000
  703. #define WMDM_FILE_ATTR_HIDDEN 0x00400000
  704. #define WMDM_FILE_ATTR_SYSTEM 0x00800000
  705. #define WMDM_FILE_ATTR_READONLY 0x01000000
  706. #define WMDM_STORAGE_ATTR_HAS_FOLDERS 0x02000000
  707. #define WMDM_STORAGE_ATTR_HAS_FILES 0x04000000
  708. #define WMDM_STORAGE_IS_DEFAULT 0x08000000
  709. #define WMDM_STORAGE_CONTAINS_DEFAULT 0x10000000
  710. #define WMDM_STORAGE_ATTR_VIRTUAL 0x20000000
  711. // Storage Capabilities Flags
  712. #define WMDM_STORAGECAP_FOLDERSINROOT 0x00000001
  713. #define WMDM_STORAGECAP_FILESINROOT 0x00000002
  714. #define WMDM_STORAGECAP_FOLDERSINFOLDERS 0x00000004
  715. #define WMDM_STORAGECAP_FILESINFOLDERS 0x00000008
  716. #define WMDM_STORAGECAP_FOLDERLIMITEXISTS 0x00000010
  717. #define WMDM_STORAGECAP_FILELIMITEXISTS 0x00000020
  718. #define WMDM_STORAGECAP_NOT_INITIALIZABLE 0x00000040
  719. // WMDM Mode Flags
  720. #define WMDM_MODE_BLOCK 0x00000001
  721. #define WMDM_MODE_THREAD 0x00000002
  722. #define WMDM_CONTENT_FILE 0x00000004
  723. #define WMDM_CONTENT_FOLDER 0x00000008
  724. #define WMDM_CONTENT_OPERATIONINTERFACE 0x00000010
  725. #define WMDM_MODE_QUERY 0x00000020
  726. #define WMDM_MODE_PROGRESS 0x00000040
  727. #define WMDM_MODE_TRANSFER_PROTECTED 0x00000080
  728. #define WMDM_MODE_TRANSFER_UNPROTECTED 0x00000100
  729. #define WMDM_STORAGECONTROL_INSERTBEFORE 0x00000200
  730. #define WMDM_STORAGECONTROL_INSERTAFTER 0x00000400
  731. #define WMDM_STORAGECONTROL_INSERTINTO 0x00000800
  732. #define WMDM_MODE_RECURSIVE 0x00001000
  733. // WMDM Rights Flags
  734. // NON_SDMI = !SDMI_PROTECTED
  735. // SDMI = SDMI_VALIDATED
  736. #define WMDM_RIGHTS_PLAY_ON_PC 0x00000001
  737. #define WMDM_RIGHTS_COPY_TO_NON_SDMI_DEVICE 0x00000002
  738. #define WMDM_RIGHTS_COPY_TO_CD 0x00000008
  739. #define WMDM_RIGHTS_COPY_TO_SDMI_DEVICE 0x00000010
  740. // WMDM Seek Flags
  741. #define WMDM_SEEK_BEGIN 0x00000001
  742. #define WMDM_SEEK_CURRENT 0x00000002
  743. #define WMDM_SEEK_END 0x00000008
  744. // WMDM Device Enumeration Flags
  745. #define DO_NOT_VIRTUALIZE_STORAGES_AS_DEVICES 0x00000001
  746. #define ALLOW_OUTOFBAND_NOTIFICATION 0x00000002
  747. enum WMDMMessage
  748. { WMDM_MSG_DEVICE_ARRIVAL = 0,
  749. WMDM_MSG_DEVICE_REMOVAL = ( WMDM_MSG_DEVICE_ARRIVAL + 1 ) ,
  750. WMDM_MSG_MEDIA_ARRIVAL = ( WMDM_MSG_DEVICE_REMOVAL + 1 ) ,
  751. WMDM_MSG_MEDIA_REMOVAL = ( WMDM_MSG_MEDIA_ARRIVAL + 1 )
  752. } ;
  753. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0000_v0_0_c_ifspec;
  754. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0000_v0_0_s_ifspec;
  755. #ifndef __IWMDMMetaData_INTERFACE_DEFINED__
  756. #define __IWMDMMetaData_INTERFACE_DEFINED__
  757. /* interface IWMDMMetaData */
  758. /* [unique][uuid][object] */
  759. EXTERN_C const IID IID_IWMDMMetaData;
  760. #if defined(__cplusplus) && !defined(CINTERFACE)
  761. MIDL_INTERFACE("EC3B0663-0951-460a-9A80-0DCEED3C043C")
  762. IWMDMMetaData : public IUnknown
  763. {
  764. public:
  765. virtual HRESULT STDMETHODCALLTYPE AddItem(
  766. /* [in] */ WMDM_TAG_DATATYPE Type,
  767. /* [string][in] */ __RPC__in LPCWSTR pwszTagName,
  768. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(iLength) BYTE *pValue,
  769. /* [in] */ UINT iLength) = 0;
  770. virtual HRESULT STDMETHODCALLTYPE QueryByName(
  771. /* [string][in] */ __RPC__in LPCWSTR pwszTagName,
  772. /* [out] */ __RPC__out WMDM_TAG_DATATYPE *pType,
  773. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcbLength) BYTE **pValue,
  774. /* [out] */ __RPC__out UINT *pcbLength) = 0;
  775. virtual HRESULT STDMETHODCALLTYPE QueryByIndex(
  776. /* [in] */ UINT iIndex,
  777. /* [string][out] */ __RPC__deref_out_opt_string WCHAR **ppwszName,
  778. /* [out] */ __RPC__out WMDM_TAG_DATATYPE *pType,
  779. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcbLength) BYTE **ppValue,
  780. /* [out] */ __RPC__out UINT *pcbLength) = 0;
  781. virtual HRESULT STDMETHODCALLTYPE GetItemCount(
  782. /* [out] */ __RPC__out UINT *iCount) = 0;
  783. };
  784. #else /* C style interface */
  785. typedef struct IWMDMMetaDataVtbl
  786. {
  787. BEGIN_INTERFACE
  788. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  789. IWMDMMetaData * This,
  790. /* [in] */ __RPC__in REFIID riid,
  791. /* [iid_is][out] */
  792. __RPC__deref_out void **ppvObject);
  793. ULONG ( STDMETHODCALLTYPE *AddRef )(
  794. IWMDMMetaData * This);
  795. ULONG ( STDMETHODCALLTYPE *Release )(
  796. IWMDMMetaData * This);
  797. HRESULT ( STDMETHODCALLTYPE *AddItem )(
  798. IWMDMMetaData * This,
  799. /* [in] */ WMDM_TAG_DATATYPE Type,
  800. /* [string][in] */ __RPC__in LPCWSTR pwszTagName,
  801. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(iLength) BYTE *pValue,
  802. /* [in] */ UINT iLength);
  803. HRESULT ( STDMETHODCALLTYPE *QueryByName )(
  804. IWMDMMetaData * This,
  805. /* [string][in] */ __RPC__in LPCWSTR pwszTagName,
  806. /* [out] */ __RPC__out WMDM_TAG_DATATYPE *pType,
  807. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcbLength) BYTE **pValue,
  808. /* [out] */ __RPC__out UINT *pcbLength);
  809. HRESULT ( STDMETHODCALLTYPE *QueryByIndex )(
  810. IWMDMMetaData * This,
  811. /* [in] */ UINT iIndex,
  812. /* [string][out] */ __RPC__deref_out_opt_string WCHAR **ppwszName,
  813. /* [out] */ __RPC__out WMDM_TAG_DATATYPE *pType,
  814. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcbLength) BYTE **ppValue,
  815. /* [out] */ __RPC__out UINT *pcbLength);
  816. HRESULT ( STDMETHODCALLTYPE *GetItemCount )(
  817. IWMDMMetaData * This,
  818. /* [out] */ __RPC__out UINT *iCount);
  819. END_INTERFACE
  820. } IWMDMMetaDataVtbl;
  821. interface IWMDMMetaData
  822. {
  823. CONST_VTBL struct IWMDMMetaDataVtbl *lpVtbl;
  824. };
  825. #ifdef COBJMACROS
  826. #define IWMDMMetaData_QueryInterface(This,riid,ppvObject) \
  827. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  828. #define IWMDMMetaData_AddRef(This) \
  829. ( (This)->lpVtbl -> AddRef(This) )
  830. #define IWMDMMetaData_Release(This) \
  831. ( (This)->lpVtbl -> Release(This) )
  832. #define IWMDMMetaData_AddItem(This,Type,pwszTagName,pValue,iLength) \
  833. ( (This)->lpVtbl -> AddItem(This,Type,pwszTagName,pValue,iLength) )
  834. #define IWMDMMetaData_QueryByName(This,pwszTagName,pType,pValue,pcbLength) \
  835. ( (This)->lpVtbl -> QueryByName(This,pwszTagName,pType,pValue,pcbLength) )
  836. #define IWMDMMetaData_QueryByIndex(This,iIndex,ppwszName,pType,ppValue,pcbLength) \
  837. ( (This)->lpVtbl -> QueryByIndex(This,iIndex,ppwszName,pType,ppValue,pcbLength) )
  838. #define IWMDMMetaData_GetItemCount(This,iCount) \
  839. ( (This)->lpVtbl -> GetItemCount(This,iCount) )
  840. #endif /* COBJMACROS */
  841. #endif /* C style interface */
  842. #endif /* __IWMDMMetaData_INTERFACE_DEFINED__ */
  843. #ifndef __IWMDeviceManager_INTERFACE_DEFINED__
  844. #define __IWMDeviceManager_INTERFACE_DEFINED__
  845. /* interface IWMDeviceManager */
  846. /* [unique][uuid][object] */
  847. EXTERN_C const IID IID_IWMDeviceManager;
  848. #if defined(__cplusplus) && !defined(CINTERFACE)
  849. MIDL_INTERFACE("1DCB3A00-33ED-11d3-8470-00C04F79DBC0")
  850. IWMDeviceManager : public IUnknown
  851. {
  852. public:
  853. virtual HRESULT STDMETHODCALLTYPE GetRevision(
  854. /* [out] */ __RPC__out DWORD *pdwRevision) = 0;
  855. virtual HRESULT STDMETHODCALLTYPE GetDeviceCount(
  856. /* [out] */ __RPC__out DWORD *pdwCount) = 0;
  857. virtual HRESULT STDMETHODCALLTYPE EnumDevices(
  858. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice) = 0;
  859. };
  860. #else /* C style interface */
  861. typedef struct IWMDeviceManagerVtbl
  862. {
  863. BEGIN_INTERFACE
  864. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  865. IWMDeviceManager * This,
  866. /* [in] */ __RPC__in REFIID riid,
  867. /* [iid_is][out] */
  868. __RPC__deref_out void **ppvObject);
  869. ULONG ( STDMETHODCALLTYPE *AddRef )(
  870. IWMDeviceManager * This);
  871. ULONG ( STDMETHODCALLTYPE *Release )(
  872. IWMDeviceManager * This);
  873. HRESULT ( STDMETHODCALLTYPE *GetRevision )(
  874. IWMDeviceManager * This,
  875. /* [out] */ __RPC__out DWORD *pdwRevision);
  876. HRESULT ( STDMETHODCALLTYPE *GetDeviceCount )(
  877. IWMDeviceManager * This,
  878. /* [out] */ __RPC__out DWORD *pdwCount);
  879. HRESULT ( STDMETHODCALLTYPE *EnumDevices )(
  880. IWMDeviceManager * This,
  881. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice);
  882. END_INTERFACE
  883. } IWMDeviceManagerVtbl;
  884. interface IWMDeviceManager
  885. {
  886. CONST_VTBL struct IWMDeviceManagerVtbl *lpVtbl;
  887. };
  888. #ifdef COBJMACROS
  889. #define IWMDeviceManager_QueryInterface(This,riid,ppvObject) \
  890. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  891. #define IWMDeviceManager_AddRef(This) \
  892. ( (This)->lpVtbl -> AddRef(This) )
  893. #define IWMDeviceManager_Release(This) \
  894. ( (This)->lpVtbl -> Release(This) )
  895. #define IWMDeviceManager_GetRevision(This,pdwRevision) \
  896. ( (This)->lpVtbl -> GetRevision(This,pdwRevision) )
  897. #define IWMDeviceManager_GetDeviceCount(This,pdwCount) \
  898. ( (This)->lpVtbl -> GetDeviceCount(This,pdwCount) )
  899. #define IWMDeviceManager_EnumDevices(This,ppEnumDevice) \
  900. ( (This)->lpVtbl -> EnumDevices(This,ppEnumDevice) )
  901. #endif /* COBJMACROS */
  902. #endif /* C style interface */
  903. #endif /* __IWMDeviceManager_INTERFACE_DEFINED__ */
  904. #ifndef __IWMDeviceManager2_INTERFACE_DEFINED__
  905. #define __IWMDeviceManager2_INTERFACE_DEFINED__
  906. /* interface IWMDeviceManager2 */
  907. /* [unique][uuid][object] */
  908. EXTERN_C const IID IID_IWMDeviceManager2;
  909. #if defined(__cplusplus) && !defined(CINTERFACE)
  910. MIDL_INTERFACE("923E5249-8731-4c5b-9B1C-B8B60B6E46AF")
  911. IWMDeviceManager2 : public IWMDeviceManager
  912. {
  913. public:
  914. virtual HRESULT STDMETHODCALLTYPE GetDeviceFromCanonicalName(
  915. /* [string][in] */ __RPC__in LPCWSTR pwszCanonicalName,
  916. /* [out] */ __RPC__deref_out_opt IWMDMDevice **ppDevice) = 0;
  917. virtual HRESULT STDMETHODCALLTYPE EnumDevices2(
  918. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice) = 0;
  919. virtual HRESULT STDMETHODCALLTYPE Reinitialize( void) = 0;
  920. };
  921. #else /* C style interface */
  922. typedef struct IWMDeviceManager2Vtbl
  923. {
  924. BEGIN_INTERFACE
  925. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  926. IWMDeviceManager2 * This,
  927. /* [in] */ __RPC__in REFIID riid,
  928. /* [iid_is][out] */
  929. __RPC__deref_out void **ppvObject);
  930. ULONG ( STDMETHODCALLTYPE *AddRef )(
  931. IWMDeviceManager2 * This);
  932. ULONG ( STDMETHODCALLTYPE *Release )(
  933. IWMDeviceManager2 * This);
  934. HRESULT ( STDMETHODCALLTYPE *GetRevision )(
  935. IWMDeviceManager2 * This,
  936. /* [out] */ __RPC__out DWORD *pdwRevision);
  937. HRESULT ( STDMETHODCALLTYPE *GetDeviceCount )(
  938. IWMDeviceManager2 * This,
  939. /* [out] */ __RPC__out DWORD *pdwCount);
  940. HRESULT ( STDMETHODCALLTYPE *EnumDevices )(
  941. IWMDeviceManager2 * This,
  942. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice);
  943. HRESULT ( STDMETHODCALLTYPE *GetDeviceFromCanonicalName )(
  944. IWMDeviceManager2 * This,
  945. /* [string][in] */ __RPC__in LPCWSTR pwszCanonicalName,
  946. /* [out] */ __RPC__deref_out_opt IWMDMDevice **ppDevice);
  947. HRESULT ( STDMETHODCALLTYPE *EnumDevices2 )(
  948. IWMDeviceManager2 * This,
  949. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice);
  950. HRESULT ( STDMETHODCALLTYPE *Reinitialize )(
  951. IWMDeviceManager2 * This);
  952. END_INTERFACE
  953. } IWMDeviceManager2Vtbl;
  954. interface IWMDeviceManager2
  955. {
  956. CONST_VTBL struct IWMDeviceManager2Vtbl *lpVtbl;
  957. };
  958. #ifdef COBJMACROS
  959. #define IWMDeviceManager2_QueryInterface(This,riid,ppvObject) \
  960. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  961. #define IWMDeviceManager2_AddRef(This) \
  962. ( (This)->lpVtbl -> AddRef(This) )
  963. #define IWMDeviceManager2_Release(This) \
  964. ( (This)->lpVtbl -> Release(This) )
  965. #define IWMDeviceManager2_GetRevision(This,pdwRevision) \
  966. ( (This)->lpVtbl -> GetRevision(This,pdwRevision) )
  967. #define IWMDeviceManager2_GetDeviceCount(This,pdwCount) \
  968. ( (This)->lpVtbl -> GetDeviceCount(This,pdwCount) )
  969. #define IWMDeviceManager2_EnumDevices(This,ppEnumDevice) \
  970. ( (This)->lpVtbl -> EnumDevices(This,ppEnumDevice) )
  971. #define IWMDeviceManager2_GetDeviceFromCanonicalName(This,pwszCanonicalName,ppDevice) \
  972. ( (This)->lpVtbl -> GetDeviceFromCanonicalName(This,pwszCanonicalName,ppDevice) )
  973. #define IWMDeviceManager2_EnumDevices2(This,ppEnumDevice) \
  974. ( (This)->lpVtbl -> EnumDevices2(This,ppEnumDevice) )
  975. #define IWMDeviceManager2_Reinitialize(This) \
  976. ( (This)->lpVtbl -> Reinitialize(This) )
  977. #endif /* COBJMACROS */
  978. #endif /* C style interface */
  979. #endif /* __IWMDeviceManager2_INTERFACE_DEFINED__ */
  980. #ifndef __IWMDeviceManager3_INTERFACE_DEFINED__
  981. #define __IWMDeviceManager3_INTERFACE_DEFINED__
  982. /* interface IWMDeviceManager3 */
  983. /* [unique][uuid][object] */
  984. EXTERN_C const IID IID_IWMDeviceManager3;
  985. #if defined(__cplusplus) && !defined(CINTERFACE)
  986. MIDL_INTERFACE("af185c41-100d-46ed-be2e-9ce8c44594ef")
  987. IWMDeviceManager3 : public IWMDeviceManager2
  988. {
  989. public:
  990. virtual HRESULT STDMETHODCALLTYPE SetDeviceEnumPreference(
  991. /* [in] */ DWORD dwEnumPref) = 0;
  992. };
  993. #else /* C style interface */
  994. typedef struct IWMDeviceManager3Vtbl
  995. {
  996. BEGIN_INTERFACE
  997. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  998. IWMDeviceManager3 * This,
  999. /* [in] */ __RPC__in REFIID riid,
  1000. /* [iid_is][out] */
  1001. __RPC__deref_out void **ppvObject);
  1002. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1003. IWMDeviceManager3 * This);
  1004. ULONG ( STDMETHODCALLTYPE *Release )(
  1005. IWMDeviceManager3 * This);
  1006. HRESULT ( STDMETHODCALLTYPE *GetRevision )(
  1007. IWMDeviceManager3 * This,
  1008. /* [out] */ __RPC__out DWORD *pdwRevision);
  1009. HRESULT ( STDMETHODCALLTYPE *GetDeviceCount )(
  1010. IWMDeviceManager3 * This,
  1011. /* [out] */ __RPC__out DWORD *pdwCount);
  1012. HRESULT ( STDMETHODCALLTYPE *EnumDevices )(
  1013. IWMDeviceManager3 * This,
  1014. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice);
  1015. HRESULT ( STDMETHODCALLTYPE *GetDeviceFromCanonicalName )(
  1016. IWMDeviceManager3 * This,
  1017. /* [string][in] */ __RPC__in LPCWSTR pwszCanonicalName,
  1018. /* [out] */ __RPC__deref_out_opt IWMDMDevice **ppDevice);
  1019. HRESULT ( STDMETHODCALLTYPE *EnumDevices2 )(
  1020. IWMDeviceManager3 * This,
  1021. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice);
  1022. HRESULT ( STDMETHODCALLTYPE *Reinitialize )(
  1023. IWMDeviceManager3 * This);
  1024. HRESULT ( STDMETHODCALLTYPE *SetDeviceEnumPreference )(
  1025. IWMDeviceManager3 * This,
  1026. /* [in] */ DWORD dwEnumPref);
  1027. END_INTERFACE
  1028. } IWMDeviceManager3Vtbl;
  1029. interface IWMDeviceManager3
  1030. {
  1031. CONST_VTBL struct IWMDeviceManager3Vtbl *lpVtbl;
  1032. };
  1033. #ifdef COBJMACROS
  1034. #define IWMDeviceManager3_QueryInterface(This,riid,ppvObject) \
  1035. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1036. #define IWMDeviceManager3_AddRef(This) \
  1037. ( (This)->lpVtbl -> AddRef(This) )
  1038. #define IWMDeviceManager3_Release(This) \
  1039. ( (This)->lpVtbl -> Release(This) )
  1040. #define IWMDeviceManager3_GetRevision(This,pdwRevision) \
  1041. ( (This)->lpVtbl -> GetRevision(This,pdwRevision) )
  1042. #define IWMDeviceManager3_GetDeviceCount(This,pdwCount) \
  1043. ( (This)->lpVtbl -> GetDeviceCount(This,pdwCount) )
  1044. #define IWMDeviceManager3_EnumDevices(This,ppEnumDevice) \
  1045. ( (This)->lpVtbl -> EnumDevices(This,ppEnumDevice) )
  1046. #define IWMDeviceManager3_GetDeviceFromCanonicalName(This,pwszCanonicalName,ppDevice) \
  1047. ( (This)->lpVtbl -> GetDeviceFromCanonicalName(This,pwszCanonicalName,ppDevice) )
  1048. #define IWMDeviceManager3_EnumDevices2(This,ppEnumDevice) \
  1049. ( (This)->lpVtbl -> EnumDevices2(This,ppEnumDevice) )
  1050. #define IWMDeviceManager3_Reinitialize(This) \
  1051. ( (This)->lpVtbl -> Reinitialize(This) )
  1052. #define IWMDeviceManager3_SetDeviceEnumPreference(This,dwEnumPref) \
  1053. ( (This)->lpVtbl -> SetDeviceEnumPreference(This,dwEnumPref) )
  1054. #endif /* COBJMACROS */
  1055. #endif /* C style interface */
  1056. #endif /* __IWMDeviceManager3_INTERFACE_DEFINED__ */
  1057. #ifndef __IWMDMStorageGlobals_INTERFACE_DEFINED__
  1058. #define __IWMDMStorageGlobals_INTERFACE_DEFINED__
  1059. /* interface IWMDMStorageGlobals */
  1060. /* [unique][uuid][object] */
  1061. EXTERN_C const IID IID_IWMDMStorageGlobals;
  1062. #if defined(__cplusplus) && !defined(CINTERFACE)
  1063. MIDL_INTERFACE("1DCB3A07-33ED-11d3-8470-00C04F79DBC0")
  1064. IWMDMStorageGlobals : public IUnknown
  1065. {
  1066. public:
  1067. virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
  1068. /* [out] */ __RPC__out DWORD *pdwCapabilities) = 0;
  1069. virtual HRESULT STDMETHODCALLTYPE GetSerialNumber(
  1070. /* [out] */ __RPC__out PWMDMID pSerialNum,
  1071. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  1072. virtual HRESULT STDMETHODCALLTYPE GetTotalSize(
  1073. /* [out] */ __RPC__out DWORD *pdwTotalSizeLow,
  1074. /* [out] */ __RPC__out DWORD *pdwTotalSizeHigh) = 0;
  1075. virtual HRESULT STDMETHODCALLTYPE GetTotalFree(
  1076. /* [out] */ __RPC__out DWORD *pdwFreeLow,
  1077. /* [out] */ __RPC__out DWORD *pdwFreeHigh) = 0;
  1078. virtual HRESULT STDMETHODCALLTYPE GetTotalBad(
  1079. /* [out] */ __RPC__out DWORD *pdwBadLow,
  1080. /* [out] */ __RPC__out DWORD *pdwBadHigh) = 0;
  1081. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  1082. /* [out] */ __RPC__out DWORD *pdwStatus) = 0;
  1083. virtual HRESULT STDMETHODCALLTYPE Initialize(
  1084. /* [in] */ UINT fuMode,
  1085. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  1086. };
  1087. #else /* C style interface */
  1088. typedef struct IWMDMStorageGlobalsVtbl
  1089. {
  1090. BEGIN_INTERFACE
  1091. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1092. IWMDMStorageGlobals * This,
  1093. /* [in] */ __RPC__in REFIID riid,
  1094. /* [iid_is][out] */
  1095. __RPC__deref_out void **ppvObject);
  1096. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1097. IWMDMStorageGlobals * This);
  1098. ULONG ( STDMETHODCALLTYPE *Release )(
  1099. IWMDMStorageGlobals * This);
  1100. HRESULT ( STDMETHODCALLTYPE *GetCapabilities )(
  1101. IWMDMStorageGlobals * This,
  1102. /* [out] */ __RPC__out DWORD *pdwCapabilities);
  1103. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  1104. IWMDMStorageGlobals * This,
  1105. /* [out] */ __RPC__out PWMDMID pSerialNum,
  1106. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1107. HRESULT ( STDMETHODCALLTYPE *GetTotalSize )(
  1108. IWMDMStorageGlobals * This,
  1109. /* [out] */ __RPC__out DWORD *pdwTotalSizeLow,
  1110. /* [out] */ __RPC__out DWORD *pdwTotalSizeHigh);
  1111. HRESULT ( STDMETHODCALLTYPE *GetTotalFree )(
  1112. IWMDMStorageGlobals * This,
  1113. /* [out] */ __RPC__out DWORD *pdwFreeLow,
  1114. /* [out] */ __RPC__out DWORD *pdwFreeHigh);
  1115. HRESULT ( STDMETHODCALLTYPE *GetTotalBad )(
  1116. IWMDMStorageGlobals * This,
  1117. /* [out] */ __RPC__out DWORD *pdwBadLow,
  1118. /* [out] */ __RPC__out DWORD *pdwBadHigh);
  1119. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  1120. IWMDMStorageGlobals * This,
  1121. /* [out] */ __RPC__out DWORD *pdwStatus);
  1122. HRESULT ( STDMETHODCALLTYPE *Initialize )(
  1123. IWMDMStorageGlobals * This,
  1124. /* [in] */ UINT fuMode,
  1125. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  1126. END_INTERFACE
  1127. } IWMDMStorageGlobalsVtbl;
  1128. interface IWMDMStorageGlobals
  1129. {
  1130. CONST_VTBL struct IWMDMStorageGlobalsVtbl *lpVtbl;
  1131. };
  1132. #ifdef COBJMACROS
  1133. #define IWMDMStorageGlobals_QueryInterface(This,riid,ppvObject) \
  1134. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1135. #define IWMDMStorageGlobals_AddRef(This) \
  1136. ( (This)->lpVtbl -> AddRef(This) )
  1137. #define IWMDMStorageGlobals_Release(This) \
  1138. ( (This)->lpVtbl -> Release(This) )
  1139. #define IWMDMStorageGlobals_GetCapabilities(This,pdwCapabilities) \
  1140. ( (This)->lpVtbl -> GetCapabilities(This,pdwCapabilities) )
  1141. #define IWMDMStorageGlobals_GetSerialNumber(This,pSerialNum,abMac) \
  1142. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNum,abMac) )
  1143. #define IWMDMStorageGlobals_GetTotalSize(This,pdwTotalSizeLow,pdwTotalSizeHigh) \
  1144. ( (This)->lpVtbl -> GetTotalSize(This,pdwTotalSizeLow,pdwTotalSizeHigh) )
  1145. #define IWMDMStorageGlobals_GetTotalFree(This,pdwFreeLow,pdwFreeHigh) \
  1146. ( (This)->lpVtbl -> GetTotalFree(This,pdwFreeLow,pdwFreeHigh) )
  1147. #define IWMDMStorageGlobals_GetTotalBad(This,pdwBadLow,pdwBadHigh) \
  1148. ( (This)->lpVtbl -> GetTotalBad(This,pdwBadLow,pdwBadHigh) )
  1149. #define IWMDMStorageGlobals_GetStatus(This,pdwStatus) \
  1150. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  1151. #define IWMDMStorageGlobals_Initialize(This,fuMode,pProgress) \
  1152. ( (This)->lpVtbl -> Initialize(This,fuMode,pProgress) )
  1153. #endif /* COBJMACROS */
  1154. #endif /* C style interface */
  1155. #endif /* __IWMDMStorageGlobals_INTERFACE_DEFINED__ */
  1156. #ifndef __IWMDMStorage_INTERFACE_DEFINED__
  1157. #define __IWMDMStorage_INTERFACE_DEFINED__
  1158. /* interface IWMDMStorage */
  1159. /* [unique][uuid][object] */
  1160. EXTERN_C const IID IID_IWMDMStorage;
  1161. #if defined(__cplusplus) && !defined(CINTERFACE)
  1162. MIDL_INTERFACE("1DCB3A06-33ED-11d3-8470-00C04F79DBC0")
  1163. IWMDMStorage : public IUnknown
  1164. {
  1165. public:
  1166. virtual HRESULT STDMETHODCALLTYPE SetAttributes(
  1167. /* [in] */ DWORD dwAttributes,
  1168. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat) = 0;
  1169. virtual HRESULT STDMETHODCALLTYPE GetStorageGlobals(
  1170. /* [out] */ __RPC__deref_out_opt IWMDMStorageGlobals **ppStorageGlobals) = 0;
  1171. virtual HRESULT STDMETHODCALLTYPE GetAttributes(
  1172. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1173. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat) = 0;
  1174. virtual HRESULT STDMETHODCALLTYPE GetName(
  1175. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1176. /* [in] */ UINT nMaxChars) = 0;
  1177. virtual HRESULT STDMETHODCALLTYPE GetDate(
  1178. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC) = 0;
  1179. virtual HRESULT STDMETHODCALLTYPE GetSize(
  1180. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  1181. /* [out] */ __RPC__out DWORD *pdwSizeHigh) = 0;
  1182. virtual HRESULT STDMETHODCALLTYPE GetRights(
  1183. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1184. /* [out] */ __RPC__out UINT *pnRightsCount,
  1185. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  1186. virtual HRESULT STDMETHODCALLTYPE EnumStorage(
  1187. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **pEnumStorage) = 0;
  1188. virtual HRESULT STDMETHODCALLTYPE SendOpaqueCommand(
  1189. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand) = 0;
  1190. };
  1191. #else /* C style interface */
  1192. typedef struct IWMDMStorageVtbl
  1193. {
  1194. BEGIN_INTERFACE
  1195. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1196. IWMDMStorage * This,
  1197. /* [in] */ __RPC__in REFIID riid,
  1198. /* [iid_is][out] */
  1199. __RPC__deref_out void **ppvObject);
  1200. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1201. IWMDMStorage * This);
  1202. ULONG ( STDMETHODCALLTYPE *Release )(
  1203. IWMDMStorage * This);
  1204. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  1205. IWMDMStorage * This,
  1206. /* [in] */ DWORD dwAttributes,
  1207. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  1208. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  1209. IWMDMStorage * This,
  1210. /* [out] */ __RPC__deref_out_opt IWMDMStorageGlobals **ppStorageGlobals);
  1211. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  1212. IWMDMStorage * This,
  1213. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1214. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  1215. HRESULT ( STDMETHODCALLTYPE *GetName )(
  1216. IWMDMStorage * This,
  1217. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1218. /* [in] */ UINT nMaxChars);
  1219. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  1220. IWMDMStorage * This,
  1221. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  1222. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  1223. IWMDMStorage * This,
  1224. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  1225. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  1226. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  1227. IWMDMStorage * This,
  1228. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1229. /* [out] */ __RPC__out UINT *pnRightsCount,
  1230. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1231. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  1232. IWMDMStorage * This,
  1233. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **pEnumStorage);
  1234. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  1235. IWMDMStorage * This,
  1236. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  1237. END_INTERFACE
  1238. } IWMDMStorageVtbl;
  1239. interface IWMDMStorage
  1240. {
  1241. CONST_VTBL struct IWMDMStorageVtbl *lpVtbl;
  1242. };
  1243. #ifdef COBJMACROS
  1244. #define IWMDMStorage_QueryInterface(This,riid,ppvObject) \
  1245. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1246. #define IWMDMStorage_AddRef(This) \
  1247. ( (This)->lpVtbl -> AddRef(This) )
  1248. #define IWMDMStorage_Release(This) \
  1249. ( (This)->lpVtbl -> Release(This) )
  1250. #define IWMDMStorage_SetAttributes(This,dwAttributes,pFormat) \
  1251. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  1252. #define IWMDMStorage_GetStorageGlobals(This,ppStorageGlobals) \
  1253. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  1254. #define IWMDMStorage_GetAttributes(This,pdwAttributes,pFormat) \
  1255. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  1256. #define IWMDMStorage_GetName(This,pwszName,nMaxChars) \
  1257. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  1258. #define IWMDMStorage_GetDate(This,pDateTimeUTC) \
  1259. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  1260. #define IWMDMStorage_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  1261. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  1262. #define IWMDMStorage_GetRights(This,ppRights,pnRightsCount,abMac) \
  1263. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  1264. #define IWMDMStorage_EnumStorage(This,pEnumStorage) \
  1265. ( (This)->lpVtbl -> EnumStorage(This,pEnumStorage) )
  1266. #define IWMDMStorage_SendOpaqueCommand(This,pCommand) \
  1267. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  1268. #endif /* COBJMACROS */
  1269. #endif /* C style interface */
  1270. #endif /* __IWMDMStorage_INTERFACE_DEFINED__ */
  1271. #ifndef __IWMDMStorage2_INTERFACE_DEFINED__
  1272. #define __IWMDMStorage2_INTERFACE_DEFINED__
  1273. /* interface IWMDMStorage2 */
  1274. /* [unique][uuid][object] */
  1275. EXTERN_C const IID IID_IWMDMStorage2;
  1276. #if defined(__cplusplus) && !defined(CINTERFACE)
  1277. MIDL_INTERFACE("1ED5A144-5CD5-4683-9EFF-72CBDB2D9533")
  1278. IWMDMStorage2 : public IWMDMStorage
  1279. {
  1280. public:
  1281. virtual HRESULT STDMETHODCALLTYPE GetStorage(
  1282. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  1283. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage) = 0;
  1284. virtual HRESULT STDMETHODCALLTYPE SetAttributes2(
  1285. /* [in] */ DWORD dwAttributes,
  1286. /* [in] */ DWORD dwAttributesEx,
  1287. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  1288. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat) = 0;
  1289. virtual HRESULT STDMETHODCALLTYPE GetAttributes2(
  1290. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1291. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  1292. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  1293. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat) = 0;
  1294. };
  1295. #else /* C style interface */
  1296. typedef struct IWMDMStorage2Vtbl
  1297. {
  1298. BEGIN_INTERFACE
  1299. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1300. IWMDMStorage2 * This,
  1301. /* [in] */ __RPC__in REFIID riid,
  1302. /* [iid_is][out] */
  1303. __RPC__deref_out void **ppvObject);
  1304. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1305. IWMDMStorage2 * This);
  1306. ULONG ( STDMETHODCALLTYPE *Release )(
  1307. IWMDMStorage2 * This);
  1308. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  1309. IWMDMStorage2 * This,
  1310. /* [in] */ DWORD dwAttributes,
  1311. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  1312. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  1313. IWMDMStorage2 * This,
  1314. /* [out] */ __RPC__deref_out_opt IWMDMStorageGlobals **ppStorageGlobals);
  1315. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  1316. IWMDMStorage2 * This,
  1317. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1318. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  1319. HRESULT ( STDMETHODCALLTYPE *GetName )(
  1320. IWMDMStorage2 * This,
  1321. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1322. /* [in] */ UINT nMaxChars);
  1323. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  1324. IWMDMStorage2 * This,
  1325. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  1326. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  1327. IWMDMStorage2 * This,
  1328. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  1329. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  1330. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  1331. IWMDMStorage2 * This,
  1332. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1333. /* [out] */ __RPC__out UINT *pnRightsCount,
  1334. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1335. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  1336. IWMDMStorage2 * This,
  1337. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **pEnumStorage);
  1338. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  1339. IWMDMStorage2 * This,
  1340. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  1341. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  1342. IWMDMStorage2 * This,
  1343. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  1344. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  1345. HRESULT ( STDMETHODCALLTYPE *SetAttributes2 )(
  1346. IWMDMStorage2 * This,
  1347. /* [in] */ DWORD dwAttributes,
  1348. /* [in] */ DWORD dwAttributesEx,
  1349. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  1350. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  1351. HRESULT ( STDMETHODCALLTYPE *GetAttributes2 )(
  1352. IWMDMStorage2 * This,
  1353. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1354. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  1355. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  1356. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  1357. END_INTERFACE
  1358. } IWMDMStorage2Vtbl;
  1359. interface IWMDMStorage2
  1360. {
  1361. CONST_VTBL struct IWMDMStorage2Vtbl *lpVtbl;
  1362. };
  1363. #ifdef COBJMACROS
  1364. #define IWMDMStorage2_QueryInterface(This,riid,ppvObject) \
  1365. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1366. #define IWMDMStorage2_AddRef(This) \
  1367. ( (This)->lpVtbl -> AddRef(This) )
  1368. #define IWMDMStorage2_Release(This) \
  1369. ( (This)->lpVtbl -> Release(This) )
  1370. #define IWMDMStorage2_SetAttributes(This,dwAttributes,pFormat) \
  1371. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  1372. #define IWMDMStorage2_GetStorageGlobals(This,ppStorageGlobals) \
  1373. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  1374. #define IWMDMStorage2_GetAttributes(This,pdwAttributes,pFormat) \
  1375. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  1376. #define IWMDMStorage2_GetName(This,pwszName,nMaxChars) \
  1377. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  1378. #define IWMDMStorage2_GetDate(This,pDateTimeUTC) \
  1379. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  1380. #define IWMDMStorage2_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  1381. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  1382. #define IWMDMStorage2_GetRights(This,ppRights,pnRightsCount,abMac) \
  1383. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  1384. #define IWMDMStorage2_EnumStorage(This,pEnumStorage) \
  1385. ( (This)->lpVtbl -> EnumStorage(This,pEnumStorage) )
  1386. #define IWMDMStorage2_SendOpaqueCommand(This,pCommand) \
  1387. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  1388. #define IWMDMStorage2_GetStorage(This,pszStorageName,ppStorage) \
  1389. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  1390. #define IWMDMStorage2_SetAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) \
  1391. ( (This)->lpVtbl -> SetAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) )
  1392. #define IWMDMStorage2_GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  1393. ( (This)->lpVtbl -> GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  1394. #endif /* COBJMACROS */
  1395. #endif /* C style interface */
  1396. #endif /* __IWMDMStorage2_INTERFACE_DEFINED__ */
  1397. #ifndef __IWMDMStorage3_INTERFACE_DEFINED__
  1398. #define __IWMDMStorage3_INTERFACE_DEFINED__
  1399. /* interface IWMDMStorage3 */
  1400. /* [unique][uuid][object] */
  1401. EXTERN_C const IID IID_IWMDMStorage3;
  1402. #if defined(__cplusplus) && !defined(CINTERFACE)
  1403. MIDL_INTERFACE("97717EEA-926A-464e-96A4-247B0216026E")
  1404. IWMDMStorage3 : public IWMDMStorage2
  1405. {
  1406. public:
  1407. virtual HRESULT STDMETHODCALLTYPE GetMetadata(
  1408. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata) = 0;
  1409. virtual HRESULT STDMETHODCALLTYPE SetMetadata(
  1410. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata) = 0;
  1411. virtual HRESULT STDMETHODCALLTYPE CreateEmptyMetadataObject(
  1412. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata) = 0;
  1413. virtual HRESULT STDMETHODCALLTYPE SetEnumPreference(
  1414. /* [out][in] */ __RPC__inout WMDM_STORAGE_ENUM_MODE *pMode,
  1415. /* [in] */ DWORD nViews,
  1416. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(nViews) WMDMMetadataView *pViews) = 0;
  1417. };
  1418. #else /* C style interface */
  1419. typedef struct IWMDMStorage3Vtbl
  1420. {
  1421. BEGIN_INTERFACE
  1422. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1423. IWMDMStorage3 * This,
  1424. /* [in] */ __RPC__in REFIID riid,
  1425. /* [iid_is][out] */
  1426. __RPC__deref_out void **ppvObject);
  1427. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1428. IWMDMStorage3 * This);
  1429. ULONG ( STDMETHODCALLTYPE *Release )(
  1430. IWMDMStorage3 * This);
  1431. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  1432. IWMDMStorage3 * This,
  1433. /* [in] */ DWORD dwAttributes,
  1434. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  1435. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  1436. IWMDMStorage3 * This,
  1437. /* [out] */ __RPC__deref_out_opt IWMDMStorageGlobals **ppStorageGlobals);
  1438. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  1439. IWMDMStorage3 * This,
  1440. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1441. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  1442. HRESULT ( STDMETHODCALLTYPE *GetName )(
  1443. IWMDMStorage3 * This,
  1444. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1445. /* [in] */ UINT nMaxChars);
  1446. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  1447. IWMDMStorage3 * This,
  1448. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  1449. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  1450. IWMDMStorage3 * This,
  1451. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  1452. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  1453. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  1454. IWMDMStorage3 * This,
  1455. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1456. /* [out] */ __RPC__out UINT *pnRightsCount,
  1457. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1458. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  1459. IWMDMStorage3 * This,
  1460. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **pEnumStorage);
  1461. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  1462. IWMDMStorage3 * This,
  1463. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  1464. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  1465. IWMDMStorage3 * This,
  1466. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  1467. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  1468. HRESULT ( STDMETHODCALLTYPE *SetAttributes2 )(
  1469. IWMDMStorage3 * This,
  1470. /* [in] */ DWORD dwAttributes,
  1471. /* [in] */ DWORD dwAttributesEx,
  1472. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  1473. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  1474. HRESULT ( STDMETHODCALLTYPE *GetAttributes2 )(
  1475. IWMDMStorage3 * This,
  1476. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1477. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  1478. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  1479. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  1480. HRESULT ( STDMETHODCALLTYPE *GetMetadata )(
  1481. IWMDMStorage3 * This,
  1482. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata);
  1483. HRESULT ( STDMETHODCALLTYPE *SetMetadata )(
  1484. IWMDMStorage3 * This,
  1485. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  1486. HRESULT ( STDMETHODCALLTYPE *CreateEmptyMetadataObject )(
  1487. IWMDMStorage3 * This,
  1488. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata);
  1489. HRESULT ( STDMETHODCALLTYPE *SetEnumPreference )(
  1490. IWMDMStorage3 * This,
  1491. /* [out][in] */ __RPC__inout WMDM_STORAGE_ENUM_MODE *pMode,
  1492. /* [in] */ DWORD nViews,
  1493. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(nViews) WMDMMetadataView *pViews);
  1494. END_INTERFACE
  1495. } IWMDMStorage3Vtbl;
  1496. interface IWMDMStorage3
  1497. {
  1498. CONST_VTBL struct IWMDMStorage3Vtbl *lpVtbl;
  1499. };
  1500. #ifdef COBJMACROS
  1501. #define IWMDMStorage3_QueryInterface(This,riid,ppvObject) \
  1502. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1503. #define IWMDMStorage3_AddRef(This) \
  1504. ( (This)->lpVtbl -> AddRef(This) )
  1505. #define IWMDMStorage3_Release(This) \
  1506. ( (This)->lpVtbl -> Release(This) )
  1507. #define IWMDMStorage3_SetAttributes(This,dwAttributes,pFormat) \
  1508. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  1509. #define IWMDMStorage3_GetStorageGlobals(This,ppStorageGlobals) \
  1510. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  1511. #define IWMDMStorage3_GetAttributes(This,pdwAttributes,pFormat) \
  1512. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  1513. #define IWMDMStorage3_GetName(This,pwszName,nMaxChars) \
  1514. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  1515. #define IWMDMStorage3_GetDate(This,pDateTimeUTC) \
  1516. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  1517. #define IWMDMStorage3_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  1518. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  1519. #define IWMDMStorage3_GetRights(This,ppRights,pnRightsCount,abMac) \
  1520. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  1521. #define IWMDMStorage3_EnumStorage(This,pEnumStorage) \
  1522. ( (This)->lpVtbl -> EnumStorage(This,pEnumStorage) )
  1523. #define IWMDMStorage3_SendOpaqueCommand(This,pCommand) \
  1524. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  1525. #define IWMDMStorage3_GetStorage(This,pszStorageName,ppStorage) \
  1526. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  1527. #define IWMDMStorage3_SetAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) \
  1528. ( (This)->lpVtbl -> SetAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) )
  1529. #define IWMDMStorage3_GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  1530. ( (This)->lpVtbl -> GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  1531. #define IWMDMStorage3_GetMetadata(This,ppMetadata) \
  1532. ( (This)->lpVtbl -> GetMetadata(This,ppMetadata) )
  1533. #define IWMDMStorage3_SetMetadata(This,pMetadata) \
  1534. ( (This)->lpVtbl -> SetMetadata(This,pMetadata) )
  1535. #define IWMDMStorage3_CreateEmptyMetadataObject(This,ppMetadata) \
  1536. ( (This)->lpVtbl -> CreateEmptyMetadataObject(This,ppMetadata) )
  1537. #define IWMDMStorage3_SetEnumPreference(This,pMode,nViews,pViews) \
  1538. ( (This)->lpVtbl -> SetEnumPreference(This,pMode,nViews,pViews) )
  1539. #endif /* COBJMACROS */
  1540. #endif /* C style interface */
  1541. #endif /* __IWMDMStorage3_INTERFACE_DEFINED__ */
  1542. #ifndef __IWMDMStorage4_INTERFACE_DEFINED__
  1543. #define __IWMDMStorage4_INTERFACE_DEFINED__
  1544. /* interface IWMDMStorage4 */
  1545. /* [unique][uuid][object] */
  1546. EXTERN_C const IID IID_IWMDMStorage4;
  1547. #if defined(__cplusplus) && !defined(CINTERFACE)
  1548. MIDL_INTERFACE("c225bac5-a03a-40b8-9a23-91cf478c64a6")
  1549. IWMDMStorage4 : public IWMDMStorage3
  1550. {
  1551. public:
  1552. virtual HRESULT STDMETHODCALLTYPE SetReferences(
  1553. /* [in] */ DWORD dwRefs,
  1554. /* [size_is][unique][in] */ __RPC__in_ecount_full_opt(dwRefs) IWMDMStorage **ppIWMDMStorage) = 0;
  1555. virtual HRESULT STDMETHODCALLTYPE GetReferences(
  1556. /* [out] */ __RPC__out DWORD *pdwRefs,
  1557. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwRefs) IWMDMStorage ***pppIWMDMStorage) = 0;
  1558. virtual HRESULT STDMETHODCALLTYPE GetRightsWithProgress(
  1559. /* [in] */ __RPC__in_opt IWMDMProgress3 *pIProgressCallback,
  1560. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1561. /* [out] */ __RPC__out UINT *pnRightsCount) = 0;
  1562. virtual HRESULT STDMETHODCALLTYPE GetSpecifiedMetadata(
  1563. /* [in] */ DWORD cProperties,
  1564. /* [size_is][in] */ __RPC__in_ecount_full(cProperties) LPCWSTR *ppwszPropNames,
  1565. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata) = 0;
  1566. virtual HRESULT STDMETHODCALLTYPE FindStorage(
  1567. /* [in] */ WMDM_FIND_SCOPE findScope,
  1568. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  1569. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage) = 0;
  1570. virtual HRESULT STDMETHODCALLTYPE GetParent(
  1571. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage) = 0;
  1572. };
  1573. #else /* C style interface */
  1574. typedef struct IWMDMStorage4Vtbl
  1575. {
  1576. BEGIN_INTERFACE
  1577. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1578. IWMDMStorage4 * This,
  1579. /* [in] */ __RPC__in REFIID riid,
  1580. /* [iid_is][out] */
  1581. __RPC__deref_out void **ppvObject);
  1582. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1583. IWMDMStorage4 * This);
  1584. ULONG ( STDMETHODCALLTYPE *Release )(
  1585. IWMDMStorage4 * This);
  1586. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  1587. IWMDMStorage4 * This,
  1588. /* [in] */ DWORD dwAttributes,
  1589. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  1590. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  1591. IWMDMStorage4 * This,
  1592. /* [out] */ __RPC__deref_out_opt IWMDMStorageGlobals **ppStorageGlobals);
  1593. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  1594. IWMDMStorage4 * This,
  1595. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1596. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  1597. HRESULT ( STDMETHODCALLTYPE *GetName )(
  1598. IWMDMStorage4 * This,
  1599. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1600. /* [in] */ UINT nMaxChars);
  1601. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  1602. IWMDMStorage4 * This,
  1603. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  1604. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  1605. IWMDMStorage4 * This,
  1606. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  1607. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  1608. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  1609. IWMDMStorage4 * This,
  1610. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1611. /* [out] */ __RPC__out UINT *pnRightsCount,
  1612. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1613. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  1614. IWMDMStorage4 * This,
  1615. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **pEnumStorage);
  1616. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  1617. IWMDMStorage4 * This,
  1618. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  1619. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  1620. IWMDMStorage4 * This,
  1621. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  1622. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  1623. HRESULT ( STDMETHODCALLTYPE *SetAttributes2 )(
  1624. IWMDMStorage4 * This,
  1625. /* [in] */ DWORD dwAttributes,
  1626. /* [in] */ DWORD dwAttributesEx,
  1627. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  1628. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  1629. HRESULT ( STDMETHODCALLTYPE *GetAttributes2 )(
  1630. IWMDMStorage4 * This,
  1631. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1632. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  1633. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  1634. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  1635. HRESULT ( STDMETHODCALLTYPE *GetMetadata )(
  1636. IWMDMStorage4 * This,
  1637. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata);
  1638. HRESULT ( STDMETHODCALLTYPE *SetMetadata )(
  1639. IWMDMStorage4 * This,
  1640. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  1641. HRESULT ( STDMETHODCALLTYPE *CreateEmptyMetadataObject )(
  1642. IWMDMStorage4 * This,
  1643. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata);
  1644. HRESULT ( STDMETHODCALLTYPE *SetEnumPreference )(
  1645. IWMDMStorage4 * This,
  1646. /* [out][in] */ __RPC__inout WMDM_STORAGE_ENUM_MODE *pMode,
  1647. /* [in] */ DWORD nViews,
  1648. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(nViews) WMDMMetadataView *pViews);
  1649. HRESULT ( STDMETHODCALLTYPE *SetReferences )(
  1650. IWMDMStorage4 * This,
  1651. /* [in] */ DWORD dwRefs,
  1652. /* [size_is][unique][in] */ __RPC__in_ecount_full_opt(dwRefs) IWMDMStorage **ppIWMDMStorage);
  1653. HRESULT ( STDMETHODCALLTYPE *GetReferences )(
  1654. IWMDMStorage4 * This,
  1655. /* [out] */ __RPC__out DWORD *pdwRefs,
  1656. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwRefs) IWMDMStorage ***pppIWMDMStorage);
  1657. HRESULT ( STDMETHODCALLTYPE *GetRightsWithProgress )(
  1658. IWMDMStorage4 * This,
  1659. /* [in] */ __RPC__in_opt IWMDMProgress3 *pIProgressCallback,
  1660. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  1661. /* [out] */ __RPC__out UINT *pnRightsCount);
  1662. HRESULT ( STDMETHODCALLTYPE *GetSpecifiedMetadata )(
  1663. IWMDMStorage4 * This,
  1664. /* [in] */ DWORD cProperties,
  1665. /* [size_is][in] */ __RPC__in_ecount_full(cProperties) LPCWSTR *ppwszPropNames,
  1666. /* [out] */ __RPC__deref_out_opt IWMDMMetaData **ppMetadata);
  1667. HRESULT ( STDMETHODCALLTYPE *FindStorage )(
  1668. IWMDMStorage4 * This,
  1669. /* [in] */ WMDM_FIND_SCOPE findScope,
  1670. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  1671. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  1672. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  1673. IWMDMStorage4 * This,
  1674. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  1675. END_INTERFACE
  1676. } IWMDMStorage4Vtbl;
  1677. interface IWMDMStorage4
  1678. {
  1679. CONST_VTBL struct IWMDMStorage4Vtbl *lpVtbl;
  1680. };
  1681. #ifdef COBJMACROS
  1682. #define IWMDMStorage4_QueryInterface(This,riid,ppvObject) \
  1683. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1684. #define IWMDMStorage4_AddRef(This) \
  1685. ( (This)->lpVtbl -> AddRef(This) )
  1686. #define IWMDMStorage4_Release(This) \
  1687. ( (This)->lpVtbl -> Release(This) )
  1688. #define IWMDMStorage4_SetAttributes(This,dwAttributes,pFormat) \
  1689. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  1690. #define IWMDMStorage4_GetStorageGlobals(This,ppStorageGlobals) \
  1691. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  1692. #define IWMDMStorage4_GetAttributes(This,pdwAttributes,pFormat) \
  1693. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  1694. #define IWMDMStorage4_GetName(This,pwszName,nMaxChars) \
  1695. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  1696. #define IWMDMStorage4_GetDate(This,pDateTimeUTC) \
  1697. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  1698. #define IWMDMStorage4_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  1699. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  1700. #define IWMDMStorage4_GetRights(This,ppRights,pnRightsCount,abMac) \
  1701. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  1702. #define IWMDMStorage4_EnumStorage(This,pEnumStorage) \
  1703. ( (This)->lpVtbl -> EnumStorage(This,pEnumStorage) )
  1704. #define IWMDMStorage4_SendOpaqueCommand(This,pCommand) \
  1705. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  1706. #define IWMDMStorage4_GetStorage(This,pszStorageName,ppStorage) \
  1707. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  1708. #define IWMDMStorage4_SetAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) \
  1709. ( (This)->lpVtbl -> SetAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) )
  1710. #define IWMDMStorage4_GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  1711. ( (This)->lpVtbl -> GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  1712. #define IWMDMStorage4_GetMetadata(This,ppMetadata) \
  1713. ( (This)->lpVtbl -> GetMetadata(This,ppMetadata) )
  1714. #define IWMDMStorage4_SetMetadata(This,pMetadata) \
  1715. ( (This)->lpVtbl -> SetMetadata(This,pMetadata) )
  1716. #define IWMDMStorage4_CreateEmptyMetadataObject(This,ppMetadata) \
  1717. ( (This)->lpVtbl -> CreateEmptyMetadataObject(This,ppMetadata) )
  1718. #define IWMDMStorage4_SetEnumPreference(This,pMode,nViews,pViews) \
  1719. ( (This)->lpVtbl -> SetEnumPreference(This,pMode,nViews,pViews) )
  1720. #define IWMDMStorage4_SetReferences(This,dwRefs,ppIWMDMStorage) \
  1721. ( (This)->lpVtbl -> SetReferences(This,dwRefs,ppIWMDMStorage) )
  1722. #define IWMDMStorage4_GetReferences(This,pdwRefs,pppIWMDMStorage) \
  1723. ( (This)->lpVtbl -> GetReferences(This,pdwRefs,pppIWMDMStorage) )
  1724. #define IWMDMStorage4_GetRightsWithProgress(This,pIProgressCallback,ppRights,pnRightsCount) \
  1725. ( (This)->lpVtbl -> GetRightsWithProgress(This,pIProgressCallback,ppRights,pnRightsCount) )
  1726. #define IWMDMStorage4_GetSpecifiedMetadata(This,cProperties,ppwszPropNames,ppMetadata) \
  1727. ( (This)->lpVtbl -> GetSpecifiedMetadata(This,cProperties,ppwszPropNames,ppMetadata) )
  1728. #define IWMDMStorage4_FindStorage(This,findScope,pwszUniqueID,ppStorage) \
  1729. ( (This)->lpVtbl -> FindStorage(This,findScope,pwszUniqueID,ppStorage) )
  1730. #define IWMDMStorage4_GetParent(This,ppStorage) \
  1731. ( (This)->lpVtbl -> GetParent(This,ppStorage) )
  1732. #endif /* COBJMACROS */
  1733. #endif /* C style interface */
  1734. #endif /* __IWMDMStorage4_INTERFACE_DEFINED__ */
  1735. #ifndef __IWMDMOperation_INTERFACE_DEFINED__
  1736. #define __IWMDMOperation_INTERFACE_DEFINED__
  1737. /* interface IWMDMOperation */
  1738. /* [unique][uuid][object] */
  1739. EXTERN_C const IID IID_IWMDMOperation;
  1740. #if defined(__cplusplus) && !defined(CINTERFACE)
  1741. MIDL_INTERFACE("1DCB3A0B-33ED-11d3-8470-00C04F79DBC0")
  1742. IWMDMOperation : public IUnknown
  1743. {
  1744. public:
  1745. virtual HRESULT STDMETHODCALLTYPE BeginRead( void) = 0;
  1746. virtual HRESULT STDMETHODCALLTYPE BeginWrite( void) = 0;
  1747. virtual HRESULT STDMETHODCALLTYPE GetObjectName(
  1748. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1749. /* [in] */ UINT nMaxChars) = 0;
  1750. virtual HRESULT STDMETHODCALLTYPE SetObjectName(
  1751. /* [size_is][string][in] */ __RPC__in_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1752. /* [in] */ UINT nMaxChars) = 0;
  1753. virtual HRESULT STDMETHODCALLTYPE GetObjectAttributes(
  1754. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1755. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat) = 0;
  1756. virtual HRESULT STDMETHODCALLTYPE SetObjectAttributes(
  1757. /* [in] */ DWORD dwAttributes,
  1758. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat) = 0;
  1759. virtual HRESULT STDMETHODCALLTYPE GetObjectTotalSize(
  1760. /* [out] */ __RPC__out DWORD *pdwSize,
  1761. /* [out] */ __RPC__out DWORD *pdwSizeHigh) = 0;
  1762. virtual HRESULT STDMETHODCALLTYPE SetObjectTotalSize(
  1763. /* [in] */ DWORD dwSize,
  1764. /* [in] */ DWORD dwSizeHigh) = 0;
  1765. virtual HRESULT STDMETHODCALLTYPE TransferObjectData(
  1766. /* [size_is][out][in] */ __RPC__inout_ecount_full(*pdwSize) BYTE *pData,
  1767. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  1768. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  1769. virtual HRESULT STDMETHODCALLTYPE End(
  1770. /* [in] */ __RPC__in HRESULT *phCompletionCode,
  1771. /* [in] */ __RPC__in_opt IUnknown *pNewObject) = 0;
  1772. };
  1773. #else /* C style interface */
  1774. typedef struct IWMDMOperationVtbl
  1775. {
  1776. BEGIN_INTERFACE
  1777. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1778. IWMDMOperation * This,
  1779. /* [in] */ __RPC__in REFIID riid,
  1780. /* [iid_is][out] */
  1781. __RPC__deref_out void **ppvObject);
  1782. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1783. IWMDMOperation * This);
  1784. ULONG ( STDMETHODCALLTYPE *Release )(
  1785. IWMDMOperation * This);
  1786. HRESULT ( STDMETHODCALLTYPE *BeginRead )(
  1787. IWMDMOperation * This);
  1788. HRESULT ( STDMETHODCALLTYPE *BeginWrite )(
  1789. IWMDMOperation * This);
  1790. HRESULT ( STDMETHODCALLTYPE *GetObjectName )(
  1791. IWMDMOperation * This,
  1792. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1793. /* [in] */ UINT nMaxChars);
  1794. HRESULT ( STDMETHODCALLTYPE *SetObjectName )(
  1795. IWMDMOperation * This,
  1796. /* [size_is][string][in] */ __RPC__in_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1797. /* [in] */ UINT nMaxChars);
  1798. HRESULT ( STDMETHODCALLTYPE *GetObjectAttributes )(
  1799. IWMDMOperation * This,
  1800. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1801. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  1802. HRESULT ( STDMETHODCALLTYPE *SetObjectAttributes )(
  1803. IWMDMOperation * This,
  1804. /* [in] */ DWORD dwAttributes,
  1805. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  1806. HRESULT ( STDMETHODCALLTYPE *GetObjectTotalSize )(
  1807. IWMDMOperation * This,
  1808. /* [out] */ __RPC__out DWORD *pdwSize,
  1809. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  1810. HRESULT ( STDMETHODCALLTYPE *SetObjectTotalSize )(
  1811. IWMDMOperation * This,
  1812. /* [in] */ DWORD dwSize,
  1813. /* [in] */ DWORD dwSizeHigh);
  1814. HRESULT ( STDMETHODCALLTYPE *TransferObjectData )(
  1815. IWMDMOperation * This,
  1816. /* [size_is][out][in] */ __RPC__inout_ecount_full(*pdwSize) BYTE *pData,
  1817. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  1818. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1819. HRESULT ( STDMETHODCALLTYPE *End )(
  1820. IWMDMOperation * This,
  1821. /* [in] */ __RPC__in HRESULT *phCompletionCode,
  1822. /* [in] */ __RPC__in_opt IUnknown *pNewObject);
  1823. END_INTERFACE
  1824. } IWMDMOperationVtbl;
  1825. interface IWMDMOperation
  1826. {
  1827. CONST_VTBL struct IWMDMOperationVtbl *lpVtbl;
  1828. };
  1829. #ifdef COBJMACROS
  1830. #define IWMDMOperation_QueryInterface(This,riid,ppvObject) \
  1831. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1832. #define IWMDMOperation_AddRef(This) \
  1833. ( (This)->lpVtbl -> AddRef(This) )
  1834. #define IWMDMOperation_Release(This) \
  1835. ( (This)->lpVtbl -> Release(This) )
  1836. #define IWMDMOperation_BeginRead(This) \
  1837. ( (This)->lpVtbl -> BeginRead(This) )
  1838. #define IWMDMOperation_BeginWrite(This) \
  1839. ( (This)->lpVtbl -> BeginWrite(This) )
  1840. #define IWMDMOperation_GetObjectName(This,pwszName,nMaxChars) \
  1841. ( (This)->lpVtbl -> GetObjectName(This,pwszName,nMaxChars) )
  1842. #define IWMDMOperation_SetObjectName(This,pwszName,nMaxChars) \
  1843. ( (This)->lpVtbl -> SetObjectName(This,pwszName,nMaxChars) )
  1844. #define IWMDMOperation_GetObjectAttributes(This,pdwAttributes,pFormat) \
  1845. ( (This)->lpVtbl -> GetObjectAttributes(This,pdwAttributes,pFormat) )
  1846. #define IWMDMOperation_SetObjectAttributes(This,dwAttributes,pFormat) \
  1847. ( (This)->lpVtbl -> SetObjectAttributes(This,dwAttributes,pFormat) )
  1848. #define IWMDMOperation_GetObjectTotalSize(This,pdwSize,pdwSizeHigh) \
  1849. ( (This)->lpVtbl -> GetObjectTotalSize(This,pdwSize,pdwSizeHigh) )
  1850. #define IWMDMOperation_SetObjectTotalSize(This,dwSize,dwSizeHigh) \
  1851. ( (This)->lpVtbl -> SetObjectTotalSize(This,dwSize,dwSizeHigh) )
  1852. #define IWMDMOperation_TransferObjectData(This,pData,pdwSize,abMac) \
  1853. ( (This)->lpVtbl -> TransferObjectData(This,pData,pdwSize,abMac) )
  1854. #define IWMDMOperation_End(This,phCompletionCode,pNewObject) \
  1855. ( (This)->lpVtbl -> End(This,phCompletionCode,pNewObject) )
  1856. #endif /* COBJMACROS */
  1857. #endif /* C style interface */
  1858. #endif /* __IWMDMOperation_INTERFACE_DEFINED__ */
  1859. #ifndef __IWMDMOperation2_INTERFACE_DEFINED__
  1860. #define __IWMDMOperation2_INTERFACE_DEFINED__
  1861. /* interface IWMDMOperation2 */
  1862. /* [unique][uuid][object] */
  1863. EXTERN_C const IID IID_IWMDMOperation2;
  1864. #if defined(__cplusplus) && !defined(CINTERFACE)
  1865. MIDL_INTERFACE("33445B48-7DF7-425c-AD8F-0FC6D82F9F75")
  1866. IWMDMOperation2 : public IWMDMOperation
  1867. {
  1868. public:
  1869. virtual HRESULT STDMETHODCALLTYPE SetObjectAttributes2(
  1870. /* [in] */ DWORD dwAttributes,
  1871. /* [in] */ DWORD dwAttributesEx,
  1872. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  1873. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat) = 0;
  1874. virtual HRESULT STDMETHODCALLTYPE GetObjectAttributes2(
  1875. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1876. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  1877. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  1878. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat) = 0;
  1879. };
  1880. #else /* C style interface */
  1881. typedef struct IWMDMOperation2Vtbl
  1882. {
  1883. BEGIN_INTERFACE
  1884. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  1885. IWMDMOperation2 * This,
  1886. /* [in] */ __RPC__in REFIID riid,
  1887. /* [iid_is][out] */
  1888. __RPC__deref_out void **ppvObject);
  1889. ULONG ( STDMETHODCALLTYPE *AddRef )(
  1890. IWMDMOperation2 * This);
  1891. ULONG ( STDMETHODCALLTYPE *Release )(
  1892. IWMDMOperation2 * This);
  1893. HRESULT ( STDMETHODCALLTYPE *BeginRead )(
  1894. IWMDMOperation2 * This);
  1895. HRESULT ( STDMETHODCALLTYPE *BeginWrite )(
  1896. IWMDMOperation2 * This);
  1897. HRESULT ( STDMETHODCALLTYPE *GetObjectName )(
  1898. IWMDMOperation2 * This,
  1899. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1900. /* [in] */ UINT nMaxChars);
  1901. HRESULT ( STDMETHODCALLTYPE *SetObjectName )(
  1902. IWMDMOperation2 * This,
  1903. /* [size_is][string][in] */ __RPC__in_ecount_full_string(nMaxChars) LPWSTR pwszName,
  1904. /* [in] */ UINT nMaxChars);
  1905. HRESULT ( STDMETHODCALLTYPE *GetObjectAttributes )(
  1906. IWMDMOperation2 * This,
  1907. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1908. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  1909. HRESULT ( STDMETHODCALLTYPE *SetObjectAttributes )(
  1910. IWMDMOperation2 * This,
  1911. /* [in] */ DWORD dwAttributes,
  1912. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  1913. HRESULT ( STDMETHODCALLTYPE *GetObjectTotalSize )(
  1914. IWMDMOperation2 * This,
  1915. /* [out] */ __RPC__out DWORD *pdwSize,
  1916. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  1917. HRESULT ( STDMETHODCALLTYPE *SetObjectTotalSize )(
  1918. IWMDMOperation2 * This,
  1919. /* [in] */ DWORD dwSize,
  1920. /* [in] */ DWORD dwSizeHigh);
  1921. HRESULT ( STDMETHODCALLTYPE *TransferObjectData )(
  1922. IWMDMOperation2 * This,
  1923. /* [size_is][out][in] */ __RPC__inout_ecount_full(*pdwSize) BYTE *pData,
  1924. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  1925. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  1926. HRESULT ( STDMETHODCALLTYPE *End )(
  1927. IWMDMOperation2 * This,
  1928. /* [in] */ __RPC__in HRESULT *phCompletionCode,
  1929. /* [in] */ __RPC__in_opt IUnknown *pNewObject);
  1930. HRESULT ( STDMETHODCALLTYPE *SetObjectAttributes2 )(
  1931. IWMDMOperation2 * This,
  1932. /* [in] */ DWORD dwAttributes,
  1933. /* [in] */ DWORD dwAttributesEx,
  1934. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  1935. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  1936. HRESULT ( STDMETHODCALLTYPE *GetObjectAttributes2 )(
  1937. IWMDMOperation2 * This,
  1938. /* [out] */ __RPC__out DWORD *pdwAttributes,
  1939. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  1940. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  1941. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  1942. END_INTERFACE
  1943. } IWMDMOperation2Vtbl;
  1944. interface IWMDMOperation2
  1945. {
  1946. CONST_VTBL struct IWMDMOperation2Vtbl *lpVtbl;
  1947. };
  1948. #ifdef COBJMACROS
  1949. #define IWMDMOperation2_QueryInterface(This,riid,ppvObject) \
  1950. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1951. #define IWMDMOperation2_AddRef(This) \
  1952. ( (This)->lpVtbl -> AddRef(This) )
  1953. #define IWMDMOperation2_Release(This) \
  1954. ( (This)->lpVtbl -> Release(This) )
  1955. #define IWMDMOperation2_BeginRead(This) \
  1956. ( (This)->lpVtbl -> BeginRead(This) )
  1957. #define IWMDMOperation2_BeginWrite(This) \
  1958. ( (This)->lpVtbl -> BeginWrite(This) )
  1959. #define IWMDMOperation2_GetObjectName(This,pwszName,nMaxChars) \
  1960. ( (This)->lpVtbl -> GetObjectName(This,pwszName,nMaxChars) )
  1961. #define IWMDMOperation2_SetObjectName(This,pwszName,nMaxChars) \
  1962. ( (This)->lpVtbl -> SetObjectName(This,pwszName,nMaxChars) )
  1963. #define IWMDMOperation2_GetObjectAttributes(This,pdwAttributes,pFormat) \
  1964. ( (This)->lpVtbl -> GetObjectAttributes(This,pdwAttributes,pFormat) )
  1965. #define IWMDMOperation2_SetObjectAttributes(This,dwAttributes,pFormat) \
  1966. ( (This)->lpVtbl -> SetObjectAttributes(This,dwAttributes,pFormat) )
  1967. #define IWMDMOperation2_GetObjectTotalSize(This,pdwSize,pdwSizeHigh) \
  1968. ( (This)->lpVtbl -> GetObjectTotalSize(This,pdwSize,pdwSizeHigh) )
  1969. #define IWMDMOperation2_SetObjectTotalSize(This,dwSize,dwSizeHigh) \
  1970. ( (This)->lpVtbl -> SetObjectTotalSize(This,dwSize,dwSizeHigh) )
  1971. #define IWMDMOperation2_TransferObjectData(This,pData,pdwSize,abMac) \
  1972. ( (This)->lpVtbl -> TransferObjectData(This,pData,pdwSize,abMac) )
  1973. #define IWMDMOperation2_End(This,phCompletionCode,pNewObject) \
  1974. ( (This)->lpVtbl -> End(This,phCompletionCode,pNewObject) )
  1975. #define IWMDMOperation2_SetObjectAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) \
  1976. ( (This)->lpVtbl -> SetObjectAttributes2(This,dwAttributes,dwAttributesEx,pFormat,pVideoFormat) )
  1977. #define IWMDMOperation2_GetObjectAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  1978. ( (This)->lpVtbl -> GetObjectAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  1979. #endif /* COBJMACROS */
  1980. #endif /* C style interface */
  1981. #endif /* __IWMDMOperation2_INTERFACE_DEFINED__ */
  1982. #ifndef __IWMDMOperation3_INTERFACE_DEFINED__
  1983. #define __IWMDMOperation3_INTERFACE_DEFINED__
  1984. /* interface IWMDMOperation3 */
  1985. /* [unique][uuid][object] */
  1986. EXTERN_C const IID IID_IWMDMOperation3;
  1987. #if defined(__cplusplus) && !defined(CINTERFACE)
  1988. MIDL_INTERFACE("d1f9b46a-9ca8-46d8-9d0f-1ec9bae54919")
  1989. IWMDMOperation3 : public IWMDMOperation
  1990. {
  1991. public:
  1992. virtual HRESULT STDMETHODCALLTYPE TransferObjectDataOnClearChannel(
  1993. /* [size_is][out][in] */ __RPC__inout_ecount_full(*pdwSize) BYTE *pData,
  1994. /* [out][in] */ __RPC__inout DWORD *pdwSize) = 0;
  1995. };
  1996. #else /* C style interface */
  1997. typedef struct IWMDMOperation3Vtbl
  1998. {
  1999. BEGIN_INTERFACE
  2000. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2001. IWMDMOperation3 * This,
  2002. /* [in] */ __RPC__in REFIID riid,
  2003. /* [iid_is][out] */
  2004. __RPC__deref_out void **ppvObject);
  2005. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2006. IWMDMOperation3 * This);
  2007. ULONG ( STDMETHODCALLTYPE *Release )(
  2008. IWMDMOperation3 * This);
  2009. HRESULT ( STDMETHODCALLTYPE *BeginRead )(
  2010. IWMDMOperation3 * This);
  2011. HRESULT ( STDMETHODCALLTYPE *BeginWrite )(
  2012. IWMDMOperation3 * This);
  2013. HRESULT ( STDMETHODCALLTYPE *GetObjectName )(
  2014. IWMDMOperation3 * This,
  2015. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2016. /* [in] */ UINT nMaxChars);
  2017. HRESULT ( STDMETHODCALLTYPE *SetObjectName )(
  2018. IWMDMOperation3 * This,
  2019. /* [size_is][string][in] */ __RPC__in_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2020. /* [in] */ UINT nMaxChars);
  2021. HRESULT ( STDMETHODCALLTYPE *GetObjectAttributes )(
  2022. IWMDMOperation3 * This,
  2023. /* [out] */ __RPC__out DWORD *pdwAttributes,
  2024. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  2025. HRESULT ( STDMETHODCALLTYPE *SetObjectAttributes )(
  2026. IWMDMOperation3 * This,
  2027. /* [in] */ DWORD dwAttributes,
  2028. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  2029. HRESULT ( STDMETHODCALLTYPE *GetObjectTotalSize )(
  2030. IWMDMOperation3 * This,
  2031. /* [out] */ __RPC__out DWORD *pdwSize,
  2032. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  2033. HRESULT ( STDMETHODCALLTYPE *SetObjectTotalSize )(
  2034. IWMDMOperation3 * This,
  2035. /* [in] */ DWORD dwSize,
  2036. /* [in] */ DWORD dwSizeHigh);
  2037. HRESULT ( STDMETHODCALLTYPE *TransferObjectData )(
  2038. IWMDMOperation3 * This,
  2039. /* [size_is][out][in] */ __RPC__inout_ecount_full(*pdwSize) BYTE *pData,
  2040. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  2041. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  2042. HRESULT ( STDMETHODCALLTYPE *End )(
  2043. IWMDMOperation3 * This,
  2044. /* [in] */ __RPC__in HRESULT *phCompletionCode,
  2045. /* [in] */ __RPC__in_opt IUnknown *pNewObject);
  2046. HRESULT ( STDMETHODCALLTYPE *TransferObjectDataOnClearChannel )(
  2047. IWMDMOperation3 * This,
  2048. /* [size_is][out][in] */ __RPC__inout_ecount_full(*pdwSize) BYTE *pData,
  2049. /* [out][in] */ __RPC__inout DWORD *pdwSize);
  2050. END_INTERFACE
  2051. } IWMDMOperation3Vtbl;
  2052. interface IWMDMOperation3
  2053. {
  2054. CONST_VTBL struct IWMDMOperation3Vtbl *lpVtbl;
  2055. };
  2056. #ifdef COBJMACROS
  2057. #define IWMDMOperation3_QueryInterface(This,riid,ppvObject) \
  2058. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2059. #define IWMDMOperation3_AddRef(This) \
  2060. ( (This)->lpVtbl -> AddRef(This) )
  2061. #define IWMDMOperation3_Release(This) \
  2062. ( (This)->lpVtbl -> Release(This) )
  2063. #define IWMDMOperation3_BeginRead(This) \
  2064. ( (This)->lpVtbl -> BeginRead(This) )
  2065. #define IWMDMOperation3_BeginWrite(This) \
  2066. ( (This)->lpVtbl -> BeginWrite(This) )
  2067. #define IWMDMOperation3_GetObjectName(This,pwszName,nMaxChars) \
  2068. ( (This)->lpVtbl -> GetObjectName(This,pwszName,nMaxChars) )
  2069. #define IWMDMOperation3_SetObjectName(This,pwszName,nMaxChars) \
  2070. ( (This)->lpVtbl -> SetObjectName(This,pwszName,nMaxChars) )
  2071. #define IWMDMOperation3_GetObjectAttributes(This,pdwAttributes,pFormat) \
  2072. ( (This)->lpVtbl -> GetObjectAttributes(This,pdwAttributes,pFormat) )
  2073. #define IWMDMOperation3_SetObjectAttributes(This,dwAttributes,pFormat) \
  2074. ( (This)->lpVtbl -> SetObjectAttributes(This,dwAttributes,pFormat) )
  2075. #define IWMDMOperation3_GetObjectTotalSize(This,pdwSize,pdwSizeHigh) \
  2076. ( (This)->lpVtbl -> GetObjectTotalSize(This,pdwSize,pdwSizeHigh) )
  2077. #define IWMDMOperation3_SetObjectTotalSize(This,dwSize,dwSizeHigh) \
  2078. ( (This)->lpVtbl -> SetObjectTotalSize(This,dwSize,dwSizeHigh) )
  2079. #define IWMDMOperation3_TransferObjectData(This,pData,pdwSize,abMac) \
  2080. ( (This)->lpVtbl -> TransferObjectData(This,pData,pdwSize,abMac) )
  2081. #define IWMDMOperation3_End(This,phCompletionCode,pNewObject) \
  2082. ( (This)->lpVtbl -> End(This,phCompletionCode,pNewObject) )
  2083. #define IWMDMOperation3_TransferObjectDataOnClearChannel(This,pData,pdwSize) \
  2084. ( (This)->lpVtbl -> TransferObjectDataOnClearChannel(This,pData,pdwSize) )
  2085. #endif /* COBJMACROS */
  2086. #endif /* C style interface */
  2087. #endif /* __IWMDMOperation3_INTERFACE_DEFINED__ */
  2088. #ifndef __IWMDMProgress_INTERFACE_DEFINED__
  2089. #define __IWMDMProgress_INTERFACE_DEFINED__
  2090. /* interface IWMDMProgress */
  2091. /* [unique][uuid][object] */
  2092. EXTERN_C const IID IID_IWMDMProgress;
  2093. #if defined(__cplusplus) && !defined(CINTERFACE)
  2094. MIDL_INTERFACE("1DCB3A0C-33ED-11d3-8470-00C04F79DBC0")
  2095. IWMDMProgress : public IUnknown
  2096. {
  2097. public:
  2098. virtual HRESULT STDMETHODCALLTYPE Begin(
  2099. /* [in] */ DWORD dwEstimatedTicks) = 0;
  2100. virtual HRESULT STDMETHODCALLTYPE Progress(
  2101. /* [in] */ DWORD dwTranspiredTicks) = 0;
  2102. virtual HRESULT STDMETHODCALLTYPE End( void) = 0;
  2103. };
  2104. #else /* C style interface */
  2105. typedef struct IWMDMProgressVtbl
  2106. {
  2107. BEGIN_INTERFACE
  2108. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2109. IWMDMProgress * This,
  2110. /* [in] */ __RPC__in REFIID riid,
  2111. /* [iid_is][out] */
  2112. __RPC__deref_out void **ppvObject);
  2113. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2114. IWMDMProgress * This);
  2115. ULONG ( STDMETHODCALLTYPE *Release )(
  2116. IWMDMProgress * This);
  2117. HRESULT ( STDMETHODCALLTYPE *Begin )(
  2118. IWMDMProgress * This,
  2119. /* [in] */ DWORD dwEstimatedTicks);
  2120. HRESULT ( STDMETHODCALLTYPE *Progress )(
  2121. IWMDMProgress * This,
  2122. /* [in] */ DWORD dwTranspiredTicks);
  2123. HRESULT ( STDMETHODCALLTYPE *End )(
  2124. IWMDMProgress * This);
  2125. END_INTERFACE
  2126. } IWMDMProgressVtbl;
  2127. interface IWMDMProgress
  2128. {
  2129. CONST_VTBL struct IWMDMProgressVtbl *lpVtbl;
  2130. };
  2131. #ifdef COBJMACROS
  2132. #define IWMDMProgress_QueryInterface(This,riid,ppvObject) \
  2133. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2134. #define IWMDMProgress_AddRef(This) \
  2135. ( (This)->lpVtbl -> AddRef(This) )
  2136. #define IWMDMProgress_Release(This) \
  2137. ( (This)->lpVtbl -> Release(This) )
  2138. #define IWMDMProgress_Begin(This,dwEstimatedTicks) \
  2139. ( (This)->lpVtbl -> Begin(This,dwEstimatedTicks) )
  2140. #define IWMDMProgress_Progress(This,dwTranspiredTicks) \
  2141. ( (This)->lpVtbl -> Progress(This,dwTranspiredTicks) )
  2142. #define IWMDMProgress_End(This) \
  2143. ( (This)->lpVtbl -> End(This) )
  2144. #endif /* COBJMACROS */
  2145. #endif /* C style interface */
  2146. #endif /* __IWMDMProgress_INTERFACE_DEFINED__ */
  2147. #ifndef __IWMDMProgress2_INTERFACE_DEFINED__
  2148. #define __IWMDMProgress2_INTERFACE_DEFINED__
  2149. /* interface IWMDMProgress2 */
  2150. /* [unique][uuid][object] */
  2151. EXTERN_C const IID IID_IWMDMProgress2;
  2152. #if defined(__cplusplus) && !defined(CINTERFACE)
  2153. MIDL_INTERFACE("3A43F550-B383-4e92-B04A-E6BBC660FEFC")
  2154. IWMDMProgress2 : public IWMDMProgress
  2155. {
  2156. public:
  2157. virtual HRESULT STDMETHODCALLTYPE End2(
  2158. /* [in] */ HRESULT hrCompletionCode) = 0;
  2159. };
  2160. #else /* C style interface */
  2161. typedef struct IWMDMProgress2Vtbl
  2162. {
  2163. BEGIN_INTERFACE
  2164. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2165. IWMDMProgress2 * This,
  2166. /* [in] */ __RPC__in REFIID riid,
  2167. /* [iid_is][out] */
  2168. __RPC__deref_out void **ppvObject);
  2169. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2170. IWMDMProgress2 * This);
  2171. ULONG ( STDMETHODCALLTYPE *Release )(
  2172. IWMDMProgress2 * This);
  2173. HRESULT ( STDMETHODCALLTYPE *Begin )(
  2174. IWMDMProgress2 * This,
  2175. /* [in] */ DWORD dwEstimatedTicks);
  2176. HRESULT ( STDMETHODCALLTYPE *Progress )(
  2177. IWMDMProgress2 * This,
  2178. /* [in] */ DWORD dwTranspiredTicks);
  2179. HRESULT ( STDMETHODCALLTYPE *End )(
  2180. IWMDMProgress2 * This);
  2181. HRESULT ( STDMETHODCALLTYPE *End2 )(
  2182. IWMDMProgress2 * This,
  2183. /* [in] */ HRESULT hrCompletionCode);
  2184. END_INTERFACE
  2185. } IWMDMProgress2Vtbl;
  2186. interface IWMDMProgress2
  2187. {
  2188. CONST_VTBL struct IWMDMProgress2Vtbl *lpVtbl;
  2189. };
  2190. #ifdef COBJMACROS
  2191. #define IWMDMProgress2_QueryInterface(This,riid,ppvObject) \
  2192. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2193. #define IWMDMProgress2_AddRef(This) \
  2194. ( (This)->lpVtbl -> AddRef(This) )
  2195. #define IWMDMProgress2_Release(This) \
  2196. ( (This)->lpVtbl -> Release(This) )
  2197. #define IWMDMProgress2_Begin(This,dwEstimatedTicks) \
  2198. ( (This)->lpVtbl -> Begin(This,dwEstimatedTicks) )
  2199. #define IWMDMProgress2_Progress(This,dwTranspiredTicks) \
  2200. ( (This)->lpVtbl -> Progress(This,dwTranspiredTicks) )
  2201. #define IWMDMProgress2_End(This) \
  2202. ( (This)->lpVtbl -> End(This) )
  2203. #define IWMDMProgress2_End2(This,hrCompletionCode) \
  2204. ( (This)->lpVtbl -> End2(This,hrCompletionCode) )
  2205. #endif /* COBJMACROS */
  2206. #endif /* C style interface */
  2207. #endif /* __IWMDMProgress2_INTERFACE_DEFINED__ */
  2208. #ifndef __IWMDMProgress3_INTERFACE_DEFINED__
  2209. #define __IWMDMProgress3_INTERFACE_DEFINED__
  2210. /* interface IWMDMProgress3 */
  2211. /* [unique][uuid][object] */
  2212. EXTERN_C const IID IID_IWMDMProgress3;
  2213. #if defined(__cplusplus) && !defined(CINTERFACE)
  2214. MIDL_INTERFACE("21DE01CB-3BB4-4929-B21A-17AF3F80F658")
  2215. IWMDMProgress3 : public IWMDMProgress2
  2216. {
  2217. public:
  2218. virtual HRESULT STDMETHODCALLTYPE Begin3(
  2219. /* [in] */ GUID EventId,
  2220. /* [in] */ DWORD dwEstimatedTicks,
  2221. /* [unique][out][in] */ __RPC__inout_opt OPAQUECOMMAND *pContext) = 0;
  2222. virtual HRESULT STDMETHODCALLTYPE Progress3(
  2223. /* [in] */ GUID EventId,
  2224. /* [in] */ DWORD dwTranspiredTicks,
  2225. /* [unique][out][in] */ __RPC__inout_opt OPAQUECOMMAND *pContext) = 0;
  2226. virtual HRESULT STDMETHODCALLTYPE End3(
  2227. /* [in] */ GUID EventId,
  2228. /* [in] */ HRESULT hrCompletionCode,
  2229. /* [unique][out][in] */ __RPC__inout_opt OPAQUECOMMAND *pContext) = 0;
  2230. };
  2231. #else /* C style interface */
  2232. typedef struct IWMDMProgress3Vtbl
  2233. {
  2234. BEGIN_INTERFACE
  2235. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2236. IWMDMProgress3 * This,
  2237. /* [in] */ __RPC__in REFIID riid,
  2238. /* [iid_is][out] */
  2239. __RPC__deref_out void **ppvObject);
  2240. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2241. IWMDMProgress3 * This);
  2242. ULONG ( STDMETHODCALLTYPE *Release )(
  2243. IWMDMProgress3 * This);
  2244. HRESULT ( STDMETHODCALLTYPE *Begin )(
  2245. IWMDMProgress3 * This,
  2246. /* [in] */ DWORD dwEstimatedTicks);
  2247. HRESULT ( STDMETHODCALLTYPE *Progress )(
  2248. IWMDMProgress3 * This,
  2249. /* [in] */ DWORD dwTranspiredTicks);
  2250. HRESULT ( STDMETHODCALLTYPE *End )(
  2251. IWMDMProgress3 * This);
  2252. HRESULT ( STDMETHODCALLTYPE *End2 )(
  2253. IWMDMProgress3 * This,
  2254. /* [in] */ HRESULT hrCompletionCode);
  2255. HRESULT ( STDMETHODCALLTYPE *Begin3 )(
  2256. IWMDMProgress3 * This,
  2257. /* [in] */ GUID EventId,
  2258. /* [in] */ DWORD dwEstimatedTicks,
  2259. /* [unique][out][in] */ __RPC__inout_opt OPAQUECOMMAND *pContext);
  2260. HRESULT ( STDMETHODCALLTYPE *Progress3 )(
  2261. IWMDMProgress3 * This,
  2262. /* [in] */ GUID EventId,
  2263. /* [in] */ DWORD dwTranspiredTicks,
  2264. /* [unique][out][in] */ __RPC__inout_opt OPAQUECOMMAND *pContext);
  2265. HRESULT ( STDMETHODCALLTYPE *End3 )(
  2266. IWMDMProgress3 * This,
  2267. /* [in] */ GUID EventId,
  2268. /* [in] */ HRESULT hrCompletionCode,
  2269. /* [unique][out][in] */ __RPC__inout_opt OPAQUECOMMAND *pContext);
  2270. END_INTERFACE
  2271. } IWMDMProgress3Vtbl;
  2272. interface IWMDMProgress3
  2273. {
  2274. CONST_VTBL struct IWMDMProgress3Vtbl *lpVtbl;
  2275. };
  2276. #ifdef COBJMACROS
  2277. #define IWMDMProgress3_QueryInterface(This,riid,ppvObject) \
  2278. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2279. #define IWMDMProgress3_AddRef(This) \
  2280. ( (This)->lpVtbl -> AddRef(This) )
  2281. #define IWMDMProgress3_Release(This) \
  2282. ( (This)->lpVtbl -> Release(This) )
  2283. #define IWMDMProgress3_Begin(This,dwEstimatedTicks) \
  2284. ( (This)->lpVtbl -> Begin(This,dwEstimatedTicks) )
  2285. #define IWMDMProgress3_Progress(This,dwTranspiredTicks) \
  2286. ( (This)->lpVtbl -> Progress(This,dwTranspiredTicks) )
  2287. #define IWMDMProgress3_End(This) \
  2288. ( (This)->lpVtbl -> End(This) )
  2289. #define IWMDMProgress3_End2(This,hrCompletionCode) \
  2290. ( (This)->lpVtbl -> End2(This,hrCompletionCode) )
  2291. #define IWMDMProgress3_Begin3(This,EventId,dwEstimatedTicks,pContext) \
  2292. ( (This)->lpVtbl -> Begin3(This,EventId,dwEstimatedTicks,pContext) )
  2293. #define IWMDMProgress3_Progress3(This,EventId,dwTranspiredTicks,pContext) \
  2294. ( (This)->lpVtbl -> Progress3(This,EventId,dwTranspiredTicks,pContext) )
  2295. #define IWMDMProgress3_End3(This,EventId,hrCompletionCode,pContext) \
  2296. ( (This)->lpVtbl -> End3(This,EventId,hrCompletionCode,pContext) )
  2297. #endif /* COBJMACROS */
  2298. #endif /* C style interface */
  2299. #endif /* __IWMDMProgress3_INTERFACE_DEFINED__ */
  2300. #ifndef __IWMDMDevice_INTERFACE_DEFINED__
  2301. #define __IWMDMDevice_INTERFACE_DEFINED__
  2302. /* interface IWMDMDevice */
  2303. /* [unique][uuid][object] */
  2304. EXTERN_C const IID IID_IWMDMDevice;
  2305. #if defined(__cplusplus) && !defined(CINTERFACE)
  2306. MIDL_INTERFACE("1DCB3A02-33ED-11d3-8470-00C04F79DBC0")
  2307. IWMDMDevice : public IUnknown
  2308. {
  2309. public:
  2310. virtual HRESULT STDMETHODCALLTYPE GetName(
  2311. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2312. /* [in] */ UINT nMaxChars) = 0;
  2313. virtual HRESULT STDMETHODCALLTYPE GetManufacturer(
  2314. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2315. /* [in] */ UINT nMaxChars) = 0;
  2316. virtual HRESULT STDMETHODCALLTYPE GetVersion(
  2317. /* [out] */ __RPC__out DWORD *pdwVersion) = 0;
  2318. virtual HRESULT STDMETHODCALLTYPE GetType(
  2319. /* [out] */ __RPC__out DWORD *pdwType) = 0;
  2320. virtual HRESULT STDMETHODCALLTYPE GetSerialNumber(
  2321. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  2322. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  2323. virtual HRESULT STDMETHODCALLTYPE GetPowerSource(
  2324. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  2325. /* [out] */ __RPC__out DWORD *pdwPercentRemaining) = 0;
  2326. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  2327. /* [out] */ __RPC__out DWORD *pdwStatus) = 0;
  2328. virtual HRESULT STDMETHODCALLTYPE GetDeviceIcon(
  2329. /* [out] */ __RPC__out ULONG *hIcon) = 0;
  2330. virtual HRESULT STDMETHODCALLTYPE EnumStorage(
  2331. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **ppEnumStorage) = 0;
  2332. virtual HRESULT STDMETHODCALLTYPE GetFormatSupport(
  2333. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **ppFormatEx,
  2334. /* [out] */ __RPC__out UINT *pnFormatCount,
  2335. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  2336. /* [out] */ __RPC__out UINT *pnMimeTypeCount) = 0;
  2337. virtual HRESULT STDMETHODCALLTYPE SendOpaqueCommand(
  2338. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand) = 0;
  2339. };
  2340. #else /* C style interface */
  2341. typedef struct IWMDMDeviceVtbl
  2342. {
  2343. BEGIN_INTERFACE
  2344. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2345. IWMDMDevice * This,
  2346. /* [in] */ __RPC__in REFIID riid,
  2347. /* [iid_is][out] */
  2348. __RPC__deref_out void **ppvObject);
  2349. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2350. IWMDMDevice * This);
  2351. ULONG ( STDMETHODCALLTYPE *Release )(
  2352. IWMDMDevice * This);
  2353. HRESULT ( STDMETHODCALLTYPE *GetName )(
  2354. IWMDMDevice * This,
  2355. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2356. /* [in] */ UINT nMaxChars);
  2357. HRESULT ( STDMETHODCALLTYPE *GetManufacturer )(
  2358. IWMDMDevice * This,
  2359. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2360. /* [in] */ UINT nMaxChars);
  2361. HRESULT ( STDMETHODCALLTYPE *GetVersion )(
  2362. IWMDMDevice * This,
  2363. /* [out] */ __RPC__out DWORD *pdwVersion);
  2364. HRESULT ( STDMETHODCALLTYPE *GetType )(
  2365. IWMDMDevice * This,
  2366. /* [out] */ __RPC__out DWORD *pdwType);
  2367. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  2368. IWMDMDevice * This,
  2369. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  2370. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  2371. HRESULT ( STDMETHODCALLTYPE *GetPowerSource )(
  2372. IWMDMDevice * This,
  2373. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  2374. /* [out] */ __RPC__out DWORD *pdwPercentRemaining);
  2375. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  2376. IWMDMDevice * This,
  2377. /* [out] */ __RPC__out DWORD *pdwStatus);
  2378. HRESULT ( STDMETHODCALLTYPE *GetDeviceIcon )(
  2379. IWMDMDevice * This,
  2380. /* [out] */ __RPC__out ULONG *hIcon);
  2381. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  2382. IWMDMDevice * This,
  2383. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **ppEnumStorage);
  2384. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport )(
  2385. IWMDMDevice * This,
  2386. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **ppFormatEx,
  2387. /* [out] */ __RPC__out UINT *pnFormatCount,
  2388. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  2389. /* [out] */ __RPC__out UINT *pnMimeTypeCount);
  2390. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  2391. IWMDMDevice * This,
  2392. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  2393. END_INTERFACE
  2394. } IWMDMDeviceVtbl;
  2395. interface IWMDMDevice
  2396. {
  2397. CONST_VTBL struct IWMDMDeviceVtbl *lpVtbl;
  2398. };
  2399. #ifdef COBJMACROS
  2400. #define IWMDMDevice_QueryInterface(This,riid,ppvObject) \
  2401. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2402. #define IWMDMDevice_AddRef(This) \
  2403. ( (This)->lpVtbl -> AddRef(This) )
  2404. #define IWMDMDevice_Release(This) \
  2405. ( (This)->lpVtbl -> Release(This) )
  2406. #define IWMDMDevice_GetName(This,pwszName,nMaxChars) \
  2407. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  2408. #define IWMDMDevice_GetManufacturer(This,pwszName,nMaxChars) \
  2409. ( (This)->lpVtbl -> GetManufacturer(This,pwszName,nMaxChars) )
  2410. #define IWMDMDevice_GetVersion(This,pdwVersion) \
  2411. ( (This)->lpVtbl -> GetVersion(This,pdwVersion) )
  2412. #define IWMDMDevice_GetType(This,pdwType) \
  2413. ( (This)->lpVtbl -> GetType(This,pdwType) )
  2414. #define IWMDMDevice_GetSerialNumber(This,pSerialNumber,abMac) \
  2415. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNumber,abMac) )
  2416. #define IWMDMDevice_GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) \
  2417. ( (This)->lpVtbl -> GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) )
  2418. #define IWMDMDevice_GetStatus(This,pdwStatus) \
  2419. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  2420. #define IWMDMDevice_GetDeviceIcon(This,hIcon) \
  2421. ( (This)->lpVtbl -> GetDeviceIcon(This,hIcon) )
  2422. #define IWMDMDevice_EnumStorage(This,ppEnumStorage) \
  2423. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  2424. #define IWMDMDevice_GetFormatSupport(This,ppFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) \
  2425. ( (This)->lpVtbl -> GetFormatSupport(This,ppFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) )
  2426. #define IWMDMDevice_SendOpaqueCommand(This,pCommand) \
  2427. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  2428. #endif /* COBJMACROS */
  2429. #endif /* C style interface */
  2430. #endif /* __IWMDMDevice_INTERFACE_DEFINED__ */
  2431. #ifndef __IWMDMDevice2_INTERFACE_DEFINED__
  2432. #define __IWMDMDevice2_INTERFACE_DEFINED__
  2433. /* interface IWMDMDevice2 */
  2434. /* [unique][uuid][object] */
  2435. EXTERN_C const IID IID_IWMDMDevice2;
  2436. #if defined(__cplusplus) && !defined(CINTERFACE)
  2437. MIDL_INTERFACE("E34F3D37-9D67-4fc1-9252-62D28B2F8B55")
  2438. IWMDMDevice2 : public IWMDMDevice
  2439. {
  2440. public:
  2441. virtual HRESULT STDMETHODCALLTYPE GetStorage(
  2442. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  2443. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage) = 0;
  2444. virtual HRESULT STDMETHODCALLTYPE GetFormatSupport2(
  2445. /* [in] */ DWORD dwFlags,
  2446. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnAudioFormatCount) _WAVEFORMATEX **ppAudioFormatEx,
  2447. /* [ref][out] */ __RPC__out UINT *pnAudioFormatCount,
  2448. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnVideoFormatCount) _VIDEOINFOHEADER **ppVideoFormatEx,
  2449. /* [ref][out] */ __RPC__out UINT *pnVideoFormatCount,
  2450. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFileTypeCount) WMFILECAPABILITIES **ppFileType,
  2451. /* [ref][out] */ __RPC__out UINT *pnFileTypeCount) = 0;
  2452. virtual HRESULT STDMETHODCALLTYPE GetSpecifyPropertyPages(
  2453. /* [ref][out] */ __RPC__deref_out_opt ISpecifyPropertyPages **ppSpecifyPropPages,
  2454. /* [size_is][size_is][ref][out] */ __RPC__deref_out_ecount_full_opt(*pcUnks) IUnknown ***pppUnknowns,
  2455. /* [ref][out] */ __RPC__out ULONG *pcUnks) = 0;
  2456. virtual HRESULT STDMETHODCALLTYPE GetCanonicalName(
  2457. /* [size_is][out] */ __RPC__out_ecount_full(nMaxChars) LPWSTR pwszPnPName,
  2458. /* [in] */ UINT nMaxChars) = 0;
  2459. };
  2460. #else /* C style interface */
  2461. typedef struct IWMDMDevice2Vtbl
  2462. {
  2463. BEGIN_INTERFACE
  2464. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2465. IWMDMDevice2 * This,
  2466. /* [in] */ __RPC__in REFIID riid,
  2467. /* [iid_is][out] */
  2468. __RPC__deref_out void **ppvObject);
  2469. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2470. IWMDMDevice2 * This);
  2471. ULONG ( STDMETHODCALLTYPE *Release )(
  2472. IWMDMDevice2 * This);
  2473. HRESULT ( STDMETHODCALLTYPE *GetName )(
  2474. IWMDMDevice2 * This,
  2475. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2476. /* [in] */ UINT nMaxChars);
  2477. HRESULT ( STDMETHODCALLTYPE *GetManufacturer )(
  2478. IWMDMDevice2 * This,
  2479. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2480. /* [in] */ UINT nMaxChars);
  2481. HRESULT ( STDMETHODCALLTYPE *GetVersion )(
  2482. IWMDMDevice2 * This,
  2483. /* [out] */ __RPC__out DWORD *pdwVersion);
  2484. HRESULT ( STDMETHODCALLTYPE *GetType )(
  2485. IWMDMDevice2 * This,
  2486. /* [out] */ __RPC__out DWORD *pdwType);
  2487. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  2488. IWMDMDevice2 * This,
  2489. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  2490. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  2491. HRESULT ( STDMETHODCALLTYPE *GetPowerSource )(
  2492. IWMDMDevice2 * This,
  2493. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  2494. /* [out] */ __RPC__out DWORD *pdwPercentRemaining);
  2495. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  2496. IWMDMDevice2 * This,
  2497. /* [out] */ __RPC__out DWORD *pdwStatus);
  2498. HRESULT ( STDMETHODCALLTYPE *GetDeviceIcon )(
  2499. IWMDMDevice2 * This,
  2500. /* [out] */ __RPC__out ULONG *hIcon);
  2501. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  2502. IWMDMDevice2 * This,
  2503. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **ppEnumStorage);
  2504. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport )(
  2505. IWMDMDevice2 * This,
  2506. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **ppFormatEx,
  2507. /* [out] */ __RPC__out UINT *pnFormatCount,
  2508. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  2509. /* [out] */ __RPC__out UINT *pnMimeTypeCount);
  2510. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  2511. IWMDMDevice2 * This,
  2512. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  2513. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  2514. IWMDMDevice2 * This,
  2515. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  2516. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  2517. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport2 )(
  2518. IWMDMDevice2 * This,
  2519. /* [in] */ DWORD dwFlags,
  2520. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnAudioFormatCount) _WAVEFORMATEX **ppAudioFormatEx,
  2521. /* [ref][out] */ __RPC__out UINT *pnAudioFormatCount,
  2522. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnVideoFormatCount) _VIDEOINFOHEADER **ppVideoFormatEx,
  2523. /* [ref][out] */ __RPC__out UINT *pnVideoFormatCount,
  2524. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFileTypeCount) WMFILECAPABILITIES **ppFileType,
  2525. /* [ref][out] */ __RPC__out UINT *pnFileTypeCount);
  2526. HRESULT ( STDMETHODCALLTYPE *GetSpecifyPropertyPages )(
  2527. IWMDMDevice2 * This,
  2528. /* [ref][out] */ __RPC__deref_out_opt ISpecifyPropertyPages **ppSpecifyPropPages,
  2529. /* [size_is][size_is][ref][out] */ __RPC__deref_out_ecount_full_opt(*pcUnks) IUnknown ***pppUnknowns,
  2530. /* [ref][out] */ __RPC__out ULONG *pcUnks);
  2531. HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )(
  2532. IWMDMDevice2 * This,
  2533. /* [size_is][out] */ __RPC__out_ecount_full(nMaxChars) LPWSTR pwszPnPName,
  2534. /* [in] */ UINT nMaxChars);
  2535. END_INTERFACE
  2536. } IWMDMDevice2Vtbl;
  2537. interface IWMDMDevice2
  2538. {
  2539. CONST_VTBL struct IWMDMDevice2Vtbl *lpVtbl;
  2540. };
  2541. #ifdef COBJMACROS
  2542. #define IWMDMDevice2_QueryInterface(This,riid,ppvObject) \
  2543. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2544. #define IWMDMDevice2_AddRef(This) \
  2545. ( (This)->lpVtbl -> AddRef(This) )
  2546. #define IWMDMDevice2_Release(This) \
  2547. ( (This)->lpVtbl -> Release(This) )
  2548. #define IWMDMDevice2_GetName(This,pwszName,nMaxChars) \
  2549. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  2550. #define IWMDMDevice2_GetManufacturer(This,pwszName,nMaxChars) \
  2551. ( (This)->lpVtbl -> GetManufacturer(This,pwszName,nMaxChars) )
  2552. #define IWMDMDevice2_GetVersion(This,pdwVersion) \
  2553. ( (This)->lpVtbl -> GetVersion(This,pdwVersion) )
  2554. #define IWMDMDevice2_GetType(This,pdwType) \
  2555. ( (This)->lpVtbl -> GetType(This,pdwType) )
  2556. #define IWMDMDevice2_GetSerialNumber(This,pSerialNumber,abMac) \
  2557. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNumber,abMac) )
  2558. #define IWMDMDevice2_GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) \
  2559. ( (This)->lpVtbl -> GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) )
  2560. #define IWMDMDevice2_GetStatus(This,pdwStatus) \
  2561. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  2562. #define IWMDMDevice2_GetDeviceIcon(This,hIcon) \
  2563. ( (This)->lpVtbl -> GetDeviceIcon(This,hIcon) )
  2564. #define IWMDMDevice2_EnumStorage(This,ppEnumStorage) \
  2565. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  2566. #define IWMDMDevice2_GetFormatSupport(This,ppFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) \
  2567. ( (This)->lpVtbl -> GetFormatSupport(This,ppFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) )
  2568. #define IWMDMDevice2_SendOpaqueCommand(This,pCommand) \
  2569. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  2570. #define IWMDMDevice2_GetStorage(This,pszStorageName,ppStorage) \
  2571. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  2572. #define IWMDMDevice2_GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) \
  2573. ( (This)->lpVtbl -> GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) )
  2574. #define IWMDMDevice2_GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) \
  2575. ( (This)->lpVtbl -> GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) )
  2576. #define IWMDMDevice2_GetCanonicalName(This,pwszPnPName,nMaxChars) \
  2577. ( (This)->lpVtbl -> GetCanonicalName(This,pwszPnPName,nMaxChars) )
  2578. #endif /* COBJMACROS */
  2579. #endif /* C style interface */
  2580. #endif /* __IWMDMDevice2_INTERFACE_DEFINED__ */
  2581. #ifndef __IWMDMDevice3_INTERFACE_DEFINED__
  2582. #define __IWMDMDevice3_INTERFACE_DEFINED__
  2583. /* interface IWMDMDevice3 */
  2584. /* [unique][uuid][object] */
  2585. EXTERN_C const IID IID_IWMDMDevice3;
  2586. #if defined(__cplusplus) && !defined(CINTERFACE)
  2587. MIDL_INTERFACE("6c03e4fe-05db-4dda-9e3c-06233a6d5d65")
  2588. IWMDMDevice3 : public IWMDMDevice2
  2589. {
  2590. public:
  2591. virtual HRESULT STDMETHODCALLTYPE GetProperty(
  2592. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  2593. /* [out] */ __RPC__out PROPVARIANT *pValue) = 0;
  2594. virtual HRESULT STDMETHODCALLTYPE SetProperty(
  2595. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  2596. /* [in] */ __RPC__in const PROPVARIANT *pValue) = 0;
  2597. virtual HRESULT STDMETHODCALLTYPE GetFormatCapability(
  2598. /* [in] */ WMDM_FORMATCODE format,
  2599. /* [out] */ __RPC__out WMDM_FORMAT_CAPABILITY *pFormatSupport) = 0;
  2600. virtual HRESULT STDMETHODCALLTYPE DeviceIoControl(
  2601. /* [in] */ DWORD dwIoControlCode,
  2602. /* [size_is][in] */ __RPC__in_ecount_full(nInBufferSize) BYTE *lpInBuffer,
  2603. /* [in] */ DWORD nInBufferSize,
  2604. /* [size_is][out] */ __RPC__out_ecount_full(*pnOutBufferSize) BYTE *lpOutBuffer,
  2605. /* [out][in] */ __RPC__inout LPDWORD pnOutBufferSize) = 0;
  2606. virtual HRESULT STDMETHODCALLTYPE FindStorage(
  2607. /* [in] */ WMDM_FIND_SCOPE findScope,
  2608. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  2609. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage) = 0;
  2610. };
  2611. #else /* C style interface */
  2612. typedef struct IWMDMDevice3Vtbl
  2613. {
  2614. BEGIN_INTERFACE
  2615. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2616. IWMDMDevice3 * This,
  2617. /* [in] */ __RPC__in REFIID riid,
  2618. /* [iid_is][out] */
  2619. __RPC__deref_out void **ppvObject);
  2620. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2621. IWMDMDevice3 * This);
  2622. ULONG ( STDMETHODCALLTYPE *Release )(
  2623. IWMDMDevice3 * This);
  2624. HRESULT ( STDMETHODCALLTYPE *GetName )(
  2625. IWMDMDevice3 * This,
  2626. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2627. /* [in] */ UINT nMaxChars);
  2628. HRESULT ( STDMETHODCALLTYPE *GetManufacturer )(
  2629. IWMDMDevice3 * This,
  2630. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  2631. /* [in] */ UINT nMaxChars);
  2632. HRESULT ( STDMETHODCALLTYPE *GetVersion )(
  2633. IWMDMDevice3 * This,
  2634. /* [out] */ __RPC__out DWORD *pdwVersion);
  2635. HRESULT ( STDMETHODCALLTYPE *GetType )(
  2636. IWMDMDevice3 * This,
  2637. /* [out] */ __RPC__out DWORD *pdwType);
  2638. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  2639. IWMDMDevice3 * This,
  2640. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  2641. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  2642. HRESULT ( STDMETHODCALLTYPE *GetPowerSource )(
  2643. IWMDMDevice3 * This,
  2644. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  2645. /* [out] */ __RPC__out DWORD *pdwPercentRemaining);
  2646. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  2647. IWMDMDevice3 * This,
  2648. /* [out] */ __RPC__out DWORD *pdwStatus);
  2649. HRESULT ( STDMETHODCALLTYPE *GetDeviceIcon )(
  2650. IWMDMDevice3 * This,
  2651. /* [out] */ __RPC__out ULONG *hIcon);
  2652. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  2653. IWMDMDevice3 * This,
  2654. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **ppEnumStorage);
  2655. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport )(
  2656. IWMDMDevice3 * This,
  2657. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **ppFormatEx,
  2658. /* [out] */ __RPC__out UINT *pnFormatCount,
  2659. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  2660. /* [out] */ __RPC__out UINT *pnMimeTypeCount);
  2661. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  2662. IWMDMDevice3 * This,
  2663. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  2664. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  2665. IWMDMDevice3 * This,
  2666. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  2667. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  2668. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport2 )(
  2669. IWMDMDevice3 * This,
  2670. /* [in] */ DWORD dwFlags,
  2671. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnAudioFormatCount) _WAVEFORMATEX **ppAudioFormatEx,
  2672. /* [ref][out] */ __RPC__out UINT *pnAudioFormatCount,
  2673. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnVideoFormatCount) _VIDEOINFOHEADER **ppVideoFormatEx,
  2674. /* [ref][out] */ __RPC__out UINT *pnVideoFormatCount,
  2675. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFileTypeCount) WMFILECAPABILITIES **ppFileType,
  2676. /* [ref][out] */ __RPC__out UINT *pnFileTypeCount);
  2677. HRESULT ( STDMETHODCALLTYPE *GetSpecifyPropertyPages )(
  2678. IWMDMDevice3 * This,
  2679. /* [ref][out] */ __RPC__deref_out_opt ISpecifyPropertyPages **ppSpecifyPropPages,
  2680. /* [size_is][size_is][ref][out] */ __RPC__deref_out_ecount_full_opt(*pcUnks) IUnknown ***pppUnknowns,
  2681. /* [ref][out] */ __RPC__out ULONG *pcUnks);
  2682. HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )(
  2683. IWMDMDevice3 * This,
  2684. /* [size_is][out] */ __RPC__out_ecount_full(nMaxChars) LPWSTR pwszPnPName,
  2685. /* [in] */ UINT nMaxChars);
  2686. HRESULT ( STDMETHODCALLTYPE *GetProperty )(
  2687. IWMDMDevice3 * This,
  2688. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  2689. /* [out] */ __RPC__out PROPVARIANT *pValue);
  2690. HRESULT ( STDMETHODCALLTYPE *SetProperty )(
  2691. IWMDMDevice3 * This,
  2692. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  2693. /* [in] */ __RPC__in const PROPVARIANT *pValue);
  2694. HRESULT ( STDMETHODCALLTYPE *GetFormatCapability )(
  2695. IWMDMDevice3 * This,
  2696. /* [in] */ WMDM_FORMATCODE format,
  2697. /* [out] */ __RPC__out WMDM_FORMAT_CAPABILITY *pFormatSupport);
  2698. HRESULT ( STDMETHODCALLTYPE *DeviceIoControl )(
  2699. IWMDMDevice3 * This,
  2700. /* [in] */ DWORD dwIoControlCode,
  2701. /* [size_is][in] */ __RPC__in_ecount_full(nInBufferSize) BYTE *lpInBuffer,
  2702. /* [in] */ DWORD nInBufferSize,
  2703. /* [size_is][out] */ __RPC__out_ecount_full(*pnOutBufferSize) BYTE *lpOutBuffer,
  2704. /* [out][in] */ __RPC__inout LPDWORD pnOutBufferSize);
  2705. HRESULT ( STDMETHODCALLTYPE *FindStorage )(
  2706. IWMDMDevice3 * This,
  2707. /* [in] */ WMDM_FIND_SCOPE findScope,
  2708. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  2709. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppStorage);
  2710. END_INTERFACE
  2711. } IWMDMDevice3Vtbl;
  2712. interface IWMDMDevice3
  2713. {
  2714. CONST_VTBL struct IWMDMDevice3Vtbl *lpVtbl;
  2715. };
  2716. #ifdef COBJMACROS
  2717. #define IWMDMDevice3_QueryInterface(This,riid,ppvObject) \
  2718. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2719. #define IWMDMDevice3_AddRef(This) \
  2720. ( (This)->lpVtbl -> AddRef(This) )
  2721. #define IWMDMDevice3_Release(This) \
  2722. ( (This)->lpVtbl -> Release(This) )
  2723. #define IWMDMDevice3_GetName(This,pwszName,nMaxChars) \
  2724. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  2725. #define IWMDMDevice3_GetManufacturer(This,pwszName,nMaxChars) \
  2726. ( (This)->lpVtbl -> GetManufacturer(This,pwszName,nMaxChars) )
  2727. #define IWMDMDevice3_GetVersion(This,pdwVersion) \
  2728. ( (This)->lpVtbl -> GetVersion(This,pdwVersion) )
  2729. #define IWMDMDevice3_GetType(This,pdwType) \
  2730. ( (This)->lpVtbl -> GetType(This,pdwType) )
  2731. #define IWMDMDevice3_GetSerialNumber(This,pSerialNumber,abMac) \
  2732. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNumber,abMac) )
  2733. #define IWMDMDevice3_GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) \
  2734. ( (This)->lpVtbl -> GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) )
  2735. #define IWMDMDevice3_GetStatus(This,pdwStatus) \
  2736. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  2737. #define IWMDMDevice3_GetDeviceIcon(This,hIcon) \
  2738. ( (This)->lpVtbl -> GetDeviceIcon(This,hIcon) )
  2739. #define IWMDMDevice3_EnumStorage(This,ppEnumStorage) \
  2740. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  2741. #define IWMDMDevice3_GetFormatSupport(This,ppFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) \
  2742. ( (This)->lpVtbl -> GetFormatSupport(This,ppFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) )
  2743. #define IWMDMDevice3_SendOpaqueCommand(This,pCommand) \
  2744. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  2745. #define IWMDMDevice3_GetStorage(This,pszStorageName,ppStorage) \
  2746. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  2747. #define IWMDMDevice3_GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) \
  2748. ( (This)->lpVtbl -> GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) )
  2749. #define IWMDMDevice3_GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) \
  2750. ( (This)->lpVtbl -> GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) )
  2751. #define IWMDMDevice3_GetCanonicalName(This,pwszPnPName,nMaxChars) \
  2752. ( (This)->lpVtbl -> GetCanonicalName(This,pwszPnPName,nMaxChars) )
  2753. #define IWMDMDevice3_GetProperty(This,pwszPropName,pValue) \
  2754. ( (This)->lpVtbl -> GetProperty(This,pwszPropName,pValue) )
  2755. #define IWMDMDevice3_SetProperty(This,pwszPropName,pValue) \
  2756. ( (This)->lpVtbl -> SetProperty(This,pwszPropName,pValue) )
  2757. #define IWMDMDevice3_GetFormatCapability(This,format,pFormatSupport) \
  2758. ( (This)->lpVtbl -> GetFormatCapability(This,format,pFormatSupport) )
  2759. #define IWMDMDevice3_DeviceIoControl(This,dwIoControlCode,lpInBuffer,nInBufferSize,lpOutBuffer,pnOutBufferSize) \
  2760. ( (This)->lpVtbl -> DeviceIoControl(This,dwIoControlCode,lpInBuffer,nInBufferSize,lpOutBuffer,pnOutBufferSize) )
  2761. #define IWMDMDevice3_FindStorage(This,findScope,pwszUniqueID,ppStorage) \
  2762. ( (This)->lpVtbl -> FindStorage(This,findScope,pwszUniqueID,ppStorage) )
  2763. #endif /* COBJMACROS */
  2764. #endif /* C style interface */
  2765. #endif /* __IWMDMDevice3_INTERFACE_DEFINED__ */
  2766. #ifndef __IWMDMDeviceSession_INTERFACE_DEFINED__
  2767. #define __IWMDMDeviceSession_INTERFACE_DEFINED__
  2768. /* interface IWMDMDeviceSession */
  2769. /* [unique][uuid][object] */
  2770. EXTERN_C const IID IID_IWMDMDeviceSession;
  2771. #if defined(__cplusplus) && !defined(CINTERFACE)
  2772. MIDL_INTERFACE("82af0a65-9d96-412c-83e5-3c43e4b06cc7")
  2773. IWMDMDeviceSession : public IUnknown
  2774. {
  2775. public:
  2776. virtual HRESULT STDMETHODCALLTYPE BeginSession(
  2777. /* [in] */ WMDM_SESSION_TYPE type,
  2778. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(dwSizeCtx) BYTE *pCtx,
  2779. /* [in] */ DWORD dwSizeCtx) = 0;
  2780. virtual HRESULT STDMETHODCALLTYPE EndSession(
  2781. /* [in] */ WMDM_SESSION_TYPE type,
  2782. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(dwSizeCtx) BYTE *pCtx,
  2783. /* [in] */ DWORD dwSizeCtx) = 0;
  2784. };
  2785. #else /* C style interface */
  2786. typedef struct IWMDMDeviceSessionVtbl
  2787. {
  2788. BEGIN_INTERFACE
  2789. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2790. IWMDMDeviceSession * This,
  2791. /* [in] */ __RPC__in REFIID riid,
  2792. /* [iid_is][out] */
  2793. __RPC__deref_out void **ppvObject);
  2794. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2795. IWMDMDeviceSession * This);
  2796. ULONG ( STDMETHODCALLTYPE *Release )(
  2797. IWMDMDeviceSession * This);
  2798. HRESULT ( STDMETHODCALLTYPE *BeginSession )(
  2799. IWMDMDeviceSession * This,
  2800. /* [in] */ WMDM_SESSION_TYPE type,
  2801. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(dwSizeCtx) BYTE *pCtx,
  2802. /* [in] */ DWORD dwSizeCtx);
  2803. HRESULT ( STDMETHODCALLTYPE *EndSession )(
  2804. IWMDMDeviceSession * This,
  2805. /* [in] */ WMDM_SESSION_TYPE type,
  2806. /* [unique][size_is][in] */ __RPC__in_ecount_full_opt(dwSizeCtx) BYTE *pCtx,
  2807. /* [in] */ DWORD dwSizeCtx);
  2808. END_INTERFACE
  2809. } IWMDMDeviceSessionVtbl;
  2810. interface IWMDMDeviceSession
  2811. {
  2812. CONST_VTBL struct IWMDMDeviceSessionVtbl *lpVtbl;
  2813. };
  2814. #ifdef COBJMACROS
  2815. #define IWMDMDeviceSession_QueryInterface(This,riid,ppvObject) \
  2816. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2817. #define IWMDMDeviceSession_AddRef(This) \
  2818. ( (This)->lpVtbl -> AddRef(This) )
  2819. #define IWMDMDeviceSession_Release(This) \
  2820. ( (This)->lpVtbl -> Release(This) )
  2821. #define IWMDMDeviceSession_BeginSession(This,type,pCtx,dwSizeCtx) \
  2822. ( (This)->lpVtbl -> BeginSession(This,type,pCtx,dwSizeCtx) )
  2823. #define IWMDMDeviceSession_EndSession(This,type,pCtx,dwSizeCtx) \
  2824. ( (This)->lpVtbl -> EndSession(This,type,pCtx,dwSizeCtx) )
  2825. #endif /* COBJMACROS */
  2826. #endif /* C style interface */
  2827. #endif /* __IWMDMDeviceSession_INTERFACE_DEFINED__ */
  2828. #ifndef __IWMDMEnumDevice_INTERFACE_DEFINED__
  2829. #define __IWMDMEnumDevice_INTERFACE_DEFINED__
  2830. /* interface IWMDMEnumDevice */
  2831. /* [unique][uuid][object] */
  2832. EXTERN_C const IID IID_IWMDMEnumDevice;
  2833. #if defined(__cplusplus) && !defined(CINTERFACE)
  2834. MIDL_INTERFACE("1DCB3A01-33ED-11d3-8470-00C04F79DBC0")
  2835. IWMDMEnumDevice : public IUnknown
  2836. {
  2837. public:
  2838. virtual HRESULT STDMETHODCALLTYPE Next(
  2839. /* [in] */ ULONG celt,
  2840. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IWMDMDevice **ppDevice,
  2841. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  2842. virtual HRESULT STDMETHODCALLTYPE Skip(
  2843. /* [in] */ ULONG celt,
  2844. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  2845. virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  2846. virtual HRESULT STDMETHODCALLTYPE Clone(
  2847. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice) = 0;
  2848. };
  2849. #else /* C style interface */
  2850. typedef struct IWMDMEnumDeviceVtbl
  2851. {
  2852. BEGIN_INTERFACE
  2853. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2854. IWMDMEnumDevice * This,
  2855. /* [in] */ __RPC__in REFIID riid,
  2856. /* [iid_is][out] */
  2857. __RPC__deref_out void **ppvObject);
  2858. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2859. IWMDMEnumDevice * This);
  2860. ULONG ( STDMETHODCALLTYPE *Release )(
  2861. IWMDMEnumDevice * This);
  2862. HRESULT ( STDMETHODCALLTYPE *Next )(
  2863. IWMDMEnumDevice * This,
  2864. /* [in] */ ULONG celt,
  2865. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IWMDMDevice **ppDevice,
  2866. /* [out] */ __RPC__out ULONG *pceltFetched);
  2867. HRESULT ( STDMETHODCALLTYPE *Skip )(
  2868. IWMDMEnumDevice * This,
  2869. /* [in] */ ULONG celt,
  2870. /* [out] */ __RPC__out ULONG *pceltFetched);
  2871. HRESULT ( STDMETHODCALLTYPE *Reset )(
  2872. IWMDMEnumDevice * This);
  2873. HRESULT ( STDMETHODCALLTYPE *Clone )(
  2874. IWMDMEnumDevice * This,
  2875. /* [out] */ __RPC__deref_out_opt IWMDMEnumDevice **ppEnumDevice);
  2876. END_INTERFACE
  2877. } IWMDMEnumDeviceVtbl;
  2878. interface IWMDMEnumDevice
  2879. {
  2880. CONST_VTBL struct IWMDMEnumDeviceVtbl *lpVtbl;
  2881. };
  2882. #ifdef COBJMACROS
  2883. #define IWMDMEnumDevice_QueryInterface(This,riid,ppvObject) \
  2884. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2885. #define IWMDMEnumDevice_AddRef(This) \
  2886. ( (This)->lpVtbl -> AddRef(This) )
  2887. #define IWMDMEnumDevice_Release(This) \
  2888. ( (This)->lpVtbl -> Release(This) )
  2889. #define IWMDMEnumDevice_Next(This,celt,ppDevice,pceltFetched) \
  2890. ( (This)->lpVtbl -> Next(This,celt,ppDevice,pceltFetched) )
  2891. #define IWMDMEnumDevice_Skip(This,celt,pceltFetched) \
  2892. ( (This)->lpVtbl -> Skip(This,celt,pceltFetched) )
  2893. #define IWMDMEnumDevice_Reset(This) \
  2894. ( (This)->lpVtbl -> Reset(This) )
  2895. #define IWMDMEnumDevice_Clone(This,ppEnumDevice) \
  2896. ( (This)->lpVtbl -> Clone(This,ppEnumDevice) )
  2897. #endif /* COBJMACROS */
  2898. #endif /* C style interface */
  2899. #endif /* __IWMDMEnumDevice_INTERFACE_DEFINED__ */
  2900. #ifndef __IWMDMDeviceControl_INTERFACE_DEFINED__
  2901. #define __IWMDMDeviceControl_INTERFACE_DEFINED__
  2902. /* interface IWMDMDeviceControl */
  2903. /* [unique][uuid][object] */
  2904. EXTERN_C const IID IID_IWMDMDeviceControl;
  2905. #if defined(__cplusplus) && !defined(CINTERFACE)
  2906. MIDL_INTERFACE("1DCB3A04-33ED-11d3-8470-00C04F79DBC0")
  2907. IWMDMDeviceControl : public IUnknown
  2908. {
  2909. public:
  2910. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  2911. /* [out] */ __RPC__out DWORD *pdwStatus) = 0;
  2912. virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
  2913. /* [out] */ __RPC__out DWORD *pdwCapabilitiesMask) = 0;
  2914. virtual HRESULT STDMETHODCALLTYPE Play( void) = 0;
  2915. virtual HRESULT STDMETHODCALLTYPE Record(
  2916. /* [in] */ __RPC__in _WAVEFORMATEX *pFormat) = 0;
  2917. virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  2918. virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  2919. virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
  2920. virtual HRESULT STDMETHODCALLTYPE Seek(
  2921. /* [in] */ UINT fuMode,
  2922. /* [in] */ int nOffset) = 0;
  2923. };
  2924. #else /* C style interface */
  2925. typedef struct IWMDMDeviceControlVtbl
  2926. {
  2927. BEGIN_INTERFACE
  2928. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2929. IWMDMDeviceControl * This,
  2930. /* [in] */ __RPC__in REFIID riid,
  2931. /* [iid_is][out] */
  2932. __RPC__deref_out void **ppvObject);
  2933. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2934. IWMDMDeviceControl * This);
  2935. ULONG ( STDMETHODCALLTYPE *Release )(
  2936. IWMDMDeviceControl * This);
  2937. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  2938. IWMDMDeviceControl * This,
  2939. /* [out] */ __RPC__out DWORD *pdwStatus);
  2940. HRESULT ( STDMETHODCALLTYPE *GetCapabilities )(
  2941. IWMDMDeviceControl * This,
  2942. /* [out] */ __RPC__out DWORD *pdwCapabilitiesMask);
  2943. HRESULT ( STDMETHODCALLTYPE *Play )(
  2944. IWMDMDeviceControl * This);
  2945. HRESULT ( STDMETHODCALLTYPE *Record )(
  2946. IWMDMDeviceControl * This,
  2947. /* [in] */ __RPC__in _WAVEFORMATEX *pFormat);
  2948. HRESULT ( STDMETHODCALLTYPE *Pause )(
  2949. IWMDMDeviceControl * This);
  2950. HRESULT ( STDMETHODCALLTYPE *Resume )(
  2951. IWMDMDeviceControl * This);
  2952. HRESULT ( STDMETHODCALLTYPE *Stop )(
  2953. IWMDMDeviceControl * This);
  2954. HRESULT ( STDMETHODCALLTYPE *Seek )(
  2955. IWMDMDeviceControl * This,
  2956. /* [in] */ UINT fuMode,
  2957. /* [in] */ int nOffset);
  2958. END_INTERFACE
  2959. } IWMDMDeviceControlVtbl;
  2960. interface IWMDMDeviceControl
  2961. {
  2962. CONST_VTBL struct IWMDMDeviceControlVtbl *lpVtbl;
  2963. };
  2964. #ifdef COBJMACROS
  2965. #define IWMDMDeviceControl_QueryInterface(This,riid,ppvObject) \
  2966. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2967. #define IWMDMDeviceControl_AddRef(This) \
  2968. ( (This)->lpVtbl -> AddRef(This) )
  2969. #define IWMDMDeviceControl_Release(This) \
  2970. ( (This)->lpVtbl -> Release(This) )
  2971. #define IWMDMDeviceControl_GetStatus(This,pdwStatus) \
  2972. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  2973. #define IWMDMDeviceControl_GetCapabilities(This,pdwCapabilitiesMask) \
  2974. ( (This)->lpVtbl -> GetCapabilities(This,pdwCapabilitiesMask) )
  2975. #define IWMDMDeviceControl_Play(This) \
  2976. ( (This)->lpVtbl -> Play(This) )
  2977. #define IWMDMDeviceControl_Record(This,pFormat) \
  2978. ( (This)->lpVtbl -> Record(This,pFormat) )
  2979. #define IWMDMDeviceControl_Pause(This) \
  2980. ( (This)->lpVtbl -> Pause(This) )
  2981. #define IWMDMDeviceControl_Resume(This) \
  2982. ( (This)->lpVtbl -> Resume(This) )
  2983. #define IWMDMDeviceControl_Stop(This) \
  2984. ( (This)->lpVtbl -> Stop(This) )
  2985. #define IWMDMDeviceControl_Seek(This,fuMode,nOffset) \
  2986. ( (This)->lpVtbl -> Seek(This,fuMode,nOffset) )
  2987. #endif /* COBJMACROS */
  2988. #endif /* C style interface */
  2989. #endif /* __IWMDMDeviceControl_INTERFACE_DEFINED__ */
  2990. #ifndef __IWMDMEnumStorage_INTERFACE_DEFINED__
  2991. #define __IWMDMEnumStorage_INTERFACE_DEFINED__
  2992. /* interface IWMDMEnumStorage */
  2993. /* [unique][uuid][object] */
  2994. EXTERN_C const IID IID_IWMDMEnumStorage;
  2995. #if defined(__cplusplus) && !defined(CINTERFACE)
  2996. MIDL_INTERFACE("1DCB3A05-33ED-11d3-8470-00C04F79DBC0")
  2997. IWMDMEnumStorage : public IUnknown
  2998. {
  2999. public:
  3000. virtual HRESULT STDMETHODCALLTYPE Next(
  3001. /* [in] */ ULONG celt,
  3002. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IWMDMStorage **ppStorage,
  3003. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  3004. virtual HRESULT STDMETHODCALLTYPE Skip(
  3005. /* [in] */ ULONG celt,
  3006. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  3007. virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  3008. virtual HRESULT STDMETHODCALLTYPE Clone(
  3009. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **ppEnumStorage) = 0;
  3010. };
  3011. #else /* C style interface */
  3012. typedef struct IWMDMEnumStorageVtbl
  3013. {
  3014. BEGIN_INTERFACE
  3015. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3016. IWMDMEnumStorage * This,
  3017. /* [in] */ __RPC__in REFIID riid,
  3018. /* [iid_is][out] */
  3019. __RPC__deref_out void **ppvObject);
  3020. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3021. IWMDMEnumStorage * This);
  3022. ULONG ( STDMETHODCALLTYPE *Release )(
  3023. IWMDMEnumStorage * This);
  3024. HRESULT ( STDMETHODCALLTYPE *Next )(
  3025. IWMDMEnumStorage * This,
  3026. /* [in] */ ULONG celt,
  3027. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IWMDMStorage **ppStorage,
  3028. /* [out] */ __RPC__out ULONG *pceltFetched);
  3029. HRESULT ( STDMETHODCALLTYPE *Skip )(
  3030. IWMDMEnumStorage * This,
  3031. /* [in] */ ULONG celt,
  3032. /* [out] */ __RPC__out ULONG *pceltFetched);
  3033. HRESULT ( STDMETHODCALLTYPE *Reset )(
  3034. IWMDMEnumStorage * This);
  3035. HRESULT ( STDMETHODCALLTYPE *Clone )(
  3036. IWMDMEnumStorage * This,
  3037. /* [out] */ __RPC__deref_out_opt IWMDMEnumStorage **ppEnumStorage);
  3038. END_INTERFACE
  3039. } IWMDMEnumStorageVtbl;
  3040. interface IWMDMEnumStorage
  3041. {
  3042. CONST_VTBL struct IWMDMEnumStorageVtbl *lpVtbl;
  3043. };
  3044. #ifdef COBJMACROS
  3045. #define IWMDMEnumStorage_QueryInterface(This,riid,ppvObject) \
  3046. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3047. #define IWMDMEnumStorage_AddRef(This) \
  3048. ( (This)->lpVtbl -> AddRef(This) )
  3049. #define IWMDMEnumStorage_Release(This) \
  3050. ( (This)->lpVtbl -> Release(This) )
  3051. #define IWMDMEnumStorage_Next(This,celt,ppStorage,pceltFetched) \
  3052. ( (This)->lpVtbl -> Next(This,celt,ppStorage,pceltFetched) )
  3053. #define IWMDMEnumStorage_Skip(This,celt,pceltFetched) \
  3054. ( (This)->lpVtbl -> Skip(This,celt,pceltFetched) )
  3055. #define IWMDMEnumStorage_Reset(This) \
  3056. ( (This)->lpVtbl -> Reset(This) )
  3057. #define IWMDMEnumStorage_Clone(This,ppEnumStorage) \
  3058. ( (This)->lpVtbl -> Clone(This,ppEnumStorage) )
  3059. #endif /* COBJMACROS */
  3060. #endif /* C style interface */
  3061. #endif /* __IWMDMEnumStorage_INTERFACE_DEFINED__ */
  3062. #ifndef __IWMDMStorageControl_INTERFACE_DEFINED__
  3063. #define __IWMDMStorageControl_INTERFACE_DEFINED__
  3064. /* interface IWMDMStorageControl */
  3065. /* [unique][uuid][object] */
  3066. EXTERN_C const IID IID_IWMDMStorageControl;
  3067. #if defined(__cplusplus) && !defined(CINTERFACE)
  3068. MIDL_INTERFACE("1DCB3A08-33ED-11d3-8470-00C04F79DBC0")
  3069. IWMDMStorageControl : public IUnknown
  3070. {
  3071. public:
  3072. virtual HRESULT STDMETHODCALLTYPE Insert(
  3073. /* [in] */ UINT fuMode,
  3074. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3075. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3076. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3077. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppNewObject) = 0;
  3078. virtual HRESULT STDMETHODCALLTYPE Delete(
  3079. /* [in] */ UINT fuMode,
  3080. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  3081. virtual HRESULT STDMETHODCALLTYPE Rename(
  3082. /* [in] */ UINT fuMode,
  3083. /* [in] */ __RPC__in LPWSTR pwszNewName,
  3084. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  3085. virtual HRESULT STDMETHODCALLTYPE Read(
  3086. /* [in] */ UINT fuMode,
  3087. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3088. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3089. /* [in] */ __RPC__in_opt IWMDMOperation *pOperation) = 0;
  3090. virtual HRESULT STDMETHODCALLTYPE Move(
  3091. /* [in] */ UINT fuMode,
  3092. /* [in] */ __RPC__in_opt IWMDMStorage *pTargetObject,
  3093. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  3094. };
  3095. #else /* C style interface */
  3096. typedef struct IWMDMStorageControlVtbl
  3097. {
  3098. BEGIN_INTERFACE
  3099. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3100. IWMDMStorageControl * This,
  3101. /* [in] */ __RPC__in REFIID riid,
  3102. /* [iid_is][out] */
  3103. __RPC__deref_out void **ppvObject);
  3104. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3105. IWMDMStorageControl * This);
  3106. ULONG ( STDMETHODCALLTYPE *Release )(
  3107. IWMDMStorageControl * This);
  3108. HRESULT ( STDMETHODCALLTYPE *Insert )(
  3109. IWMDMStorageControl * This,
  3110. /* [in] */ UINT fuMode,
  3111. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3112. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3113. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3114. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppNewObject);
  3115. HRESULT ( STDMETHODCALLTYPE *Delete )(
  3116. IWMDMStorageControl * This,
  3117. /* [in] */ UINT fuMode,
  3118. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3119. HRESULT ( STDMETHODCALLTYPE *Rename )(
  3120. IWMDMStorageControl * This,
  3121. /* [in] */ UINT fuMode,
  3122. /* [in] */ __RPC__in LPWSTR pwszNewName,
  3123. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3124. HRESULT ( STDMETHODCALLTYPE *Read )(
  3125. IWMDMStorageControl * This,
  3126. /* [in] */ UINT fuMode,
  3127. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3128. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3129. /* [in] */ __RPC__in_opt IWMDMOperation *pOperation);
  3130. HRESULT ( STDMETHODCALLTYPE *Move )(
  3131. IWMDMStorageControl * This,
  3132. /* [in] */ UINT fuMode,
  3133. /* [in] */ __RPC__in_opt IWMDMStorage *pTargetObject,
  3134. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3135. END_INTERFACE
  3136. } IWMDMStorageControlVtbl;
  3137. interface IWMDMStorageControl
  3138. {
  3139. CONST_VTBL struct IWMDMStorageControlVtbl *lpVtbl;
  3140. };
  3141. #ifdef COBJMACROS
  3142. #define IWMDMStorageControl_QueryInterface(This,riid,ppvObject) \
  3143. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3144. #define IWMDMStorageControl_AddRef(This) \
  3145. ( (This)->lpVtbl -> AddRef(This) )
  3146. #define IWMDMStorageControl_Release(This) \
  3147. ( (This)->lpVtbl -> Release(This) )
  3148. #define IWMDMStorageControl_Insert(This,fuMode,pwszFile,pOperation,pProgress,ppNewObject) \
  3149. ( (This)->lpVtbl -> Insert(This,fuMode,pwszFile,pOperation,pProgress,ppNewObject) )
  3150. #define IWMDMStorageControl_Delete(This,fuMode,pProgress) \
  3151. ( (This)->lpVtbl -> Delete(This,fuMode,pProgress) )
  3152. #define IWMDMStorageControl_Rename(This,fuMode,pwszNewName,pProgress) \
  3153. ( (This)->lpVtbl -> Rename(This,fuMode,pwszNewName,pProgress) )
  3154. #define IWMDMStorageControl_Read(This,fuMode,pwszFile,pProgress,pOperation) \
  3155. ( (This)->lpVtbl -> Read(This,fuMode,pwszFile,pProgress,pOperation) )
  3156. #define IWMDMStorageControl_Move(This,fuMode,pTargetObject,pProgress) \
  3157. ( (This)->lpVtbl -> Move(This,fuMode,pTargetObject,pProgress) )
  3158. #endif /* COBJMACROS */
  3159. #endif /* C style interface */
  3160. #endif /* __IWMDMStorageControl_INTERFACE_DEFINED__ */
  3161. #ifndef __IWMDMStorageControl2_INTERFACE_DEFINED__
  3162. #define __IWMDMStorageControl2_INTERFACE_DEFINED__
  3163. /* interface IWMDMStorageControl2 */
  3164. /* [unique][uuid][object] */
  3165. EXTERN_C const IID IID_IWMDMStorageControl2;
  3166. #if defined(__cplusplus) && !defined(CINTERFACE)
  3167. MIDL_INTERFACE("972C2E88-BD6C-4125-8E09-84F837E637B6")
  3168. IWMDMStorageControl2 : public IWMDMStorageControl
  3169. {
  3170. public:
  3171. virtual HRESULT STDMETHODCALLTYPE Insert2(
  3172. /* [in] */ UINT fuMode,
  3173. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileSource,
  3174. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileDest,
  3175. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3176. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3177. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  3178. /* [unique][out][in] */ __RPC__deref_opt_inout_opt IWMDMStorage **ppNewObject) = 0;
  3179. };
  3180. #else /* C style interface */
  3181. typedef struct IWMDMStorageControl2Vtbl
  3182. {
  3183. BEGIN_INTERFACE
  3184. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3185. IWMDMStorageControl2 * This,
  3186. /* [in] */ __RPC__in REFIID riid,
  3187. /* [iid_is][out] */
  3188. __RPC__deref_out void **ppvObject);
  3189. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3190. IWMDMStorageControl2 * This);
  3191. ULONG ( STDMETHODCALLTYPE *Release )(
  3192. IWMDMStorageControl2 * This);
  3193. HRESULT ( STDMETHODCALLTYPE *Insert )(
  3194. IWMDMStorageControl2 * This,
  3195. /* [in] */ UINT fuMode,
  3196. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3197. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3198. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3199. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppNewObject);
  3200. HRESULT ( STDMETHODCALLTYPE *Delete )(
  3201. IWMDMStorageControl2 * This,
  3202. /* [in] */ UINT fuMode,
  3203. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3204. HRESULT ( STDMETHODCALLTYPE *Rename )(
  3205. IWMDMStorageControl2 * This,
  3206. /* [in] */ UINT fuMode,
  3207. /* [in] */ __RPC__in LPWSTR pwszNewName,
  3208. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3209. HRESULT ( STDMETHODCALLTYPE *Read )(
  3210. IWMDMStorageControl2 * This,
  3211. /* [in] */ UINT fuMode,
  3212. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3213. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3214. /* [in] */ __RPC__in_opt IWMDMOperation *pOperation);
  3215. HRESULT ( STDMETHODCALLTYPE *Move )(
  3216. IWMDMStorageControl2 * This,
  3217. /* [in] */ UINT fuMode,
  3218. /* [in] */ __RPC__in_opt IWMDMStorage *pTargetObject,
  3219. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3220. HRESULT ( STDMETHODCALLTYPE *Insert2 )(
  3221. IWMDMStorageControl2 * This,
  3222. /* [in] */ UINT fuMode,
  3223. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileSource,
  3224. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileDest,
  3225. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3226. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3227. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  3228. /* [unique][out][in] */ __RPC__deref_opt_inout_opt IWMDMStorage **ppNewObject);
  3229. END_INTERFACE
  3230. } IWMDMStorageControl2Vtbl;
  3231. interface IWMDMStorageControl2
  3232. {
  3233. CONST_VTBL struct IWMDMStorageControl2Vtbl *lpVtbl;
  3234. };
  3235. #ifdef COBJMACROS
  3236. #define IWMDMStorageControl2_QueryInterface(This,riid,ppvObject) \
  3237. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3238. #define IWMDMStorageControl2_AddRef(This) \
  3239. ( (This)->lpVtbl -> AddRef(This) )
  3240. #define IWMDMStorageControl2_Release(This) \
  3241. ( (This)->lpVtbl -> Release(This) )
  3242. #define IWMDMStorageControl2_Insert(This,fuMode,pwszFile,pOperation,pProgress,ppNewObject) \
  3243. ( (This)->lpVtbl -> Insert(This,fuMode,pwszFile,pOperation,pProgress,ppNewObject) )
  3244. #define IWMDMStorageControl2_Delete(This,fuMode,pProgress) \
  3245. ( (This)->lpVtbl -> Delete(This,fuMode,pProgress) )
  3246. #define IWMDMStorageControl2_Rename(This,fuMode,pwszNewName,pProgress) \
  3247. ( (This)->lpVtbl -> Rename(This,fuMode,pwszNewName,pProgress) )
  3248. #define IWMDMStorageControl2_Read(This,fuMode,pwszFile,pProgress,pOperation) \
  3249. ( (This)->lpVtbl -> Read(This,fuMode,pwszFile,pProgress,pOperation) )
  3250. #define IWMDMStorageControl2_Move(This,fuMode,pTargetObject,pProgress) \
  3251. ( (This)->lpVtbl -> Move(This,fuMode,pTargetObject,pProgress) )
  3252. #define IWMDMStorageControl2_Insert2(This,fuMode,pwszFileSource,pwszFileDest,pOperation,pProgress,pUnknown,ppNewObject) \
  3253. ( (This)->lpVtbl -> Insert2(This,fuMode,pwszFileSource,pwszFileDest,pOperation,pProgress,pUnknown,ppNewObject) )
  3254. #endif /* COBJMACROS */
  3255. #endif /* C style interface */
  3256. #endif /* __IWMDMStorageControl2_INTERFACE_DEFINED__ */
  3257. #ifndef __IWMDMStorageControl3_INTERFACE_DEFINED__
  3258. #define __IWMDMStorageControl3_INTERFACE_DEFINED__
  3259. /* interface IWMDMStorageControl3 */
  3260. /* [unique][uuid][object] */
  3261. EXTERN_C const IID IID_IWMDMStorageControl3;
  3262. #if defined(__cplusplus) && !defined(CINTERFACE)
  3263. MIDL_INTERFACE("B3266365-D4F3-4696-8D53-BD27EC60993A")
  3264. IWMDMStorageControl3 : public IWMDMStorageControl2
  3265. {
  3266. public:
  3267. virtual HRESULT STDMETHODCALLTYPE Insert3(
  3268. /* [in] */ UINT fuMode,
  3269. /* [in] */ UINT fuType,
  3270. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileSource,
  3271. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileDest,
  3272. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3273. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3274. /* [unique][in] */ __RPC__in_opt IWMDMMetaData *pMetaData,
  3275. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  3276. /* [unique][out][in] */ __RPC__deref_opt_inout_opt IWMDMStorage **ppNewObject) = 0;
  3277. };
  3278. #else /* C style interface */
  3279. typedef struct IWMDMStorageControl3Vtbl
  3280. {
  3281. BEGIN_INTERFACE
  3282. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3283. IWMDMStorageControl3 * This,
  3284. /* [in] */ __RPC__in REFIID riid,
  3285. /* [iid_is][out] */
  3286. __RPC__deref_out void **ppvObject);
  3287. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3288. IWMDMStorageControl3 * This);
  3289. ULONG ( STDMETHODCALLTYPE *Release )(
  3290. IWMDMStorageControl3 * This);
  3291. HRESULT ( STDMETHODCALLTYPE *Insert )(
  3292. IWMDMStorageControl3 * This,
  3293. /* [in] */ UINT fuMode,
  3294. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3295. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3296. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3297. /* [out] */ __RPC__deref_out_opt IWMDMStorage **ppNewObject);
  3298. HRESULT ( STDMETHODCALLTYPE *Delete )(
  3299. IWMDMStorageControl3 * This,
  3300. /* [in] */ UINT fuMode,
  3301. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3302. HRESULT ( STDMETHODCALLTYPE *Rename )(
  3303. IWMDMStorageControl3 * This,
  3304. /* [in] */ UINT fuMode,
  3305. /* [in] */ __RPC__in LPWSTR pwszNewName,
  3306. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3307. HRESULT ( STDMETHODCALLTYPE *Read )(
  3308. IWMDMStorageControl3 * This,
  3309. /* [in] */ UINT fuMode,
  3310. /* [unique][in] */ __RPC__in_opt LPWSTR pwszFile,
  3311. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3312. /* [in] */ __RPC__in_opt IWMDMOperation *pOperation);
  3313. HRESULT ( STDMETHODCALLTYPE *Move )(
  3314. IWMDMStorageControl3 * This,
  3315. /* [in] */ UINT fuMode,
  3316. /* [in] */ __RPC__in_opt IWMDMStorage *pTargetObject,
  3317. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  3318. HRESULT ( STDMETHODCALLTYPE *Insert2 )(
  3319. IWMDMStorageControl3 * This,
  3320. /* [in] */ UINT fuMode,
  3321. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileSource,
  3322. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileDest,
  3323. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3324. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3325. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  3326. /* [unique][out][in] */ __RPC__deref_opt_inout_opt IWMDMStorage **ppNewObject);
  3327. HRESULT ( STDMETHODCALLTYPE *Insert3 )(
  3328. IWMDMStorageControl3 * This,
  3329. /* [in] */ UINT fuMode,
  3330. /* [in] */ UINT fuType,
  3331. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileSource,
  3332. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszFileDest,
  3333. /* [unique][in] */ __RPC__in_opt IWMDMOperation *pOperation,
  3334. /* [unique][in] */ __RPC__in_opt IWMDMProgress *pProgress,
  3335. /* [unique][in] */ __RPC__in_opt IWMDMMetaData *pMetaData,
  3336. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  3337. /* [unique][out][in] */ __RPC__deref_opt_inout_opt IWMDMStorage **ppNewObject);
  3338. END_INTERFACE
  3339. } IWMDMStorageControl3Vtbl;
  3340. interface IWMDMStorageControl3
  3341. {
  3342. CONST_VTBL struct IWMDMStorageControl3Vtbl *lpVtbl;
  3343. };
  3344. #ifdef COBJMACROS
  3345. #define IWMDMStorageControl3_QueryInterface(This,riid,ppvObject) \
  3346. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3347. #define IWMDMStorageControl3_AddRef(This) \
  3348. ( (This)->lpVtbl -> AddRef(This) )
  3349. #define IWMDMStorageControl3_Release(This) \
  3350. ( (This)->lpVtbl -> Release(This) )
  3351. #define IWMDMStorageControl3_Insert(This,fuMode,pwszFile,pOperation,pProgress,ppNewObject) \
  3352. ( (This)->lpVtbl -> Insert(This,fuMode,pwszFile,pOperation,pProgress,ppNewObject) )
  3353. #define IWMDMStorageControl3_Delete(This,fuMode,pProgress) \
  3354. ( (This)->lpVtbl -> Delete(This,fuMode,pProgress) )
  3355. #define IWMDMStorageControl3_Rename(This,fuMode,pwszNewName,pProgress) \
  3356. ( (This)->lpVtbl -> Rename(This,fuMode,pwszNewName,pProgress) )
  3357. #define IWMDMStorageControl3_Read(This,fuMode,pwszFile,pProgress,pOperation) \
  3358. ( (This)->lpVtbl -> Read(This,fuMode,pwszFile,pProgress,pOperation) )
  3359. #define IWMDMStorageControl3_Move(This,fuMode,pTargetObject,pProgress) \
  3360. ( (This)->lpVtbl -> Move(This,fuMode,pTargetObject,pProgress) )
  3361. #define IWMDMStorageControl3_Insert2(This,fuMode,pwszFileSource,pwszFileDest,pOperation,pProgress,pUnknown,ppNewObject) \
  3362. ( (This)->lpVtbl -> Insert2(This,fuMode,pwszFileSource,pwszFileDest,pOperation,pProgress,pUnknown,ppNewObject) )
  3363. #define IWMDMStorageControl3_Insert3(This,fuMode,fuType,pwszFileSource,pwszFileDest,pOperation,pProgress,pMetaData,pUnknown,ppNewObject) \
  3364. ( (This)->lpVtbl -> Insert3(This,fuMode,fuType,pwszFileSource,pwszFileDest,pOperation,pProgress,pMetaData,pUnknown,ppNewObject) )
  3365. #endif /* COBJMACROS */
  3366. #endif /* C style interface */
  3367. #endif /* __IWMDMStorageControl3_INTERFACE_DEFINED__ */
  3368. #ifndef __IWMDMObjectInfo_INTERFACE_DEFINED__
  3369. #define __IWMDMObjectInfo_INTERFACE_DEFINED__
  3370. /* interface IWMDMObjectInfo */
  3371. /* [unique][uuid][object] */
  3372. EXTERN_C const IID IID_IWMDMObjectInfo;
  3373. #if defined(__cplusplus) && !defined(CINTERFACE)
  3374. MIDL_INTERFACE("1DCB3A09-33ED-11d3-8470-00C04F79DBC0")
  3375. IWMDMObjectInfo : public IUnknown
  3376. {
  3377. public:
  3378. virtual HRESULT STDMETHODCALLTYPE GetPlayLength(
  3379. /* [out] */ __RPC__out DWORD *pdwLength) = 0;
  3380. virtual HRESULT STDMETHODCALLTYPE SetPlayLength(
  3381. /* [in] */ DWORD dwLength) = 0;
  3382. virtual HRESULT STDMETHODCALLTYPE GetPlayOffset(
  3383. /* [out] */ __RPC__out DWORD *pdwOffset) = 0;
  3384. virtual HRESULT STDMETHODCALLTYPE SetPlayOffset(
  3385. /* [in] */ DWORD dwOffset) = 0;
  3386. virtual HRESULT STDMETHODCALLTYPE GetTotalLength(
  3387. /* [out] */ __RPC__out DWORD *pdwLength) = 0;
  3388. virtual HRESULT STDMETHODCALLTYPE GetLastPlayPosition(
  3389. /* [out] */ __RPC__out DWORD *pdwLastPos) = 0;
  3390. virtual HRESULT STDMETHODCALLTYPE GetLongestPlayPosition(
  3391. /* [out] */ __RPC__out DWORD *pdwLongestPos) = 0;
  3392. };
  3393. #else /* C style interface */
  3394. typedef struct IWMDMObjectInfoVtbl
  3395. {
  3396. BEGIN_INTERFACE
  3397. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3398. IWMDMObjectInfo * This,
  3399. /* [in] */ __RPC__in REFIID riid,
  3400. /* [iid_is][out] */
  3401. __RPC__deref_out void **ppvObject);
  3402. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3403. IWMDMObjectInfo * This);
  3404. ULONG ( STDMETHODCALLTYPE *Release )(
  3405. IWMDMObjectInfo * This);
  3406. HRESULT ( STDMETHODCALLTYPE *GetPlayLength )(
  3407. IWMDMObjectInfo * This,
  3408. /* [out] */ __RPC__out DWORD *pdwLength);
  3409. HRESULT ( STDMETHODCALLTYPE *SetPlayLength )(
  3410. IWMDMObjectInfo * This,
  3411. /* [in] */ DWORD dwLength);
  3412. HRESULT ( STDMETHODCALLTYPE *GetPlayOffset )(
  3413. IWMDMObjectInfo * This,
  3414. /* [out] */ __RPC__out DWORD *pdwOffset);
  3415. HRESULT ( STDMETHODCALLTYPE *SetPlayOffset )(
  3416. IWMDMObjectInfo * This,
  3417. /* [in] */ DWORD dwOffset);
  3418. HRESULT ( STDMETHODCALLTYPE *GetTotalLength )(
  3419. IWMDMObjectInfo * This,
  3420. /* [out] */ __RPC__out DWORD *pdwLength);
  3421. HRESULT ( STDMETHODCALLTYPE *GetLastPlayPosition )(
  3422. IWMDMObjectInfo * This,
  3423. /* [out] */ __RPC__out DWORD *pdwLastPos);
  3424. HRESULT ( STDMETHODCALLTYPE *GetLongestPlayPosition )(
  3425. IWMDMObjectInfo * This,
  3426. /* [out] */ __RPC__out DWORD *pdwLongestPos);
  3427. END_INTERFACE
  3428. } IWMDMObjectInfoVtbl;
  3429. interface IWMDMObjectInfo
  3430. {
  3431. CONST_VTBL struct IWMDMObjectInfoVtbl *lpVtbl;
  3432. };
  3433. #ifdef COBJMACROS
  3434. #define IWMDMObjectInfo_QueryInterface(This,riid,ppvObject) \
  3435. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3436. #define IWMDMObjectInfo_AddRef(This) \
  3437. ( (This)->lpVtbl -> AddRef(This) )
  3438. #define IWMDMObjectInfo_Release(This) \
  3439. ( (This)->lpVtbl -> Release(This) )
  3440. #define IWMDMObjectInfo_GetPlayLength(This,pdwLength) \
  3441. ( (This)->lpVtbl -> GetPlayLength(This,pdwLength) )
  3442. #define IWMDMObjectInfo_SetPlayLength(This,dwLength) \
  3443. ( (This)->lpVtbl -> SetPlayLength(This,dwLength) )
  3444. #define IWMDMObjectInfo_GetPlayOffset(This,pdwOffset) \
  3445. ( (This)->lpVtbl -> GetPlayOffset(This,pdwOffset) )
  3446. #define IWMDMObjectInfo_SetPlayOffset(This,dwOffset) \
  3447. ( (This)->lpVtbl -> SetPlayOffset(This,dwOffset) )
  3448. #define IWMDMObjectInfo_GetTotalLength(This,pdwLength) \
  3449. ( (This)->lpVtbl -> GetTotalLength(This,pdwLength) )
  3450. #define IWMDMObjectInfo_GetLastPlayPosition(This,pdwLastPos) \
  3451. ( (This)->lpVtbl -> GetLastPlayPosition(This,pdwLastPos) )
  3452. #define IWMDMObjectInfo_GetLongestPlayPosition(This,pdwLongestPos) \
  3453. ( (This)->lpVtbl -> GetLongestPlayPosition(This,pdwLongestPos) )
  3454. #endif /* COBJMACROS */
  3455. #endif /* C style interface */
  3456. #endif /* __IWMDMObjectInfo_INTERFACE_DEFINED__ */
  3457. #ifndef __IWMDMRevoked_INTERFACE_DEFINED__
  3458. #define __IWMDMRevoked_INTERFACE_DEFINED__
  3459. /* interface IWMDMRevoked */
  3460. /* [ref][uuid][object] */
  3461. EXTERN_C const IID IID_IWMDMRevoked;
  3462. #if defined(__cplusplus) && !defined(CINTERFACE)
  3463. MIDL_INTERFACE("EBECCEDB-88EE-4e55-B6A4-8D9F07D696AA")
  3464. IWMDMRevoked : public IUnknown
  3465. {
  3466. public:
  3467. virtual HRESULT STDMETHODCALLTYPE GetRevocationURL(
  3468. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwBufferLen) LPWSTR *ppwszRevocationURL,
  3469. /* [out][in] */ __RPC__inout DWORD *pdwBufferLen,
  3470. /* [out] */ __RPC__out DWORD *pdwRevokedBitFlag) = 0;
  3471. };
  3472. #else /* C style interface */
  3473. typedef struct IWMDMRevokedVtbl
  3474. {
  3475. BEGIN_INTERFACE
  3476. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3477. IWMDMRevoked * This,
  3478. /* [in] */ __RPC__in REFIID riid,
  3479. /* [iid_is][out] */
  3480. __RPC__deref_out void **ppvObject);
  3481. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3482. IWMDMRevoked * This);
  3483. ULONG ( STDMETHODCALLTYPE *Release )(
  3484. IWMDMRevoked * This);
  3485. HRESULT ( STDMETHODCALLTYPE *GetRevocationURL )(
  3486. IWMDMRevoked * This,
  3487. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwBufferLen) LPWSTR *ppwszRevocationURL,
  3488. /* [out][in] */ __RPC__inout DWORD *pdwBufferLen,
  3489. /* [out] */ __RPC__out DWORD *pdwRevokedBitFlag);
  3490. END_INTERFACE
  3491. } IWMDMRevokedVtbl;
  3492. interface IWMDMRevoked
  3493. {
  3494. CONST_VTBL struct IWMDMRevokedVtbl *lpVtbl;
  3495. };
  3496. #ifdef COBJMACROS
  3497. #define IWMDMRevoked_QueryInterface(This,riid,ppvObject) \
  3498. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3499. #define IWMDMRevoked_AddRef(This) \
  3500. ( (This)->lpVtbl -> AddRef(This) )
  3501. #define IWMDMRevoked_Release(This) \
  3502. ( (This)->lpVtbl -> Release(This) )
  3503. #define IWMDMRevoked_GetRevocationURL(This,ppwszRevocationURL,pdwBufferLen,pdwRevokedBitFlag) \
  3504. ( (This)->lpVtbl -> GetRevocationURL(This,ppwszRevocationURL,pdwBufferLen,pdwRevokedBitFlag) )
  3505. #endif /* COBJMACROS */
  3506. #endif /* C style interface */
  3507. #endif /* __IWMDMRevoked_INTERFACE_DEFINED__ */
  3508. #ifndef __IWMDMNotification_INTERFACE_DEFINED__
  3509. #define __IWMDMNotification_INTERFACE_DEFINED__
  3510. /* interface IWMDMNotification */
  3511. /* [unique][uuid][object] */
  3512. EXTERN_C const IID IID_IWMDMNotification;
  3513. #if defined(__cplusplus) && !defined(CINTERFACE)
  3514. MIDL_INTERFACE("3F5E95C0-0F43-4ed4-93D2-C89A45D59B81")
  3515. IWMDMNotification : public IUnknown
  3516. {
  3517. public:
  3518. virtual HRESULT STDMETHODCALLTYPE WMDMMessage(
  3519. /* [in] */ DWORD dwMessageType,
  3520. /* [string][in] */ __RPC__in LPCWSTR pwszCanonicalName) = 0;
  3521. };
  3522. #else /* C style interface */
  3523. typedef struct IWMDMNotificationVtbl
  3524. {
  3525. BEGIN_INTERFACE
  3526. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3527. IWMDMNotification * This,
  3528. /* [in] */ __RPC__in REFIID riid,
  3529. /* [iid_is][out] */
  3530. __RPC__deref_out void **ppvObject);
  3531. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3532. IWMDMNotification * This);
  3533. ULONG ( STDMETHODCALLTYPE *Release )(
  3534. IWMDMNotification * This);
  3535. HRESULT ( STDMETHODCALLTYPE *WMDMMessage )(
  3536. IWMDMNotification * This,
  3537. /* [in] */ DWORD dwMessageType,
  3538. /* [string][in] */ __RPC__in LPCWSTR pwszCanonicalName);
  3539. END_INTERFACE
  3540. } IWMDMNotificationVtbl;
  3541. interface IWMDMNotification
  3542. {
  3543. CONST_VTBL struct IWMDMNotificationVtbl *lpVtbl;
  3544. };
  3545. #ifdef COBJMACROS
  3546. #define IWMDMNotification_QueryInterface(This,riid,ppvObject) \
  3547. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3548. #define IWMDMNotification_AddRef(This) \
  3549. ( (This)->lpVtbl -> AddRef(This) )
  3550. #define IWMDMNotification_Release(This) \
  3551. ( (This)->lpVtbl -> Release(This) )
  3552. #define IWMDMNotification_WMDMMessage(This,dwMessageType,pwszCanonicalName) \
  3553. ( (This)->lpVtbl -> WMDMMessage(This,dwMessageType,pwszCanonicalName) )
  3554. #endif /* COBJMACROS */
  3555. #endif /* C style interface */
  3556. #endif /* __IWMDMNotification_INTERFACE_DEFINED__ */
  3557. /* interface __MIDL_itf_mswmdm_0000_0028 */
  3558. /* [local] */
  3559. // WMDM constants for wellknown meta-data tags
  3560. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3561. static const WCHAR *g_wszWMDMFileName = L"WMDM/FileName";
  3562. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3563. static const WCHAR *g_wszWMDMFormatCode = L"WMDM/FormatCode";
  3564. //Type: WMDMDATETIME, WMDM_TAG_DATATYPE: WMDM_TYPE_DATETIME
  3565. static const WCHAR *g_wszWMDMLastModifiedDate = L"WMDM/LastModifiedDate";
  3566. //Type: WMDMDATETIME, WMDM_TAG_DATATYPE: WMDM_TYPE_DATETIME
  3567. static const WCHAR *g_wszWMDMFileCreationDate = L"WMDM/FileCreationDate";
  3568. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3569. static const WCHAR *g_wszWMDMFileSize = L"WMDM/FileSize";
  3570. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3571. static const WCHAR *g_wszWMDMFileAttributes = L"WMDM/FileAttributes";
  3572. //Format code: WAVE Format
  3573. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3574. static const WCHAR *g_wszAudioWAVECodec = L"WMDM/AudioWAVECodec";
  3575. //Format code: FOURCC code
  3576. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3577. static const WCHAR *g_wszVideoFourCCCodec = L"WMDM/VideoFourCCCodec";
  3578. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3579. static const WCHAR *g_wszWMDMTitle = L"WMDM/Title";
  3580. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3581. static const WCHAR *g_wszWMDMAuthor = L"WMDM/Author";
  3582. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3583. static const WCHAR *g_wszWMDMDescription = L"WMDM/Description";
  3584. //Type: BOOL, WMDM_TAG_DATATYPE: WMDM_TYPE_BOOL
  3585. static const WCHAR *g_wszWMDMIsProtected = L"WMDM/IsProtected";
  3586. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3587. static const WCHAR *g_wszWMDMAlbumTitle = L"WMDM/AlbumTitle";
  3588. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3589. static const WCHAR *g_wszWMDMAlbumArtist = L"WMDM/AlbumArtist";
  3590. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3591. static const WCHAR *g_wszWMDMTrack = L"WMDM/Track";
  3592. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3593. static const WCHAR *g_wszWMDMGenre = L"WMDM/Genre";
  3594. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3595. static const WCHAR *g_wszWMDMTrackMood = L"WMDM/TrackMood";
  3596. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3597. static const WCHAR *g_wszWMDMAlbumCoverFormat = L"WMDM/AlbumCoverFormat";
  3598. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3599. static const WCHAR *g_wszWMDMAlbumCoverSize = L"WMDM/AlbumCoverSize";
  3600. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3601. static const WCHAR *g_wszWMDMAlbumCoverHeight = L"WMDM/AlbumCoverHeight";
  3602. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3603. static const WCHAR *g_wszWMDMAlbumCoverWidth = L"WMDM/AlbumCoverWidth";
  3604. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3605. static const WCHAR *g_wszWMDMAlbumCoverDuration = L"WMDM/AlbumCoverDuration";
  3606. //Type: BYTE*, WMDM_TAG_DATATYPE: WMDM_TYPE_BINARY
  3607. static const WCHAR *g_wszWMDMAlbumCoverData = L"WMDM/AlbumCoverData";
  3608. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3609. static const WCHAR *g_wszWMDMYear = L"WMDM/Year";
  3610. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3611. static const WCHAR *g_wszWMDMComposer = L"WMDM/Composer";
  3612. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3613. static const WCHAR *g_wszWMDMCodec = L"WMDM/Codec";
  3614. static const WCHAR *g_wszWMDMDRMId = L"WMDM/DRMId";
  3615. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3616. static const WCHAR *g_wszWMDMBitrate = L"WMDM/Bitrate";
  3617. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3618. static const WCHAR *g_wszWMDMBitRateType = L"WMDM/BitRateType";
  3619. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3620. static const WCHAR *g_wszWMDMSampleRate = L"WMDM/SampleRate";
  3621. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3622. static const WCHAR *g_wszWMDMNumChannels = L"WMDM/NumChannels";
  3623. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3624. static const WCHAR *g_wszWMDMBlockAlignment = L"WMDM/BlockAlignment";
  3625. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3626. static const WCHAR *g_wszWMDMAudioBitDepth = L"WMDM/AudioBitDepth";
  3627. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3628. static const WCHAR *g_wszWMDMTotalBitrate = L"WMDM/TotalBitrate";
  3629. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3630. static const WCHAR *g_wszWMDMVideoBitrate = L"WMDM/VideoBitrate";
  3631. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3632. static const WCHAR *g_wszWMDMFrameRate = L"WMDM/FrameRate";
  3633. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3634. static const WCHAR *g_wszWMDMScanType = L"WMDM/ScanType";
  3635. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3636. static const WCHAR *g_wszWMDMKeyFrameDistance = L"WMDM/KeyFrameDistance";
  3637. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3638. static const WCHAR *g_wszWMDMBufferSize = L"WMDM/BufferSize";
  3639. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3640. static const WCHAR *g_wszWMDMQualitySetting = L"WMDM/QualitySetting";
  3641. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3642. static const WCHAR *g_wszWMDMEncodingProfile = L"WMDM/EncodingProfile";
  3643. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3644. static const WCHAR *g_wszWMDMDuration = L"WMDM/Duration";
  3645. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3646. static const WCHAR *g_wszWMDMAlbumArt = L"WMDM/AlbumArt";
  3647. //Type: BOOL, WMDM_TAG_DATATYPE: WMDM_TYPE_BOOL
  3648. static const WCHAR *g_wszWMDMBuyNow = L"WMDM/BuyNow";
  3649. //Type: BOOL, WMDM_TAG_DATATYPE: WMDM_TYPE_BOOL
  3650. static const WCHAR *g_wszWMDMNonConsumable = L"WMDM/NonConsumable";
  3651. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3652. static const WCHAR *g_wszWMDMediaClassPrimaryID = L"WMDM/MediaClassPrimaryID";
  3653. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3654. static const WCHAR *g_wszWMDMMediaClassSecondaryID = L"WMDM/MediaClassSecondaryID";
  3655. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3656. static const WCHAR *g_wszWMDMUserEffectiveRating = L"WMDM/UserEffectiveRating";
  3657. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3658. static const WCHAR *g_wszWMDMUserRating = L"WMDM/UserRating";
  3659. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3660. static const WCHAR *g_wszWMDMUserRatingOnDevice = L"WMDM/UserRatingOnDevice";
  3661. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3662. static const WCHAR *g_wszWMDMPlayCount = L"WMDM/PlayCount";
  3663. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3664. static const WCHAR *g_wszWMDMDevicePlayCount = L"WMDM/DevicePlayCount";
  3665. //Type: WMDMDATETIME, WMDM_TAG_DATATYPE: WMDM_TYPE_DATETIME
  3666. static const WCHAR *g_wszWMDMAuthorDate = L"WMDM/AuthorDate";
  3667. //Type: WMDMDATETIME, WMDM_TAG_DATATYPE: WMDM_TYPE_DATETIME
  3668. static const WCHAR *g_wszWMDMUserLastPlayTime = L"WMDM/UserLastPlayTime";
  3669. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3670. static const WCHAR *g_wszWMDMSubTitle = L"WMDM/SubTitle";
  3671. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3672. static const WCHAR *g_wszWMDMSubTitleDescription = L"WMDM/SubTitleDescription";
  3673. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3674. static const WCHAR *g_wszWMDMMediaCredits = L"WMDM/MediaCredits";
  3675. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3676. static const WCHAR *g_wszWMDMMediaStationName = L"WMDM/MediaStationName";
  3677. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3678. static const WCHAR *g_wszWMDMMediaOriginalChannel = L"WMDM/MediaOriginalChannel";
  3679. //Type: WMDMDATETIME, WMDM_TAG_DATATYPE: WMDM_TYPE_DATETIME
  3680. static const WCHAR *g_wszWMDMMediaOriginalBroadcastDateTime = L"WMDM/MediaOriginalBroadcastDateTime";
  3681. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3682. static const WCHAR *g_wszWMDMProviderCopyright = L"WMDM/ProviderCopyright";
  3683. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3684. static const WCHAR *g_wszWMDMSyncID = L"WMDM/SyncID";
  3685. //Type: GUID, WMDM_TAG_DATATYPE: WMDM_TYPE_GUID
  3686. static const WCHAR *g_wszWMDMPersistentUniqueID = L"WMDM/PersistentUniqueID";
  3687. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3688. static const WCHAR *g_wszWMDMWidth = L"WMDM/Width";
  3689. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3690. static const WCHAR *g_wszWMDMHeight = L"WMDM/Height";
  3691. //Type: WMDMDATETIME, WMDM_TAG_DATATYPE: WMDM_TYPE_DATETIME
  3692. static const WCHAR *g_wszWMDMSyncTime = L"WMDM/SyncTime";
  3693. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3694. static const WCHAR *g_wszWMDMParentalRating = L"WMDM/ParentalRating";
  3695. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3696. static const WCHAR *g_wszWMDMMetaGenre = L"WMDM/MetaGenre";
  3697. //Type: BOOL, WMDM_TAG_DATATYPE: WMDM_TYPE_BOOL
  3698. static const WCHAR *g_wszWMDMIsRepeat = L"WMDM/IsRepeat";
  3699. // Device properties
  3700. //PROPVARIANT vt = VT_BSTR | VT_ARRAY
  3701. static const WCHAR *g_wszWMDMSupportedDeviceProperties = L"WMDM/SupportedDeviceProperties";
  3702. //PROPVARIANT vt = VT_BSTR
  3703. static const WCHAR *g_wszWMDMDeviceFriendlyName = L"WMDM/DeviceFriendlyName";
  3704. //PROPVARIANT vt = VT_UI4 | VT_ARRAY
  3705. static const WCHAR *g_wszWMDMFormatsSupported = L"WMDM/FormatsSupported";
  3706. //PROPVARIANT vt = VT_BOOL
  3707. static const WCHAR *g_wszWMDMFormatsSupportedAreOrdered = L"WMDM/FormatsSupportedAreOrdered";
  3708. //PROPVARIANT vt = VT_BSTR
  3709. static const WCHAR *g_wszWMDMSyncRelationshipID = L"WMDM/SyncRelationshipID";
  3710. //PROPVARIANT vt = VT_BSTR
  3711. static const WCHAR *g_wszWMDMDeviceModelName = L"WMDM/DeviceModelName";
  3712. //PROPVARIANT vt = VT_BSTR
  3713. static const WCHAR *g_wszWMDMDeviceFirmwareVersion = L"WMDM/DeviceFirmwareVersion";
  3714. //PROPVARIANT vt = VT_BSTR
  3715. static const WCHAR *g_wszWMDMDeviceVendorExtension = L"WMDM/DeviceVendorExtension";
  3716. //PROPVARIANT vt = VT_CLSID
  3717. static const WCHAR *g_wszWMDMDeviceProtocol = L"WMDM/DeviceProtocol";
  3718. //PROPVARIANT vt = VT_CLSID
  3719. static const WCHAR *g_wszWMDMDeviceServiceProviderVendor = L"WMDM/DeviceServiceProviderVendor";
  3720. //PROPVARIANT vt = VT_BSTR
  3721. static const WCHAR *g_wszWMDMDeviceRevocationInfo = L"WMDM/DeviceRevocationInfo";
  3722. //PROPVARIANT vt = VT_BSTR
  3723. static const WCHAR *g_wszWMDMCollectionID = L"WMDM/CollectionID";
  3724. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3725. static const WCHAR *g_wszWMDMOwner = L"WMDM/Owner";
  3726. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3727. static const WCHAR *g_wszWMDMEditor = L"WMDM/Editor";
  3728. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3729. static const WCHAR *g_wszWMDMWebmaster = L"WMDM/Webmaster";
  3730. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3731. static const WCHAR *g_wszWMDMSourceURL = L"WMDM/SourceURL";
  3732. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3733. static const WCHAR *g_wszWMDMDestinationURL = L"WMDM/DestinationURL";
  3734. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3735. static const WCHAR *g_wszWMDMCategory = L"WMDM/Category";
  3736. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3737. static const WCHAR *g_wszWMDMTimeBookmark = L"WMDM/TimeBookmark";
  3738. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3739. static const WCHAR *g_wszWMDMObjectBookmark = L"WMDM/ObjectBookmark";
  3740. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3741. static const WCHAR *g_wszWMDMByteBookmark = L"WMDM/ByteBookmark";
  3742. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3743. static const WCHAR *g_wszWMDMDataOffset = L"WMDM/DataOffset";
  3744. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3745. static const WCHAR *g_wszWMDMDataLength = L"WMDM/DataLength";
  3746. //Type: DWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_DWORD
  3747. static const WCHAR *g_wszWMDMDataUnits = L"WMDM/DataUnits";
  3748. //Type: QWORD, WMDM_TAG_DATATYPE: WMDM_TYPE_QWORD
  3749. static const WCHAR *g_wszWMDMTimeToLive = L"WMDM/TimeToLive";
  3750. //Type: LPCWSTR, WMDM_TAG_DATATYPE: WMDM_TYPE_STRING
  3751. static const WCHAR *g_wszWMDMMediaGuid = L"WMDM/MediaGuid";
  3752. //Type: BYTE*, WMDM_TAG_DATATYPE: WMDM_TYPE_BINARY
  3753. static const WCHAR *g_wszWPDPassthroughPropertyValues = L"WPD/PassthroughPropertyValues";
  3754. #define CCH_WMDM_PROPNAME(sz) (sizeof(sz)/sizeof(sz[0]))
  3755. union WMDMDetermineMaxPropStringLen {
  3756. WCHAR sz001[CCH_WMDM_PROPNAME(L"WMDM/DeviceFirmwareVersion")];
  3757. WCHAR sz002[CCH_WMDM_PROPNAME(L"WMDM/SupportedDeviceProperties")];
  3758. WCHAR sz003[CCH_WMDM_PROPNAME(L"WMDM/FileName")];
  3759. WCHAR sz004[CCH_WMDM_PROPNAME(L"WMDM/FormatCode")];
  3760. WCHAR sz005[CCH_WMDM_PROPNAME(L"WMDM/LastModifiedDate")];
  3761. WCHAR sz006[CCH_WMDM_PROPNAME(L"WMDM/FileSize")];
  3762. WCHAR sz007[CCH_WMDM_PROPNAME(L"WMDM/FileAttributes")];
  3763. WCHAR sz008[CCH_WMDM_PROPNAME(L"WMDM/AudioWAVECodec")];
  3764. WCHAR sz009[CCH_WMDM_PROPNAME(L"WMDM/VideoFourCCCodec")];
  3765. WCHAR sz010[CCH_WMDM_PROPNAME(L"WMDM/Title")];
  3766. WCHAR sz011[CCH_WMDM_PROPNAME(L"WMDM/Author")];
  3767. WCHAR sz012[CCH_WMDM_PROPNAME(L"WMDM/Description")];
  3768. WCHAR sz013[CCH_WMDM_PROPNAME(L"WMDM/IsProtected")];
  3769. WCHAR sz014[CCH_WMDM_PROPNAME(L"WMDM/AlbumTitle")];
  3770. WCHAR sz015[CCH_WMDM_PROPNAME(L"WMDM/AlbumArtist")];
  3771. WCHAR sz016[CCH_WMDM_PROPNAME(L"WMDM/Track")];
  3772. WCHAR sz017[CCH_WMDM_PROPNAME(L"WMDM/Genre")];
  3773. WCHAR sz018[CCH_WMDM_PROPNAME(L"WMDM/TrackMood")];
  3774. WCHAR sz019[CCH_WMDM_PROPNAME(L"WMDM/AlbumCoverFormat")];
  3775. WCHAR sz020[CCH_WMDM_PROPNAME(L"WMDM/AlbumCoverSize")];
  3776. WCHAR sz021[CCH_WMDM_PROPNAME(L"WMDM/AlbumCoverHeight")];
  3777. WCHAR sz022[CCH_WMDM_PROPNAME(L"WMDM/AlbumCoverWidth")];
  3778. WCHAR sz023[CCH_WMDM_PROPNAME(L"WMDM/AlbumCoverDuration")];
  3779. WCHAR sz024[CCH_WMDM_PROPNAME(L"WMDM/AlbumCoverData")];
  3780. WCHAR sz025[CCH_WMDM_PROPNAME(L"WMDM/Year")];
  3781. WCHAR sz026[CCH_WMDM_PROPNAME(L"WMDM/Composer")];
  3782. WCHAR sz027[CCH_WMDM_PROPNAME(L"WMDM/Codec")];
  3783. WCHAR sz028[CCH_WMDM_PROPNAME(L"WMDM/DRMId")];
  3784. WCHAR sz029[CCH_WMDM_PROPNAME(L"WMDM/Bitrate")];
  3785. WCHAR sz030[CCH_WMDM_PROPNAME(L"WMDM/BitRateType")];
  3786. WCHAR sz031[CCH_WMDM_PROPNAME(L"WMDM/SampleRate")];
  3787. WCHAR sz032[CCH_WMDM_PROPNAME(L"WMDM/NumChannels")];
  3788. WCHAR sz033[CCH_WMDM_PROPNAME(L"WMDM/BlockAlignment")];
  3789. WCHAR sz034[CCH_WMDM_PROPNAME(L"WMDM/AudioBitDepth")];
  3790. WCHAR sz035[CCH_WMDM_PROPNAME(L"WMDM/TotalBitrate")];
  3791. WCHAR sz036[CCH_WMDM_PROPNAME(L"WMDM/VideoBitrate")];
  3792. WCHAR sz037[CCH_WMDM_PROPNAME(L"WMDM/FrameRate")];
  3793. WCHAR sz041[CCH_WMDM_PROPNAME(L"WMDM/ScanType")];
  3794. WCHAR sz043[CCH_WMDM_PROPNAME(L"WMDM/KeyFrameDistance")];
  3795. WCHAR sz044[CCH_WMDM_PROPNAME(L"WMDM/BufferSize")];
  3796. WCHAR sz045[CCH_WMDM_PROPNAME(L"WMDM/QualitySetting")];
  3797. WCHAR sz046[CCH_WMDM_PROPNAME(L"WMDM/Duration")];
  3798. WCHAR sz047[CCH_WMDM_PROPNAME(L"WMDM/AlbumArt")];
  3799. WCHAR sz048[CCH_WMDM_PROPNAME(L"WMDM/BuyNow")];
  3800. WCHAR sz049[CCH_WMDM_PROPNAME(L"WMDM/MediaClassPrimaryID")];
  3801. WCHAR sz050[CCH_WMDM_PROPNAME(L"WMDM/MediaClassSecondayID")];
  3802. WCHAR sz051[CCH_WMDM_PROPNAME(L"WMDM/UserEffectiveRating")];
  3803. WCHAR sz052[CCH_WMDM_PROPNAME(L"WMDM/UserRating")];
  3804. WCHAR sz053[CCH_WMDM_PROPNAME(L"WMDM/UserRatingOnDevice")];
  3805. WCHAR sz054[CCH_WMDM_PROPNAME(L"WMDM/PlayCount")];
  3806. WCHAR sz055[CCH_WMDM_PROPNAME(L"WMDM/DevicePlayCount")];
  3807. WCHAR sz056[CCH_WMDM_PROPNAME(L"WMDM/AuthorDate")];
  3808. WCHAR sz057[CCH_WMDM_PROPNAME(L"WMDM/UserLastPlayTime")];
  3809. WCHAR sz058[CCH_WMDM_PROPNAME(L"WMDM/SubTitle")];
  3810. WCHAR sz059[CCH_WMDM_PROPNAME(L"WMDM/SubTitleDescription")];
  3811. WCHAR sz060[CCH_WMDM_PROPNAME(L"WMDM/MediaCredits")];
  3812. WCHAR sz061[CCH_WMDM_PROPNAME(L"WMDM/MediaStationName")];
  3813. WCHAR sz062[CCH_WMDM_PROPNAME(L"WMDM/MediaOriginalChannel")];
  3814. WCHAR sz063[CCH_WMDM_PROPNAME(L"WMDM/MediaOriginalBroadcastDateTime")];
  3815. WCHAR sz064[CCH_WMDM_PROPNAME(L"WMDM/ProviderCopyright")];
  3816. WCHAR sz065[CCH_WMDM_PROPNAME(L"WMDM/SyncID")];
  3817. WCHAR sz066[CCH_WMDM_PROPNAME(L"WMDM/PersistentUniqueID")];
  3818. WCHAR sz067[CCH_WMDM_PROPNAME(L"WMDM/Width")];
  3819. WCHAR sz068[CCH_WMDM_PROPNAME(L"WMDM/Height")];
  3820. WCHAR sz069[CCH_WMDM_PROPNAME(L"WMDM/SyncTime")];
  3821. WCHAR sz070[CCH_WMDM_PROPNAME(L"WMDM/ParentalRating")];
  3822. WCHAR sz071[CCH_WMDM_PROPNAME(L"WMDM/MetaGenre")];
  3823. WCHAR sz072[CCH_WMDM_PROPNAME(L"WMDM/IsRepeat")];
  3824. WCHAR sz073[CCH_WMDM_PROPNAME(L"WMDM/SupportedDeviceProperties")];
  3825. WCHAR sz074[CCH_WMDM_PROPNAME(L"WMDM/DeviceFriendlyName")];
  3826. WCHAR sz075[CCH_WMDM_PROPNAME(L"WMDM/FormatsSupported")];
  3827. WCHAR sz076[CCH_WMDM_PROPNAME(L"WMDM/SyncRelationshipID")];
  3828. WCHAR sz077[CCH_WMDM_PROPNAME(L"WMDM/DeviceModelName")];
  3829. WCHAR sz078[CCH_WMDM_PROPNAME(L"WMDM/DeviceFirmwareVersion")];
  3830. WCHAR sz079[CCH_WMDM_PROPNAME(L"WMDM/DeviceVendorExtension")];
  3831. WCHAR sz080[CCH_WMDM_PROPNAME(L"WMDM/DeviceProtocol")];
  3832. WCHAR sz081[CCH_WMDM_PROPNAME(L"WMDM/DeviceServiceProviderVendor")];
  3833. WCHAR sz082[CCH_WMDM_PROPNAME(L"WMDM/EncodingProfile")];
  3834. WCHAR sz083[CCH_WMDM_PROPNAME(L"WMDM/FormatsSupportedAreOrdered")];
  3835. WCHAR sz084[CCH_WMDM_PROPNAME(L"WMDM/DeviceRevocationInfo")];
  3836. WCHAR sz085[CCH_WMDM_PROPNAME(L"WMDM/CollectionID")];
  3837. WCHAR sz086[CCH_WMDM_PROPNAME(L"WPD/PassthroughPropertyValues")];
  3838. };
  3839. #define WMDM_MAXLEN_PROPERTYNAME (sizeof(WMDMDetermineMaxPropStringLen)/sizeof(WCHAR))
  3840. // Open Mode Flags
  3841. #define MDSP_READ 0x00000001
  3842. #define MDSP_WRITE 0x00000002
  3843. // Seek Flags
  3844. #define MDSP_SEEK_BOF 0x00000001
  3845. #define MDSP_SEEK_CUR 0x00000002
  3846. #define MDSP_SEEK_EOF 0x00000004
  3847. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0028_v0_0_c_ifspec;
  3848. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0028_v0_0_s_ifspec;
  3849. #ifndef __IMDServiceProvider_INTERFACE_DEFINED__
  3850. #define __IMDServiceProvider_INTERFACE_DEFINED__
  3851. /* interface IMDServiceProvider */
  3852. /* [unique][uuid][object] */
  3853. EXTERN_C const IID IID_IMDServiceProvider;
  3854. #if defined(__cplusplus) && !defined(CINTERFACE)
  3855. MIDL_INTERFACE("1DCB3A10-33ED-11d3-8470-00C04F79DBC0")
  3856. IMDServiceProvider : public IUnknown
  3857. {
  3858. public:
  3859. virtual HRESULT STDMETHODCALLTYPE GetDeviceCount(
  3860. /* [out] */ __RPC__out DWORD *pdwCount) = 0;
  3861. virtual HRESULT STDMETHODCALLTYPE EnumDevices(
  3862. /* [out] */ __RPC__deref_out_opt IMDSPEnumDevice **ppEnumDevice) = 0;
  3863. };
  3864. #else /* C style interface */
  3865. typedef struct IMDServiceProviderVtbl
  3866. {
  3867. BEGIN_INTERFACE
  3868. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3869. IMDServiceProvider * This,
  3870. /* [in] */ __RPC__in REFIID riid,
  3871. /* [iid_is][out] */
  3872. __RPC__deref_out void **ppvObject);
  3873. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3874. IMDServiceProvider * This);
  3875. ULONG ( STDMETHODCALLTYPE *Release )(
  3876. IMDServiceProvider * This);
  3877. HRESULT ( STDMETHODCALLTYPE *GetDeviceCount )(
  3878. IMDServiceProvider * This,
  3879. /* [out] */ __RPC__out DWORD *pdwCount);
  3880. HRESULT ( STDMETHODCALLTYPE *EnumDevices )(
  3881. IMDServiceProvider * This,
  3882. /* [out] */ __RPC__deref_out_opt IMDSPEnumDevice **ppEnumDevice);
  3883. END_INTERFACE
  3884. } IMDServiceProviderVtbl;
  3885. interface IMDServiceProvider
  3886. {
  3887. CONST_VTBL struct IMDServiceProviderVtbl *lpVtbl;
  3888. };
  3889. #ifdef COBJMACROS
  3890. #define IMDServiceProvider_QueryInterface(This,riid,ppvObject) \
  3891. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3892. #define IMDServiceProvider_AddRef(This) \
  3893. ( (This)->lpVtbl -> AddRef(This) )
  3894. #define IMDServiceProvider_Release(This) \
  3895. ( (This)->lpVtbl -> Release(This) )
  3896. #define IMDServiceProvider_GetDeviceCount(This,pdwCount) \
  3897. ( (This)->lpVtbl -> GetDeviceCount(This,pdwCount) )
  3898. #define IMDServiceProvider_EnumDevices(This,ppEnumDevice) \
  3899. ( (This)->lpVtbl -> EnumDevices(This,ppEnumDevice) )
  3900. #endif /* COBJMACROS */
  3901. #endif /* C style interface */
  3902. #endif /* __IMDServiceProvider_INTERFACE_DEFINED__ */
  3903. #ifndef __IMDServiceProvider2_INTERFACE_DEFINED__
  3904. #define __IMDServiceProvider2_INTERFACE_DEFINED__
  3905. /* interface IMDServiceProvider2 */
  3906. /* [unique][uuid][object] */
  3907. EXTERN_C const IID IID_IMDServiceProvider2;
  3908. #if defined(__cplusplus) && !defined(CINTERFACE)
  3909. MIDL_INTERFACE("B2FA24B7-CDA3-4694-9862-413AE1A34819")
  3910. IMDServiceProvider2 : public IMDServiceProvider
  3911. {
  3912. public:
  3913. virtual HRESULT STDMETHODCALLTYPE CreateDevice(
  3914. /* [string][in] */ __RPC__in LPCWSTR pwszDevicePath,
  3915. /* [out] */ __RPC__out DWORD *pdwCount,
  3916. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwCount) IMDSPDevice ***pppDeviceArray) = 0;
  3917. };
  3918. #else /* C style interface */
  3919. typedef struct IMDServiceProvider2Vtbl
  3920. {
  3921. BEGIN_INTERFACE
  3922. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3923. IMDServiceProvider2 * This,
  3924. /* [in] */ __RPC__in REFIID riid,
  3925. /* [iid_is][out] */
  3926. __RPC__deref_out void **ppvObject);
  3927. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3928. IMDServiceProvider2 * This);
  3929. ULONG ( STDMETHODCALLTYPE *Release )(
  3930. IMDServiceProvider2 * This);
  3931. HRESULT ( STDMETHODCALLTYPE *GetDeviceCount )(
  3932. IMDServiceProvider2 * This,
  3933. /* [out] */ __RPC__out DWORD *pdwCount);
  3934. HRESULT ( STDMETHODCALLTYPE *EnumDevices )(
  3935. IMDServiceProvider2 * This,
  3936. /* [out] */ __RPC__deref_out_opt IMDSPEnumDevice **ppEnumDevice);
  3937. HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
  3938. IMDServiceProvider2 * This,
  3939. /* [string][in] */ __RPC__in LPCWSTR pwszDevicePath,
  3940. /* [out] */ __RPC__out DWORD *pdwCount,
  3941. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwCount) IMDSPDevice ***pppDeviceArray);
  3942. END_INTERFACE
  3943. } IMDServiceProvider2Vtbl;
  3944. interface IMDServiceProvider2
  3945. {
  3946. CONST_VTBL struct IMDServiceProvider2Vtbl *lpVtbl;
  3947. };
  3948. #ifdef COBJMACROS
  3949. #define IMDServiceProvider2_QueryInterface(This,riid,ppvObject) \
  3950. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3951. #define IMDServiceProvider2_AddRef(This) \
  3952. ( (This)->lpVtbl -> AddRef(This) )
  3953. #define IMDServiceProvider2_Release(This) \
  3954. ( (This)->lpVtbl -> Release(This) )
  3955. #define IMDServiceProvider2_GetDeviceCount(This,pdwCount) \
  3956. ( (This)->lpVtbl -> GetDeviceCount(This,pdwCount) )
  3957. #define IMDServiceProvider2_EnumDevices(This,ppEnumDevice) \
  3958. ( (This)->lpVtbl -> EnumDevices(This,ppEnumDevice) )
  3959. #define IMDServiceProvider2_CreateDevice(This,pwszDevicePath,pdwCount,pppDeviceArray) \
  3960. ( (This)->lpVtbl -> CreateDevice(This,pwszDevicePath,pdwCount,pppDeviceArray) )
  3961. #endif /* COBJMACROS */
  3962. #endif /* C style interface */
  3963. #endif /* __IMDServiceProvider2_INTERFACE_DEFINED__ */
  3964. #ifndef __IMDServiceProvider3_INTERFACE_DEFINED__
  3965. #define __IMDServiceProvider3_INTERFACE_DEFINED__
  3966. /* interface IMDServiceProvider3 */
  3967. /* [unique][uuid][object] */
  3968. EXTERN_C const IID IID_IMDServiceProvider3;
  3969. #if defined(__cplusplus) && !defined(CINTERFACE)
  3970. MIDL_INTERFACE("4ed13ef3-a971-4d19-9f51-0e1826b2da57")
  3971. IMDServiceProvider3 : public IMDServiceProvider2
  3972. {
  3973. public:
  3974. virtual HRESULT STDMETHODCALLTYPE SetDeviceEnumPreference(
  3975. /* [in] */ DWORD dwEnumPref) = 0;
  3976. };
  3977. #else /* C style interface */
  3978. typedef struct IMDServiceProvider3Vtbl
  3979. {
  3980. BEGIN_INTERFACE
  3981. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3982. IMDServiceProvider3 * This,
  3983. /* [in] */ __RPC__in REFIID riid,
  3984. /* [iid_is][out] */
  3985. __RPC__deref_out void **ppvObject);
  3986. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3987. IMDServiceProvider3 * This);
  3988. ULONG ( STDMETHODCALLTYPE *Release )(
  3989. IMDServiceProvider3 * This);
  3990. HRESULT ( STDMETHODCALLTYPE *GetDeviceCount )(
  3991. IMDServiceProvider3 * This,
  3992. /* [out] */ __RPC__out DWORD *pdwCount);
  3993. HRESULT ( STDMETHODCALLTYPE *EnumDevices )(
  3994. IMDServiceProvider3 * This,
  3995. /* [out] */ __RPC__deref_out_opt IMDSPEnumDevice **ppEnumDevice);
  3996. HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
  3997. IMDServiceProvider3 * This,
  3998. /* [string][in] */ __RPC__in LPCWSTR pwszDevicePath,
  3999. /* [out] */ __RPC__out DWORD *pdwCount,
  4000. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwCount) IMDSPDevice ***pppDeviceArray);
  4001. HRESULT ( STDMETHODCALLTYPE *SetDeviceEnumPreference )(
  4002. IMDServiceProvider3 * This,
  4003. /* [in] */ DWORD dwEnumPref);
  4004. END_INTERFACE
  4005. } IMDServiceProvider3Vtbl;
  4006. interface IMDServiceProvider3
  4007. {
  4008. CONST_VTBL struct IMDServiceProvider3Vtbl *lpVtbl;
  4009. };
  4010. #ifdef COBJMACROS
  4011. #define IMDServiceProvider3_QueryInterface(This,riid,ppvObject) \
  4012. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4013. #define IMDServiceProvider3_AddRef(This) \
  4014. ( (This)->lpVtbl -> AddRef(This) )
  4015. #define IMDServiceProvider3_Release(This) \
  4016. ( (This)->lpVtbl -> Release(This) )
  4017. #define IMDServiceProvider3_GetDeviceCount(This,pdwCount) \
  4018. ( (This)->lpVtbl -> GetDeviceCount(This,pdwCount) )
  4019. #define IMDServiceProvider3_EnumDevices(This,ppEnumDevice) \
  4020. ( (This)->lpVtbl -> EnumDevices(This,ppEnumDevice) )
  4021. #define IMDServiceProvider3_CreateDevice(This,pwszDevicePath,pdwCount,pppDeviceArray) \
  4022. ( (This)->lpVtbl -> CreateDevice(This,pwszDevicePath,pdwCount,pppDeviceArray) )
  4023. #define IMDServiceProvider3_SetDeviceEnumPreference(This,dwEnumPref) \
  4024. ( (This)->lpVtbl -> SetDeviceEnumPreference(This,dwEnumPref) )
  4025. #endif /* COBJMACROS */
  4026. #endif /* C style interface */
  4027. #endif /* __IMDServiceProvider3_INTERFACE_DEFINED__ */
  4028. #ifndef __IMDSPEnumDevice_INTERFACE_DEFINED__
  4029. #define __IMDSPEnumDevice_INTERFACE_DEFINED__
  4030. /* interface IMDSPEnumDevice */
  4031. /* [unique][uuid][object] */
  4032. EXTERN_C const IID IID_IMDSPEnumDevice;
  4033. #if defined(__cplusplus) && !defined(CINTERFACE)
  4034. MIDL_INTERFACE("1DCB3A11-33ED-11d3-8470-00C04F79DBC0")
  4035. IMDSPEnumDevice : public IUnknown
  4036. {
  4037. public:
  4038. virtual HRESULT STDMETHODCALLTYPE Next(
  4039. /* [in] */ ULONG celt,
  4040. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IMDSPDevice **ppDevice,
  4041. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  4042. virtual HRESULT STDMETHODCALLTYPE Skip(
  4043. /* [in] */ ULONG celt,
  4044. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  4045. virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  4046. virtual HRESULT STDMETHODCALLTYPE Clone(
  4047. /* [out] */ __RPC__deref_out_opt IMDSPEnumDevice **ppEnumDevice) = 0;
  4048. };
  4049. #else /* C style interface */
  4050. typedef struct IMDSPEnumDeviceVtbl
  4051. {
  4052. BEGIN_INTERFACE
  4053. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4054. IMDSPEnumDevice * This,
  4055. /* [in] */ __RPC__in REFIID riid,
  4056. /* [iid_is][out] */
  4057. __RPC__deref_out void **ppvObject);
  4058. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4059. IMDSPEnumDevice * This);
  4060. ULONG ( STDMETHODCALLTYPE *Release )(
  4061. IMDSPEnumDevice * This);
  4062. HRESULT ( STDMETHODCALLTYPE *Next )(
  4063. IMDSPEnumDevice * This,
  4064. /* [in] */ ULONG celt,
  4065. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IMDSPDevice **ppDevice,
  4066. /* [out] */ __RPC__out ULONG *pceltFetched);
  4067. HRESULT ( STDMETHODCALLTYPE *Skip )(
  4068. IMDSPEnumDevice * This,
  4069. /* [in] */ ULONG celt,
  4070. /* [out] */ __RPC__out ULONG *pceltFetched);
  4071. HRESULT ( STDMETHODCALLTYPE *Reset )(
  4072. IMDSPEnumDevice * This);
  4073. HRESULT ( STDMETHODCALLTYPE *Clone )(
  4074. IMDSPEnumDevice * This,
  4075. /* [out] */ __RPC__deref_out_opt IMDSPEnumDevice **ppEnumDevice);
  4076. END_INTERFACE
  4077. } IMDSPEnumDeviceVtbl;
  4078. interface IMDSPEnumDevice
  4079. {
  4080. CONST_VTBL struct IMDSPEnumDeviceVtbl *lpVtbl;
  4081. };
  4082. #ifdef COBJMACROS
  4083. #define IMDSPEnumDevice_QueryInterface(This,riid,ppvObject) \
  4084. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4085. #define IMDSPEnumDevice_AddRef(This) \
  4086. ( (This)->lpVtbl -> AddRef(This) )
  4087. #define IMDSPEnumDevice_Release(This) \
  4088. ( (This)->lpVtbl -> Release(This) )
  4089. #define IMDSPEnumDevice_Next(This,celt,ppDevice,pceltFetched) \
  4090. ( (This)->lpVtbl -> Next(This,celt,ppDevice,pceltFetched) )
  4091. #define IMDSPEnumDevice_Skip(This,celt,pceltFetched) \
  4092. ( (This)->lpVtbl -> Skip(This,celt,pceltFetched) )
  4093. #define IMDSPEnumDevice_Reset(This) \
  4094. ( (This)->lpVtbl -> Reset(This) )
  4095. #define IMDSPEnumDevice_Clone(This,ppEnumDevice) \
  4096. ( (This)->lpVtbl -> Clone(This,ppEnumDevice) )
  4097. #endif /* COBJMACROS */
  4098. #endif /* C style interface */
  4099. #endif /* __IMDSPEnumDevice_INTERFACE_DEFINED__ */
  4100. #ifndef __IMDSPDevice_INTERFACE_DEFINED__
  4101. #define __IMDSPDevice_INTERFACE_DEFINED__
  4102. /* interface IMDSPDevice */
  4103. /* [unique][uuid][object] */
  4104. EXTERN_C const IID IID_IMDSPDevice;
  4105. #if defined(__cplusplus) && !defined(CINTERFACE)
  4106. MIDL_INTERFACE("1DCB3A12-33ED-11d3-8470-00C04F79DBC0")
  4107. IMDSPDevice : public IUnknown
  4108. {
  4109. public:
  4110. virtual HRESULT STDMETHODCALLTYPE GetName(
  4111. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4112. /* [in] */ UINT nMaxChars) = 0;
  4113. virtual HRESULT STDMETHODCALLTYPE GetManufacturer(
  4114. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4115. /* [in] */ UINT nMaxChars) = 0;
  4116. virtual HRESULT STDMETHODCALLTYPE GetVersion(
  4117. /* [out] */ __RPC__out DWORD *pdwVersion) = 0;
  4118. virtual HRESULT STDMETHODCALLTYPE GetType(
  4119. /* [out] */ __RPC__out DWORD *pdwType) = 0;
  4120. virtual HRESULT STDMETHODCALLTYPE GetSerialNumber(
  4121. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  4122. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  4123. virtual HRESULT STDMETHODCALLTYPE GetPowerSource(
  4124. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  4125. /* [out] */ __RPC__out DWORD *pdwPercentRemaining) = 0;
  4126. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  4127. /* [out] */ __RPC__out DWORD *pdwStatus) = 0;
  4128. virtual HRESULT STDMETHODCALLTYPE GetDeviceIcon(
  4129. /* [out] */ __RPC__out ULONG *hIcon) = 0;
  4130. virtual HRESULT STDMETHODCALLTYPE EnumStorage(
  4131. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage) = 0;
  4132. virtual HRESULT STDMETHODCALLTYPE GetFormatSupport(
  4133. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **pFormatEx,
  4134. /* [out] */ __RPC__out UINT *pnFormatCount,
  4135. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  4136. /* [out] */ __RPC__out UINT *pnMimeTypeCount) = 0;
  4137. virtual HRESULT STDMETHODCALLTYPE SendOpaqueCommand(
  4138. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand) = 0;
  4139. };
  4140. #else /* C style interface */
  4141. typedef struct IMDSPDeviceVtbl
  4142. {
  4143. BEGIN_INTERFACE
  4144. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4145. IMDSPDevice * This,
  4146. /* [in] */ __RPC__in REFIID riid,
  4147. /* [iid_is][out] */
  4148. __RPC__deref_out void **ppvObject);
  4149. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4150. IMDSPDevice * This);
  4151. ULONG ( STDMETHODCALLTYPE *Release )(
  4152. IMDSPDevice * This);
  4153. HRESULT ( STDMETHODCALLTYPE *GetName )(
  4154. IMDSPDevice * This,
  4155. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4156. /* [in] */ UINT nMaxChars);
  4157. HRESULT ( STDMETHODCALLTYPE *GetManufacturer )(
  4158. IMDSPDevice * This,
  4159. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4160. /* [in] */ UINT nMaxChars);
  4161. HRESULT ( STDMETHODCALLTYPE *GetVersion )(
  4162. IMDSPDevice * This,
  4163. /* [out] */ __RPC__out DWORD *pdwVersion);
  4164. HRESULT ( STDMETHODCALLTYPE *GetType )(
  4165. IMDSPDevice * This,
  4166. /* [out] */ __RPC__out DWORD *pdwType);
  4167. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  4168. IMDSPDevice * This,
  4169. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  4170. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  4171. HRESULT ( STDMETHODCALLTYPE *GetPowerSource )(
  4172. IMDSPDevice * This,
  4173. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  4174. /* [out] */ __RPC__out DWORD *pdwPercentRemaining);
  4175. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  4176. IMDSPDevice * This,
  4177. /* [out] */ __RPC__out DWORD *pdwStatus);
  4178. HRESULT ( STDMETHODCALLTYPE *GetDeviceIcon )(
  4179. IMDSPDevice * This,
  4180. /* [out] */ __RPC__out ULONG *hIcon);
  4181. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  4182. IMDSPDevice * This,
  4183. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  4184. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport )(
  4185. IMDSPDevice * This,
  4186. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **pFormatEx,
  4187. /* [out] */ __RPC__out UINT *pnFormatCount,
  4188. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  4189. /* [out] */ __RPC__out UINT *pnMimeTypeCount);
  4190. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  4191. IMDSPDevice * This,
  4192. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  4193. END_INTERFACE
  4194. } IMDSPDeviceVtbl;
  4195. interface IMDSPDevice
  4196. {
  4197. CONST_VTBL struct IMDSPDeviceVtbl *lpVtbl;
  4198. };
  4199. #ifdef COBJMACROS
  4200. #define IMDSPDevice_QueryInterface(This,riid,ppvObject) \
  4201. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4202. #define IMDSPDevice_AddRef(This) \
  4203. ( (This)->lpVtbl -> AddRef(This) )
  4204. #define IMDSPDevice_Release(This) \
  4205. ( (This)->lpVtbl -> Release(This) )
  4206. #define IMDSPDevice_GetName(This,pwszName,nMaxChars) \
  4207. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  4208. #define IMDSPDevice_GetManufacturer(This,pwszName,nMaxChars) \
  4209. ( (This)->lpVtbl -> GetManufacturer(This,pwszName,nMaxChars) )
  4210. #define IMDSPDevice_GetVersion(This,pdwVersion) \
  4211. ( (This)->lpVtbl -> GetVersion(This,pdwVersion) )
  4212. #define IMDSPDevice_GetType(This,pdwType) \
  4213. ( (This)->lpVtbl -> GetType(This,pdwType) )
  4214. #define IMDSPDevice_GetSerialNumber(This,pSerialNumber,abMac) \
  4215. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNumber,abMac) )
  4216. #define IMDSPDevice_GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) \
  4217. ( (This)->lpVtbl -> GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) )
  4218. #define IMDSPDevice_GetStatus(This,pdwStatus) \
  4219. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  4220. #define IMDSPDevice_GetDeviceIcon(This,hIcon) \
  4221. ( (This)->lpVtbl -> GetDeviceIcon(This,hIcon) )
  4222. #define IMDSPDevice_EnumStorage(This,ppEnumStorage) \
  4223. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  4224. #define IMDSPDevice_GetFormatSupport(This,pFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) \
  4225. ( (This)->lpVtbl -> GetFormatSupport(This,pFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) )
  4226. #define IMDSPDevice_SendOpaqueCommand(This,pCommand) \
  4227. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  4228. #endif /* COBJMACROS */
  4229. #endif /* C style interface */
  4230. #endif /* __IMDSPDevice_INTERFACE_DEFINED__ */
  4231. #ifndef __IMDSPDevice2_INTERFACE_DEFINED__
  4232. #define __IMDSPDevice2_INTERFACE_DEFINED__
  4233. /* interface IMDSPDevice2 */
  4234. /* [unique][uuid][object] */
  4235. EXTERN_C const IID IID_IMDSPDevice2;
  4236. #if defined(__cplusplus) && !defined(CINTERFACE)
  4237. MIDL_INTERFACE("420D16AD-C97D-4e00-82AA-00E9F4335DDD")
  4238. IMDSPDevice2 : public IMDSPDevice
  4239. {
  4240. public:
  4241. virtual HRESULT STDMETHODCALLTYPE GetStorage(
  4242. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  4243. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage) = 0;
  4244. virtual HRESULT STDMETHODCALLTYPE GetFormatSupport2(
  4245. /* [in] */ DWORD dwFlags,
  4246. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnAudioFormatCount) _WAVEFORMATEX **ppAudioFormatEx,
  4247. /* [ref][out] */ __RPC__out UINT *pnAudioFormatCount,
  4248. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnVideoFormatCount) _VIDEOINFOHEADER **ppVideoFormatEx,
  4249. /* [ref][out] */ __RPC__out UINT *pnVideoFormatCount,
  4250. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFileTypeCount) WMFILECAPABILITIES **ppFileType,
  4251. /* [ref][out] */ __RPC__out UINT *pnFileTypeCount) = 0;
  4252. virtual HRESULT STDMETHODCALLTYPE GetSpecifyPropertyPages(
  4253. /* [ref][out] */ __RPC__deref_out_opt ISpecifyPropertyPages **ppSpecifyPropPages,
  4254. /* [size_is][size_is][ref][out] */ __RPC__deref_out_ecount_full_opt(*pcUnks) IUnknown ***pppUnknowns,
  4255. /* [ref][out] */ __RPC__out ULONG *pcUnks) = 0;
  4256. virtual HRESULT STDMETHODCALLTYPE GetCanonicalName(
  4257. /* [size_is][out] */ __RPC__out_ecount_full(nMaxChars) LPWSTR pwszPnPName,
  4258. /* [in] */ UINT nMaxChars) = 0;
  4259. };
  4260. #else /* C style interface */
  4261. typedef struct IMDSPDevice2Vtbl
  4262. {
  4263. BEGIN_INTERFACE
  4264. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4265. IMDSPDevice2 * This,
  4266. /* [in] */ __RPC__in REFIID riid,
  4267. /* [iid_is][out] */
  4268. __RPC__deref_out void **ppvObject);
  4269. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4270. IMDSPDevice2 * This);
  4271. ULONG ( STDMETHODCALLTYPE *Release )(
  4272. IMDSPDevice2 * This);
  4273. HRESULT ( STDMETHODCALLTYPE *GetName )(
  4274. IMDSPDevice2 * This,
  4275. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4276. /* [in] */ UINT nMaxChars);
  4277. HRESULT ( STDMETHODCALLTYPE *GetManufacturer )(
  4278. IMDSPDevice2 * This,
  4279. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4280. /* [in] */ UINT nMaxChars);
  4281. HRESULT ( STDMETHODCALLTYPE *GetVersion )(
  4282. IMDSPDevice2 * This,
  4283. /* [out] */ __RPC__out DWORD *pdwVersion);
  4284. HRESULT ( STDMETHODCALLTYPE *GetType )(
  4285. IMDSPDevice2 * This,
  4286. /* [out] */ __RPC__out DWORD *pdwType);
  4287. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  4288. IMDSPDevice2 * This,
  4289. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  4290. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  4291. HRESULT ( STDMETHODCALLTYPE *GetPowerSource )(
  4292. IMDSPDevice2 * This,
  4293. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  4294. /* [out] */ __RPC__out DWORD *pdwPercentRemaining);
  4295. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  4296. IMDSPDevice2 * This,
  4297. /* [out] */ __RPC__out DWORD *pdwStatus);
  4298. HRESULT ( STDMETHODCALLTYPE *GetDeviceIcon )(
  4299. IMDSPDevice2 * This,
  4300. /* [out] */ __RPC__out ULONG *hIcon);
  4301. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  4302. IMDSPDevice2 * This,
  4303. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  4304. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport )(
  4305. IMDSPDevice2 * This,
  4306. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **pFormatEx,
  4307. /* [out] */ __RPC__out UINT *pnFormatCount,
  4308. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  4309. /* [out] */ __RPC__out UINT *pnMimeTypeCount);
  4310. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  4311. IMDSPDevice2 * This,
  4312. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  4313. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  4314. IMDSPDevice2 * This,
  4315. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  4316. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  4317. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport2 )(
  4318. IMDSPDevice2 * This,
  4319. /* [in] */ DWORD dwFlags,
  4320. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnAudioFormatCount) _WAVEFORMATEX **ppAudioFormatEx,
  4321. /* [ref][out] */ __RPC__out UINT *pnAudioFormatCount,
  4322. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnVideoFormatCount) _VIDEOINFOHEADER **ppVideoFormatEx,
  4323. /* [ref][out] */ __RPC__out UINT *pnVideoFormatCount,
  4324. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFileTypeCount) WMFILECAPABILITIES **ppFileType,
  4325. /* [ref][out] */ __RPC__out UINT *pnFileTypeCount);
  4326. HRESULT ( STDMETHODCALLTYPE *GetSpecifyPropertyPages )(
  4327. IMDSPDevice2 * This,
  4328. /* [ref][out] */ __RPC__deref_out_opt ISpecifyPropertyPages **ppSpecifyPropPages,
  4329. /* [size_is][size_is][ref][out] */ __RPC__deref_out_ecount_full_opt(*pcUnks) IUnknown ***pppUnknowns,
  4330. /* [ref][out] */ __RPC__out ULONG *pcUnks);
  4331. HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )(
  4332. IMDSPDevice2 * This,
  4333. /* [size_is][out] */ __RPC__out_ecount_full(nMaxChars) LPWSTR pwszPnPName,
  4334. /* [in] */ UINT nMaxChars);
  4335. END_INTERFACE
  4336. } IMDSPDevice2Vtbl;
  4337. interface IMDSPDevice2
  4338. {
  4339. CONST_VTBL struct IMDSPDevice2Vtbl *lpVtbl;
  4340. };
  4341. #ifdef COBJMACROS
  4342. #define IMDSPDevice2_QueryInterface(This,riid,ppvObject) \
  4343. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4344. #define IMDSPDevice2_AddRef(This) \
  4345. ( (This)->lpVtbl -> AddRef(This) )
  4346. #define IMDSPDevice2_Release(This) \
  4347. ( (This)->lpVtbl -> Release(This) )
  4348. #define IMDSPDevice2_GetName(This,pwszName,nMaxChars) \
  4349. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  4350. #define IMDSPDevice2_GetManufacturer(This,pwszName,nMaxChars) \
  4351. ( (This)->lpVtbl -> GetManufacturer(This,pwszName,nMaxChars) )
  4352. #define IMDSPDevice2_GetVersion(This,pdwVersion) \
  4353. ( (This)->lpVtbl -> GetVersion(This,pdwVersion) )
  4354. #define IMDSPDevice2_GetType(This,pdwType) \
  4355. ( (This)->lpVtbl -> GetType(This,pdwType) )
  4356. #define IMDSPDevice2_GetSerialNumber(This,pSerialNumber,abMac) \
  4357. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNumber,abMac) )
  4358. #define IMDSPDevice2_GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) \
  4359. ( (This)->lpVtbl -> GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) )
  4360. #define IMDSPDevice2_GetStatus(This,pdwStatus) \
  4361. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  4362. #define IMDSPDevice2_GetDeviceIcon(This,hIcon) \
  4363. ( (This)->lpVtbl -> GetDeviceIcon(This,hIcon) )
  4364. #define IMDSPDevice2_EnumStorage(This,ppEnumStorage) \
  4365. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  4366. #define IMDSPDevice2_GetFormatSupport(This,pFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) \
  4367. ( (This)->lpVtbl -> GetFormatSupport(This,pFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) )
  4368. #define IMDSPDevice2_SendOpaqueCommand(This,pCommand) \
  4369. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  4370. #define IMDSPDevice2_GetStorage(This,pszStorageName,ppStorage) \
  4371. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  4372. #define IMDSPDevice2_GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) \
  4373. ( (This)->lpVtbl -> GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) )
  4374. #define IMDSPDevice2_GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) \
  4375. ( (This)->lpVtbl -> GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) )
  4376. #define IMDSPDevice2_GetCanonicalName(This,pwszPnPName,nMaxChars) \
  4377. ( (This)->lpVtbl -> GetCanonicalName(This,pwszPnPName,nMaxChars) )
  4378. #endif /* COBJMACROS */
  4379. #endif /* C style interface */
  4380. #endif /* __IMDSPDevice2_INTERFACE_DEFINED__ */
  4381. #ifndef __IMDSPDevice3_INTERFACE_DEFINED__
  4382. #define __IMDSPDevice3_INTERFACE_DEFINED__
  4383. /* interface IMDSPDevice3 */
  4384. /* [unique][uuid][object] */
  4385. EXTERN_C const IID IID_IMDSPDevice3;
  4386. #if defined(__cplusplus) && !defined(CINTERFACE)
  4387. MIDL_INTERFACE("1a839845-fc55-487c-976f-ee38ac0e8c4e")
  4388. IMDSPDevice3 : public IMDSPDevice2
  4389. {
  4390. public:
  4391. virtual HRESULT STDMETHODCALLTYPE GetProperty(
  4392. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  4393. /* [out] */ __RPC__out PROPVARIANT *pValue) = 0;
  4394. virtual HRESULT STDMETHODCALLTYPE SetProperty(
  4395. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  4396. /* [in] */ __RPC__in const PROPVARIANT *pValue) = 0;
  4397. virtual HRESULT STDMETHODCALLTYPE GetFormatCapability(
  4398. /* [in] */ WMDM_FORMATCODE format,
  4399. /* [out] */ __RPC__out WMDM_FORMAT_CAPABILITY *pFormatSupport) = 0;
  4400. virtual HRESULT STDMETHODCALLTYPE DeviceIoControl(
  4401. /* [in] */ DWORD dwIoControlCode,
  4402. /* [size_is][in] */ __RPC__in_ecount_full(nInBufferSize) BYTE *lpInBuffer,
  4403. /* [in] */ DWORD nInBufferSize,
  4404. /* [size_is][out] */ __RPC__out_ecount_full(*pnOutBufferSize) BYTE *lpOutBuffer,
  4405. /* [out][in] */ __RPC__inout LPDWORD pnOutBufferSize) = 0;
  4406. virtual HRESULT STDMETHODCALLTYPE FindStorage(
  4407. /* [in] */ WMDM_FIND_SCOPE findScope,
  4408. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  4409. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage) = 0;
  4410. };
  4411. #else /* C style interface */
  4412. typedef struct IMDSPDevice3Vtbl
  4413. {
  4414. BEGIN_INTERFACE
  4415. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4416. IMDSPDevice3 * This,
  4417. /* [in] */ __RPC__in REFIID riid,
  4418. /* [iid_is][out] */
  4419. __RPC__deref_out void **ppvObject);
  4420. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4421. IMDSPDevice3 * This);
  4422. ULONG ( STDMETHODCALLTYPE *Release )(
  4423. IMDSPDevice3 * This);
  4424. HRESULT ( STDMETHODCALLTYPE *GetName )(
  4425. IMDSPDevice3 * This,
  4426. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4427. /* [in] */ UINT nMaxChars);
  4428. HRESULT ( STDMETHODCALLTYPE *GetManufacturer )(
  4429. IMDSPDevice3 * This,
  4430. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4431. /* [in] */ UINT nMaxChars);
  4432. HRESULT ( STDMETHODCALLTYPE *GetVersion )(
  4433. IMDSPDevice3 * This,
  4434. /* [out] */ __RPC__out DWORD *pdwVersion);
  4435. HRESULT ( STDMETHODCALLTYPE *GetType )(
  4436. IMDSPDevice3 * This,
  4437. /* [out] */ __RPC__out DWORD *pdwType);
  4438. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  4439. IMDSPDevice3 * This,
  4440. /* [out] */ __RPC__out PWMDMID pSerialNumber,
  4441. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  4442. HRESULT ( STDMETHODCALLTYPE *GetPowerSource )(
  4443. IMDSPDevice3 * This,
  4444. /* [out] */ __RPC__out DWORD *pdwPowerSource,
  4445. /* [out] */ __RPC__out DWORD *pdwPercentRemaining);
  4446. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  4447. IMDSPDevice3 * This,
  4448. /* [out] */ __RPC__out DWORD *pdwStatus);
  4449. HRESULT ( STDMETHODCALLTYPE *GetDeviceIcon )(
  4450. IMDSPDevice3 * This,
  4451. /* [out] */ __RPC__out ULONG *hIcon);
  4452. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  4453. IMDSPDevice3 * This,
  4454. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  4455. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport )(
  4456. IMDSPDevice3 * This,
  4457. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFormatCount) _WAVEFORMATEX **pFormatEx,
  4458. /* [out] */ __RPC__out UINT *pnFormatCount,
  4459. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnMimeTypeCount) LPWSTR **pppwszMimeType,
  4460. /* [out] */ __RPC__out UINT *pnMimeTypeCount);
  4461. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  4462. IMDSPDevice3 * This,
  4463. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  4464. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  4465. IMDSPDevice3 * This,
  4466. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  4467. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  4468. HRESULT ( STDMETHODCALLTYPE *GetFormatSupport2 )(
  4469. IMDSPDevice3 * This,
  4470. /* [in] */ DWORD dwFlags,
  4471. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnAudioFormatCount) _WAVEFORMATEX **ppAudioFormatEx,
  4472. /* [ref][out] */ __RPC__out UINT *pnAudioFormatCount,
  4473. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnVideoFormatCount) _VIDEOINFOHEADER **ppVideoFormatEx,
  4474. /* [ref][out] */ __RPC__out UINT *pnVideoFormatCount,
  4475. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnFileTypeCount) WMFILECAPABILITIES **ppFileType,
  4476. /* [ref][out] */ __RPC__out UINT *pnFileTypeCount);
  4477. HRESULT ( STDMETHODCALLTYPE *GetSpecifyPropertyPages )(
  4478. IMDSPDevice3 * This,
  4479. /* [ref][out] */ __RPC__deref_out_opt ISpecifyPropertyPages **ppSpecifyPropPages,
  4480. /* [size_is][size_is][ref][out] */ __RPC__deref_out_ecount_full_opt(*pcUnks) IUnknown ***pppUnknowns,
  4481. /* [ref][out] */ __RPC__out ULONG *pcUnks);
  4482. HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )(
  4483. IMDSPDevice3 * This,
  4484. /* [size_is][out] */ __RPC__out_ecount_full(nMaxChars) LPWSTR pwszPnPName,
  4485. /* [in] */ UINT nMaxChars);
  4486. HRESULT ( STDMETHODCALLTYPE *GetProperty )(
  4487. IMDSPDevice3 * This,
  4488. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  4489. /* [out] */ __RPC__out PROPVARIANT *pValue);
  4490. HRESULT ( STDMETHODCALLTYPE *SetProperty )(
  4491. IMDSPDevice3 * This,
  4492. /* [in] */ __RPC__in LPCWSTR pwszPropName,
  4493. /* [in] */ __RPC__in const PROPVARIANT *pValue);
  4494. HRESULT ( STDMETHODCALLTYPE *GetFormatCapability )(
  4495. IMDSPDevice3 * This,
  4496. /* [in] */ WMDM_FORMATCODE format,
  4497. /* [out] */ __RPC__out WMDM_FORMAT_CAPABILITY *pFormatSupport);
  4498. HRESULT ( STDMETHODCALLTYPE *DeviceIoControl )(
  4499. IMDSPDevice3 * This,
  4500. /* [in] */ DWORD dwIoControlCode,
  4501. /* [size_is][in] */ __RPC__in_ecount_full(nInBufferSize) BYTE *lpInBuffer,
  4502. /* [in] */ DWORD nInBufferSize,
  4503. /* [size_is][out] */ __RPC__out_ecount_full(*pnOutBufferSize) BYTE *lpOutBuffer,
  4504. /* [out][in] */ __RPC__inout LPDWORD pnOutBufferSize);
  4505. HRESULT ( STDMETHODCALLTYPE *FindStorage )(
  4506. IMDSPDevice3 * This,
  4507. /* [in] */ WMDM_FIND_SCOPE findScope,
  4508. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  4509. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  4510. END_INTERFACE
  4511. } IMDSPDevice3Vtbl;
  4512. interface IMDSPDevice3
  4513. {
  4514. CONST_VTBL struct IMDSPDevice3Vtbl *lpVtbl;
  4515. };
  4516. #ifdef COBJMACROS
  4517. #define IMDSPDevice3_QueryInterface(This,riid,ppvObject) \
  4518. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4519. #define IMDSPDevice3_AddRef(This) \
  4520. ( (This)->lpVtbl -> AddRef(This) )
  4521. #define IMDSPDevice3_Release(This) \
  4522. ( (This)->lpVtbl -> Release(This) )
  4523. #define IMDSPDevice3_GetName(This,pwszName,nMaxChars) \
  4524. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  4525. #define IMDSPDevice3_GetManufacturer(This,pwszName,nMaxChars) \
  4526. ( (This)->lpVtbl -> GetManufacturer(This,pwszName,nMaxChars) )
  4527. #define IMDSPDevice3_GetVersion(This,pdwVersion) \
  4528. ( (This)->lpVtbl -> GetVersion(This,pdwVersion) )
  4529. #define IMDSPDevice3_GetType(This,pdwType) \
  4530. ( (This)->lpVtbl -> GetType(This,pdwType) )
  4531. #define IMDSPDevice3_GetSerialNumber(This,pSerialNumber,abMac) \
  4532. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNumber,abMac) )
  4533. #define IMDSPDevice3_GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) \
  4534. ( (This)->lpVtbl -> GetPowerSource(This,pdwPowerSource,pdwPercentRemaining) )
  4535. #define IMDSPDevice3_GetStatus(This,pdwStatus) \
  4536. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  4537. #define IMDSPDevice3_GetDeviceIcon(This,hIcon) \
  4538. ( (This)->lpVtbl -> GetDeviceIcon(This,hIcon) )
  4539. #define IMDSPDevice3_EnumStorage(This,ppEnumStorage) \
  4540. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  4541. #define IMDSPDevice3_GetFormatSupport(This,pFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) \
  4542. ( (This)->lpVtbl -> GetFormatSupport(This,pFormatEx,pnFormatCount,pppwszMimeType,pnMimeTypeCount) )
  4543. #define IMDSPDevice3_SendOpaqueCommand(This,pCommand) \
  4544. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  4545. #define IMDSPDevice3_GetStorage(This,pszStorageName,ppStorage) \
  4546. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  4547. #define IMDSPDevice3_GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) \
  4548. ( (This)->lpVtbl -> GetFormatSupport2(This,dwFlags,ppAudioFormatEx,pnAudioFormatCount,ppVideoFormatEx,pnVideoFormatCount,ppFileType,pnFileTypeCount) )
  4549. #define IMDSPDevice3_GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) \
  4550. ( (This)->lpVtbl -> GetSpecifyPropertyPages(This,ppSpecifyPropPages,pppUnknowns,pcUnks) )
  4551. #define IMDSPDevice3_GetCanonicalName(This,pwszPnPName,nMaxChars) \
  4552. ( (This)->lpVtbl -> GetCanonicalName(This,pwszPnPName,nMaxChars) )
  4553. #define IMDSPDevice3_GetProperty(This,pwszPropName,pValue) \
  4554. ( (This)->lpVtbl -> GetProperty(This,pwszPropName,pValue) )
  4555. #define IMDSPDevice3_SetProperty(This,pwszPropName,pValue) \
  4556. ( (This)->lpVtbl -> SetProperty(This,pwszPropName,pValue) )
  4557. #define IMDSPDevice3_GetFormatCapability(This,format,pFormatSupport) \
  4558. ( (This)->lpVtbl -> GetFormatCapability(This,format,pFormatSupport) )
  4559. #define IMDSPDevice3_DeviceIoControl(This,dwIoControlCode,lpInBuffer,nInBufferSize,lpOutBuffer,pnOutBufferSize) \
  4560. ( (This)->lpVtbl -> DeviceIoControl(This,dwIoControlCode,lpInBuffer,nInBufferSize,lpOutBuffer,pnOutBufferSize) )
  4561. #define IMDSPDevice3_FindStorage(This,findScope,pwszUniqueID,ppStorage) \
  4562. ( (This)->lpVtbl -> FindStorage(This,findScope,pwszUniqueID,ppStorage) )
  4563. #endif /* COBJMACROS */
  4564. #endif /* C style interface */
  4565. #endif /* __IMDSPDevice3_INTERFACE_DEFINED__ */
  4566. #ifndef __IMDSPDeviceControl_INTERFACE_DEFINED__
  4567. #define __IMDSPDeviceControl_INTERFACE_DEFINED__
  4568. /* interface IMDSPDeviceControl */
  4569. /* [unique][uuid][object] */
  4570. EXTERN_C const IID IID_IMDSPDeviceControl;
  4571. #if defined(__cplusplus) && !defined(CINTERFACE)
  4572. MIDL_INTERFACE("1DCB3A14-33ED-11d3-8470-00C04F79DBC0")
  4573. IMDSPDeviceControl : public IUnknown
  4574. {
  4575. public:
  4576. virtual HRESULT STDMETHODCALLTYPE GetDCStatus(
  4577. /* [out] */ __RPC__out DWORD *pdwStatus) = 0;
  4578. virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
  4579. /* [out] */ __RPC__out DWORD *pdwCapabilitiesMask) = 0;
  4580. virtual HRESULT STDMETHODCALLTYPE Play( void) = 0;
  4581. virtual HRESULT STDMETHODCALLTYPE Record(
  4582. /* [in] */ __RPC__in _WAVEFORMATEX *pFormat) = 0;
  4583. virtual HRESULT STDMETHODCALLTYPE Pause( void) = 0;
  4584. virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  4585. virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
  4586. virtual HRESULT STDMETHODCALLTYPE Seek(
  4587. /* [in] */ UINT fuMode,
  4588. /* [in] */ int nOffset) = 0;
  4589. };
  4590. #else /* C style interface */
  4591. typedef struct IMDSPDeviceControlVtbl
  4592. {
  4593. BEGIN_INTERFACE
  4594. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4595. IMDSPDeviceControl * This,
  4596. /* [in] */ __RPC__in REFIID riid,
  4597. /* [iid_is][out] */
  4598. __RPC__deref_out void **ppvObject);
  4599. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4600. IMDSPDeviceControl * This);
  4601. ULONG ( STDMETHODCALLTYPE *Release )(
  4602. IMDSPDeviceControl * This);
  4603. HRESULT ( STDMETHODCALLTYPE *GetDCStatus )(
  4604. IMDSPDeviceControl * This,
  4605. /* [out] */ __RPC__out DWORD *pdwStatus);
  4606. HRESULT ( STDMETHODCALLTYPE *GetCapabilities )(
  4607. IMDSPDeviceControl * This,
  4608. /* [out] */ __RPC__out DWORD *pdwCapabilitiesMask);
  4609. HRESULT ( STDMETHODCALLTYPE *Play )(
  4610. IMDSPDeviceControl * This);
  4611. HRESULT ( STDMETHODCALLTYPE *Record )(
  4612. IMDSPDeviceControl * This,
  4613. /* [in] */ __RPC__in _WAVEFORMATEX *pFormat);
  4614. HRESULT ( STDMETHODCALLTYPE *Pause )(
  4615. IMDSPDeviceControl * This);
  4616. HRESULT ( STDMETHODCALLTYPE *Resume )(
  4617. IMDSPDeviceControl * This);
  4618. HRESULT ( STDMETHODCALLTYPE *Stop )(
  4619. IMDSPDeviceControl * This);
  4620. HRESULT ( STDMETHODCALLTYPE *Seek )(
  4621. IMDSPDeviceControl * This,
  4622. /* [in] */ UINT fuMode,
  4623. /* [in] */ int nOffset);
  4624. END_INTERFACE
  4625. } IMDSPDeviceControlVtbl;
  4626. interface IMDSPDeviceControl
  4627. {
  4628. CONST_VTBL struct IMDSPDeviceControlVtbl *lpVtbl;
  4629. };
  4630. #ifdef COBJMACROS
  4631. #define IMDSPDeviceControl_QueryInterface(This,riid,ppvObject) \
  4632. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4633. #define IMDSPDeviceControl_AddRef(This) \
  4634. ( (This)->lpVtbl -> AddRef(This) )
  4635. #define IMDSPDeviceControl_Release(This) \
  4636. ( (This)->lpVtbl -> Release(This) )
  4637. #define IMDSPDeviceControl_GetDCStatus(This,pdwStatus) \
  4638. ( (This)->lpVtbl -> GetDCStatus(This,pdwStatus) )
  4639. #define IMDSPDeviceControl_GetCapabilities(This,pdwCapabilitiesMask) \
  4640. ( (This)->lpVtbl -> GetCapabilities(This,pdwCapabilitiesMask) )
  4641. #define IMDSPDeviceControl_Play(This) \
  4642. ( (This)->lpVtbl -> Play(This) )
  4643. #define IMDSPDeviceControl_Record(This,pFormat) \
  4644. ( (This)->lpVtbl -> Record(This,pFormat) )
  4645. #define IMDSPDeviceControl_Pause(This) \
  4646. ( (This)->lpVtbl -> Pause(This) )
  4647. #define IMDSPDeviceControl_Resume(This) \
  4648. ( (This)->lpVtbl -> Resume(This) )
  4649. #define IMDSPDeviceControl_Stop(This) \
  4650. ( (This)->lpVtbl -> Stop(This) )
  4651. #define IMDSPDeviceControl_Seek(This,fuMode,nOffset) \
  4652. ( (This)->lpVtbl -> Seek(This,fuMode,nOffset) )
  4653. #endif /* COBJMACROS */
  4654. #endif /* C style interface */
  4655. #endif /* __IMDSPDeviceControl_INTERFACE_DEFINED__ */
  4656. #ifndef __IMDSPEnumStorage_INTERFACE_DEFINED__
  4657. #define __IMDSPEnumStorage_INTERFACE_DEFINED__
  4658. /* interface IMDSPEnumStorage */
  4659. /* [unique][uuid][object] */
  4660. EXTERN_C const IID IID_IMDSPEnumStorage;
  4661. #if defined(__cplusplus) && !defined(CINTERFACE)
  4662. MIDL_INTERFACE("1DCB3A15-33ED-11d3-8470-00C04F79DBC0")
  4663. IMDSPEnumStorage : public IUnknown
  4664. {
  4665. public:
  4666. virtual HRESULT STDMETHODCALLTYPE Next(
  4667. /* [in] */ ULONG celt,
  4668. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IMDSPStorage **ppStorage,
  4669. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  4670. virtual HRESULT STDMETHODCALLTYPE Skip(
  4671. /* [in] */ ULONG celt,
  4672. /* [out] */ __RPC__out ULONG *pceltFetched) = 0;
  4673. virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  4674. virtual HRESULT STDMETHODCALLTYPE Clone(
  4675. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage) = 0;
  4676. };
  4677. #else /* C style interface */
  4678. typedef struct IMDSPEnumStorageVtbl
  4679. {
  4680. BEGIN_INTERFACE
  4681. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4682. IMDSPEnumStorage * This,
  4683. /* [in] */ __RPC__in REFIID riid,
  4684. /* [iid_is][out] */
  4685. __RPC__deref_out void **ppvObject);
  4686. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4687. IMDSPEnumStorage * This);
  4688. ULONG ( STDMETHODCALLTYPE *Release )(
  4689. IMDSPEnumStorage * This);
  4690. HRESULT ( STDMETHODCALLTYPE *Next )(
  4691. IMDSPEnumStorage * This,
  4692. /* [in] */ ULONG celt,
  4693. /* [length_is][size_is][out] */ __RPC__out_ecount_part(celt, *pceltFetched) IMDSPStorage **ppStorage,
  4694. /* [out] */ __RPC__out ULONG *pceltFetched);
  4695. HRESULT ( STDMETHODCALLTYPE *Skip )(
  4696. IMDSPEnumStorage * This,
  4697. /* [in] */ ULONG celt,
  4698. /* [out] */ __RPC__out ULONG *pceltFetched);
  4699. HRESULT ( STDMETHODCALLTYPE *Reset )(
  4700. IMDSPEnumStorage * This);
  4701. HRESULT ( STDMETHODCALLTYPE *Clone )(
  4702. IMDSPEnumStorage * This,
  4703. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  4704. END_INTERFACE
  4705. } IMDSPEnumStorageVtbl;
  4706. interface IMDSPEnumStorage
  4707. {
  4708. CONST_VTBL struct IMDSPEnumStorageVtbl *lpVtbl;
  4709. };
  4710. #ifdef COBJMACROS
  4711. #define IMDSPEnumStorage_QueryInterface(This,riid,ppvObject) \
  4712. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4713. #define IMDSPEnumStorage_AddRef(This) \
  4714. ( (This)->lpVtbl -> AddRef(This) )
  4715. #define IMDSPEnumStorage_Release(This) \
  4716. ( (This)->lpVtbl -> Release(This) )
  4717. #define IMDSPEnumStorage_Next(This,celt,ppStorage,pceltFetched) \
  4718. ( (This)->lpVtbl -> Next(This,celt,ppStorage,pceltFetched) )
  4719. #define IMDSPEnumStorage_Skip(This,celt,pceltFetched) \
  4720. ( (This)->lpVtbl -> Skip(This,celt,pceltFetched) )
  4721. #define IMDSPEnumStorage_Reset(This) \
  4722. ( (This)->lpVtbl -> Reset(This) )
  4723. #define IMDSPEnumStorage_Clone(This,ppEnumStorage) \
  4724. ( (This)->lpVtbl -> Clone(This,ppEnumStorage) )
  4725. #endif /* COBJMACROS */
  4726. #endif /* C style interface */
  4727. #endif /* __IMDSPEnumStorage_INTERFACE_DEFINED__ */
  4728. #ifndef __IMDSPStorage_INTERFACE_DEFINED__
  4729. #define __IMDSPStorage_INTERFACE_DEFINED__
  4730. /* interface IMDSPStorage */
  4731. /* [unique][uuid][object] */
  4732. EXTERN_C const IID IID_IMDSPStorage;
  4733. #if defined(__cplusplus) && !defined(CINTERFACE)
  4734. MIDL_INTERFACE("1DCB3A16-33ED-11d3-8470-00C04F79DBC0")
  4735. IMDSPStorage : public IUnknown
  4736. {
  4737. public:
  4738. virtual HRESULT STDMETHODCALLTYPE SetAttributes(
  4739. /* [in] */ DWORD dwAttributes,
  4740. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat) = 0;
  4741. virtual HRESULT STDMETHODCALLTYPE GetStorageGlobals(
  4742. /* [out] */ __RPC__deref_out_opt IMDSPStorageGlobals **ppStorageGlobals) = 0;
  4743. virtual HRESULT STDMETHODCALLTYPE GetAttributes(
  4744. /* [out] */ __RPC__out DWORD *pdwAttributes,
  4745. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat) = 0;
  4746. virtual HRESULT STDMETHODCALLTYPE GetName(
  4747. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4748. /* [in] */ UINT nMaxChars) = 0;
  4749. virtual HRESULT STDMETHODCALLTYPE GetDate(
  4750. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC) = 0;
  4751. virtual HRESULT STDMETHODCALLTYPE GetSize(
  4752. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  4753. /* [out] */ __RPC__out DWORD *pdwSizeHigh) = 0;
  4754. virtual HRESULT STDMETHODCALLTYPE GetRights(
  4755. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  4756. /* [out] */ __RPC__out UINT *pnRightsCount,
  4757. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  4758. virtual HRESULT STDMETHODCALLTYPE CreateStorage(
  4759. /* [in] */ DWORD dwAttributes,
  4760. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  4761. /* [in] */ __RPC__in LPWSTR pwszName,
  4762. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage) = 0;
  4763. virtual HRESULT STDMETHODCALLTYPE EnumStorage(
  4764. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage) = 0;
  4765. virtual HRESULT STDMETHODCALLTYPE SendOpaqueCommand(
  4766. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand) = 0;
  4767. };
  4768. #else /* C style interface */
  4769. typedef struct IMDSPStorageVtbl
  4770. {
  4771. BEGIN_INTERFACE
  4772. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4773. IMDSPStorage * This,
  4774. /* [in] */ __RPC__in REFIID riid,
  4775. /* [iid_is][out] */
  4776. __RPC__deref_out void **ppvObject);
  4777. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4778. IMDSPStorage * This);
  4779. ULONG ( STDMETHODCALLTYPE *Release )(
  4780. IMDSPStorage * This);
  4781. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  4782. IMDSPStorage * This,
  4783. /* [in] */ DWORD dwAttributes,
  4784. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  4785. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  4786. IMDSPStorage * This,
  4787. /* [out] */ __RPC__deref_out_opt IMDSPStorageGlobals **ppStorageGlobals);
  4788. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  4789. IMDSPStorage * This,
  4790. /* [out] */ __RPC__out DWORD *pdwAttributes,
  4791. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  4792. HRESULT ( STDMETHODCALLTYPE *GetName )(
  4793. IMDSPStorage * This,
  4794. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4795. /* [in] */ UINT nMaxChars);
  4796. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  4797. IMDSPStorage * This,
  4798. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  4799. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  4800. IMDSPStorage * This,
  4801. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  4802. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  4803. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  4804. IMDSPStorage * This,
  4805. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  4806. /* [out] */ __RPC__out UINT *pnRightsCount,
  4807. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  4808. HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
  4809. IMDSPStorage * This,
  4810. /* [in] */ DWORD dwAttributes,
  4811. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  4812. /* [in] */ __RPC__in LPWSTR pwszName,
  4813. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  4814. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  4815. IMDSPStorage * This,
  4816. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  4817. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  4818. IMDSPStorage * This,
  4819. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  4820. END_INTERFACE
  4821. } IMDSPStorageVtbl;
  4822. interface IMDSPStorage
  4823. {
  4824. CONST_VTBL struct IMDSPStorageVtbl *lpVtbl;
  4825. };
  4826. #ifdef COBJMACROS
  4827. #define IMDSPStorage_QueryInterface(This,riid,ppvObject) \
  4828. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4829. #define IMDSPStorage_AddRef(This) \
  4830. ( (This)->lpVtbl -> AddRef(This) )
  4831. #define IMDSPStorage_Release(This) \
  4832. ( (This)->lpVtbl -> Release(This) )
  4833. #define IMDSPStorage_SetAttributes(This,dwAttributes,pFormat) \
  4834. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  4835. #define IMDSPStorage_GetStorageGlobals(This,ppStorageGlobals) \
  4836. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  4837. #define IMDSPStorage_GetAttributes(This,pdwAttributes,pFormat) \
  4838. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  4839. #define IMDSPStorage_GetName(This,pwszName,nMaxChars) \
  4840. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  4841. #define IMDSPStorage_GetDate(This,pDateTimeUTC) \
  4842. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  4843. #define IMDSPStorage_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  4844. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  4845. #define IMDSPStorage_GetRights(This,ppRights,pnRightsCount,abMac) \
  4846. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  4847. #define IMDSPStorage_CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) \
  4848. ( (This)->lpVtbl -> CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) )
  4849. #define IMDSPStorage_EnumStorage(This,ppEnumStorage) \
  4850. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  4851. #define IMDSPStorage_SendOpaqueCommand(This,pCommand) \
  4852. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  4853. #endif /* COBJMACROS */
  4854. #endif /* C style interface */
  4855. #endif /* __IMDSPStorage_INTERFACE_DEFINED__ */
  4856. #ifndef __IMDSPStorage2_INTERFACE_DEFINED__
  4857. #define __IMDSPStorage2_INTERFACE_DEFINED__
  4858. /* interface IMDSPStorage2 */
  4859. /* [unique][uuid][object] */
  4860. EXTERN_C const IID IID_IMDSPStorage2;
  4861. #if defined(__cplusplus) && !defined(CINTERFACE)
  4862. MIDL_INTERFACE("0A5E07A5-6454-4451-9C36-1C6AE7E2B1D6")
  4863. IMDSPStorage2 : public IMDSPStorage
  4864. {
  4865. public:
  4866. virtual HRESULT STDMETHODCALLTYPE GetStorage(
  4867. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  4868. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage) = 0;
  4869. virtual HRESULT STDMETHODCALLTYPE CreateStorage2(
  4870. /* [in] */ DWORD dwAttributes,
  4871. /* [in] */ DWORD dwAttributesEx,
  4872. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  4873. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat,
  4874. /* [in] */ __RPC__in LPWSTR pwszName,
  4875. /* [in] */ ULONGLONG qwFileSize,
  4876. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage) = 0;
  4877. virtual HRESULT STDMETHODCALLTYPE SetAttributes2(
  4878. /* [in] */ DWORD dwAttributes,
  4879. /* [in] */ DWORD dwAttributesEx,
  4880. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  4881. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat) = 0;
  4882. virtual HRESULT STDMETHODCALLTYPE GetAttributes2(
  4883. /* [out] */ __RPC__out DWORD *pdwAttributes,
  4884. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  4885. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  4886. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat) = 0;
  4887. };
  4888. #else /* C style interface */
  4889. typedef struct IMDSPStorage2Vtbl
  4890. {
  4891. BEGIN_INTERFACE
  4892. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4893. IMDSPStorage2 * This,
  4894. /* [in] */ __RPC__in REFIID riid,
  4895. /* [iid_is][out] */
  4896. __RPC__deref_out void **ppvObject);
  4897. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4898. IMDSPStorage2 * This);
  4899. ULONG ( STDMETHODCALLTYPE *Release )(
  4900. IMDSPStorage2 * This);
  4901. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  4902. IMDSPStorage2 * This,
  4903. /* [in] */ DWORD dwAttributes,
  4904. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  4905. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  4906. IMDSPStorage2 * This,
  4907. /* [out] */ __RPC__deref_out_opt IMDSPStorageGlobals **ppStorageGlobals);
  4908. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  4909. IMDSPStorage2 * This,
  4910. /* [out] */ __RPC__out DWORD *pdwAttributes,
  4911. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  4912. HRESULT ( STDMETHODCALLTYPE *GetName )(
  4913. IMDSPStorage2 * This,
  4914. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  4915. /* [in] */ UINT nMaxChars);
  4916. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  4917. IMDSPStorage2 * This,
  4918. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  4919. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  4920. IMDSPStorage2 * This,
  4921. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  4922. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  4923. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  4924. IMDSPStorage2 * This,
  4925. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  4926. /* [out] */ __RPC__out UINT *pnRightsCount,
  4927. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  4928. HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
  4929. IMDSPStorage2 * This,
  4930. /* [in] */ DWORD dwAttributes,
  4931. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  4932. /* [in] */ __RPC__in LPWSTR pwszName,
  4933. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  4934. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  4935. IMDSPStorage2 * This,
  4936. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  4937. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  4938. IMDSPStorage2 * This,
  4939. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  4940. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  4941. IMDSPStorage2 * This,
  4942. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  4943. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  4944. HRESULT ( STDMETHODCALLTYPE *CreateStorage2 )(
  4945. IMDSPStorage2 * This,
  4946. /* [in] */ DWORD dwAttributes,
  4947. /* [in] */ DWORD dwAttributesEx,
  4948. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  4949. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat,
  4950. /* [in] */ __RPC__in LPWSTR pwszName,
  4951. /* [in] */ ULONGLONG qwFileSize,
  4952. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  4953. HRESULT ( STDMETHODCALLTYPE *SetAttributes2 )(
  4954. IMDSPStorage2 * This,
  4955. /* [in] */ DWORD dwAttributes,
  4956. /* [in] */ DWORD dwAttributesEx,
  4957. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  4958. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  4959. HRESULT ( STDMETHODCALLTYPE *GetAttributes2 )(
  4960. IMDSPStorage2 * This,
  4961. /* [out] */ __RPC__out DWORD *pdwAttributes,
  4962. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  4963. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  4964. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  4965. END_INTERFACE
  4966. } IMDSPStorage2Vtbl;
  4967. interface IMDSPStorage2
  4968. {
  4969. CONST_VTBL struct IMDSPStorage2Vtbl *lpVtbl;
  4970. };
  4971. #ifdef COBJMACROS
  4972. #define IMDSPStorage2_QueryInterface(This,riid,ppvObject) \
  4973. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4974. #define IMDSPStorage2_AddRef(This) \
  4975. ( (This)->lpVtbl -> AddRef(This) )
  4976. #define IMDSPStorage2_Release(This) \
  4977. ( (This)->lpVtbl -> Release(This) )
  4978. #define IMDSPStorage2_SetAttributes(This,dwAttributes,pFormat) \
  4979. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  4980. #define IMDSPStorage2_GetStorageGlobals(This,ppStorageGlobals) \
  4981. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  4982. #define IMDSPStorage2_GetAttributes(This,pdwAttributes,pFormat) \
  4983. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  4984. #define IMDSPStorage2_GetName(This,pwszName,nMaxChars) \
  4985. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  4986. #define IMDSPStorage2_GetDate(This,pDateTimeUTC) \
  4987. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  4988. #define IMDSPStorage2_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  4989. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  4990. #define IMDSPStorage2_GetRights(This,ppRights,pnRightsCount,abMac) \
  4991. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  4992. #define IMDSPStorage2_CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) \
  4993. ( (This)->lpVtbl -> CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) )
  4994. #define IMDSPStorage2_EnumStorage(This,ppEnumStorage) \
  4995. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  4996. #define IMDSPStorage2_SendOpaqueCommand(This,pCommand) \
  4997. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  4998. #define IMDSPStorage2_GetStorage(This,pszStorageName,ppStorage) \
  4999. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  5000. #define IMDSPStorage2_CreateStorage2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat,pwszName,qwFileSize,ppNewStorage) \
  5001. ( (This)->lpVtbl -> CreateStorage2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat,pwszName,qwFileSize,ppNewStorage) )
  5002. #define IMDSPStorage2_SetAttributes2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat) \
  5003. ( (This)->lpVtbl -> SetAttributes2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat) )
  5004. #define IMDSPStorage2_GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  5005. ( (This)->lpVtbl -> GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  5006. #endif /* COBJMACROS */
  5007. #endif /* C style interface */
  5008. #endif /* __IMDSPStorage2_INTERFACE_DEFINED__ */
  5009. #ifndef __IMDSPStorage3_INTERFACE_DEFINED__
  5010. #define __IMDSPStorage3_INTERFACE_DEFINED__
  5011. /* interface IMDSPStorage3 */
  5012. /* [unique][uuid][object] */
  5013. EXTERN_C const IID IID_IMDSPStorage3;
  5014. #if defined(__cplusplus) && !defined(CINTERFACE)
  5015. MIDL_INTERFACE("6C669867-97ED-4a67-9706-1C5529D2A414")
  5016. IMDSPStorage3 : public IMDSPStorage2
  5017. {
  5018. public:
  5019. virtual HRESULT STDMETHODCALLTYPE GetMetadata(
  5020. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata) = 0;
  5021. virtual HRESULT STDMETHODCALLTYPE SetMetadata(
  5022. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata) = 0;
  5023. };
  5024. #else /* C style interface */
  5025. typedef struct IMDSPStorage3Vtbl
  5026. {
  5027. BEGIN_INTERFACE
  5028. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5029. IMDSPStorage3 * This,
  5030. /* [in] */ __RPC__in REFIID riid,
  5031. /* [iid_is][out] */
  5032. __RPC__deref_out void **ppvObject);
  5033. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5034. IMDSPStorage3 * This);
  5035. ULONG ( STDMETHODCALLTYPE *Release )(
  5036. IMDSPStorage3 * This);
  5037. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  5038. IMDSPStorage3 * This,
  5039. /* [in] */ DWORD dwAttributes,
  5040. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  5041. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  5042. IMDSPStorage3 * This,
  5043. /* [out] */ __RPC__deref_out_opt IMDSPStorageGlobals **ppStorageGlobals);
  5044. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  5045. IMDSPStorage3 * This,
  5046. /* [out] */ __RPC__out DWORD *pdwAttributes,
  5047. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  5048. HRESULT ( STDMETHODCALLTYPE *GetName )(
  5049. IMDSPStorage3 * This,
  5050. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  5051. /* [in] */ UINT nMaxChars);
  5052. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  5053. IMDSPStorage3 * This,
  5054. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  5055. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  5056. IMDSPStorage3 * This,
  5057. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  5058. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  5059. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  5060. IMDSPStorage3 * This,
  5061. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  5062. /* [out] */ __RPC__out UINT *pnRightsCount,
  5063. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5064. HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
  5065. IMDSPStorage3 * This,
  5066. /* [in] */ DWORD dwAttributes,
  5067. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  5068. /* [in] */ __RPC__in LPWSTR pwszName,
  5069. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  5070. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  5071. IMDSPStorage3 * This,
  5072. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  5073. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  5074. IMDSPStorage3 * This,
  5075. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  5076. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  5077. IMDSPStorage3 * This,
  5078. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  5079. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  5080. HRESULT ( STDMETHODCALLTYPE *CreateStorage2 )(
  5081. IMDSPStorage3 * This,
  5082. /* [in] */ DWORD dwAttributes,
  5083. /* [in] */ DWORD dwAttributesEx,
  5084. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  5085. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat,
  5086. /* [in] */ __RPC__in LPWSTR pwszName,
  5087. /* [in] */ ULONGLONG qwFileSize,
  5088. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  5089. HRESULT ( STDMETHODCALLTYPE *SetAttributes2 )(
  5090. IMDSPStorage3 * This,
  5091. /* [in] */ DWORD dwAttributes,
  5092. /* [in] */ DWORD dwAttributesEx,
  5093. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  5094. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  5095. HRESULT ( STDMETHODCALLTYPE *GetAttributes2 )(
  5096. IMDSPStorage3 * This,
  5097. /* [out] */ __RPC__out DWORD *pdwAttributes,
  5098. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  5099. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  5100. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  5101. HRESULT ( STDMETHODCALLTYPE *GetMetadata )(
  5102. IMDSPStorage3 * This,
  5103. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  5104. HRESULT ( STDMETHODCALLTYPE *SetMetadata )(
  5105. IMDSPStorage3 * This,
  5106. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  5107. END_INTERFACE
  5108. } IMDSPStorage3Vtbl;
  5109. interface IMDSPStorage3
  5110. {
  5111. CONST_VTBL struct IMDSPStorage3Vtbl *lpVtbl;
  5112. };
  5113. #ifdef COBJMACROS
  5114. #define IMDSPStorage3_QueryInterface(This,riid,ppvObject) \
  5115. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5116. #define IMDSPStorage3_AddRef(This) \
  5117. ( (This)->lpVtbl -> AddRef(This) )
  5118. #define IMDSPStorage3_Release(This) \
  5119. ( (This)->lpVtbl -> Release(This) )
  5120. #define IMDSPStorage3_SetAttributes(This,dwAttributes,pFormat) \
  5121. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  5122. #define IMDSPStorage3_GetStorageGlobals(This,ppStorageGlobals) \
  5123. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  5124. #define IMDSPStorage3_GetAttributes(This,pdwAttributes,pFormat) \
  5125. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  5126. #define IMDSPStorage3_GetName(This,pwszName,nMaxChars) \
  5127. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  5128. #define IMDSPStorage3_GetDate(This,pDateTimeUTC) \
  5129. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  5130. #define IMDSPStorage3_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  5131. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  5132. #define IMDSPStorage3_GetRights(This,ppRights,pnRightsCount,abMac) \
  5133. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  5134. #define IMDSPStorage3_CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) \
  5135. ( (This)->lpVtbl -> CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) )
  5136. #define IMDSPStorage3_EnumStorage(This,ppEnumStorage) \
  5137. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  5138. #define IMDSPStorage3_SendOpaqueCommand(This,pCommand) \
  5139. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  5140. #define IMDSPStorage3_GetStorage(This,pszStorageName,ppStorage) \
  5141. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  5142. #define IMDSPStorage3_CreateStorage2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat,pwszName,qwFileSize,ppNewStorage) \
  5143. ( (This)->lpVtbl -> CreateStorage2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat,pwszName,qwFileSize,ppNewStorage) )
  5144. #define IMDSPStorage3_SetAttributes2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat) \
  5145. ( (This)->lpVtbl -> SetAttributes2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat) )
  5146. #define IMDSPStorage3_GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  5147. ( (This)->lpVtbl -> GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  5148. #define IMDSPStorage3_GetMetadata(This,pMetadata) \
  5149. ( (This)->lpVtbl -> GetMetadata(This,pMetadata) )
  5150. #define IMDSPStorage3_SetMetadata(This,pMetadata) \
  5151. ( (This)->lpVtbl -> SetMetadata(This,pMetadata) )
  5152. #endif /* COBJMACROS */
  5153. #endif /* C style interface */
  5154. #endif /* __IMDSPStorage3_INTERFACE_DEFINED__ */
  5155. #ifndef __IMDSPStorage4_INTERFACE_DEFINED__
  5156. #define __IMDSPStorage4_INTERFACE_DEFINED__
  5157. /* interface IMDSPStorage4 */
  5158. /* [unique][uuid][object] */
  5159. EXTERN_C const IID IID_IMDSPStorage4;
  5160. #if defined(__cplusplus) && !defined(CINTERFACE)
  5161. MIDL_INTERFACE("3133b2c4-515c-481b-b1ce-39327ecb4f74")
  5162. IMDSPStorage4 : public IMDSPStorage3
  5163. {
  5164. public:
  5165. virtual HRESULT STDMETHODCALLTYPE SetReferences(
  5166. /* [in] */ DWORD dwRefs,
  5167. /* [size_is][unique][in] */ __RPC__in_ecount_full_opt(dwRefs) IMDSPStorage **ppISPStorage) = 0;
  5168. virtual HRESULT STDMETHODCALLTYPE GetReferences(
  5169. /* [out] */ __RPC__out DWORD *pdwRefs,
  5170. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwRefs) IMDSPStorage ***pppISPStorage) = 0;
  5171. virtual HRESULT STDMETHODCALLTYPE CreateStorageWithMetadata(
  5172. /* [in] */ DWORD dwAttributes,
  5173. /* [in] */ __RPC__in LPCWSTR pwszName,
  5174. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata,
  5175. /* [in] */ ULONGLONG qwFileSize,
  5176. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage) = 0;
  5177. virtual HRESULT STDMETHODCALLTYPE GetSpecifiedMetadata(
  5178. /* [in] */ DWORD cProperties,
  5179. /* [size_is][in] */ __RPC__in_ecount_full(cProperties) LPCWSTR *ppwszPropNames,
  5180. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata) = 0;
  5181. virtual HRESULT STDMETHODCALLTYPE FindStorage(
  5182. /* [in] */ WMDM_FIND_SCOPE findScope,
  5183. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  5184. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage) = 0;
  5185. virtual HRESULT STDMETHODCALLTYPE GetParent(
  5186. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage) = 0;
  5187. };
  5188. #else /* C style interface */
  5189. typedef struct IMDSPStorage4Vtbl
  5190. {
  5191. BEGIN_INTERFACE
  5192. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5193. IMDSPStorage4 * This,
  5194. /* [in] */ __RPC__in REFIID riid,
  5195. /* [iid_is][out] */
  5196. __RPC__deref_out void **ppvObject);
  5197. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5198. IMDSPStorage4 * This);
  5199. ULONG ( STDMETHODCALLTYPE *Release )(
  5200. IMDSPStorage4 * This);
  5201. HRESULT ( STDMETHODCALLTYPE *SetAttributes )(
  5202. IMDSPStorage4 * This,
  5203. /* [in] */ DWORD dwAttributes,
  5204. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat);
  5205. HRESULT ( STDMETHODCALLTYPE *GetStorageGlobals )(
  5206. IMDSPStorage4 * This,
  5207. /* [out] */ __RPC__deref_out_opt IMDSPStorageGlobals **ppStorageGlobals);
  5208. HRESULT ( STDMETHODCALLTYPE *GetAttributes )(
  5209. IMDSPStorage4 * This,
  5210. /* [out] */ __RPC__out DWORD *pdwAttributes,
  5211. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pFormat);
  5212. HRESULT ( STDMETHODCALLTYPE *GetName )(
  5213. IMDSPStorage4 * This,
  5214. /* [size_is][string][out] */ __RPC__out_ecount_full_string(nMaxChars) LPWSTR pwszName,
  5215. /* [in] */ UINT nMaxChars);
  5216. HRESULT ( STDMETHODCALLTYPE *GetDate )(
  5217. IMDSPStorage4 * This,
  5218. /* [out] */ __RPC__out PWMDMDATETIME pDateTimeUTC);
  5219. HRESULT ( STDMETHODCALLTYPE *GetSize )(
  5220. IMDSPStorage4 * This,
  5221. /* [out] */ __RPC__out DWORD *pdwSizeLow,
  5222. /* [out] */ __RPC__out DWORD *pdwSizeHigh);
  5223. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  5224. IMDSPStorage4 * This,
  5225. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  5226. /* [out] */ __RPC__out UINT *pnRightsCount,
  5227. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5228. HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
  5229. IMDSPStorage4 * This,
  5230. /* [in] */ DWORD dwAttributes,
  5231. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pFormat,
  5232. /* [in] */ __RPC__in LPWSTR pwszName,
  5233. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  5234. HRESULT ( STDMETHODCALLTYPE *EnumStorage )(
  5235. IMDSPStorage4 * This,
  5236. /* [out] */ __RPC__deref_out_opt IMDSPEnumStorage **ppEnumStorage);
  5237. HRESULT ( STDMETHODCALLTYPE *SendOpaqueCommand )(
  5238. IMDSPStorage4 * This,
  5239. /* [out][in] */ __RPC__inout OPAQUECOMMAND *pCommand);
  5240. HRESULT ( STDMETHODCALLTYPE *GetStorage )(
  5241. IMDSPStorage4 * This,
  5242. /* [string][in] */ __RPC__in LPCWSTR pszStorageName,
  5243. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  5244. HRESULT ( STDMETHODCALLTYPE *CreateStorage2 )(
  5245. IMDSPStorage4 * This,
  5246. /* [in] */ DWORD dwAttributes,
  5247. /* [in] */ DWORD dwAttributesEx,
  5248. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  5249. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat,
  5250. /* [in] */ __RPC__in LPWSTR pwszName,
  5251. /* [in] */ ULONGLONG qwFileSize,
  5252. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  5253. HRESULT ( STDMETHODCALLTYPE *SetAttributes2 )(
  5254. IMDSPStorage4 * This,
  5255. /* [in] */ DWORD dwAttributes,
  5256. /* [in] */ DWORD dwAttributesEx,
  5257. /* [unique][in] */ __RPC__in_opt _WAVEFORMATEX *pAudioFormat,
  5258. /* [unique][in] */ __RPC__in_opt _VIDEOINFOHEADER *pVideoFormat);
  5259. HRESULT ( STDMETHODCALLTYPE *GetAttributes2 )(
  5260. IMDSPStorage4 * This,
  5261. /* [out] */ __RPC__out DWORD *pdwAttributes,
  5262. /* [out] */ __RPC__out DWORD *pdwAttributesEx,
  5263. /* [unique][out][in] */ __RPC__inout_opt _WAVEFORMATEX *pAudioFormat,
  5264. /* [unique][out][in] */ __RPC__inout_opt _VIDEOINFOHEADER *pVideoFormat);
  5265. HRESULT ( STDMETHODCALLTYPE *GetMetadata )(
  5266. IMDSPStorage4 * This,
  5267. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  5268. HRESULT ( STDMETHODCALLTYPE *SetMetadata )(
  5269. IMDSPStorage4 * This,
  5270. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  5271. HRESULT ( STDMETHODCALLTYPE *SetReferences )(
  5272. IMDSPStorage4 * This,
  5273. /* [in] */ DWORD dwRefs,
  5274. /* [size_is][unique][in] */ __RPC__in_ecount_full_opt(dwRefs) IMDSPStorage **ppISPStorage);
  5275. HRESULT ( STDMETHODCALLTYPE *GetReferences )(
  5276. IMDSPStorage4 * This,
  5277. /* [out] */ __RPC__out DWORD *pdwRefs,
  5278. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwRefs) IMDSPStorage ***pppISPStorage);
  5279. HRESULT ( STDMETHODCALLTYPE *CreateStorageWithMetadata )(
  5280. IMDSPStorage4 * This,
  5281. /* [in] */ DWORD dwAttributes,
  5282. /* [in] */ __RPC__in LPCWSTR pwszName,
  5283. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata,
  5284. /* [in] */ ULONGLONG qwFileSize,
  5285. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewStorage);
  5286. HRESULT ( STDMETHODCALLTYPE *GetSpecifiedMetadata )(
  5287. IMDSPStorage4 * This,
  5288. /* [in] */ DWORD cProperties,
  5289. /* [size_is][in] */ __RPC__in_ecount_full(cProperties) LPCWSTR *ppwszPropNames,
  5290. /* [in] */ __RPC__in_opt IWMDMMetaData *pMetadata);
  5291. HRESULT ( STDMETHODCALLTYPE *FindStorage )(
  5292. IMDSPStorage4 * This,
  5293. /* [in] */ WMDM_FIND_SCOPE findScope,
  5294. /* [in] */ __RPC__in LPCWSTR pwszUniqueID,
  5295. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  5296. HRESULT ( STDMETHODCALLTYPE *GetParent )(
  5297. IMDSPStorage4 * This,
  5298. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppStorage);
  5299. END_INTERFACE
  5300. } IMDSPStorage4Vtbl;
  5301. interface IMDSPStorage4
  5302. {
  5303. CONST_VTBL struct IMDSPStorage4Vtbl *lpVtbl;
  5304. };
  5305. #ifdef COBJMACROS
  5306. #define IMDSPStorage4_QueryInterface(This,riid,ppvObject) \
  5307. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5308. #define IMDSPStorage4_AddRef(This) \
  5309. ( (This)->lpVtbl -> AddRef(This) )
  5310. #define IMDSPStorage4_Release(This) \
  5311. ( (This)->lpVtbl -> Release(This) )
  5312. #define IMDSPStorage4_SetAttributes(This,dwAttributes,pFormat) \
  5313. ( (This)->lpVtbl -> SetAttributes(This,dwAttributes,pFormat) )
  5314. #define IMDSPStorage4_GetStorageGlobals(This,ppStorageGlobals) \
  5315. ( (This)->lpVtbl -> GetStorageGlobals(This,ppStorageGlobals) )
  5316. #define IMDSPStorage4_GetAttributes(This,pdwAttributes,pFormat) \
  5317. ( (This)->lpVtbl -> GetAttributes(This,pdwAttributes,pFormat) )
  5318. #define IMDSPStorage4_GetName(This,pwszName,nMaxChars) \
  5319. ( (This)->lpVtbl -> GetName(This,pwszName,nMaxChars) )
  5320. #define IMDSPStorage4_GetDate(This,pDateTimeUTC) \
  5321. ( (This)->lpVtbl -> GetDate(This,pDateTimeUTC) )
  5322. #define IMDSPStorage4_GetSize(This,pdwSizeLow,pdwSizeHigh) \
  5323. ( (This)->lpVtbl -> GetSize(This,pdwSizeLow,pdwSizeHigh) )
  5324. #define IMDSPStorage4_GetRights(This,ppRights,pnRightsCount,abMac) \
  5325. ( (This)->lpVtbl -> GetRights(This,ppRights,pnRightsCount,abMac) )
  5326. #define IMDSPStorage4_CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) \
  5327. ( (This)->lpVtbl -> CreateStorage(This,dwAttributes,pFormat,pwszName,ppNewStorage) )
  5328. #define IMDSPStorage4_EnumStorage(This,ppEnumStorage) \
  5329. ( (This)->lpVtbl -> EnumStorage(This,ppEnumStorage) )
  5330. #define IMDSPStorage4_SendOpaqueCommand(This,pCommand) \
  5331. ( (This)->lpVtbl -> SendOpaqueCommand(This,pCommand) )
  5332. #define IMDSPStorage4_GetStorage(This,pszStorageName,ppStorage) \
  5333. ( (This)->lpVtbl -> GetStorage(This,pszStorageName,ppStorage) )
  5334. #define IMDSPStorage4_CreateStorage2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat,pwszName,qwFileSize,ppNewStorage) \
  5335. ( (This)->lpVtbl -> CreateStorage2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat,pwszName,qwFileSize,ppNewStorage) )
  5336. #define IMDSPStorage4_SetAttributes2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat) \
  5337. ( (This)->lpVtbl -> SetAttributes2(This,dwAttributes,dwAttributesEx,pAudioFormat,pVideoFormat) )
  5338. #define IMDSPStorage4_GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) \
  5339. ( (This)->lpVtbl -> GetAttributes2(This,pdwAttributes,pdwAttributesEx,pAudioFormat,pVideoFormat) )
  5340. #define IMDSPStorage4_GetMetadata(This,pMetadata) \
  5341. ( (This)->lpVtbl -> GetMetadata(This,pMetadata) )
  5342. #define IMDSPStorage4_SetMetadata(This,pMetadata) \
  5343. ( (This)->lpVtbl -> SetMetadata(This,pMetadata) )
  5344. #define IMDSPStorage4_SetReferences(This,dwRefs,ppISPStorage) \
  5345. ( (This)->lpVtbl -> SetReferences(This,dwRefs,ppISPStorage) )
  5346. #define IMDSPStorage4_GetReferences(This,pdwRefs,pppISPStorage) \
  5347. ( (This)->lpVtbl -> GetReferences(This,pdwRefs,pppISPStorage) )
  5348. #define IMDSPStorage4_CreateStorageWithMetadata(This,dwAttributes,pwszName,pMetadata,qwFileSize,ppNewStorage) \
  5349. ( (This)->lpVtbl -> CreateStorageWithMetadata(This,dwAttributes,pwszName,pMetadata,qwFileSize,ppNewStorage) )
  5350. #define IMDSPStorage4_GetSpecifiedMetadata(This,cProperties,ppwszPropNames,pMetadata) \
  5351. ( (This)->lpVtbl -> GetSpecifiedMetadata(This,cProperties,ppwszPropNames,pMetadata) )
  5352. #define IMDSPStorage4_FindStorage(This,findScope,pwszUniqueID,ppStorage) \
  5353. ( (This)->lpVtbl -> FindStorage(This,findScope,pwszUniqueID,ppStorage) )
  5354. #define IMDSPStorage4_GetParent(This,ppStorage) \
  5355. ( (This)->lpVtbl -> GetParent(This,ppStorage) )
  5356. #endif /* COBJMACROS */
  5357. #endif /* C style interface */
  5358. #endif /* __IMDSPStorage4_INTERFACE_DEFINED__ */
  5359. #ifndef __IMDSPStorageGlobals_INTERFACE_DEFINED__
  5360. #define __IMDSPStorageGlobals_INTERFACE_DEFINED__
  5361. /* interface IMDSPStorageGlobals */
  5362. /* [unique][uuid][object] */
  5363. EXTERN_C const IID IID_IMDSPStorageGlobals;
  5364. #if defined(__cplusplus) && !defined(CINTERFACE)
  5365. MIDL_INTERFACE("1DCB3A17-33ED-11d3-8470-00C04F79DBC0")
  5366. IMDSPStorageGlobals : public IUnknown
  5367. {
  5368. public:
  5369. virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
  5370. /* [out] */ __RPC__out DWORD *pdwCapabilities) = 0;
  5371. virtual HRESULT STDMETHODCALLTYPE GetSerialNumber(
  5372. /* [out] */ __RPC__out PWMDMID pSerialNum,
  5373. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  5374. virtual HRESULT STDMETHODCALLTYPE GetTotalSize(
  5375. /* [out] */ __RPC__out DWORD *pdwTotalSizeLow,
  5376. /* [out] */ __RPC__out DWORD *pdwTotalSizeHigh) = 0;
  5377. virtual HRESULT STDMETHODCALLTYPE GetTotalFree(
  5378. /* [out] */ __RPC__out DWORD *pdwFreeLow,
  5379. /* [out] */ __RPC__out DWORD *pdwFreeHigh) = 0;
  5380. virtual HRESULT STDMETHODCALLTYPE GetTotalBad(
  5381. /* [out] */ __RPC__out DWORD *pdwBadLow,
  5382. /* [out] */ __RPC__out DWORD *pdwBadHigh) = 0;
  5383. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  5384. /* [out] */ __RPC__out DWORD *pdwStatus) = 0;
  5385. virtual HRESULT STDMETHODCALLTYPE Initialize(
  5386. /* [in] */ UINT fuMode,
  5387. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  5388. virtual HRESULT STDMETHODCALLTYPE GetDevice(
  5389. /* [out] */ __RPC__deref_out_opt IMDSPDevice **ppDevice) = 0;
  5390. virtual HRESULT STDMETHODCALLTYPE GetRootStorage(
  5391. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppRoot) = 0;
  5392. };
  5393. #else /* C style interface */
  5394. typedef struct IMDSPStorageGlobalsVtbl
  5395. {
  5396. BEGIN_INTERFACE
  5397. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5398. IMDSPStorageGlobals * This,
  5399. /* [in] */ __RPC__in REFIID riid,
  5400. /* [iid_is][out] */
  5401. __RPC__deref_out void **ppvObject);
  5402. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5403. IMDSPStorageGlobals * This);
  5404. ULONG ( STDMETHODCALLTYPE *Release )(
  5405. IMDSPStorageGlobals * This);
  5406. HRESULT ( STDMETHODCALLTYPE *GetCapabilities )(
  5407. IMDSPStorageGlobals * This,
  5408. /* [out] */ __RPC__out DWORD *pdwCapabilities);
  5409. HRESULT ( STDMETHODCALLTYPE *GetSerialNumber )(
  5410. IMDSPStorageGlobals * This,
  5411. /* [out] */ __RPC__out PWMDMID pSerialNum,
  5412. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5413. HRESULT ( STDMETHODCALLTYPE *GetTotalSize )(
  5414. IMDSPStorageGlobals * This,
  5415. /* [out] */ __RPC__out DWORD *pdwTotalSizeLow,
  5416. /* [out] */ __RPC__out DWORD *pdwTotalSizeHigh);
  5417. HRESULT ( STDMETHODCALLTYPE *GetTotalFree )(
  5418. IMDSPStorageGlobals * This,
  5419. /* [out] */ __RPC__out DWORD *pdwFreeLow,
  5420. /* [out] */ __RPC__out DWORD *pdwFreeHigh);
  5421. HRESULT ( STDMETHODCALLTYPE *GetTotalBad )(
  5422. IMDSPStorageGlobals * This,
  5423. /* [out] */ __RPC__out DWORD *pdwBadLow,
  5424. /* [out] */ __RPC__out DWORD *pdwBadHigh);
  5425. HRESULT ( STDMETHODCALLTYPE *GetStatus )(
  5426. IMDSPStorageGlobals * This,
  5427. /* [out] */ __RPC__out DWORD *pdwStatus);
  5428. HRESULT ( STDMETHODCALLTYPE *Initialize )(
  5429. IMDSPStorageGlobals * This,
  5430. /* [in] */ UINT fuMode,
  5431. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  5432. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  5433. IMDSPStorageGlobals * This,
  5434. /* [out] */ __RPC__deref_out_opt IMDSPDevice **ppDevice);
  5435. HRESULT ( STDMETHODCALLTYPE *GetRootStorage )(
  5436. IMDSPStorageGlobals * This,
  5437. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppRoot);
  5438. END_INTERFACE
  5439. } IMDSPStorageGlobalsVtbl;
  5440. interface IMDSPStorageGlobals
  5441. {
  5442. CONST_VTBL struct IMDSPStorageGlobalsVtbl *lpVtbl;
  5443. };
  5444. #ifdef COBJMACROS
  5445. #define IMDSPStorageGlobals_QueryInterface(This,riid,ppvObject) \
  5446. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5447. #define IMDSPStorageGlobals_AddRef(This) \
  5448. ( (This)->lpVtbl -> AddRef(This) )
  5449. #define IMDSPStorageGlobals_Release(This) \
  5450. ( (This)->lpVtbl -> Release(This) )
  5451. #define IMDSPStorageGlobals_GetCapabilities(This,pdwCapabilities) \
  5452. ( (This)->lpVtbl -> GetCapabilities(This,pdwCapabilities) )
  5453. #define IMDSPStorageGlobals_GetSerialNumber(This,pSerialNum,abMac) \
  5454. ( (This)->lpVtbl -> GetSerialNumber(This,pSerialNum,abMac) )
  5455. #define IMDSPStorageGlobals_GetTotalSize(This,pdwTotalSizeLow,pdwTotalSizeHigh) \
  5456. ( (This)->lpVtbl -> GetTotalSize(This,pdwTotalSizeLow,pdwTotalSizeHigh) )
  5457. #define IMDSPStorageGlobals_GetTotalFree(This,pdwFreeLow,pdwFreeHigh) \
  5458. ( (This)->lpVtbl -> GetTotalFree(This,pdwFreeLow,pdwFreeHigh) )
  5459. #define IMDSPStorageGlobals_GetTotalBad(This,pdwBadLow,pdwBadHigh) \
  5460. ( (This)->lpVtbl -> GetTotalBad(This,pdwBadLow,pdwBadHigh) )
  5461. #define IMDSPStorageGlobals_GetStatus(This,pdwStatus) \
  5462. ( (This)->lpVtbl -> GetStatus(This,pdwStatus) )
  5463. #define IMDSPStorageGlobals_Initialize(This,fuMode,pProgress) \
  5464. ( (This)->lpVtbl -> Initialize(This,fuMode,pProgress) )
  5465. #define IMDSPStorageGlobals_GetDevice(This,ppDevice) \
  5466. ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
  5467. #define IMDSPStorageGlobals_GetRootStorage(This,ppRoot) \
  5468. ( (This)->lpVtbl -> GetRootStorage(This,ppRoot) )
  5469. #endif /* COBJMACROS */
  5470. #endif /* C style interface */
  5471. #endif /* __IMDSPStorageGlobals_INTERFACE_DEFINED__ */
  5472. #ifndef __IMDSPObjectInfo_INTERFACE_DEFINED__
  5473. #define __IMDSPObjectInfo_INTERFACE_DEFINED__
  5474. /* interface IMDSPObjectInfo */
  5475. /* [unique][uuid][object] */
  5476. EXTERN_C const IID IID_IMDSPObjectInfo;
  5477. #if defined(__cplusplus) && !defined(CINTERFACE)
  5478. MIDL_INTERFACE("1DCB3A19-33ED-11d3-8470-00C04F79DBC0")
  5479. IMDSPObjectInfo : public IUnknown
  5480. {
  5481. public:
  5482. virtual HRESULT STDMETHODCALLTYPE GetPlayLength(
  5483. /* [out] */ __RPC__out DWORD *pdwLength) = 0;
  5484. virtual HRESULT STDMETHODCALLTYPE SetPlayLength(
  5485. /* [in] */ DWORD dwLength) = 0;
  5486. virtual HRESULT STDMETHODCALLTYPE GetPlayOffset(
  5487. /* [out] */ __RPC__out DWORD *pdwOffset) = 0;
  5488. virtual HRESULT STDMETHODCALLTYPE SetPlayOffset(
  5489. /* [in] */ DWORD dwOffset) = 0;
  5490. virtual HRESULT STDMETHODCALLTYPE GetTotalLength(
  5491. /* [out] */ __RPC__out DWORD *pdwLength) = 0;
  5492. virtual HRESULT STDMETHODCALLTYPE GetLastPlayPosition(
  5493. /* [out] */ __RPC__out DWORD *pdwLastPos) = 0;
  5494. virtual HRESULT STDMETHODCALLTYPE GetLongestPlayPosition(
  5495. /* [out] */ __RPC__out DWORD *pdwLongestPos) = 0;
  5496. };
  5497. #else /* C style interface */
  5498. typedef struct IMDSPObjectInfoVtbl
  5499. {
  5500. BEGIN_INTERFACE
  5501. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5502. IMDSPObjectInfo * This,
  5503. /* [in] */ __RPC__in REFIID riid,
  5504. /* [iid_is][out] */
  5505. __RPC__deref_out void **ppvObject);
  5506. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5507. IMDSPObjectInfo * This);
  5508. ULONG ( STDMETHODCALLTYPE *Release )(
  5509. IMDSPObjectInfo * This);
  5510. HRESULT ( STDMETHODCALLTYPE *GetPlayLength )(
  5511. IMDSPObjectInfo * This,
  5512. /* [out] */ __RPC__out DWORD *pdwLength);
  5513. HRESULT ( STDMETHODCALLTYPE *SetPlayLength )(
  5514. IMDSPObjectInfo * This,
  5515. /* [in] */ DWORD dwLength);
  5516. HRESULT ( STDMETHODCALLTYPE *GetPlayOffset )(
  5517. IMDSPObjectInfo * This,
  5518. /* [out] */ __RPC__out DWORD *pdwOffset);
  5519. HRESULT ( STDMETHODCALLTYPE *SetPlayOffset )(
  5520. IMDSPObjectInfo * This,
  5521. /* [in] */ DWORD dwOffset);
  5522. HRESULT ( STDMETHODCALLTYPE *GetTotalLength )(
  5523. IMDSPObjectInfo * This,
  5524. /* [out] */ __RPC__out DWORD *pdwLength);
  5525. HRESULT ( STDMETHODCALLTYPE *GetLastPlayPosition )(
  5526. IMDSPObjectInfo * This,
  5527. /* [out] */ __RPC__out DWORD *pdwLastPos);
  5528. HRESULT ( STDMETHODCALLTYPE *GetLongestPlayPosition )(
  5529. IMDSPObjectInfo * This,
  5530. /* [out] */ __RPC__out DWORD *pdwLongestPos);
  5531. END_INTERFACE
  5532. } IMDSPObjectInfoVtbl;
  5533. interface IMDSPObjectInfo
  5534. {
  5535. CONST_VTBL struct IMDSPObjectInfoVtbl *lpVtbl;
  5536. };
  5537. #ifdef COBJMACROS
  5538. #define IMDSPObjectInfo_QueryInterface(This,riid,ppvObject) \
  5539. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5540. #define IMDSPObjectInfo_AddRef(This) \
  5541. ( (This)->lpVtbl -> AddRef(This) )
  5542. #define IMDSPObjectInfo_Release(This) \
  5543. ( (This)->lpVtbl -> Release(This) )
  5544. #define IMDSPObjectInfo_GetPlayLength(This,pdwLength) \
  5545. ( (This)->lpVtbl -> GetPlayLength(This,pdwLength) )
  5546. #define IMDSPObjectInfo_SetPlayLength(This,dwLength) \
  5547. ( (This)->lpVtbl -> SetPlayLength(This,dwLength) )
  5548. #define IMDSPObjectInfo_GetPlayOffset(This,pdwOffset) \
  5549. ( (This)->lpVtbl -> GetPlayOffset(This,pdwOffset) )
  5550. #define IMDSPObjectInfo_SetPlayOffset(This,dwOffset) \
  5551. ( (This)->lpVtbl -> SetPlayOffset(This,dwOffset) )
  5552. #define IMDSPObjectInfo_GetTotalLength(This,pdwLength) \
  5553. ( (This)->lpVtbl -> GetTotalLength(This,pdwLength) )
  5554. #define IMDSPObjectInfo_GetLastPlayPosition(This,pdwLastPos) \
  5555. ( (This)->lpVtbl -> GetLastPlayPosition(This,pdwLastPos) )
  5556. #define IMDSPObjectInfo_GetLongestPlayPosition(This,pdwLongestPos) \
  5557. ( (This)->lpVtbl -> GetLongestPlayPosition(This,pdwLongestPos) )
  5558. #endif /* COBJMACROS */
  5559. #endif /* C style interface */
  5560. #endif /* __IMDSPObjectInfo_INTERFACE_DEFINED__ */
  5561. #ifndef __IMDSPObject_INTERFACE_DEFINED__
  5562. #define __IMDSPObject_INTERFACE_DEFINED__
  5563. /* interface IMDSPObject */
  5564. /* [unique][uuid][object] */
  5565. EXTERN_C const IID IID_IMDSPObject;
  5566. #if defined(__cplusplus) && !defined(CINTERFACE)
  5567. MIDL_INTERFACE("1DCB3A18-33ED-11d3-8470-00C04F79DBC0")
  5568. IMDSPObject : public IUnknown
  5569. {
  5570. public:
  5571. virtual HRESULT STDMETHODCALLTYPE Open(
  5572. /* [in] */ UINT fuMode) = 0;
  5573. virtual HRESULT STDMETHODCALLTYPE Read(
  5574. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  5575. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  5576. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  5577. virtual HRESULT STDMETHODCALLTYPE Write(
  5578. /* [size_is][in] */ __RPC__in_ecount_full(*pdwSize) BYTE *pData,
  5579. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  5580. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  5581. virtual HRESULT STDMETHODCALLTYPE Delete(
  5582. /* [in] */ UINT fuMode,
  5583. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  5584. virtual HRESULT STDMETHODCALLTYPE Seek(
  5585. /* [in] */ UINT fuFlags,
  5586. /* [in] */ DWORD dwOffset) = 0;
  5587. virtual HRESULT STDMETHODCALLTYPE Rename(
  5588. /* [in] */ __RPC__in LPWSTR pwszNewName,
  5589. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress) = 0;
  5590. virtual HRESULT STDMETHODCALLTYPE Move(
  5591. /* [in] */ UINT fuMode,
  5592. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  5593. /* [in] */ __RPC__in_opt IMDSPStorage *pTarget) = 0;
  5594. virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
  5595. };
  5596. #else /* C style interface */
  5597. typedef struct IMDSPObjectVtbl
  5598. {
  5599. BEGIN_INTERFACE
  5600. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5601. IMDSPObject * This,
  5602. /* [in] */ __RPC__in REFIID riid,
  5603. /* [iid_is][out] */
  5604. __RPC__deref_out void **ppvObject);
  5605. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5606. IMDSPObject * This);
  5607. ULONG ( STDMETHODCALLTYPE *Release )(
  5608. IMDSPObject * This);
  5609. HRESULT ( STDMETHODCALLTYPE *Open )(
  5610. IMDSPObject * This,
  5611. /* [in] */ UINT fuMode);
  5612. HRESULT ( STDMETHODCALLTYPE *Read )(
  5613. IMDSPObject * This,
  5614. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  5615. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  5616. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5617. HRESULT ( STDMETHODCALLTYPE *Write )(
  5618. IMDSPObject * This,
  5619. /* [size_is][in] */ __RPC__in_ecount_full(*pdwSize) BYTE *pData,
  5620. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  5621. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5622. HRESULT ( STDMETHODCALLTYPE *Delete )(
  5623. IMDSPObject * This,
  5624. /* [in] */ UINT fuMode,
  5625. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  5626. HRESULT ( STDMETHODCALLTYPE *Seek )(
  5627. IMDSPObject * This,
  5628. /* [in] */ UINT fuFlags,
  5629. /* [in] */ DWORD dwOffset);
  5630. HRESULT ( STDMETHODCALLTYPE *Rename )(
  5631. IMDSPObject * This,
  5632. /* [in] */ __RPC__in LPWSTR pwszNewName,
  5633. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  5634. HRESULT ( STDMETHODCALLTYPE *Move )(
  5635. IMDSPObject * This,
  5636. /* [in] */ UINT fuMode,
  5637. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  5638. /* [in] */ __RPC__in_opt IMDSPStorage *pTarget);
  5639. HRESULT ( STDMETHODCALLTYPE *Close )(
  5640. IMDSPObject * This);
  5641. END_INTERFACE
  5642. } IMDSPObjectVtbl;
  5643. interface IMDSPObject
  5644. {
  5645. CONST_VTBL struct IMDSPObjectVtbl *lpVtbl;
  5646. };
  5647. #ifdef COBJMACROS
  5648. #define IMDSPObject_QueryInterface(This,riid,ppvObject) \
  5649. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5650. #define IMDSPObject_AddRef(This) \
  5651. ( (This)->lpVtbl -> AddRef(This) )
  5652. #define IMDSPObject_Release(This) \
  5653. ( (This)->lpVtbl -> Release(This) )
  5654. #define IMDSPObject_Open(This,fuMode) \
  5655. ( (This)->lpVtbl -> Open(This,fuMode) )
  5656. #define IMDSPObject_Read(This,pData,pdwSize,abMac) \
  5657. ( (This)->lpVtbl -> Read(This,pData,pdwSize,abMac) )
  5658. #define IMDSPObject_Write(This,pData,pdwSize,abMac) \
  5659. ( (This)->lpVtbl -> Write(This,pData,pdwSize,abMac) )
  5660. #define IMDSPObject_Delete(This,fuMode,pProgress) \
  5661. ( (This)->lpVtbl -> Delete(This,fuMode,pProgress) )
  5662. #define IMDSPObject_Seek(This,fuFlags,dwOffset) \
  5663. ( (This)->lpVtbl -> Seek(This,fuFlags,dwOffset) )
  5664. #define IMDSPObject_Rename(This,pwszNewName,pProgress) \
  5665. ( (This)->lpVtbl -> Rename(This,pwszNewName,pProgress) )
  5666. #define IMDSPObject_Move(This,fuMode,pProgress,pTarget) \
  5667. ( (This)->lpVtbl -> Move(This,fuMode,pProgress,pTarget) )
  5668. #define IMDSPObject_Close(This) \
  5669. ( (This)->lpVtbl -> Close(This) )
  5670. #endif /* COBJMACROS */
  5671. #endif /* C style interface */
  5672. #endif /* __IMDSPObject_INTERFACE_DEFINED__ */
  5673. #ifndef __IMDSPObject2_INTERFACE_DEFINED__
  5674. #define __IMDSPObject2_INTERFACE_DEFINED__
  5675. /* interface IMDSPObject2 */
  5676. /* [unique][uuid][object] */
  5677. EXTERN_C const IID IID_IMDSPObject2;
  5678. #if defined(__cplusplus) && !defined(CINTERFACE)
  5679. MIDL_INTERFACE("3f34cd3e-5907-4341-9af9-97f4187c3aa5")
  5680. IMDSPObject2 : public IMDSPObject
  5681. {
  5682. public:
  5683. virtual HRESULT STDMETHODCALLTYPE ReadOnClearChannel(
  5684. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  5685. /* [out][in] */ __RPC__inout DWORD *pdwSize) = 0;
  5686. virtual HRESULT STDMETHODCALLTYPE WriteOnClearChannel(
  5687. /* [size_is][in] */ __RPC__in_ecount_full(*pdwSize) BYTE *pData,
  5688. /* [out][in] */ __RPC__inout DWORD *pdwSize) = 0;
  5689. };
  5690. #else /* C style interface */
  5691. typedef struct IMDSPObject2Vtbl
  5692. {
  5693. BEGIN_INTERFACE
  5694. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5695. IMDSPObject2 * This,
  5696. /* [in] */ __RPC__in REFIID riid,
  5697. /* [iid_is][out] */
  5698. __RPC__deref_out void **ppvObject);
  5699. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5700. IMDSPObject2 * This);
  5701. ULONG ( STDMETHODCALLTYPE *Release )(
  5702. IMDSPObject2 * This);
  5703. HRESULT ( STDMETHODCALLTYPE *Open )(
  5704. IMDSPObject2 * This,
  5705. /* [in] */ UINT fuMode);
  5706. HRESULT ( STDMETHODCALLTYPE *Read )(
  5707. IMDSPObject2 * This,
  5708. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  5709. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  5710. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5711. HRESULT ( STDMETHODCALLTYPE *Write )(
  5712. IMDSPObject2 * This,
  5713. /* [size_is][in] */ __RPC__in_ecount_full(*pdwSize) BYTE *pData,
  5714. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  5715. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  5716. HRESULT ( STDMETHODCALLTYPE *Delete )(
  5717. IMDSPObject2 * This,
  5718. /* [in] */ UINT fuMode,
  5719. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  5720. HRESULT ( STDMETHODCALLTYPE *Seek )(
  5721. IMDSPObject2 * This,
  5722. /* [in] */ UINT fuFlags,
  5723. /* [in] */ DWORD dwOffset);
  5724. HRESULT ( STDMETHODCALLTYPE *Rename )(
  5725. IMDSPObject2 * This,
  5726. /* [in] */ __RPC__in LPWSTR pwszNewName,
  5727. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress);
  5728. HRESULT ( STDMETHODCALLTYPE *Move )(
  5729. IMDSPObject2 * This,
  5730. /* [in] */ UINT fuMode,
  5731. /* [in] */ __RPC__in_opt IWMDMProgress *pProgress,
  5732. /* [in] */ __RPC__in_opt IMDSPStorage *pTarget);
  5733. HRESULT ( STDMETHODCALLTYPE *Close )(
  5734. IMDSPObject2 * This);
  5735. HRESULT ( STDMETHODCALLTYPE *ReadOnClearChannel )(
  5736. IMDSPObject2 * This,
  5737. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  5738. /* [out][in] */ __RPC__inout DWORD *pdwSize);
  5739. HRESULT ( STDMETHODCALLTYPE *WriteOnClearChannel )(
  5740. IMDSPObject2 * This,
  5741. /* [size_is][in] */ __RPC__in_ecount_full(*pdwSize) BYTE *pData,
  5742. /* [out][in] */ __RPC__inout DWORD *pdwSize);
  5743. END_INTERFACE
  5744. } IMDSPObject2Vtbl;
  5745. interface IMDSPObject2
  5746. {
  5747. CONST_VTBL struct IMDSPObject2Vtbl *lpVtbl;
  5748. };
  5749. #ifdef COBJMACROS
  5750. #define IMDSPObject2_QueryInterface(This,riid,ppvObject) \
  5751. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5752. #define IMDSPObject2_AddRef(This) \
  5753. ( (This)->lpVtbl -> AddRef(This) )
  5754. #define IMDSPObject2_Release(This) \
  5755. ( (This)->lpVtbl -> Release(This) )
  5756. #define IMDSPObject2_Open(This,fuMode) \
  5757. ( (This)->lpVtbl -> Open(This,fuMode) )
  5758. #define IMDSPObject2_Read(This,pData,pdwSize,abMac) \
  5759. ( (This)->lpVtbl -> Read(This,pData,pdwSize,abMac) )
  5760. #define IMDSPObject2_Write(This,pData,pdwSize,abMac) \
  5761. ( (This)->lpVtbl -> Write(This,pData,pdwSize,abMac) )
  5762. #define IMDSPObject2_Delete(This,fuMode,pProgress) \
  5763. ( (This)->lpVtbl -> Delete(This,fuMode,pProgress) )
  5764. #define IMDSPObject2_Seek(This,fuFlags,dwOffset) \
  5765. ( (This)->lpVtbl -> Seek(This,fuFlags,dwOffset) )
  5766. #define IMDSPObject2_Rename(This,pwszNewName,pProgress) \
  5767. ( (This)->lpVtbl -> Rename(This,pwszNewName,pProgress) )
  5768. #define IMDSPObject2_Move(This,fuMode,pProgress,pTarget) \
  5769. ( (This)->lpVtbl -> Move(This,fuMode,pProgress,pTarget) )
  5770. #define IMDSPObject2_Close(This) \
  5771. ( (This)->lpVtbl -> Close(This) )
  5772. #define IMDSPObject2_ReadOnClearChannel(This,pData,pdwSize) \
  5773. ( (This)->lpVtbl -> ReadOnClearChannel(This,pData,pdwSize) )
  5774. #define IMDSPObject2_WriteOnClearChannel(This,pData,pdwSize) \
  5775. ( (This)->lpVtbl -> WriteOnClearChannel(This,pData,pdwSize) )
  5776. #endif /* COBJMACROS */
  5777. #endif /* C style interface */
  5778. #endif /* __IMDSPObject2_INTERFACE_DEFINED__ */
  5779. #ifndef __IMDSPDirectTransfer_INTERFACE_DEFINED__
  5780. #define __IMDSPDirectTransfer_INTERFACE_DEFINED__
  5781. /* interface IMDSPDirectTransfer */
  5782. /* [unique][uuid][object] */
  5783. EXTERN_C const IID IID_IMDSPDirectTransfer;
  5784. #if defined(__cplusplus) && !defined(CINTERFACE)
  5785. MIDL_INTERFACE("c2fe57a8-9304-478c-9ee4-47e397b912d7")
  5786. IMDSPDirectTransfer : public IUnknown
  5787. {
  5788. public:
  5789. virtual HRESULT STDMETHODCALLTYPE TransferToDevice(
  5790. /* [string][unique][in] */ __RPC__in_opt LPCWSTR pwszSourceFilePath,
  5791. /* [in] */ __RPC__in_opt IWMDMOperation *pSourceOperation,
  5792. /* [in] */ UINT fuFlags,
  5793. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszDestinationName,
  5794. /* [in] */ __RPC__in_opt IWMDMMetaData *pSourceMetaData,
  5795. /* [in] */ __RPC__in_opt IWMDMProgress *pTransferProgress,
  5796. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewObject) = 0;
  5797. };
  5798. #else /* C style interface */
  5799. typedef struct IMDSPDirectTransferVtbl
  5800. {
  5801. BEGIN_INTERFACE
  5802. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5803. IMDSPDirectTransfer * This,
  5804. /* [in] */ __RPC__in REFIID riid,
  5805. /* [iid_is][out] */
  5806. __RPC__deref_out void **ppvObject);
  5807. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5808. IMDSPDirectTransfer * This);
  5809. ULONG ( STDMETHODCALLTYPE *Release )(
  5810. IMDSPDirectTransfer * This);
  5811. HRESULT ( STDMETHODCALLTYPE *TransferToDevice )(
  5812. IMDSPDirectTransfer * This,
  5813. /* [string][unique][in] */ __RPC__in_opt LPCWSTR pwszSourceFilePath,
  5814. /* [in] */ __RPC__in_opt IWMDMOperation *pSourceOperation,
  5815. /* [in] */ UINT fuFlags,
  5816. /* [string][unique][in] */ __RPC__in_opt LPWSTR pwszDestinationName,
  5817. /* [in] */ __RPC__in_opt IWMDMMetaData *pSourceMetaData,
  5818. /* [in] */ __RPC__in_opt IWMDMProgress *pTransferProgress,
  5819. /* [out] */ __RPC__deref_out_opt IMDSPStorage **ppNewObject);
  5820. END_INTERFACE
  5821. } IMDSPDirectTransferVtbl;
  5822. interface IMDSPDirectTransfer
  5823. {
  5824. CONST_VTBL struct IMDSPDirectTransferVtbl *lpVtbl;
  5825. };
  5826. #ifdef COBJMACROS
  5827. #define IMDSPDirectTransfer_QueryInterface(This,riid,ppvObject) \
  5828. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5829. #define IMDSPDirectTransfer_AddRef(This) \
  5830. ( (This)->lpVtbl -> AddRef(This) )
  5831. #define IMDSPDirectTransfer_Release(This) \
  5832. ( (This)->lpVtbl -> Release(This) )
  5833. #define IMDSPDirectTransfer_TransferToDevice(This,pwszSourceFilePath,pSourceOperation,fuFlags,pwszDestinationName,pSourceMetaData,pTransferProgress,ppNewObject) \
  5834. ( (This)->lpVtbl -> TransferToDevice(This,pwszSourceFilePath,pSourceOperation,fuFlags,pwszDestinationName,pSourceMetaData,pTransferProgress,ppNewObject) )
  5835. #endif /* COBJMACROS */
  5836. #endif /* C style interface */
  5837. #endif /* __IMDSPDirectTransfer_INTERFACE_DEFINED__ */
  5838. #ifndef __IMDSPRevoked_INTERFACE_DEFINED__
  5839. #define __IMDSPRevoked_INTERFACE_DEFINED__
  5840. /* interface IMDSPRevoked */
  5841. /* [unique][uuid][object] */
  5842. EXTERN_C const IID IID_IMDSPRevoked;
  5843. #if defined(__cplusplus) && !defined(CINTERFACE)
  5844. MIDL_INTERFACE("A4E8F2D4-3F31-464d-B53D-4FC335998184")
  5845. IMDSPRevoked : public IUnknown
  5846. {
  5847. public:
  5848. virtual HRESULT STDMETHODCALLTYPE GetRevocationURL(
  5849. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwBufferLen) LPWSTR *ppwszRevocationURL,
  5850. /* [out][in] */ __RPC__inout DWORD *pdwBufferLen) = 0;
  5851. };
  5852. #else /* C style interface */
  5853. typedef struct IMDSPRevokedVtbl
  5854. {
  5855. BEGIN_INTERFACE
  5856. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5857. IMDSPRevoked * This,
  5858. /* [in] */ __RPC__in REFIID riid,
  5859. /* [iid_is][out] */
  5860. __RPC__deref_out void **ppvObject);
  5861. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5862. IMDSPRevoked * This);
  5863. ULONG ( STDMETHODCALLTYPE *Release )(
  5864. IMDSPRevoked * This);
  5865. HRESULT ( STDMETHODCALLTYPE *GetRevocationURL )(
  5866. IMDSPRevoked * This,
  5867. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwBufferLen) LPWSTR *ppwszRevocationURL,
  5868. /* [out][in] */ __RPC__inout DWORD *pdwBufferLen);
  5869. END_INTERFACE
  5870. } IMDSPRevokedVtbl;
  5871. interface IMDSPRevoked
  5872. {
  5873. CONST_VTBL struct IMDSPRevokedVtbl *lpVtbl;
  5874. };
  5875. #ifdef COBJMACROS
  5876. #define IMDSPRevoked_QueryInterface(This,riid,ppvObject) \
  5877. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5878. #define IMDSPRevoked_AddRef(This) \
  5879. ( (This)->lpVtbl -> AddRef(This) )
  5880. #define IMDSPRevoked_Release(This) \
  5881. ( (This)->lpVtbl -> Release(This) )
  5882. #define IMDSPRevoked_GetRevocationURL(This,ppwszRevocationURL,pdwBufferLen) \
  5883. ( (This)->lpVtbl -> GetRevocationURL(This,ppwszRevocationURL,pdwBufferLen) )
  5884. #endif /* COBJMACROS */
  5885. #endif /* C style interface */
  5886. #endif /* __IMDSPRevoked_INTERFACE_DEFINED__ */
  5887. /* interface __MIDL_itf_mswmdm_0000_0047 */
  5888. /* [local] */
  5889. // SCP Data Flags
  5890. #define WMDM_SCP_EXAMINE_EXTENSION 0x00000001L
  5891. #define WMDM_SCP_EXAMINE_DATA 0x00000002L
  5892. #define WMDM_SCP_DECIDE_DATA 0x00000008L
  5893. #define WMDM_SCP_PROTECTED_OUTPUT 0x00000010L
  5894. #define WMDM_SCP_UNPROTECTED_OUTPUT 0x00000020L
  5895. #define WMDM_SCP_RIGHTS_DATA 0x00000040L
  5896. // SCP Transfer Flags
  5897. #define WMDM_SCP_TRANSFER_OBJECTDATA 0x00000020L
  5898. #define WMDM_SCP_NO_MORE_CHANGES 0x00000040L
  5899. // SCP DRMINFO Flags
  5900. #define WMDM_SCP_DRMINFO_NOT_DRMPROTECTED 0x00000000L
  5901. #define WMDM_SCP_DRMINFO_V1HEADER 0x00000001L
  5902. #define WMDM_SCP_DRMINFO_V2HEADER 0x00000002L
  5903. #ifndef _DEFINE_SCP_EVENTID
  5904. #define _DEFINE_SCP_EVENTID
  5905. // {86248CC9-4A59-43e2-9146-48A7F3F4140C}
  5906. // this event ID is used when SCP is acquiring secure clock from server
  5907. DEFINE_GUID(SCP_EVENTID_ACQSECURECLOCK,
  5908. 0x86248cc9, 0x4a59, 0x43e2, 0x91, 0x46, 0x48, 0xa7, 0xf3, 0xf4, 0x14, 0xc);
  5909. //
  5910. // {87A507C7-B469-4386-B976-D5D1CE538A6F}
  5911. DEFINE_GUID(SCP_EVENTID_NEEDTOINDIV,
  5912. 0x87a507c7, 0xb469, 0x4386, 0xb9, 0x76, 0xd5, 0xd1, 0xce, 0x53, 0x8a, 0x6f);
  5913. // this event ID is used to notify the player the version DRM header found in the content
  5914. // {213DD287-41D2-432b-9E3F-3B4F7B3581DD}
  5915. DEFINE_GUID(SCP_EVENTID_DRMINFO,
  5916. 0x213dd287, 0x41d2, 0x432b, 0x9e, 0x3f, 0x3b, 0x4f, 0x7b, 0x35, 0x81, 0xdd);
  5917. // this parameter ID is used when notifying SCP_EVENTID_DRMINFO message
  5918. // {41D0155D-7CC7-4217-ADA9-005074624DA4}
  5919. DEFINE_GUID(SCP_PARAMID_DRMVERSION,
  5920. 0x41d0155d, 0x7cc7, 0x4217, 0xad, 0xa9, 0x00, 0x50, 0x74, 0x62, 0x4d, 0xa4);
  5921. #endif
  5922. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0047_v0_0_c_ifspec;
  5923. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0047_v0_0_s_ifspec;
  5924. #ifndef __ISCPSecureAuthenticate_INTERFACE_DEFINED__
  5925. #define __ISCPSecureAuthenticate_INTERFACE_DEFINED__
  5926. /* interface ISCPSecureAuthenticate */
  5927. /* [unique][uuid][object] */
  5928. EXTERN_C const IID IID_ISCPSecureAuthenticate;
  5929. #if defined(__cplusplus) && !defined(CINTERFACE)
  5930. MIDL_INTERFACE("1DCB3A0F-33ED-11d3-8470-00C04F79DBC0")
  5931. ISCPSecureAuthenticate : public IUnknown
  5932. {
  5933. public:
  5934. virtual HRESULT STDMETHODCALLTYPE GetSecureQuery(
  5935. /* [out] */ __RPC__deref_out_opt ISCPSecureQuery **ppSecureQuery) = 0;
  5936. };
  5937. #else /* C style interface */
  5938. typedef struct ISCPSecureAuthenticateVtbl
  5939. {
  5940. BEGIN_INTERFACE
  5941. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5942. ISCPSecureAuthenticate * This,
  5943. /* [in] */ __RPC__in REFIID riid,
  5944. /* [iid_is][out] */
  5945. __RPC__deref_out void **ppvObject);
  5946. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5947. ISCPSecureAuthenticate * This);
  5948. ULONG ( STDMETHODCALLTYPE *Release )(
  5949. ISCPSecureAuthenticate * This);
  5950. HRESULT ( STDMETHODCALLTYPE *GetSecureQuery )(
  5951. ISCPSecureAuthenticate * This,
  5952. /* [out] */ __RPC__deref_out_opt ISCPSecureQuery **ppSecureQuery);
  5953. END_INTERFACE
  5954. } ISCPSecureAuthenticateVtbl;
  5955. interface ISCPSecureAuthenticate
  5956. {
  5957. CONST_VTBL struct ISCPSecureAuthenticateVtbl *lpVtbl;
  5958. };
  5959. #ifdef COBJMACROS
  5960. #define ISCPSecureAuthenticate_QueryInterface(This,riid,ppvObject) \
  5961. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5962. #define ISCPSecureAuthenticate_AddRef(This) \
  5963. ( (This)->lpVtbl -> AddRef(This) )
  5964. #define ISCPSecureAuthenticate_Release(This) \
  5965. ( (This)->lpVtbl -> Release(This) )
  5966. #define ISCPSecureAuthenticate_GetSecureQuery(This,ppSecureQuery) \
  5967. ( (This)->lpVtbl -> GetSecureQuery(This,ppSecureQuery) )
  5968. #endif /* COBJMACROS */
  5969. #endif /* C style interface */
  5970. #endif /* __ISCPSecureAuthenticate_INTERFACE_DEFINED__ */
  5971. #ifndef __ISCPSecureAuthenticate2_INTERFACE_DEFINED__
  5972. #define __ISCPSecureAuthenticate2_INTERFACE_DEFINED__
  5973. /* interface ISCPSecureAuthenticate2 */
  5974. /* [unique][uuid][object] */
  5975. EXTERN_C const IID IID_ISCPSecureAuthenticate2;
  5976. #if defined(__cplusplus) && !defined(CINTERFACE)
  5977. MIDL_INTERFACE("B580CFAE-1672-47e2-ACAA-44BBECBCAE5B")
  5978. ISCPSecureAuthenticate2 : public ISCPSecureAuthenticate
  5979. {
  5980. public:
  5981. virtual HRESULT STDMETHODCALLTYPE GetSCPSession(
  5982. /* [out] */ __RPC__deref_out_opt ISCPSession **ppSCPSession) = 0;
  5983. };
  5984. #else /* C style interface */
  5985. typedef struct ISCPSecureAuthenticate2Vtbl
  5986. {
  5987. BEGIN_INTERFACE
  5988. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5989. ISCPSecureAuthenticate2 * This,
  5990. /* [in] */ __RPC__in REFIID riid,
  5991. /* [iid_is][out] */
  5992. __RPC__deref_out void **ppvObject);
  5993. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5994. ISCPSecureAuthenticate2 * This);
  5995. ULONG ( STDMETHODCALLTYPE *Release )(
  5996. ISCPSecureAuthenticate2 * This);
  5997. HRESULT ( STDMETHODCALLTYPE *GetSecureQuery )(
  5998. ISCPSecureAuthenticate2 * This,
  5999. /* [out] */ __RPC__deref_out_opt ISCPSecureQuery **ppSecureQuery);
  6000. HRESULT ( STDMETHODCALLTYPE *GetSCPSession )(
  6001. ISCPSecureAuthenticate2 * This,
  6002. /* [out] */ __RPC__deref_out_opt ISCPSession **ppSCPSession);
  6003. END_INTERFACE
  6004. } ISCPSecureAuthenticate2Vtbl;
  6005. interface ISCPSecureAuthenticate2
  6006. {
  6007. CONST_VTBL struct ISCPSecureAuthenticate2Vtbl *lpVtbl;
  6008. };
  6009. #ifdef COBJMACROS
  6010. #define ISCPSecureAuthenticate2_QueryInterface(This,riid,ppvObject) \
  6011. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6012. #define ISCPSecureAuthenticate2_AddRef(This) \
  6013. ( (This)->lpVtbl -> AddRef(This) )
  6014. #define ISCPSecureAuthenticate2_Release(This) \
  6015. ( (This)->lpVtbl -> Release(This) )
  6016. #define ISCPSecureAuthenticate2_GetSecureQuery(This,ppSecureQuery) \
  6017. ( (This)->lpVtbl -> GetSecureQuery(This,ppSecureQuery) )
  6018. #define ISCPSecureAuthenticate2_GetSCPSession(This,ppSCPSession) \
  6019. ( (This)->lpVtbl -> GetSCPSession(This,ppSCPSession) )
  6020. #endif /* COBJMACROS */
  6021. #endif /* C style interface */
  6022. #endif /* __ISCPSecureAuthenticate2_INTERFACE_DEFINED__ */
  6023. #ifndef __ISCPSecureQuery_INTERFACE_DEFINED__
  6024. #define __ISCPSecureQuery_INTERFACE_DEFINED__
  6025. /* interface ISCPSecureQuery */
  6026. /* [unique][uuid][object] */
  6027. EXTERN_C const IID IID_ISCPSecureQuery;
  6028. #if defined(__cplusplus) && !defined(CINTERFACE)
  6029. MIDL_INTERFACE("1DCB3A0D-33ED-11d3-8470-00C04F79DBC0")
  6030. ISCPSecureQuery : public IUnknown
  6031. {
  6032. public:
  6033. virtual HRESULT STDMETHODCALLTYPE GetDataDemands(
  6034. /* [out] */ __RPC__out UINT *pfuFlags,
  6035. /* [out] */ __RPC__out DWORD *pdwMinRightsData,
  6036. /* [out] */ __RPC__out DWORD *pdwMinExamineData,
  6037. /* [out] */ __RPC__out DWORD *pdwMinDecideData,
  6038. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6039. virtual HRESULT STDMETHODCALLTYPE ExamineData(
  6040. /* [in] */ UINT fuFlags,
  6041. /* [unique][string][in] */ __RPC__in_opt LPWSTR pwszExtension,
  6042. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6043. /* [in] */ DWORD dwSize,
  6044. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6045. virtual HRESULT STDMETHODCALLTYPE MakeDecision(
  6046. /* [in] */ UINT fuFlags,
  6047. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6048. /* [in] */ DWORD dwSize,
  6049. /* [in] */ DWORD dwAppSec,
  6050. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6051. /* [in] */ DWORD dwSessionKeyLen,
  6052. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6053. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6054. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6055. virtual HRESULT STDMETHODCALLTYPE GetRights(
  6056. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6057. /* [in] */ DWORD dwSize,
  6058. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6059. /* [in] */ DWORD dwSessionKeyLen,
  6060. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStgGlobals,
  6061. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  6062. /* [out] */ __RPC__out UINT *pnRightsCount,
  6063. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6064. };
  6065. #else /* C style interface */
  6066. typedef struct ISCPSecureQueryVtbl
  6067. {
  6068. BEGIN_INTERFACE
  6069. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6070. ISCPSecureQuery * This,
  6071. /* [in] */ __RPC__in REFIID riid,
  6072. /* [iid_is][out] */
  6073. __RPC__deref_out void **ppvObject);
  6074. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6075. ISCPSecureQuery * This);
  6076. ULONG ( STDMETHODCALLTYPE *Release )(
  6077. ISCPSecureQuery * This);
  6078. HRESULT ( STDMETHODCALLTYPE *GetDataDemands )(
  6079. ISCPSecureQuery * This,
  6080. /* [out] */ __RPC__out UINT *pfuFlags,
  6081. /* [out] */ __RPC__out DWORD *pdwMinRightsData,
  6082. /* [out] */ __RPC__out DWORD *pdwMinExamineData,
  6083. /* [out] */ __RPC__out DWORD *pdwMinDecideData,
  6084. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6085. HRESULT ( STDMETHODCALLTYPE *ExamineData )(
  6086. ISCPSecureQuery * This,
  6087. /* [in] */ UINT fuFlags,
  6088. /* [unique][string][in] */ __RPC__in_opt LPWSTR pwszExtension,
  6089. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6090. /* [in] */ DWORD dwSize,
  6091. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6092. HRESULT ( STDMETHODCALLTYPE *MakeDecision )(
  6093. ISCPSecureQuery * This,
  6094. /* [in] */ UINT fuFlags,
  6095. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6096. /* [in] */ DWORD dwSize,
  6097. /* [in] */ DWORD dwAppSec,
  6098. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6099. /* [in] */ DWORD dwSessionKeyLen,
  6100. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6101. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6102. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6103. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  6104. ISCPSecureQuery * This,
  6105. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6106. /* [in] */ DWORD dwSize,
  6107. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6108. /* [in] */ DWORD dwSessionKeyLen,
  6109. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStgGlobals,
  6110. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  6111. /* [out] */ __RPC__out UINT *pnRightsCount,
  6112. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6113. END_INTERFACE
  6114. } ISCPSecureQueryVtbl;
  6115. interface ISCPSecureQuery
  6116. {
  6117. CONST_VTBL struct ISCPSecureQueryVtbl *lpVtbl;
  6118. };
  6119. #ifdef COBJMACROS
  6120. #define ISCPSecureQuery_QueryInterface(This,riid,ppvObject) \
  6121. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6122. #define ISCPSecureQuery_AddRef(This) \
  6123. ( (This)->lpVtbl -> AddRef(This) )
  6124. #define ISCPSecureQuery_Release(This) \
  6125. ( (This)->lpVtbl -> Release(This) )
  6126. #define ISCPSecureQuery_GetDataDemands(This,pfuFlags,pdwMinRightsData,pdwMinExamineData,pdwMinDecideData,abMac) \
  6127. ( (This)->lpVtbl -> GetDataDemands(This,pfuFlags,pdwMinRightsData,pdwMinExamineData,pdwMinDecideData,abMac) )
  6128. #define ISCPSecureQuery_ExamineData(This,fuFlags,pwszExtension,pData,dwSize,abMac) \
  6129. ( (This)->lpVtbl -> ExamineData(This,fuFlags,pwszExtension,pData,dwSize,abMac) )
  6130. #define ISCPSecureQuery_MakeDecision(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,ppExchange,abMac) \
  6131. ( (This)->lpVtbl -> MakeDecision(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,ppExchange,abMac) )
  6132. #define ISCPSecureQuery_GetRights(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,ppRights,pnRightsCount,abMac) \
  6133. ( (This)->lpVtbl -> GetRights(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,ppRights,pnRightsCount,abMac) )
  6134. #endif /* COBJMACROS */
  6135. #endif /* C style interface */
  6136. #endif /* __ISCPSecureQuery_INTERFACE_DEFINED__ */
  6137. #ifndef __ISCPSecureQuery2_INTERFACE_DEFINED__
  6138. #define __ISCPSecureQuery2_INTERFACE_DEFINED__
  6139. /* interface ISCPSecureQuery2 */
  6140. /* [unique][uuid][object] */
  6141. EXTERN_C const IID IID_ISCPSecureQuery2;
  6142. #if defined(__cplusplus) && !defined(CINTERFACE)
  6143. MIDL_INTERFACE("EBE17E25-4FD7-4632-AF46-6D93D4FCC72E")
  6144. ISCPSecureQuery2 : public ISCPSecureQuery
  6145. {
  6146. public:
  6147. virtual HRESULT STDMETHODCALLTYPE MakeDecision2(
  6148. /* [in] */ UINT fuFlags,
  6149. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6150. /* [in] */ DWORD dwSize,
  6151. /* [in] */ DWORD dwAppSec,
  6152. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6153. /* [in] */ DWORD dwSessionKeyLen,
  6154. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6155. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertAppLen) BYTE *pAppCertApp,
  6156. /* [in] */ DWORD dwAppCertAppLen,
  6157. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertSPLen) BYTE *pAppCertSP,
  6158. /* [in] */ DWORD dwAppCertSPLen,
  6159. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwRevocationURLLen) LPWSTR *pszRevocationURL,
  6160. /* [ref][out][in] */ __RPC__inout DWORD *pdwRevocationURLLen,
  6161. /* [out] */ __RPC__out DWORD *pdwRevocationBitFlag,
  6162. /* [unique][out][in] */ __RPC__inout_opt ULONGLONG *pqwFileSize,
  6163. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  6164. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6165. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6166. };
  6167. #else /* C style interface */
  6168. typedef struct ISCPSecureQuery2Vtbl
  6169. {
  6170. BEGIN_INTERFACE
  6171. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6172. ISCPSecureQuery2 * This,
  6173. /* [in] */ __RPC__in REFIID riid,
  6174. /* [iid_is][out] */
  6175. __RPC__deref_out void **ppvObject);
  6176. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6177. ISCPSecureQuery2 * This);
  6178. ULONG ( STDMETHODCALLTYPE *Release )(
  6179. ISCPSecureQuery2 * This);
  6180. HRESULT ( STDMETHODCALLTYPE *GetDataDemands )(
  6181. ISCPSecureQuery2 * This,
  6182. /* [out] */ __RPC__out UINT *pfuFlags,
  6183. /* [out] */ __RPC__out DWORD *pdwMinRightsData,
  6184. /* [out] */ __RPC__out DWORD *pdwMinExamineData,
  6185. /* [out] */ __RPC__out DWORD *pdwMinDecideData,
  6186. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6187. HRESULT ( STDMETHODCALLTYPE *ExamineData )(
  6188. ISCPSecureQuery2 * This,
  6189. /* [in] */ UINT fuFlags,
  6190. /* [unique][string][in] */ __RPC__in_opt LPWSTR pwszExtension,
  6191. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6192. /* [in] */ DWORD dwSize,
  6193. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6194. HRESULT ( STDMETHODCALLTYPE *MakeDecision )(
  6195. ISCPSecureQuery2 * This,
  6196. /* [in] */ UINT fuFlags,
  6197. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6198. /* [in] */ DWORD dwSize,
  6199. /* [in] */ DWORD dwAppSec,
  6200. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6201. /* [in] */ DWORD dwSessionKeyLen,
  6202. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6203. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6204. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6205. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  6206. ISCPSecureQuery2 * This,
  6207. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6208. /* [in] */ DWORD dwSize,
  6209. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6210. /* [in] */ DWORD dwSessionKeyLen,
  6211. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStgGlobals,
  6212. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  6213. /* [out] */ __RPC__out UINT *pnRightsCount,
  6214. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6215. HRESULT ( STDMETHODCALLTYPE *MakeDecision2 )(
  6216. ISCPSecureQuery2 * This,
  6217. /* [in] */ UINT fuFlags,
  6218. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6219. /* [in] */ DWORD dwSize,
  6220. /* [in] */ DWORD dwAppSec,
  6221. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6222. /* [in] */ DWORD dwSessionKeyLen,
  6223. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6224. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertAppLen) BYTE *pAppCertApp,
  6225. /* [in] */ DWORD dwAppCertAppLen,
  6226. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertSPLen) BYTE *pAppCertSP,
  6227. /* [in] */ DWORD dwAppCertSPLen,
  6228. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwRevocationURLLen) LPWSTR *pszRevocationURL,
  6229. /* [ref][out][in] */ __RPC__inout DWORD *pdwRevocationURLLen,
  6230. /* [out] */ __RPC__out DWORD *pdwRevocationBitFlag,
  6231. /* [unique][out][in] */ __RPC__inout_opt ULONGLONG *pqwFileSize,
  6232. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  6233. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6234. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6235. END_INTERFACE
  6236. } ISCPSecureQuery2Vtbl;
  6237. interface ISCPSecureQuery2
  6238. {
  6239. CONST_VTBL struct ISCPSecureQuery2Vtbl *lpVtbl;
  6240. };
  6241. #ifdef COBJMACROS
  6242. #define ISCPSecureQuery2_QueryInterface(This,riid,ppvObject) \
  6243. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6244. #define ISCPSecureQuery2_AddRef(This) \
  6245. ( (This)->lpVtbl -> AddRef(This) )
  6246. #define ISCPSecureQuery2_Release(This) \
  6247. ( (This)->lpVtbl -> Release(This) )
  6248. #define ISCPSecureQuery2_GetDataDemands(This,pfuFlags,pdwMinRightsData,pdwMinExamineData,pdwMinDecideData,abMac) \
  6249. ( (This)->lpVtbl -> GetDataDemands(This,pfuFlags,pdwMinRightsData,pdwMinExamineData,pdwMinDecideData,abMac) )
  6250. #define ISCPSecureQuery2_ExamineData(This,fuFlags,pwszExtension,pData,dwSize,abMac) \
  6251. ( (This)->lpVtbl -> ExamineData(This,fuFlags,pwszExtension,pData,dwSize,abMac) )
  6252. #define ISCPSecureQuery2_MakeDecision(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,ppExchange,abMac) \
  6253. ( (This)->lpVtbl -> MakeDecision(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,ppExchange,abMac) )
  6254. #define ISCPSecureQuery2_GetRights(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,ppRights,pnRightsCount,abMac) \
  6255. ( (This)->lpVtbl -> GetRights(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,ppRights,pnRightsCount,abMac) )
  6256. #define ISCPSecureQuery2_MakeDecision2(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,pAppCertApp,dwAppCertAppLen,pAppCertSP,dwAppCertSPLen,pszRevocationURL,pdwRevocationURLLen,pdwRevocationBitFlag,pqwFileSize,pUnknown,ppExchange,abMac) \
  6257. ( (This)->lpVtbl -> MakeDecision2(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,pAppCertApp,dwAppCertAppLen,pAppCertSP,dwAppCertSPLen,pszRevocationURL,pdwRevocationURLLen,pdwRevocationBitFlag,pqwFileSize,pUnknown,ppExchange,abMac) )
  6258. #endif /* COBJMACROS */
  6259. #endif /* C style interface */
  6260. #endif /* __ISCPSecureQuery2_INTERFACE_DEFINED__ */
  6261. #ifndef __ISCPSecureExchange_INTERFACE_DEFINED__
  6262. #define __ISCPSecureExchange_INTERFACE_DEFINED__
  6263. /* interface ISCPSecureExchange */
  6264. /* [unique][uuid][object] */
  6265. EXTERN_C const IID IID_ISCPSecureExchange;
  6266. #if defined(__cplusplus) && !defined(CINTERFACE)
  6267. MIDL_INTERFACE("1DCB3A0E-33ED-11d3-8470-00C04F79DBC0")
  6268. ISCPSecureExchange : public IUnknown
  6269. {
  6270. public:
  6271. virtual HRESULT STDMETHODCALLTYPE TransferContainerData(
  6272. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6273. /* [in] */ DWORD dwSize,
  6274. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6275. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6276. virtual HRESULT STDMETHODCALLTYPE ObjectData(
  6277. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  6278. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  6279. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6280. virtual HRESULT STDMETHODCALLTYPE TransferComplete( void) = 0;
  6281. };
  6282. #else /* C style interface */
  6283. typedef struct ISCPSecureExchangeVtbl
  6284. {
  6285. BEGIN_INTERFACE
  6286. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6287. ISCPSecureExchange * This,
  6288. /* [in] */ __RPC__in REFIID riid,
  6289. /* [iid_is][out] */
  6290. __RPC__deref_out void **ppvObject);
  6291. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6292. ISCPSecureExchange * This);
  6293. ULONG ( STDMETHODCALLTYPE *Release )(
  6294. ISCPSecureExchange * This);
  6295. HRESULT ( STDMETHODCALLTYPE *TransferContainerData )(
  6296. ISCPSecureExchange * This,
  6297. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6298. /* [in] */ DWORD dwSize,
  6299. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6300. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6301. HRESULT ( STDMETHODCALLTYPE *ObjectData )(
  6302. ISCPSecureExchange * This,
  6303. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  6304. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  6305. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6306. HRESULT ( STDMETHODCALLTYPE *TransferComplete )(
  6307. ISCPSecureExchange * This);
  6308. END_INTERFACE
  6309. } ISCPSecureExchangeVtbl;
  6310. interface ISCPSecureExchange
  6311. {
  6312. CONST_VTBL struct ISCPSecureExchangeVtbl *lpVtbl;
  6313. };
  6314. #ifdef COBJMACROS
  6315. #define ISCPSecureExchange_QueryInterface(This,riid,ppvObject) \
  6316. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6317. #define ISCPSecureExchange_AddRef(This) \
  6318. ( (This)->lpVtbl -> AddRef(This) )
  6319. #define ISCPSecureExchange_Release(This) \
  6320. ( (This)->lpVtbl -> Release(This) )
  6321. #define ISCPSecureExchange_TransferContainerData(This,pData,dwSize,pfuReadyFlags,abMac) \
  6322. ( (This)->lpVtbl -> TransferContainerData(This,pData,dwSize,pfuReadyFlags,abMac) )
  6323. #define ISCPSecureExchange_ObjectData(This,pData,pdwSize,abMac) \
  6324. ( (This)->lpVtbl -> ObjectData(This,pData,pdwSize,abMac) )
  6325. #define ISCPSecureExchange_TransferComplete(This) \
  6326. ( (This)->lpVtbl -> TransferComplete(This) )
  6327. #endif /* COBJMACROS */
  6328. #endif /* C style interface */
  6329. #endif /* __ISCPSecureExchange_INTERFACE_DEFINED__ */
  6330. #ifndef __ISCPSecureExchange2_INTERFACE_DEFINED__
  6331. #define __ISCPSecureExchange2_INTERFACE_DEFINED__
  6332. /* interface ISCPSecureExchange2 */
  6333. /* [unique][uuid][object] */
  6334. EXTERN_C const IID IID_ISCPSecureExchange2;
  6335. #if defined(__cplusplus) && !defined(CINTERFACE)
  6336. MIDL_INTERFACE("6C62FC7B-2690-483F-9D44-0A20CB35577C")
  6337. ISCPSecureExchange2 : public ISCPSecureExchange
  6338. {
  6339. public:
  6340. virtual HRESULT STDMETHODCALLTYPE TransferContainerData2(
  6341. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6342. /* [in] */ DWORD dwSize,
  6343. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6344. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6345. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]) = 0;
  6346. };
  6347. #else /* C style interface */
  6348. typedef struct ISCPSecureExchange2Vtbl
  6349. {
  6350. BEGIN_INTERFACE
  6351. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6352. ISCPSecureExchange2 * This,
  6353. /* [in] */ __RPC__in REFIID riid,
  6354. /* [iid_is][out] */
  6355. __RPC__deref_out void **ppvObject);
  6356. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6357. ISCPSecureExchange2 * This);
  6358. ULONG ( STDMETHODCALLTYPE *Release )(
  6359. ISCPSecureExchange2 * This);
  6360. HRESULT ( STDMETHODCALLTYPE *TransferContainerData )(
  6361. ISCPSecureExchange2 * This,
  6362. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6363. /* [in] */ DWORD dwSize,
  6364. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6365. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6366. HRESULT ( STDMETHODCALLTYPE *ObjectData )(
  6367. ISCPSecureExchange2 * This,
  6368. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  6369. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  6370. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6371. HRESULT ( STDMETHODCALLTYPE *TransferComplete )(
  6372. ISCPSecureExchange2 * This);
  6373. HRESULT ( STDMETHODCALLTYPE *TransferContainerData2 )(
  6374. ISCPSecureExchange2 * This,
  6375. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6376. /* [in] */ DWORD dwSize,
  6377. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6378. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6379. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6380. END_INTERFACE
  6381. } ISCPSecureExchange2Vtbl;
  6382. interface ISCPSecureExchange2
  6383. {
  6384. CONST_VTBL struct ISCPSecureExchange2Vtbl *lpVtbl;
  6385. };
  6386. #ifdef COBJMACROS
  6387. #define ISCPSecureExchange2_QueryInterface(This,riid,ppvObject) \
  6388. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6389. #define ISCPSecureExchange2_AddRef(This) \
  6390. ( (This)->lpVtbl -> AddRef(This) )
  6391. #define ISCPSecureExchange2_Release(This) \
  6392. ( (This)->lpVtbl -> Release(This) )
  6393. #define ISCPSecureExchange2_TransferContainerData(This,pData,dwSize,pfuReadyFlags,abMac) \
  6394. ( (This)->lpVtbl -> TransferContainerData(This,pData,dwSize,pfuReadyFlags,abMac) )
  6395. #define ISCPSecureExchange2_ObjectData(This,pData,pdwSize,abMac) \
  6396. ( (This)->lpVtbl -> ObjectData(This,pData,pdwSize,abMac) )
  6397. #define ISCPSecureExchange2_TransferComplete(This) \
  6398. ( (This)->lpVtbl -> TransferComplete(This) )
  6399. #define ISCPSecureExchange2_TransferContainerData2(This,pData,dwSize,pProgressCallback,pfuReadyFlags,abMac) \
  6400. ( (This)->lpVtbl -> TransferContainerData2(This,pData,dwSize,pProgressCallback,pfuReadyFlags,abMac) )
  6401. #endif /* COBJMACROS */
  6402. #endif /* C style interface */
  6403. #endif /* __ISCPSecureExchange2_INTERFACE_DEFINED__ */
  6404. #ifndef __ISCPSecureExchange3_INTERFACE_DEFINED__
  6405. #define __ISCPSecureExchange3_INTERFACE_DEFINED__
  6406. /* interface ISCPSecureExchange3 */
  6407. /* [unique][uuid][object] */
  6408. EXTERN_C const IID IID_ISCPSecureExchange3;
  6409. #if defined(__cplusplus) && !defined(CINTERFACE)
  6410. MIDL_INTERFACE("ab4e77e4-8908-4b17-bd2a-b1dbe6dd69e1")
  6411. ISCPSecureExchange3 : public ISCPSecureExchange2
  6412. {
  6413. public:
  6414. virtual HRESULT STDMETHODCALLTYPE TransferContainerDataOnClearChannel(
  6415. /* [in] */ __RPC__in_opt IMDSPDevice *pDevice,
  6416. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6417. /* [in] */ DWORD dwSize,
  6418. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6419. /* [out] */ __RPC__out UINT *pfuReadyFlags) = 0;
  6420. virtual HRESULT STDMETHODCALLTYPE GetObjectDataOnClearChannel(
  6421. /* [in] */ __RPC__in_opt IMDSPDevice *pDevice,
  6422. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  6423. /* [out][in] */ __RPC__inout DWORD *pdwSize) = 0;
  6424. virtual HRESULT STDMETHODCALLTYPE TransferCompleteForDevice(
  6425. /* [in] */ __RPC__in_opt IMDSPDevice *pDevice) = 0;
  6426. };
  6427. #else /* C style interface */
  6428. typedef struct ISCPSecureExchange3Vtbl
  6429. {
  6430. BEGIN_INTERFACE
  6431. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6432. ISCPSecureExchange3 * This,
  6433. /* [in] */ __RPC__in REFIID riid,
  6434. /* [iid_is][out] */
  6435. __RPC__deref_out void **ppvObject);
  6436. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6437. ISCPSecureExchange3 * This);
  6438. ULONG ( STDMETHODCALLTYPE *Release )(
  6439. ISCPSecureExchange3 * This);
  6440. HRESULT ( STDMETHODCALLTYPE *TransferContainerData )(
  6441. ISCPSecureExchange3 * This,
  6442. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6443. /* [in] */ DWORD dwSize,
  6444. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6445. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6446. HRESULT ( STDMETHODCALLTYPE *ObjectData )(
  6447. ISCPSecureExchange3 * This,
  6448. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  6449. /* [out][in] */ __RPC__inout DWORD *pdwSize,
  6450. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6451. HRESULT ( STDMETHODCALLTYPE *TransferComplete )(
  6452. ISCPSecureExchange3 * This);
  6453. HRESULT ( STDMETHODCALLTYPE *TransferContainerData2 )(
  6454. ISCPSecureExchange3 * This,
  6455. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6456. /* [in] */ DWORD dwSize,
  6457. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6458. /* [out] */ __RPC__out UINT *pfuReadyFlags,
  6459. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6460. HRESULT ( STDMETHODCALLTYPE *TransferContainerDataOnClearChannel )(
  6461. ISCPSecureExchange3 * This,
  6462. /* [in] */ __RPC__in_opt IMDSPDevice *pDevice,
  6463. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6464. /* [in] */ DWORD dwSize,
  6465. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6466. /* [out] */ __RPC__out UINT *pfuReadyFlags);
  6467. HRESULT ( STDMETHODCALLTYPE *GetObjectDataOnClearChannel )(
  6468. ISCPSecureExchange3 * This,
  6469. /* [in] */ __RPC__in_opt IMDSPDevice *pDevice,
  6470. /* [size_is][out] */ __RPC__out_ecount_full(*pdwSize) BYTE *pData,
  6471. /* [out][in] */ __RPC__inout DWORD *pdwSize);
  6472. HRESULT ( STDMETHODCALLTYPE *TransferCompleteForDevice )(
  6473. ISCPSecureExchange3 * This,
  6474. /* [in] */ __RPC__in_opt IMDSPDevice *pDevice);
  6475. END_INTERFACE
  6476. } ISCPSecureExchange3Vtbl;
  6477. interface ISCPSecureExchange3
  6478. {
  6479. CONST_VTBL struct ISCPSecureExchange3Vtbl *lpVtbl;
  6480. };
  6481. #ifdef COBJMACROS
  6482. #define ISCPSecureExchange3_QueryInterface(This,riid,ppvObject) \
  6483. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6484. #define ISCPSecureExchange3_AddRef(This) \
  6485. ( (This)->lpVtbl -> AddRef(This) )
  6486. #define ISCPSecureExchange3_Release(This) \
  6487. ( (This)->lpVtbl -> Release(This) )
  6488. #define ISCPSecureExchange3_TransferContainerData(This,pData,dwSize,pfuReadyFlags,abMac) \
  6489. ( (This)->lpVtbl -> TransferContainerData(This,pData,dwSize,pfuReadyFlags,abMac) )
  6490. #define ISCPSecureExchange3_ObjectData(This,pData,pdwSize,abMac) \
  6491. ( (This)->lpVtbl -> ObjectData(This,pData,pdwSize,abMac) )
  6492. #define ISCPSecureExchange3_TransferComplete(This) \
  6493. ( (This)->lpVtbl -> TransferComplete(This) )
  6494. #define ISCPSecureExchange3_TransferContainerData2(This,pData,dwSize,pProgressCallback,pfuReadyFlags,abMac) \
  6495. ( (This)->lpVtbl -> TransferContainerData2(This,pData,dwSize,pProgressCallback,pfuReadyFlags,abMac) )
  6496. #define ISCPSecureExchange3_TransferContainerDataOnClearChannel(This,pDevice,pData,dwSize,pProgressCallback,pfuReadyFlags) \
  6497. ( (This)->lpVtbl -> TransferContainerDataOnClearChannel(This,pDevice,pData,dwSize,pProgressCallback,pfuReadyFlags) )
  6498. #define ISCPSecureExchange3_GetObjectDataOnClearChannel(This,pDevice,pData,pdwSize) \
  6499. ( (This)->lpVtbl -> GetObjectDataOnClearChannel(This,pDevice,pData,pdwSize) )
  6500. #define ISCPSecureExchange3_TransferCompleteForDevice(This,pDevice) \
  6501. ( (This)->lpVtbl -> TransferCompleteForDevice(This,pDevice) )
  6502. #endif /* COBJMACROS */
  6503. #endif /* C style interface */
  6504. #endif /* __ISCPSecureExchange3_INTERFACE_DEFINED__ */
  6505. #ifndef __ISCPSession_INTERFACE_DEFINED__
  6506. #define __ISCPSession_INTERFACE_DEFINED__
  6507. /* interface ISCPSession */
  6508. /* [unique][uuid][object] */
  6509. EXTERN_C const IID IID_ISCPSession;
  6510. #if defined(__cplusplus) && !defined(CINTERFACE)
  6511. MIDL_INTERFACE("88a3e6ed-eee4-4619-bbb3-fd4fb62715d1")
  6512. ISCPSession : public IUnknown
  6513. {
  6514. public:
  6515. virtual HRESULT STDMETHODCALLTYPE BeginSession(
  6516. /* [in] */ __RPC__in_opt IMDSPDevice *pIDevice,
  6517. /* [size_is][in] */ __RPC__in_ecount_full(dwSizeCtx) BYTE *pCtx,
  6518. /* [in] */ DWORD dwSizeCtx) = 0;
  6519. virtual HRESULT STDMETHODCALLTYPE EndSession(
  6520. /* [size_is][in] */ __RPC__in_ecount_full(dwSizeCtx) BYTE *pCtx,
  6521. /* [in] */ DWORD dwSizeCtx) = 0;
  6522. virtual HRESULT STDMETHODCALLTYPE GetSecureQuery(
  6523. /* [out] */ __RPC__deref_out_opt ISCPSecureQuery **ppSecureQuery) = 0;
  6524. };
  6525. #else /* C style interface */
  6526. typedef struct ISCPSessionVtbl
  6527. {
  6528. BEGIN_INTERFACE
  6529. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6530. ISCPSession * This,
  6531. /* [in] */ __RPC__in REFIID riid,
  6532. /* [iid_is][out] */
  6533. __RPC__deref_out void **ppvObject);
  6534. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6535. ISCPSession * This);
  6536. ULONG ( STDMETHODCALLTYPE *Release )(
  6537. ISCPSession * This);
  6538. HRESULT ( STDMETHODCALLTYPE *BeginSession )(
  6539. ISCPSession * This,
  6540. /* [in] */ __RPC__in_opt IMDSPDevice *pIDevice,
  6541. /* [size_is][in] */ __RPC__in_ecount_full(dwSizeCtx) BYTE *pCtx,
  6542. /* [in] */ DWORD dwSizeCtx);
  6543. HRESULT ( STDMETHODCALLTYPE *EndSession )(
  6544. ISCPSession * This,
  6545. /* [size_is][in] */ __RPC__in_ecount_full(dwSizeCtx) BYTE *pCtx,
  6546. /* [in] */ DWORD dwSizeCtx);
  6547. HRESULT ( STDMETHODCALLTYPE *GetSecureQuery )(
  6548. ISCPSession * This,
  6549. /* [out] */ __RPC__deref_out_opt ISCPSecureQuery **ppSecureQuery);
  6550. END_INTERFACE
  6551. } ISCPSessionVtbl;
  6552. interface ISCPSession
  6553. {
  6554. CONST_VTBL struct ISCPSessionVtbl *lpVtbl;
  6555. };
  6556. #ifdef COBJMACROS
  6557. #define ISCPSession_QueryInterface(This,riid,ppvObject) \
  6558. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6559. #define ISCPSession_AddRef(This) \
  6560. ( (This)->lpVtbl -> AddRef(This) )
  6561. #define ISCPSession_Release(This) \
  6562. ( (This)->lpVtbl -> Release(This) )
  6563. #define ISCPSession_BeginSession(This,pIDevice,pCtx,dwSizeCtx) \
  6564. ( (This)->lpVtbl -> BeginSession(This,pIDevice,pCtx,dwSizeCtx) )
  6565. #define ISCPSession_EndSession(This,pCtx,dwSizeCtx) \
  6566. ( (This)->lpVtbl -> EndSession(This,pCtx,dwSizeCtx) )
  6567. #define ISCPSession_GetSecureQuery(This,ppSecureQuery) \
  6568. ( (This)->lpVtbl -> GetSecureQuery(This,ppSecureQuery) )
  6569. #endif /* COBJMACROS */
  6570. #endif /* C style interface */
  6571. #endif /* __ISCPSession_INTERFACE_DEFINED__ */
  6572. #ifndef __ISCPSecureQuery3_INTERFACE_DEFINED__
  6573. #define __ISCPSecureQuery3_INTERFACE_DEFINED__
  6574. /* interface ISCPSecureQuery3 */
  6575. /* [unique][uuid][object] */
  6576. EXTERN_C const IID IID_ISCPSecureQuery3;
  6577. #if defined(__cplusplus) && !defined(CINTERFACE)
  6578. MIDL_INTERFACE("B7EDD1A2-4DAB-484b-B3C5-AD39B8B4C0B1")
  6579. ISCPSecureQuery3 : public ISCPSecureQuery2
  6580. {
  6581. public:
  6582. virtual HRESULT STDMETHODCALLTYPE GetRightsOnClearChannel(
  6583. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6584. /* [in] */ DWORD dwSize,
  6585. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6586. /* [in] */ DWORD dwSessionKeyLen,
  6587. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStgGlobals,
  6588. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6589. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  6590. /* [out] */ __RPC__out UINT *pnRightsCount) = 0;
  6591. virtual HRESULT STDMETHODCALLTYPE MakeDecisionOnClearChannel(
  6592. /* [in] */ UINT fuFlags,
  6593. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6594. /* [in] */ DWORD dwSize,
  6595. /* [in] */ DWORD dwAppSec,
  6596. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6597. /* [in] */ DWORD dwSessionKeyLen,
  6598. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6599. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6600. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertAppLen) BYTE *pAppCertApp,
  6601. /* [in] */ DWORD dwAppCertAppLen,
  6602. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertSPLen) BYTE *pAppCertSP,
  6603. /* [in] */ DWORD dwAppCertSPLen,
  6604. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwRevocationURLLen) LPWSTR *pszRevocationURL,
  6605. /* [ref][out][in] */ __RPC__inout DWORD *pdwRevocationURLLen,
  6606. /* [out] */ __RPC__out DWORD *pdwRevocationBitFlag,
  6607. /* [unique][out][in] */ __RPC__inout_opt ULONGLONG *pqwFileSize,
  6608. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  6609. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange) = 0;
  6610. };
  6611. #else /* C style interface */
  6612. typedef struct ISCPSecureQuery3Vtbl
  6613. {
  6614. BEGIN_INTERFACE
  6615. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6616. ISCPSecureQuery3 * This,
  6617. /* [in] */ __RPC__in REFIID riid,
  6618. /* [iid_is][out] */
  6619. __RPC__deref_out void **ppvObject);
  6620. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6621. ISCPSecureQuery3 * This);
  6622. ULONG ( STDMETHODCALLTYPE *Release )(
  6623. ISCPSecureQuery3 * This);
  6624. HRESULT ( STDMETHODCALLTYPE *GetDataDemands )(
  6625. ISCPSecureQuery3 * This,
  6626. /* [out] */ __RPC__out UINT *pfuFlags,
  6627. /* [out] */ __RPC__out DWORD *pdwMinRightsData,
  6628. /* [out] */ __RPC__out DWORD *pdwMinExamineData,
  6629. /* [out] */ __RPC__out DWORD *pdwMinDecideData,
  6630. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6631. HRESULT ( STDMETHODCALLTYPE *ExamineData )(
  6632. ISCPSecureQuery3 * This,
  6633. /* [in] */ UINT fuFlags,
  6634. /* [unique][string][in] */ __RPC__in_opt LPWSTR pwszExtension,
  6635. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6636. /* [in] */ DWORD dwSize,
  6637. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6638. HRESULT ( STDMETHODCALLTYPE *MakeDecision )(
  6639. ISCPSecureQuery3 * This,
  6640. /* [in] */ UINT fuFlags,
  6641. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6642. /* [in] */ DWORD dwSize,
  6643. /* [in] */ DWORD dwAppSec,
  6644. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6645. /* [in] */ DWORD dwSessionKeyLen,
  6646. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6647. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6648. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6649. HRESULT ( STDMETHODCALLTYPE *GetRights )(
  6650. ISCPSecureQuery3 * This,
  6651. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6652. /* [in] */ DWORD dwSize,
  6653. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6654. /* [in] */ DWORD dwSessionKeyLen,
  6655. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStgGlobals,
  6656. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  6657. /* [out] */ __RPC__out UINT *pnRightsCount,
  6658. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6659. HRESULT ( STDMETHODCALLTYPE *MakeDecision2 )(
  6660. ISCPSecureQuery3 * This,
  6661. /* [in] */ UINT fuFlags,
  6662. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6663. /* [in] */ DWORD dwSize,
  6664. /* [in] */ DWORD dwAppSec,
  6665. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6666. /* [in] */ DWORD dwSessionKeyLen,
  6667. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6668. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertAppLen) BYTE *pAppCertApp,
  6669. /* [in] */ DWORD dwAppCertAppLen,
  6670. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertSPLen) BYTE *pAppCertSP,
  6671. /* [in] */ DWORD dwAppCertSPLen,
  6672. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwRevocationURLLen) LPWSTR *pszRevocationURL,
  6673. /* [ref][out][in] */ __RPC__inout DWORD *pdwRevocationURLLen,
  6674. /* [out] */ __RPC__out DWORD *pdwRevocationBitFlag,
  6675. /* [unique][out][in] */ __RPC__inout_opt ULONGLONG *pqwFileSize,
  6676. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  6677. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange,
  6678. /* [out][in] */ __RPC__inout_ecount_full(WMDM_MAC_LENGTH) BYTE abMac[ 8 ]);
  6679. HRESULT ( STDMETHODCALLTYPE *GetRightsOnClearChannel )(
  6680. ISCPSecureQuery3 * This,
  6681. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6682. /* [in] */ DWORD dwSize,
  6683. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6684. /* [in] */ DWORD dwSessionKeyLen,
  6685. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStgGlobals,
  6686. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6687. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pnRightsCount) PWMDMRIGHTS *ppRights,
  6688. /* [out] */ __RPC__out UINT *pnRightsCount);
  6689. HRESULT ( STDMETHODCALLTYPE *MakeDecisionOnClearChannel )(
  6690. ISCPSecureQuery3 * This,
  6691. /* [in] */ UINT fuFlags,
  6692. /* [size_is][in] */ __RPC__in_ecount_full(dwSize) BYTE *pData,
  6693. /* [in] */ DWORD dwSize,
  6694. /* [in] */ DWORD dwAppSec,
  6695. /* [size_is][in] */ __RPC__in_ecount_full(dwSessionKeyLen) BYTE *pbSPSessionKey,
  6696. /* [in] */ DWORD dwSessionKeyLen,
  6697. /* [in] */ __RPC__in_opt IMDSPStorageGlobals *pStorageGlobals,
  6698. /* [in] */ __RPC__in_opt IWMDMProgress3 *pProgressCallback,
  6699. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertAppLen) BYTE *pAppCertApp,
  6700. /* [in] */ DWORD dwAppCertAppLen,
  6701. /* [size_is][in] */ __RPC__in_ecount_full(dwAppCertSPLen) BYTE *pAppCertSP,
  6702. /* [in] */ DWORD dwAppCertSPLen,
  6703. /* [size_is][size_is][string][out][in] */ __RPC__deref_inout_ecount_full_opt_string(*pdwRevocationURLLen) LPWSTR *pszRevocationURL,
  6704. /* [ref][out][in] */ __RPC__inout DWORD *pdwRevocationURLLen,
  6705. /* [out] */ __RPC__out DWORD *pdwRevocationBitFlag,
  6706. /* [unique][out][in] */ __RPC__inout_opt ULONGLONG *pqwFileSize,
  6707. /* [in] */ __RPC__in_opt IUnknown *pUnknown,
  6708. /* [out] */ __RPC__deref_out_opt ISCPSecureExchange **ppExchange);
  6709. END_INTERFACE
  6710. } ISCPSecureQuery3Vtbl;
  6711. interface ISCPSecureQuery3
  6712. {
  6713. CONST_VTBL struct ISCPSecureQuery3Vtbl *lpVtbl;
  6714. };
  6715. #ifdef COBJMACROS
  6716. #define ISCPSecureQuery3_QueryInterface(This,riid,ppvObject) \
  6717. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6718. #define ISCPSecureQuery3_AddRef(This) \
  6719. ( (This)->lpVtbl -> AddRef(This) )
  6720. #define ISCPSecureQuery3_Release(This) \
  6721. ( (This)->lpVtbl -> Release(This) )
  6722. #define ISCPSecureQuery3_GetDataDemands(This,pfuFlags,pdwMinRightsData,pdwMinExamineData,pdwMinDecideData,abMac) \
  6723. ( (This)->lpVtbl -> GetDataDemands(This,pfuFlags,pdwMinRightsData,pdwMinExamineData,pdwMinDecideData,abMac) )
  6724. #define ISCPSecureQuery3_ExamineData(This,fuFlags,pwszExtension,pData,dwSize,abMac) \
  6725. ( (This)->lpVtbl -> ExamineData(This,fuFlags,pwszExtension,pData,dwSize,abMac) )
  6726. #define ISCPSecureQuery3_MakeDecision(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,ppExchange,abMac) \
  6727. ( (This)->lpVtbl -> MakeDecision(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,ppExchange,abMac) )
  6728. #define ISCPSecureQuery3_GetRights(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,ppRights,pnRightsCount,abMac) \
  6729. ( (This)->lpVtbl -> GetRights(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,ppRights,pnRightsCount,abMac) )
  6730. #define ISCPSecureQuery3_MakeDecision2(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,pAppCertApp,dwAppCertAppLen,pAppCertSP,dwAppCertSPLen,pszRevocationURL,pdwRevocationURLLen,pdwRevocationBitFlag,pqwFileSize,pUnknown,ppExchange,abMac) \
  6731. ( (This)->lpVtbl -> MakeDecision2(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,pAppCertApp,dwAppCertAppLen,pAppCertSP,dwAppCertSPLen,pszRevocationURL,pdwRevocationURLLen,pdwRevocationBitFlag,pqwFileSize,pUnknown,ppExchange,abMac) )
  6732. #define ISCPSecureQuery3_GetRightsOnClearChannel(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,pProgressCallback,ppRights,pnRightsCount) \
  6733. ( (This)->lpVtbl -> GetRightsOnClearChannel(This,pData,dwSize,pbSPSessionKey,dwSessionKeyLen,pStgGlobals,pProgressCallback,ppRights,pnRightsCount) )
  6734. #define ISCPSecureQuery3_MakeDecisionOnClearChannel(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,pProgressCallback,pAppCertApp,dwAppCertAppLen,pAppCertSP,dwAppCertSPLen,pszRevocationURL,pdwRevocationURLLen,pdwRevocationBitFlag,pqwFileSize,pUnknown,ppExchange) \
  6735. ( (This)->lpVtbl -> MakeDecisionOnClearChannel(This,fuFlags,pData,dwSize,dwAppSec,pbSPSessionKey,dwSessionKeyLen,pStorageGlobals,pProgressCallback,pAppCertApp,dwAppCertAppLen,pAppCertSP,dwAppCertSPLen,pszRevocationURL,pdwRevocationURLLen,pdwRevocationBitFlag,pqwFileSize,pUnknown,ppExchange) )
  6736. #endif /* COBJMACROS */
  6737. #endif /* C style interface */
  6738. #endif /* __ISCPSecureQuery3_INTERFACE_DEFINED__ */
  6739. /* interface __MIDL_itf_mswmdm_0000_0056 */
  6740. /* [local] */
  6741. #define SAC_MAC_LEN 8
  6742. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0056_v0_0_c_ifspec;
  6743. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0056_v0_0_s_ifspec;
  6744. #ifndef __IComponentAuthenticate_INTERFACE_DEFINED__
  6745. #define __IComponentAuthenticate_INTERFACE_DEFINED__
  6746. /* interface IComponentAuthenticate */
  6747. /* [unique][uuid][object] */
  6748. EXTERN_C const IID IID_IComponentAuthenticate;
  6749. #if defined(__cplusplus) && !defined(CINTERFACE)
  6750. MIDL_INTERFACE("A9889C00-6D2B-11d3-8496-00C04F79DBC0")
  6751. IComponentAuthenticate : public IUnknown
  6752. {
  6753. public:
  6754. virtual HRESULT STDMETHODCALLTYPE SACAuth(
  6755. /* [in] */ DWORD dwProtocolID,
  6756. /* [in] */ DWORD dwPass,
  6757. /* [size_is][in] */ __RPC__in_ecount_full(dwDataInLen) BYTE *pbDataIn,
  6758. /* [in] */ DWORD dwDataInLen,
  6759. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwDataOutLen) BYTE **ppbDataOut,
  6760. /* [out] */ __RPC__out DWORD *pdwDataOutLen) = 0;
  6761. virtual HRESULT STDMETHODCALLTYPE SACGetProtocols(
  6762. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwProtocolCount) DWORD **ppdwProtocols,
  6763. /* [out] */ __RPC__out DWORD *pdwProtocolCount) = 0;
  6764. };
  6765. #else /* C style interface */
  6766. typedef struct IComponentAuthenticateVtbl
  6767. {
  6768. BEGIN_INTERFACE
  6769. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6770. IComponentAuthenticate * This,
  6771. /* [in] */ __RPC__in REFIID riid,
  6772. /* [iid_is][out] */
  6773. __RPC__deref_out void **ppvObject);
  6774. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6775. IComponentAuthenticate * This);
  6776. ULONG ( STDMETHODCALLTYPE *Release )(
  6777. IComponentAuthenticate * This);
  6778. HRESULT ( STDMETHODCALLTYPE *SACAuth )(
  6779. IComponentAuthenticate * This,
  6780. /* [in] */ DWORD dwProtocolID,
  6781. /* [in] */ DWORD dwPass,
  6782. /* [size_is][in] */ __RPC__in_ecount_full(dwDataInLen) BYTE *pbDataIn,
  6783. /* [in] */ DWORD dwDataInLen,
  6784. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwDataOutLen) BYTE **ppbDataOut,
  6785. /* [out] */ __RPC__out DWORD *pdwDataOutLen);
  6786. HRESULT ( STDMETHODCALLTYPE *SACGetProtocols )(
  6787. IComponentAuthenticate * This,
  6788. /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pdwProtocolCount) DWORD **ppdwProtocols,
  6789. /* [out] */ __RPC__out DWORD *pdwProtocolCount);
  6790. END_INTERFACE
  6791. } IComponentAuthenticateVtbl;
  6792. interface IComponentAuthenticate
  6793. {
  6794. CONST_VTBL struct IComponentAuthenticateVtbl *lpVtbl;
  6795. };
  6796. #ifdef COBJMACROS
  6797. #define IComponentAuthenticate_QueryInterface(This,riid,ppvObject) \
  6798. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6799. #define IComponentAuthenticate_AddRef(This) \
  6800. ( (This)->lpVtbl -> AddRef(This) )
  6801. #define IComponentAuthenticate_Release(This) \
  6802. ( (This)->lpVtbl -> Release(This) )
  6803. #define IComponentAuthenticate_SACAuth(This,dwProtocolID,dwPass,pbDataIn,dwDataInLen,ppbDataOut,pdwDataOutLen) \
  6804. ( (This)->lpVtbl -> SACAuth(This,dwProtocolID,dwPass,pbDataIn,dwDataInLen,ppbDataOut,pdwDataOutLen) )
  6805. #define IComponentAuthenticate_SACGetProtocols(This,ppdwProtocols,pdwProtocolCount) \
  6806. ( (This)->lpVtbl -> SACGetProtocols(This,ppdwProtocols,pdwProtocolCount) )
  6807. #endif /* COBJMACROS */
  6808. #endif /* C style interface */
  6809. #endif /* __IComponentAuthenticate_INTERFACE_DEFINED__ */
  6810. /* interface __MIDL_itf_mswmdm_0000_0057 */
  6811. /* [local] */
  6812. const GUID EVENT_WMDM_CONTENT_TRANSFER = { 0x339C9BF4, 0xBCFE, 0x4ED8, { 0x94, 0xDF, 0xEA, 0xF8, 0xC2, 0x6A, 0xB6, 0x1B } };
  6813. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0057_v0_0_c_ifspec;
  6814. extern RPC_IF_HANDLE __MIDL_itf_mswmdm_0000_0057_v0_0_s_ifspec;
  6815. #ifndef __MSWMDMLib_LIBRARY_DEFINED__
  6816. #define __MSWMDMLib_LIBRARY_DEFINED__
  6817. /* library MSWMDMLib */
  6818. /* [helpstring][version][uuid] */
  6819. EXTERN_C const IID LIBID_MSWMDMLib;
  6820. EXTERN_C const CLSID CLSID_MediaDevMgrClassFactory;
  6821. #ifdef __cplusplus
  6822. class DECLSPEC_UUID("50040C1D-BDBF-4924-B873-F14D6C5BFD66")
  6823. MediaDevMgrClassFactory;
  6824. #endif
  6825. EXTERN_C const CLSID CLSID_MediaDevMgr;
  6826. #ifdef __cplusplus
  6827. class DECLSPEC_UUID("25BAAD81-3560-11D3-8471-00C04F79DBC0")
  6828. MediaDevMgr;
  6829. #endif
  6830. EXTERN_C const CLSID CLSID_WMDMDevice;
  6831. #ifdef __cplusplus
  6832. class DECLSPEC_UUID("807B3CDF-357A-11d3-8471-00C04F79DBC0")
  6833. WMDMDevice;
  6834. #endif
  6835. EXTERN_C const CLSID CLSID_WMDMStorage;
  6836. #ifdef __cplusplus
  6837. class DECLSPEC_UUID("807B3CE0-357A-11d3-8471-00C04F79DBC0")
  6838. WMDMStorage;
  6839. #endif
  6840. EXTERN_C const CLSID CLSID_WMDMStorageGlobal;
  6841. #ifdef __cplusplus
  6842. class DECLSPEC_UUID("807B3CE1-357A-11d3-8471-00C04F79DBC0")
  6843. WMDMStorageGlobal;
  6844. #endif
  6845. EXTERN_C const CLSID CLSID_WMDMDeviceEnum;
  6846. #ifdef __cplusplus
  6847. class DECLSPEC_UUID("430E35AF-3971-11D3-8474-00C04F79DBC0")
  6848. WMDMDeviceEnum;
  6849. #endif
  6850. EXTERN_C const CLSID CLSID_WMDMStorageEnum;
  6851. #ifdef __cplusplus
  6852. class DECLSPEC_UUID("EB401A3B-3AF7-11d3-8474-00C04F79DBC0")
  6853. WMDMStorageEnum;
  6854. #endif
  6855. #endif /* __MSWMDMLib_LIBRARY_DEFINED__ */
  6856. /* Additional Prototypes for ALL interfaces */
  6857. unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
  6858. unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
  6859. unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
  6860. void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
  6861. unsigned long __RPC_USER LPSAFEARRAY_UserSize( unsigned long *, unsigned long , LPSAFEARRAY * );
  6862. unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal( unsigned long *, unsigned char *, LPSAFEARRAY * );
  6863. unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * );
  6864. void __RPC_USER LPSAFEARRAY_UserFree( unsigned long *, LPSAFEARRAY * );
  6865. /* end of Additional Prototypes */
  6866. #ifdef __cplusplus
  6867. }
  6868. #endif
  6869. #endif