DirectShow 错误和成功代码

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

本主题列出了为 DirectShow 定义的 HRESULT 返回代码。 请注意,DirectShow API 可以返回此处未显示的其他 HRESULT 值。 有关其他 HRESULT 值,请参阅 COM 错误代码

下表按数字顺序包含特定于 DirectShow 的错误和成功代码。 以 VFW_S_ 开头的返回代码表示成功。 操作可能部分成功,但仍具有成功的返回值。 例如, VFW_S_SOME_DATA_IGNORED 指示文件是通过忽略其某些属性设置呈现的。 以 VFW_E_ 开头的返回代码指示错误。

这些值在头文件 Vfwmsgs.h 中定义。

常量/值 说明
VFW_S_NO_MORE_ITEMS
0x00040103
到达列表末尾;列表中不再有项目。 (筛选器开发人员: CBasePin::GetMediaType 方法应返回此值。)
VFW_S_DUPLICATE_NAME
0x0004022D
尝试添加具有重复名称的筛选器已成功,但名称已修改。
VFW_S_STATE_INTERMEDIATE
0x00040237
状态转换未完成。
VFW_S_PARTIAL_RENDER
0x00040242
某些流的格式不受支持。
VFW_S_SOME_DATA_IGNORED
0x00040245
该文件包含一些未使用的属性设置。
VFW_S_CONNECTIONS_DEFERRED
0x00040246
某些连接失败并已延迟。
VFW_S_RESOURCE_NOT_NEEDED
0x00040250
不再需要指定的资源。
VFW_S_MEDIA_TYPE_IGNORED
0x00040254
已成功加载 GraphEdit (.grf) 文件,但至少使用与 GraphEdit 文件中存储的媒体类型不同的媒体类型连接了两个引脚。
VFW_S_VIDEO_NOT_RENDERED
0x00040257
无法播放视频流:找不到合适的呈现器。
VFW_S_AUDIO_NOT_RENDERED
0x00040258
无法播放音频流:找不到合适的呈现器。
VFW_S_RPZA
0x0004025A
无法播放视频流:不支持格式“RPZA”。
VFW_S_ESTIMATED
0x00040260
必须估计返回的值。 无法保证其准确性。
VFW_S_RESERVED
0x00040263
此成功代码保留用于 DirectShow 中的内部目的。
VFW_S_STREAM_OFF
0x00040267
该流已关闭。
VFW_S_CANT_CUE
0x00040268
筛选器处于活动状态,但无法传递数据。 请参阅 IMediaFilter::GetState
VFW_S_NO_STOP_TIME
0x00040270
示例具有开始时间,但没有停止时间。 在这种情况下,返回的停止时间设置为开始时间加 1。
VFW_S_NOPREVIEWPIN
0x0004027E
预览是通过 Smart Tee 筛选器呈现的,因为捕获筛选器没有预览固定。
VFW_S_DVD_NON_ONE_SEQUENTIAL
0x00040280
当前标题不是 PGC) (一组连续的章节,因此计时信息可能不是连续的。
VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE
0x0004028C
音频流不包含足够的信息来确定每个通道的内容。
VFW_S_DVD_NOT_ACCURATE
0x0004028D
DVD 上的查找操作帧不准确。
VFW_E_INVALIDMEDIATYPE
0x80040200
指定的媒体类型无效。
VFW_E_INVALIDSUBTYPE
0x80040201
指定的媒体子类型无效。
VFW_E_NEED_OWNER
0x80040202
此对象只能创建为聚合对象。
VFW_E_ENUM_OUT_OF_SYNC
0x80040203
枚举对象的状态已更改,现在与枚举器的状态不一致。 放弃以前调用枚举器时获取的任何数据,然后通过调用枚举器的 Reset 方法更新枚举器。
VFW_E_ALREADY_CONNECTED
0x80040204
操作中涉及的至少一个引脚已连接。
VFW_E_FILTER_ACTIVE
0x80040205
无法执行此操作,因为筛选器处于活动状态。
VFW_E_NO_TYPES
0x80040206
其中一个指定的引脚不支持媒体类型。
VFW_E_NO_ACCEPTABLE_TYPES
0x80040207
这些引脚之间没有常见的媒体类型。
VFW_E_INVALID_DIRECTION
0x80040208
无法连接同一方向的两个引脚。
VFW_E_NOT_CONNECTED
0x80040209
无法执行该操作,因为引脚未连接。
VFW_E_NO_ALLOCATOR
0x8004020A
没有可用的示例缓冲区分配器。
VFW_E_RUNTIME_ERROR
0x8004020B
发生运行时错误。
VFW_E_BUFFER_NOTSET
0x8004020C
尚未设置缓冲区空间。
VFW_E_BUFFER_OVERFLOW
0x8004020D
缓冲区不够大。
VFW_E_BADALIGN
0x8004020E
指定的对齐方式无效。
VFW_E_ALREADY_COMMITTED
0x8004020F
分配器未提交。 请参阅 IMemAllocator::Commit
VFW_E_BUFFERS_OUTSTANDING
0x80040210
一个或多个缓冲区仍处于活动状态。
VFW_E_NOT_COMMITTED
0x80040211
分配器未处于活动状态时无法分配示例。
VFW_E_SIZENOTSET
0x80040212
无法分配内存,因为尚未设置任何大小。
VFW_E_NO_CLOCK
0x80040213
无法锁定同步,因为尚未定义时钟。
VFW_E_NO_SINK
0x80040214
无法发送质量消息,因为尚未定义质量接收器。
VFW_E_NO_INTERFACE
0x80040215
尚未实现所需的接口。
VFW_E_NOT_FOUND
0x80040216
找不到对象或名称。
VFW_E_CANNOT_CONNECT
0x80040217
找不到中间筛选器的组合来建立连接。
VFW_E_CANNOT_RENDER
0x80040218
找不到用于呈现流的筛选器组合。
VFW_E_CHANGING_FORMAT
0x80040219
无法动态更改格式。
VFW_E_NO_COLOR_KEY_SET
0x8004021A
尚未设置任何颜色键。
VFW_E_NOT_OVERLAY_CONNECTION
0x8004021B
当前引脚连接未使用 IOverlay 传输。
VFW_E_NOT_SAMPLE_CONNECTION
0x8004021C
当前引脚连接未使用 IMemInputPin 传输。
VFW_E_PALETTE_SET
0x8004021D
设置颜色键会与已设置的调色板冲突。
VFW_E_COLOR_KEY_SET
0x8004021E
设置调色板会与已设置的颜色键冲突。
VFW_E_NO_COLOR_KEY_FOUND
0x8004021F
没有匹配的颜色键可用。
VFW_E_NO_PALETTE_AVAILABLE
0x80040220
没有可用的调色板。
VFW_E_NO_DISPLAY_PALETTE
0x80040221
显示不使用调色板。
VFW_E_TOO_MANY_COLORS
0x80040222
当前显示设置的颜色太多。
VFW_E_STATE_CHANGED
0x80040223
等待处理示例时状态已更改。
VFW_E_NOT_STOPPED
0x80040224
无法执行该操作,因为筛选器未停止。
VFW_E_NOT_PAUSED
0x80040225
无法执行该操作,因为筛选器未暂停。
VFW_E_NOT_RUNNING
0x80040226
无法执行该操作,因为筛选器未运行。
VFW_E_WRONG_STATE
0x80040227
无法执行该操作,因为筛选器处于错误状态。
VFW_E_START_TIME_AFTER_END
0x80040228
样本开始时间晚于样本结束时间。
VFW_E_INVALID_RECT
0x80040229
提供的矩形无效。
VFW_E_TYPE_NOT_ACCEPTED
0x8004022A
此引脚不能使用提供的媒体类型。
VFW_E_SAMPLE_REJECTED
0x8004022B
无法呈现此示例。
VFW_E_SAMPLE_REJECTED_EOS
0x8004022C
无法呈现此示例,因为已到达流的末尾。
VFW_E_DUPLICATE_NAME
0x8004022D
尝试添加具有重复名称的筛选器失败。
VFW_E_TIMEOUT
0x8004022E
超时已过期。
VFW_E_INVALID_FILE_FORMAT
0x8004022F
文件格式无效。
VFW_E_ENUM_OUT_OF_RANGE
0x80040230
该列表已用尽。
VFW_E_CIRCULAR_GRAPH
0x80040231
筛选器图为圆形。
VFW_E_NOT_ALLOWED_TO_SAVE
0x80040232
在此状态下不允许汇报。
VFW_E_TIME_ALREADY_PASSED
0x80040233
过去曾尝试将命令排队一段时间。
VFW_E_ALREADY_CANCELLED
0x80040234
已取消排队的命令。
VFW_E_CORRUPT_GRAPH_FILE
0x80040235
无法呈现文件,因为它已损坏。
VFW_E_ADVISE_ALREADY_SET
0x80040236
IOverlay 建议链接已存在。
VFW_E_NO_MODEX_AVAILABLE
0x80040238
没有可用的全屏模式。
VFW_E_NO_ADVISE_SET
0x80040239
无法取消此建议,因为它未成功设置。
VFW_E_NO_FULLSCREEN
0x8004023A
全屏模式不可用。
VFW_E_IN_FULLSCREEN_MODE
0x8004023B
在全屏模式下无法调用 IVideoWindow 方法。
VFW_E_UNKNOWN_FILE_TYPE
0x80040240
无法识别此文件的媒体类型。
VFW_E_CANNOT_LOAD_SOURCE_FILTER
0x80040241
无法加载此文件的源筛选器。
VFW_E_FILE_TOO_SHORT
0x80040243
文件似乎不完整。
VFW_E_INVALID_FILE_VERSION
0x80040244
文件的版本号无效。
VFW_E_INVALID_CLSID
0x80040247
此文件已损坏:它包含无效的类标识符。
VFW_E_INVALID_MEDIA_TYPE
0x80040248
此文件已损坏:它包含无效的媒体类型。
VFW_E_SAMPLE_TIME_NOT_SET
0x80040249
尚未为此示例设置时间戳。
VFW_E_MEDIA_TIME_NOT_SET
0x80040251
未为此示例设置媒体时间。
VFW_E_NO_TIME_FORMAT_SET
0x80040252
未选择媒体时间格式。
VFW_E_MONO_AUDIO_HW
0x80040253
无法更改平衡,因为音频设备仅是单声设备。
VFW_E_NO_DECOMPRESSOR
0x80040255
无法播放视频流:找不到合适的解压缩器。
VFW_E_NO_AUDIO_HARDWARE
0x80040256
无法播放音频流:没有音频硬件可用,或者不支持硬件。
VFW_E_RPZA
0x80040259
无法播放视频流:不支持格式“RPZA”。
VFW_E_PROCESSOR_NOT_SUITABLE
0x8004025B
DirectShow 无法在此处理器上播放 MPEG 电影。
VFW_E_UNSUPPORTED_AUDIO
0x8004025C
无法播放音频流:不支持音频格式。
VFW_E_UNSUPPORTED_VIDEO
0x8004025D
无法播放视频流:不支持视频格式。
VFW_E_MPEG_NOT_CONSTRAINED
0x8004025E
DirectShow 无法播放此视频流,因为它超出了受约束的标准。
VFW_E_NOT_IN_GRAPH
0x8004025F
无法对不在筛选器图中的对象执行请求的函数。
VFW_E_NO_TIME_FORMAT
0x80040261
无法访问 对象上的时间格式。
VFW_E_READ_ONLY
0x80040262
无法建立连接,因为流是只读的,并且筛选器会更改数据。
VFW_E_BUFFER_UNDERFLOW
0x80040264
缓冲区不够满。
VFW_E_UNSUPPORTED_STREAM
0x80040265
无法播放文件:不支持格式。
VFW_E_NO_TRANSPORT
0x80040266
引脚无法连接,因为它们不支持相同的传输。
例如,上游筛选器可能需要 IAsyncReader 接口,而下游筛选器可能需要 IMemInputPin
VFW_E_BAD_VIDEOCD
0x80040269
设备无法正确读取视频 CD 或数据已损坏。
VFW_E_OUT_OF_VIDEO_MEMORY
0x80040271
此显示分辨率和颜色数量没有足够的视频内存。 降低分辨率可能会有所帮助。
VFW_E_VP_NEGOTIATION_FAILED
0x80040272
视频端口连接协商过程失败。
VFW_E_DDRAW_CAPS_NOT_SUITABLE
0x80040273
未安装 DirectDraw 或视频卡功能不适用。 确保显示器未处于 16 色模式。
VFW_E_NO_VP_HARDWARE
0x80040274
没有可用的视频端口硬件,或者硬件没有响应。
VFW_E_NO_CAPTURE_HARDWARE
0x80040275
没有可用的捕获硬件,或者硬件没有响应。
VFW_E_DVD_OPERATION_INHIBITED
0x80040276
此用户操作目前被 DVD 内容禁止。
VFW_E_DVD_INVALIDDOMAIN
0x80040277
当前域中不允许此操作。
VFW_E_DVD_NO_BUTTON
0x80040278
请求的按钮不可用。
VFW_E_DVD_GRAPHNOTREADY
0x80040279
DVD-Video 播放图尚未生成。
VFW_E_DVD_RENDERFAIL
0x8004027A
DVD-Video 播放图生成失败。
VFW_E_DVD_DECNOTENOUGH
0x8004027B
DVD-Video 由于解码器不足而无法生成播放图。
VFW_E_DDRAW_VERSION_NOT_SUITABLE
0x8004027C
DirectDraw 版本号不适用。 请确保安装 DirectX 5 或更高版本。
VFW_E_COPYPROT_FAILED
0x8004027D
无法启用复制保护。
VFW_E_TIME_EXPIRED
0x8004027F
Seek 命令超时。
VFW_E_DVD_WRONG_SPEED
0x80040281
无法以当前播放速度执行操作。
VFW_E_DVD_MENU_DOES_NOT_EXIST
0x80040282
指定的 DVD 菜单不存在。
VFW_E_DVD_CMD_CANCELLED
0x80040283
指定的命令已取消或不再存在。
VFW_E_DVD_STATE_WRONG_VERSION
0x80040284
DVD 状态信息包含错误的版本号。
VFW_E_DVD_STATE_CORRUPT
0x80040285
DVD 状态信息已损坏。
VFW_E_DVD_STATE_WRONG_DISC
0x80040286
DVD 状态信息来自另一张光盘,而不是当前光盘。
VFW_E_DVD_INCOMPATIBLE_REGION
0x80040287
该区域与驱动器不兼容。
VFW_E_DVD_NO_ATTRIBUTES
0x80040288
请求的属性不存在。
VFW_E_DVD_NO_GOUP_PGC
0x80040289
无法执行该操作,因为没有 GoUp 程序链 (PGC) 可用。
VFW_E_DVD_LOW_PARENTAL_LEVEL
0x8004028A
禁止此操作,因为家长级别太低。
VFW_E_DVD_NOT_IN_KARAOKE_MODE
0x8004028B
DVD 导航器不处于卡拉OK模式。
VFW_E_FRAME_STEP_UNSUPPORTED
0x8004028E
不支持帧单步执行。
VFW_E_DVD_STREAM_DISABLED
0x8004028F
请求的流被禁用。
VFW_E_DVD_TITLE_UNKNOWN
0x80040290
该操作需要游戏编号,但没有当前游戏。 当 DVD 导航器不在游戏域或视频标题集菜单 (VTSM) 域中时,可能会发生此错误。
VFW_E_DVD_INVALID_DISC
0x80040291
指定的路径不是有效的 DVD 光盘。
VFW_E_DVD_NO_RESUME_INFORMATION
0x80040292
无法完成“恢复”操作,因为没有简历信息。
VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD
0x80040293
调用线程上已阻止 Pin。
VFW_E_PIN_ALREADY_BLOCKED
0x80040294
固定已在另一个线程上被阻止。
VFW_E_CERTIFICATION_FAILURE
0x80040295
此筛选器的使用受软件密钥的限制。 应用程序必须解锁筛选器。
VFW_E_VMR_NOT_IN_MIXER_MODE
0x80040296
视频混合呈现器 (VMR) 未处于混合模式。 调用 IVMRFilterConfig::SetNumberOfStreams (VMR-7) 或 IVMRFilterConfig9::SetNumberOfStreams (VMR-9) 。
VFW_E_VMR_NO_AP_SUPPLIED
0x80040297
应用程序尚未向 VMR 筛选器提供有效的分配器表示器对象。
VFW_E_VMR_NO_DEINTERLACE_HW
0x80040298
VMR 在当前显示设备上找不到任何去交错硬件。
VFW_E_VMR_NO_PROCAMP_HW
0x80040299
VMR 在当前显示设备上找不到任何支持 ProcAmp 控件的硬件。
VFW_E_DVD_VMR9_INCOMPATIBLEDEC
0x8004029A
硬件解码器使用视频端口扩展 (VPE) ,这与 VMR-9 筛选器不兼容。
VFW_E_NO_COPP_HW
0x8004029B
当前显示设备不支持内容输出保护协议 (COPP) ;或 VMR 尚未连接到显示设备。
VFW_E_BAD_KEY
0x800403F2
注册表项已损坏。
VFW_E_DVD_NONBLOCKING
0x8004029C
DVD 导航器无法完成请求的操作,因为另一个操作仍处于挂起状态。
VFW_E_DVD_TOO_MANY_RENDERERS_IN_FILTER_GRAPH
0x8004029D
DVD 导航器无法生成 DVD 播放图,因为该图包含多个视频呈现器。
VFW_E_DVD_NON_EVR_RENDERER_IN_FILTER_GRAPH
0x8004029E
DVD 导航器无法将增强的视频呈现器 (EVR) 筛选器添加到筛选器图,因为该图形已包含视频呈现器。
VFW_E_DVD_RESOLUTION_ERROR
0x8004029F
DVD 视频输出的分辨率不正确。
VFW_E_CODECAPI_LINEAR_RANGE
0x80040310
指定的编解码器参数具有线性范围,而不是枚举列表。
VFW_E_CODECAPI_ENUMERATED
0x80040311
指定的编解码器参数具有枚举的值范围,而不是线性范围。
VFW_E_CODECAPI_NO_DEFAULT
0x80040313
指定的编解码器参数没有默认值。
VFW_E_CODECAPI_NO_CURRENT_VALUE
0x80040314
指定的编解码器参数没有当前值。
E_PROP_ID_UNSUPPORTED
0x80070490
不支持指定的属性标识符。
E_PROP_SET_UNSUPPORTED
0x80070492
不支持指定的属性集。

除了前面列出的值之外,DirectShow 编辑服务还定义了以下 HRESULT 值。

常量/值 说明
S_WARN_OUTPUTRESET
0x00009DD4
已删除图形的呈现部分。 应用程序必须重新生成它。
E_NOTINTREE
0x80040400
对象不包含在时间线中。
E_RENDER_ENGINE_IS_BROKEN
0x80040401
操作失败,因为项目未成功呈现。
E_MUST_INIT_RENDERER
0x80040402
渲染引擎尚未初始化。
E_NOTDETERMINED
0x80040403
无法确定请求的值。
E_NO_TIMELINE
0x80040404
没有时间线 对象。

要求

要求
标头
Vfwmsgs.h

另请参阅

AMGetErrorText

常量和 GUID