148#define PORTCLASSAPI EXTERN_C __declspec(dllimport)
150#define PORTCLASSAPI EXTERN_C
154#define PCFILTER_NODE ((ULONG) -1)
159#define _100NS_UNITS_PER_SECOND 10000000L
160#define PORT_CLASS_DEVICE_EXTENSION_SIZE ( 64 * sizeof(ULONG_PTR) )
163DEFINE_GUID(CLSID_MiniportDriverFmSynth, 0xb4c90ae0L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
164DEFINE_GUID(CLSID_MiniportDriverFmSynthWithVol, 0xe5a3c139L, 0xf0f2, 0x11d1, 0x81, 0xaf, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
169#define PCEVENT_ITEM_FLAG_ENABLE KSEVENT_TYPE_ENABLE
170#define PCEVENT_ITEM_FLAG_ONESHOT KSEVENT_TYPE_ONESHOT
171#define PCEVENT_ITEM_FLAG_BASICSUPPORT KSEVENT_TYPE_BASICSUPPORT
177#define PCEVENT_VERB_NONE 0
178#define PCEVENT_VERB_ADD 1
179#define PCEVENT_VERB_REMOVE 2
180#define PCEVENT_VERB_SUPPORT 4
186#define PCMETHOD_ITEM_FLAG_NONE KSMETHOD_TYPE_NONE
187#define PCMETHOD_ITEM_FLAG_READ KSMETHOD_TYPE_READ
188#define PCMETHOD_ITEM_FLAG_WRITE KSMETHOD_TYPE_WRITE
189#define PCMETHOD_ITEM_FLAG_MODIFY KSMETHOD_TYPE_MODIFY
190#define PCMETHOD_ITEM_FLAG_SOURCE KSMETHOD_TYPE_SOURCE
196#define PCMETHOD_ITEM_FLAG_BASICSUPPORT KSMETHOD_TYPE_BASICSUPPORT
197#define PCMETHOD_ITEM_FLAG_SEND
198#define PCMETHOD_ITEM_FLAG_SETSUPPORT
240#define PCPROPERTY_ITEM_FLAG_GET KSPROPERTY_TYPE_GET
241#define PCPROPERTY_ITEM_FLAG_SET KSPROPERTY_TYPE_SET
242#define PCPROPERTY_ITEM_FLAG_BASICSUPPORT KSPROPERTY_TYPE_BASICSUPPORT
244#define PCPROPERTY_ITEM_FLAG_SERIALIZERAW KSPROPERTY_TYPE_SERIALIZERAW
245#define PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW KSPROPERTY_TYPE_UNSERIALIZERAW
246#define PCPROPERTY_ITEM_FLAG_SERIALIZESIZE KSPROPERTY_TYPE_SERIALIZESIZE
247#define PCPROPERTY_ITEM_FLAG_SERIALIZE\
248 (PCPROPERTY_ITEM_FLAG_SERIALIZERAW\
249 |PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW\
250 |PCPROPERTY_ITEM_FLAG_SERIALIZESIZE\
252#define PCPROPERTY_ITEM_FLAG_DEFAULTVALUES KSPROPERTY_TYPE_DEFAULTVALUES
368#define DEFINE_PCAUTOMATION_TABLE_PROP(AutomationTable,PropertyTable) \
369 const PCAUTOMATION_TABLE AutomationTable = { \
370 sizeof(PropertyTable[0]), \
371 SIZEOF_ARRAY(PropertyTable), \
372 (const PCPROPERTY_ITEM *) PropertyTable, \
383#define INTERFACE IResourceList
385DEFINE_GUID(IID_IResourceList, 0x22C6AC60L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
416#define IMP_IResourceList \
417 STDMETHODIMP_(ULONG) NumberOfEntries(void); \
419 STDMETHODIMP_(ULONG) NumberOfEntriesOfType( \
420 IN CM_RESOURCE_TYPE Type); \
422 STDMETHODIMP_(PCM_PARTIAL_RESOURCE_DESCRIPTOR) FindTranslatedEntry( \
423 IN CM_RESOURCE_TYPE Type, \
426 STDMETHODIMP_(PCM_PARTIAL_RESOURCE_DESCRIPTOR) FindUntranslatedEntry( \
427 IN CM_RESOURCE_TYPE Type, \
430 STDMETHODIMP_(NTSTATUS) AddEntry( \
431 IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Translated, \
432 IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated); \
434 STDMETHODIMP_(NTSTATUS) AddEntryFromParent( \
435 IN IResourceList* Parent, \
436 IN CM_RESOURCE_TYPE Type, \
439 STDMETHODIMP_(PCM_RESOURCE_LIST) TranslatedList(void); \
440 STDMETHODIMP_(PCM_RESOURCE_LIST) UntranslatedList(void);
444#define NumberOfPorts() \
445 NumberOfEntriesOfType(CmResourceTypePort)
447#define FindTranslatedPort(n) \
448 FindTranslatedEntry(CmResourceTypePort, (n))
450#define FindUntranslatedPort(n) \
451 FindUntranslatedEntry(CmResourceTypePort, (n))
453#define AddPortFromParent(p, n) \
454 AddEntryFromParent((p), CmResourceTypePort, (n))
456#define NumberOfInterrupts() \
457 NumberOfEntriesOfType(CmResourceTypeInterrupt)
459#define FindTranslatedInterrupt(n) \
460 FindTranslatedEntry(CmResourceTypeInterrupt, (n))
462#define FindUntranslatedInterrupt(n) \
463 FindUntranslatedEntry(CmResourceTypeInterrupt, (n))
465#define AddInterruptFromParent(p, n) \
466 AddEntryFromParent((p), CmResourceTypeInterrupt, (n))
468#define NumberOfMemories() \
469 NumberOfEntriesOfType(CmResourceTypeMemory)
471#define FindTranslatedMemory(n) \
472 FindTranslatedEntry(CmResourceTypeMemory, (n))
474#define FindUntranslatedMemory(n) \
475 FindUntranslatedEntry(CmResourceTypeMemory, (n))
477#define AddMemoryFromParent(p, n) \
478 AddEntryFromParent((p), CmResourceTypeMemory, (n))
480#define NumberOfDmas() \
481 NumberOfEntriesOfType(CmResourceTypeDma)
483#define FindTranslatedDma(n) \
484 FindTranslatedEntry(CmResourceTypeDma, (n))
486#define FindUntranslatedDma(n) \
487 FindUntranslatedEntry(CmResourceTypeDma, (n))
489#define AddDmaFromParent(p, n) \
490 AddEntryFromParent((p), CmResourceTypeInterrupt, (n))
492#define NumberOfDeviceSpecifics() \
493 NumberOfEntriesOfType(CmResourceTypeDeviceSpecific)
495#define FindTranslatedDeviceSpecific(n) \
496 FindTranslatedEntry(CmResourceTypeDeviceSpecific, (n))
498#define FindUntranslatedDeviceSpecific(n) \
499 FindUntranslatedEntry(CmResourceTypeDeviceSpecific, (n))
501#define AddDeviceSpecificFromParent(p, n) \
502 AddEntryFromParent((p), CmResourceTypeDeviceSpecific, (n))
504#define NumberOfBusNumbers() \
505 NumberOfEntriesOfType(CmResourceTypeBusNumber)
507#define FindTranslatedBusNumber(n) \
508 FindTranslatedEntry(CmResourceTypeBusNumber, (n))
510#define FindUntranslatedBusNumber(n) \
511 FindUntranslatedEntry(CmResourceTypeBusNumber, (n))
513#define AddBusNumberFromParent(p, n) \
514 AddEntryFromParent((p), CmResourceTypeBusNumber, (n))
516#define NumberOfDevicePrivates() \
517 NumberOfEntriesOfType(CmResourceTypeDevicePrivate)
519#define FindTranslatedDevicePrivate(n) \
520 FindTranslatedEntry(CmResourceTypeDevicePrivate, (n))
522#define FindUntranslatedDevicePrivate(n) \
523 FindUntranslatedEntry(CmResourceTypeDevicePrivate, (n))
525#define AddDevicePrivateFromParent(p, n) \
526 AddEntryFromParent((p), CmResourceTypeDevicePrivate, (n))
528#define NumberOfAssignedResources() \
529 NumberOfEntriesOfType(CmResourceTypeAssignedResource)
531#define FindTranslatedAssignedResource(n) \
532 FindTranslatedEntry(CmResourceTypeAssignedResource, (n))
534#define FindUntranslatedAssignedResource(n) \
535 FindUntranslatedEntry(CmResourceTypeAssignedResource, (n))
537#define AddAssignedResourceFromParent(p, n) \
538 AddEntryFromParent((p), CmResourceTypeAssignedResource, (n))
540#define NumberOfSubAllocateFroms() \
541 NumberOfEntriesOfType(CmResourceTypeSubAllocateFrom)
543#define FindTranslatedSubAllocateFrom(n) \
544 FindTranslatedEntry(CmResourceTypeSubAllocateFrom, (n))
546#define FindUntranslatedSubAllocateFrom(n) \
547 FindUntranslatedEntry(CmResourceTypeSubAllocateFrom, (n))
549#define AddSubAllocateFromFromParent(p, n) \
550 AddEntryFromParent((p), CmResourceTypeSubAllocateFrom, (n))
557#define INTERFACE IServiceSink
559DEFINE_GUID(IID_IServiceSink, 0x22C6AC64L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
566#define IMP_IServiceSink \
567 STDMETHODIMP_(void) RequestService(void);
575#define INTERFACE IServiceGroup
577DEFINE_GUID(IID_IServiceGroup, 0x22C6AC65L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
598#define IMP_IServiceGroup \
601 STDMETHODIMP_(NTSTATUS) AddMember( \
602 IN PSERVICESINK pServiceSink); \
604 STDMETHODIMP_(void) RemoveMember( \
605 IN PSERVICESINK pServiceSink); \
607 STDMETHODIMP_(void) SupportDelayedService(void); \
609 STDMETHODIMP_(void) RequestDelayedService( \
610 IN ULONGLONG ullDelay); \
612 STDMETHODIMP_(void) CancelDelayedService(void);
617#if (NTDDI_VERSION >= NTDDI_WS03)
622DEFINE_GUID(IID_IUnregisterSubdevice, 0x16738177L, 0xe199, 0x41f9, 0x9a, 0x87, 0xab, 0xb2, 0xa5, 0x43, 0x2f, 0x21);
625#define INTERFACE IUnregisterSubdevice
637#define IMP_IUnregisterSubdevice \
638 STDMETHODIMP_(NTSTATUS) UnregisterSubdevice(THIS_ \
639 IN PDEVICE_OBJECT DeviceObject, \
647#define INTERFACE IUnregisterPhysicalConnection
649DEFINE_GUID(IID_IUnregisterPhysicalConnection, 0x6c38e231L, 0x2a0d, 0x428d, 0x81, 0xf8, 0x07, 0xcc, 0x42, 0x8b, 0xb9, 0xa4);
680#define IMP_IUnregisterPhysicalConnection \
681 STDMETHODIMP_(NTSTATUS) UnregisterPhysicalConnection( \
682 IN PDEVICE_OBJECT DeviceObject, \
683 IN PUNKNOWN FromUnknown, \
685 IN PUNKNOWN ToUnknown, \
688 STDMETHODIMP_(NTSTATUS) UnregisterPhysicalConnectionToExternal( \
689 IN PDEVICE_OBJECT DeviceObject, \
690 IN PUNKNOWN FromUnknown, \
692 IN PUNICODE_STRING ToString, \
695 STDMETHODIMP_(NTSTATUS) UnregisterPhysicalConnectionFromExternal( \
696 IN PDEVICE_OBJECT DeviceObject, \
697 IN PUNICODE_STRING FromString, \
699 IN PUNKNOWN ToUnknown, \
708#if defined(__cplusplus) && !defined(_MSC_VER)
709#define DEFINE_ABSTRACT_DMACHANNEL_PhysicalAddress \
710 STDMETHOD_(PHYSICAL_ADDRESS*, PhysicalAddress)( THIS_ PHYSICAL_ADDRESS* pRet ) PURE; \
711 PHYSICAL_ADDRESS PhysicalAddress() { PHYSICAL_ADDRESS tmp; PhysicalAddress(&tmp); return tmp; }
713#define DEFINE_ABSTRACT_DMACHANNEL_PhysicalAddress \
714 STDMETHOD_(PHYSICAL_ADDRESS, PhysicalAddress)( THIS ) PURE
717#define DEFINE_ABSTRACT_DMACHANNEL() \
718 STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \
719 IN ULONG BufferSize, \
720 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL) PURE; \
722 STDMETHOD_(void, FreeBuffer)( THIS ) PURE; \
723 STDMETHOD_(ULONG, TransferCount)( THIS ) PURE; \
724 STDMETHOD_(ULONG, MaximumBufferSize)( THIS ) PURE; \
725 STDMETHOD_(ULONG, AllocatedBufferSize)( THIS ) PURE; \
726 STDMETHOD_(ULONG, BufferSize)( THIS ) PURE; \
728 STDMETHOD_(void, SetBufferSize)( THIS_ \
729 IN ULONG BufferSize) PURE; \
731 STDMETHOD_(PVOID, SystemAddress)( THIS ) PURE; \
732 DEFINE_ABSTRACT_DMACHANNEL_PhysicalAddress; \
733 STDMETHOD_(PADAPTER_OBJECT, GetAdapterObject)( THIS ) PURE; \
735 STDMETHOD_(void, CopyTo)( THIS_ \
736 IN PVOID Destination, \
738 IN ULONG ByteCount) PURE; \
740 STDMETHOD_(void, CopyFrom)( THIS_ \
741 IN PVOID Destination, \
743 IN ULONG ByteCount) PURE;
745#define IMP_IDmaChannel \
746 STDMETHODIMP_(NTSTATUS) AllocateBuffer( \
747 IN ULONG BufferSize, \
748 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL); \
750 STDMETHODIMP_(void) FreeBuffer(void); \
751 STDMETHODIMP_(ULONG) TransferCount(void); \
752 STDMETHODIMP_(ULONG) MaximumBufferSize(void); \
753 STDMETHODIMP_(ULONG) AllocatedBufferSize(void); \
754 STDMETHODIMP_(ULONG) BufferSize(void); \
756 STDMETHODIMP_(void) SetBufferSize( \
757 IN ULONG BufferSize); \
759 STDMETHODIMP_(PVOID) SystemAddress(void); \
760 STDMETHODIMP_(PHYSICAL_ADDRESS) PhysicalAddress(void); \
761 STDMETHODIMP_(PADAPTER_OBJECT) GetAdapterObject(void); \
763 STDMETHODIMP_(void) CopyTo( \
764 IN PVOID Destination, \
766 IN ULONG ByteCount); \
768 STDMETHODIMP_(void) CopyFrom( \
769 IN PVOID Destination, \
774#define INTERFACE IDmaChannel
776DEFINE_GUID(IID_IDmaChannel, 0x22C6AC61L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
791#define DEFINE_ABSTRACT_DMACHANNELSLAVE() \
792 STDMETHOD_(NTSTATUS, Start)( THIS_ \
794 IN BOOLEAN WriteToDevice) PURE; \
796 STDMETHOD_(NTSTATUS, Stop)( THIS ) PURE; \
797 STDMETHOD_(ULONG, ReadCounter)( THIS ) PURE; \
799 STDMETHOD_(NTSTATUS, WaitForTC)( THIS_ \
802#define IMP_IDmaChannelSlave \
804 STDMETHODIMP_(NTSTATUS) Start( \
806 IN BOOLEAN WriteToDevice); \
808 STDMETHODIMP_(NTSTATUS) Stop(void); \
809 STDMETHODIMP_(ULONG) ReadCounter(void); \
811 STDMETHODIMP_(NTSTATUS) WaitForTC( \
815#define INTERFACE IDmaChannelSlave
817#if (NTDDI_VERSION < NTDDI_LONGHORN)
818DEFINE_GUID(
IID_IDmaChannelSlave, 0x22C6AC62L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
822#define INTERFACE IDmaChannelSlave
845struct IInterruptSync;
848 IN struct IInterruptSync* InterruptSync,
852#define INTERFACE IInterruptSync
872DEFINE_GUID(IID_IInterruptSync, 0x22C6AC63L, 0x851B, 0x11D0, 0x9A, 0x7F, 0x00, 0xAA, 0x00, 0x38, 0xAC, 0xFE);
874#define IMP_IInterruptSync \
875 STDMETHODIMP_(NTSTATUS) CallSynchronizedRoutine( \
876 IN PINTERRUPTSYNCROUTINE Routine, \
877 IN PVOID DynamicContext); \
879 STDMETHODIMP_(PKINTERRUPT) GetKInterrupt(void); \
880 STDMETHODIMP_(NTSTATUS) Connect(void); \
881 STDMETHODIMP_(void) Disconnect(void); \
883 STDMETHODIMP_(NTSTATUS) RegisterServiceRoutine( \
884 IN PINTERRUPTSYNCROUTINE Routine, \
885 IN PVOID DynamicContext, \
896#define INTERFACE IRegistryKey
907DEFINE_GUID(IID_IRegistryKey, 0xE8DA4302l, 0xF304, 0x11D0, 0x95, 0x8B, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3);
951 OUT IRegistryKey** RegistrySubKey,
961#define IMP_IRegistryKey \
962 STDMETHODIMP_(NTSTATUS) QueryKey( \
963 IN KEY_INFORMATION_CLASS KeyInformationClass, \
964 OUT PVOID KeyInformation, \
966 OUT PULONG ResultLength); \
968 STDMETHODIMP_(NTSTATUS) EnumerateKey( \
970 IN KEY_INFORMATION_CLASS KeyInformationClass, \
971 OUT PVOID KeyInformation, \
973 OUT PULONG ResultLength); \
975 STDMETHODIMP_(NTSTATUS) QueryValueKey( \
976 IN PUNICODE_STRING ValueName, \
977 IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, \
978 OUT PVOID KeyValueInformation, \
980 OUT PULONG ResultLength); \
982 STDMETHODIMP_(NTSTATUS) EnumerateValueKey( \
984 IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, \
985 OUT PVOID KeyValueInformation, \
987 OUT PULONG ResultLength); \
989 STDMETHODIMP_(NTSTATUS) SetValueKey( \
990 IN PUNICODE_STRING ValueName OPTIONAL, \
993 IN ULONG DataSize); \
995 STDMETHODIMP_(NTSTATUS) QueryRegistryValues( \
996 IN PRTL_QUERY_REGISTRY_TABLE QueryTable, \
997 IN PVOID Context OPTIONAL); \
999 STDMETHODIMP_(NTSTATUS) NewSubKey( \
1000 OUT IRegistryKey** RegistrySubKey, \
1001 IN PUNKNOWN OuterUnknown, \
1002 IN ACCESS_MASK DesiredAccess, \
1003 IN PUNICODE_STRING SubKeyName, \
1004 IN ULONG CreateOptions, \
1005 OUT PULONG Disposition OPTIONAL); \
1007 STDMETHODIMP_(NTSTATUS) DeleteKey(void);
1024#define IMP_IMusicTechnology \
1025 STDMETHODIMP_(NTSTATUS) SetTechnology( \
1026 IN const GUID* Technology);
1036#define STATIC_IPort 0xb4c90a25L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44
1038#define IID_IPort DEFINE_GUIDNAMED(IID_IPort)
1042 0xb4c90a24L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1045 0xb4c90a25L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1047#define DEFINE_ABSTRACT_PORT() \
1048 STDMETHOD_(NTSTATUS, Init)( THIS_ \
1049 IN PDEVICE_OBJECT DeviceObject, \
1051 IN PUNKNOWN UnknownMiniport, \
1052 IN PUNKNOWN UnknownAdapter OPTIONAL, \
1053 IN PRESOURCELIST ResourceList) PURE; \
1055 STDMETHOD_(NTSTATUS, GetDeviceProperty)( THIS_ \
1056 IN DEVICE_REGISTRY_PROPERTY DeviceProperty, \
1057 IN ULONG BufferLength, \
1058 OUT PVOID PropertyBuffer, \
1059 OUT PULONG ResultLength) PURE; \
1061 STDMETHOD_(NTSTATUS, NewRegistryKey)( THIS_ \
1062 OUT PREGISTRYKEY* OutRegistryKey, \
1063 IN PUNKNOWN OuterUnknown OPTIONAL, \
1064 IN ULONG RegistryKeyType, \
1065 IN ACCESS_MASK DesiredAccess, \
1066 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, \
1067 IN ULONG CreateOptiona OPTIONAL, \
1068 OUT PULONG Disposition OPTIONAL) PURE;
1070#ifdef PC_IMPLEMENTATION
1072 STDMETHODIMP_(NTSTATUS) Init\
1073 ( IN PDEVICE_OBJECT DeviceObject,\
1075 IN PUNKNOWN UnknownMiniport,\
1076 IN PUNKNOWN UnknownAdapter OPTIONAL,\
1077 IN PRESOURCELIST ResourceList\
1079 STDMETHODIMP_(NTSTATUS) GetDeviceProperty\
1080 ( IN DEVICE_REGISTRY_PROPERTY DeviceProperty,\
1081 IN ULONG BufferLength,\
1082 OUT PVOID PropertyBuffer,\
1083 OUT PULONG ResultLength\
1085 STDMETHODIMP_(NTSTATUS) NewRegistryKey\
1086 ( OUT PREGISTRYKEY * OutRegistryKey,\
1087 IN PUNKNOWN OuterUnknown OPTIONAL,\
1088 IN ULONG RegistryKeyType,\
1089 IN ACCESS_MASK DesiredAccess,\
1090 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\
1091 IN ULONG CreateOptions OPTIONAL,\
1092 OUT PULONG Disposition OPTIONAL\
1097#define INTERFACE IPort
1113 0xb4c90a40L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1115 0xb4c90a43L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1118#define INTERFACE IPortMidi
1134#define IMP_IPortMidi() \
1135 STDMETHODIMP_(VOID) Notify( \
1136 IN PSERVICEGROUP ServiceGroup OPTIONAL); \
1138 STDMETHODIMP_(NTSTATUS) RegisterServiceGroup( \
1139 IN PSERVICEGROUP ServiceGroup);
1148 0xb4c90a26L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1150 0xb4c90a2aL, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1152#define INTERFACE IPortWaveCyclic
1186#ifdef PC_IMPLEMENTATION
1187#define IMP_IPortWaveCyclic \
1189 STDMETHODIMP_(VOID) Notify( \
1190 IN PSERVICEGROUP ServiceGroup); \
1192 STDMETHODIMP_(NTSTATUS) NewSlaveDmaChannel( \
1193 OUT PDMACHANNELSLAVE* DmaChannel, \
1194 IN PUNKNOWN OuterUnknown, \
1195 IN PRESOURCELIST ResourceList OPTIONAL, \
1196 IN ULONG DmaIndex, \
1197 IN ULONG MaximumLength, \
1198 IN BOOLEAN DemandMode, \
1199 IN DMA_SPEED DmaSpeed); \
1201 STDMETHODIMP_(NTSTATUS) NewMasterDmaChannel( \
1202 OUT PDMACHANNEL* DmaChannel, \
1203 IN PUNKNOWN OuterUnknown, \
1204 IN PRESOURCELIST ResourceList OPTIONAL, \
1205 IN ULONG MaximumLength, \
1206 IN BOOLEAN Dma32BitAddresses, \
1207 IN BOOLEAN Dma64BitAddresses, \
1208 IN DMA_WIDTH DmaWidth, \
1209 IN DMA_SPEED DmaSpeed)
1218#define INTERFACE IPortWavePci
1221 0xb4c90a50L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1223 0xb4c90a54L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1251#ifdef PC_IMPLEMENTATION
1252#define IMP_IPortWavePci \
1254 STDMETHODIMP_(VOID) Notify( \
1255 IN PSERVICEGROUP ServiceGroup); \
1257 STDMETHODIMP_(NTSTATUS) NewMasterDmaChannel( \
1258 OUT PDMACHANNEL* DmaChannel, \
1259 IN PUNKNOWN OuterUnknown, \
1260 IN POOL_TYPE PoolType, \
1261 IN PRESOURCELIST ResourceList OPTIONAL, \
1262 IN BOOLEAN ScatterGather, \
1263 IN BOOLEAN Dma32BitAddresses, \
1264 IN BOOLEAN Dma64BitAddresses, \
1265 IN BOOLEAN IgnoreCount, \
1266 IN DMA_WIDTH DmaWidth, \
1267 IN DMA_SPEED DmaSpeed, \
1268 IN ULONG MaximumLength, \
1277 0xb4c90a24L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1279#define DEFINE_ABSTRACT_MINIPORT() \
1280 STDMETHOD_(NTSTATUS, GetDescription)( THIS_ \
1281 OUT PPCFILTER_DESCRIPTOR* Description) PURE; \
1283 STDMETHOD_(NTSTATUS, DataRangeIntersection)( THIS_ \
1285 IN PKSDATARANGE DataRange, \
1286 IN PKSDATARANGE MatchingDataRange, \
1287 IN ULONG OutputBufferLength, \
1288 OUT PVOID ResultantFormat OPTIONAL, \
1289 OUT PULONG ResultantFormatLength) PURE;
1291#define IMP_IMiniport \
1292 STDMETHODIMP_(NTSTATUS) GetDescription( \
1293 OUT PPCFILTER_DESCRIPTOR* Description); \
1295 STDMETHODIMP_(NTSTATUS) DataRangeIntersection( \
1297 IN PKSDATARANGE DataRange, \
1298 IN PKSDATARANGE MatchingDataRange, \
1299 IN ULONG OutputBufferLength, \
1300 OUT PVOID ResultantFormat OPTIONAL, \
1301 OUT PULONG ResultantFormatLength)
1316#define INTERFACE IMiniportMidiStream
1319 0xb4c90a42L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1349#define INTERFACE IMiniportMidi
1352 0xb4c90a41L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1386 0xb4c90ae1L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1388 0xb4c90ae1L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1394#define STATIC_IPortTopology \
1395 0xb4c90a30L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44
1397#define IID_IPortTopology DEFINE_GUIDNAMED(IID_IPortTopology)
1401#define INTERFACE IPortTopology
1403DEFINE_GUID(IID_IPortTopology, 0xb4c90a30L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1404DEFINE_GUID(CLSID_PortTopology, 0xb4c90a32L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1407#define INTERFACE IPortTopology
1417#define IMP_IPortTopology IMP_IPort
1425#define INTERFACE IMiniportTopology
1427DEFINE_GUID(IID_IMiniportTopology, 0xb4c90a31L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1430#define INTERFACE IMiniportTopology
1445#define IMP_IMiniportTopology\
1447 STDMETHODIMP_(NTSTATUS) Init(\
1448 IN PUNKNOWN UnknownAdapter,\
1449 IN PRESOURCELIST ResourceList,\
1450 IN PPORTTOPOLOGY Port);
1457#define INTERFACE IMiniportWaveCyclicStream
14600xb4c90a28L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1489#define IMP_IMiniportWaveCyclicStream\
1490 STDMETHODIMP_(NTSTATUS) SetFormat\
1491 ( IN PKSDATAFORMAT DataFormat\
1493 STDMETHODIMP_(ULONG) SetNotificationFreq\
1494 ( IN ULONG Interval,\
1495 OUT PULONG FrameSize\
1497 STDMETHODIMP_(NTSTATUS) SetState\
1500 STDMETHODIMP_(NTSTATUS) GetPosition\
1501 ( OUT PULONG Position\
1503 STDMETHODIMP_(NTSTATUS) NormalizePhysicalPosition\
1504 ( IN OUT PLONGLONG PhysicalPosition\
1506 STDMETHODIMP_(void) Silence\
1518 0xb4c90a27L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1520#define INTERFACE IMiniportWaveCyclic
1546#define IMP_IMiniportWaveCyclic\
1548 STDMETHODIMP_(NTSTATUS) Init\
1549 ( IN PUNKNOWN UnknownAdapter,\
1550 IN PRESOURCELIST ResourceList,\
1551 IN PPORTWAVECYCLIC Port\
1553 STDMETHODIMP_(NTSTATUS) NewStream\
1554 ( OUT PMINIPORTWAVECYCLICSTREAM * Stream,\
1555 IN PUNKNOWN OuterUnknown OPTIONAL,\
1556 IN POOL_TYPE PoolType,\
1558 IN BOOLEAN Capture,\
1559 IN PKSDATAFORMAT DataFormat,\
1560 OUT PDMACHANNEL * DmaChannel,\
1561 OUT PSERVICEGROUP * ServiceGroup\
1569#define INTERFACE IPortWavePciStream
1571DEFINE_GUID(IID_IPortWavePciStream, 0xb4c90a51L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1592#define IMP_IPortWavePciStream \
1593 STDMETHODIMP_(NTSTATUS) GetMapping( \
1595 OUT PPHYSICAL_ADDRESS PhysicalAddress, \
1596 OUT PVOID * VirtualAddress, \
1597 OUT PULONG ByteCount, \
1598 OUT PULONG Flags); \
1600 STDMETHODIMP_(NTSTATUS) ReleaseMapping( \
1603 STDMETHODIMP_(NTSTATUS) TerminatePacket(THIS)
1610#define INTERFACE IMiniportWavePciStream
1612DEFINE_GUID(IID_IMiniportWavePciStream, 0xb4c90a53L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1645#define IMP_IMiniportWavePciStream\
1646 STDMETHODIMP_(NTSTATUS) SetFormat(\
1647 IN PKSDATAFORMAT DataFormat);\
1648 STDMETHODIMP_(NTSTATUS) SetState(\
1650 STDMETHODIMP_(NTSTATUS) GetPosition(\
1651 OUT PULONGLONG Position);\
1652 STDMETHODIMP_(NTSTATUS) NormalizePhysicalPosition(\
1653 IN OUT PLONGLONG PhysicalPosition);\
1654 STDMETHODIMP_(NTSTATUS) GetAllocatorFraming(\
1655 OUT PKSALLOCATOR_FRAMING AllocatorFraming);\
1656 STDMETHODIMP_(NTSTATUS) RevokeMappings(\
1659 OUT PULONG MappingsRevoked);\
1660 STDMETHODIMP_(void) MappingAvailable(void);\
1661 STDMETHODIMP_(void) Service(void);
1667#define INTERFACE IMiniportWavePci
1669DEFINE_GUID(IID_IMiniportWavePci, 0xb4c90a52L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44);
1699#define IMP_IMiniportWavePci\
1701 STDMETHODIMP_(NTSTATUS) Init(\
1702 IN PUNKNOWN UnknownAdapter,\
1703 IN PRESOURCELIST ResourceList,\
1704 IN PPORTWAVEPCI Port,\
1705 OUT PSERVICEGROUP * ServiceGroup);\
1706 STDMETHODIMP_(NTSTATUS) NewStream(\
1707 OUT PMINIPORTWAVEPCISTREAM * Stream,\
1708 IN PUNKNOWN OuterUnknown ,\
1709 IN POOL_TYPE PoolType,\
1710 IN PPORTWAVEPCISTREAM PortStream,\
1712 IN BOOLEAN Capture,\
1713 IN PKSDATAFORMAT DataFormat,\
1714 OUT PDMACHANNEL * DmaChannel,\
1715 OUT PSERVICEGROUP * ServiceGroup);\
1716 STDMETHODIMP_(void) Service(void);
1719#if !defined(DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM)
1721#define DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM() \
1722 STDMETHOD_(NTSTATUS,SetFormat) \
1724 IN PKSDATAFORMAT DataFormat \
1726 STDMETHOD_(NTSTATUS,SetState) \
1730 STDMETHOD_(NTSTATUS,GetPosition) \
1732 OUT PKSAUDIO_POSITION Position \
1734 STDMETHOD_(NTSTATUS,AllocateAudioBuffer) \
1736 IN ULONG RequestedSize, \
1737 OUT PMDL *AudioBufferMdl, \
1738 OUT ULONG *ActualSize, \
1739 OUT ULONG *OffsetFromFirstPage, \
1740 OUT MEMORY_CACHING_TYPE *CacheType \
1742 STDMETHOD_(VOID,FreeAudioBuffer) \
1744 IN PMDL AudioBufferMdl, \
1745 IN ULONG BufferSize \
1747 STDMETHOD_(VOID,GetHWLatency) \
1749 OUT KSRTAUDIO_HWLATENCY *hwLatency \
1751 STDMETHOD_(NTSTATUS,GetPositionRegister) \
1753 OUT KSRTAUDIO_HWREGISTER *Register \
1755 STDMETHOD_(NTSTATUS,GetClockRegister) \
1757 OUT KSRTAUDIO_HWREGISTER *Register \
1767#if (NTDDI_VERSION >= NTDDI_VISTA)
1772DEFINE_GUID(CLSID_PortWaveRT, 0xcc9be57a, 0xeb9e, 0x42b4, 0x94, 0xfc, 0xc, 0xad, 0x3d, 0xbc, 0xe7, 0xfa);
1773DEFINE_GUID(IID_IPortWaveRT, 0x339ff909, 0x68a9, 0x4310, 0xb0, 0x9b, 0x27, 0x4e, 0x96, 0xee, 0x4c, 0xbd);
1776#define INTERFACE IPortWaveRT
1787#ifdef PC_IMPLEMENTATION
1788#define IMP_IPortWaveRT IMP_IPort
1797#define INTERFACE IPortWaveRTStream
1799DEFINE_GUID(IID_IPortWaveRTStream, 0x1809ce5a, 0x64bc, 0x4e62, 0xbd, 0x7d, 0x95, 0xbc, 0xe4, 0x3d, 0xe3, 0x93);
1855#define INTERFACE IMiniportWaveRTStream
1857DEFINE_GUID(IID_IMiniportWaveRTStream, 0xac9ab, 0xfaab, 0x4f3d, 0x94, 0x55, 0x6f, 0xf8, 0x30, 0x6a, 0x74, 0xa0);
1867#define IMP_IMiniportWaveRTStream\
1868 STDMETHODIMP_(NTSTATUS) SetFormat\
1869 ( IN PKSDATAFORMAT DataFormat\
1871 STDMETHODIMP_(NTSTATUS) SetState\
1874 STDMETHODIMP_(NTSTATUS) GetPosition\
1875 ( OUT PKSAUDIO_POSITION Position\
1877 STDMETHODIMP_(NTSTATUS) AllocateAudioBuffer\
1879 IN ULONG RequestedSize,\
1880 OUT PMDL *AudioBufferMdl,\
1881 OUT ULONG *ActualSize,\
1882 OUT ULONG *OffsetFromFirstPage,\
1883 OUT MEMORY_CACHING_TYPE *CacheType\
1885 STDMETHODIMP_(VOID) FreeAudioBuffer\
1887 IN PMDL AudioBufferMdl,\
1888 IN ULONG BufferSize\
1890 STDMETHODIMP_(VOID) GetHWLatency\
1892 OUT KSRTAUDIO_HWLATENCY *hwLatency\
1894 STDMETHODIMP_(NTSTATUS) GetPositionRegister\
1896 OUT KSRTAUDIO_HWREGISTER *Register\
1898 STDMETHODIMP_(NTSTATUS) GetClockRegister\
1900 OUT KSRTAUDIO_HWREGISTER *Register\
1909#define INTERFACE IMiniportWaveRTStreamNotification
1911DEFINE_GUID(IID_IMiniportWaveRTStreamNotification, 0x23759128, 0x96f1, 0x423b, 0xab, 0x4d, 0x81, 0x63, 0x5b, 0xcf, 0x8c, 0xa1);
1951#define INTERFACE IMiniportWaveRT
1953DEFINE_GUID(IID_IMiniportWaveRT, 0xf9fc4d6, 0x6061, 0x4f3c, 0xb1, 0xfc, 0x7, 0x5e, 0x35, 0xf7, 0x96, 0xa);
1985#define IMP_IMiniportWaveRT\
1987 STDMETHODIMP_(NTSTATUS) Init\
1988 ( IN PUNKNOWN UnknownAdapter,\
1989 IN PRESOURCELIST ResourceList,\
1990 IN PPORTWAVERT Port\
1992 STDMETHODIMP_(NTSTATUS) NewStream\
1993 ( OUT PMINIPORTWAVERTSTREAM * Stream,\
1994 IN PPORTWAVERTSTREAM PortStream,\
1996 IN BOOLEAN Capture,\
1997 IN PKSDATAFORMAT DataFormat\
1999 STDMETHODIMP_(NTSTATUS) GetDeviceDescription\
2000 ( OUT PDEVICE_DESCRIPTION DeviceDescription\
2010#define INTERFACE IAdapterPowerManagement
2012DEFINE_GUID(IID_IAdapterPowerManagement, 0x793417D0L, 0x35FE, 0x11D1, 0xAD, 0x08, 0x00, 0xA0, 0xC9, 0x0A, 0xB1, 0xB0);
2028#define IMP_IAdapterPowerManagement \
2029 STDMETHODIMP_(void) PowerChangeState \
2030 ( IN POWER_STATE NewState \
2032 STDMETHODIMP_(NTSTATUS) QueryPowerChangeState \
2033 ( IN POWER_STATE NewStateQuery \
2035 STDMETHODIMP_(NTSTATUS) QueryDeviceCapabilities \
2036 ( IN PDEVICE_CAPABILITIES PowerDeviceCaps \
2047#define INTERFACE IPowerNotify
2049DEFINE_GUID(IID_IPowerNotify, 0x3DD648B8L, 0x969F, 0x11D1, 0x95, 0xA9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3);
2061#define IMP_IPowerNotify\
2062 STDMETHODIMP_(void) PowerChangeNotify\
2063 ( IN POWER_STATE PowerState\
2072#if (NTDDI_VERSION >= NTDDI_WINXP)
2075#define INTERFACE IPinCount
2077DEFINE_GUID(IID_IPinCount, 0x5dadb7dcL, 0xa2cb, 0x4540, 0xa4, 0xa8, 0x42, 0x5e, 0xe4, 0xae, 0x90, 0x51);
2102#define INTERFACE IPortEvents
2104DEFINE_GUID(IID_IPortEvents, 0xA80F29C4L, 0x5498, 0x11D2, 0x95, 0xD9, 0x00, 0xC0, 0x4F, 0xB9, 0x25, 0xD3);
2124#define IMP_IPortEvents \
2125 STDMETHODIMP_(void) AddEventToEventList( \
2126 IN PKSEVENT_ENTRY EventEntry); \
2128 STDMETHODIMP_(void) GenerateEventList( \
2129 IN GUID* Set OPTIONAL, \
2133 IN BOOL NodeEvent, \
2142#define INTERFACE IDrmPort
2144#if (NTDDI_VERSION >= NTDDI_WINXP)
2145DEFINE_GUID(IID_IDrmPort, 0x286D3DF8L, 0xCA22, 0x4E2E, 0xB9, 0xBC, 0x20, 0xB4, 0xF0, 0xE2, 0x01, 0xCE);
2148#define DEFINE_ABSTRACT_DRMPORT() \
2149 STDMETHOD_(NTSTATUS,CreateContentMixed)(THIS_ \
2150 IN PULONG paContentId, \
2151 IN ULONG cContentId, \
2152 OUT PULONG pMixedContentId)PURE; \
2154 STDMETHOD_(NTSTATUS,DestroyContent)(THIS_ \
2155 IN ULONG ContentId)PURE; \
2157 STDMETHOD_(NTSTATUS,ForwardContentToFileObject)(THIS_ \
2158 IN ULONG ContentId, \
2159 IN PFILE_OBJECT FileObject)PURE; \
2161 STDMETHOD_(NTSTATUS,ForwardContentToInterface)(THIS_ \
2162 IN ULONG ContentId, \
2163 IN PUNKNOWN pUnknown, \
2164 IN ULONG NumMethods)PURE; \
2166 STDMETHOD_(NTSTATUS,GetContentRights)(THIS_ \
2167 IN ULONG ContentId, \
2168 OUT PDRMRIGHTS DrmRights)PURE;
2178#define IMP_IDrmPort \
2179 STDMETHODIMP_(NTSTATUS) CreateContentMixed( \
2180 IN PULONG paContentId, \
2181 IN ULONG cContentId, \
2182 OUT PULONG pMixedContentId); \
2184 STDMETHODIMP_(NTSTATUS) DestroyContent( \
2185 IN ULONG ContentId); \
2187 STDMETHODIMP_(NTSTATUS) ForwardContentToFileObject( \
2188 IN ULONG ContentId, \
2189 IN PFILE_OBJECT FileObject); \
2191 STDMETHODIMP_(NTSTATUS) ForwardContentToInterface( \
2192 IN ULONG ContentId, \
2193 IN PUNKNOWN pUnknown, \
2194 IN ULONG NumMethods); \
2196 STDMETHODIMP_(NTSTATUS) GetContentRights( \
2197 IN ULONG ContentId, \
2198 OUT PDRMRIGHTS DrmRights)
2206#define INTERFACE IDrmPort2
2208#if (NTDDI_VERSION >= NTDDI_WINXP)
2209DEFINE_GUID(IID_IDrmPort2, 0x1ACCE59CL, 0x7311, 0x4B6B, 0x9F, 0xBA, 0xCC, 0x3B, 0xA5, 0x9A, 0xCD, 0xCE);
2230#define IMP_IDrmPort2 \
2232 STDMETHODIMP_(NTSTATUS) AddContentHandlers( \
2233 IN ULONG ContentId, \
2234 IN PVOID * paHandlers, \
2235 IN ULONG NumHandlers); \
2237 STDMETHODIMP_(NTSTATUS) ForwardContentToDeviceObject( \
2238 IN ULONG ContentId, \
2239 IN PVOID Reserved, \
2240 IN PCDRMFORWARD DrmForward)
2247#define INTERFACE IPortClsVersion
2249#if (NTDDI_VERSION >= NTDDI_WINXP)
2250DEFINE_GUID(IID_IPortClsVersion, 0x7D89A7BBL, 0x869B, 0x4567, 0x8D, 0xBE, 0x1E, 0x16, 0x8C, 0xC8, 0x53, 0xDE);
2260#define IMP_IPortClsVersion \
2261 STDMETHODIMP_(DWORD) GetVersion(void);
2267#if (NTDDI_VERSION >= NTDDI_WINXP)
22690x80396C3CL, 0xCBCB, 0x409B, 0x9F, 0x65, 0x4F, 0x1E, 0x74, 0x67, 0xCD, 0xAF);
2280#define INTERFACE IPreFetchOffset
2282#if (NTDDI_VERSION >= NTDDI_WINXP)
2283DEFINE_GUID(IID_IPreFetchOffset, 0x7000f480L, 0xed44, 0x4e8b, 0xb3, 0x8a, 0x41, 0x2f, 0x8d, 0x7a, 0x50, 0x4d);
2294#define IMP_IPreFetchOffset \
2295 STDMETHODIMP_(DWORD) SetPreFetchOffset(IN ULONG PreFetchOffset);
2322 IN ULONG DeviceExtensionSize);
2501#define GTI_SECONDS(t) (ULONGLONG(t)*10000000)
2502#define GTI_MILLISECONDS(t) (ULONGLONG(t)*10000)
2503#define GTI_MICROSECONDS(t) (ULONGLONG(t)*10)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
IPortWaveRT * PPORTWAVERT
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
#define DECLARE_INTERFACE_(i, b)
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID BufferAddress
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
BOOL WINAPI SHIM_OBJ_NAME() Notify(DWORD fdwReason, PVOID ptr)
GUID IID_IDmaChannelSlave
_Out_ PDRMRIGHTS DrmRights
_In_ ULONG _Out_ PULONG pMixedContentId
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
static BOOL AddEntry(WCHAR Type, LPCWSTR Value)
_In_ PKSALLOCATOR_FRAMING AllocatorFraming
struct _KSEVENT_ENTRY * PKSEVENT_ENTRY
_In_ PKSPIN_CONNECT Connect
#define DEFINE_GUIDSTRUCT(guid, name)
#define DEFINE_ABSTRACT_UNKNOWN()
DWORD GetPosition(DWORD private_handle, PMMTIME time, DWORD time_size)
_In_ PNDIS_STRING _In_ PNDIS_STRING _Out_ PDEVICE_OBJECT * pDeviceObject
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ PNDIS_STRING SubKeyName
_In_ BOOLEAN Dma64BitAddresses
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
static BOOL StartDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
enum _KEY_VALUE_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
__GNU_EXTENSION typedef __int64 * PLONGLONG
_In_ ULONG _In_ ULONG _In_ ULONG Length
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
DRIVER_ADD_DEVICE AddDevice
IMiniportWaveCyclic * PMINIPORTWAVECYCLIC
struct PCCONNECTION_DESCRIPTOR * PPCCONNECTION_DESCRIPTOR
PORTCLASSAPI NTSTATUS NTAPI PcRegisterAdapterPowerManagement(IN PUNKNOWN pUnknown, IN PVOID pvContext1)
IRegistryKey * PREGISTRYKEY
#define DEFINE_ABSTRACT_DMACHANNELSLAVE()
IMiniportMidiStream * PMINIPORTMIDISTREAM
IDmaChannel * PDMACHANNEL
NTSTATUS(NTAPI * PCPFNPROPERTY_HANDLER)(IN PPCPROPERTY_REQUEST PropertyRequest)
#define DEFINE_ABSTRACT_DRMPORT()
NTSTATUS(NTAPI * PCPFNEVENT_HANDLER)(IN struct _PCEVENT_REQUEST *EventRequest)
IPortWaveRT * PPORTWAVERT
IMiniportWaveRT * PMINIPORTWAVERT
PORTCLASSAPI NTSTATUS NTAPI PcCompleteIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN NTSTATUS Status)
PORTCLASSAPI NTSTATUS NTAPI PcNewPort(OUT PPORT *OutPort, IN REFCLSID ClassId)
struct _PCEVENT_REQUEST PCEVENT_REQUEST
IInterruptSync * PINTERRUPTSYNC
IMiniportTopology * PMINIPORTTOPOLOGY
struct _PCMETHOD_REQUEST PCMETHOD_REQUEST
IServiceSink * PSERVICESINK
struct _PCEVENT_ITEM PCEVENT_ITEM
PORTCLASSAPI NTSTATUS NTAPI PcForwardIrpSynchronous(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PORTCLASSAPI NTSTATUS NTAPI PcForwardContentToInterface(IN ULONG ContentId, IN PUNKNOWN pUnknown, IN ULONG NumMethods)
PORTCLASSAPI NTSTATUS NTAPI PcRegisterSubdevice(IN PDEVICE_OBJECT DeviceObject, IN PWCHAR Name, IN PUNKNOWN Unknown)
IMiniportWavePciStream * PMINIPORTWAVEPCISTREAM
PORTCLASSAPI NTSTATUS NTAPI PcNewResourceSublist(OUT PRESOURCELIST *OutResourceList, IN PUNKNOWN OuterUnknown OPTIONAL, IN POOL_TYPE PoolType, IN PRESOURCELIST ParentList, IN ULONG MaximumEntries)
PORTCLASSAPI NTSTATUS NTAPI PcNewInterruptSync(OUT PINTERRUPTSYNC *OUtInterruptSync, IN PUNKNOWN OuterUnknown OPTIONAL, IN PRESOURCELIST ResourceList, IN ULONG ResourceIndex, IN INTERRUPTSYNCMODE Mode)
IResourceList * PRESOURCELIST
PORTCLASSAPI NTSTATUS NTAPI PcDispatchIrp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PORTCLASSAPI NTSTATUS NTAPI PcNewMiniport(OUT PMINIPORT *OutMiniport, IN REFCLSID ClassId)
IPortWavePciStream * PPORTWAVEPCISTREAM
#define DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM()
#define DEFINE_ABSTRACT_PORT()
IPortEvents * PPORTEVENTS
IMiniportWaveRTStream * PMINIPORTWAVERTSTREAM
@ kVersionWinServer2003_UAAQFE
PORTCLASSAPI NTSTATUS NTAPI PcInitializeAdapterDriver(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPathName, IN PDRIVER_ADD_DEVICE AddDevice)
PORTCLASSAPI NTSTATUS NTAPI PcDestroyContent(IN ULONG ContentId)
IDmaChannelSlave * PDMACHANNELSLAVE
struct _PCPROPERTY_REQUEST * PPCPROPERTY_REQUEST
IPortWaveRTStream * PPORTWAVERTSTREAM
IAdapterPowerManagement * PADAPTERPOWERMANAGEMENT
IMusicTechnology * PMUSICTECHNOLOGY
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
IPortClsVersion * PPORTCLSVERSION
PORTCLASSAPI NTSTATUS NTAPI PcCompletePendingPropertyRequest(IN PPCPROPERTY_REQUEST PropertyRequest, IN NTSTATUS NtStatus)
PORTCLASSAPI NTSTATUS NTAPI PcCreateContentMixed(IN PULONG paContentId, IN ULONG cContentId, OUT PULONG pMixedContentId)
PORTCLASSAPI NTSTATUS NTAPI PcRegisterIoTimeout(IN PDEVICE_OBJECT pDeviceObject, IN PIO_TIMER_ROUTINE pTimerRoutine, IN PVOID pContext)
PORTCLASSAPI NTSTATUS NTAPI PcRegisterPhysicalConnectionToExternal(IN PDEVICE_OBJECT DeviceObject, IN PUNKNOWN FromUnknown, IN ULONG FromPin, IN PUNICODE_STRING ToString, IN ULONG ToPin)
PORTCLASSAPI NTSTATUS NTAPI PcRegisterPhysicalConnection(IN PDEVICE_OBJECT DeviceObject, IN PUNKNOWN FromUnknown, IN ULONG FromPin, IN PUNKNOWN ToUnknown, IN ULONG ToPin)
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
PORTCLASSAPI ULONGLONG NTAPI PcGetTimeInterval(IN ULONGLONG Since)
IMiniportWaveCyclicStream * PMINIPORTWAVECYCLICSTREAM
#define DEFINE_ABSTRACT_MINIPORT()
PORTCLASSAPI NTSTATUS NTAPI PcGetContentRights(IN ULONG ContentId, OUT PDRMRIGHTS DrmRights)
struct PCPROPERTY_ITEM * PPCPROPERTY_ITEM
IPreFetchOffset * PPREFETCHOFFSET
PORTCLASSAPI NTSTATUS NTAPI PcForwardContentToDeviceObject(IN ULONG ContentId, IN PVOID Reserved, IN PCDRMFORWARD DrmForward)
IPortWaveCyclic * PPORTWAVECYCLIC
PORTCLASSAPI NTSTATUS NTAPI PcUnregisterIoTimeout(IN PDEVICE_OBJECT pDeviceObject, IN PIO_TIMER_ROUTINE pTimerRoutine, IN PVOID pContext)
NTSTATUS(NTAPI * PCPFNSTARTDEVICE)(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PRESOURCELIST ResourceList)
PORTCLASSAPI NTSTATUS NTAPI PcRequestNewPowerState(IN PDEVICE_OBJECT pDeviceObject, IN DEVICE_POWER_STATE RequestedNewState)
PORTCLASSAPI NTSTATUS NTAPI PcRegisterPhysicalConnectionFromExternal(IN PDEVICE_OBJECT DeviceObject, IN PUNICODE_STRING FromString, IN ULONG FromPin, IN PUNKNOWN ToUnknown, IN ULONG ToPin)
PORTCLASSAPI NTSTATUS NTAPI PcNewServiceGroup(OUT PSERVICEGROUP *OutServiceGroup, IN PUNKNOWN OuterUnknown OPTIONAL)
struct _PCMETHOD_REQUEST * PPCMETHOD_REQUEST
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 PcForwardContentToFileObject(IN ULONG ContentId, IN PFILE_OBJECT FileObject)
struct _PCEVENT_REQUEST * PPCEVENT_REQUEST
struct PCFILTER_DESCRIPTOR * PPCFILTER_DESCRIPTOR
NTSTATUS(NTAPI * PINTERRUPTSYNCROUTINE)(IN struct IInterruptSync *InterruptSync, IN PVOID DynamicContext)
struct _PCMETHOD_ITEM * PPCMETHOD_ITEM
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)
#define DEFINE_ABSTRACT_DMACHANNEL()
IMiniportWavePci * PMINIPORTWAVEPCI
IServiceGroup * PSERVICEGROUP
struct _PCMETHOD_ITEM PCMETHOD_ITEM
PORTCLASSAPI NTSTATUS NTAPI PcAddContentHandlers(IN ULONG ContentId, IN PVOID *paHandlers, IN ULONG NumHandlers)
@ InterruptSyncModeNormal
@ InterruptSyncModeRepeat
IMiniportMidi * PMINIPORTMIDI
struct PCAUTOMATION_TABLE * PPCAUTOMATION_TABLE
struct _PCEVENT_ITEM * PPCEVENT_ITEM
@ DeviceInterfaceRegistryKey
PORTCLASSAPI NTSTATUS NTAPI PcGetDeviceProperty(IN PVOID DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
struct PCNODE_DESCRIPTOR * PPCNODE_DESCRIPTOR
struct PCPIN_DESCRIPTOR * PPCPIN_DESCRIPTOR
IPortTopology * PPORTTOPOLOGY
IPowerNotify * PPOWERNOTIFY
PORTCLASSAPI NTSTATUS NTAPI PcUnregisterAdapterPowerManagement(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS(NTAPI * PCPFNMETHOD_HANDLER)(IN struct _PCMETHOD_REQUEST *MethodRequest)
PORTCLASSAPI NTSTATUS NTAPI PcAddAdapterDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject, IN PCPFNSTARTDEVICE StartDevice, IN ULONG MaxObjects, IN ULONG DeviceExtensionSize)
IPortWavePci * PPORTWAVEPCI
PORTCLASSAPI NTSTATUS NTAPI PcNewDmaChannel(OUT PDMACHANNEL *OutDmaChannel, IN PUNKNOWN OuterUnknown OPTIONAL, IN POOL_TYPE PoolType, IN PDEVICE_DESCRIPTION DeviceDescription, IN PDEVICE_OBJECT DeviceObject)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
DWORD WINAPI GetVersion()
enum _DMA_SPEED DMA_SPEED
enum _DMA_WIDTH DMA_WIDTH
PULONG MinorVersion OPTIONAL
_In_ const GUID _In_ ULONG PinCount
const PCPROPERTY_ITEM * Properties
const PCEVENT_ITEM * Events
const PCMETHOD_ITEM * Methods
const PCNODE_DESCRIPTOR * Nodes
const PCCONNECTION_DESCRIPTOR * Connections
const PCPIN_DESCRIPTOR * Pins
const PCAUTOMATION_TABLE * AutomationTable
const PCAUTOMATION_TABLE * AutomationTable
ULONG MaxGlobalInstanceCount
ULONG MinFilterInstanceCount
KSPIN_DESCRIPTOR KsPinDescriptor
const PCAUTOMATION_TABLE * AutomationTable
ULONG MaxFilterInstanceCount
PCPFNPROPERTY_HANDLER Handler
PCPFNEVENT_HANDLER Handler
PKSEVENT_ENTRY EventEntry
const PCEVENT_ITEM * EventItem
PCPFNMETHOD_HANDLER Handler
const PCMETHOD_ITEM * MethodItem
const PCPROPERTY_ITEM * PropertyItem
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_Reserved_ PVOID Reserved
_Must_inspect_result_ _In_ ULONG Flags
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
DRIVER_ADD_DEVICE * PDRIVER_ADD_DEVICE
_In_ struct _IRP _In_ struct _SCATTER_GATHER_LIST * ScatterGather
IO_TIMER_ROUTINE * PIO_TIMER_ROUTINE
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS HighAddress
_Inout_ PMDL MemoryDescriptorList
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_ SIZE_T TotalBytes
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
std::string ToString(XMLHandle node)
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass