Code: Select all
Global .GUID KSDATAFORMAT_SUBTYPE_ANALOG,KSDATAFORMAT_SUBTYPE_PCM,KSDATAFORMAT_SUBTYPE_IEEE_FLOAT,KSDATAFORMAT_SUBTYPE_DRM,KSDATAFORMAT_SUBTYPE_ALAW,KSDATAFORMAT_SUBTYPE_MULAW,KSDATAFORMAT_SUBTYPE_ADPCM,KSDATAFORMAT_SUBTYPE_MPEG,KSDATAFORMAT_SPECIFIER_VC_ID,KSDATAFORMAT_SPECIFIER_WAVEFORMATEX,KSDATAFORMAT_SPECIFIER_DSOUND
Procedure.b HexByteStringToDecByteSequence(HexString.s,*seq.ascii)
;This function converts a given Hex string (.s) to a byte sequence stored in a given base address of sequential memory:
Protected c.a,Nibbles.l=Len(HexString.s),t.l
If Nibbles.l&1:HexString.s="0"+HexString.s:Nibbles.l+1:EndIf
For t.l=1 To Nibbles.l
c.a=Asc(LCase(Mid(HexString.s,t.l,1)))
If c<'0' Or c>'f' Or (c>'9' And c<'a')
ProcedureReturn 0
EndIf
If c>'9':c=(c&$5F)-$07:EndIf
c-'0'
If t.l&1
*seq\a=c<<4
Else
*seq\a|c
*seq+1
EndIf
Next
ProcedureReturn 1
EndProcedure
Macro DEFINE_GUIDSTRUCT(caracteres,nombre)
HexByteStringToDecByteSequence(StringField(caracteres#,1,"-"),@nombre#\Data1)
!mov eax,dword[v_#nombre#]
!bswap eax
!mov dword[v_#nombre#],eax
HexByteStringToDecByteSequence(StringField(caracteres#,2,"-"),@nombre#\Data2)
!rol word[v_#nombre#+4],8
HexByteStringToDecByteSequence(StringField(caracteres#,3,"-"),@nombre#\Data3)
!rol word[v_#nombre#+6],8
HexByteStringToDecByteSequence(StringField(caracteres#,4,"-"),@nombre#\Data4[0])
HexByteStringToDecByteSequence(StringField(caracteres#,5,"-"),@nombre#\Data4[2])
EndMacro
DEFINE_GUIDSTRUCT("6dba3190-67bd-11cf-a0f7-0020afd156e4", KSDATAFORMAT_SUBTYPE_ANALOG)
DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM)
DEFINE_GUIDSTRUCT("00000003-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)
DEFINE_GUIDSTRUCT("00000009-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DRM)
DEFINE_GUIDSTRUCT("00000006-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ALAW)
DEFINE_GUIDSTRUCT("00000007-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MULAW)
DEFINE_GUIDSTRUCT("00000002-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_ADPCM)
DEFINE_GUIDSTRUCT("00000050-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_MPEG)
DEFINE_GUIDSTRUCT("AD98D184-AAC3-11D0-A41C-00A0C9223196", KSDATAFORMAT_SPECIFIER_VC_ID)
DEFINE_GUIDSTRUCT("05589f81-c356-11ce-bf01-00aa0055595a", KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
DEFINE_GUIDSTRUCT("518590a2-a184-11d0-8522-00c04fd9baf3", KSDATAFORMAT_SPECIFIER_DSOUND)