PDA

View Full Version : سوال: WIN32_FIND_DATA.dwFileAttributes = 8202



vasilopita
سه شنبه 01 فروردین 1391, 12:09 عصر
سلام دوستان. اگه WIN32_FIND_DATA.dwFileAttributes برار با 8202 باشه این فایل چه نوع فایلی خواهد بود ؟
با تشکر

vasilopita
سه شنبه 01 فروردین 1391, 14:22 عصر
دوست عزیز این مقادیری هست که تو msdn برای WIN32_FIND_DATA.dwFileAttributes وجود داره:


Constant/value Description
FILE_ATTRIBUTE_ARCHIVE
32 (0x20)
A file or directory that is an archive file or directory. Applications typically use this attribute to mark files for backup or removal .
FILE_ATTRIBUTE_COMPRESSED
2048 (0x800)
A file or directory that is compressed. For a file, all of the data in the file is compressed. For a directory, compression is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_DEVICE
64 (0x40)
This value is reserved for system use.
FILE_ATTRIBUTE_DIRECTORY
16 (0x10)
The handle that identifies a directory.
FILE_ATTRIBUTE_ENCRYPTED
16384 (0x4000)
A file or directory that is encrypted. For a file, all data streams in the file are encrypted. For a directory, encryption is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_HIDDEN
2 (0x2)
The file or directory is hidden. It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_INTEGRITY_STREAM
32768 (0x8000)
The directory or user data stream is configured with integrity (only supported on ReFS volumes). It is not included in an ordinary directory listing. The integrity setting persists with the file if it's renamed. If a file is copied the destination file will have integrity set if either the source file or destination directory have integrity set.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP: This flag is not supported until Windows Server 8 Beta.
FILE_ATTRIBUTE_NORMAL
128 (0x80)
A file that does not have other attributes set. This attribute is valid only when used alone.
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192 (0x2000)
The file or directory is not to be indexed by the content indexing service.
FILE_ATTRIBUTE_NO_SCRUB_DATA
131072 (0x20000)
The user data stream not to be read by the background data integrity scanner (AKA scrubber). When set on a directory it only provides inheritance. This flag is only supported on Storage Spaces and ReFS volumes. It is not included in an ordinary directory listing.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP: This flag is not supported until Windows 8 and Windows Server 8 Beta.
FILE_ATTRIBUTE_OFFLINE
4096 (0x1000)
The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage. This attribute is used by Remote Storage, which is the hierarchical storage management software. Applications should not arbitrarily change this attribute.
FILE_ATTRIBUTE_READONLY
1 (0x1)
A file that is read-only. Applications can read the file, but cannot write to it or delete it. This attribute is not honored on directories. For more information, see You cannot view or change the Read-only or the System attributes of folders in Windows Server 2003, in Windows XP, in Windows Vista or in Windows 7.
FILE_ATTRIBUTE_REPARSE_POINT
1024 (0x400)
A file or directory that has an associated reparse point, or a file that is a symbolic link.
FILE_ATTRIBUTE_SPARSE_FILE
512 (0x200)
A file that is a sparse file.
FILE_ATTRIBUTE_SYSTEM
4 (0x4)
A file or directory that the operating system uses a part of, or uses exclusively.
FILE_ATTRIBUTE_TEMPORARY
256 (0x100)
A file that is being used for temporary storage. File systems avoid writing data back to mass storage if sufficient cache memory is available, because typically, an application deletes a temporary file after the handle is closed. In that scenario, the system can entirely avoid writing the data. Otherwise, the data is written after the handle is closed.
FILE_ATTRIBUTE_VIRTUAL
65536 (0x10000)
This value is reserved for system use.

مشکل اینه که مقدار 8202 ای وجود نداره!!

vasilopita
چهارشنبه 02 فروردین 1391, 01:35 صبح
بله مطمئنم کدم درسته. کد طوری نیست که بتونم بذارمش. من در واقع یه سرچ و انجام می دم که میاد فایل های مختلف رو مورد بررسی قرار می ده اگه directory بودن یعنی dwFileAttributes=16 بود وارد اون دایرکتوری میشه. این کار و دقیق واسه همه ی فولدر ها انجام می ده ولی واسه بعضی از فولدرها توی درایو dwFileAttributes C برابر با 8202 میشه!!!


مقداری که در dwFileAttributes هست ، ترکیبی از این ثابت ها هست نه فقط یک ثابت معیین.
میشه بیشتر توضیح بدی؟ حالا من از کجا بفهمم 8202 ترکیبی از کدوماشونه ؟


2 : در ضمن منظورتون از 8202 بصورت Hexadecimal هست یا Decimal ?
مسلما decimal !!

vasilopita
پنج شنبه 03 فروردین 1391, 11:56 صبح
دوست عزیز اشتباه یعنی اینکه شما میدونید کدی که نوشتید دذسته ولی در حقیقت درست نیست ( نه اینکه منظورم این باشه که الان کدتون درست نیست ، اینو بصورت کلی گفتم)
بله متوجه منظورتون بصورت کلی شدم :چشمک:

مثلا همینی که گفتید : "من در واقع یه سرچ و انجام می دم که میاد فایل های مختلف رو مورد بررسی قرار می ده اگه directory بودن یعنی dwFileAttributes=16 بود"
شما نباید با عملگر = این کار رو انجام بدید.
درسته که پیش شما شاگردیم ولی نه دیگه تا این حد:ناراحت:

مثلا مقدار 22 به نظرتون چی میشه ؟
مقدار 22 میشه : FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM .
یعنی یک Folder ی که مخفی هست و Operating Sytem File/Dir هم هست.
خوب برنامه شما از این فایل عبور میکنه چون مقدار Attributeش 16 نیست !
پس این یک اشتباه در کد شماست.
ممنون؛ حالا متوجه شدم منظورتون رو.