#include <glib/gmacros.h>
#include <glib-object.h>
-#include "reactos/ntos/types.h" /* for HANDLE */
-#include "reactos/ntos/zwtypes.h" /* for FILE_ID_BOTH_DIR_INFORMATION */
#include <libgnomevfs/gnome-vfs-file-info.h> /* for GnomeVFSFileInfo */
+#include "captive/client-vfs.h"
G_BEGIN_DECLS
#define CAPTIVE_DIRECTORY_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),CAPTIVE_DIRECTORY_TYPE_OBJECT,CaptiveDirectoryObjectClass))
typedef struct _CaptiveDirectoryObject CaptiveDirectoryObject;
typedef struct _CaptiveDirectoryObjectClass CaptiveDirectoryObjectClass;
-struct _CaptiveDirectoryObject {
- GObject parent_instance;
- /*< private >*/
- HANDLE dir_Handle;
- gboolean read_first;
- /* 'QueryDirectory_buf' for NtQueryDirectoryFile() must be persistent
- * to keep the state if !read_first.
- * Both types of 'QueryDirectory_buf' MUST NOT be 'union' as we convert
- * them by copying one to other.
- */
- struct {
- char FileIdBothDirInformation[sizeof(FILE_ID_BOTH_DIR_INFORMATION)
- +0x1000 /* max 'FileName' length, 255 should be enough */ * sizeof(WCHAR /* *FILE_ID_BOTH_DIR_INFORMATION.FileName */ )];
- char FileBothDirInformation[sizeof(FILE_BOTH_DIR_INFORMATION)
- +0x1000 /* max 'FileName' length, 255 should be enough */ * sizeof(WCHAR /* *FILE_ID_BOTH_DIR_INFORMATION.FileName */ )];
- } QueryDirectory_buf;
- enum {
- CaptiveDirectoryObject_QueryDirectory_type_FileIdBothDirInformation,
- CaptiveDirectoryObject_QueryDirectory_type_FileBothDirInformation,
- } CaptiveDirectoryObject_QueryDirectory_type;
- };
-struct _CaptiveDirectoryObjectClass {
- GObjectClass parent_class;
- };
GType captive_directory_object_get_type(void);
-GnomeVFSResult captive_directory_new_open(CaptiveDirectoryObject **captive_directory_object_return,const gchar *pathname);
-GnomeVFSResult captive_directory_new_make(CaptiveDirectoryObject **captive_directory_object_return,const gchar *pathname,guint perm);
+GnomeVFSResult captive_directory_new_open(CaptiveDirectoryObject **captive_directory_object_return,
+ CaptiveVfsObject *captive_vfs_object,const gchar *pathname);
+GnomeVFSResult captive_directory_new_make(CaptiveDirectoryObject **captive_directory_object_return,
+ CaptiveVfsObject *captive_vfs_object,const gchar *pathname,guint perm);
+CaptiveVfsObject *captive_directory_ref_vfs(CaptiveDirectoryObject *captive_directory_object);
GnomeVFSResult captive_directory_read(CaptiveDirectoryObject *captive_directory_object,GnomeVFSFileInfo *file_info);
GnomeVFSResult captive_directory_remove(CaptiveDirectoryObject *captive_directory_object);