NTFS文件系统中$ FILE_NAME属性的结构

时间:2016-07-21 05:39:41

标签: windows ntfs

我正在阅读有关NTFS属性类型的信息,它会进入$ FILE_NAME属性结构。这是:

# from threading import Thread
from time import sleep

no_one = True
battledic = {} # your dict here. It may be better to use a list of objects (classes) for your opponents

class Battle(object):
    def __init__(self, chat_id):
        self.chat_id = chat_id
        self.pcount = 0
        self.p1score = 0
        self.p2score = 0
        print('Instance of battle started on chat %s' % self.chat_id)

    def reset(self):
        self.pcount = 0
        self.p1score = 0
        self.p2score = 0

def wheres_waldo():
    x = 0; no_one = True
    while x < 90: # waits 90 seconds unless found
        for player in battledic.keys():
            if player.is_requesting: # found someone
                no_one = False
                break # quit looking
        else:
            print('No one yet')
        sleep(1); x+= 1
    if no_one:
        sendmessage(chat_id, 'no one accepted') # first parameter is the chat address and the second one is the message
        battle.reset()
    else:
        sendmessage(chat_id, 'Found someone')

def sendmessage(chat_id,message):
    print('%s on chat %s' % (message,chat_id))

battle = Battle(chat_id)
while True:
    message = raw_input('Command? ')
    if message == "challenge":
        if battle.pcount == 0:
            wheres_waldo()
            # first thoughts were to run threads but the while loop is easier
            # wait = Thread(target=timeout, args=(chat_id))
            # where = Thread(target=wheres_waldo)
            # wait.start();where.start()
            # wait.join();where.join()

什么是&#34;文件名命名空间&#34;在偏移量0x41?我认为我对命名空间有点了解。如何只用1个字节存储?任何人都可以为我清除这个吗?谢谢。

1 个答案:

答案 0 :(得分:4)

它描述了文件名的“特征”,即长度,允许的字符等。它本身不是“字符串”(如C ++ / C#/ etc。命名空间)。

我找到了一份文件here,我坦率地不知道它的有效性。

但无论如何,它描述了名称空间(这很明显,见第13.2章。):

  

0:POSIX

     

这是最大的命名空间。它区分大小写   允许除NULL(0)和Forward Slash之外的所有Unicode字符   '/'。最大名称长度为255个字符。注:有一些   字符,例如冒号':',在NTFS中有效,但Windows会   不允许你使用。

     

1:Win32

     

Win32是POSIX的子集   命名空间并且不区分大小写。它使用所有Unicode字符,   除了:''''*''/'':''&lt;' '&GT;' '?' '\''|' N.B.姓名不能以   点'。'或空格''。

     

2:DOS

     

DOS是Win32命名空间的子集,   只允许8位大写字符,大于空格''和   排除:''''*''+'',''/'':'';' '&LT;' '=''&gt;' '?' '\'.N.B。姓名   必须匹配以下模式:1到8个字符,然后是“。”,然后是1   到3个字符。

     

3:Win32&amp; DOS

     

这个命名空间意味着两者都有   Win32和DOS文件名是相同的,因此已保存在   这个单一的文件名记录。

因此该字段可以是一个字节,因为它只包含一个标识正在使用的相应名称空间的数字。