Si... cuando duermo poco e intento pensar suele pasar eso. ;-)

2009/3/13 Gustavo Ringel <[email protected]>:
> Diego, me das miedooooo :)
>
> Gustavo.
>
> 2009/3/13 Diego Jancic <[email protected]>
>>
>> Hola,
>>
>>
>>
>> De curioso, investigue un poco porque tenia mis dudas sobre como se
>> guardan los directorios físicamente en el disco
>>
>> Usando reflector sobre la clase FileSystemWatcher me di cuenta de que no
>> hay nada para hacerlo (a menos que exista algun truco lógico que no
>> conozca).
>>
>> Buscando un poco mas internet, encontré esto:
>>
>>
>>
>>
>>
>>
>>
>> Q58 How do I determine if the FILE_OBJECT represents a file or a directory
>> from my filter driver? Can I rely upon the FILE_DIRECTORY_FILE bit?
>>
>> The determination of whether or not a given FILE_OBJECT represents a
>> directory is the sole domain of the file system driver. Thus, for a file
>> system filter driver to determine if a file is a directory, it must ask the
>> file system. This can be done by querying the attributes of the file (e.g.,
>> after it has been successfully opened by the underlying file system) or by
>> examining the attributes within the directory, which can be done before the
>> underlying file has been opened.
>>
>> Options specified during create are not adequate for determining if a file
>> is, in fact, a directory. For example, an application may optionally specify
>> that the file being opened must be a directory by setting the
>> FILE_DIRECTORY_FILE option as part of create (this is a bit in the I/O Stack
>> location, Parameters.Create.Options, the low 24 bits of which are used for
>> file options). If the file creation is successful, the file system filter
>> driver can conclude that the FILE_OBJECT does represent a directory. If the
>> file creation is successful and the caller did not specify
>> FILE_DIRECTORY_FILE, however, the caller cannot presume that the file is a
>> directory. The FILE_NON_DIRECTORY_FILE bit can similarly be used to
>> determine that the given FILE_OBJECT does not represent a file.
>>
>> There is one complication for those writing a file system filter driver -
>> they must keep in mind that some file options now combine these two bits.
>> For example FILE_COPY_STRUCTURED_STORAGE (which is not used but is still
>> present in ntifs.h for Windows XP) is defined as FILE_DIRECTORY_FILE and
>> FILE_NON_DIRECTORY_FILE.
>>
>> Thus, the safest way to determine if a FILE_OBJECT represents a directory
>> remains to ask the underlying file system.
>>
>>
>>
>> Fuente: http://www.osronline.com/article.cfm?id=17#Q58
>>
>>
>>
>> Si lees la ultima línea, todo hace pensar que es imposible saber lo que
>> queres una vez que el archivo no existe. Por lo que si quisieses hacerlo
>> deberías hacer esta verificación *antes* de que el archivo/carpeta sea
>> modificado o borrado, y despues si es que se esta creando. No se si las APIs
>> de Windows soportan estos events pre y post cambio al file system.
>>
>>
>>
>> Saludos,
>>
>> Diego
>>
>>
>>
>> Pd: Dato interesante que descubri cuando usaba reflector: El Filter que se
>> usa para poner cosas como *.txt, considera exactamente el * y el *.*, aun
>> cuando no deberían ser lo mismo (el segundo debería filtrar los nombres que
>> no contiene un punto).
>>
>> El código es una cosa asi de sucia y asi de hardcodeado:
>>
>>
>>
>> if (filter == “*” || filter == “*.*”)
>>
>>       return true;
>>
>> // Empieza la logica real para parsear el * y el ? como debería ser…
>>
>>
>>
>> From: [email protected] [mailto:[email protected]] On Behalf Of Pablo
>> Satelier
>> Sent: Thursday, March 12, 2009 14:02
>> To: [email protected]
>> Subject: [puntonet] Clase IO.FileSystemWatcher
>>
>>
>>
>> Hola gente,...
>>
>>   estoy necesitando que la clase IO.FileSystemWatcher me notifique
>> unicamente los cambios en las carpetas, no en las carpetas que fueron
>> modificados los archivos que contiene. En cuanto a cambios me refiero a
>> renombrado, eliminacion o creacion de una carpeta. No se si esto se puede
>> hacer con el FileSystemWatcher o si existe alguna otra clase que pueda hacer
>> lo que necesito.
>>
>> Alguna idea??
>>
>> Muchas gracias de antemano !!
>>
>> Saludos, Pablo.-
>

Responder a