1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503 |
- /*
- ReactOS Kernel Streaming
- Port Class
- This file is in the public domain.
- Andrew Greenwood
- NOTES:
- Does not support PC_OLD_NAMES (which is required for backwards-compatibility
- with older code)
- Obsolete macros are not implemented. For more info:
- http://www.osronline.com/ddkx/stream/audpc-struct_167n.htm
- == EXPORTS ==
- DRM (new in XP):
- * PcAddContentHandlers
- * PcCreateContentMixed
- * PcDestroyContent
- * PcForwardContentToDeviceObject
- * PcForwardContentToFileObject
- * PcForwardContentToInterface
- * PcGetContentRights
- IRP HANDLING:
- * PcCompleteIrp
- * PcDispatchIrp
- * PcForwardIrpSynchronous
- ADAPTER:
- * PcAddAdapterDevice
- * PcInitializeAdapterDriver
- FACTORIES:
- * PcNewDmaChannel
- * PcNewInterruptSync
- * PcNewMiniport
- * PcNewPort
- * PcNewRegistryKey
- * PcNewResourceList
- * PcNewResourceSublist
- * PcNewServiceGroup
- POWER MANAGEMENT:
- * PcRegisterAdapterPowerManagement
- * PcRequestNewPowerState
- PROPERTIES:
- * PcCompletePendingPropertyRequest
- * PcGetDeviceProperty
- IO TIMEOUTS:
- * PcRegisterIoTimeout
- * PcUnregisterIoTimeout
- PHYSICAL CONNECTIONS:
- * PcRegisterPhysicalConnection
- * PcRegisterPhysicalConnectionFromExternal
- * PcRegisterPhysicalConnectionToExternal
- MISC:
- * PcGetTimeInterval
- * PcRegisterSubdevice
- == AUDIO HELPER OBJECT INTERFACES ==
- IDmaChannel
- IDmaChannelSlave
- IDmaOperations
- IDrmPort (XP)
- IDrmPort2 (XP)
- IInterruptSync
- IMasterClock
- IPortClsVersion (XP)
- IPortEvents
- IPreFetchOffset (XP)
- IRegistryKey
- IResourceList
- IServiceGroup
- IServiceSink
- IUnregisterPhysicalConnection (Vista)
- IUnregisterSubdevice (Vista)
- == AUDIO PORT OBJECT INTERFACES ==
- IPort
- IPortDMus
- IPortMidi
- IPortTopology
- IPortWaveCyclic
- IPortWavePci
- == AUDIO MINIPORT OBJECT INTERFACES ==
- IMiniport
- IMiniportDMus
- IMiniportMidi
- IMiniportTopology
- IMiniportWaveCyclic
- IMiniportWavePci
- == AUDIO MINIPORT AUXILIARY INTERFACES ==
- IMusicTechnology (XP)
- IPinCount (XP)
- == AUDIO STREAM OBJECT INTERFACES ==
- IAllocatorMXF
- IDrmAudioStream (XP)
- IMiniportMidiStream
- IMiniportWaveCyclicStream
- IMiniportWavePciStream
- IMXF
- IPortWavePciStream
- ISynthSinkDMus
- == DIRECTMUSIC USERMODE SYNTH AND SYNTH SINK INTERFACES ==
- IDirectMusicSynth
- IDirectMusicSynthSink
- == AUDIO POWER MANAGEMENT INTERFACES ==
- IAdapterPowerManagement
- IPowerNotify
- */
- #ifndef PORTCLS_H
- #define PORTCLS_H
- #ifdef __cplusplus
- extern "C"
- {
- # include <wdm.h>
- }
- #else
- # include <wdm.h>
- #endif
- #include <windef.h>
- #define NOBITMAP
- #include <mmreg.h>
- #undef NOBITMAP
- #include <punknown.h>
- #include <ks.h>
- #include <ksmedia.h>
- #include <drmk.h>
- #ifdef __cplusplus
- extern "C"
- {
- # include <wdm.h>
- }
- #else
- # include <wdm.h>
- #endif
- #ifndef PC_NO_IMPORTS
- #define PORTCLASSAPI EXTERN_C __declspec(dllimport)
- #else
- #define PORTCLASSAPI EXTERN_C
- #endif
- /* TODO */
- #define PCFILTER_NODE ((ULONG) -1)
- /* HACK */
- /* typedef PVOID CM_RESOURCE_TYPE; */
- #define _100NS_UNITS_PER_SECOND 10000000L
- #define PORT_CLASS_DEVICE_EXTENSION_SIZE ( 64 * sizeof(ULONG_PTR) )
- DEFINE_GUID(CLSID_MiniportDriverFmSynth, 0xb4c90ae0L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(CLSID_MiniportDriverFmSynthWithVol, 0xe5a3c139L, 0xf0f2, 0x11d1, 0x81, 0xaf, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
- /* ===============================================================
- Event Item Flags - TODO
- */
- #define PCEVENT_ITEM_FLAG_ENABLE KSEVENT_TYPE_ENABLE
- #define PCEVENT_ITEM_FLAG_ONESHOT KSEVENT_TYPE_ONESHOT
- #define PCEVENT_ITEM_FLAG_BASICSUPPORT KSEVENT_TYPE_BASICSUPPORT
- /* ===============================================================
- Event Verbs - TODO
- */
- #define PCEVENT_VERB_NONE 0
- #define PCEVENT_VERB_ADD 1
- #define PCEVENT_VERB_REMOVE 2
- #define PCEVENT_VERB_SUPPORT 4
- /* ===============================================================
- Method Item Flags - TODO
- */
- #define PCMETHOD_ITEM_FLAG_NONE KSMETHOD_TYPE_NONE
- #define PCMETHOD_ITEM_FLAG_READ KSMETHOD_TYPE_READ
- #define PCMETHOD_ITEM_FLAG_WRITE KSMETHOD_TYPE_WRITE
- #define PCMETHOD_ITEM_FLAG_MODIFY KSMETHOD_TYPE_MODIFY
- #define PCMETHOD_ITEM_FLAG_SOURCE KSMETHOD_TYPE_SOURCE
- /* ===============================================================
- Method Verbs - TODO
- */
- #define PCMETHOD_ITEM_FLAG_BASICSUPPORT KSMETHOD_TYPE_BASICSUPPORT
- #define PCMETHOD_ITEM_FLAG_SEND
- #define PCMETHOD_ITEM_FLAG_SETSUPPORT
- /* ===============================================================
- Versions
- IoIsWdmVersionAvailable may also be used by older drivers.
- */
- enum
- {
- kVersionInvalid = -1,
- kVersionWin98,
- kVersionWin98SE,
- kVersionWin2K,
- kVersionWin98SE_QFE2,
- kVersionWin2K_SP2,
- kVersionWinME,
- kVersionWin98SE_QFE3,
- kVersionWinME_QFE1,
- kVersionWinXP,
- kVersionWinXPSP1,
- kVersionWinServer2003,
- kVersionWin2K_UAAQFE, /* These support IUnregister* interface */
- kVersionWinXP_UAAQFE,
- kVersionWinServer2003_UAAQFE
- };
- /* ===============================================================
- Properties
- */
- struct _PCPROPERTY_REQUEST;
- typedef struct _PCPROPERTY_REQUEST PCPROPERTY_REQUEST, *PPCPROPERTY_REQUEST;
- typedef NTSTATUS (NTAPI *PCPFNPROPERTY_HANDLER)(
- IN PPCPROPERTY_REQUEST PropertyRequest);
- typedef struct
- {
- const GUID * Set;
- ULONG Id;
- ULONG Flags;
- #define PCPROPERTY_ITEM_FLAG_GET KSPROPERTY_TYPE_GET
- #define PCPROPERTY_ITEM_FLAG_SET KSPROPERTY_TYPE_SET
- #define PCPROPERTY_ITEM_FLAG_BASICSUPPORT KSPROPERTY_TYPE_BASICSUPPORT
- //not supported #define PCPROPERTY_ITEM_FLAG_RELATIONS KSPROPERTY_TYPE_RELATIONS
- #define PCPROPERTY_ITEM_FLAG_SERIALIZERAW KSPROPERTY_TYPE_SERIALIZERAW
- #define PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW KSPROPERTY_TYPE_UNSERIALIZERAW
- #define PCPROPERTY_ITEM_FLAG_SERIALIZESIZE KSPROPERTY_TYPE_SERIALIZESIZE
- #define PCPROPERTY_ITEM_FLAG_SERIALIZE\
- (PCPROPERTY_ITEM_FLAG_SERIALIZERAW\
- |PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW\
- |PCPROPERTY_ITEM_FLAG_SERIALIZESIZE\
- )
- #define PCPROPERTY_ITEM_FLAG_DEFAULTVALUES KSPROPERTY_TYPE_DEFAULTVALUES
- PCPFNPROPERTY_HANDLER Handler;
- }
- PCPROPERTY_ITEM, *PPCPROPERTY_ITEM;
- struct _PCPROPERTY_REQUEST
- {
- PUNKNOWN MajorTarget;
- PUNKNOWN MinorTarget;
- ULONG Node;
- const PCPROPERTY_ITEM * PropertyItem;
- ULONG Verb;
- ULONG InstanceSize;
- PVOID Instance;
- ULONG ValueSize;
- PVOID Value;
- PIRP Irp;
- };
- struct _PCEVENT_REQUEST;
- typedef NTSTATUS (NTAPI *PCPFNEVENT_HANDLER)(
- IN struct _PCEVENT_REQUEST* EventRequest);
- typedef struct _PCEVENT_ITEM
- {
- const GUID* Set;
- ULONG Id;
- ULONG Flags;
- PCPFNEVENT_HANDLER Handler;
- } PCEVENT_ITEM, *PPCEVENT_ITEM;
- typedef struct _PCEVENT_REQUEST
- {
- PUNKNOWN MajorTarget;
- PUNKNOWN MinorTarget;
- ULONG Node;
- const PCEVENT_ITEM* EventItem;
- PKSEVENT_ENTRY EventEntry;
- ULONG Verb;
- PIRP Irp;
- } PCEVENT_REQUEST, *PPCEVENT_REQUEST;
- struct _PCMETHOD_REQUEST;
- typedef NTSTATUS (NTAPI *PCPFNMETHOD_HANDLER)(
- IN struct _PCMETHOD_REQUEST* MethodRequest);
- typedef struct _PCMETHOD_ITEM
- {
- const GUID* Set;
- ULONG Id;
- ULONG Flags;
- PCPFNMETHOD_HANDLER Handler;
- } PCMETHOD_ITEM, *PPCMETHOD_ITEM;
- typedef struct _PCMETHOD_REQUEST
- {
- PUNKNOWN MajorTarget;
- PUNKNOWN MinorTarget;
- ULONG Node;
- const PCMETHOD_ITEM* MethodItem;
- ULONG Verb;
- } PCMETHOD_REQUEST, *PPCMETHOD_REQUEST;
- /* ===============================================================
- Structures (unsorted)
- */
- typedef struct
- {
- ULONG PropertyItemSize;
- ULONG PropertyCount;
- const PCPROPERTY_ITEM* Properties;
- ULONG MethodItemSize;
- ULONG MethodCount;
- const PCMETHOD_ITEM* Methods;
- ULONG EventItemSize;
- ULONG EventCount;
- const PCEVENT_ITEM* Events;
- ULONG Reserved;
- } PCAUTOMATION_TABLE, *PPCAUTOMATION_TABLE;
- typedef struct
- {
- ULONG FromNode;
- ULONG FromNodePin;
- ULONG ToNode;
- ULONG ToNodePin;
- } PCCONNECTION_DESCRIPTOR, *PPCCONNECTIONDESCRIPTOR;
- typedef struct
- {
- ULONG MaxGlobalInstanceCount;
- ULONG MaxFilterInstanceCount;
- ULONG MinFilterInstanceCount;
- const PCAUTOMATION_TABLE* AutomationTable;
- KSPIN_DESCRIPTOR KsPinDescriptor;
- } PCPIN_DESCRIPTOR, *PPCPIN_DESCRIPTOR;
- typedef struct
- {
- ULONG Flags;
- const PCAUTOMATION_TABLE* AutomationTable;
- const GUID* Type;
- const GUID* Name;
- } PCNODE_DESCRIPTOR, *PPCNODE_DESCRIPTOR;
- typedef struct
- {
- ULONG Version;
- const PCAUTOMATION_TABLE* AutomationTable;
- ULONG PinSize;
- ULONG PinCount;
- const PCPIN_DESCRIPTOR* Pins;
- ULONG NodeSize;
- ULONG NodeCount;
- const PCNODE_DESCRIPTOR* Nodes;
- ULONG ConnectionCount;
- const PCCONNECTION_DESCRIPTOR* Connections;
- ULONG CategoryCount;
- const GUID* Categories;
- } PCFILTER_DESCRIPTOR, *PPCFILTER_DESCRIPTOR;
- #define DEFINE_PCAUTOMATION_TABLE_PROP(AutomationTable,PropertyTable)\
- const PCAUTOMATION_TABLE AutomationTable =\
- {\
- sizeof(PropertyTable[0]),\
- SIZEOF_ARRAY(PropertyTable),\
- (const PCPROPERTY_ITEM *) PropertyTable,\
- 0,0,NULL,\
- 0,0,NULL,\
- 0\
- }
- /* ===============================================================
- IResourceList Interface
- */
- #undef INTERFACE
- #define INTERFACE IResourceList
- DEFINE_GUID(IID_IResourceList, 0x22C6AC60L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
- DECLARE_INTERFACE_(IResourceList, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(ULONG, NumberOfEntries)( THIS ) PURE;
- STDMETHOD_(ULONG, NumberOfEntriesOfType)( THIS_
- IN CM_RESOURCE_TYPE Type) PURE;
- STDMETHOD_(PCM_PARTIAL_RESOURCE_DESCRIPTOR, FindTranslatedEntry)( THIS_
- IN CM_RESOURCE_TYPE Type,
- IN ULONG Index) PURE;
- STDMETHOD_(PCM_PARTIAL_RESOURCE_DESCRIPTOR, FindUntranslatedEntry)( THIS_
- IN CM_RESOURCE_TYPE Type,
- IN ULONG Index) PURE;
- STDMETHOD_(NTSTATUS, AddEntry)( THIS_
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Translated,
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated) PURE;
- STDMETHOD_(NTSTATUS, AddEntryFromParent)( THIS_
- IN IResourceList* Parent,
- IN CM_RESOURCE_TYPE Type,
- IN ULONG Index) PURE;
- STDMETHOD_(PCM_RESOURCE_LIST, TranslatedList)( THIS ) PURE;
- STDMETHOD_(PCM_RESOURCE_LIST, UntranslatedList)( THIS ) PURE;
- };
- #define IMP_IResourceList \
- STDMETHODIMP_(ULONG) NumberOfEntries(void); \
- \
- STDMETHODIMP_(ULONG) NumberOfEntriesOfType( \
- IN CM_RESOURCE_TYPE Type); \
- \
- STDMETHODIMP_(PCM_PARTIAL_RESOURCE_DESCRIPTOR) FindTranslatedEntry( \
- IN CM_RESOURCE_TYPE Type, \
- IN ULONG Index); \
- \
- STDMETHODIMP_(PCM_PARTIAL_RESOURCE_DESCRIPTOR) FindUntranslatedEntry( \
- IN CM_RESOURCE_TYPE Type, \
- IN ULONG Index); \
- \
- STDMETHODIMP_(NTSTATUS) AddEntry( \
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Translated, \
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated); \
- \
- STDMETHODIMP_(NTSTATUS) AddEntryFromParent( \
- IN IResourceList* Parent, \
- IN CM_RESOURCE_TYPE Type, \
- IN ULONG Index); \
- \
- STDMETHODIMP_(PCM_RESOURCE_LIST) TranslatedList(void); \
- STDMETHODIMP_(PCM_RESOURCE_LIST) UntranslatedList(void);
- typedef IResourceList *PRESOURCELIST;
- #define NumberOfPorts() \
- NumberOfEntriesOfType(CmResourceTypePort)
- #define FindTranslatedPort(n) \
- FindTranslatedEntry(CmResourceTypePort, (n))
- #define FindUntranslatedPort(n) \
- FindUntranslatedEntry(CmResourceTypePort, (n))
- #define AddPortFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypePort, (n))
- #define NumberOfInterrupts() \
- NumberOfEntriesOfType(CmResourceTypeInterrupt)
- #define FindTranslatedInterrupt(n) \
- FindTranslatedEntry(CmResourceTypeInterrupt, (n))
- #define FindUntranslatedInterrupt(n) \
- FindUntranslatedEntry(CmResourceTypeInterrupt, (n))
- #define AddInterruptFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeInterrupt, (n))
- #define NumberOfMemories() \
- NumberOfEntriesOfType(CmResourceTypeMemory)
- #define FindTranslatedMemory(n) \
- FindTranslatedEntry(CmResourceTypeMemory, (n))
- #define FindUntranslatedMemory(n) \
- FindUntranslatedEntry(CmResourceTypeMemory, (n))
- #define AddMemoryFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeMemory, (n))
- #define NumberOfDmas() \
- NumberOfEntriesOfType(CmResourceTypeDma)
- #define FindTranslatedDma(n) \
- FindTranslatedEntry(CmResourceTypeDma, (n))
- #define FindUntranslatedDma(n) \
- FindUntranslatedEntry(CmResourceTypeDma, (n))
- #define AddDmaFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeInterrupt, (n))
- #define NumberOfDeviceSpecifics() \
- NumberOfEntriesOfType(CmResourceTypeDeviceSpecific)
- #define FindTranslatedDeviceSpecific(n) \
- FindTranslatedEntry(CmResourceTypeDeviceSpecific, (n))
- #define FindUntranslatedDeviceSpecific(n) \
- FindUntranslatedEntry(CmResourceTypeDeviceSpecific, (n))
- #define AddDeviceSpecificFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeDeviceSpecific, (n))
- #define NumberOfBusNumbers() \
- NumberOfEntriesOfType(CmResourceTypeBusNumber)
- #define FindTranslatedBusNumber(n) \
- FindTranslatedEntry(CmResourceTypeBusNumber, (n))
- #define FindUntranslatedBusNumber(n) \
- FindUntranslatedEntry(CmResourceTypeBusNumber, (n))
- #define AddBusNumberFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeBusNumber, (n))
- #define NumberOfDevicePrivates() \
- NumberOfEntriesOfType(CmResourceTypeDevicePrivate)
- #define FindTranslatedDevicePrivate(n) \
- FindTranslatedEntry(CmResourceTypeDevicePrivate, (n))
- #define FindUntranslatedDevicePrivate(n) \
- FindUntranslatedEntry(CmResourceTypeDevicePrivate, (n))
- #define AddDevicePrivateFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeDevicePrivate, (n))
- #define NumberOfAssignedResources() \
- NumberOfEntriesOfType(CmResourceTypeAssignedResource)
- #define FindTranslatedAssignedResource(n) \
- FindTranslatedEntry(CmResourceTypeAssignedResource, (n))
- #define FindUntranslatedAssignedResource(n) \
- FindUntranslatedEntry(CmResourceTypeAssignedResource, (n))
- #define AddAssignedResourceFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeAssignedResource, (n))
- #define NumberOfSubAllocateFroms() \
- NumberOfEntriesOfType(CmResourceTypeSubAllocateFrom)
- #define FindTranslatedSubAllocateFrom(n) \
- FindTranslatedEntry(CmResourceTypeSubAllocateFrom, (n))
- #define FindUntranslatedSubAllocateFrom(n) \
- FindUntranslatedEntry(CmResourceTypeSubAllocateFrom, (n))
- #define AddSubAllocateFromFromParent(p, n) \
- AddEntryFromParent((p), CmResourceTypeSubAllocateFrom, (n))
- #undef INTERFACE
- /* ===============================================================
- IServiceSink Interface
- */
- #define INTERFACE IServiceSink
- DEFINE_GUID(IID_IServiceSink, 0x22C6AC64L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
- DECLARE_INTERFACE_(IServiceSink, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(void, RequestService)( THIS ) PURE;
- };
- #define IMP_IServiceSink \
- STDMETHODIMP_(void) RequestService(void);
- typedef IServiceSink *PSERVICESINK;
- /* ===============================================================
- IServiceGroup Interface
- */
- #undef INTERFACE
- #define INTERFACE IServiceGroup
- DEFINE_GUID(IID_IServiceGroup, 0x22C6AC65L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
- DECLARE_INTERFACE_(IServiceGroup, IServiceSink)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(void, RequestService)( THIS ) PURE; /* IServiceSink */
- STDMETHOD_(NTSTATUS, AddMember)( THIS_
- IN PSERVICESINK pServiceSink) PURE;
- STDMETHOD_(void, RemoveMember)( THIS_
- IN PSERVICESINK pServiceSink) PURE;
- STDMETHOD_(void, SupportDelayedService)( THIS ) PURE;
- STDMETHOD_(void, RequestDelayedService)( THIS_
- IN ULONGLONG ullDelay) PURE;
- STDMETHOD_(void, CancelDelayedService)( THIS ) PURE;
- };
- #define IMP_IServiceGroup \
- IMP_IServiceSink; \
- \
- STDMETHODIMP_(NTSTATUS) AddMember( \
- IN PSERVICESINK pServiceSink); \
- \
- STDMETHODIMP_(void) RemoveMember( \
- IN PSERVICESINK pServiceSink); \
- \
- STDMETHODIMP_(void) SupportDelayedService(void); \
- \
- STDMETHODIMP_(void) RequestDelayedService( \
- IN ULONGLONG ullDelay); \
- \
- STDMETHODIMP_(void) CancelDelayedService(void);
- typedef IServiceGroup *PSERVICEGROUP;
- #if (NTDDI_VERSION >= NTDDI_WS03)
- /* ===============================================================
- IUnregisterSubdevice Interface
- */
- DEFINE_GUID(IID_IUnregisterSubdevice, 0x16738177L, 0xe199, 0x41f9, 0x9a, 0x87, 0xab, 0xb2, 0xa5, 0x43, 0x2f, 0x21);
- #undef INTERFACE
- #define INTERFACE IUnregisterSubdevice
- DECLARE_INTERFACE_(IUnregisterSubdevice,IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS,UnregisterSubdevice)(THIS_
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNKNOWN Unknown)PURE;
- };
- typedef IUnregisterSubdevice *PUNREGISTERSUBDEVICE;
- #define IMP_IUnregisterSubdevice \
- STDMETHODIMP_(NTSTATUS) UnregisterSubdevice(THIS_ \
- IN PDEVICE_OBJECT DeviceObject, \
- IN PUNKNOWN Unknown)
- /* ===============================================================
- IUnregisterPhysicalConnection Interface
- */
- #undef INTERFACE
- #define INTERFACE IUnregisterPhysicalConnection
- DEFINE_GUID(IID_IUnregisterPhysicalConnection, 0x6c38e231L, 0x2a0d, 0x428d, 0x81, 0xf8, 0x07, 0xcc, 0x42, 0x8b, 0xb9, 0xa4);
- DECLARE_INTERFACE_(IUnregisterPhysicalConnection,IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS,UnregisterPhysicalConnection)(THIS_
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNKNOWN FromUnknown,
- IN ULONG FromPin,
- IN PUNKNOWN ToUnknown,
- IN ULONG ToPin)PURE;
- STDMETHOD_(NTSTATUS,UnregisterPhysicalConnectionToExternal)(THIS_
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNKNOWN FromUnknown,
- IN ULONG FromPin,
- IN PUNICODE_STRING ToString,
- IN ULONG ToPin)PURE;
- STDMETHOD_(NTSTATUS,UnregisterPhysicalConnectionFromExternal)(THIS_
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNICODE_STRING FromString,
- IN ULONG FromPin,
- IN PUNKNOWN ToUnknown,
- IN ULONG ToPin)PURE;
- };
- typedef IUnregisterPhysicalConnection *PUNREGISTERPHYSICALCONNECTION;
- #endif
- #define IMP_IUnregisterPhysicalConnection \
- STDMETHODIMP_(NTSTATUS) UnregisterPhysicalConnection( \
- IN PDEVICE_OBJECT DeviceObject, \
- IN PUNKNOWN FromUnknown, \
- IN ULONG FromPin, \
- IN PUNKNOWN ToUnknown, \
- IN ULONG ToPin); \
- \
- STDMETHODIMP_(NTSTATUS) UnregisterPhysicalConnectionToExternal( \
- IN PDEVICE_OBJECT DeviceObject, \
- IN PUNKNOWN FromUnknown, \
- IN ULONG FromPin, \
- IN PUNICODE_STRING ToString, \
- IN ULONG ToPin); \
- \
- STDMETHODIMP_(NTSTATUS) UnregisterPhysicalConnectionFromExternal( \
- IN PDEVICE_OBJECT DeviceObject, \
- IN PUNICODE_STRING FromString, \
- IN ULONG FromPin, \
- IN PUNKNOWN ToUnknown, \
- IN ULONG ToPin)
- /* ===============================================================
- IDmaChannel Interface
- */
- #define DEFINE_ABSTRACT_DMACHANNEL() \
- STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \
- IN ULONG BufferSize, \
- IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL) PURE; \
- \
- STDMETHOD_(void, FreeBuffer)( THIS ) PURE; \
- STDMETHOD_(ULONG, TransferCount)( THIS ) PURE; \
- STDMETHOD_(ULONG, MaximumBufferSize)( THIS ) PURE; \
- STDMETHOD_(ULONG, AllocatedBufferSize)( THIS ) PURE; \
- STDMETHOD_(ULONG, BufferSize)( THIS ) PURE; \
- \
- STDMETHOD_(void, SetBufferSize)( THIS_ \
- IN ULONG BufferSize) PURE; \
- \
- STDMETHOD_(PVOID, SystemAddress)( THIS ) PURE; \
- STDMETHOD_(PHYSICAL_ADDRESS, PhysicalAddress)( THIS ) PURE; \
- STDMETHOD_(PADAPTER_OBJECT, GetAdapterObject)( THIS ) PURE; \
- \
- STDMETHOD_(void, CopyTo)( THIS_ \
- IN PVOID Destination, \
- IN PVOID Source, \
- IN ULONG ByteCount) PURE; \
- \
- STDMETHOD_(void, CopyFrom)( THIS_ \
- IN PVOID Destination, \
- IN PVOID Source, \
- IN ULONG ByteCount) PURE;
- #define IMP_IDmaChannel \
- STDMETHODIMP_(NTSTATUS) AllocateBuffer( \
- IN ULONG BufferSize, \
- IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL); \
- \
- STDMETHODIMP_(void) FreeBuffer(void); \
- STDMETHODIMP_(ULONG) TransferCount(void); \
- STDMETHODIMP_(ULONG) MaximumBufferSize(void); \
- STDMETHODIMP_(ULONG) AllocatedBufferSize(void); \
- STDMETHODIMP_(ULONG) BufferSize(void); \
- \
- STDMETHODIMP_(void) SetBufferSize( \
- IN ULONG BufferSize); \
- \
- STDMETHODIMP_(PVOID) SystemAddress(void); \
- STDMETHODIMP_(PHYSICAL_ADDRESS) PhysicalAddress(void); \
- STDMETHODIMP_(PADAPTER_OBJECT) GetAdapterObject(void); \
- \
- STDMETHODIMP_(void) CopyTo( \
- IN PVOID Destination, \
- IN PVOID Source, \
- IN ULONG ByteCount); \
- \
- STDMETHODIMP_(void) CopyFrom( \
- IN PVOID Destination, \
- IN PVOID Source, \
- IN ULONG ByteCount)
- #undef INTERFACE
- #define INTERFACE IDmaChannel
- DEFINE_GUID(IID_IDmaChannel, 0x22C6AC61L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
- DECLARE_INTERFACE_(IDmaChannel, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_DMACHANNEL()
- };
- typedef IDmaChannel *PDMACHANNEL;
- /* ===============================================================
- IDmaChannelSlave Interface
- */
- #define DEFINE_ABSTRACT_DMACHANNELSLAVE() \
- STDMETHOD_(NTSTATUS, Start)( THIS_ \
- IN ULONG MapSize, \
- IN BOOLEAN WriteToDevice) PURE; \
- \
- STDMETHOD_(NTSTATUS, Stop)( THIS ) PURE; \
- STDMETHOD_(ULONG, ReadCounter)( THIS ) PURE; \
- \
- STDMETHOD_(NTSTATUS, WaitForTC)( THIS_ \
- ULONG Timeout) PURE;
- #define IMP_IDmaChannelSlave \
- IMP_IDmaChannel; \
- STDMETHODIMP_(NTSTATUS) Start( \
- IN ULONG MapSize, \
- IN BOOLEAN WriteToDevice); \
- \
- STDMETHODIMP_(NTSTATUS) Stop(void); \
- STDMETHODIMP_(ULONG) ReadCounter(void); \
- \
- STDMETHODIMP_(NTSTATUS) WaitForTC( \
- ULONG Timeout)
- #undef INTERFACE
- #define INTERFACE IDmaChannelSlave
- #if (NTDDI_VERSION < NTDDI_LONGHORN)
- DEFINE_GUID(IID_IDmaChannelSlave, 0x22C6AC62L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
- #endif
- #undef INTERFACE
- #define INTERFACE IDmaChannelSlave
- DECLARE_INTERFACE_(IDmaChannelSlave, IDmaChannel)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_DMACHANNEL()
- DEFINE_ABSTRACT_DMACHANNELSLAVE()
- };
- typedef IDmaChannelSlave *PDMACHANNELSLAVE;
- /* ===============================================================
- IInterruptSync Interface
- */
- typedef enum
- {
- InterruptSyncModeNormal = 1,
- InterruptSyncModeAll,
- InterruptSyncModeRepeat
- } INTERRUPTSYNCMODE;
- struct IInterruptSync;
- typedef NTSTATUS (NTAPI *PINTERRUPTSYNCROUTINE)(
- IN struct IInterruptSync* InterruptSync,
- IN PVOID DynamicContext);
- #undef INTERFACE
- #define INTERFACE IInterruptSync
- DECLARE_INTERFACE_(IInterruptSync, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS, CallSynchronizedRoutine)( THIS_
- IN PINTERRUPTSYNCROUTINE Routine,
- IN PVOID DynamicContext) PURE;
- STDMETHOD_(PKINTERRUPT, GetKInterrupt)( THIS ) PURE;
- STDMETHOD_(NTSTATUS, Connect)( THIS ) PURE;
- STDMETHOD_(void, Disconnect)( THIS ) PURE;
- STDMETHOD_(NTSTATUS, RegisterServiceRoutine)( THIS_
- IN PINTERRUPTSYNCROUTINE Routine,
- IN PVOID DynamicContext,
- IN BOOLEAN First) PURE;
- };
- DEFINE_GUID(IID_IInterruptSync, 0x22C6AC63L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
- #define IMP_IInterruptSync \
- STDMETHODIMP_(NTSTATUS) CallSynchronizedRoutine( \
- IN PINTERRUPTSYNCROUTINE Routine, \
- IN PVOID DynamicContext); \
- \
- STDMETHODIMP_(PKINTERRUPT) GetKInterrupt(void); \
- STDMETHODIMP_(NTSTATUS) Connect(void); \
- STDMETHODIMP_(void) Disconnect(void); \
- \
- STDMETHODIMP_(NTSTATUS) RegisterServiceRoutine( \
- IN PINTERRUPTSYNCROUTINE Routine, \
- IN PVOID DynamicContext, \
- IN BOOLEAN First)
- typedef IInterruptSync *PINTERRUPTSYNC;
- /* ===============================================================
- IRegistryKey Interface
- */
- #undef INTERFACE
- #define INTERFACE IRegistryKey
- enum
- {
- GeneralRegistryKey,
- DeviceRegistryKey,
- DriverRegistryKey,
- HwProfileRegistryKey,
- DeviceInterfaceRegistryKey
- };
- DEFINE_GUID(IID_IRegistryKey, 0xE8DA4302l, 0xF304, 0x11D0, 0x95, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3);
- DECLARE_INTERFACE_(IRegistryKey, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS, QueryKey)( THIS_
- IN KEY_INFORMATION_CLASS KeyInformationClass,
- OUT PVOID KeyInformation,
- IN ULONG Length,
- OUT PULONG ResultLength) PURE;
- STDMETHOD_(NTSTATUS, EnumerateKey)( THIS_
- IN ULONG Index,
- IN KEY_INFORMATION_CLASS KeyInformationClass,
- OUT PVOID KeyInformation,
- IN ULONG Length,
- OUT PULONG ResultLength) PURE;
- STDMETHOD_(NTSTATUS, QueryValueKey)( THIS_
- IN PUNICODE_STRING ValueName,
- IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
- OUT PVOID KeyValueInformation,
- IN ULONG Length,
- OUT PULONG ResultLength) PURE;
- STDMETHOD_(NTSTATUS, EnumerateValueKey)( THIS_
- IN ULONG Index,
- IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
- OUT PVOID KeyValueInformation,
- IN ULONG Length,
- OUT PULONG ResultLength) PURE;
- STDMETHOD_(NTSTATUS, SetValueKey)( THIS_
- IN PUNICODE_STRING ValueName OPTIONAL,
- IN ULONG Type,
- IN PVOID Data,
- IN ULONG DataSize) PURE;
- STDMETHOD_(NTSTATUS, QueryRegistryValues)( THIS_
- IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
- IN PVOID Context OPTIONAL) PURE;
- STDMETHOD_(NTSTATUS, NewSubKey)( THIS_
- OUT IRegistryKey** RegistrySubKey,
- IN PUNKNOWN OuterUnknown,
- IN ACCESS_MASK DesiredAccess,
- IN PUNICODE_STRING SubKeyName,
- IN ULONG CreateOptions,
- OUT PULONG Disposition OPTIONAL) PURE;
- STDMETHOD_(NTSTATUS, DeleteKey)( THIS ) PURE;
- };
- #define IMP_IRegistryKey \
- STDMETHODIMP_(NTSTATUS) QueryKey( \
- IN KEY_INFORMATION_CLASS KeyInformationClass, \
- OUT PVOID KeyInformation, \
- IN ULONG Length, \
- OUT PULONG ResultLength); \
- \
- STDMETHODIMP_(NTSTATUS) EnumerateKey( \
- IN ULONG Index, \
- IN KEY_INFORMATION_CLASS KeyInformationClass, \
- OUT PVOID KeyInformation, \
- IN ULONG Length, \
- OUT PULONG ResultLength); \
- \
- STDMETHODIMP_(NTSTATUS) QueryValueKey( \
- IN PUNICODE_STRING ValueName, \
- IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, \
- OUT PVOID KeyValueInformation, \
- IN ULONG Length, \
- OUT PULONG ResultLength); \
- \
- STDMETHODIMP_(NTSTATUS) EnumerateValueKey( \
- IN ULONG Index, \
- IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, \
- OUT PVOID KeyValueInformation, \
- IN ULONG Length, \
- OUT PULONG ResultLength); \
- \
- STDMETHODIMP_(NTSTATUS) SetValueKey( \
- IN PUNICODE_STRING ValueName OPTIONAL, \
- IN ULONG Type, \
- IN PVOID Data, \
- IN ULONG DataSize); \
- \
- STDMETHODIMP_(NTSTATUS) QueryRegistryValues( \
- IN PRTL_QUERY_REGISTRY_TABLE QueryTable, \
- IN PVOID Context OPTIONAL); \
- \
- STDMETHODIMP_(NTSTATUS) NewSubKey( \
- OUT IRegistryKey** RegistrySubKey, \
- IN PUNKNOWN OuterUnknown, \
- IN ACCESS_MASK DesiredAccess, \
- IN PUNICODE_STRING SubKeyName, \
- IN ULONG CreateOptions, \
- OUT PULONG Disposition OPTIONAL); \
- \
- STDMETHODIMP_(NTSTATUS) DeleteKey(void);
- typedef IRegistryKey *PREGISTRYKEY;
- /* ===============================================================
- IMusicTechnology Interface
- */
- DECLARE_INTERFACE_(IMusicTechnology, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS, SetTechnology)( THIS_
- IN const GUID* Technology) PURE;
- };
- #define IMP_IMusicTechnology \
- STDMETHODIMP_(NTSTATUS) SetTechnology( \
- IN const GUID* Technology);
- typedef IMusicTechnology *PMUSICTECHNOLOGY;
- /* ===============================================================
- IPort Interface
- */
- #if 0
- #define STATIC_IPort 0xb4c90a25L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44
- DEFINE_GUIDSTRUCT("0xB4C90A25-5791-11d0-86f9-00a0c911b544", IID_IPort);
- #define IID_IPort DEFINE_GUIDNAMED(IID_IPort)
- #endif
- DEFINE_GUID(IID_IMiniport,
- 0xb4c90a24L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(IID_IPort,
- 0xb4c90a25L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #define DEFINE_ABSTRACT_PORT() \
- STDMETHOD_(NTSTATUS, Init)( THIS_ \
- IN PDEVICE_OBJECT DeviceObject, \
- IN PIRP Irp, \
- IN PUNKNOWN UnknownMiniport, \
- IN PUNKNOWN UnknownAdapter OPTIONAL, \
- IN PRESOURCELIST ResourceList) PURE; \
- \
- STDMETHOD_(NTSTATUS, GetDeviceProperty)( THIS_ \
- IN DEVICE_REGISTRY_PROPERTY DeviceProperty, \
- IN ULONG BufferLength, \
- OUT PVOID PropertyBuffer, \
- OUT PULONG ResultLength) PURE; \
- \
- STDMETHOD_(NTSTATUS, NewRegistryKey)( THIS_ \
- OUT PREGISTRYKEY* OutRegistryKey, \
- IN PUNKNOWN OuterUnknown OPTIONAL, \
- IN ULONG RegistryKeyType, \
- IN ACCESS_MASK DesiredAccess, \
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, \
- IN ULONG CreateOptiona OPTIONAL, \
- OUT PULONG Disposition OPTIONAL) PURE;
- #ifdef PC_IMPLEMENTATION
- #define IMP_IPort\
- STDMETHODIMP_(NTSTATUS) Init\
- ( IN PDEVICE_OBJECT DeviceObject,\
- IN PIRP Irp,\
- IN PUNKNOWN UnknownMiniport,\
- IN PUNKNOWN UnknownAdapter OPTIONAL,\
- IN PRESOURCELIST ResourceList\
- );\
- STDMETHODIMP_(NTSTATUS) GetDeviceProperty\
- ( IN DEVICE_REGISTRY_PROPERTY DeviceProperty,\
- IN ULONG BufferLength,\
- OUT PVOID PropertyBuffer,\
- OUT PULONG ResultLength\
- );\
- STDMETHODIMP_(NTSTATUS) NewRegistryKey\
- ( OUT PREGISTRYKEY * OutRegistryKey,\
- IN PUNKNOWN OuterUnknown OPTIONAL,\
- IN ULONG RegistryKeyType,\
- IN ACCESS_MASK DesiredAccess,\
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\
- IN ULONG CreateOptions OPTIONAL,\
- OUT PULONG Disposition OPTIONAL\
- )
- #endif
- #undef INTERFACE
- #define INTERFACE IPort
- DECLARE_INTERFACE_(IPort, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_PORT()
- };
- typedef IPort *PPORT;
- /* ===============================================================
- IPortMidi Interface
- */
- DEFINE_GUID(IID_IPortMidi,
- 0xb4c90a40L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(CLSID_PortMidi,
- 0xb4c90a43L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #undef INTERFACE
- #define INTERFACE IPortMidi
- DECLARE_INTERFACE_(IPortMidi, IPort)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_PORT()
- STDMETHOD_(VOID, Notify)(THIS_
- IN PSERVICEGROUP ServiceGroup OPTIONAL) PURE;
- STDMETHOD_(NTSTATUS, RegisterServiceGroup)(THIS_
- IN PSERVICEGROUP ServiceGroup) PURE;
- };
- typedef IPortMidi *PPORTMIDI;
- #define IMP_IPortMidi() \
- STDMETHODIMP_(VOID) Notify( \
- IN PSERVICEGROUP ServiceGroup OPTIONAL); \
- \
- STDMETHODIMP_(NTSTATUS) RegisterServiceGroup( \
- IN PSERVICEGROUP ServiceGroup);
- #undef INTERFACE
- /* ===============================================================
- IPortWaveCyclic Interface
- */
- DEFINE_GUID(IID_IPortWaveCyclic,
- 0xb4c90a26L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(CLSID_PortWaveCyclic,
- 0xb4c90a2aL, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #define INTERFACE IPortWaveCyclic
- DECLARE_INTERFACE_(IPortWaveCyclic, IPort)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_PORT()
- STDMETHOD_(VOID, Notify)(THIS_
- IN PSERVICEGROUP ServiceGroup) PURE;
- STDMETHOD_(NTSTATUS, NewSlaveDmaChannel)(THIS_
- OUT PDMACHANNELSLAVE* DmaChannel,
- IN PUNKNOWN OuterUnknown,
- IN PRESOURCELIST ResourceList OPTIONAL,
- IN ULONG DmaIndex,
- IN ULONG MaximumLength,
- IN BOOLEAN DemandMode,
- IN DMA_SPEED DmaSpeed) PURE;
- STDMETHOD_(NTSTATUS, NewMasterDmaChannel)(THIS_
- OUT PDMACHANNEL* DmaChannel,
- IN PUNKNOWN OuterUnknown,
- IN PRESOURCELIST ResourceList OPTIONAL,
- IN ULONG MaximumLength,
- IN BOOLEAN Dma32BitAddresses,
- IN BOOLEAN Dma64BitAddresses,
- IN DMA_WIDTH DmaWidth,
- IN DMA_SPEED DmaSpeed) PURE;
- };
- typedef IPortWaveCyclic *PPORTWAVECYCLIC;
- #ifdef PC_IMPLEMENTATION
- #define IMP_IPortWaveCyclic \
- IMP_IPort; \
- STDMETHODIMP_(VOID) Notify( \
- IN PSERVICEGROUP ServiceGroup); \
- \
- STDMETHODIMP_(NTSTATUS) NewSlaveDmaChannel( \
- OUT PDMACHANNELSLAVE* DmaChannel, \
- IN PUNKNOWN OuterUnknown, \
- IN PRESOURCELIST ResourceList OPTIONAL, \
- IN ULONG DmaIndex, \
- IN ULONG MaximumLength, \
- IN BOOLEAN DemandMode, \
- IN DMA_SPEED DmaSpeed); \
- \
- STDMETHODIMP_(NTSTATUS) NewMasterDmaChannel( \
- OUT PDMACHANNEL* DmaChannel, \
- IN PUNKNOWN OuterUnknown, \
- IN PRESOURCELIST ResourceList OPTIONAL, \
- IN ULONG MaximumLength, \
- IN BOOLEAN Dma32BitAddresses, \
- IN BOOLEAN Dma64BitAddresses, \
- IN DMA_WIDTH DmaWidth, \
- IN DMA_SPEED DmaSpeed)
- #endif
- #undef INTERFACE
- /* ===============================================================
- IPortWavePci Interface
- */
- #undef INTERFACE
- #define INTERFACE IPortWavePci
- DEFINE_GUID(IID_IPortWavePci,
- 0xb4c90a50L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(CLSID_PortWavePci,
- 0xb4c90a54L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IPortWavePci, IPort)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_PORT()
- STDMETHOD_(VOID, Notify)(THIS_
- IN PSERVICEGROUP ServiceGroup) PURE;
- STDMETHOD_(NTSTATUS, NewMasterDmaChannel)(THIS_
- OUT PDMACHANNEL* DmaChannel,
- IN PUNKNOWN OuterUnknown,
- IN POOL_TYPE PoolType,
- IN PRESOURCELIST ResourceList OPTIONAL,
- IN BOOLEAN ScatterGather,
- IN BOOLEAN Dma32BitAddresses,
- IN BOOLEAN Dma64BitAddresses,
- IN BOOLEAN IgnoreCount,
- IN DMA_WIDTH DmaWidth,
- IN DMA_SPEED DmaSpeed,
- IN ULONG MaximumLength,
- IN ULONG DmaPort) PURE;
- };
- typedef IPortWavePci *PPORTWAVEPCI;
- #undef INTERFACE
- #ifdef PC_IMPLEMENTATION
- #define IMP_IPortWavePci \
- IMP_IPort; \
- STDMETHODIMP_(VOID) Notify( \
- IN PSERVICEGROUP ServiceGroup); \
- \
- STDMETHODIMP_(NTSTATUS) NewMasterDmaChannel( \
- OUT PDMACHANNEL* DmaChannel, \
- IN PUNKNOWN OuterUnknown, \
- IN POOL_TYPE PoolType, \
- IN PRESOURCELIST ResourceList OPTIONAL, \
- IN BOOLEAN ScatterGather, \
- IN BOOLEAN Dma32BitAddresses, \
- IN BOOLEAN Dma64BitAddresses, \
- IN BOOLEAN IgnoreCount, \
- IN DMA_WIDTH DmaWidth, \
- IN DMA_SPEED DmaSpeed, \
- IN ULONG MaximumLength, \
- IN ULONG DmaPort);
- #endif
- /* ===============================================================
- IMiniPort Interface
- */
- DEFINE_GUID(IID_IMiniPort,
- 0xb4c90a24L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #define DEFINE_ABSTRACT_MINIPORT() \
- STDMETHOD_(NTSTATUS, GetDescription)( THIS_ \
- OUT PPCFILTER_DESCRIPTOR* Description) PURE; \
- \
- STDMETHOD_(NTSTATUS, DataRangeIntersection)( THIS_ \
- IN ULONG PinId, \
- IN PKSDATARANGE DataRange, \
- IN PKSDATARANGE MatchingDataRange, \
- IN ULONG OutputBufferLength, \
- OUT PVOID ResultantFormat OPTIONAL, \
- OUT PULONG ResultantFormatLength) PURE;
- #define IMP_IMiniport \
- STDMETHODIMP_(NTSTATUS) GetDescription( \
- OUT PPCFILTER_DESCRIPTOR* Description); \
- \
- STDMETHODIMP_(NTSTATUS) DataRangeIntersection( \
- IN ULONG PinId, \
- IN PKSDATARANGE DataRange, \
- IN PKSDATARANGE MatchingDataRange, \
- IN ULONG OutputBufferLength, \
- OUT PVOID ResultantFormat OPTIONAL, \
- OUT PULONG ResultantFormatLength)
- DECLARE_INTERFACE_(IMiniport, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORT()
- };
- typedef IMiniport *PMINIPORT;
- /* ===============================================================
- IMiniportMidiStream Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportMidiStream
- DEFINE_GUID(IID_IMiniportMidiStream,
- 0xb4c90a42L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IMiniportMidiStream, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS,SetFormat)(THIS_
- IN PKSDATAFORMAT DataFormat)PURE;
- STDMETHOD_(NTSTATUS,SetState)(THIS_
- IN KSSTATE State)PURE;
- STDMETHOD_(NTSTATUS,Read)(THIS_
- IN PVOID BufferAddress,
- IN ULONG BufferLength,
- OUT PULONG BytesRead)PURE;
- STDMETHOD_(NTSTATUS,Write)(THIS_
- IN PVOID BufferAddress,
- IN ULONG BytesToWrite,
- OUT PULONG BytesWritten)PURE;
- };
- typedef IMiniportMidiStream* PMINIPORTMIDISTREAM;
- #undef INTERFACE
- /* ===============================================================
- IMiniportMidi Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportMidi
- DEFINE_GUID(IID_IMiniportMidi,
- 0xb4c90a41L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IMiniportMidi, IMiniport)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORT()
- STDMETHOD_(NTSTATUS, Init)(THIS_
- IN PUNKNOWN UnknownAdapter,
- IN PRESOURCELIST ResourceList,
- IN PPORTMIDI Port,
- OUT PSERVICEGROUP* ServiceGroup) PURE;
- STDMETHOD_(void, Service)(THIS) PURE;
- STDMETHOD_(NTSTATUS, NewStream)(THIS_
- OUT PMINIPORTMIDISTREAM *Stream,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN POOL_TYPE PoolType,
- IN ULONG Pin,
- IN BOOLEAN Capture,
- IN PKSDATAFORMAT DataFormat,
- OUT PSERVICEGROUP* ServiceGroup) PURE;
- };
- typedef IMiniportMidi *PMINIPORTMIDI;
- #undef INTERFACE
- /* ===============================================================
- IMiniportDriverUart Interface
- */
- DEFINE_GUID(IID_MiniportDriverUart,
- 0xb4c90ae1L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(CLSID_MiniportDriverUart,
- 0xb4c90ae1L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- /* ===============================================================
- IPortTopology Interface
- */
- #if 0
- #define STATIC_IPortTopology \
- 0xb4c90a30L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44
- DEFINE_GUIDSTRUCT("0xB4C90A30-5791-11d0-86f9-00a0c911b544", IID_IPortTopology);
- #define IID_IPortTopology DEFINE_GUIDNAMED(IID_IPortTopology)
- #endif
- #undef INTERFACE
- #define INTERFACE IPortTopology
- DEFINE_GUID(IID_IPortTopology, 0xb4c90a30L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DEFINE_GUID(CLSID_PortTopology, 0xb4c90a32L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #undef INTERFACE
- #define INTERFACE IPortTopology
- DECLARE_INTERFACE_(IPortTopology, IPort)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_PORT()
- };
- typedef IPortTopology *PPORTTOPOLOGY;
- #define IMP_IPortTopology IMP_IPort
- /* ===============================================================
- IMiniportTopology Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportTopology
- DEFINE_GUID(IID_IMiniportTopology, 0xb4c90a31L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #undef INTERFACE
- #define INTERFACE IMiniportTopology
- DECLARE_INTERFACE_(IMiniportTopology,IMiniport)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORT()
- STDMETHOD_(NTSTATUS,Init)(THIS_
- IN PUNKNOWN UnknownAdapter,
- IN PRESOURCELIST ResourceList,
- IN PPORTTOPOLOGY Port)PURE;
- };
- typedef IMiniportTopology *PMINIPORTTOPOLOGY;
- /* ===============================================================
- IMiniportWaveCyclicStream Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportWaveCyclicStream
- DEFINE_GUID(IID_IMiniportWaveCyclicStream,
- 0xb4c90a28L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IMiniportWaveCyclicStream,IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS,SetFormat)(THIS_
- IN PKSDATAFORMAT DataFormat)PURE;
- STDMETHOD_(ULONG,SetNotificationFreq)(THIS_
- IN ULONG Interval,
- OUT PULONG FrameSize) PURE;
- STDMETHOD_(NTSTATUS,SetState)(THIS_
- IN KSSTATE State) PURE;
- STDMETHOD_(NTSTATUS,GetPosition)( THIS_
- OUT PULONG Position) PURE;
- STDMETHOD_(NTSTATUS,NormalizePhysicalPosition)(THIS_
- IN OUT PLONGLONG PhysicalPosition) PURE;
- STDMETHOD_(void, Silence)( THIS_
- IN PVOID Buffer,
- IN ULONG ByteCount) PURE;
- };
- typedef IMiniportWaveCyclicStream *PMINIPORTWAVECYCLICSTREAM;
- #define IMP_IMiniportWaveCyclicStream\
- STDMETHODIMP_(NTSTATUS) SetFormat\
- ( IN PKSDATAFORMAT DataFormat\
- );\
- STDMETHODIMP_(ULONG) SetNotificationFreq\
- ( IN ULONG Interval,\
- OUT PULONG FrameSize\
- );\
- STDMETHODIMP_(NTSTATUS) SetState\
- ( IN KSSTATE State\
- );\
- STDMETHODIMP_(NTSTATUS) GetPosition\
- ( OUT PULONG Position\
- );\
- STDMETHODIMP_(NTSTATUS) NormalizePhysicalPosition\
- ( IN OUT PLONGLONG PhysicalPosition\
- );\
- STDMETHODIMP_(void) Silence\
- ( IN PVOID Buffer,\
- IN ULONG ByteCount\
- )
- /* ===============================================================
- IMiniportWaveCyclic Interface
- */
- #undef INTERFACE
- DEFINE_GUID(IID_IMiniportWaveCyclic,
- 0xb4c90a27L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- #define INTERFACE IMiniportWaveCyclic
- DECLARE_INTERFACE_(IMiniportWaveCyclic, IMiniport)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORT()
- STDMETHOD_(NTSTATUS, Init)(THIS_
- IN PUNKNOWN UnknownAdapter,
- IN PRESOURCELIST ResourceList,
- IN PPORTWAVECYCLIC Port) PURE;
- STDMETHOD_(NTSTATUS, NewStream)(THIS_
- OUT PMINIPORTWAVECYCLICSTREAM *Stream,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN POOL_TYPE PoolType,
- IN ULONG Pin,
- IN BOOLEAN Capture,
- IN PKSDATAFORMAT DataFormat,
- OUT PDMACHANNEL *DmaChannel,
- OUT PSERVICEGROUP *ServiceGroup) PURE;
- };
- typedef IMiniportWaveCyclic *PMINIPORTWAVECYCLIC;
- #undef INTERFACE
- #define IMP_IMiniportWaveCyclic\
- IMP_IMiniport;\
- STDMETHODIMP_(NTSTATUS) Init\
- ( IN PUNKNOWN UnknownAdapter,\
- IN PRESOURCELIST ResourceList,\
- IN PPORTWAVECYCLIC Port\
- );\
- STDMETHODIMP_(NTSTATUS) NewStream\
- ( OUT PMINIPORTWAVECYCLICSTREAM * Stream,\
- IN PUNKNOWN OuterUnknown OPTIONAL,\
- IN POOL_TYPE PoolType,\
- IN ULONG Pin,\
- IN BOOLEAN Capture,\
- IN PKSDATAFORMAT DataFormat,\
- OUT PDMACHANNEL * DmaChannel,\
- OUT PSERVICEGROUP * ServiceGroup\
- )
- /* ===============================================================
- IPortWavePciStream Interface
- */
- #undef INTERFACE
- #define INTERFACE IPortWavePciStream
- DEFINE_GUID(IID_IPortWavePciStream, 0xb4c90a51L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IPortWavePciStream,IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN() // For IUnknown
- STDMETHOD_(NTSTATUS,GetMapping)(THIS_
- IN PVOID Tag,
- OUT PPHYSICAL_ADDRESS PhysicalAddress,
- OUT PVOID * VirtualAddress,
- OUT PULONG ByteCount,
- OUT PULONG Flags)PURE;
- STDMETHOD_(NTSTATUS,ReleaseMapping)(THIS_
- IN PVOID Tag)PURE;
- STDMETHOD_(NTSTATUS,TerminatePacket)(THIS)PURE;
- };
- typedef IPortWavePciStream *PPORTWAVEPCISTREAM;
- #define IMP_IPortWavePciStream \
- STDMETHODIMP_(NTSTATUS) GetMapping( \
- IN PVOID Tag, \
- OUT PPHYSICAL_ADDRESS PhysicalAddress, \
- OUT PVOID * VirtualAddress, \
- OUT PULONG ByteCount, \
- OUT PULONG Flags); \
- \
- STDMETHODIMP_(NTSTATUS) ReleaseMapping( \
- IN PVOID Tag); \
- \
- STDMETHODIMP_(NTSTATUS) TerminatePacket(THIS)
- /* ===============================================================
- IMiniportWavePciStream Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportWavePciStream
- DEFINE_GUID(IID_IMiniportWavePciStream, 0xb4c90a53L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IMiniportWavePciStream,IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(NTSTATUS,SetFormat)(THIS_
- IN PKSDATAFORMAT DataFormat)PURE;
- STDMETHOD_(NTSTATUS,SetState)(THIS_
- IN KSSTATE State)PURE;
- STDMETHOD_(NTSTATUS,GetPosition)(THIS_
- OUT PULONGLONG Position)PURE;
- STDMETHOD_(NTSTATUS,NormalizePhysicalPosition)(THIS_
- IN OUT PLONGLONG PhysicalPosition)PURE;
- STDMETHOD_(NTSTATUS,GetAllocatorFraming)(THIS_
- OUT PKSALLOCATOR_FRAMING AllocatorFraming) PURE;
- STDMETHOD_(NTSTATUS,RevokeMappings)(THIS_
- IN PVOID FirstTag,
- IN PVOID LastTag,
- OUT PULONG MappingsRevoked)PURE;
- STDMETHOD_(void,MappingAvailable)(THIS)PURE;
- STDMETHOD_(void,Service)(THIS)PURE;
- };
- typedef IMiniportWavePciStream *PMINIPORTWAVEPCISTREAM;
- /* ===============================================================
- IMiniportWavePci Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportWavePci
- DEFINE_GUID(IID_IMiniportWavePci, 0xb4c90a52L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
- DECLARE_INTERFACE_(IMiniportWavePci,IMiniport)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORT()
- STDMETHOD_(NTSTATUS,Init)(THIS_
- IN PUNKNOWN UnknownAdapter,
- IN PRESOURCELIST ResourceList,
- IN PPORTWAVEPCI Port,
- OUT PSERVICEGROUP * ServiceGroup)PURE;
- STDMETHOD_(NTSTATUS,NewStream)(THIS_
- OUT PMINIPORTWAVEPCISTREAM * Stream,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN POOL_TYPE PoolType,
- IN PPORTWAVEPCISTREAM PortStream,
- IN ULONG Pin,
- IN BOOLEAN Capture,
- IN PKSDATAFORMAT DataFormat,
- OUT PDMACHANNEL * DmaChannel,
- OUT PSERVICEGROUP * ServiceGroup)PURE;
- STDMETHOD_(void,Service)(THIS)PURE;
- };
- typedef IMiniportWavePci *PMINIPORTWAVEPCI;
- #if !defined(DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM)
- #define DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM() \
- STDMETHOD_(NTSTATUS,SetFormat) \
- ( THIS_ \
- IN PKSDATAFORMAT DataFormat \
- ) PURE; \
- STDMETHOD_(NTSTATUS,SetState) \
- ( THIS_ \
- IN KSSTATE State \
- ) PURE; \
- STDMETHOD_(NTSTATUS,GetPosition) \
- ( THIS_ \
- OUT PKSAUDIO_POSITION Position \
- ) PURE; \
- STDMETHOD_(NTSTATUS,AllocateAudioBuffer) \
- ( THIS_ \
- IN ULONG RequestedSize, \
- OUT PMDL *AudioBufferMdl, \
- OUT ULONG *ActualSize, \
- OUT ULONG *OffsetFromFirstPage, \
- OUT MEMORY_CACHING_TYPE *CacheType \
- ) PURE; \
- STDMETHOD_(VOID,FreeAudioBuffer) \
- ( THIS_ \
- IN PMDL AudioBufferMdl, \
- IN ULONG BufferSize \
- ) PURE; \
- STDMETHOD_(VOID,GetHWLatency) \
- ( THIS_ \
- OUT KSRTAUDIO_HWLATENCY *hwLatency \
- ) PURE; \
- STDMETHOD_(NTSTATUS,GetPositionRegister) \
- ( THIS_ \
- OUT KSRTAUDIO_HWREGISTER *Register \
- ) PURE; \
- STDMETHOD_(NTSTATUS,GetClockRegister) \
- ( THIS_ \
- OUT KSRTAUDIO_HWREGISTER *Register \
- ) PURE;
- #endif
- /* ===============================================================
- IAdapterPowerManagement Interface
- */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- /* ===============================================================
- IPortWaveRT Interface
- */
- DEFINE_GUID(CLSID_PortWaveRT, 0xcc9be57a, 0xeb9e, 0x42b4, 0x94, 0xfc, 0xc, 0xad, 0x3d, 0xbc, 0xe7, 0xfa);
- DEFINE_GUID(IID_IPortWaveRT, 0x339ff909, 0x68a9, 0x4310, 0xb0, 0x9b, 0x27, 0x4e, 0x96, 0xee, 0x4c, 0xbd);
- #undef INTERFACE
- #define INTERFACE IPortWaveRT
- DECLARE_INTERFACE_(IPortWaveRT,IPort)
- {
- DEFINE_ABSTRACT_UNKNOWN() // For IUnknown
- DEFINE_ABSTRACT_PORT() // For IPort
- };
- typedef IPortWaveRT *PPORTWAVERT;
- #ifdef PC_IMPLEMENTATION
- #define IMP_IPortWaveRT IMP_IPort
- #endif
- /* ===============================================================
- IPortWaveRTStream Interface
- */
- #undef INTERFACE
- #define INTERFACE IPortWaveRTStream
- DEFINE_GUID(IID_IPortWaveRTStream, 0x1809ce5a, 0x64bc, 0x4e62, 0xbd, 0x7d, 0x95, 0xbc, 0xe4, 0x3d, 0xe3, 0x93);
- DECLARE_INTERFACE_(IPortWaveRTStream, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(PMDL, AllocatePagesForMdl)
- ( THIS_
- IN PHYSICAL_ADDRESS HighAddress,
- IN SIZE_T TotalBytes
- ) PURE;
- STDMETHOD_(PMDL, AllocateContiguousPagesForMdl)
- ( THIS_
- IN PHYSICAL_ADDRESS LowAddress,
- IN PHYSICAL_ADDRESS HighAddress,
- IN SIZE_T TotalBytes
- ) PURE;
- STDMETHOD_(PVOID, MapAllocatedPages)
- ( THIS_
- IN PMDL MemoryDescriptorList,
- IN MEMORY_CACHING_TYPE CacheType
- ) PURE;
- STDMETHOD_(VOID, UnmapAllocatedPages)
- ( THIS_
- IN PVOID BaseAddress,
- IN PMDL MemoryDescriptorList
- ) PURE;
- STDMETHOD_(VOID, FreePagesFromMdl)
- ( THIS_
- IN PMDL MemoryDescriptorList
- ) PURE;
- STDMETHOD_(ULONG, GetPhysicalPagesCount)
- ( THIS_
- IN PMDL MemoryDescriptorList
- ) PURE;
- STDMETHOD_(PHYSICAL_ADDRESS, GetPhysicalPageAddress)
- ( THIS_
- IN PMDL MemoryDescriptorList,
- IN ULONG Index
- ) PURE;
- };
- typedef IPortWaveRTStream *PPORTWAVERTSTREAM;
- /* ===============================================================
- IMiniportWaveRTStream Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportWaveRTStream
- DEFINE_GUID(IID_IMiniportWaveRTStream, 0xac9ab, 0xfaab, 0x4f3d, 0x94, 0x55, 0x6f, 0xf8, 0x30, 0x6a, 0x74, 0xa0);
- DECLARE_INTERFACE_(IMiniportWaveRTStream, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM()
- };
- typedef IMiniportWaveRTStream *PMINIPORTWAVERTSTREAM;
- #define IMP_IMiniportWaveRTStream\
- STDMETHODIMP_(NTSTATUS) SetFormat\
- ( IN PKSDATAFORMAT DataFormat\
- );\
- STDMETHODIMP_(NTSTATUS) SetState\
- ( IN KSSTATE State\
- );\
- STDMETHODIMP_(NTSTATUS) GetPosition\
- ( OUT PKSAUDIO_POSITION Position\
- );\
- STDMETHODIMP_(NTSTATUS) AllocateAudioBuffer\
- (\
- IN ULONG RequestedSize,\
- OUT PMDL *AudioBufferMdl,\
- OUT ULONG *ActualSize,\
- OUT ULONG *OffsetFromFirstPage,\
- OUT MEMORY_CACHING_TYPE *CacheType\
- );\
- STDMETHODIMP_(VOID) FreeAudioBuffer\
- (\
- IN PMDL AudioBufferMdl,\
- IN ULONG BufferSize\
- );\
- STDMETHODIMP_(VOID) GetHWLatency\
- (\
- OUT KSRTAUDIO_HWLATENCY *hwLatency\
- );\
- STDMETHODIMP_(NTSTATUS) GetPositionRegister\
- (\
- OUT KSRTAUDIO_HWREGISTER *Register\
- );\
- STDMETHODIMP_(NTSTATUS) GetClockRegister\
- (\
- OUT KSRTAUDIO_HWREGISTER *Register\
- )
- /* ===============================================================
- IMiniportWaveRTStreamNotification Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportWaveRTStreamNotification
- DEFINE_GUID(IID_IMiniportWaveRTStreamNotification, 0x23759128, 0x96f1, 0x423b, 0xab, 0x4d, 0x81, 0x63, 0x5b, 0xcf, 0x8c, 0xa1);
- DECLARE_INTERFACE_(IMiniportWaveRTStreamNotification, IMiniportWaveRTStream)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM()
- STDMETHOD_(NTSTATUS,AllocateBufferWithNotification)
- ( THIS_
- IN ULONG NotificationCount,
- IN ULONG RequestedSize,
- OUT PMDL *AudioBufferMdl,
- OUT ULONG *ActualSize,
- OUT ULONG *OffsetFromFirstPage,
- OUT MEMORY_CACHING_TYPE *CacheType
- ) PURE;
- STDMETHOD_(VOID,FreeBufferWithNotification)
- ( THIS_
- IN PMDL AudioBufferMdl,
- IN ULONG BufferSize
- ) PURE;
- STDMETHOD_(NTSTATUS,RegisterNotificationEvent)
- ( THIS_
- IN PKEVENT NotificationEvent
- ) PURE;
- STDMETHOD_(NTSTATUS,UnregisterNotificationEvent)
- ( THIS_
- IN PKEVENT NotificationEvent
- ) PURE;
- };
- /* ===============================================================
- IMiniportWaveRT Interface
- */
- #undef INTERFACE
- #define INTERFACE IMiniportWaveRT
- DEFINE_GUID(IID_IMiniportWaveRT, 0xf9fc4d6, 0x6061, 0x4f3c, 0xb1, 0xfc, 0x7, 0x5e, 0x35, 0xf7, 0x96, 0xa);
- DECLARE_INTERFACE_(IMiniportWaveRT, IMiniport)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_MINIPORT()
- STDMETHOD_(NTSTATUS,Init)
- ( THIS_
- IN PUNKNOWN UnknownAdapter,
- IN PRESOURCELIST ResourceList,
- IN PPORTWAVERT Port
- ) PURE;
- STDMETHOD_(NTSTATUS,NewStream)
- ( THIS_
- OUT PMINIPORTWAVERTSTREAM * Stream,
- IN PPORTWAVERTSTREAM PortStream,
- IN ULONG Pin,
- IN BOOLEAN Capture,
- IN PKSDATAFORMAT DataFormat
- ) PURE;
- STDMETHOD_(NTSTATUS,GetDeviceDescription)
- ( THIS_
- OUT PDEVICE_DESCRIPTION DeviceDescription
- ) PURE;
- };
- typedef IMiniportWaveRT *PMINIPORTWAVERT;
- #define IMP_IMiniportWaveRT\
- IMP_IMiniport;\
- STDMETHODIMP_(NTSTATUS) Init\
- ( IN PUNKNOWN UnknownAdapter,\
- IN PRESOURCELIST ResourceList,\
- IN PPORTWAVERT Port\
- );\
- STDMETHODIMP_(NTSTATUS) NewStream\
- ( OUT PMINIPORTWAVERTSTREAM * Stream,\
- IN PPORTWAVERTSTREAM PortStream,\
- IN ULONG Pin,\
- IN BOOLEAN Capture,\
- IN PKSDATAFORMAT DataFormat\
- );\
- STDMETHODIMP_(NTSTATUS) GetDeviceDescription\
- ( OUT PDEVICE_DESCRIPTION DeviceDescription\
- )
- #endif
- /* ===============================================================
- IAdapterPowerManagement Interface
- */
- #undef INTERFACE
- #define INTERFACE IAdapterPowerManagement
- DEFINE_GUID(IID_IAdapterPowerManagement, 0x793417D0L, 0x35FE, 0x11D1, 0xAD, 0x08, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0xB0);
- DECLARE_INTERFACE_(IAdapterPowerManagement, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(void,PowerChangeState)(THIS_
- IN POWER_STATE NewState) PURE;
- STDMETHOD_(NTSTATUS,QueryPowerChangeState)(THIS_
- IN POWER_STATE NewStateQuery) PURE;
- STDMETHOD_(NTSTATUS,QueryDeviceCapabilities)(THIS_
- IN PDEVICE_CAPABILITIES PowerDeviceCaps) PURE;
- };
- #define IMP_IAdapterPowerManagement \
- STDMETHODIMP_(void) PowerChangeState \
- ( IN POWER_STATE NewState \
- ); \
- STDMETHODIMP_(NTSTATUS) QueryPowerChangeState \
- ( IN POWER_STATE NewStateQuery \
- ); \
- STDMETHODIMP_(NTSTATUS) QueryDeviceCapabilities \
- ( IN PDEVICE_CAPABILITIES PowerDeviceCaps \
- )
- typedef IAdapterPowerManagement *PADAPTERPOWERMANAGEMENT;
- /* ===============================================================
- IPowerNotify Interface
- */
- #undef INTERFACE
- #define INTERFACE IPowerNotify
- DEFINE_GUID(IID_IPowerNotify, 0x3DD648B8L, 0x969F, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3);
- DECLARE_INTERFACE_(IPowerNotify, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(void, PowerChangeNotify)(THIS_
- IN POWER_STATE PowerState)PURE;
- };
- typedef IPowerNotify *PPOWERNOTIFY;
- #undef INTERFACE
- /* ===============================================================
- IPinCount Interface
- */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- #undef INTERFACE
- #define INTERFACE IPinCount
- DEFINE_GUID(IID_IPinCount, 0x5dadb7dcL, 0xa2cb, 0x4540, 0xa4, 0xa8, 0x42, 0x5e, 0xe4, 0xae, 0x90, 0x51);
- DECLARE_INTERFACE_(IPinCount, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(void,PinCount)(THIS_
- IN ULONG PinId,
- IN OUT PULONG FilterNecessary,
- IN OUT PULONG FilterCurrent,
- IN OUT PULONG FilterPossible,
- IN OUT PULONG GlobalCurrent,
- IN OUT PULONG GlobalPossible) PURE;
- };
- typedef IPinCount *PPINCOUNT;
- #undef INTERFACE
- #endif
- /* ===============================================================
- IPortEvents Interface
- */
- #undef INTERFACE
- #define INTERFACE IPortEvents
- DEFINE_GUID(IID_IPortEvents, 0xA80F29C4L, 0x5498, 0x11D2, 0x95, 0xD9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3);
- DECLARE_INTERFACE_(IPortEvents, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(void,AddEventToEventList)(THIS_
- IN PKSEVENT_ENTRY EventEntry)PURE;
- STDMETHOD_(void,GenerateEventList)(THIS_
- IN GUID* Set OPTIONAL,
- IN ULONG EventId,
- IN BOOL PinEvent,
- IN ULONG PinId,
- IN BOOL NodeEvent,
- IN ULONG NodeId)PURE;
- };
- typedef IPortEvents *PPORTEVENTS;
- #define IMP_IPortEvents \
- STDMETHODIMP_(void) AddEventToEventList( \
- IN PKSEVENT_ENTRY EventEntry); \
- \
- STDMETHODIMP_(void) GenerateEventList( \
- IN GUID* Set OPTIONAL, \
- IN ULONG EventId, \
- IN BOOL PinEvent, \
- IN ULONG PinId, \
- IN BOOL NodeEvent, \
- IN ULONG NodeId)
- /* ===============================================================
- IDrmPort / IDrmPort2 Interfaces
- These are almost identical, except for the addition of two extra methods.
- */
- #undef INTERFACE
- #define INTERFACE IDrmPort
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- DEFINE_GUID(IID_IDrmPort, 0x286D3DF8L, 0xCA22, 0x4E2E, 0xB9, 0xBC, 0x20, 0xB4, 0xF0, 0xE2, 0x01, 0xCE);
- #endif
- #define DEFINE_ABSTRACT_DRMPORT() \
- STDMETHOD_(NTSTATUS,CreateContentMixed)(THIS_ \
- IN PULONG paContentId, \
- IN ULONG cContentId, \
- OUT PULONG pMixedContentId)PURE; \
- \
- STDMETHOD_(NTSTATUS,DestroyContent)(THIS_ \
- IN ULONG ContentId)PURE; \
- \
- STDMETHOD_(NTSTATUS,ForwardContentToFileObject)(THIS_ \
- IN ULONG ContentId, \
- IN PFILE_OBJECT FileObject)PURE; \
- \
- STDMETHOD_(NTSTATUS,ForwardContentToInterface)(THIS_ \
- IN ULONG ContentId, \
- IN PUNKNOWN pUnknown, \
- IN ULONG NumMethods)PURE; \
- \
- STDMETHOD_(NTSTATUS,GetContentRights)(THIS_ \
- IN ULONG ContentId, \
- OUT PDRMRIGHTS DrmRights)PURE;
- DECLARE_INTERFACE_(IDrmPort, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_DRMPORT()
- };
- typedef IDrmPort *PDRMPORT;
- #define IMP_IDrmPort \
- STDMETHODIMP_(NTSTATUS) CreateContentMixed( \
- IN PULONG paContentId, \
- IN ULONG cContentId, \
- OUT PULONG pMixedContentId); \
- \
- STDMETHODIMP_(NTSTATUS) DestroyContent( \
- IN ULONG ContentId); \
- \
- STDMETHODIMP_(NTSTATUS) ForwardContentToFileObject( \
- IN ULONG ContentId, \
- IN PFILE_OBJECT FileObject); \
- \
- STDMETHODIMP_(NTSTATUS) ForwardContentToInterface( \
- IN ULONG ContentId, \
- IN PUNKNOWN pUnknown, \
- IN ULONG NumMethods); \
- \
- STDMETHODIMP_(NTSTATUS) GetContentRights( \
- IN ULONG ContentId, \
- OUT PDRMRIGHTS DrmRights)
- /* ===============================================================
- IDrmPort2 Interface
- */
- #undef INTERFACE
- #define INTERFACE IDrmPort2
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- DEFINE_GUID(IID_IDrmPort2, 0x1ACCE59CL, 0x7311, 0x4B6B, 0x9F, 0xBA, 0xCC, 0x3B, 0xA5, 0x9A, 0xCD, 0xCE);
- #endif
- DECLARE_INTERFACE_(IDrmPort2, IDrmPort)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_DRMPORT()
- STDMETHOD_(NTSTATUS,AddContentHandlers)(THIS_
- IN ULONG ContentId,
- IN PVOID * paHandlers,
- IN ULONG NumHandlers)PURE;
- STDMETHOD_(NTSTATUS,ForwardContentToDeviceObject)(THIS_
- IN ULONG ContentId,
- IN PVOID Reserved,
- IN PCDRMFORWARD DrmForward)PURE;
- };
- typedef IDrmPort2 *PDRMPORT2;
- #define IMP_IDrmPort2 \
- IMP_IDrmPort; \
- STDMETHODIMP_(NTSTATUS) AddContentHandlers( \
- IN ULONG ContentId, \
- IN PVOID * paHandlers, \
- IN ULONG NumHandlers); \
- \
- STDMETHODIMP_(NTSTATUS) ForwardContentToDeviceObject( \
- IN ULONG ContentId, \
- IN PVOID Reserved, \
- IN PCDRMFORWARD DrmForward)
- /* ===============================================================
- IPortClsVersion Interface
- */
- #undef INTERFACE
- #define INTERFACE IPortClsVersion
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- DEFINE_GUID(IID_IPortClsVersion, 0x7D89A7BBL, 0x869B, 0x4567, 0x8D, 0xBE, 0x1E, 0x16, 0x8C, 0xC8, 0x53, 0xDE);
- #endif
- DECLARE_INTERFACE_(IPortClsVersion, IUnknown)
- {
- DEFINE_ABSTRACT_UNKNOWN()
- STDMETHOD_(DWORD, GetVersion)(THIS) PURE;
- };
- #define IMP_IPortClsVersion \
- STDMETHODIMP_(DWORD) GetVersion(void);
- typedef IPortClsVersion *PPORTCLSVERSION;
- #undef INTERFACE
- /* ===============================================================
- IDmaOperations Interface
- */
- /* ===============================================================
- IPreFetchOffset Interface
- */
- /* ===============================================================
- PortCls API Functions
- */
- typedef NTSTATUS (NTAPI *PCPFNSTARTDEVICE)(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PRESOURCELIST ResourceList);
- /* This is in NTDDK.H */
- /*
- typedef NTSTATUS (*PDRIVER_ADD_DEVICE)(
- IN struct _DRIVER_OBJECT* DriverObject,
- IN struct _DEVICE_OBJECT* PhysicalDeviceObject);
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcAddAdapterDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PCPFNSTARTDEVICE StartDevice,
- IN ULONG MaxObjects,
- IN ULONG DeviceExtensionSize);
- PORTCLASSAPI NTSTATUS NTAPI
- PcInitializeAdapterDriver(
- IN PDRIVER_OBJECT DriverObject,
- IN PUNICODE_STRING RegistryPathName,
- IN PDRIVER_ADD_DEVICE AddDevice);
- /* ===============================================================
- Factories (TODO: Move elsewhere)
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewDmaChannel(
- OUT PDMACHANNEL* OutDmaChannel,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN POOL_TYPE PoolType,
- IN PDEVICE_DESCRIPTION DeviceDescription,
- IN PDEVICE_OBJECT DeviceObject);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewInterruptSync(
- OUT PINTERRUPTSYNC* OUtInterruptSync,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN PRESOURCELIST ResourceList,
- IN ULONG ResourceIndex,
- IN INTERRUPTSYNCMODE Mode);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewMiniport(
- OUT PMINIPORT* OutMiniport,
- IN REFCLSID ClassId);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewPort(
- OUT PPORT* OutPort,
- IN REFCLSID ClassId);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewRegistryKey(
- OUT PREGISTRYKEY* OutRegistryKey,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN ULONG RegistryKeyType,
- IN ACCESS_MASK DesiredAccess,
- IN PVOID DeviceObject OPTIONAL,
- IN PVOID SubDevice OPTIONAL,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN ULONG CreateOptions OPTIONAL,
- OUT PULONG Disposition OPTIONAL);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewResourceList(
- OUT PRESOURCELIST* OutResourceList,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN POOL_TYPE PoolType,
- IN PCM_RESOURCE_LIST TranslatedResources,
- IN PCM_RESOURCE_LIST UntranslatedResources);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewResourceSublist(
- OUT PRESOURCELIST* OutResourceList,
- IN PUNKNOWN OuterUnknown OPTIONAL,
- IN POOL_TYPE PoolType,
- IN PRESOURCELIST ParentList,
- IN ULONG MaximumEntries);
- PORTCLASSAPI NTSTATUS NTAPI
- PcNewServiceGroup(
- OUT PSERVICEGROUP* OutServiceGroup,
- IN PUNKNOWN OuterUnknown OPTIONAL);
- /* ===============================================================
- IRP Handling
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcDispatchIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
- PORTCLASSAPI NTSTATUS NTAPI
- PcCompleteIrp(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN NTSTATUS Status);
- PORTCLASSAPI NTSTATUS NTAPI
- PcForwardIrpSynchronous(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
- /* ===============================================================
- Power Management
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcRegisterAdapterPowerManagement(
- IN PUNKNOWN pUnknown,
- IN PVOID pvContext1);
- PORTCLASSAPI NTSTATUS NTAPI
- PcRequestNewPowerState(
- IN PDEVICE_OBJECT pDeviceObject,
- IN DEVICE_POWER_STATE RequestedNewState);
- /* ===============================================================
- Properties
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcGetDeviceProperty(
- IN PVOID DeviceObject,
- IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
- IN ULONG BufferLength,
- OUT PVOID PropertyBuffer,
- OUT PULONG ResultLength);
- PORTCLASSAPI NTSTATUS NTAPI
- PcCompletePendingPropertyRequest(
- IN PPCPROPERTY_REQUEST PropertyRequest,
- IN NTSTATUS NtStatus);
- /* ===============================================================
- I/O Timeouts
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcRegisterIoTimeout(
- IN PDEVICE_OBJECT pDeviceObject,
- IN PIO_TIMER_ROUTINE pTimerRoutine,
- IN PVOID pContext);
- PORTCLASSAPI NTSTATUS NTAPI
- PcUnregisterIoTimeout(
- IN PDEVICE_OBJECT pDeviceObject,
- IN PIO_TIMER_ROUTINE pTimerRoutine,
- IN PVOID pContext);
- /* ===============================================================
- Physical Connections
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcRegisterPhysicalConnection(
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNKNOWN FromUnknown,
- IN ULONG FromPin,
- IN PUNKNOWN ToUnknown,
- IN ULONG ToPin);
- PORTCLASSAPI NTSTATUS NTAPI
- PcRegisterPhysicalConnectionFromExternal(
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNICODE_STRING FromString,
- IN ULONG FromPin,
- IN PUNKNOWN ToUnknown,
- IN ULONG ToPin);
- PORTCLASSAPI NTSTATUS NTAPI
- PcRegisterPhysicalConnectionToExternal(
- IN PDEVICE_OBJECT DeviceObject,
- IN PUNKNOWN FromUnknown,
- IN ULONG FromPin,
- IN PUNICODE_STRING ToString,
- IN ULONG ToPin);
- /* ===============================================================
- Misc
- */
- PORTCLASSAPI ULONGLONG NTAPI
- PcGetTimeInterval(
- IN ULONGLONG Since);
- PORTCLASSAPI NTSTATUS NTAPI
- PcRegisterSubdevice(
- IN PDEVICE_OBJECT DeviceObject,
- IN PWCHAR Name,
- IN PUNKNOWN Unknown);
- /* ===============================================================
- Digital Rights Management Functions
- Implemented in XP and above
- */
- PORTCLASSAPI NTSTATUS NTAPI
- PcAddContentHandlers(
- IN ULONG ContentId,
- IN PVOID *paHandlers,
- IN ULONG NumHandlers);
- PORTCLASSAPI NTSTATUS NTAPI
- PcCreateContentMixed(
- IN PULONG paContentId,
- IN ULONG cContentId,
- OUT PULONG pMixedContentId);
- PORTCLASSAPI NTSTATUS NTAPI
- PcDestroyContent(
- IN ULONG ContentId);
- PORTCLASSAPI NTSTATUS NTAPI
- PcForwardContentToDeviceObject(
- IN ULONG ContentId,
- IN PVOID Reserved,
- IN PCDRMFORWARD DrmForward);
- PORTCLASSAPI NTSTATUS NTAPI
- PcForwardContentToFileObject(
- IN ULONG ContentId,
- IN PFILE_OBJECT FileObject);
- PORTCLASSAPI NTSTATUS NTAPI
- PcForwardContentToInterface(
- IN ULONG ContentId,
- IN PUNKNOWN pUnknown,
- IN ULONG NumMethods);
- PORTCLASSAPI NTSTATUS NTAPI
- PcGetContentRights(
- IN ULONG ContentId,
- OUT PDRMRIGHTS DrmRights);
- #endif /* PORTCLS_H */
|