| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577 | 
							- /**
 
-  * This file has no copyright assigned and is placed in the Public Domain.
 
-  * This file is part of the w64 mingw-runtime package.
 
-  * No warranty is given.
 
-  */
 
- #ifndef _KS_
 
- #define _KS_
 
- #include <winioctl.h>
 
- #if __GNUC__ >= 3
 
-  # pragma GCC system_header
 
- #endif
 
- #ifndef __MINGW_EXTENSION
 
-  # if defined(__GNUC__) || defined(__GNUG__)
 
-   #  define __MINGW_EXTENSION __extension__
 
-  # else
 
-   #  define __MINGW_EXTENSION
 
-  # endif
 
- #endif
 
- #ifdef __TCS__
 
-  # define _KS_NO_ANONYMOUS_STRUCTURES_ 1
 
- #endif
 
- #ifdef  _KS_NO_ANONYMOUS_STRUCTURES_
 
-  # define _KS_ANON_STRUCT(X) struct X
 
- #else
 
-  # define _KS_ANON_STRUCT(X) __MINGW_EXTENSION struct
 
- #endif
 
- #ifndef _NTRTL_
 
-  # ifndef DEFINE_GUIDEX
 
-   #  define DEFINE_GUIDEX(name) EXTERN_C const GUID name
 
-  # endif
 
-  # ifndef STATICGUIDOF
 
-   #  define STATICGUIDOF(guid) STATIC_ ## guid
 
-  # endif
 
- #endif /* _NTRTL_ */
 
- #ifndef SIZEOF_ARRAY
 
-  # define SIZEOF_ARRAY(ar) (sizeof(ar) / sizeof((ar)[0]))
 
- #endif
 
- #define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n)
 
- #define DEFINE_GUIDNAMED(n) n
 
- #define STATIC_GUID_NULL                        \
 
-   0x00000000L, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
 
- DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL);
 
- #define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL)
 
- #define IOCTL_KS_PROPERTY CTL_CODE(FILE_DEVICE_KS, 0x000, METHOD_NEITHER, FILE_ANY_ACCESS)
 
- #define IOCTL_KS_ENABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x001, METHOD_NEITHER, FILE_ANY_ACCESS)
 
- #define IOCTL_KS_DISABLE_EVENT CTL_CODE(FILE_DEVICE_KS, 0x002, METHOD_NEITHER, FILE_ANY_ACCESS)
 
- #define IOCTL_KS_METHOD CTL_CODE(FILE_DEVICE_KS, 0x003, METHOD_NEITHER, FILE_ANY_ACCESS)
 
- #define IOCTL_KS_WRITE_STREAM CTL_CODE(FILE_DEVICE_KS, 0x004, METHOD_NEITHER, FILE_WRITE_ACCESS)
 
- #define IOCTL_KS_READ_STREAM CTL_CODE(FILE_DEVICE_KS, 0x005, METHOD_NEITHER, FILE_READ_ACCESS)
 
- #define IOCTL_KS_RESET_STATE CTL_CODE(FILE_DEVICE_KS, 0x006, METHOD_NEITHER, FILE_ANY_ACCESS)
 
- typedef enum
 
- {
 
-   KSRESET_BEGIN,
 
-   KSRESET_END
 
- }KSRESET;
 
- typedef enum
 
- {
 
-   KSSTATE_STOP,
 
-   KSSTATE_ACQUIRE,
 
-   KSSTATE_PAUSE,
 
-   KSSTATE_RUN
 
- }KSSTATE, * PKSSTATE;
 
- #define KSPRIORITY_LOW 0x00000001
 
- #define KSPRIORITY_NORMAL 0x40000000
 
- #define KSPRIORITY_HIGH 0x80000000
 
- #define KSPRIORITY_EXCLUSIVE 0xFFFFFFFF
 
- typedef struct
 
- {
 
-   ULONG PriorityClass;
 
-   ULONG PrioritySubClass;
 
- }KSPRIORITY, * PKSPRIORITY;
 
- typedef struct
 
- {
 
-   __MINGW_EXTENSION union
 
-   {
 
-     _KS_ANON_STRUCT(_IDENTIFIER)
 
-     {
 
-       GUID Set;
 
-       ULONG Id;
 
-       ULONG Flags;
 
-     };
 
-     LONGLONG Alignment;
 
-   };
 
- }KSIDENTIFIER, * PKSIDENTIFIER;
 
- typedef KSIDENTIFIER KSPROPERTY, * PKSPROPERTY, KSMETHOD, * PKSMETHOD, KSEVENT, * PKSEVENT;
 
- #define KSMETHOD_TYPE_NONE 0x00000000
 
- #define KSMETHOD_TYPE_READ 0x00000001
 
- #define KSMETHOD_TYPE_WRITE 0x00000002
 
- #define KSMETHOD_TYPE_MODIFY 0x00000003
 
- #define KSMETHOD_TYPE_SOURCE 0x00000004
 
- #define KSMETHOD_TYPE_SEND 0x00000001
 
- #define KSMETHOD_TYPE_SETSUPPORT 0x00000100
 
- #define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
 
- #define KSMETHOD_TYPE_TOPOLOGY 0x10000000
 
- #define KSPROPERTY_TYPE_GET 0x00000001
 
- #define KSPROPERTY_TYPE_SET 0x00000002
 
- #define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
 
- #define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
 
- #define KSPROPERTY_TYPE_RELATIONS 0x00000400
 
- #define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
 
- #define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
 
- #define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
 
- #define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
 
- #define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
 
- #define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000
 
- #define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
 
- typedef struct
 
- {
 
-   KSPROPERTY Property;
 
-   ULONG NodeId;
 
-   ULONG Reserved;
 
- }KSP_NODE, * PKSP_NODE;
 
- typedef struct
 
- {
 
-   KSMETHOD Method;
 
-   ULONG NodeId;
 
-   ULONG Reserved;
 
- }KSM_NODE, * PKSM_NODE;
 
- typedef struct
 
- {
 
-   KSEVENT Event;
 
-   ULONG NodeId;
 
-   ULONG Reserved;
 
- }KSE_NODE, * PKSE_NODE;
 
- #define STATIC_KSPROPTYPESETID_General                  \
 
-   0x97E99BA0L, 0xBDEA, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("97E99BA0-BDEA-11CF-A5D6-28DB04C10000", KSPROPTYPESETID_General);
 
- #define KSPROPTYPESETID_General DEFINE_GUIDNAMED(KSPROPTYPESETID_General)
 
- typedef struct
 
- {
 
-   ULONG Size;
 
-   ULONG Count;
 
- }KSMULTIPLE_ITEM, * PKSMULTIPLE_ITEM;
 
- typedef struct
 
- {
 
-   ULONG AccessFlags;
 
-   ULONG DescriptionSize;
 
-   KSIDENTIFIER PropTypeSet;
 
-   ULONG MembersListCount;
 
-   ULONG Reserved;
 
- }KSPROPERTY_DESCRIPTION, * PKSPROPERTY_DESCRIPTION;
 
- #define KSPROPERTY_MEMBER_RANGES 0x00000001
 
- #define KSPROPERTY_MEMBER_STEPPEDRANGES 0x00000002
 
- #define KSPROPERTY_MEMBER_VALUES 0x00000003
 
- #define KSPROPERTY_MEMBER_FLAG_DEFAULT 0x00000001
 
- #define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_MULTICHANNEL 0x00000002
 
- #define KSPROPERTY_MEMBER_FLAG_BASICSUPPORT_UNIFORM 0x00000004
 
- typedef struct
 
- {
 
-   ULONG MembersFlags;
 
-   ULONG MembersSize;
 
-   ULONG MembersCount;
 
-   ULONG Flags;
 
- }KSPROPERTY_MEMBERSHEADER, * PKSPROPERTY_MEMBERSHEADER;
 
- typedef union
 
- {
 
-   _KS_ANON_STRUCT(_SIGNED)
 
-   {
 
-     LONG SignedMinimum;
 
-     LONG SignedMaximum;
 
-   };
 
-   _KS_ANON_STRUCT(_UNSIGNED)
 
-   {
 
-     ULONG UnsignedMinimum;
 
-     ULONG UnsignedMaximum;
 
-   };
 
- }KSPROPERTY_BOUNDS_LONG, * PKSPROPERTY_BOUNDS_LONG;
 
- typedef union
 
- {
 
-   _KS_ANON_STRUCT(_SIGNED64)
 
-   {
 
-     LONGLONG SignedMinimum;
 
-     LONGLONG SignedMaximum;
 
-   };
 
-   _KS_ANON_STRUCT(_UNSIGNED64)
 
-   {
 
-     DWORDLONG UnsignedMinimum;
 
-     DWORDLONG UnsignedMaximum;
 
-   };
 
- }KSPROPERTY_BOUNDS_LONGLONG, * PKSPROPERTY_BOUNDS_LONGLONG;
 
- typedef struct
 
- {
 
-   ULONG SteppingDelta;
 
-   ULONG Reserved;
 
-   KSPROPERTY_BOUNDS_LONG Bounds;
 
- }KSPROPERTY_STEPPING_LONG, * PKSPROPERTY_STEPPING_LONG;
 
- typedef struct
 
- {
 
-   DWORDLONG SteppingDelta;
 
-   KSPROPERTY_BOUNDS_LONGLONG Bounds;
 
- }KSPROPERTY_STEPPING_LONGLONG, * PKSPROPERTY_STEPPING_LONGLONG;
 
- #if defined(_NTDDK_)
 
- typedef struct _KSDEVICE_DESCRIPTOR KSDEVICE_DESCRIPTOR, * PKSDEVICE_DESCRIPTOR;
 
- typedef struct _KSDEVICE_DISPATCH KSDEVICE_DISPATCH, * PKSDEVICE_DISPATCH;
 
- typedef struct _KSDEVICE KSDEVICE, * PKSDEVICE;
 
- typedef struct _KSFILTERFACTORY KSFILTERFACTORY, * PKSFILTERFACTORY;
 
- typedef struct _KSFILTER_DESCRIPTOR KSFILTER_DESCRIPTOR, * PKSFILTER_DESCRIPTOR;
 
- typedef struct _KSFILTER_DISPATCH KSFILTER_DISPATCH, * PKSFILTER_DISPATCH;
 
- typedef struct _KSFILTER KSFILTER, * PKSFILTER;
 
- typedef struct _KSPIN_DESCRIPTOR_EX KSPIN_DESCRIPTOR_EX, * PKSPIN_DESCRIPTOR_EX;
 
- typedef struct _KSPIN_DISPATCH KSPIN_DISPATCH, * PKSPIN_DISPATCH;
 
- typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, * PKSCLOCK_DISPATCH;
 
- typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, * PKSALLOCATOR_DISPATCH;
 
- typedef struct _KSPIN KSPIN, * PKSPIN;
 
- typedef struct _KSNODE_DESCRIPTOR KSNODE_DESCRIPTOR, * PKSNODE_DESCRIPTOR;
 
- typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET, * PKSSTREAM_POINTER_OFFSET;
 
- typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER, * PKSSTREAM_POINTER;
 
- typedef struct _KSMAPPING KSMAPPING, * PKSMAPPING;
 
- typedef struct _KSPROCESSPIN KSPROCESSPIN, * PKSPROCESSPIN;
 
- typedef struct _KSPROCESSPIN_INDEXENTRY KSPROCESSPIN_INDEXENTRY, * PKSPROCESSPIN_INDEXENTRY;
 
- #endif /* _NTDDK_ */
 
- typedef PVOID PKSWORKER;
 
- typedef struct
 
- {
 
-   ULONG NotificationType;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     struct
 
-     {
 
-       HANDLE Event;
 
-       ULONG_PTR Reserved[2];
 
-     }EventHandle;
 
-     struct
 
-     {
 
-       HANDLE Semaphore;
 
-       ULONG Reserved;
 
-       LONG Adjustment;
 
-     }SemaphoreHandle;
 
- #if defined(_NTDDK_)
 
-     struct
 
-     {
 
-       PVOID Event;
 
-       KPRIORITY Increment;
 
-       ULONG_PTR Reserved;
 
-     }EventObject;
 
-     struct
 
-     {
 
-       PVOID Semaphore;
 
-       KPRIORITY Increment;
 
-       LONG Adjustment;
 
-     }SemaphoreObject;
 
-     struct
 
-     {
 
-       PKDPC Dpc;
 
-       ULONG ReferenceCount;
 
-       ULONG_PTR Reserved;
 
-     }Dpc;
 
-     struct
 
-     {
 
-       PWORK_QUEUE_ITEM WorkQueueItem;
 
-       WORK_QUEUE_TYPE WorkQueueType;
 
-       ULONG_PTR Reserved;
 
-     }WorkItem;
 
-     struct
 
-     {
 
-       PWORK_QUEUE_ITEM WorkQueueItem;
 
-       PKSWORKER KsWorkerObject;
 
-       ULONG_PTR Reserved;
 
-     }KsWorkItem;
 
- #endif /* _NTDDK_ */
 
-     struct
 
-     {
 
-       PVOID Unused;
 
-       LONG_PTR Alignment[2];
 
-     }Alignment;
 
-   };
 
- }KSEVENTDATA, * PKSEVENTDATA;
 
- #define KSEVENTF_EVENT_HANDLE 0x00000001
 
- #define KSEVENTF_SEMAPHORE_HANDLE 0x00000002
 
- #if defined(_NTDDK_)
 
-  # define KSEVENTF_EVENT_OBJECT 0x00000004
 
-  # define KSEVENTF_SEMAPHORE_OBJECT 0x00000008
 
-  # define KSEVENTF_DPC 0x00000010
 
-  # define KSEVENTF_WORKITEM 0x00000020
 
-  # define KSEVENTF_KSWORKITEM 0x00000080
 
- #endif /* _NTDDK_ */
 
- #define KSEVENT_TYPE_ENABLE 0x00000001
 
- #define KSEVENT_TYPE_ONESHOT 0x00000002
 
- #define KSEVENT_TYPE_ENABLEBUFFERED 0x00000004
 
- #define KSEVENT_TYPE_SETSUPPORT 0x00000100
 
- #define KSEVENT_TYPE_BASICSUPPORT 0x00000200
 
- #define KSEVENT_TYPE_QUERYBUFFER 0x00000400
 
- #define KSEVENT_TYPE_TOPOLOGY 0x10000000
 
- typedef struct
 
- {
 
-   KSEVENT Event;
 
-   PKSEVENTDATA EventData;
 
-   PVOID Reserved;
 
- }KSQUERYBUFFER, * PKSQUERYBUFFER;
 
- typedef struct
 
- {
 
-   ULONG Size;
 
-   ULONG Flags;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     HANDLE ObjectHandle;
 
-     PVOID ObjectPointer;
 
-   };
 
-   PVOID Reserved;
 
-   KSEVENT Event;
 
-   KSEVENTDATA EventData;
 
- }KSRELATIVEEVENT;
 
- #define KSRELATIVEEVENT_FLAG_HANDLE 0x00000001
 
- #define KSRELATIVEEVENT_FLAG_POINTER 0x00000002
 
- typedef struct
 
- {
 
-   KSEVENTDATA EventData;
 
-   LONGLONG MarkTime;
 
- }KSEVENT_TIME_MARK, * PKSEVENT_TIME_MARK;
 
- typedef struct
 
- {
 
-   KSEVENTDATA EventData;
 
-   LONGLONG TimeBase;
 
-   LONGLONG Interval;
 
- }KSEVENT_TIME_INTERVAL, * PKSEVENT_TIME_INTERVAL;
 
- typedef struct
 
- {
 
-   LONGLONG TimeBase;
 
-   LONGLONG Interval;
 
- }KSINTERVAL, * PKSINTERVAL;
 
- #define STATIC_KSPROPSETID_General                  \
 
-   0x1464EDA5L, 0x6A8F, 0x11D1, 0x9A, 0xA7, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("1464EDA5-6A8F-11D1-9AA7-00A0C9223196", KSPROPSETID_General);
 
- #define KSPROPSETID_General DEFINE_GUIDNAMED(KSPROPSETID_General)
 
- typedef enum
 
- {
 
-   KSPROPERTY_GENERAL_COMPONENTID
 
- }KSPROPERTY_GENERAL;
 
- typedef struct
 
- {
 
-   GUID Manufacturer;
 
-   GUID Product;
 
-   GUID Component;
 
-   GUID Name;
 
-   ULONG Version;
 
-   ULONG Revision;
 
- }KSCOMPONENTID, * PKSCOMPONENTID;
 
- #define DEFINE_KSPROPERTY_ITEM_GENERAL_COMPONENTID(Handler)     \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_GENERAL_COMPONENTID,     \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSCOMPONENTID),          \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define STATIC_KSMETHODSETID_StreamIo   \
 
-   0x65D003CAL, 0x1523, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("65D003CA-1523-11D2-B27A-00A0C9223196", KSMETHODSETID_StreamIo);
 
- #define KSMETHODSETID_StreamIo DEFINE_GUIDNAMED(KSMETHODSETID_StreamIo)
 
- typedef enum
 
- {
 
-   KSMETHOD_STREAMIO_READ,
 
-   KSMETHOD_STREAMIO_WRITE
 
- }KSMETHOD_STREAMIO;
 
- #define DEFINE_KSMETHOD_ITEM_STREAMIO_READ(Handler)         \
 
-   DEFINE_KSMETHOD_ITEM(                       \
 
-     KSMETHOD_STREAMIO_READ,         \
 
-     KSMETHOD_TYPE_WRITE,            \
 
-     (Handler),              \
 
-     sizeof(KSMETHOD),           \
 
-     0,                  \
 
-     NULL)
 
- #define DEFINE_KSMETHOD_ITEM_STREAMIO_WRITE(Handler)            \
 
-   DEFINE_KSMETHOD_ITEM(                       \
 
-     KSMETHOD_STREAMIO_WRITE,        \
 
-     KSMETHOD_TYPE_READ,         \
 
-     (Handler),              \
 
-     sizeof(KSMETHOD),           \
 
-     0,                  \
 
-     NULL)
 
- #define STATIC_KSPROPSETID_MediaSeeking                 \
 
-   0xEE904F0CL, 0xD09B, 0x11D0, 0xAB, 0xE9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("EE904F0C-D09B-11D0-ABE9-00A0C9223196", KSPROPSETID_MediaSeeking);
 
- #define KSPROPSETID_MediaSeeking DEFINE_GUIDNAMED(KSPROPSETID_MediaSeeking)
 
- typedef enum
 
- {
 
-   KSPROPERTY_MEDIASEEKING_CAPABILITIES,
 
-   KSPROPERTY_MEDIASEEKING_FORMATS,
 
-   KSPROPERTY_MEDIASEEKING_TIMEFORMAT,
 
-   KSPROPERTY_MEDIASEEKING_POSITION,
 
-   KSPROPERTY_MEDIASEEKING_STOPPOSITION,
 
-   KSPROPERTY_MEDIASEEKING_POSITIONS,
 
-   KSPROPERTY_MEDIASEEKING_DURATION,
 
-   KSPROPERTY_MEDIASEEKING_AVAILABLE,
 
-   KSPROPERTY_MEDIASEEKING_PREROLL,
 
-   KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
 
- }KSPROPERTY_MEDIASEEKING;
 
- typedef enum
 
- {
 
-   KS_SEEKING_NoPositioning,
 
-   KS_SEEKING_AbsolutePositioning,
 
-   KS_SEEKING_RelativePositioning,
 
-   KS_SEEKING_IncrementalPositioning,
 
-   KS_SEEKING_PositioningBitsMask = 0x3,
 
-   KS_SEEKING_SeekToKeyFrame,
 
-   KS_SEEKING_ReturnTime = 0x8
 
- }KS_SEEKING_FLAGS;
 
- typedef enum
 
- {
 
-   KS_SEEKING_CanSeekAbsolute = 0x1,
 
-   KS_SEEKING_CanSeekForwards = 0x2,
 
-   KS_SEEKING_CanSeekBackwards = 0x4,
 
-   KS_SEEKING_CanGetCurrentPos = 0x8,
 
-   KS_SEEKING_CanGetStopPos = 0x10,
 
-   KS_SEEKING_CanGetDuration = 0x20,
 
-   KS_SEEKING_CanPlayBackwards = 0x40
 
- }KS_SEEKING_CAPABILITIES;
 
- typedef struct
 
- {
 
-   LONGLONG Current;
 
-   LONGLONG Stop;
 
-   KS_SEEKING_FLAGS CurrentFlags;
 
-   KS_SEEKING_FLAGS StopFlags;
 
- }KSPROPERTY_POSITIONS, * PKSPROPERTY_POSITIONS;
 
- typedef struct
 
- {
 
-   LONGLONG Earliest;
 
-   LONGLONG Latest;
 
- }KSPROPERTY_MEDIAAVAILABLE, * PKSPROPERTY_MEDIAAVAILABLE;
 
- typedef struct
 
- {
 
-   KSPROPERTY Property;
 
-   GUID SourceFormat;
 
-   GUID TargetFormat;
 
-   LONGLONG Time;
 
- }KSP_TIMEFORMAT, * PKSP_TIMEFORMAT;
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CAPABILITIES(Handler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_CAPABILITIES,   \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KS_SEEKING_CAPABILITIES),    \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_FORMATS(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_FORMATS,    \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_TIMEFORMAT(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_TIMEFORMAT, \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(GUID),               \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITION(Handler)       \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_POSITION,   \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(LONGLONG),           \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_STOPPOSITION(Handler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_STOPPOSITION,   \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(LONGLONG),           \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_POSITIONS(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_POSITIONS,  \
 
-     NULL,                   \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSPROPERTY_POSITIONS),       \
 
-     (Handler),              \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_DURATION(Handler)       \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_DURATION,   \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(LONGLONG),           \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_AVAILABLE(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_AVAILABLE,  \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSPROPERTY_MEDIAAVAILABLE),  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_PREROLL(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_PREROLL,    \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(LONGLONG),           \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_MEDIASEEKING_CONVERTTIMEFORMAT(Handler)  \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT, \
 
-     (Handler),              \
 
-     sizeof(KSP_TIMEFORMAT),         \
 
-     sizeof(LONGLONG),           \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define STATIC_KSPROPSETID_Topology                 \
 
-   0x720D4AC0L, 0x7533, 0x11D0, { 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 }
 
- DEFINE_GUIDSTRUCT("720D4AC0-7533-11D0-A5D6-28DB04C10000", KSPROPSETID_Topology);
 
- #define KSPROPSETID_Topology DEFINE_GUIDNAMED(KSPROPSETID_Topology)
 
- typedef enum
 
- {
 
-   KSPROPERTY_TOPOLOGY_CATEGORIES,
 
-   KSPROPERTY_TOPOLOGY_NODES,
 
-   KSPROPERTY_TOPOLOGY_CONNECTIONS,
 
-   KSPROPERTY_TOPOLOGY_NAME
 
- }KSPROPERTY_TOPOLOGY;
 
- #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler)     \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_TOPOLOGY_CATEGORIES,     \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_TOPOLOGY_NODES,      \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_TOPOLOGY_CONNECTIONS,    \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)           \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_TOPOLOGY_NAME,       \
 
-     (Handler),              \
 
-     sizeof(KSP_NODE),           \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_TOPOLOGYSET(TopologySet, Handler)      \
 
-   DEFINE_KSPROPERTY_TABLE(TopologySet) {                  \
 
-     DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CATEGORIES(Handler),        \
 
-     DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NODES(Handler),         \
 
-     DEFINE_KSPROPERTY_ITEM_TOPOLOGY_CONNECTIONS(Handler),       \
 
-     DEFINE_KSPROPERTY_ITEM_TOPOLOGY_NAME(Handler)           \
 
-   }
 
- #define STATIC_KSCATEGORY_BRIDGE                    \
 
-   0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE);
 
- #define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE)
 
- #define STATIC_KSCATEGORY_CAPTURE                   \
 
-   0x65E8773DL, 0x8F56, 0x11D0, { 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 }
 
- DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE);
 
- #define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE)
 
- #define STATIC_KSCATEGORY_RENDER                    \
 
-   0x65E8773EL, 0x8F56, 0x11D0, { 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 }
 
- DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER);
 
- #define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER)
 
- #define STATIC_KSCATEGORY_MIXER                     \
 
-   0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER);
 
- #define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER)
 
- #define STATIC_KSCATEGORY_SPLITTER                  \
 
-   0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER);
 
- #define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER)
 
- #define STATIC_KSCATEGORY_DATACOMPRESSOR                \
 
-   0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR);
 
- #define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR)
 
- #define STATIC_KSCATEGORY_DATADECOMPRESSOR              \
 
-   0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR);
 
- #define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR)
 
- #define STATIC_KSCATEGORY_DATATRANSFORM                 \
 
-   0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM);
 
- #define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM)
 
- #define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM           \
 
-   0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM);
 
- #define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM)
 
- #define STATIC_KSCATEGORY_INTERFACETRANSFORM                \
 
-   0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM);
 
- #define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM)
 
- #define STATIC_KSCATEGORY_MEDIUMTRANSFORM               \
 
-   0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM);
 
- #define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM)
 
- #define STATIC_KSCATEGORY_FILESYSTEM                    \
 
-   0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM);
 
- #define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM)
 
- #define STATIC_KSCATEGORY_CLOCK                     \
 
-   0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK);
 
- #define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK)
 
- #define STATIC_KSCATEGORY_PROXY                     \
 
-   0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY);
 
- #define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY)
 
- #define STATIC_KSCATEGORY_QUALITY                   \
 
-   0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY);
 
- #define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY)
 
- typedef struct
 
- {
 
-   ULONG FromNode;
 
-   ULONG FromNodePin;
 
-   ULONG ToNode;
 
-   ULONG ToNodePin;
 
- }KSTOPOLOGY_CONNECTION, * PKSTOPOLOGY_CONNECTION;
 
- typedef struct
 
- {
 
-   ULONG CategoriesCount;
 
-   const GUID* Categories;
 
-   ULONG TopologyNodesCount;
 
-   const GUID* TopologyNodes;
 
-   ULONG TopologyConnectionsCount;
 
-   const KSTOPOLOGY_CONNECTION* TopologyConnections;
 
-   const GUID* TopologyNodesNames;
 
-   ULONG Reserved;
 
- }KSTOPOLOGY, * PKSTOPOLOGY;
 
- #define KSFILTER_NODE ((ULONG)-1)
 
- #define KSALL_NODES ((ULONG)-1)
 
- typedef struct
 
- {
 
-   ULONG CreateFlags;
 
-   ULONG Node;
 
- }KSNODE_CREATE, * PKSNODE_CREATE;
 
- #define STATIC_KSTIME_FORMAT_NONE STATIC_GUID_NULL
 
- #define KSTIME_FORMAT_NONE GUID_NULL
 
- #define STATIC_KSTIME_FORMAT_FRAME                  \
 
-   0x7b785570L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
 
- DEFINE_GUIDSTRUCT("7b785570-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FRAME);
 
- #define KSTIME_FORMAT_FRAME DEFINE_GUIDNAMED(KSTIME_FORMAT_FRAME)
 
- #define STATIC_KSTIME_FORMAT_BYTE                   \
 
-   0x7b785571L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
 
- DEFINE_GUIDSTRUCT("7b785571-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_BYTE);
 
- #define KSTIME_FORMAT_BYTE DEFINE_GUIDNAMED(KSTIME_FORMAT_BYTE)
 
- #define STATIC_KSTIME_FORMAT_SAMPLE                 \
 
-   0x7b785572L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
 
- DEFINE_GUIDSTRUCT("7b785572-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_SAMPLE);
 
- #define KSTIME_FORMAT_SAMPLE DEFINE_GUIDNAMED(KSTIME_FORMAT_SAMPLE)
 
- #define STATIC_KSTIME_FORMAT_FIELD                  \
 
-   0x7b785573L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
 
- DEFINE_GUIDSTRUCT("7b785573-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_FIELD);
 
- #define KSTIME_FORMAT_FIELD DEFINE_GUIDNAMED(KSTIME_FORMAT_FIELD)
 
- #define STATIC_KSTIME_FORMAT_MEDIA_TIME                 \
 
-   0x7b785574L, 0x8c82, 0x11cf, 0xbc, 0x0c, 0x00, 0xaa, 0x00, 0xac, 0x74, 0xf6
 
- DEFINE_GUIDSTRUCT("7b785574-8c82-11cf-bc0c-00aa00ac74f6", KSTIME_FORMAT_MEDIA_TIME);
 
- #define KSTIME_FORMAT_MEDIA_TIME DEFINE_GUIDNAMED(KSTIME_FORMAT_MEDIA_TIME)
 
- typedef KSIDENTIFIER KSPIN_INTERFACE, * PKSPIN_INTERFACE;
 
- #define STATIC_KSINTERFACESETID_Standard                \
 
-   0x1A8766A0L, 0x62CE, 0x11CF, { 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 }
 
- DEFINE_GUIDSTRUCT("1A8766A0-62CE-11CF-A5D6-28DB04C10000", KSINTERFACESETID_Standard);
 
- #define KSINTERFACESETID_Standard DEFINE_GUIDNAMED(KSINTERFACESETID_Standard)
 
- typedef enum
 
- {
 
-   KSINTERFACE_STANDARD_STREAMING,
 
-   KSINTERFACE_STANDARD_LOOPED_STREAMING,
 
-   KSINTERFACE_STANDARD_CONTROL
 
- }KSINTERFACE_STANDARD;
 
- #define STATIC_KSINTERFACESETID_FileIo                  \
 
-   0x8C6F932CL, 0xE771, 0x11D0, 0xB8, 0xFF, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("8C6F932C-E771-11D0-B8FF-00A0C9223196", KSINTERFACESETID_FileIo);
 
- #define KSINTERFACESETID_FileIo DEFINE_GUIDNAMED(KSINTERFACESETID_FileIo)
 
- typedef enum
 
- {
 
-   KSINTERFACE_FILEIO_STREAMING
 
- }KSINTERFACE_FILEIO;
 
- #define KSMEDIUM_TYPE_ANYINSTANCE 0
 
- #define STATIC_KSMEDIUMSETID_Standard                   \
 
-   0x4747B320L, 0x62CE, 0x11CF, { 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 }
 
- DEFINE_GUIDSTRUCT("4747B320-62CE-11CF-A5D6-28DB04C10000", KSMEDIUMSETID_Standard);
 
- #define KSMEDIUMSETID_Standard DEFINE_GUIDNAMED(KSMEDIUMSETID_Standard)
 
- #define KSMEDIUM_STANDARD_DEVIO KSMEDIUM_TYPE_ANYINSTANCE
 
- #define STATIC_KSPROPSETID_Pin                      \
 
-   0x8C134960L, 0x51AD, 0x11CF, { 0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00 }
 
- DEFINE_GUIDSTRUCT("8C134960-51AD-11CF-878A-94F801C10000", KSPROPSETID_Pin);
 
- #define KSPROPSETID_Pin DEFINE_GUIDNAMED(KSPROPSETID_Pin)
 
- typedef enum
 
- {
 
-   KSPROPERTY_PIN_CINSTANCES,
 
-   KSPROPERTY_PIN_CTYPES,
 
-   KSPROPERTY_PIN_DATAFLOW,
 
-   KSPROPERTY_PIN_DATARANGES,
 
-   KSPROPERTY_PIN_DATAINTERSECTION,
 
-   KSPROPERTY_PIN_INTERFACES,
 
-   KSPROPERTY_PIN_MEDIUMS,
 
-   KSPROPERTY_PIN_COMMUNICATION,
 
-   KSPROPERTY_PIN_GLOBALCINSTANCES,
 
-   KSPROPERTY_PIN_NECESSARYINSTANCES,
 
-   KSPROPERTY_PIN_PHYSICALCONNECTION,
 
-   KSPROPERTY_PIN_CATEGORY,
 
-   KSPROPERTY_PIN_NAME,
 
-   KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
 
-   KSPROPERTY_PIN_PROPOSEDATAFORMAT
 
- }KSPROPERTY_PIN;
 
- typedef struct
 
- {
 
-   KSPROPERTY Property;
 
-   ULONG PinId;
 
-   ULONG Reserved;
 
- }KSP_PIN, * PKSP_PIN;
 
- #define KSINSTANCE_INDETERMINATE ((ULONG)-1)
 
- typedef struct
 
- {
 
-   ULONG PossibleCount;
 
-   ULONG CurrentCount;
 
- }KSPIN_CINSTANCES, * PKSPIN_CINSTANCES;
 
- typedef enum
 
- {
 
-   KSPIN_DATAFLOW_IN = 1,
 
-   KSPIN_DATAFLOW_OUT
 
- }KSPIN_DATAFLOW, * PKSPIN_DATAFLOW;
 
- #define KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION 0
 
- #define KSDATAFORMAT_TEMPORAL_COMPRESSION (1 << KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION)
 
- #define KSDATAFORMAT_BIT_ATTRIBUTES 1
 
- #define KSDATAFORMAT_ATTRIBUTES (1 << KSDATAFORMAT_BIT_ATTRIBUTES)
 
- #define KSDATARANGE_BIT_ATTRIBUTES 1
 
- #define KSDATARANGE_ATTRIBUTES (1 << KSDATARANGE_BIT_ATTRIBUTES)
 
- #define KSDATARANGE_BIT_REQUIRED_ATTRIBUTES 2
 
- #define KSDATARANGE_REQUIRED_ATTRIBUTES (1 << KSDATARANGE_BIT_REQUIRED_ATTRIBUTES)
 
- typedef union
 
- {
 
-   __MINGW_EXTENSION struct
 
-   {
 
-     ULONG FormatSize;
 
-     ULONG Flags;
 
-     ULONG SampleSize;
 
-     ULONG Reserved;
 
-     GUID MajorFormat;
 
-     GUID SubFormat;
 
-     GUID Specifier;
 
-   };
 
-   LONGLONG Alignment;
 
- }KSDATAFORMAT, * PKSDATAFORMAT, KSDATARANGE, * PKSDATARANGE;
 
- #define KSATTRIBUTE_REQUIRED 0x00000001
 
- typedef struct
 
- {
 
-   ULONG Size;
 
-   ULONG Flags;
 
-   GUID Attribute;
 
- }KSATTRIBUTE, * PKSATTRIBUTE;
 
- #if defined(_NTDDK_)
 
- typedef struct
 
- {
 
-   ULONG Count;
 
-   PKSATTRIBUTE* Attributes;
 
- }KSATTRIBUTE_LIST, * PKSATTRIBUTE_LIST;
 
- #endif /* _NTDDK_ */
 
- typedef enum
 
- {
 
-   KSPIN_COMMUNICATION_NONE,
 
-   KSPIN_COMMUNICATION_SINK,
 
-   KSPIN_COMMUNICATION_SOURCE,
 
-   KSPIN_COMMUNICATION_BOTH,
 
-   KSPIN_COMMUNICATION_BRIDGE
 
- }KSPIN_COMMUNICATION, * PKSPIN_COMMUNICATION;
 
- typedef KSIDENTIFIER KSPIN_MEDIUM, * PKSPIN_MEDIUM;
 
- typedef struct
 
- {
 
-   KSPIN_INTERFACE Interface;
 
-   KSPIN_MEDIUM Medium;
 
-   ULONG PinId;
 
-   HANDLE PinToHandle;
 
-   KSPRIORITY Priority;
 
- }KSPIN_CONNECT, * PKSPIN_CONNECT;
 
- typedef struct
 
- {
 
-   ULONG Size;
 
-   ULONG Pin;
 
-   WCHAR SymbolicLinkName[1];
 
- }KSPIN_PHYSICALCONNECTION, * PKSPIN_PHYSICALCONNECTION;
 
- #if defined(_NTDDK_)
 
- typedef NTSTATUS (*PFNKSINTERSECTHANDLER)(PIRP Irp, PKSP_PIN Pin,
 
-                                           PKSDATARANGE DataRange,
 
-                                           PVOID Data);
 
- typedef NTSTATUS (*PFNKSINTERSECTHANDLEREX)(PVOID Context, PIRP Irp,
 
-                                             PKSP_PIN Pin,
 
-                                             PKSDATARANGE DataRange,
 
-                                             PKSDATARANGE MatchingDataRange,
 
-                                             ULONG DataBufferSize,
 
-                                             PVOID Data,
 
-                                             PULONG DataSize);
 
- #endif /* _NTDDK_ */
 
- #define DEFINE_KSPIN_INTERFACE_TABLE(tablename)             \
 
-   const KSPIN_INTERFACE tablename[] =
 
- #define DEFINE_KSPIN_INTERFACE_ITEM(guid, _interFace)            \
 
-   {                               \
 
-     STATICGUIDOF(guid),                 \
 
-     (_interFace),                       \
 
-     0                           \
 
-   }
 
- #define DEFINE_KSPIN_MEDIUM_TABLE(tablename)                \
 
-   const KSPIN_MEDIUM tablename[] =
 
- #define DEFINE_KSPIN_MEDIUM_ITEM(guid, medium)               \
 
-   DEFINE_KSPIN_INTERFACE_ITEM(guid, medium)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_CINSTANCES,      \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(KSPIN_CINSTANCES),       \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_CTYPES,          \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(ULONG),              \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(Handler)            \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_DATAFLOW,        \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(KSPIN_DATAFLOW),         \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_DATARANGES,      \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_DATAINTERSECTION,    \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN) + sizeof(KSMULTIPLE_ITEM), \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_INTERFACES,      \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(Handler)         \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_MEDIUMS,         \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(Handler)       \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_COMMUNICATION,       \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(KSPIN_COMMUNICATION),        \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_GLOBALCINSTANCES,    \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(KSPIN_CINSTANCES),       \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_NECESSARYINSTANCES,  \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(ULONG),              \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_PHYSICALCONNECTION,  \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(Handler)            \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_CATEGORY,        \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(GUID),               \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_NAME(Handler)            \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_NAME,            \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(Handler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_CONSTRAINEDDATARANGES,   \
 
-     (Handler),              \
 
-     sizeof(KSP_PIN),            \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(Handler)       \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_PIN_PROPOSEDATAFORMAT,   \
 
-     NULL,                   \
 
-     sizeof(KSP_PIN),            \
 
-     sizeof(KSDATAFORMAT),           \
 
-     (Handler), NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_PINSET(PinSet, PropGeneral, PropInstances, PropIntersection) \
 
-   DEFINE_KSPROPERTY_TABLE(PinSet) {                   \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),       \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),         \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),       \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),     \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),  \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),     \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),        \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),      \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),       \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral)            \
 
-   }
 
- #define DEFINE_KSPROPERTY_PINSETCONSTRAINED(PinSet, PropGeneral, PropInstances, PropIntersection) \
 
-   DEFINE_KSPROPERTY_TABLE(PinSet) {                   \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),       \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),         \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),       \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),     \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),  \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),     \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),        \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),      \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),       \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),           \
 
-     DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral)   \
 
-   }
 
- #define STATIC_KSNAME_Filter                        \
 
-   0x9b365890L, 0x165f, 0x11d0, 0xa1, 0x95, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
 
- DEFINE_GUIDSTRUCT("9b365890-165f-11d0-a195-0020afd156e4", KSNAME_Filter);
 
- #define KSNAME_Filter DEFINE_GUIDNAMED(KSNAME_Filter)
 
- #define KSSTRING_Filter L"{9B365890-165F-11D0-A195-0020AFD156E4}"
 
- #define STATIC_KSNAME_Pin                       \
 
-   0x146F1A80L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("146F1A80-4791-11D0-A5D6-28DB04C10000", KSNAME_Pin);
 
- #define KSNAME_Pin DEFINE_GUIDNAMED(KSNAME_Pin)
 
- #define KSSTRING_Pin L"{146F1A80-4791-11D0-A5D6-28DB04C10000}"
 
- #define STATIC_KSNAME_Clock                     \
 
-   0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSNAME_Clock);
 
- #define KSNAME_Clock DEFINE_GUIDNAMED(KSNAME_Clock)
 
- #define KSSTRING_Clock L"{53172480-4791-11D0-A5D6-28DB04C10000}"
 
- #define STATIC_KSNAME_Allocator                     \
 
-   0x642F5D00L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("642F5D00-4791-11D0-A5D6-28DB04C10000", KSNAME_Allocator);
 
- #define KSNAME_Allocator DEFINE_GUIDNAMED(KSNAME_Allocator)
 
- #define KSSTRING_Allocator L"{642F5D00-4791-11D0-A5D6-28DB04C10000}"
 
- #define KSSTRING_AllocatorEx L"{091BB63B-603F-11D1-B067-00A0C9062802}"
 
- #define STATIC_KSNAME_TopologyNode                  \
 
-   0x0621061AL, 0xEE75, 0x11D0, 0xB9, 0x15, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("0621061A-EE75-11D0-B915-00A0C9223196", KSNAME_TopologyNode);
 
- #define KSNAME_TopologyNode DEFINE_GUIDNAMED(KSNAME_TopologyNode)
 
- #define KSSTRING_TopologyNode L"{0621061A-EE75-11D0-B915-00A0C9223196}"
 
- #if defined(_NTDDK_)
 
- typedef struct
 
- {
 
-   ULONG InterfacesCount;
 
-   const KSPIN_INTERFACE* Interfaces;
 
-   ULONG MediumsCount;
 
-   const KSPIN_MEDIUM* Mediums;
 
-   ULONG DataRangesCount;
 
-   const PKSDATARANGE* DataRanges;
 
-   KSPIN_DATAFLOW DataFlow;
 
-   KSPIN_COMMUNICATION Communication;
 
-   const GUID* Category;
 
-   const GUID* Name;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     LONGLONG Reserved;
 
-     __MINGW_EXTENSION struct
 
-     {
 
-       ULONG ConstrainedDataRangesCount;
 
-       PKSDATARANGE* ConstrainedDataRanges;
 
-     };
 
-   };
 
- }KSPIN_DESCRIPTOR, * PKSPIN_DESCRIPTOR;
 
- typedef const KSPIN_DESCRIPTOR* PCKSPIN_DESCRIPTOR;
 
-  # define DEFINE_KSPIN_DESCRIPTOR_TABLE(tablename)            \
 
-   const KSPIN_DESCRIPTOR tablename[] =
 
-  # define DEFINE_KSPIN_DESCRIPTOR_ITEM(InterfacesCount, Interfaces, MediumsCount, Mediums, DataRangesCount, DataRanges, DataFlow, Communication) \
 
-   {                                   \
 
-     InterfacesCount, Interfaces, MediumsCount, Mediums, \
 
-     DataRangesCount, DataRanges, DataFlow, Communication,   \
 
-     NULL, NULL, 0                       \
 
-   }
 
-  # define DEFINE_KSPIN_DESCRIPTOR_ITEMEX(InterfacesCount, Interfaces, MediumsCount, Mediums, DataRangesCount, DataRanges, DataFlow, Communication, Category, Name) \
 
-   {                                   \
 
-     InterfacesCount, Interfaces, MediumsCount, Mediums, \
 
-     DataRangesCount, DataRanges, DataFlow, Communication,   \
 
-     Category, Name, 0                   \
 
-   }
 
- #endif /* _NTDDK_ */
 
- #define STATIC_KSDATAFORMAT_TYPE_WILDCARD STATIC_GUID_NULL
 
- #define KSDATAFORMAT_TYPE_WILDCARD GUID_NULL
 
- #define STATIC_KSDATAFORMAT_SUBTYPE_WILDCARD STATIC_GUID_NULL
 
- #define KSDATAFORMAT_SUBTYPE_WILDCARD GUID_NULL
 
- #define STATIC_KSDATAFORMAT_TYPE_STREAM                 \
 
-   0xE436EB83L, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70
 
- DEFINE_GUIDSTRUCT("E436EB83-524F-11CE-9F53-0020AF0BA770", KSDATAFORMAT_TYPE_STREAM);
 
- #define KSDATAFORMAT_TYPE_STREAM DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_STREAM)
 
- #define STATIC_KSDATAFORMAT_SUBTYPE_NONE                \
 
-   0xE436EB8EL, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70
 
- DEFINE_GUIDSTRUCT("E436EB8E-524F-11CE-9F53-0020AF0BA770", KSDATAFORMAT_SUBTYPE_NONE);
 
- #define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE)
 
- #define STATIC_KSDATAFORMAT_SPECIFIER_WILDCARD STATIC_GUID_NULL
 
- #define KSDATAFORMAT_SPECIFIER_WILDCARD GUID_NULL
 
- #define STATIC_KSDATAFORMAT_SPECIFIER_FILENAME              \
 
-   0xAA797B40L, 0xE974, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("AA797B40-E974-11CF-A5D6-28DB04C10000", KSDATAFORMAT_SPECIFIER_FILENAME);
 
- #define KSDATAFORMAT_SPECIFIER_FILENAME DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILENAME)
 
- #define STATIC_KSDATAFORMAT_SPECIFIER_FILEHANDLE            \
 
-   0x65E8773CL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUIDSTRUCT("65E8773C-8F56-11D0-A3B9-00A0C9223196", KSDATAFORMAT_SPECIFIER_FILEHANDLE);
 
- #define KSDATAFORMAT_SPECIFIER_FILEHANDLE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_FILEHANDLE)
 
- #define STATIC_KSDATAFORMAT_SPECIFIER_NONE              \
 
-   0x0F6417D6L, 0xC318, 0x11D0, { 0xA4, 0x3F, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 }
 
- DEFINE_GUIDSTRUCT("0F6417D6-C318-11D0-A43F-00A0C9223196", KSDATAFORMAT_SPECIFIER_NONE);
 
- #define KSDATAFORMAT_SPECIFIER_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_NONE)
 
- #define STATIC_KSPROPSETID_Quality                  \
 
-   0xD16AD380L, 0xAC1A, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("D16AD380-AC1A-11CF-A5D6-28DB04C10000", KSPROPSETID_Quality);
 
- #define KSPROPSETID_Quality DEFINE_GUIDNAMED(KSPROPSETID_Quality)
 
- typedef enum
 
- {
 
-   KSPROPERTY_QUALITY_REPORT,
 
-   KSPROPERTY_QUALITY_ERROR
 
- }KSPROPERTY_QUALITY;
 
- #define DEFINE_KSPROPERTY_ITEM_QUALITY_REPORT(GetHandler, SetHandler)    \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_QUALITY_REPORT,      \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSQUALITY),          \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_QUALITY_ERROR(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_QUALITY_ERROR,       \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSERROR),            \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define STATIC_KSPROPSETID_Connection                   \
 
-   0x1D58C920L, 0xAC9B, 0x11CF, { 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 }
 
- DEFINE_GUIDSTRUCT("1D58C920-AC9B-11CF-A5D6-28DB04C10000", KSPROPSETID_Connection);
 
- #define KSPROPSETID_Connection DEFINE_GUIDNAMED(KSPROPSETID_Connection)
 
- typedef enum
 
- {
 
-   KSPROPERTY_CONNECTION_STATE,
 
-   KSPROPERTY_CONNECTION_PRIORITY,
 
-   KSPROPERTY_CONNECTION_DATAFORMAT,
 
-   KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
 
-   KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,
 
-   KSPROPERTY_CONNECTION_ACQUIREORDERING,
 
-   KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
 
-   KSPROPERTY_CONNECTION_STARTAT
 
- }KSPROPERTY_CONNECTION;
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(GetHandler, SetHandler)  \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_STATE,        \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSSTATE),            \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_PRIORITY(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_PRIORITY,     \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSPRIORITY),         \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_DATAFORMAT,   \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(Handler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_ALLOCATORFRAMING, \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSALLOCATOR_FRAMING),        \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING_EX(Handler)  \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX, \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_PROPOSEDATAFORMAT(Handler)    \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT, \
 
-     NULL,                   \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSDATAFORMAT),           \
 
-     (Handler),              \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_ACQUIREORDERING(Handler)  \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_ACQUIREORDERING,  \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(int),                \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_CONNECTION_STARTAT(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CONNECTION_STARTAT,      \
 
-     NULL,                   \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSRELATIVEEVENT),        \
 
-     (Handler),              \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 0x00000001
 
- #define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 0x00000002
 
- #define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 0x00000004
 
- #define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 0x00000008
 
- #define KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 0x80000000
 
- #define KSALLOCATOR_OPTIONF_COMPATIBLE 0x00000001
 
- #define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 0x00000002
 
- #define KSALLOCATOR_OPTIONF_VALID 0x00000003
 
- #define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT 0x00000010
 
- #define KSALLOCATOR_FLAG_DEVICE_SPECIFIC 0x00000020
 
- #define KSALLOCATOR_FLAG_CAN_ALLOCATE 0x00000040
 
- #define KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO 0x00000080
 
- #define KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY 0x00000100
 
- #define KSALLOCATOR_FLAG_MULTIPLE_OUTPUT 0x00000200
 
- #define KSALLOCATOR_FLAG_CYCLE 0x00000400
 
- #define KSALLOCATOR_FLAG_ALLOCATOR_EXISTS 0x00000800
 
- #define KSALLOCATOR_FLAG_INDEPENDENT_RANGES 0x00001000
 
- #define KSALLOCATOR_FLAG_ATTENTION_STEPPING 0x00002000
 
- typedef struct
 
- {
 
-   __MINGW_EXTENSION union
 
-   {
 
-     ULONG OptionsFlags;
 
-     ULONG RequirementsFlags;
 
-   };
 
- #if defined(_NTDDK_)
 
-   POOL_TYPE PoolType;
 
- #else
 
-   ULONG PoolType;
 
- #endif /* _NTDDK_ */
 
-   ULONG Frames;
 
-   ULONG FrameSize;
 
-   ULONG FileAlignment;
 
-   ULONG Reserved;
 
- }KSALLOCATOR_FRAMING, * PKSALLOCATOR_FRAMING;
 
- #if defined(_NTDDK_)
 
- typedef PVOID (*PFNKSDEFAULTALLOCATE)(PVOID Context);
 
- typedef VOID (*PFNKSDEFAULTFREE)(PVOID Context, PVOID Buffer);
 
- typedef NTSTATUS (*PFNKSINITIALIZEALLOCATOR)(PVOID InitialContext,
 
-                                              PKSALLOCATOR_FRAMING AllocatorFraming,
 
-                                              PVOID* Context);
 
- typedef VOID (*PFNKSDELETEALLOCATOR)(PVOID Context);
 
- #endif /* _NTDDK_ */
 
- typedef struct
 
- {
 
-   ULONG MinFrameSize;
 
-   ULONG MaxFrameSize;
 
-   ULONG Stepping;
 
- }KS_FRAMING_RANGE, * PKS_FRAMING_RANGE;
 
- typedef struct
 
- {
 
-   KS_FRAMING_RANGE Range;
 
-   ULONG InPlaceWeight;
 
-   ULONG NotInPlaceWeight;
 
- }KS_FRAMING_RANGE_WEIGHTED, * PKS_FRAMING_RANGE_WEIGHTED;
 
- typedef struct
 
- {
 
-   ULONG RatioNumerator;
 
-   ULONG RatioDenominator;
 
-   ULONG RatioConstantMargin;
 
- }KS_COMPRESSION, * PKS_COMPRESSION;
 
- typedef struct
 
- {
 
-   GUID MemoryType;
 
-   GUID BusType;
 
-   ULONG MemoryFlags;
 
-   ULONG BusFlags;
 
-   ULONG Flags;
 
-   ULONG Frames;
 
-   ULONG FileAlignment;
 
-   ULONG MemoryTypeWeight;
 
-   KS_FRAMING_RANGE PhysicalRange;
 
-   KS_FRAMING_RANGE_WEIGHTED FramingRange;
 
- }KS_FRAMING_ITEM, * PKS_FRAMING_ITEM;
 
- typedef struct
 
- {
 
-   ULONG CountItems;
 
-   ULONG PinFlags;
 
-   KS_COMPRESSION OutputCompression;
 
-   ULONG PinWeight;
 
-   KS_FRAMING_ITEM FramingItem[1];
 
- }KSALLOCATOR_FRAMING_EX, * PKSALLOCATOR_FRAMING_EX;
 
- #define KSMEMORY_TYPE_WILDCARD GUID_NULL
 
- #define STATIC_KSMEMORY_TYPE_WILDCARD STATIC_GUID_NULL
 
- #define KSMEMORY_TYPE_DONT_CARE GUID_NULL
 
- #define STATIC_KSMEMORY_TYPE_DONT_CARE STATIC_GUID_NULL
 
- #define KS_TYPE_DONT_CARE GUID_NULL
 
- #define STATIC_KS_TYPE_DONT_CARE STATIC_GUID_NULL
 
- #define STATIC_KSMEMORY_TYPE_SYSTEM                 \
 
-   0x091bb638L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
 
- DEFINE_GUIDSTRUCT("091bb638-603f-11d1-b067-00a0c9062802", KSMEMORY_TYPE_SYSTEM);
 
- #define KSMEMORY_TYPE_SYSTEM DEFINE_GUIDNAMED(KSMEMORY_TYPE_SYSTEM)
 
- #define STATIC_KSMEMORY_TYPE_USER                   \
 
-   0x8cb0fc28L, 0x7893, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
 
- DEFINE_GUIDSTRUCT("8cb0fc28-7893-11d1-b069-00a0c9062802", KSMEMORY_TYPE_USER);
 
- #define KSMEMORY_TYPE_USER DEFINE_GUIDNAMED(KSMEMORY_TYPE_USER)
 
- #define STATIC_KSMEMORY_TYPE_KERNEL_PAGED               \
 
-   0xd833f8f8L, 0x7894, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
 
- DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_PAGED);
 
- #define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED)
 
- #define STATIC_KSMEMORY_TYPE_KERNEL_NONPAGED                \
 
-   0x4a6d5fc4L, 0x7895, 0x11d1, 0xb0, 0x69, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
 
- DEFINE_GUIDSTRUCT("4a6d5fc4-7895-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_NONPAGED);
 
- #define KSMEMORY_TYPE_KERNEL_NONPAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_NONPAGED)
 
- #define STATIC_KSMEMORY_TYPE_DEVICE_UNKNOWN             \
 
-   0x091bb639L, 0x603f, 0x11d1, 0xb0, 0x67, 0x00, 0xa0, 0xc9, 0x06, 0x28, 0x02
 
- DEFINE_GUIDSTRUCT("091bb639-603f-11d1-b067-00a0c9062802", KSMEMORY_TYPE_DEVICE_UNKNOWN);
 
- #define KSMEMORY_TYPE_DEVICE_UNKNOWN DEFINE_GUIDNAMED(KSMEMORY_TYPE_DEVICE_UNKNOWN)
 
- #define DECLARE_SIMPLE_FRAMING_EX(FramingExName, MemoryType, Flags, Frames, Alignment, MinFrameSize, MaxFrameSize) \
 
-   const KSALLOCATOR_FRAMING_EX FramingExName =                \
 
-   {                                   \
 
-     1,                              \
 
-     0,                              \
 
-     {                               \
 
-       1,                          \
 
-       1,                          \
 
-       0                           \
 
-     },                              \
 
-     0,                              \
 
-     {                               \
 
-       {                           \
 
-         MemoryType,                 \
 
-         STATIC_KS_TYPE_DONT_CARE,           \
 
-         0,                      \
 
-         0,                      \
 
-         Flags,                      \
 
-         Frames,                     \
 
-         Alignment,                  \
 
-         0,                      \
 
-         {                       \
 
-           0,                  \
 
-           (ULONG)-1,              \
 
-           1                   \
 
-         },                      \
 
-         {                       \
 
-           {                   \
 
-             MinFrameSize,           \
 
-             MaxFrameSize,           \
 
-             1               \
 
-           },                  \
 
-           0,                  \
 
-           0                   \
 
-         }                       \
 
-       }                           \
 
-     }                               \
 
-   }
 
- #define SetDefaultKsCompression(KsCompressionPointer)           \
 
-   {                                   \
 
-     KsCompressionPointer->RatioNumerator = 1;           \
 
-     KsCompressionPointer->RatioDenominator = 1;         \
 
-     KsCompressionPointer->RatioConstantMargin = 0;          \
 
-   }
 
- #define SetDontCareKsFramingRange(KsFramingRangePointer)        \
 
-   {                                   \
 
-     KsFramingRangePointer->MinFrameSize = 0;            \
 
-     KsFramingRangePointer->MaxFrameSize = (ULONG)-1;       \
 
-     KsFramingRangePointer->Stepping = 1;                \
 
-   }
 
- #define SetKsFramingRange(KsFramingRangePointer, P_MinFrameSize, P_MaxFrameSize) \
 
-   {                                   \
 
-     KsFramingRangePointer->MinFrameSize = P_MinFrameSize;       \
 
-     KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize;       \
 
-     KsFramingRangePointer->Stepping = 1;                \
 
-   }
 
- #define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer, P_MinFrameSize, P_MaxFrameSize) \
 
-   {                                   \
 
-     KS_FRAMING_RANGE* KsFramingRange =              \
 
-       &KsFramingRangeWeightedPointer->Range;  \
 
-     SetKsFramingRange(KsFramingRange, P_MinFrameSize, P_MaxFrameSize); \
 
-     KsFramingRangeWeightedPointer->InPlaceWeight = 0;       \
 
-     KsFramingRangeWeightedPointer->NotInPlaceWeight = 0;        \
 
-   }
 
- #define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer, P_MemoryType, P_Flags, P_Frames, P_Alignment, P_MinFrameSize, P_MaxFrameSize) \
 
-   {                                   \
 
-     KS_COMPRESSION* KsCompression =                 \
 
-       &FramingExPointer->OutputCompression;       \
 
-     KS_FRAMING_RANGE* KsFramingRange =              \
 
-       &FramingExPointer->FramingItem[0].PhysicalRange; \
 
-     KS_FRAMING_RANGE_WEIGHTED* KsFramingRangeWeighted =     \
 
-       &FramingExPointer->FramingItem[0].FramingRange; \
 
-     FramingExPointer->CountItems = 1;               \
 
-     FramingExPointer->PinFlags = 0;                 \
 
-     SetDefaultKsCompression(KsCompression);             \
 
-     FramingExPointer->PinWeight = 0;                \
 
-     FramingExPointer->FramingItem[0].MemoryType = P_MemoryType; \
 
-     FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE;   \
 
-     FramingExPointer->FramingItem[0].MemoryFlags = 0;       \
 
-     FramingExPointer->FramingItem[0].BusFlags = 0;          \
 
-     FramingExPointer->FramingItem[0].Flags = P_Flags;       \
 
-     FramingExPointer->FramingItem[0].Frames = P_Frames;     \
 
-     FramingExPointer->FramingItem[0].FileAlignment = P_Alignment;   \
 
-     FramingExPointer->FramingItem[0].MemoryTypeWeight = 0;      \
 
-     SetDontCareKsFramingRange(KsFramingRange);          \
 
-     SetKsFramingRangeWeighted(KsFramingRangeWeighted,       \
 
-                               P_MinFrameSize, P_MaxFrameSize);   \
 
-   }
 
- #define STATIC_KSEVENTSETID_StreamAllocator             \
 
-   0x75d95571L, 0x073c, 0x11d0, 0xa1, 0x61, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
 
- DEFINE_GUIDSTRUCT("75d95571-073c-11d0-a161-0020afd156e4", KSEVENTSETID_StreamAllocator);
 
- #define KSEVENTSETID_StreamAllocator DEFINE_GUIDNAMED(KSEVENTSETID_StreamAllocator)
 
- typedef enum
 
- {
 
-   KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,
 
-   KSEVENT_STREAMALLOCATOR_FREEFRAME
 
- }KSEVENT_STREAMALLOCATOR;
 
- #define STATIC_KSMETHODSETID_StreamAllocator                \
 
-   0xcf6e4341L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
 
- DEFINE_GUIDSTRUCT("cf6e4341-ec87-11cf-a130-0020afd156e4", KSMETHODSETID_StreamAllocator);
 
- #define KSMETHODSETID_StreamAllocator DEFINE_GUIDNAMED(KSMETHODSETID_StreamAllocator)
 
- typedef enum
 
- {
 
-   KSMETHOD_STREAMALLOCATOR_ALLOC,
 
-   KSMETHOD_STREAMALLOCATOR_FREE
 
- }KSMETHOD_STREAMALLOCATOR;
 
- #define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler)     \
 
-   DEFINE_KSMETHOD_ITEM(                       \
 
-     KSMETHOD_STREAMALLOCATOR_ALLOC,     \
 
-     KSMETHOD_TYPE_WRITE,            \
 
-     (Handler),              \
 
-     sizeof(KSMETHOD),           \
 
-     sizeof(PVOID),              \
 
-     NULL)
 
- #define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler)      \
 
-   DEFINE_KSMETHOD_ITEM(                       \
 
-     KSMETHOD_STREAMALLOCATOR_FREE,      \
 
-     KSMETHOD_TYPE_READ,         \
 
-     (Handler),              \
 
-     sizeof(KSMETHOD),           \
 
-     sizeof(PVOID),              \
 
-     NULL)
 
- #define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet, MethodAlloc, MethodFree) \
 
-   DEFINE_KSMETHOD_TABLE(AllocatorSet) {                   \
 
-     DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc),    \
 
-     DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree)       \
 
-   }
 
- #define STATIC_KSPROPSETID_StreamAllocator              \
 
-   0xcf6e4342L, 0xec87, 0x11cf, 0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
 
- DEFINE_GUIDSTRUCT("cf6e4342-ec87-11cf-a130-0020afd156e4", KSPROPSETID_StreamAllocator);
 
- #define KSPROPSETID_StreamAllocator DEFINE_GUIDNAMED(KSPROPSETID_StreamAllocator)
 
- #if defined(_NTDDK_)
 
- typedef enum
 
- {
 
-   KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE,
 
-   KSPROPERTY_STREAMALLOCATOR_STATUS
 
- }KSPROPERTY_STREAMALLOCATOR;
 
-  # define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(Handler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE, \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE), \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAMALLOCATOR_STATUS,  \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSSTREAMALLOCATOR_STATUS),   \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ALLOCATORSET(AllocatorSet, PropFunctionTable, PropStatus) \
 
-   DEFINE_KSPROPERTY_TABLE(AllocatorSet) {                 \
 
-     DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_STATUS(PropStatus),  \
 
-     DEFINE_KSPROPERTY_ITEM_STREAMALLOCATOR_FUNCTIONTABLE(PropFunctionTable) \
 
-   }
 
- typedef NTSTATUS (*PFNALLOCATOR_ALLOCATEFRAME)(PFILE_OBJECT FileObject,
 
-                                                PVOID* Frame);
 
- typedef VOID (*PFNALLOCATOR_FREEFRAME)(PFILE_OBJECT FileObject, PVOID Frame);
 
- typedef struct
 
- {
 
-   PFNALLOCATOR_ALLOCATEFRAME AllocateFrame;
 
-   PFNALLOCATOR_FREEFRAME FreeFrame;
 
- }KSSTREAMALLOCATOR_FUNCTIONTABLE, * PKSSTREAMALLOCATOR_FUNCTIONTABLE;
 
- #endif /* _NTDDK_ */
 
- typedef struct
 
- {
 
-   KSALLOCATOR_FRAMING Framing;
 
-   ULONG AllocatedFrames;
 
-   ULONG Reserved;
 
- }KSSTREAMALLOCATOR_STATUS, * PKSSTREAMALLOCATOR_STATUS;
 
- typedef struct
 
- {
 
-   KSALLOCATOR_FRAMING_EX Framing;
 
-   ULONG AllocatedFrames;
 
-   ULONG Reserved;
 
- }KSSTREAMALLOCATOR_STATUS_EX, * PKSSTREAMALLOCATOR_STATUS_EX;
 
- #define KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT 0x00000001
 
- #define KSSTREAM_HEADER_OPTIONSF_PREROLL 0x00000002
 
- #define KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY 0x00000004
 
- #define KSSTREAM_HEADER_OPTIONSF_TYPECHANGED 0x00000008
 
- #define KSSTREAM_HEADER_OPTIONSF_TIMEVALID 0x00000010
 
- #define KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY 0x00000040
 
- #define KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE 0x00000080
 
- #define KSSTREAM_HEADER_OPTIONSF_DURATIONVALID 0x00000100
 
- #define KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 0x00000200
 
- #define KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA 0x80000000
 
- typedef struct
 
- {
 
-   LONGLONG Time;
 
-   ULONG Numerator;
 
-   ULONG Denominator;
 
- }KSTIME, * PKSTIME;
 
- typedef struct
 
- {
 
-   ULONG Size;
 
-   ULONG TypeSpecificFlags;
 
-   KSTIME PresentationTime;
 
-   LONGLONG Duration;
 
-   ULONG FrameExtent;
 
-   ULONG DataUsed;
 
-   PVOID Data;
 
-   ULONG OptionsFlags;
 
- #ifdef _WIN64
 
-   ULONG Reserved;
 
- #endif
 
- }KSSTREAM_HEADER, * PKSSTREAM_HEADER;
 
- #define STATIC_KSPROPSETID_StreamInterface              \
 
-   0x1fdd8ee1L, 0x9cd3, 0x11d0, 0x82, 0xaa, 0x00, 0x00, 0xf8, 0x22, 0xfe, 0x8a
 
- DEFINE_GUIDSTRUCT("1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a", KSPROPSETID_StreamInterface);
 
- #define KSPROPSETID_StreamInterface DEFINE_GUIDNAMED(KSPROPSETID_StreamInterface)
 
- typedef enum
 
- {
 
-   KSPROPERTY_STREAMINTERFACE_HEADERSIZE
 
- }KSPROPERTY_STREAMINTERFACE;
 
- #define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE(GetHandler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAMINTERFACE_HEADERSIZE,  \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(ULONG),              \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet, HeaderSizeHandler) \
 
-   DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) {               \
 
-     DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE(HeaderSizeHandler) \
 
-   }
 
- #define STATIC_KSPROPSETID_Stream                   \
 
-   0x65aaba60L, 0x98ae, 0x11cf, 0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4
 
- DEFINE_GUIDSTRUCT("65aaba60-98ae-11cf-a10d-0020afd156e4", KSPROPSETID_Stream);
 
- #define KSPROPSETID_Stream DEFINE_GUIDNAMED(KSPROPSETID_Stream)
 
- typedef enum
 
- {
 
-   KSPROPERTY_STREAM_ALLOCATOR,
 
-   KSPROPERTY_STREAM_QUALITY,
 
-   KSPROPERTY_STREAM_DEGRADATION,
 
-   KSPROPERTY_STREAM_MASTERCLOCK,
 
-   KSPROPERTY_STREAM_TIMEFORMAT,
 
-   KSPROPERTY_STREAM_PRESENTATIONTIME,
 
-   KSPROPERTY_STREAM_PRESENTATIONEXTENT,
 
-   KSPROPERTY_STREAM_FRAMETIME,
 
-   KSPROPERTY_STREAM_RATECAPABILITY,
 
-   KSPROPERTY_STREAM_RATE,
 
-   KSPROPERTY_STREAM_PIPE_ID
 
- }KSPROPERTY_STREAM;
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)  \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_ALLOCATOR,        \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(HANDLE),             \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_QUALITY,      \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSQUALITY_MANAGER),      \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_DEGRADATION,      \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     0,                  \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_MASTERCLOCK,      \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(HANDLE),             \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)       \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_TIMEFORMAT,       \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(GUID),               \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler) \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_PRESENTATIONTIME, \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSTIME),             \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_PRESENTATIONEXTENT,   \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(LONGLONG),           \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_FRAMETIME,        \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSFRAMETIME),            \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)       \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_RATECAPABILITY,   \
 
-     (Handler),              \
 
-     sizeof(KSRATE_CAPABILITY),      \
 
-     sizeof(KSRATE),             \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)   \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_RATE,         \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSRATE),             \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- #define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)    \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_STREAM_PIPE_ID,      \
 
-     (GetHandler),               \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(HANDLE),             \
 
-     (SetHandler),               \
 
-     NULL, 0, NULL, NULL, 0)
 
- typedef struct
 
- {
 
-   HANDLE QualityManager;
 
-   PVOID Context;
 
- }KSQUALITY_MANAGER, * PKSQUALITY_MANAGER;
 
- typedef struct
 
- {
 
-   LONGLONG Duration;
 
-   ULONG FrameFlags;
 
-   ULONG Reserved;
 
- }KSFRAMETIME, * PKSFRAMETIME;
 
- #define KSFRAMETIME_VARIABLESIZE 0x00000001
 
- typedef struct
 
- {
 
-   LONGLONG PresentationStart;
 
-   LONGLONG Duration;
 
-   KSPIN_INTERFACE Interface;
 
-   LONG Rate;
 
-   ULONG Flags;
 
- }KSRATE, * PKSRATE;
 
- #define KSRATE_NOPRESENTATIONSTART 0x00000001
 
- #define KSRATE_NOPRESENTATIONDURATION 0x00000002
 
- typedef struct
 
- {
 
-   KSPROPERTY Property;
 
-   KSRATE Rate;
 
- }KSRATE_CAPABILITY, * PKSRATE_CAPABILITY;
 
- #define STATIC_KSPROPSETID_Clock                    \
 
-   0xDF12A4C0L, 0xAC17, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("DF12A4C0-AC17-11CF-A5D6-28DB04C10000", KSPROPSETID_Clock);
 
- #define KSPROPSETID_Clock DEFINE_GUIDNAMED(KSPROPSETID_Clock)
 
- #define NANOSECONDS 10000000
 
- #define KSCONVERT_PERFORMANCE_TIME(Frequency, PerformanceTime)       \
 
-   ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS / (Frequency)) << 32) +    \
 
-    ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS) % (Frequency)) << 32) + \
 
-      ((ULONGLONG)(PerformanceTime).LowPart * NANOSECONDS)) / (Frequency)))
 
- typedef struct
 
- {
 
-   ULONG CreateFlags;
 
- }KSCLOCK_CREATE, * PKSCLOCK_CREATE;
 
- typedef struct
 
- {
 
-   LONGLONG Time;
 
-   LONGLONG SystemTime;
 
- }KSCORRELATED_TIME, * PKSCORRELATED_TIME;
 
- typedef struct
 
- {
 
-   LONGLONG Granularity;
 
-   LONGLONG Error;
 
- }KSRESOLUTION, * PKSRESOLUTION;
 
- typedef enum
 
- {
 
-   KSPROPERTY_CLOCK_TIME,
 
-   KSPROPERTY_CLOCK_PHYSICALTIME,
 
-   KSPROPERTY_CLOCK_CORRELATEDTIME,
 
-   KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
 
-   KSPROPERTY_CLOCK_RESOLUTION,
 
-   KSPROPERTY_CLOCK_STATE,
 
- #if defined(_NTDDK_)
 
-   KSPROPERTY_CLOCK_FUNCTIONTABLE
 
- #endif /* _NTDDK_ */
 
- }KSPROPERTY_CLOCK;
 
- #if defined(_NTDDK_)
 
- typedef LONGLONG (FASTCALL * PFNKSCLOCK_GETTIME)(PFILE_OBJECT FileObject);
 
- typedef LONGLONG (FASTCALL * PFNKSCLOCK_CORRELATEDTIME)(PFILE_OBJECT FileObject,
 
-                                                         PLONGLONG SystemTime);
 
- typedef struct
 
- {
 
-   PFNKSCLOCK_GETTIME GetTime;
 
-   PFNKSCLOCK_GETTIME GetPhysicalTime;
 
-   PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime;
 
-   PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime;
 
- }KSCLOCK_FUNCTIONTABLE, * PKSCLOCK_FUNCTIONTABLE;
 
- typedef BOOLEAN (*PFNKSSETTIMER)(PVOID Context, PKTIMER Timer,
 
-                                  LARGE_INTEGER DueTime, PKDPC Dpc);
 
- typedef BOOLEAN (*PFNKSCANCELTIMER)(PVOID Context, PKTIMER Timer);
 
- typedef LONGLONG (FASTCALL * PFNKSCORRELATEDTIME)(PVOID Context,
 
-                                                   PLONGLONG SystemTime);
 
- typedef PVOID PKSDEFAULTCLOCK;
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(Handler)          \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_TIME,          \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY), sizeof(LONGLONG),   \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(Handler)      \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_PHYSICALTIME,      \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY), sizeof(LONGLONG),   \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_CORRELATEDTIME,    \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSCORRELATED_TIME),      \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(Handler)    \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSCORRELATED_TIME),      \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(Handler)        \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_RESOLUTION,        \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY), sizeof(KSRESOLUTION), \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(Handler)         \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_STATE,         \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY), sizeof(KSSTATE),    \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(Handler)     \
 
-   DEFINE_KSPROPERTY_ITEM(                     \
 
-     KSPROPERTY_CLOCK_FUNCTIONTABLE,     \
 
-     (Handler),              \
 
-     sizeof(KSPROPERTY),         \
 
-     sizeof(KSCLOCK_FUNCTIONTABLE),      \
 
-     NULL, NULL, 0, NULL, NULL, 0)
 
-  # define DEFINE_KSPROPERTY_CLOCKSET(ClockSet, PropTime, PropPhysicalTime, PropCorrelatedTime, PropCorrelatedPhysicalTime, PropResolution, PropState, PropFunctionTable) \
 
-   DEFINE_KSPROPERTY_TABLE(ClockSet) {                 \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_TIME(PropTime),            \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_PHYSICALTIME(PropPhysicalTime),    \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDTIME(PropCorrelatedTime), \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_CORRELATEDPHYSICALTIME(PropCorrelatedPhysicalTime), \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_RESOLUTION(PropResolution),    \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_STATE(PropState),          \
 
-     DEFINE_KSPROPERTY_ITEM_CLOCK_FUNCTIONTABLE(PropFunctionTable),  \
 
-   }
 
- #endif /* _NTDDK_ */
 
- #define STATIC_KSEVENTSETID_Clock                   \
 
-   0x364D8E20L, 0x62C7, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("364D8E20-62C7-11CF-A5D6-28DB04C10000", KSEVENTSETID_Clock);
 
- #define KSEVENTSETID_Clock DEFINE_GUIDNAMED(KSEVENTSETID_Clock)
 
- typedef enum
 
- {
 
-   KSEVENT_CLOCK_INTERVAL_MARK,
 
-   KSEVENT_CLOCK_POSITION_MARK
 
- }KSEVENT_CLOCK_POSITION;
 
- #define STATIC_KSEVENTSETID_Connection                  \
 
-   0x7f4bcbe0L, 0x9ea5, 0x11cf, 0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("7f4bcbe0-9ea5-11cf-a5d6-28db04c10000", KSEVENTSETID_Connection);
 
- #define KSEVENTSETID_Connection DEFINE_GUIDNAMED(KSEVENTSETID_Connection)
 
- typedef enum
 
- {
 
-   KSEVENT_CONNECTION_POSITIONUPDATE,
 
-   KSEVENT_CONNECTION_DATADISCONTINUITY,
 
-   KSEVENT_CONNECTION_TIMEDISCONTINUITY,
 
-   KSEVENT_CONNECTION_PRIORITY,
 
-   KSEVENT_CONNECTION_ENDOFSTREAM
 
- }KSEVENT_CONNECTION;
 
- typedef struct
 
- {
 
-   PVOID Context;
 
-   ULONG Proportion;
 
-   LONGLONG DeltaTime;
 
- }KSQUALITY, * PKSQUALITY;
 
- typedef struct
 
- {
 
-   PVOID Context;
 
-   ULONG Status;
 
- }KSERROR, * PKSERROR;
 
- typedef KSIDENTIFIER KSDEGRADE, * PKSDEGRADE;
 
- #define STATIC_KSDEGRADESETID_Standard                  \
 
-   0x9F564180L, 0x704C, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
 
- DEFINE_GUIDSTRUCT("9F564180-704C-11D0-A5D6-28DB04C10000", KSDEGRADESETID_Standard);
 
- #define KSDEGRADESETID_Standard DEFINE_GUIDNAMED(KSDEGRADESETID_Standard)
 
- typedef enum
 
- {
 
-   KSDEGRADE_STANDARD_SAMPLE,
 
-   KSDEGRADE_STANDARD_QUALITY,
 
-   KSDEGRADE_STANDARD_COMPUTATION,
 
-   KSDEGRADE_STANDARD_SKIP
 
- }KSDEGRADE_STANDARD;
 
- #if defined(_NTDDK_)
 
-  # define KSPROBE_STREAMREAD 0x00000000
 
-  # define KSPROBE_STREAMWRITE 0x00000001
 
-  # define KSPROBE_ALLOCATEMDL 0x00000010
 
-  # define KSPROBE_PROBEANDLOCK 0x00000020
 
-  # define KSPROBE_SYSTEMADDRESS 0x00000040
 
-  # define KSPROBE_MODIFY 0x00000200
 
-  # define KSPROBE_STREAMWRITEMODIFY (KSPROBE_MODIFY | KSPROBE_STREAMWRITE)
 
-  # define KSPROBE_ALLOWFORMATCHANGE 0x00000080
 
-  # define KSSTREAM_READ KSPROBE_STREAMREAD
 
-  # define KSSTREAM_WRITE KSPROBE_STREAMWRITE
 
-  # define KSSTREAM_PAGED_DATA 0x00000000
 
-  # define KSSTREAM_NONPAGED_DATA 0x00000100
 
-  # define KSSTREAM_SYNCHRONOUS 0x00001000
 
-  # define KSSTREAM_FAILUREEXCEPTION 0x00002000
 
- typedef NTSTATUS (*PFNKSCONTEXT_DISPATCH)(PVOID Context, PIRP Irp);
 
- typedef NTSTATUS (*PFNKSHANDLER)(PIRP Irp, PKSIDENTIFIER Request, PVOID Data);
 
- typedef BOOLEAN (*PFNKSFASTHANDLER)(PFILE_OBJECT FileObject,
 
-                                     PKSIDENTIFIER Request,
 
-                                     ULONG RequestLength, PVOID Data,
 
-                                     ULONG DataLength,
 
-                                     PIO_STATUS_BLOCK IoStatus);
 
- typedef NTSTATUS (*PFNKSALLOCATOR)(PIRP Irp, ULONG BufferSize,
 
-                                    BOOLEAN InputOperation);
 
- typedef struct
 
- {
 
-   KSPROPERTY_MEMBERSHEADER MembersHeader;
 
-   const VOID* Members;
 
- }KSPROPERTY_MEMBERSLIST, * PKSPROPERTY_MEMBERSLIST;
 
- typedef struct
 
- {
 
-   KSIDENTIFIER PropTypeSet;
 
-   ULONG MembersListCount;
 
-   const KSPROPERTY_MEMBERSLIST* MembersList;
 
- }KSPROPERTY_VALUES, * PKSPROPERTY_VALUES;
 
-  # define DEFINE_KSPROPERTY_TABLE(tablename)              \
 
-   const KSPROPERTY_ITEM tablename[] =
 
-  # define DEFINE_KSPROPERTY_ITEM(PropertyId, GetHandler, MinProperty, MinData, SetHandler, Values, RelationsCount, Relations, SupportHandler, SerializedSize) \
 
-   {                                   \
 
-     PropertyId, (PFNKSHANDLER)GetHandler,       \
 
-     MinProperty, MinData,               \
 
-     (PFNKSHANDLER)SetHandler,           \
 
-     (PKSPROPERTY_VALUES)Values, RelationsCount, \
 
-     (PKSPROPERTY)Relations,             \
 
-     (PFNKSHANDLER)SupportHandler,           \
 
-     (ULONG)SerializedSize               \
 
-   }
 
- typedef struct
 
- {
 
-   ULONG PropertyId;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PFNKSHANDLER GetPropertyHandler;
 
-     BOOLEAN GetSupported;
 
-   };
 
-   ULONG MinProperty;
 
-   ULONG MinData;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PFNKSHANDLER SetPropertyHandler;
 
-     BOOLEAN SetSupported;
 
-   };
 
-   const KSPROPERTY_VALUES* Values;
 
-   ULONG RelationsCount;
 
-   const KSPROPERTY* Relations;
 
-   PFNKSHANDLER SupportHandler;
 
-   ULONG SerializedSize;
 
- }KSPROPERTY_ITEM, * PKSPROPERTY_ITEM;
 
-  # define DEFINE_KSFASTPROPERTY_ITEM(PropertyId, GetHandler, SetHandler)  \
 
-   {                                   \
 
-     PropertyId, (PFNKSFASTHANDLER)GetHandler,   \
 
-     (PFNKSFASTHANDLER)SetHandler, 0         \
 
-   }
 
- typedef struct
 
- {
 
-   ULONG PropertyId;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PFNKSFASTHANDLER GetPropertyHandler;
 
-     BOOLEAN GetSupported;
 
-   };
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PFNKSFASTHANDLER SetPropertyHandler;
 
-     BOOLEAN SetSupported;
 
-   };
 
-   ULONG Reserved;
 
- }KSFASTPROPERTY_ITEM, * PKSFASTPROPERTY_ITEM;
 
-  # define DEFINE_KSPROPERTY_SET(Set, PropertiesCount, PropertyItem, FastIoCount, FastIoTable) \
 
-   {                                   \
 
-     Set,                        \
 
-     PropertiesCount, PropertyItem,          \
 
-     FastIoCount, FastIoTable            \
 
-   }
 
-  # define DEFINE_KSPROPERTY_SET_TABLE(tablename)              \
 
-   const KSPROPERTY_SET tablename[] =
 
- typedef struct
 
- {
 
-   const GUID* Set;
 
-   ULONG PropertiesCount;
 
-   const KSPROPERTY_ITEM* PropertyItem;
 
-   ULONG FastIoCount;
 
-   const KSFASTPROPERTY_ITEM* FastIoTable;
 
- }KSPROPERTY_SET, * PKSPROPERTY_SET;
 
-  # define DEFINE_KSMETHOD_TABLE(tablename)                \
 
-   const KSMETHOD_ITEM tablename[] =
 
-  # define DEFINE_KSMETHOD_ITEM(MethodId, Flags, MethodHandler, MinMethod, MinData, SupportHandler) \
 
-   {                                   \
 
-     MethodId, (PFNKSHANDLER)MethodHandler,      \
 
-     MinMethod, MinData,             \
 
-     SupportHandler, Flags               \
 
-   }
 
- typedef struct
 
- {
 
-   ULONG MethodId;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PFNKSHANDLER MethodHandler;
 
-     BOOLEAN MethodSupported;
 
-   };
 
-   ULONG MinMethod;
 
-   ULONG MinData;
 
-   PFNKSHANDLER SupportHandler;
 
-   ULONG Flags;
 
- }KSMETHOD_ITEM, * PKSMETHOD_ITEM;
 
-  # define DEFINE_KSFASTMETHOD_ITEM(MethodId, MethodHandler)        \
 
-   {                                   \
 
-     MethodId, (PFNKSFASTHANDLER)MethodHandler   \
 
-   }
 
- typedef struct
 
- {
 
-   ULONG MethodId;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PFNKSFASTHANDLER MethodHandler;
 
-     BOOLEAN MethodSupported;
 
-   };
 
- }KSFASTMETHOD_ITEM, * PKSFASTMETHOD_ITEM;
 
-  # define DEFINE_KSMETHOD_SET(Set, MethodsCount, MethodItem, FastIoCount, FastIoTable) \
 
-   {                                   \
 
-     Set,                        \
 
-     MethodsCount, MethodItem,           \
 
-     FastIoCount, FastIoTable            \
 
-   }
 
-  # define DEFINE_KSMETHOD_SET_TABLE(tablename)                \
 
-   const KSMETHOD_SET tablename[] =
 
- typedef struct
 
- {
 
-   const GUID* Set;
 
-   ULONG MethodsCount;
 
-   const KSMETHOD_ITEM* MethodItem;
 
-   ULONG FastIoCount;
 
-   const KSFASTMETHOD_ITEM* FastIoTable;
 
- }KSMETHOD_SET, * PKSMETHOD_SET;
 
- typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, * PKSEVENT_ENTRY;
 
- typedef NTSTATUS (*PFNKSADDEVENT)(PIRP Irp, PKSEVENTDATA EventData,
 
-                                   struct _KSEVENT_ENTRY* EventEntry);
 
- typedef VOID (*PFNKSREMOVEEVENT)(PFILE_OBJECT FileObject,
 
-                                  struct _KSEVENT_ENTRY* EventEntry);
 
-  # define DEFINE_KSEVENT_TABLE(tablename)                 \
 
-   const KSEVENT_ITEM tablename[] =
 
-  # define DEFINE_KSEVENT_ITEM(EventId, DataInput, ExtraEntryData, AddHandler, RemoveHandler, SupportHandler) \
 
-   {                                   \
 
-     EventId, DataInput, ExtraEntryData,     \
 
-     AddHandler, RemoveHandler, SupportHandler   \
 
-   }
 
- typedef struct
 
- {
 
-   ULONG EventId;
 
-   ULONG DataInput;
 
-   ULONG ExtraEntryData;
 
-   PFNKSADDEVENT AddHandler;
 
-   PFNKSREMOVEEVENT RemoveHandler;
 
-   PFNKSHANDLER SupportHandler;
 
- }KSEVENT_ITEM, * PKSEVENT_ITEM;
 
-  # define DEFINE_KSEVENT_SET(Set, EventsCount, EventItem)           \
 
-   {                                   \
 
-     Set, EventsCount, EventItem         \
 
-   }
 
-  # define DEFINE_KSEVENT_SET_TABLE(tablename)             \
 
-   const KSEVENT_SET tablename[] =
 
- typedef struct
 
- {
 
-   const GUID* Set;
 
-   ULONG EventsCount;
 
-   const KSEVENT_ITEM* EventItem;
 
- }KSEVENT_SET, * PKSEVENT_SET;
 
- typedef struct
 
- {
 
-   KDPC Dpc;
 
-   ULONG ReferenceCount;
 
-   KSPIN_LOCK AccessLock;
 
- }KSDPC_ITEM, * PKSDPC_ITEM;
 
- typedef struct
 
- {
 
-   KSDPC_ITEM DpcItem;
 
-   LIST_ENTRY BufferList;
 
- }KSBUFFER_ITEM, * PKSBUFFER_ITEM;
 
-  # define KSEVENT_ENTRY_DELETED 1
 
-  # define KSEVENT_ENTRY_ONESHOT 2
 
-  # define KSEVENT_ENTRY_BUFFERED 4
 
- struct _KSEVENT_ENTRY
 
- {
 
-   LIST_ENTRY ListEntry;
 
-   PVOID Object;
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PKSDPC_ITEM DpcItem;
 
-     PKSBUFFER_ITEM BufferItem;
 
-   };
 
-   PKSEVENTDATA EventData;
 
-   ULONG NotificationType;
 
-   const KSEVENT_SET* EventSet;
 
-   const KSEVENT_ITEM* EventItem;
 
-   PFILE_OBJECT FileObject;
 
-   ULONG SemaphoreAdjustment;
 
-   ULONG Reserved;
 
-   ULONG Flags;
 
- };
 
- typedef enum
 
- {
 
-   KSEVENTS_NONE,
 
-   KSEVENTS_SPINLOCK,
 
-   KSEVENTS_MUTEX,
 
-   KSEVENTS_FMUTEX,
 
-   KSEVENTS_FMUTEXUNSAFE,
 
-   KSEVENTS_INTERRUPT,
 
-   KSEVENTS_ERESOURCE
 
- }KSEVENTS_LOCKTYPE;
 
-  # define KSDISPATCH_FASTIO 0x80000000
 
- typedef struct
 
- {
 
-   PDRIVER_DISPATCH Create;
 
-   PVOID Context;
 
-   UNICODE_STRING ObjectClass;
 
-   PSECURITY_DESCRIPTOR SecurityDescriptor;
 
-   ULONG Flags;
 
- }KSOBJECT_CREATE_ITEM, * PKSOBJECT_CREATE_ITEM;
 
- typedef VOID (*PFNKSITEMFREECALLBACK)(PKSOBJECT_CREATE_ITEM CreateItem);
 
-  # define KSCREATE_ITEM_SECURITYCHANGED 0x00000001
 
-  # define KSCREATE_ITEM_WILDCARD 0x00000002
 
-  # define KSCREATE_ITEM_NOPARAMETERS 0x00000004
 
-  # define KSCREATE_ITEM_FREEONSTOP 0x00000008
 
-  # define DEFINE_KSCREATE_DISPATCH_TABLE(tablename)         \
 
-   KSOBJECT_CREATE_ITEM tablename[] =
 
-  # define DEFINE_KSCREATE_ITEM(DispatchCreate, TypeName, Context)       \
 
-   {                                   \
 
-     (DispatchCreate), (PVOID)(Context),     \
 
-     {                       \
 
-       sizeof(TypeName) - sizeof(UNICODE_NULL), \
 
-       sizeof(TypeName),           \
 
-       (PWCHAR)(TypeName)          \
 
-     },                      \
 
-     NULL, 0                     \
 
-   }
 
-  # define DEFINE_KSCREATE_ITEMEX(DispatchCreate, TypeName, Context, Flags)   \
 
-   {                                   \
 
-     (DispatchCreate),               \
 
-     (PVOID)(Context),               \
 
-     {                       \
 
-       sizeof(TypeName) - sizeof(UNICODE_NULL), \
 
-       sizeof(TypeName),           \
 
-       (PWCHAR)(TypeName)          \
 
-     },                      \
 
-     NULL, (Flags)                   \
 
-   }
 
-  # define DEFINE_KSCREATE_ITEMNULL(DispatchCreate, Context)        \
 
-   {                                   \
 
-     DispatchCreate, Context,            \
 
-     {                       \
 
-       0, 0, NULL,             \
 
-     },                      \
 
-     NULL, 0                     \
 
-   }
 
- typedef struct
 
- {
 
-   ULONG CreateItemsCount;
 
-   PKSOBJECT_CREATE_ITEM CreateItemsList;
 
- }KSOBJECT_CREATE, * PKSOBJECT_CREATE;
 
- typedef struct
 
- {
 
-   PDRIVER_DISPATCH DeviceIoControl;
 
-   PDRIVER_DISPATCH Read;
 
-   PDRIVER_DISPATCH Write;
 
-   PDRIVER_DISPATCH Flush;
 
-   PDRIVER_DISPATCH Close;
 
-   PDRIVER_DISPATCH QuerySecurity;
 
-   PDRIVER_DISPATCH SetSecurity;
 
-   PFAST_IO_DEVICE_CONTROL FastDeviceIoControl;
 
-   PFAST_IO_READ FastRead;
 
-   PFAST_IO_WRITE FastWrite;
 
- }KSDISPATCH_TABLE, * PKSDISPATCH_TABLE;
 
-  # define DEFINE_KSDISPATCH_TABLE(tablename, DeviceIoControl, Read, Write, Flush, Close, QuerySecurity, SetSecurity, FastDeviceIoControl, FastRead, FastWrite) \
 
-   const KSDISPATCH_TABLE tablename =              \
 
-   {                               \
 
-     DeviceIoControl,                    \
 
-     Read,                           \
 
-     Write,                          \
 
-     Flush,                          \
 
-     Close,                          \
 
-     QuerySecurity,                      \
 
-     SetSecurity,                        \
 
-     FastDeviceIoControl,                    \
 
-     FastRead,                       \
 
-     FastWrite,                      \
 
-   }
 
-  # define KSCREATE_ITEM_IRP_STORAGE(Irp)                  \
 
-   (*(PKSOBJECT_CREATE_ITEM*)&(Irp)->Tail.Overlay.DriverContext[0])
 
-  # define KSEVENT_SET_IRP_STORAGE(Irp)                    \
 
-   (*(const KSEVENT_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
 
-  # define KSEVENT_ITEM_IRP_STORAGE(Irp)                   \
 
-   (*(const KSEVENT_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
 
-  # define KSEVENT_ENTRY_IRP_STORAGE(Irp)                  \
 
-   (*(PKSEVENT_ENTRY*)&(Irp)->Tail.Overlay.DriverContext[0])
 
-  # define KSMETHOD_SET_IRP_STORAGE(Irp)                   \
 
-   (*(const KSMETHOD_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
 
-  # define KSMETHOD_ITEM_IRP_STORAGE(Irp)                  \
 
-   (*(const KSMETHOD_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
 
-  # define KSMETHOD_TYPE_IRP_STORAGE(Irp)                  \
 
-   (*(ULONG_PTR*)(&(Irp)->Tail.Overlay.DriverContext[2]))
 
-  # define KSQUEUE_SPINLOCK_IRP_STORAGE(Irp)               \
 
-   (*(PKSPIN_LOCK*)&(Irp)->Tail.Overlay.DriverContext[1])
 
-  # define KSPROPERTY_SET_IRP_STORAGE(Irp)                 \
 
-   (*(const KSPROPERTY_SET**)&(Irp)->Tail.Overlay.DriverContext[0])
 
-  # define KSPROPERTY_ITEM_IRP_STORAGE(Irp)                \
 
-   (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3])
 
-  # define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp)              \
 
-   (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2])
 
- typedef PVOID KSDEVICE_HEADER, KSOBJECT_HEADER;
 
- typedef enum
 
- {
 
-   KsInvokeOnSuccess = 1,
 
-   KsInvokeOnError = 2,
 
-   KsInvokeOnCancel = 4
 
- }KSCOMPLETION_INVOCATION;
 
- typedef enum
 
- {
 
-   KsListEntryTail,
 
-   KsListEntryHead
 
- }KSLIST_ENTRY_LOCATION;
 
- typedef enum
 
- {
 
-   KsAcquireOnly,
 
-   KsAcquireAndRemove,
 
-   KsAcquireOnlySingleItem,
 
-   KsAcquireAndRemoveOnlySingleItem
 
- }KSIRP_REMOVAL_OPERATION;
 
- typedef enum
 
- {
 
-   KsStackCopyToNewLocation,
 
-   KsStackReuseCurrentLocation,
 
-   KsStackUseNewLocation
 
- }KSSTACK_USE;
 
- typedef enum
 
- {
 
-   KSTARGET_STATE_DISABLED,
 
-   KSTARGET_STATE_ENABLED
 
- }KSTARGET_STATE;
 
- typedef NTSTATUS (*PFNKSIRPLISTCALLBACK)(PIRP Irp, PVOID Context);
 
- typedef VOID (*PFNREFERENCEDEVICEOBJECT)(PVOID Context);
 
- typedef VOID (*PFNDEREFERENCEDEVICEOBJECT)(PVOID Context);
 
- typedef NTSTATUS (*PFNQUERYREFERENCESTRING)(PVOID Context, PWCHAR* String);
 
-  # define BUS_INTERFACE_REFERENCE_VERSION 0x100
 
- typedef struct
 
- {
 
-   INTERFACE Interface;
 
-   PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
 
-   PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
 
-   PFNQUERYREFERENCESTRING QueryReferenceString;
 
- }BUS_INTERFACE_REFERENCE, * PBUS_INTERFACE_REFERENCE;
 
-  # define STATIC_REFERENCE_BUS_INTERFACE STATIC_KSMEDIUMSETID_Standard
 
-  # define REFERENCE_BUS_INTERFACE KSMEDIUMSETID_Standard
 
- #endif /* _NTDDK_ */
 
- #ifndef PACK_PRAGMAS_NOT_SUPPORTED
 
-  # include <pshpack1.h>
 
- #endif
 
- typedef struct
 
- {
 
-   GUID PropertySet;
 
-   ULONG Count;
 
- }KSPROPERTY_SERIALHDR, * PKSPROPERTY_SERIALHDR;
 
- #ifndef PACK_PRAGMAS_NOT_SUPPORTED
 
-  # include <poppack.h>
 
- #endif
 
- typedef struct
 
- {
 
-   KSIDENTIFIER PropTypeSet;
 
-   ULONG Id;
 
-   ULONG PropertyLength;
 
- }KSPROPERTY_SERIAL, * PKSPROPERTY_SERIAL;
 
- #if defined(_NTDDK_)
 
-  # define IOCTL_KS_HANDSHAKE                      \
 
-   CTL_CODE(FILE_DEVICE_KS, 0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
 
- typedef struct
 
- {
 
-   GUID ProtocolId;
 
-   PVOID Argument1;
 
-   PVOID Argument2;
 
- }KSHANDSHAKE, * PKSHANDSHAKE;
 
- typedef struct _KSGATE KSGATE, * PKSGATE;
 
- struct _KSGATE
 
- {
 
-   LONG Count;
 
-   PKSGATE NextGate;
 
- };
 
- typedef PVOID KSOBJECT_BAG;
 
- typedef BOOLEAN (*PFNKSGENERATEEVENTCALLBACK)(PVOID Context,
 
-                                               PKSEVENT_ENTRY EventEntry);
 
- typedef NTSTATUS (*PFNKSDEVICECREATE)(PKSDEVICE Device);
 
- typedef NTSTATUS (*PFNKSDEVICEPNPSTART)(PKSDEVICE Device, PIRP Irp,
 
-                                         PCM_RESOURCE_LIST TranslatedResourceList,
 
-                                         PCM_RESOURCE_LIST UntranslatedResourceList);
 
- typedef NTSTATUS (*PFNKSDEVICE)(PKSDEVICE Device);
 
- typedef NTSTATUS (*PFNKSDEVICEIRP)(PKSDEVICE Device, PIRP Irp);
 
- typedef void (*PFNKSDEVICEIRPVOID)(PKSDEVICE Device, PIRP Irp);
 
- typedef NTSTATUS (*PFNKSDEVICEQUERYCAPABILITIES)(PKSDEVICE Device, PIRP Irp,
 
-                                                  PDEVICE_CAPABILITIES Capabilities);
 
- typedef NTSTATUS (*PFNKSDEVICEQUERYPOWER)(PKSDEVICE Device, PIRP Irp,
 
-                                           DEVICE_POWER_STATE DeviceTo,
 
-                                           DEVICE_POWER_STATE DeviceFrom,
 
-                                           SYSTEM_POWER_STATE SystemTo,
 
-                                           SYSTEM_POWER_STATE SystemFrom,
 
-                                           POWER_ACTION Action);
 
- typedef void (*PFNKSDEVICESETPOWER)(PKSDEVICE Device, PIRP Irp,
 
-                                     DEVICE_POWER_STATE To,
 
-                                     DEVICE_POWER_STATE From);
 
- typedef NTSTATUS (*PFNKSFILTERFACTORYVOID)(PKSFILTERFACTORY FilterFactory);
 
- typedef void (*PFNKSFILTERFACTORYPOWER)(PKSFILTERFACTORY FilterFactory,
 
-                                         DEVICE_POWER_STATE State);
 
- typedef NTSTATUS (*PFNKSFILTERIRP)(PKSFILTER Filter, PIRP Irp);
 
- typedef NTSTATUS (*PFNKSFILTERPROCESS)(PKSFILTER Filter,
 
-                                        PKSPROCESSPIN_INDEXENTRY Index);
 
- typedef NTSTATUS (*PFNKSFILTERVOID)(PKSFILTER Filter);
 
- typedef void (*PFNKSFILTERPOWER)(PKSFILTER Filter, DEVICE_POWER_STATE State);
 
- typedef NTSTATUS (*PFNKSPINIRP)(PKSPIN Pin, PIRP Irp);
 
- typedef NTSTATUS (*PFNKSPINSETDEVICESTATE)(PKSPIN Pin, KSSTATE ToState,
 
-                                            KSSTATE FromState);
 
- typedef NTSTATUS (*PFNKSPINSETDATAFORMAT)(PKSPIN Pin, PKSDATAFORMAT OldFormat,
 
-                                           PKSMULTIPLE_ITEM OldAttributeList,
 
-                                           const KSDATARANGE* DataRange,
 
-                                           const KSATTRIBUTE_LIST* AttributeRange);
 
- typedef NTSTATUS (*PFNKSPINHANDSHAKE)(PKSPIN Pin, PKSHANDSHAKE In,
 
-                                       PKSHANDSHAKE Out);
 
- typedef NTSTATUS (*PFNKSPIN)(PKSPIN Pin);
 
- typedef void (*PFNKSPINVOID)(PKSPIN Pin);
 
- typedef void (*PFNKSPINPOWER)(PKSPIN Pin, DEVICE_POWER_STATE State);
 
- typedef BOOLEAN (*PFNKSPINSETTIMER)(PKSPIN Pin, PKTIMER Timer,
 
-                                     LARGE_INTEGER DueTime, PKDPC Dpc);
 
- typedef BOOLEAN (*PFNKSPINCANCELTIMER)(PKSPIN Pin, PKTIMER Timer);
 
- typedef LONGLONG (FASTCALL * PFNKSPINCORRELATEDTIME)(PKSPIN Pin,
 
-                                                      PLONGLONG SystemTime);
 
- typedef void (*PFNKSPINRESOLUTION)(PKSPIN Pin, PKSRESOLUTION Resolution);
 
- typedef NTSTATUS (*PFNKSPININITIALIZEALLOCATOR)(PKSPIN Pin,
 
-                                                 PKSALLOCATOR_FRAMING AllocatorFraming,
 
-                                                 PVOID* Context);
 
- typedef void (*PFNKSSTREAMPOINTER)(PKSSTREAM_POINTER StreamPointer);
 
- typedef struct KSAUTOMATION_TABLE_ KSAUTOMATION_TABLE, * PKSAUTOMATION_TABLE;
 
- struct KSAUTOMATION_TABLE_
 
- {
 
-   ULONG PropertySetsCount;
 
-   ULONG PropertyItemSize;
 
-   const KSPROPERTY_SET* PropertySets;
 
-   ULONG MethodSetsCount;
 
-   ULONG MethodItemSize;
 
-   const KSMETHOD_SET* MethodSets;
 
-   ULONG EventSetsCount;
 
-   ULONG EventItemSize;
 
-   const KSEVENT_SET* EventSets;
 
-  # ifndef _WIN64
 
-   PVOID Alignment;
 
-  # endif
 
- };
 
-  # define DEFINE_KSAUTOMATION_TABLE(table)                \
 
-   const KSAUTOMATION_TABLE table =
 
-  # define DEFINE_KSAUTOMATION_PROPERTIES(table)               \
 
-   SIZEOF_ARRAY(table),                    \
 
-   sizeof(KSPROPERTY_ITEM),                \
 
-   table
 
-  # define DEFINE_KSAUTOMATION_METHODS(table)              \
 
-   SIZEOF_ARRAY(table),                    \
 
-   sizeof(KSMETHOD_ITEM),                  \
 
-   table
 
-  # define DEFINE_KSAUTOMATION_EVENTS(table)               \
 
-   SIZEOF_ARRAY(table),                    \
 
-   sizeof(KSEVENT_ITEM),                   \
 
-   table
 
-  # define DEFINE_KSAUTOMATION_PROPERTIES_NULL             \
 
-   0,                          \
 
-   sizeof(KSPROPERTY_ITEM),                \
 
-   NULL
 
-  # define DEFINE_KSAUTOMATION_METHODS_NULL                \
 
-   0,                          \
 
-   sizeof(KSMETHOD_ITEM),                  \
 
-   NULL
 
-  # define DEFINE_KSAUTOMATION_EVENTS_NULL                 \
 
-   0,                          \
 
-   sizeof(KSEVENT_ITEM),                   \
 
-   NULL
 
-  # define MIN_DEV_VER_FOR_QI (0x100)
 
- struct _KSDEVICE_DISPATCH
 
- {
 
-   PFNKSDEVICECREATE Add;
 
-   PFNKSDEVICEPNPSTART Start;
 
-   PFNKSDEVICE PostStart;
 
-   PFNKSDEVICEIRP QueryStop;
 
-   PFNKSDEVICEIRPVOID CancelStop;
 
-   PFNKSDEVICEIRPVOID Stop;
 
-   PFNKSDEVICEIRP QueryRemove;
 
-   PFNKSDEVICEIRPVOID CancelRemove;
 
-   PFNKSDEVICEIRPVOID Remove;
 
-   PFNKSDEVICEQUERYCAPABILITIES QueryCapabilities;
 
-   PFNKSDEVICEIRPVOID SurpriseRemoval;
 
-   PFNKSDEVICEQUERYPOWER QueryPower;
 
-   PFNKSDEVICESETPOWER SetPower;
 
-   PFNKSDEVICEIRP QueryInterface;
 
- };
 
- struct _KSFILTER_DISPATCH
 
- {
 
-   PFNKSFILTERIRP Create;
 
-   PFNKSFILTERIRP Close;
 
-   PFNKSFILTERPROCESS Process;
 
-   PFNKSFILTERVOID Reset;
 
- };
 
- struct _KSPIN_DISPATCH
 
- {
 
-   PFNKSPINIRP Create;
 
-   PFNKSPINIRP Close;
 
-   PFNKSPIN Process;
 
-   PFNKSPINVOID Reset;
 
-   PFNKSPINSETDATAFORMAT SetDataFormat;
 
-   PFNKSPINSETDEVICESTATE SetDeviceState;
 
-   PFNKSPIN Connect;
 
-   PFNKSPINVOID Disconnect;
 
-   const KSCLOCK_DISPATCH* Clock;
 
-   const KSALLOCATOR_DISPATCH* Allocator;
 
- };
 
- struct _KSCLOCK_DISPATCH
 
- {
 
-   PFNKSPINSETTIMER SetTimer;
 
-   PFNKSPINCANCELTIMER CancelTimer;
 
-   PFNKSPINCORRELATEDTIME CorrelatedTime;
 
-   PFNKSPINRESOLUTION Resolution;
 
- };
 
- struct _KSALLOCATOR_DISPATCH
 
- {
 
-   PFNKSPININITIALIZEALLOCATOR InitializeAllocator;
 
-   PFNKSDELETEALLOCATOR DeleteAllocator;
 
-   PFNKSDEFAULTALLOCATE Allocate;
 
-   PFNKSDEFAULTFREE Free;
 
- };
 
-  # define KSDEVICE_DESCRIPTOR_VERSION (0x100)
 
- struct _KSDEVICE_DESCRIPTOR
 
- {
 
-   const KSDEVICE_DISPATCH* Dispatch;
 
-   ULONG FilterDescriptorsCount;
 
-   const KSFILTER_DESCRIPTOR* const* FilterDescriptors;
 
-   ULONG Version;
 
- };
 
- struct _KSFILTER_DESCRIPTOR
 
- {
 
-   const KSFILTER_DISPATCH* Dispatch;
 
-   const KSAUTOMATION_TABLE* AutomationTable;
 
-   ULONG Version;
 
-  # define KSFILTER_DESCRIPTOR_VERSION ((ULONG)-1)
 
-   ULONG Flags;
 
-  # define KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING 0x00000001
 
-  # define KSFILTER_FLAG_CRITICAL_PROCESSING 0x00000002
 
-  # define KSFILTER_FLAG_HYPERCRITICAL_PROCESSING 0x00000004
 
-  # define KSFILTER_FLAG_RECEIVE_ZERO_LENGTH_SAMPLES 0x00000008
 
-  # define KSFILTER_FLAG_DENY_USERMODE_ACCESS 0x80000000
 
-   const GUID* ReferenceGuid;
 
-   ULONG PinDescriptorsCount;
 
-   ULONG PinDescriptorSize;
 
-   const KSPIN_DESCRIPTOR_EX* PinDescriptors;
 
-   ULONG CategoriesCount;
 
-   const GUID* Categories;
 
-   ULONG NodeDescriptorsCount;
 
-   ULONG NodeDescriptorSize;
 
-   const KSNODE_DESCRIPTOR* NodeDescriptors;
 
-   ULONG ConnectionsCount;
 
-   const KSTOPOLOGY_CONNECTION* Connections;
 
-   const KSCOMPONENTID* ComponentId;
 
- };
 
-  # define DEFINE_KSFILTER_DESCRIPTOR(descriptor)              \
 
-   const KSFILTER_DESCRIPTOR descriptor =
 
-  # define DEFINE_KSFILTER_PIN_DESCRIPTORS(table)              \
 
-   SIZEOF_ARRAY(table),                        \
 
-   sizeof(table[0]),                       \
 
-   table
 
-  # define DEFINE_KSFILTER_CATEGORIES(table)               \
 
-   SIZEOF_ARRAY(table),                        \
 
-   table
 
-  # define DEFINE_KSFILTER_CATEGORY(category)              \
 
-   1,                              \
 
-   &(category)
 
-  # define DEFINE_KSFILTER_CATEGORIES_NULL                 \
 
-   0,                              \
 
-   NULL
 
-  # define DEFINE_KSFILTER_NODE_DESCRIPTORS(table)             \
 
-   SIZEOF_ARRAY(table),                        \
 
-   sizeof(table[0]),                       \
 
-   table
 
-  # define DEFINE_KSFILTER_NODE_DESCRIPTORS_NULL               \
 
-   0,                              \
 
-   sizeof(KSNODE_DESCRIPTOR),                  \
 
-   NULL
 
-  # define DEFINE_KSFILTER_CONNECTIONS(table)              \
 
-   SIZEOF_ARRAY(table),                        \
 
-   table
 
-  # define DEFINE_KSFILTER_DEFAULT_CONNECTIONS             \
 
-   0,                              \
 
-   NULL
 
-  # define DEFINE_KSFILTER_DESCRIPTOR_TABLE(table)             \
 
-   const KSFILTER_DESCRIPTOR * const table[] =
 
- struct _KSPIN_DESCRIPTOR_EX
 
- {
 
-   const KSPIN_DISPATCH* Dispatch;
 
-   const KSAUTOMATION_TABLE* AutomationTable;
 
-   KSPIN_DESCRIPTOR PinDescriptor;
 
-   ULONG Flags;
 
-  # define KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING KSFILTER_FLAG_DISPATCH_LEVEL_PROCESSING
 
-  # define KSPIN_FLAG_CRITICAL_PROCESSING KSFILTER_FLAG_CRITICAL_PROCESSING
 
-  # define KSPIN_FLAG_HYPERCRITICAL_PROCESSING KSFILTER_FLAG_HYPERCRITICAL_PROCESSING
 
-  # define KSPIN_FLAG_ASYNCHRONOUS_PROCESSING 0x00000008
 
-  # define KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING 0x00000010
 
-  # define KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL 0x00000020
 
-  # define KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING 0x00000040
 
-  # define KSPIN_FLAG_ENFORCE_FIFO 0x00000080
 
-  # define KSPIN_FLAG_GENERATE_MAPPINGS 0x00000100
 
-  # define KSPIN_FLAG_DISTINCT_TRAILING_EDGE 0x00000200
 
-  # define KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY 0x00010000
 
-  # define KSPIN_FLAG_SPLITTER 0x00020000
 
-  # define KSPIN_FLAG_USE_STANDARD_TRANSPORT 0x00040000
 
-  # define KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT 0x00080000
 
-  # define KSPIN_FLAG_FIXED_FORMAT 0x00100000
 
-  # define KSPIN_FLAG_GENERATE_EOS_EVENTS 0x00200000
 
-  # define KSPIN_FLAG_RENDERER (KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY | KSPIN_FLAG_GENERATE_EOS_EVENTS)
 
-  # define KSPIN_FLAG_IMPLEMENT_CLOCK 0x00400000
 
-  # define KSPIN_FLAG_SOME_FRAMES_REQUIRED_FOR_PROCESSING 0x00800000
 
-  # define KSPIN_FLAG_PROCESS_IF_ANY_IN_RUN_STATE 0x01000000
 
-  # define KSPIN_FLAG_DENY_USERMODE_ACCESS 0x80000000
 
-   ULONG InstancesPossible;
 
-   ULONG InstancesNecessary;
 
-   const KSALLOCATOR_FRAMING_EX* AllocatorFraming;
 
-   PFNKSINTERSECTHANDLEREX IntersectHandler;
 
- };
 
-  # define DEFINE_KSPIN_DEFAULT_INTERFACES                 \
 
-   0,                              \
 
-   NULL
 
-  # define DEFINE_KSPIN_DEFAULT_MEDIUMS                    \
 
-   0,                              \
 
-   NULL
 
- struct _KSNODE_DESCRIPTOR
 
- {
 
-   const KSAUTOMATION_TABLE* AutomationTable;
 
-   const GUID* Type;
 
-   const GUID* Name;
 
-  # ifndef _WIN64
 
-   PVOID Alignment;
 
-  # endif
 
- };
 
-  # ifndef _WIN64
 
-   #  define DEFINE_NODE_DESCRIPTOR(automation, type, name)            \
 
-   { (automation), (type), (name), NULL }
 
-  # else
 
-   #  define DEFINE_NODE_DESCRIPTOR(automation, type, name)            \
 
-   { (automation), (type), (name) }
 
-  # endif
 
- struct _KSDEVICE
 
- {
 
-   const KSDEVICE_DESCRIPTOR* Descriptor;
 
-   KSOBJECT_BAG Bag;
 
-   PVOID Context;
 
-   PDEVICE_OBJECT FunctionalDeviceObject;
 
-   PDEVICE_OBJECT PhysicalDeviceObject;
 
-   PDEVICE_OBJECT NextDeviceObject;
 
-   BOOLEAN Started;
 
-   SYSTEM_POWER_STATE SystemPowerState;
 
-   DEVICE_POWER_STATE DevicePowerState;
 
- };
 
- struct _KSFILTERFACTORY
 
- {
 
-   const KSFILTER_DESCRIPTOR* FilterDescriptor;
 
-   KSOBJECT_BAG Bag;
 
-   PVOID Context;
 
- };
 
- struct _KSFILTER
 
- {
 
-   const KSFILTER_DESCRIPTOR* Descriptor;
 
-   KSOBJECT_BAG Bag;
 
-   PVOID Context;
 
- };
 
- struct _KSPIN
 
- {
 
-   const KSPIN_DESCRIPTOR_EX* Descriptor;
 
-   KSOBJECT_BAG Bag;
 
-   PVOID Context;
 
-   ULONG Id;
 
-   KSPIN_COMMUNICATION Communication;
 
-   BOOLEAN ConnectionIsExternal;
 
-   KSPIN_INTERFACE ConnectionInterface;
 
-   KSPIN_MEDIUM ConnectionMedium;
 
-   KSPRIORITY ConnectionPriority;
 
-   PKSDATAFORMAT ConnectionFormat;
 
-   PKSMULTIPLE_ITEM AttributeList;
 
-   ULONG StreamHeaderSize;
 
-   KSPIN_DATAFLOW DataFlow;
 
-   KSSTATE DeviceState;
 
-   KSRESET ResetState;
 
-   KSSTATE ClientState;
 
- };
 
- struct _KSMAPPING
 
- {
 
-   PHYSICAL_ADDRESS PhysicalAddress;
 
-   ULONG ByteCount;
 
-   ULONG Alignment;
 
- };
 
- struct _KSSTREAM_POINTER_OFFSET
 
- {
 
-  # if defined(_NTDDK_)
 
-   __MINGW_EXTENSION union
 
-   {
 
-     PUCHAR Data;
 
-     PKSMAPPING Mappings;
 
-   };
 
-  # else
 
-   PUCHAR Data;
 
-  # endif /* _NTDDK_ */
 
-  # ifndef _WIN64
 
-   PVOID Alignment;
 
-  # endif
 
-   ULONG Count;
 
-   ULONG Remaining;
 
- };
 
- struct _KSSTREAM_POINTER
 
- {
 
-   PVOID Context;
 
-   PKSPIN Pin;
 
-   PKSSTREAM_HEADER StreamHeader;
 
-   PKSSTREAM_POINTER_OFFSET Offset;
 
-   KSSTREAM_POINTER_OFFSET OffsetIn;
 
-   KSSTREAM_POINTER_OFFSET OffsetOut;
 
- };
 
- struct _KSPROCESSPIN
 
- {
 
-   PKSPIN Pin;
 
-   PKSSTREAM_POINTER StreamPointer;
 
-   PKSPROCESSPIN InPlaceCounterpart;
 
-   PKSPROCESSPIN DelegateBranch;
 
-   PKSPROCESSPIN CopySource;
 
-   PVOID Data;
 
-   ULONG BytesAvailable;
 
-   ULONG BytesUsed;
 
-   ULONG Flags;
 
-   BOOLEAN Terminate;
 
- };
 
- struct _KSPROCESSPIN_INDEXENTRY
 
- {
 
-   PKSPROCESSPIN* Pins;
 
-   ULONG Count;
 
- };
 
- typedef enum
 
- {
 
-   KsObjectTypeDevice,
 
-   KsObjectTypeFilterFactory,
 
-   KsObjectTypeFilter,
 
-   KsObjectTypePin
 
- }KSOBJECTTYPE;
 
- typedef void (*PFNKSFREE)(PVOID Data);
 
- typedef void (*PFNKSPINFRAMERETURN)(PKSPIN Pin, PVOID Data, ULONG Size, PMDL Mdl,
 
-                                     PVOID Context, NTSTATUS Status);
 
- typedef void (*PFNKSPINIRPCOMPLETION)(PKSPIN Pin, PIRP Irp);
 
-  # if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
 
-   #  ifndef _IKsControl_
 
-    #   define _IKsControl_
 
- typedef struct IKsControl* PIKSCONTROL;
 
-    #   ifndef DEFINE_ABSTRACT_UNKNOWN
 
-     #    define DEFINE_ABSTRACT_UNKNOWN()                   \
 
-   STDMETHOD_(NTSTATUS, QueryInterface) (THIS_          \
 
-                                         REFIID InterfaceId, \
 
-                                         PVOID * Interface    \
 
-                                         )PURE;         \
 
-   STDMETHOD_(ULONG, AddRef) (THIS)PURE;                \
 
-   STDMETHOD_(ULONG, Release) (THIS)PURE;
 
-    #   endif
 
-    #   undef INTERFACE
 
-    #   define INTERFACE IKsControl
 
- DECLARE_INTERFACE_(IKsControl, IUnknown)
 
- {
 
-   DEFINE_ABSTRACT_UNKNOWN()
 
-   STDMETHOD_(NTSTATUS, KsProperty) (THIS_
 
-                                     PKSPROPERTY Property,
 
-                                     ULONG PropertyLength,
 
-                                     PVOID PropertyData,
 
-                                     ULONG DataLength,
 
-                                     ULONG * BytesReturned
 
-                                     ) PURE;
 
-   STDMETHOD_(NTSTATUS, KsMethod) (THIS_
 
-                                   PKSMETHOD Method,
 
-                                   ULONG MethodLength,
 
-                                   PVOID MethodData,
 
-                                   ULONG DataLength,
 
-                                   ULONG * BytesReturned
 
-                                   ) PURE;
 
-   STDMETHOD_(NTSTATUS, KsEvent)  (THIS_
 
-                                   PKSEVENT Event,
 
-                                   ULONG EventLength,
 
-                                   PVOID EventData,
 
-                                   ULONG DataLength,
 
-                                   ULONG * BytesReturned
 
-                                   ) PURE;
 
- };
 
- typedef struct IKsReferenceClock* PIKSREFERENCECLOCK;
 
-    #   undef INTERFACE
 
-    #   define INTERFACE IKsReferenceClock
 
- DECLARE_INTERFACE_(IKsReferenceClock, IUnknown)
 
- {
 
-   DEFINE_ABSTRACT_UNKNOWN()
 
-   STDMETHOD_(LONGLONG, GetTime)      (THIS) PURE;
 
-   STDMETHOD_(LONGLONG, GetPhysicalTime)  (THIS) PURE;
 
-   STDMETHOD_(LONGLONG, GetCorrelatedTime) (THIS_
 
-                                            PLONGLONG SystemTime
 
-                                            ) PURE;
 
-   STDMETHOD_(LONGLONG, GetCorrelatedPhysicalTime) (THIS_
 
-                                                    PLONGLONG SystemTime
 
-                                                    ) PURE;
 
-   STDMETHOD_(NTSTATUS, GetResolution)    (THIS_
 
-                                           PKSRESOLUTION Resolution
 
-                                           ) PURE;
 
-   STDMETHOD_(NTSTATUS, GetState)     (THIS_
 
-                                       PKSSTATE State
 
-                                       ) PURE;
 
- };
 
-    #   undef INTERFACE
 
-    #   define INTERFACE IKsDeviceFunctions
 
- DECLARE_INTERFACE_(IKsDeviceFunctions, IUnknown)
 
- {
 
-   DEFINE_ABSTRACT_UNKNOWN()
 
-   STDMETHOD_(NTSTATUS, RegisterAdapterObjectEx)  (THIS_
 
-                                                   PADAPTER_OBJECT AdapterObject,
 
-                                                   PDEVICE_DESCRIPTION DeviceDescription,
 
-                                                   ULONG NumberOfMapRegisters,
 
-                                                   ULONG MaxMappingsByteCount,
 
-                                                   ULONG MappingTableStride
 
-                                                   ) PURE;
 
- };
 
-    #   undef INTERFACE
 
-    #   define STATIC_IID_IKsControl                       \
 
-   0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
 
- DEFINE_GUID(IID_IKsControl,
 
-             0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96);
 
-    #   define STATIC_IID_IKsFastClock                     \
 
-   0xc9902485, 0xc180, 0x11d2, 0x84, 0x73, 0xd4, 0x23, 0x94, 0x45, 0x9e, 0x5e
 
- DEFINE_GUID(IID_IKsFastClock,
 
-             0xc9902485, 0xc180, 0x11d2, 0x84, 0x73, 0xd4, 0x23, 0x94, 0x45, 0x9e, 0x5e);
 
-    #   define STATIC_IID_IKsDeviceFunctions                   \
 
-   0xe234f2e2, 0xbd69, 0x4f8c, 0xb3, 0xf2, 0x7c, 0xd7, 0x9e, 0xd4, 0x66, 0xbd
 
- DEFINE_GUID(IID_IKsDeviceFunctions,
 
-             0xe234f2e2, 0xbd69, 0x4f8c, 0xb3, 0xf2, 0x7c, 0xd7, 0x9e, 0xd4, 0x66, 0xbd);
 
-   #  endif /* _IKsControl_ */
 
-  # endif /* defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) */
 
- #endif /* _NTDDK_ */
 
- #ifdef __cplusplus
 
- extern "C" {
 
- #endif
 
- #ifdef _KSDDK_
 
-  # define KSDDKAPI
 
- #else
 
-  # define KSDDKAPI DECLSPEC_IMPORT
 
- #endif
 
- #if defined(_NTDDK_)
 
- KSDDKAPI NTSTATUS NTAPI KsEnableEvent(PIRP Irp, ULONG EventSetsCount, const KSEVENT_SET* EventSet, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock);
 
- KSDDKAPI NTSTATUS NTAPI KsEnableEventWithAllocator(PIRP Irp, ULONG EventSetsCount, const KSEVENT_SET* EventSet, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock, PFNKSALLOCATOR Allocator, ULONG EventItemSize);
 
- KSDDKAPI NTSTATUS NTAPI KsDisableEvent(PIRP Irp, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock);
 
- KSDDKAPI VOID NTAPI KsDiscardEvent(PKSEVENT_ENTRY EventEntry);
 
- KSDDKAPI VOID NTAPI KsFreeEventList(PFILE_OBJECT FileObject, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock);
 
- KSDDKAPI NTSTATUS NTAPI KsGenerateEvent(PKSEVENT_ENTRY EventEntry);
 
- KSDDKAPI NTSTATUS NTAPI KsGenerateDataEvent(PKSEVENT_ENTRY EventEntry, ULONG DataSize, PVOID Data);
 
- KSDDKAPI VOID NTAPI KsGenerateEventList(GUID* Set, ULONG EventId, PLIST_ENTRY EventsList, KSEVENTS_LOCKTYPE EventsFlags, PVOID EventsLock);
 
- KSDDKAPI NTSTATUS NTAPI KsPropertyHandler(PIRP Irp, ULONG PropertySetsCount, const KSPROPERTY_SET* PropertySet);
 
- KSDDKAPI NTSTATUS NTAPI KsPropertyHandlerWithAllocator(PIRP Irp, ULONG PropertySetsCount, const KSPROPERTY_SET* PropertySet, PFNKSALLOCATOR Allocator, ULONG PropertyItemSize);
 
- KSDDKAPI BOOLEAN NTAPI KsFastPropertyHandler(PFILE_OBJECT FileObject, PKSPROPERTY Property, ULONG PropertyLength, PVOID Data, ULONG DataLength, PIO_STATUS_BLOCK IoStatus, ULONG PropertySetsCount, const KSPROPERTY_SET* PropertySet);
 
- KSDDKAPI NTSTATUS NTAPI KsMethodHandler(PIRP Irp, ULONG MethodSetsCount, const KSMETHOD_SET* MethodSet);
 
- KSDDKAPI NTSTATUS NTAPI KsMethodHandlerWithAllocator(PIRP Irp, ULONG MethodSetsCount, const KSMETHOD_SET* MethodSet, PFNKSALLOCATOR Allocator, ULONG MethodItemSize);
 
- KSDDKAPI BOOLEAN NTAPI KsFastMethodHandler(PFILE_OBJECT FileObject, PKSMETHOD Method, ULONG MethodLength, PVOID Data, ULONG DataLength, PIO_STATUS_BLOCK IoStatus, ULONG MethodSetsCount, const KSMETHOD_SET* MethodSet);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator(PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocatorEx(PIRP Irp, PVOID InitializeContext, PFNKSDEFAULTALLOCATE DefaultAllocate, PFNKSDEFAULTFREE DefaultFree, PFNKSINITIALIZEALLOCATOR InitializeAllocator, PFNKSDELETEALLOCATOR DeleteAllocator);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateAllocator(HANDLE ConnectionHandle, PKSALLOCATOR_FRAMING AllocatorFraming, PHANDLE AllocatorHandle);
 
- KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest(PIRP Irp, PKSALLOCATOR_FRAMING* AllocatorFraming);
 
- KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx(PKSALLOCATOR_FRAMING_EX Framing, ULONG BufferSize, const KSALLOCATOR_FRAMING_EX* PinFraming);
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClock(PKSDEFAULTCLOCK* DefaultClock);
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx(PKSDEFAULTCLOCK* DefaultClock, PVOID Context, PFNKSSETTIMER SetTimer, PFNKSCANCELTIMER CancelTimer, PFNKSCORRELATEDTIME CorrelatedTime, const KSRESOLUTION* Resolution, ULONG Flags);
 
- KSDDKAPI VOID NTAPI KsFreeDefaultClock(PKSDEFAULTCLOCK DefaultClock);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock(PIRP Irp, PKSDEFAULTCLOCK DefaultClock);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateClock(HANDLE ConnectionHandle, PKSCLOCK_CREATE ClockCreate, PHANDLE ClockHandle);
 
- KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest(PIRP Irp, PKSCLOCK_CREATE* ClockCreate);
 
- KSDDKAPI KSSTATE NTAPI KsGetDefaultClockState(PKSDEFAULTCLOCK DefaultClock);
 
- KSDDKAPI VOID NTAPI KsSetDefaultClockState(PKSDEFAULTCLOCK DefaultClock, KSSTATE State);
 
- KSDDKAPI LONGLONG NTAPI KsGetDefaultClockTime(PKSDEFAULTCLOCK DefaultClock);
 
- KSDDKAPI VOID NTAPI KsSetDefaultClockTime(PKSDEFAULTCLOCK DefaultClock, LONGLONG Time);
 
- KSDDKAPI NTSTATUS NTAPI KsCreatePin(HANDLE FilterHandle, PKSPIN_CONNECT Connect, ACCESS_MASK DesiredAccess, PHANDLE ConnectionHandle);
 
- KSDDKAPI NTSTATUS NTAPI KsValidateConnectRequest(PIRP Irp, ULONG DescriptorsCount, const KSPIN_DESCRIPTOR* Descriptor, PKSPIN_CONNECT* Connect);
 
- KSDDKAPI NTSTATUS NTAPI KsPinPropertyHandler(PIRP Irp, PKSPROPERTY Property, PVOID Data, ULONG DescriptorsCount, const KSPIN_DESCRIPTOR* Descriptor);
 
- KSDDKAPI NTSTATUS NTAPI KsPinDataIntersection(PIRP Irp, PKSP_PIN Pin, PVOID Data, ULONG DescriptorsCount, const KSPIN_DESCRIPTOR* Descriptor, PFNKSINTERSECTHANDLER IntersectHandler);
 
- KSDDKAPI NTSTATUS NTAPI KsPinDataIntersectionEx(PIRP Irp, PKSP_PIN Pin, PVOID Data, ULONG DescriptorsCount, const KSPIN_DESCRIPTOR* Descriptor, ULONG DescriptorSize, PFNKSINTERSECTHANDLEREX IntersectHandler, PVOID HandlerContext);
 
- KSDDKAPI NTSTATUS NTAPI KsHandleSizedListQuery(PIRP Irp, ULONG DataItemsCount, ULONG DataItemSize, const VOID* DataItems);
 
-  # ifndef MAKEINTRESOURCE
 
-   #  define MAKEINTRESOURCE(r) ((ULONG_PTR)(USHORT)r)
 
-  # endif
 
-  # ifndef RT_STRING
 
-   #  define RT_STRING MAKEINTRESOURCE(6)
 
-   #  define RT_RCDATA MAKEINTRESOURCE(10)
 
-  # endif
 
- KSDDKAPI NTSTATUS NTAPI KsLoadResource(PVOID ImageBase, POOL_TYPE PoolType, ULONG_PTR ResourceName, ULONG ResourceType, PVOID* Resource, PULONG ResourceSize);
 
- KSDDKAPI NTSTATUS NTAPI KsGetImageNameAndResourceId(HANDLE RegKey, PUNICODE_STRING ImageName, PULONG_PTR ResourceId, PULONG ValueType);
 
- KSDDKAPI NTSTATUS NTAPI KsMapModuleName(PDEVICE_OBJECT PhysicalDeviceObject, PUNICODE_STRING ModuleName, PUNICODE_STRING ImageName, PULONG_PTR ResourceId, PULONG ValueType);
 
- KSDDKAPI NTSTATUS NTAPI KsReferenceBusObject(KSDEVICE_HEADER Header);
 
- KSDDKAPI VOID NTAPI KsDereferenceBusObject(KSDEVICE_HEADER Header);
 
- KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificProperty(PIRP Irp, PFNKSHANDLER Handler);
 
- KSDDKAPI NTSTATUS NTAPI KsDispatchSpecificMethod(PIRP Irp, PFNKSHANDLER Handler);
 
- KSDDKAPI NTSTATUS NTAPI KsReadFile(PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, ULONG Key, KPROCESSOR_MODE RequestorMode);
 
- KSDDKAPI NTSTATUS NTAPI KsWriteFile(PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, ULONG Key, KPROCESSOR_MODE RequestorMode);
 
- KSDDKAPI NTSTATUS NTAPI KsQueryInformationFile(PFILE_OBJECT FileObject, PVOID FileInformation, ULONG Length, FILE_INFORMATION_CLASS FileInformationClass);
 
- KSDDKAPI NTSTATUS NTAPI KsSetInformationFile(PFILE_OBJECT FileObject, PVOID FileInformation, ULONG Length, FILE_INFORMATION_CLASS FileInformationClass);
 
- KSDDKAPI NTSTATUS NTAPI KsStreamIo(PFILE_OBJECT FileObject, PKEVENT Event, PVOID PortContext, PIO_COMPLETION_ROUTINE CompletionRoutine, PVOID CompletionContext, KSCOMPLETION_INVOCATION CompletionInvocationFlags, PIO_STATUS_BLOCK IoStatusBlock, PVOID StreamHeaders, ULONG Length, ULONG Flags, KPROCESSOR_MODE RequestorMode);
 
- KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(PIRP Irp, ULONG ProbeFlags, ULONG HeaderSize);
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateExtraData(PIRP Irp, ULONG ExtraSize, PVOID* ExtraBuffer);
 
- KSDDKAPI VOID NTAPI KsNullDriverUnload(PDRIVER_OBJECT DriverObject);
 
- KSDDKAPI NTSTATUS NTAPI KsSetMajorFunctionHandler(PDRIVER_OBJECT DriverObject, ULONG MajorFunction);
 
- KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsDispatchIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure(PFILE_OBJECT FileObject, BOOLEAN Wait, PVOID InputBuffer, ULONG InputBufferLength, PVOID OutputBuffer, ULONG OutputBufferLength, ULONG IoControlCode, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject);
 
- KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG Length, BOOLEAN Wait, ULONG LockKey, PVOID Buffer, PIO_STATUS_BLOCK IoStatus, PDEVICE_OBJECT DeviceObject);
 
-  # define KsDispatchFastWriteFailure KsDispatchFastReadFailure
 
- KSDDKAPI VOID NTAPI KsCancelRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI VOID NTAPI KsCancelIo(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock);
 
- KSDDKAPI VOID NTAPI KsReleaseIrpOnCancelableQueue(PIRP Irp, PDRIVER_CANCEL DriverCancel);
 
- KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock, KSLIST_ENTRY_LOCATION ListLocation, KSIRP_REMOVAL_OPERATION RemovalOperation);
 
- KSDDKAPI NTSTATUS NTAPI KsMoveIrpsOnCancelableQueue(PLIST_ENTRY SourceList, PKSPIN_LOCK SourceLock, PLIST_ENTRY DestinationList, PKSPIN_LOCK DestinationLock, KSLIST_ENTRY_LOCATION ListLocation, PFNKSIRPLISTCALLBACK ListCallback, PVOID Context);
 
- KSDDKAPI VOID NTAPI KsRemoveSpecificIrpFromCancelableQueue(PIRP Irp);
 
- KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue(PLIST_ENTRY QueueHead, PKSPIN_LOCK SpinLock, PIRP Irp, KSLIST_ENTRY_LOCATION ListLocation, PDRIVER_CANCEL DriverCancel);
 
- KSDDKAPI NTSTATUS NTAPI KsAcquireResetValue(PIRP Irp, KSRESET* ResetValue);
 
- KSDDKAPI NTSTATUS NTAPI KsTopologyPropertyHandler(PIRP Irp, PKSPROPERTY Property, PVOID Data, const KSTOPOLOGY* Topology);
 
- KSDDKAPI VOID NTAPI KsAcquireDeviceSecurityLock(KSDEVICE_HEADER Header, BOOLEAN Exclusive);
 
- KSDDKAPI VOID NTAPI KsReleaseDeviceSecurityLock(KSDEVICE_HEADER Header);
 
- KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPnp(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsDefaultDispatchPower(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI NTSTATUS NTAPI KsDefaultForwardIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
- KSDDKAPI VOID NTAPI KsSetDevicePnpAndBaseObject(KSDEVICE_HEADER Header, PDEVICE_OBJECT PnpDeviceObject, PDEVICE_OBJECT BaseObject);
 
- KSDDKAPI PDEVICE_OBJECT NTAPI KsQueryDevicePnpObject(KSDEVICE_HEADER Header);
 
- KSDDKAPI ACCESS_MASK NTAPI KsQueryObjectAccessMask(KSOBJECT_HEADER Header);
 
- KSDDKAPI VOID NTAPI KsRecalculateStackDepth(KSDEVICE_HEADER Header, BOOLEAN ReuseStackLocation);
 
- KSDDKAPI VOID NTAPI KsSetTargetState(KSOBJECT_HEADER Header, KSTARGET_STATE TargetState);
 
- KSDDKAPI VOID NTAPI KsSetTargetDeviceObject(KSOBJECT_HEADER Header, PDEVICE_OBJECT TargetDevice);
 
- KSDDKAPI VOID NTAPI KsSetPowerDispatch(KSOBJECT_HEADER Header, PFNKSCONTEXT_DISPATCH PowerDispatch, PVOID PowerContext);
 
- KSDDKAPI PKSOBJECT_CREATE_ITEM NTAPI KsQueryObjectCreateItem(KSOBJECT_HEADER Header);
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateDeviceHeader(KSDEVICE_HEADER* Header, ULONG ItemsCount, PKSOBJECT_CREATE_ITEM ItemsList);
 
- KSDDKAPI VOID NTAPI KsFreeDeviceHeader(KSDEVICE_HEADER Header);
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(KSOBJECT_HEADER* Header, ULONG ItemsCount, PKSOBJECT_CREATE_ITEM ItemsList, PIRP Irp, const KSDISPATCH_TABLE* Table);
 
- KSDDKAPI VOID NTAPI KsFreeObjectHeader(KSOBJECT_HEADER Header);
 
- KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToDeviceHeader(KSDEVICE_HEADER Header, PDRIVER_DISPATCH Create, PVOID Context, PWSTR ObjectClass, PSECURITY_DESCRIPTOR SecurityDescriptor);
 
- KSDDKAPI NTSTATUS NTAPI KsAddObjectCreateItemToObjectHeader(KSOBJECT_HEADER Header, PDRIVER_DISPATCH Create, PVOID Context, PWSTR ObjectClass, PSECURITY_DESCRIPTOR SecurityDescriptor);
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateObjectCreateItem(KSDEVICE_HEADER Header, PKSOBJECT_CREATE_ITEM CreateItem, BOOLEAN AllocateEntry, PFNKSITEMFREECALLBACK ItemFreeCallback);
 
- KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItem(KSDEVICE_HEADER Header, PUNICODE_STRING CreateItem);
 
- KSDDKAPI NTSTATUS NTAPI KsFreeObjectCreateItemsByContext(KSDEVICE_HEADER Header, PVOID Context);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateDefaultSecurity(PSECURITY_DESCRIPTOR ParentSecurity, PSECURITY_DESCRIPTOR* DefaultSecurity);
 
- KSDDKAPI NTSTATUS NTAPI KsForwardIrp(PIRP Irp, PFILE_OBJECT FileObject, BOOLEAN ReuseStackLocation);
 
- KSDDKAPI NTSTATUS NTAPI KsForwardAndCatchIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp, PFILE_OBJECT FileObject, KSSTACK_USE StackUse);
 
- KSDDKAPI NTSTATUS NTAPI KsSynchronousIoControlDevice(PFILE_OBJECT FileObject, KPROCESSOR_MODE RequestorMode, ULONG IoControl, PVOID InBuffer, ULONG InSize, PVOID OutBuffer, ULONG OutSize, PULONG BytesReturned);
 
- KSDDKAPI NTSTATUS NTAPI KsUnserializeObjectPropertiesFromRegistry(PFILE_OBJECT FileObject, HANDLE ParentKey, PUNICODE_STRING RegistryPath);
 
- KSDDKAPI NTSTATUS NTAPI KsCacheMedium(PUNICODE_STRING SymbolicLink, PKSPIN_MEDIUM Medium, ULONG PinDirection);
 
- KSDDKAPI NTSTATUS NTAPI KsRegisterWorker(WORK_QUEUE_TYPE WorkQueueType, PKSWORKER* Worker);
 
- KSDDKAPI NTSTATUS NTAPI KsRegisterCountedWorker(WORK_QUEUE_TYPE WorkQueueType, PWORK_QUEUE_ITEM CountedWorkItem, PKSWORKER* Worker);
 
- KSDDKAPI VOID NTAPI KsUnregisterWorker(PKSWORKER Worker);
 
- KSDDKAPI NTSTATUS NTAPI KsQueueWorkItem(PKSWORKER Worker, PWORK_QUEUE_ITEM WorkItem);
 
- KSDDKAPI ULONG NTAPI KsIncrementCountedWorker(PKSWORKER Worker);
 
- KSDDKAPI ULONG NTAPI KsDecrementCountedWorker(PKSWORKER Worker);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateTopologyNode(HANDLE ParentHandle, PKSNODE_CREATE NodeCreate, ACCESS_MASK DesiredAccess, PHANDLE NodeHandle);
 
- KSDDKAPI NTSTATUS NTAPI KsValidateTopologyNodeCreateRequest(PIRP Irp, PKSTOPOLOGY Topology, PKSNODE_CREATE* NodeCreate);
 
- KSDDKAPI NTSTATUS NTAPI KsMergeAutomationTables(PKSAUTOMATION_TABLE* AutomationTableAB, PKSAUTOMATION_TABLE AutomationTableA, PKSAUTOMATION_TABLE AutomationTableB, KSOBJECT_BAG Bag);
 
- KSDDKAPI NTSTATUS NTAPI KsInitializeDriver(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPathName, const KSDEVICE_DESCRIPTOR* Descriptor);
 
- KSDDKAPI NTSTATUS NTAPI KsAddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject, const KSDEVICE_DESCRIPTOR* Descriptor, ULONG ExtensionSize, PKSDEVICE* Device);
 
- KSDDKAPI NTSTATUS NTAPI KsInitializeDevice(PDEVICE_OBJECT FunctionalDeviceObject, PDEVICE_OBJECT PhysicalDeviceObject, PDEVICE_OBJECT NextDeviceObject, const KSDEVICE_DESCRIPTOR* Descriptor);
 
- KSDDKAPI void NTAPI KsTerminateDevice(PDEVICE_OBJECT DeviceObject);
 
- KSDDKAPI PKSDEVICE NTAPI KsGetDeviceForDeviceObject(PDEVICE_OBJECT FunctionalDeviceObject);
 
- KSDDKAPI void NTAPI KsAcquireDevice(PKSDEVICE Device);
 
- KSDDKAPI void NTAPI KsReleaseDevice(PKSDEVICE Device);
 
- KSDDKAPI void NTAPI KsDeviceRegisterAdapterObject(PKSDEVICE Device, PADAPTER_OBJECT AdapterObject, ULONG MaxMappingsByteCount, ULONG MappingTableStride);
 
- KSDDKAPI ULONG NTAPI KsDeviceGetBusData(PKSDEVICE Device, ULONG DataType, PVOID Buffer, ULONG Offset, ULONG Length);
 
- KSDDKAPI ULONG NTAPI KsDeviceSetBusData(PKSDEVICE Device, ULONG DataType, PVOID Buffer, ULONG Offset, ULONG Length);
 
- KSDDKAPI NTSTATUS NTAPI KsCreateFilterFactory(PDEVICE_OBJECT DeviceObject, const KSFILTER_DESCRIPTOR* Descriptor, PWSTR RefString, PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG CreateItemFlags, PFNKSFILTERFACTORYPOWER SleepCallback, PFNKSFILTERFACTORYPOWER WakeCallback, PKSFILTERFACTORY* FilterFactory);
 
-  # define KsDeleteFilterFactory(FilterFactory)                                                \
 
-   KsFreeObjectCreateItemsByContext(*(KSDEVICE_HEADER*)(                                     \
 
-                                      KsFilterFactoryGetParentDevice(FilterFactory)->FunctionalDeviceObject->DeviceExtension), \
 
-                                    FilterFactory)
 
- KSDDKAPI NTSTATUS NTAPI KsFilterFactoryUpdateCacheData(PKSFILTERFACTORY FilterFactory, const KSFILTER_DESCRIPTOR* FilterDescriptor);
 
- KSDDKAPI NTSTATUS NTAPI KsFilterFactoryAddCreateItem(PKSFILTERFACTORY FilterFactory, PWSTR RefString, PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG CreateItemFlags);
 
- KSDDKAPI NTSTATUS NTAPI KsFilterFactorySetDeviceClassesState(PKSFILTERFACTORY FilterFactory, BOOLEAN NewState);
 
- KSDDKAPI PUNICODE_STRING NTAPI KsFilterFactoryGetSymbolicLink(PKSFILTERFACTORY FilterFactory);
 
- KSDDKAPI void NTAPI KsAddEvent(PVOID Object, PKSEVENT_ENTRY EventEntry);
 
- void __forceinline KsFilterAddEvent(PKSFILTER Filter, PKSEVENT_ENTRY EventEntry)
 
- {
 
-   KsAddEvent(Filter, EventEntry);
 
- }
 
- void __forceinline KsPinAddEvent(PKSPIN Pin, PKSEVENT_ENTRY EventEntry)
 
- {
 
-   KsAddEvent(Pin, EventEntry);
 
- }
 
- KSDDKAPI NTSTATUS NTAPI KsDefaultAddEventHandler(PIRP Irp, PKSEVENTDATA EventData, PKSEVENT_ENTRY EventEntry);
 
- KSDDKAPI void NTAPI KsGenerateEvents(PVOID Object, const GUID* EventSet, ULONG EventId, ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, PVOID CallBackContext);
 
- void __forceinline KsFilterGenerateEvents(PKSFILTER Filter, const GUID* EventSet, ULONG EventId, ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, PVOID CallBackContext)
 
- {
 
-   KsGenerateEvents(Filter, EventSet, EventId, DataSize, Data, CallBack,
 
-                    CallBackContext);
 
- }
 
- void __forceinline KsPinGenerateEvents(PKSPIN Pin, const GUID* EventSet, ULONG EventId, ULONG DataSize, PVOID Data, PFNKSGENERATEEVENTCALLBACK CallBack, PVOID CallBackContext)
 
- {
 
-   KsGenerateEvents(Pin, EventSet, EventId, DataSize, Data, CallBack,
 
-                    CallBackContext);
 
- }
 
- typedef enum
 
- {
 
-   KSSTREAM_POINTER_STATE_UNLOCKED = 0,
 
-   KSSTREAM_POINTER_STATE_LOCKED
 
- }KSSTREAM_POINTER_STATE;
 
- KSDDKAPI NTSTATUS NTAPI KsPinGetAvailableByteCount(PKSPIN Pin, PLONG InputDataBytes, PLONG OutputBufferBytes);
 
- KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetLeadingEdgeStreamPointer(PKSPIN Pin, KSSTREAM_POINTER_STATE State);
 
- KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetTrailingEdgeStreamPointer(PKSPIN Pin, KSSTREAM_POINTER_STATE State);
 
- KSDDKAPI NTSTATUS NTAPI KsStreamPointerSetStatusCode(PKSSTREAM_POINTER StreamPointer, NTSTATUS Status);
 
- KSDDKAPI NTSTATUS NTAPI KsStreamPointerLock(PKSSTREAM_POINTER StreamPointer);
 
- KSDDKAPI void NTAPI KsStreamPointerUnlock(PKSSTREAM_POINTER StreamPointer, BOOLEAN Eject);
 
- KSDDKAPI void NTAPI KsStreamPointerAdvanceOffsetsAndUnlock(PKSSTREAM_POINTER StreamPointer, ULONG InUsed, ULONG OutUsed, BOOLEAN Eject);
 
- KSDDKAPI void NTAPI KsStreamPointerDelete(PKSSTREAM_POINTER StreamPointer);
 
- KSDDKAPI NTSTATUS NTAPI KsStreamPointerClone(PKSSTREAM_POINTER StreamPointer, PFNKSSTREAMPOINTER CancelCallback, ULONG ContextSize, PKSSTREAM_POINTER* CloneStreamPointer);
 
- KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvanceOffsets(PKSSTREAM_POINTER StreamPointer, ULONG InUsed, ULONG OutUsed, BOOLEAN Eject);
 
- KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvance(PKSSTREAM_POINTER StreamPointer);
 
- KSDDKAPI PMDL NTAPI KsStreamPointerGetMdl(PKSSTREAM_POINTER StreamPointer);
 
- KSDDKAPI PIRP NTAPI KsStreamPointerGetIrp(PKSSTREAM_POINTER StreamPointer, PBOOLEAN FirstFrameInIrp, PBOOLEAN LastFrameInIrp);
 
- KSDDKAPI void NTAPI KsStreamPointerScheduleTimeout(PKSSTREAM_POINTER StreamPointer, PFNKSSTREAMPOINTER Callback, ULONGLONG Interval);
 
- KSDDKAPI void NTAPI KsStreamPointerCancelTimeout(PKSSTREAM_POINTER StreamPointer);
 
- KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetFirstCloneStreamPointer(PKSPIN Pin);
 
- KSDDKAPI PKSSTREAM_POINTER NTAPI KsStreamPointerGetNextClone(PKSSTREAM_POINTER StreamPointer);
 
- KSDDKAPI NTSTATUS NTAPI KsPinHandshake(PKSPIN Pin, PKSHANDSHAKE In, PKSHANDSHAKE Out);
 
- KSDDKAPI void NTAPI KsCompletePendingRequest(PIRP Irp);
 
- KSDDKAPI KSOBJECTTYPE NTAPI KsGetObjectTypeFromIrp(PIRP Irp);
 
- KSDDKAPI PVOID NTAPI KsGetObjectFromFileObject(PFILE_OBJECT FileObject);
 
- KSDDKAPI KSOBJECTTYPE NTAPI KsGetObjectTypeFromFileObject(PFILE_OBJECT FileObject);
 
- PKSFILTER __forceinline KsGetFilterFromFileObject(PFILE_OBJECT FileObject)
 
- {
 
-   return (PKSFILTER)KsGetObjectFromFileObject(FileObject);
 
- }
 
- PKSPIN __forceinline KsGetPinFromFileObject(PFILE_OBJECT FileObject)
 
- {
 
-   return (PKSPIN)KsGetObjectFromFileObject(FileObject);
 
- }
 
- KSDDKAPI PKSGATE NTAPI KsFilterGetAndGate(PKSFILTER Filter);
 
- KSDDKAPI void NTAPI KsFilterAcquireProcessingMutex(PKSFILTER Filter);
 
- KSDDKAPI void NTAPI KsFilterReleaseProcessingMutex(PKSFILTER Filter);
 
- KSDDKAPI void NTAPI KsFilterAttemptProcessing(PKSFILTER Filter, BOOLEAN Asynchronous);
 
- KSDDKAPI PKSGATE NTAPI KsPinGetAndGate(PKSPIN Pin);
 
- KSDDKAPI void NTAPI KsPinAttachAndGate(PKSPIN Pin, PKSGATE AndGate);
 
- KSDDKAPI void NTAPI KsPinAttachOrGate(PKSPIN Pin, PKSGATE OrGate);
 
- KSDDKAPI void NTAPI KsPinAcquireProcessingMutex(PKSPIN Pin);
 
- KSDDKAPI void NTAPI KsPinReleaseProcessingMutex(PKSPIN Pin);
 
- KSDDKAPI BOOLEAN NTAPI KsProcessPinUpdate(PKSPROCESSPIN ProcessPin);
 
- KSDDKAPI void NTAPI KsPinGetCopyRelationships(PKSPIN Pin, PKSPIN* CopySource, PKSPIN* DelegateBranch);
 
- KSDDKAPI void NTAPI KsPinAttemptProcessing(PKSPIN Pin, BOOLEAN Asynchronous);
 
- KSDDKAPI PVOID NTAPI KsGetParent(PVOID Object);
 
- PKSDEVICE __forceinline KsFilterFactoryGetParentDevice(PKSFILTERFACTORY FilterFactory)
 
- {
 
-   return (PKSDEVICE)KsGetParent((PVOID)FilterFactory);
 
- }
 
- PKSFILTERFACTORY __forceinline KsFilterGetParentFilterFactory(PKSFILTER Filter)
 
- {
 
-   return (PKSFILTERFACTORY)KsGetParent((PVOID)Filter);
 
- }
 
- KSDDKAPI PKSFILTER NTAPI KsPinGetParentFilter(PKSPIN Pin);
 
- KSDDKAPI PVOID NTAPI KsGetFirstChild(PVOID Object);
 
- PKSFILTERFACTORY __forceinline KsDeviceGetFirstChildFilterFactory(PKSDEVICE Device)
 
- {
 
-   return (PKSFILTERFACTORY)KsGetFirstChild((PVOID)Device);
 
- }
 
- PKSFILTER __forceinline KsFilterFactoryGetFirstChildFilter(PKSFILTERFACTORY FilterFactory)
 
- {
 
-   return (PKSFILTER)KsGetFirstChild((PVOID)FilterFactory);
 
- }
 
- KSDDKAPI ULONG NTAPI KsFilterGetChildPinCount(PKSFILTER Filter, ULONG PinId);
 
- KSDDKAPI PKSPIN NTAPI KsFilterGetFirstChildPin(PKSFILTER Filter, ULONG PinId);
 
- KSDDKAPI PVOID NTAPI KsGetNextSibling(PVOID Object);
 
- KSDDKAPI PKSPIN NTAPI KsPinGetNextSiblingPin(PKSPIN Pin);
 
- PKSFILTERFACTORY __forceinline KsFilterFactoryGetNextSiblingFilterFactory(PKSFILTERFACTORY FilterFactory)
 
- {
 
-   return (PKSFILTERFACTORY)KsGetNextSibling((PVOID)FilterFactory);
 
- }
 
- PKSFILTER __forceinline KsFilterGetNextSiblingFilter(PKSFILTER Filter)
 
- {
 
-   return (PKSFILTER)KsGetNextSibling((PVOID)Filter);
 
- }
 
- KSDDKAPI PKSDEVICE NTAPI KsGetDevice(PVOID Object);
 
- PKSDEVICE __forceinline KsFilterFactoryGetDevice(PKSFILTERFACTORY FilterFactory)
 
- {
 
-   return KsGetDevice((PVOID)FilterFactory);
 
- }
 
- PKSDEVICE __forceinline KsFilterGetDevice(PKSFILTER Filter)
 
- {
 
-   return KsGetDevice((PVOID)Filter);
 
- }
 
- PKSDEVICE __forceinline KsPinGetDevice(PKSPIN Pin)
 
- {
 
-   return KsGetDevice((PVOID)Pin);
 
- }
 
- KSDDKAPI PKSFILTER NTAPI KsGetFilterFromIrp(PIRP Irp);
 
- KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp(PIRP Irp);
 
- KSDDKAPI ULONG NTAPI KsGetNodeIdFromIrp(PIRP Irp);
 
- KSDDKAPI void NTAPI KsAcquireControl(PVOID Object);
 
- KSDDKAPI void NTAPI KsReleaseControl(PVOID Object);
 
- void __forceinline KsFilterAcquireControl(PKSFILTER Filter)
 
- {
 
-   KsAcquireControl((PVOID)Filter);
 
- }
 
- void __forceinline KsFilterReleaseControl(PKSFILTER Filter)
 
- {
 
-   KsReleaseControl((PVOID)Filter);
 
- }
 
- void __forceinline KsPinAcquireControl(PKSPIN Pin)
 
- {
 
-   KsAcquireControl((PVOID)Pin);
 
- }
 
- void __forceinline KsPinReleaseControl(PKSPIN Pin)
 
- {
 
-   KsReleaseControl((PVOID)Pin);
 
- }
 
- KSDDKAPI NTSTATUS NTAPI KsAddItemToObjectBag(KSOBJECT_BAG ObjectBag, PVOID Item, PFNKSFREE Free);
 
- KSDDKAPI ULONG NTAPI KsRemoveItemFromObjectBag(KSOBJECT_BAG ObjectBag, PVOID Item, BOOLEAN Free);
 
-  # define KsDiscard(Object, Pointer)                   \
 
-   KsRemoveItemFromObjectBag((Object)->Bag, (PVOID)(Pointer), TRUE)
 
- KSDDKAPI NTSTATUS NTAPI KsAllocateObjectBag(PKSDEVICE Device, KSOBJECT_BAG* ObjectBag);
 
- KSDDKAPI void NTAPI KsFreeObjectBag(KSOBJECT_BAG ObjectBag);
 
- KSDDKAPI NTSTATUS NTAPI KsCopyObjectBagItems(KSOBJECT_BAG ObjectBagDestination, KSOBJECT_BAG ObjectBagSource);
 
- KSDDKAPI NTSTATUS NTAPI _KsEdit(KSOBJECT_BAG ObjectBag, PVOID* PointerToPointerToItem, ULONG NewSize, ULONG OldSize, ULONG Tag);
 
-  # define KsEdit(Object, PointerToPointer, Tag)                       \
 
-   _KsEdit((Object)->Bag, (PVOID*)(PointerToPointer),              \
 
-           sizeof(**(PointerToPointer)), sizeof(**(PointerToPointer)), (Tag))
 
-  # define KsEditSized(Object, PointerToPointer, NewSize, OldSize, Tag)            \
 
-   _KsEdit((Object)->Bag, (PVOID*)(PointerToPointer), (NewSize), (OldSize), (Tag))
 
- KSDDKAPI NTSTATUS NTAPI KsRegisterFilterWithNoKSPins(PDEVICE_OBJECT DeviceObject, const GUID* InterfaceClassGUID, ULONG PinCount, WINBOOL* PinDirection, KSPIN_MEDIUM* MediumList, GUID* CategoryList);
 
- KSDDKAPI NTSTATUS NTAPI KsFilterCreatePinFactory(PKSFILTER Filter, const KSPIN_DESCRIPTOR_EX* const PinDescriptor, PULONG PinID);
 
- KSDDKAPI NTSTATUS NTAPI KsFilterCreateNode(PKSFILTER Filter, const KSNODE_DESCRIPTOR* const NodeDescriptor, PULONG NodeID);
 
- KSDDKAPI NTSTATUS NTAPI KsFilterAddTopologyConnections(PKSFILTER Filter, ULONG NewConnectionsCount, const KSTOPOLOGY_CONNECTION* const NewTopologyConnections);
 
- KSDDKAPI NTSTATUS NTAPI KsPinGetConnectedPinInterface(PKSPIN Pin, const GUID* InterfaceId, PVOID* Interface);
 
- KSDDKAPI PFILE_OBJECT NTAPI KsPinGetConnectedPinFileObject(PKSPIN Pin);
 
- KSDDKAPI PDEVICE_OBJECT NTAPI KsPinGetConnectedPinDeviceObject(PKSPIN Pin);
 
- KSDDKAPI NTSTATUS NTAPI KsPinGetConnectedFilterInterface(PKSPIN Pin, const GUID* InterfaceId, PVOID* Interface);
 
-  # if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
 
- KSDDKAPI NTSTATUS NTAPI KsPinGetReferenceClockInterface(PKSPIN Pin, PIKSREFERENCECLOCK* Interface);
 
-  # endif /* defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) */
 
- KSDDKAPI VOID NTAPI KsPinSetPinClockTime(PKSPIN Pin, LONGLONG Time);
 
- KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrame(PKSPIN Pin, PVOID Data, ULONG Size, PKSSTREAM_HEADER StreamHeader, PVOID Context);
 
- KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrameMdl(PKSPIN Pin, PMDL Mdl, PKSSTREAM_HEADER StreamHeader, PVOID Context);
 
- KSDDKAPI void NTAPI KsPinRegisterFrameReturnCallback(PKSPIN Pin, PFNKSPINFRAMERETURN FrameReturn);
 
- KSDDKAPI void NTAPI KsPinRegisterIrpCompletionCallback(PKSPIN Pin, PFNKSPINIRPCOMPLETION IrpCompletion);
 
- KSDDKAPI void NTAPI KsPinRegisterHandshakeCallback(PKSPIN Pin, PFNKSPINHANDSHAKE Handshake);
 
- KSDDKAPI void NTAPI KsFilterRegisterPowerCallbacks(PKSFILTER Filter, PFNKSFILTERPOWER Sleep, PFNKSFILTERPOWER Wake);
 
- KSDDKAPI void NTAPI KsPinRegisterPowerCallbacks(PKSPIN Pin, PFNKSPINPOWER Sleep, PFNKSPINPOWER Wake);
 
-  # if defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__)
 
- KSDDKAPI PUNKNOWN NTAPI KsRegisterAggregatedClientUnknown(PVOID Object, PUNKNOWN ClientUnknown);
 
- KSDDKAPI PUNKNOWN NTAPI KsGetOuterUnknown(PVOID Object);
 
- PUNKNOWN __forceinline KsDeviceRegisterAggregatedClientUnknown(PKSDEVICE Device, PUNKNOWN ClientUnknown)
 
- {
 
-   return KsRegisterAggregatedClientUnknown((PVOID)Device, ClientUnknown);
 
- }
 
- PUNKNOWN __forceinline KsDeviceGetOuterUnknown(PKSDEVICE Device)
 
- {
 
-   return KsGetOuterUnknown((PVOID)Device);
 
- }
 
- PUNKNOWN __forceinline KsFilterFactoryRegisterAggregatedClientUnknown(PKSFILTERFACTORY FilterFactory, PUNKNOWN ClientUnknown)
 
- {
 
-   return KsRegisterAggregatedClientUnknown((PVOID)FilterFactory, ClientUnknown);
 
- }
 
- PUNKNOWN __forceinline KsFilterFactoryGetOuterUnknown(PKSFILTERFACTORY FilterFactory)
 
- {
 
-   return KsGetOuterUnknown((PVOID)FilterFactory);
 
- }
 
- PUNKNOWN __forceinline KsFilterRegisterAggregatedClientUnknown(PKSFILTER Filter, PUNKNOWN ClientUnknown)
 
- {
 
-   return KsRegisterAggregatedClientUnknown((PVOID)Filter, ClientUnknown);
 
- }
 
- PUNKNOWN __forceinline KsFilterGetOuterUnknown(PKSFILTER Filter)
 
- {
 
-   return KsGetOuterUnknown((PVOID)Filter);
 
- }
 
- PUNKNOWN __forceinline KsPinRegisterAggregatedClientUnknown(PKSPIN Pin, PUNKNOWN ClientUnknown)
 
- {
 
-   return KsRegisterAggregatedClientUnknown((PVOID)Pin, ClientUnknown);
 
- }
 
- PUNKNOWN __forceinline KsPinGetOuterUnknown(PKSPIN Pin)
 
- {
 
-   return KsGetOuterUnknown((PVOID)Pin);
 
- }
 
-  # endif /* defined(_UNKNOWN_H_) || defined(__IUnknown_INTERFACE_DEFINED__) */
 
- #else /* _NTDDK_ */
 
-  # ifndef KS_NO_CREATE_FUNCTIONS
 
- KSDDKAPI DWORD WINAPI KsCreateAllocator(HANDLE ConnectionHandle, PKSALLOCATOR_FRAMING AllocatorFraming, PHANDLE AllocatorHandle);
 
- KSDDKAPI DWORD NTAPI KsCreateClock(HANDLE ConnectionHandle, PKSCLOCK_CREATE ClockCreate, PHANDLE ClockHandle);
 
- KSDDKAPI DWORD WINAPI KsCreatePin(HANDLE FilterHandle, PKSPIN_CONNECT Connect, ACCESS_MASK DesiredAccess, PHANDLE ConnectionHandle);
 
- KSDDKAPI DWORD WINAPI KsCreateTopologyNode(HANDLE ParentHandle, PKSNODE_CREATE NodeCreate, ACCESS_MASK DesiredAccess, PHANDLE NodeHandle);
 
-  # endif
 
- #endif /* _NTDDK_ */
 
- #ifdef __cplusplus
 
- }
 
- #endif
 
- #define DENY_USERMODE_ACCESS(pIrp, CompleteRequest)          \
 
-   if(pIrp->RequestorMode != KernelMode){               \
 
-     pIrp->IoStatus.Information = 0;             \
 
-     pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;  \
 
-     if(CompleteRequest){                 \
 
-       IoCompleteRequest(pIrp, IO_NO_INCREMENT); }   \
 
-     return STATUS_INVALID_DEVICE_REQUEST;           \
 
-   }
 
- #endif /* _KS_ */
 
 
  |