用于处理数据块的函数
阻止读取、BlockRead_AKM1、BlockRead_AKM2 BlockRead_PK
此功能组用于块内容读取。 始终读取整个块(块的 16 字节)。 函数使用所谓的 bloc 寻址(第一个块的地址为 0;第一个扇区拖车的地址为 3,下一个扇区拖车有 7 个,依此类推,直到最后一个 MIFARE® 1K 块(也是最后一个扇区的尾部)的地址为 63)。 这些功能还允许读取扇区拖车内容(其可用部分用于读取,具体取决于访问权限集)。

- aucData – 指向将存储读取数据的字节数的指针。 在调用函数之前,必须至少分配 16 个字节。
- ucBlockAddress – ucAuthMode block address。 此参数定义是执行身份验证 A 键还是 B 键。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于写入的所有扇区
- ucSectorTrailersByte9 – 定义所有扇区拖车的访问权限的访问位值。 它可以具有值 0 到 7
- aucProvideKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 函数名称中的_PK后缀表示此方法用法。
这些函数的工作方式与 BlockRead 组函数相同,并且是为块内容读取而设计的。 唯一的区别是使用了部门寻址。 这包括单独发送扇区地址和扇区内的块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内。 始终读取整个块(16 字节块)。
这些功能可以读取扇区拖车内容(其可用部分用于读取,具体取决于访问权限集)。
- aucData – 指向将存储读取数据的字节数组的指针。 在调用函数之前,必须至少分配 16 个字节
- ucSector地址 – 部门地址
- ucBlockInSectorAddress – 扇区内的块地址
- ucAuthMode – 此参数定义是使用 A 密钥还是 B 密钥执行身份验证。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于写入的所有扇区
- aucGivenKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 _PK 函数名称中的后缀表示使用了此方法。
块写入、BlockWrite_AKM1、BlockWrite_AKM2、BlockWrite_PK
这些函数用于将数据输入(一次 16 个字节)到块中。 函数使用所谓的 bloc 寻址(第一个块的地址为 0;第一个扇区拖车的地址为 3,下一个扇区拖车有 7 个,依此类推,直到最后一个 MIFARE® 1K 块(也是最后一个扇区的尾部)的地址为 63)。 此功能组不允许直接数据输入扇区尾部。 为此,请使用特殊函数 SectorTrailerWrite 和 SectorTrailerWriteUnsafe。

- aucData – 指向将存储读取数据的字节数的指针。 在调用函数之前必须至少分配 16 个字节
- ucBlockAddress – 卡块地址
- ucAuthMode – 此参数定义是使用密钥 A 还是密钥 B 执行身份验证。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于所有读取的扇区
- aucProvideKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 函数名称中的_PK后缀表示此方法用法。
FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER。
BlockInSectorWrite, BlockInSectorWrite_AKM1, BlockInSectorWrite_AKM2, BlockInSectorWrite_PK
这些函数的工作方式与 BlockWrite 组函数相同;它们用于将数据输入(一次 16 个字节)到块中。 唯一的区别是使用扇区寻址。 扇区寻址是指扇区内单独的发送扇区和块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内。 此功能组不允许直接数据输入扇区尾部。 为此,请使用特殊函数扇区拖车写入和扇区拖车写入不安全
- aucData – 指向将存储读取数据的字节数的指针。 在调用函数之前必须至少分配 16 个字节
- ucSectorAddress – Sector Address
- ucBlockInSectorAddress – 此参数定义是使用 A 键还是 B 键执行身份验证。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于写入的所有扇区
- aucProvideKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 函数名称中的_PK后缀表示此方法用法。
FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER。
扇区拖车写入、SectorTrailerWrite_AKM1、SectorTrailerWrite_AKM2、SectorTrailerWrite_PK
这些功能用于在扇区拖车中写入数据。 函数还可用于扇区尾部块寻址以及由 ucAddressingMode 参数确定的扇区寻址。
在块寻址的情况下,第一个块的地址为 0;拖车具有第一个扇区地址 3 和下一个扇区地址 7,依此类推。直到MIFARE® 1k的最后一个区块,它也是最后一个扇区的拖车,地址为63。 这组函数简化了块访问权限设置(访问位)的位操作,并最大限度地减少了由于这些位的格式不正确而永久阻塞整个扇区的可能性。 格式化访问位由 RFID 阅读器在写入之前进行。 API 用户可以选择由值 0 到 7 表示的适当块访问权限,并将其传输到这些功能。
对于扇区拖车,以下访问权限有效:
- 访问位 C1 C2 C3
- 访问值(提交到函数)
- 访问权限
- 密钥 A 字节包含访问位和九字节密钥 B
- 阅读和写作
对于扇区拖车,以下访问权限有效:
* 如果对扇区拖车的访问权限设置了适当的扇区,以便可以读取B键,则在任何情况下都不能用于认证。 如果允许访问权限,这些函数还会设置新的扇区键。
- 访问位 C1 C2 C3

- 访问值(提交到函数)
- 访问权限
- 读取、写入、递增、递减
- ucAddressingMode – 指定地址模式。 此参数的可能值为 BLOCK_ADDRESS_MODE (0x00) 或 SECTOR_ADDRESS_MODE (0x01)。 如果发送任何其他值,该函数将返回错误代码WRONG_ADDRESS_MODE
- ucAddress – 扇区或扇区拖车块地址,具体取决于 ucAddressingMode。 当使用扇区地址模式时,例如MIFARE经典® 1K,范围可以是0到15(有16个扇区)。 块寻址模式下的相同类型可以使用 0 到 63 之间的值,前提是如果寻址块不是扇区尾部,则会发生错误。
- aucNewKeyA – 指向 6 字节数组的指针,该数组表示指定扇区的新 A 键,如果以前允许具有访问权限,则将设置该键
- aucNewKeyB – 指向六字节数组的指针,该数组表示指定扇区的新 B 键,如果以前允许访问权限,则将设置该键
- ucBlock0AccessBits – 扇区 0 块的访问值。
MIFARE® 4k对最后8个扇区有不同的组织,地址空间的后半部分。 因此,在这些扇区中,访问权限设置如下:
- 对前 5 个块的访问权限 – ucBlock1AccessBits 第一个扇区的访问值块
- 对后 5 个块的访问权限 – ucBlock2AccessBits 第一个扇区的访问值块
- 对最后 5 个区块的访问权限:
- ucSectorTrailerAccessBits – 扇区拖车的访问值
- ucSectorTrailerByte9 – 第九扇区拖车字节是通用字节,可以输入任何单字节值
- ucAuthMode – 此参数定义是使用密钥 A 还是密钥 B 执行身份验证。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于写入的所有扇区
- aucProvideKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 函数名称中的_PK后缀表示此方法用法。
扇区拖车写入不安全, SectorTrailerWriteUnsafe_AKM1, SectorTrailerWriteUnsafe_AKM2, SectorTrailerWriteUnsafe_PK
这些函数与 SectorTrailerWrite 组的功能具有相同的目的,但在发送“原始”扇区拖车内容方面有所不同,并且在格式化要输入的访问位值时可能会出现错误。 这些功能适用于具有使用 MIFARE®经验的开发人员。 扇区拖车写入组函数提到的所有规则都适用于这些函数,但扇区拖车条目的“原始”数据选项除外。
- ucAddressingMode – 指定地址模式。 此参数的可能值为 BLOCK_ADDRESS_MODE (0x00) 或 SECTOR_ADDRESS_MODE (0x01)。 如果发送了任何其他值,则该函数将返回错误代码WRONG_ADDRESS_MODE。
- ucAddress – 扇区或扇区尾部块地址,具体取决于 ucAddressingMode。
使用扇区地址模式时,在 MIFARE® 1K 的情况下,范围可以是 0 到 15(有 16 个扇区),并且块寻址模式下的相同类型可以使用值 0 到 63,如果寻址块不是扇区尾部,则可能会出现错误。
- aucSectorTrailer – 指向 6 字节数组的指针,其中包含地址扇区尾部条目的“原始”数据
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于写入的所有扇区
- aucProvideKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 函数名称中的_PK后缀表示此方法用法。
用于处理值块的函数
值块表示可选的 MIFARE® 功能。 这实际上是一种模式,其中整个数据块(16 字节)表示一个四字节值。 在此模式下,您可以添加任何数据块(当然,块 0、零扇区和扇区尾部除外)。 值块中的值以特殊方式格式化,除了值记录外,还包含单字节地址值,这使用户能够实现备份系统。
D-Logic RFID 读取器负责正确的值块格式设置,以便用户可以使用仅处理四个字节值的函数集。 应该提到的是,如果在值 1、6 或 0(新卡中的默认值)上设置了对所需块的访问权限,则使用值块是有意义的,这允许它们的值递增和递减。 首先,必须启动值块,值和相关地址必须符合十六字节记录的适当格式。 值块初始化的最佳和最简单的方法是使用一组 Windows API 函数 IS21 ValueBlockWrite 或 ValueBlockInSectorWrite。
ValueBlockRead, ValueBlockRead_AKM1, ValueBlockRead_AKM2, ValueBlockRead_PK
这些函数与 ValueBlockRead 组函数相同,适用于读取值块的 4 字节值。 此外,它们返回存储在值块中的关联地址。 唯一的区别是使用所谓的部门寻址。 扇区寻址是指在一个扇区内分别发送扇区和块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内。

- lValue – 指向值块返回的长型变量的指针
- ucValueAddr – 第九扇区尾部字节是通用字节,可以输入任何单字节值
- ucSectorAddress – Sector Address
- ucBlockInSectorAddress – 扇区中的块地址
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)
- ucReaderKeyIndex – e默认的身份验证方法(当使用不带后缀的函数时)通过使用RFID阅读器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。
ValueBlockInSectorRead, ValueBlockInSectorRead_AKM1, ValueBlockInSectorRead_AKM2, ValueBlockInSectorRead_PK
这些函数与 ValueBlockRead 组函数相同,适用于读取值块的 4 字节值。 此外,它们返回存储在值块中的关联地址。 唯一的区别是使用所谓的部门寻址。 扇区寻址是指在一个扇区内分别发送扇区和块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内。

- lValue – 指向值块返回的长型变量的指针
- ucValueAddr – 指向无符号字符类型变量的指针通过一个字节地址返回,这为备份系统实现提供了额外的功能
- ucSectorAddress – Sector Address
- ucBlockInSectorAddress – 扇区中的块地址
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。
ValueBlockWrite, ValueBlockWrite_AKM1, ValueBlockWrite_AKM2, ValueBlockWrite_PK
这些函数用于初始化和写入第四字节值块值,并将关联的地址存储在值块中。 使用所谓的块寻址的函数(第一个块的地址为0;拖车具有第一个扇区地址3,接下来的7,依此类推,直到MIFARE® 1k的最后一个块,这也是最后一个扇区的拖车,地址为63)。
- lvalue – 值块条目的值
- ucValueAddr – 值块关联地址
- ucBlockAddress – Block Address
- ucAuthMode – 此参数定义是使用 A 密钥还是 B 密钥执行身份验证。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,这适用于写入的所有扇区
- aucProvideKey – 指向第六字节数组的指针,该数组包含用于在“提供的密钥”方法中证明真实性的密钥。 函数名称中的_PK后缀表示此方法用法。
ValueBlockInSectorWrite, ValueBlockInSectorWrite_AKM1, ValueBlockInSectorWrite_AKM2, ValueBlockInSectorWrite_PK
这些函数类似于 ValueBlockWrite 组函数。 它们用于输入,值块 4 字节值初始化。 此外,将关联的地址存储到块值中。 唯一的区别是部门寻址用法。 扇区寻址是指在一个扇区内分别发送扇区和块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内。
- lvalue – 值块条目的值
- ucValueAddr – 值块关联地址
- ucSectorAddress – Sector Address
- ucBlockInSectorAddress – 扇区的块地址
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。
ValueBlockIncrement, ValueBlockIncrement_AKM1, ValueBlockIncrement_AKM2, ValueBlockIncrement_PK
此功能集用于递增值 4 字节值块。 值块增量的值作为这些函数的参数发送。 函数使用块寻址(第一个块的地址为 0;第一个扇区尾部的地址为 3,下一个扇区拖车具有 7,依此类推,直到最后一个 MIFARE® 1K 块(也是最后一个扇区的尾部)的地址为 63)。
- l增量值 – 值块增量的值
- ucBlockAddress – 扇区中的块地址
- ucSectorAddress – Sector Address
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。
ValueBlockInSectorIncrement, ValueBlockInSectorIncrement_AKM1, ValueBlockInSectorIncrement_AKM2, ValueBlockInSectorIncrement_PK
这些函数与 ValueBlockIncrement 组函数具有相同的用途,用于读取值块的 4 个字节值。 值块增量的值作为这些函数的参数发送。 唯一的区别是部门寻址用法。 扇区寻址是指在一个扇区内分别发送扇区和块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内。
- l增量值 – 值块增量的值
- ucSectorAddress – Sector Address
- ucBlockInSectorAddress – 扇区内的块地址
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。
价值块递减、ValueBlockDecrement_AKM1、ValueBlockDecrement_AKM2 ValueBlockDecrement_PK
这组函数用于递减值块的 4 字节值。 值块递减的值作为这些函数的参数发送。 函数使用块寻址(第一个块的地址为 0;第一个扇区尾部的地址为 3,下一个扇区拖车具有 7,依此类推,直到最后一个 MIFARE® 1K 块(也是最后一个扇区的尾部)的地址为 63)。
- l递减值 – 值块递减的值
- ucBlockAddress – 扇区内的块地址
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用从 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。
ValueBlockInSectorDecrement, ValueBlockInSectorDecrement_AKM1, ValueBlockInSectorDecrement_AKM2, ValueBlockInSectorDecrement_PK
这些函数的工作方式与 ValueBlockDecrement 组函数相同,并且用于值块 4 字节值递减。 值块递减的值作为参数发送到这些函数。 唯一的区别是部门寻址使用情况。 这包括单独发送扇区地址和扇区内的块地址。 对于 MIFARE®,1K 扇区地址可能在 0 到 15 的范围内,块地址可能在扇区内的 0 到 3 范围内。 对于MIFARE®,4k扇区地址可能在0到39的范围内,并且由于地址空间组织的后半部分不同(大于2 MB),最后8个扇区(扇区32到39)中的块地址可能在0到15的范围内
- l递减值 – 值块递减的值
- ucSectorAddress – Sector Address
- ucBlockInSectorAddress – 扇区内的块地址
- ucAuthMode – 此参数定义是执行身份验证密钥 A 还是密钥 B。 它可以有两个值,即:AUTHENT1A (0x60) 或 AUTHENT1B (0x61)。
- ucReaderKeyIndex – 默认的身份验证方法(当使用不带后缀的函数时)通过使用 RFID 读取器中选择的密钥索引来执行真实性证明。 在线性地址模式下,它适用于所有扇区进行写入
- aucGivenKey – 指向六字节数组的指针,该数组包含用于验证“提供的密钥”方法的密钥。 _PK函数名称后缀指示此方法的使用。