nobody? WH> Hi guys WH> I have a strange problem that I don't know how to fix. WH> A little of the story telling first... I'm updating AVStream driver that worked perfectly under XP, but it fails under Win 7 32bit (vista not tested). WH> The driver copies buffers manually as the the card has a hardware bug and it needs a specific copy protocol for it to WH> work... so everything is manually copied in DPC. WH> Now the symptoms of the problem is that I don't receive any stream pointers for output buffers... WH> I get them for inputs, but the sound still doesn't come through. WH> After some debugging I've noticed in WindDbg that I get a strange warning: WH> --------------------------------------------------------------------------------------------------- WH> Launch of AudioDG.EXE as a protected process failed with STATUS_INVALID_IMAGE_HASH WH> This usually means that there is a problem with PEAUTH, because an unexpected WH> DLL was added to the audiodg.exe process WH> To find the offending binary, please do the following from an *elevated window*: WH> 1. \\showtime\public\pmp\tools\MSInternal\ConfigKeys\EnablePEAuthLogging.reg WH> 2. Reboot the machine WH> 3. \\showtime\public\pmp\tools\MSInternal\PEBinCheck\PEBinCheck.cmd WH> The output file on the screen will contain the offending binary. WH> To get the build to boot, audiodg is being restarted outside of the protected WH> environment, audio will continue to function, but playback of protected WH> content will be disabled WH> For more information, please see: WH> http://dmd/wmpg/mf/cp/PMP/Lists/Protected%20Environment%20FAQ/Flat.aspx WH> --------------------------------------------------------------------------------------------------- WH> Normally I get this the first time I press start on any audio player. WH> Then DPC starts doing it's thing, but as there is no data nothing happens. WH> Now the thing is even more drastic that if you press stop or even close the application, the stop command wont be send to WH> the driver, so the only option to stop it is to restart the machine. WH> I've rechecked if the Audiodg.exe files are corrupted on the machine... compared to notebook running also running Win 7 32bit WH> and the files are identical... same size and same date of creation. WH> I've also checked event logs and there was a strange event for WMP that it could not load DRM stuff, because debugger is WH> running... is this related to AudioDG.exe? WH> Has somebody already come around something like this or is there something I can set (a flag or something) that would give me some more detail of what is happening? WH> So that I can fix it... WH> Any help would be REALLY appreciated. WH> Waldemar Haszlakiewicz WH> Below are framing and pin definitions.... WH> KSALLOCATOR_FRAMING_EX driver_c::m_AllocatorFraming_Wave_Stereo = WH> { WH> 1, WH> 0, WH> { WH> 1, WH> 1, WH> 0 WH> }, WH> 0, WH> { WH> { WH> STATICGUIDOF( KSMEMORY_TYPE_KERNEL_NONPAGED ), //MemoryType WH> STATIC_KS_TYPE_DONT_CARE, //BusType WH> KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE, //MemoryFlags WH> 0, //BusFlags WH> KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY, //Flags WH> 1, //Frames WH> FILE_QUAD_ALIGNMENT, //FileAlignment WH> 0, //MemoryTypeWeight WH> { //PhysicalRange WH> 0, //min: 2*glClass.bufferSize <- it's set at SetBufferSize WH> 0, //max: 2*glClass.bufferSize <- it's set at SetBufferSize WH> 0 //step: 0 WH> }, WH> { //FramingRange WH> { WH> //Defines optimal range of frame sizes. WH> //Notice: WH> //You will have to reset this every time the driver WH> //buffer will change. WH> 0, //MinFrameSize: 2*glClass.bufferSize <- it's set at SetBufferSize WH> 0, //MaxFrameSize: 2*glClass.bufferSize <- it's set at SetBufferSize WH> 0 //Stepping: 0 WH> }, WH> 0, WH> 0 WH> } WH> } WH> } WH> }; WH> And next pin description: WH> KSPIN_DESCRIPTOR_EX KsPinDescriptors_4xx_Wave_Stereo[] = WH> { WH> //WaveIn 1,2 WH> //Sink Pin WH> { WH> &PinDispatch_Wave, WH> NULL, WH> { WH> SIZEOF_ARRAY( PinInterfaces_Wave ), WH> (KSPIN_INTERFACE*) &PinInterfaces_Wave, WH> SIZEOF_ARRAY( PinMediums_Wave ), WH> (KSPIN_MEDIUM*) &PinMediums_Wave, WH> SIZEOF_ARRAY( PinAudioFormatRanges_4xx_WaveSink_Stereo ), WH> PinAudioFormatRanges_4xx_WaveSink_Stereo, WH> KSPIN_DATAFLOW_OUT, WH> KSPIN_COMMUNICATION_BOTH, WH> &pinCategory, WH> &pinName_Wave_line_in, WH> 0 WH> }, WH> KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING | WH> //Directly poll the queue at DPC time( transport data to hardware ). WH> KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING | WH> //Pin is responsible to check for available frames. WH> KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING | WH> KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY | WH> //Change status one step at a time. WH> KSPIN_FLAG_USE_STANDARD_TRANSPORT, WH> 1, //InstancesPossible WH> 0, //InstancesNecessary WH> &driver_c::m_AllocatorFraming_Wave_Stereo, WH> (PFNKSINTERSECTHANDLEREX)&driver_c::Pin_AudioIntersectHandler WH> }, WH> //Bridge PIN WH> { WH> NULL, WH> NULL, WH> { WH> SIZEOF_ARRAY( PinInterfaces_Wave ), WH> (KSPIN_INTERFACE*) &PinInterfaces_Wave, WH> SIZEOF_ARRAY( PinMediums_Wave ), WH> (KSPIN_MEDIUM*) &PinMediums_Wave, WH> SIZEOF_ARRAY( PinAudioFormatRanges_WaveBridge ), WH> PinAudioFormatRanges_WaveBridge, WH> KSPIN_DATAFLOW_IN, WH> KSPIN_COMMUNICATION_NONE, WH> &pinCategory_bridge, WH> &pinName_bridge_line_in, WH> 0 WH> }, WH> 0, WH> 0, WH> 0, WH> NULL, WH> NULL WH> }, WH> //WaveOut 1,2 WH> //Sink PIN WH> { WH> &PinDispatch_Wave, WH> &AutomationTable_Wave_Stereo, WH> { WH> SIZEOF_ARRAY( PinInterfaces_Wave ), WH> (KSPIN_INTERFACE*) &PinInterfaces_Wave, WH> SIZEOF_ARRAY( PinMediums_Wave ), WH> (KSPIN_MEDIUM*) &PinMediums_Wave, WH> SIZEOF_ARRAY( PinAudioFormatRanges_4xx_WaveSink_Stereo ), WH> PinAudioFormatRanges_4xx_WaveSink_Stereo, WH> KSPIN_DATAFLOW_IN, WH> KSPIN_COMMUNICATION_SINK, WH> &pinCategory, WH> &pinName_Wave_line_out, WH> 0 WH> }, WH> //We need this if we want to call KsPinAttemptProcessing WH> //synhronically( do KsPinProcessing come back to DPC ) WH> KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING | WH> //Directly poll the queue at DPC time( transport data to hardware ). WH> KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING | WH> //Pin is responsible to check for available frames. WH> KSPIN_FLAG_FRAMES_NOT_REQUIRED_FOR_PROCESSING | WH> KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY | WH> //Change status one step at a time. WH> KSPIN_FLAG_USE_STANDARD_TRANSPORT | WH> KSPIN_FLAG_RENDERER, WH> 1, //InstancesPossible WH> 0, //InstancesNecessary WH> &driver_c::m_AllocatorFraming_Wave_Stereo, WH> (PFNKSINTERSECTHANDLEREX)&driver_c::Pin_AudioIntersectHandler WH> }, WH> //Bridge PIN WH> { WH> NULL, WH> NULL, WH> { WH> SIZEOF_ARRAY( PinInterfaces_Wave ), WH> (KSPIN_INTERFACE*) &PinInterfaces_Wave, WH> SIZEOF_ARRAY( PinMediums_Wave ), WH> (KSPIN_MEDIUM*) &PinMediums_Wave, WH> SIZEOF_ARRAY( PinAudioFormatRanges_WaveBridge ), WH> PinAudioFormatRanges_WaveBridge, WH> KSPIN_DATAFLOW_OUT, WH> KSPIN_COMMUNICATION_NONE, WH> &pinCategory_bridge, WH> &pinName_bridge_line_out, WH> 0 WH> }, WH> 0, WH> 0, WH> 0, WH> NULL, WH> NULL WH> } WH> }; WH> ****************** WH> WDMAUDIODEV addresses: WH> Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx WH> Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe WH> Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe WH> Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx WH> URL to WDMAUDIODEV page: WH> http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/