Como? :)
2009/3/20 Pablo Satelier <[email protected]>:
> Muchas gracias por todos los aportes, gracias a sus ideas (todas aportaron
> algo) pude resolver el tema.
>
> Saludos, Pablo.-
>
> Diego Jancic escribió:
>>
>> 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.-
>>>>
>>
>>
>>
>
>
>