问题标签 [sector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Block device - Initialize gendisk structure when not multiple of 512 bytes
I'm currently learning kernel driver programmation using Linux Device Drivers - 3rd.
To define a block device, I have to declare a gendisk
structure and to initialize it with relevant informations.
In chapter 16 its written:
sector_t capacity;
The capacity of this drive, in 512-byte sectors. The sector_t type can be 64 bits wide. Drivers should not set this field directly; instead, pass the number of sectors to set_capacity.
Usualy I set the capacity using a call like:
Imagine that I have a device with a memory zone that is not a multiple of 512 bytes.
Let's take 2000 bytes so there is three 512 bytes zones plus a 464 bytes zone
- What should I pass to
set_capacity
?
Furthermore on some devices, memory is splitted into several areas. Imagine that I have a device containing multiple memory areas, each with different size and that I want to abstract this splitted memory into a single memory zone.
area1 => 32000 bytes
area2 => 512 bytes
area3 => 50 bytes
area4 => 45 bytes
area5 => 1024 bytes
In this case the hard sector size is not a constant within the device.
- How should I fill the
gendisk
structure ?
UPDATE after @KamilCuk answer:
To continue with this example let's take the full device memory (33631 bytes) which is 65 sectors of 512 bytes + 1 sector of 351 bytes.
So the solutions are to present it either as:
- 33270 bytes memory zone ==> 65 sectors
or
- 33631 bytes memory zone ==> 66 sectors with 161 bytes discarded at the end of last sector
Are those the best solutions or there is another way to handle this specific case ?
- Basically the question could be resumed to how to initialize a block device when it's not a multiple of KERNEL_SECTOR_SIZE?
r - 将扇区分配给R中的一个角度
我有一个介于 0 和 360 之间的开始和结束角度值的向量。我想有一个额外的列来指定哪个扇区(考虑 12 个扇区)是我的变量。
部门应定义为:(15:45], (45,75],(75,105], ..., (345,15]
对于我的测试示例,我认为我必须遍历行数:
在这里,我可以添加 2 列test
,告诉我我的角度在哪个扇区。我正在寻找一种更智能的方法,我可以选择改变扇区的数量,例如 24 个扇区。
dictionary - mapbox-gl-js 围绕 lat/lng 创建一个扇区?
我需要在用户点击的点周围创建一个扇区。我该怎么做?
我可以创建一个“圆圈”类型的图层,用于将数据显示为圆圈,但如何获取扇区
winapi - 您如何检测前/后间隙以计算 CD-ROM 中的确切轨道长度?
使用IOCTL_CDROM_READ_TOC_EX
来计算 CD-ROM 轨道的确切长度的一种简单方法是假设音轨具有 2 秒的前间隙,而后跟不同轨道类型的数据轨道具有 2 秒的后间隙。
但不幸的是,情况并非总是如此,例如多区段光盘。
所以我想出了以下方法来计算每个轨道的确切长度:
- 向后读取曲目的开头
- 发出
READ CD
命令读取 Q 子通道 - 只要
INDEX
电流TNO
为零,我们就有效地处于前|后间隙区
这按预期工作,我们可以发现间隙以计算扇区中的确切轨道长度。
然而,这个主题在 SCSI 多媒体命令规范中没有解释,这有点令人惊讶!
问题:
这是计算 CD-ROM 中每个轨道的确切长度的正确方法吗?
windows - 如何写入 BitLocker 加密卷的物理扇区?
我打电话CreateFile()
打开\\.\PhysicalDrive0
,然后我读取了 BitLocker 加密卷的扇区,一切正常。这样,我创建了使用 BitLocker 加密的卷的物理(加密)扇区的备份副本。
然后,我再次调用CreateFile()
并再次打开\\.\PhysicalDrive0
,然后我尝试写入所述 BitLocker 加密卷的扇区(我正在尝试恢复备份),但它不起作用。
如果卷已解锁,我会收到IOException
HResult = 0x80370000 和文本“此驱动器已被 BitLocker 驱动器加密锁定。您必须从控制面板解锁此驱动器。”
从 UI 解锁卷后,异常更改为 HResult = 0x80070013 和文本“媒体已写保护”。
问题: 我必须做什么才能被允许写入 BitLocker 加密卷的物理扇区?我提到我确实以管理员身份运行代码,并且我确实锁定了卷,但无济于事。相同的代码适用于非加密卷。
到目前为止,我只有 2 个选项,而且都不是很好:
如果我使整个驱动器脱机(调用
DeviceIOControl()
),写入 BitLocker 卷的物理扇区可以正常工作,但我不能这样做,因为驱动器还包含其他需要联机的卷。如果(在恢复之前)我将卷格式化为非加密卷,它也可以工作,从而删除 BitLocker 加密。执行此操作后,写入物理扇区可以正常工作,但 Windows 不会将新写入的扇区检测为 BitLocker 卷。但是,在移除并重新插入驱动器后(或者如果驱动器已修复,则在重新启动后)它会将该卷检测为 BitLocker 加密卷。
非常感谢。
windows - 如何强制 Windows 检测通过直接写入物理扇区创建的 BitLocker 卷
我创建了 BitLocker 加密卷的物理(加密)扇区的备份(通过直接从 读取它们\\.\PhysicalDrive0
)。
然后我将该卷格式化为非加密卷,从而删除 BitLocker 加密并将加密卷转换为非加密卷。
之后,我通过将物理(加密)扇区直接写入\\.\PhysicalDrive0
. 写作效果很好,但是:
问题:
Windows 没有意识到卷已从未加密的卷更改为 BitLocker 加密的卷。DeviceIOControl()
我尝试用打电话IOCTL_DISK_UPDATE_PROPERTIES
,但无济于事。
只有在重新启动(或删除然后重新插入驱动器,如果它是可移动的)之后,Windows 才会意识到系统中有一个新的 BitLocker 加密卷。
问题: 在我写完物理扇区后,有没有办法以编程方式强制刷新 BitLocker 卷?到目前为止,这仅在我将整个驱动器脱机然后重新联机时才有效,但我不能这样做,因为该驱动器还包含其他卷,我无法将其脱机,甚至暂时也无法脱机。
PS:代码确实以管理员权限运行。我确实锁定/解锁了音量。我确实卸载了卷的文件系统。无济于事。我没主意了。谢谢。
disk - print_req_error:关键目标错误,dev sdb,扇区 0
一段时间后,我在 /dev/sdb 上找到了三星磁盘,但在分区上没有找到该设备。smartools 无法对设备进行测试,dmesg 跟踪显示以下信息无法访问扇区 0。对我来说,问题很明显,磁盘在某些硬件部分损坏,PCB 板无法访问与磁盘通信。我想对这个问题有一些其他的看法,记住是硬件问题。
你知道发生了什么吗?我可以恢复磁盘吗?
python - 如何从python中的股票代码或公司名称获取股票市场公司部门
给定公司代码或名称,我想使用 python获取其部门。
我已经尝试了几种潜在的解决方案,但没有一个成功
最有前途的两个是:
1) 使用以下脚本:https ://gist.github.com/pratapvardhan/9b57634d57f21cf3874c
但是我正在使用python --version 3.8
我已经能够调整这个解决方案,但最后一行不起作用,我对抓取网页完全陌生,所以如果有人有一些建议,我将不胜感激。
这是我当前的代码:
但是最后一部分不起作用,我对这种xpath
语法很陌生:
2) 另一个选项是嵌入R
的TTN
包,如下所示:查找股票属于哪个部门
但是,我想在我的 Jupyter 笔记本中运行它,而且运行它需要很长时间ss <- stockSymbols()
c - 在C中搜索设备的坏扇区
我正在尝试在 c 中创建一个简单的脚本,该脚本能够识别(设备)的坏扇区以用于教育目的。在我的示例中,我使用具有只读模式的 HD。背后的想法很简单,但可能太简单了,我会知道这是否正确,并最终了解实现我目标的任何其他方式。
让我们看一下我的代码:
所以我尝试通过每次寻找 512 字节的文件指针来读取我的 HD 扇区。这是第一个问题:由于首选的 I/O 块大小是 2048 字节(使用 sys/stat.h 的 stat 检索的信息),每次 512 字节而不是 2048 字节是否正确查找?另外,为了检查一个扇区是否坏,我用来比较(bytes_read < size_block)
,因为我假设如果我无法读取一个扇区的全部字节,它可能会被损坏。但是,如果我到达“文件的末尾”并且使用这种方法它不是 512 的倍数,我将得到该扇区无论如何都已损坏,如果它不是。我写的真的有用吗?否则,我该怎么做这个检查?
assembly - 在 qemu 中将扇区加载到 RAM
我编写了一个简单的程序,将扇区(第 2 扇区)加载到 RAM
但什么也不打印。
首先,我为引导扇区尝试了这段代码:
内核从用户那里获取用户名和密码,然后终止程序:
并没有工作
搜索后我尝试了这段代码(只是在末尾添加了寄存器:/):
再次没有工作
我使用的命令行:
nasm -fbin BootSector.asm -o Bootsector.bin
nasm -fbin Kernel.asm -o Kernel.bin
cat BootSector.bin Kernel.bin > Code.bin
qemu-system-x86_64 Code.bin
qemu有问题吗?
谁能帮我解决我的问题?
提前致谢