IOCTL_AACS_READ_MEDIA_KEY_BLOCK IOCTL (ntddcdvd.h)
查询媒体密钥块的逻辑单元 (MKB) 。
主要代码
输入缓冲区
Irp-AssociatedIrp.SystemBuffer> 中的缓冲区包含层的AACS_LAYER_NUMBER编号。 AACS_LAYER_NUMBER是范围 0 到 255(含 0 到 255)的无符号长整数值,用于指定命令应用于的媒体层。
typedef ULONG AACS_LAYER_NUMBER, *PAACS_LAYER_NUMBER;
输入缓冲区长度
I/O 堆栈位置中的 Parameters.DeviceIoControl.InputBufferLength 指示缓冲区的大小(以字节为单位),该大小必须为 >= sizeof (AACS_LAYER_NUMBER) 。
输出缓冲区
Irp-AssociatedIrp.SystemBuffer> 上的缓冲区包含一个不透明的可变长度 MKB。 MKB 的大小始终是 32,768 (0x8000) 的倍数。
输出缓冲区长度
可变长度 MKB 的长度。
状态块
“ 信息” 字段设置为传输的字节数。 如果操作成功, 则“状态” 字段设置为“STATUS_SUCCESS”。 如果 Irp-AssociatedIrp.SystemBuffer>为 NULL,或者 Irp-AssociatedIrp.SystemBuffer> 上的缓冲区不足以包含完整的 MKB,则操作将失败并返回STATUS_BUFFER_TOO_SMALL状态,并且所需的缓冲区大小将在 IoStatus.Information 中返回。
注解
存储堆栈使用 READ DISC STRUCTURE 命令 (格式0x17) 以及高级访问控制系统 (AACS) 扩展来检索 MKB。 如果逻辑单元中的媒体不受 AACS 保护,则IOCTL_AACS_READ_MEDIA_KEY_BLOCK请求将不起作用。
与 Content-Scrambling System (CSS) 加密一起使用的 MKB 不同,AACS MKB 通过数字签名进行自我保护。 高级访问内容系统许可管理员 (AACS LA) 发布的高级访问内容系统 、简介和通用加密元素 规范中完整记录了 MKB 结构。
IOCTL_AACS_READ_MEDIA_KEY_BLOCK请求对应于高级访问内容系统 (AACS) 身份验证算法 (AACS-Auth) 的步骤之一。 有关 AACS-Auth 的完整说明,请参阅 高级访问内容系统、简介和通用加密元素 规范。
要求
要求 | 值 |
---|---|
Header | ntddcdvd.h (包括 Ntddcdvd.h) |