91 lines
5 KiB
C
91 lines
5 KiB
C
|
/* ---------------------------------------------------------------------------------------------------------------------------- */
|
||
|
/* */
|
||
|
/* DIRWAK2A.H */
|
||
|
/* This a modified version of DIRWALK2.H by adding function parameters to support OEMPATCH. */
|
||
|
/* Definitions for the DirectoryWalk function found in DIRWAK2A.C, and the related processing calls needed. */
|
||
|
/* */
|
||
|
/* ---------------------------------------------------------------------------------------------------------------------------- */
|
||
|
|
||
|
#ifndef DIRWAK2A_H
|
||
|
#define DIRWAK2A_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* User function definitions:
|
||
|
*
|
||
|
* The context is just a void * which gets passed to each callback. It is not used internally. The user may assign
|
||
|
* any meaning desired. The same value will be passed to each callback.
|
||
|
*
|
||
|
* The parentID and childID values are "void *"s to DirectoryWalk. They are not used internally. The user may assign
|
||
|
* any meaning desired to the value. DirectoryWalk simply requests an assignment via the Directory(), and reports the
|
||
|
* corresponding assignment with each file reported to File(), then to DirectoryEnd().
|
||
|
*/
|
||
|
|
||
|
typedef int (__cdecl FN_DIRECTORY)(
|
||
|
void * pContext, /* global context */
|
||
|
void * pParentID, /* the handle for the directory where this directory was found */
|
||
|
const WCHAR * pwszDirectory, /* the name of the directory found, ie, "DOS" */
|
||
|
const WCHAR * pwszPath, /* the full name of the directory, ie, "C:\DOS" */
|
||
|
void * * ppChildID, /* Directory() assigns this directory a handle, and passes it back here */
|
||
|
void * pTree);
|
||
|
|
||
|
/*
|
||
|
* If Directory() returns a non-zero value, DirectoryWalk will terminate and return that value. If NULL is passed
|
||
|
* to DirectoryWalk() for a Directory() pointer, subdirectories will not be searched. For subdirectory searching
|
||
|
* without specific per-directory processing, create a simple function which always returns DW_NO_ERROR (any other
|
||
|
* return will terminate the search.)
|
||
|
*/
|
||
|
|
||
|
typedef int (__cdecl FN_FILE)(
|
||
|
void * pContext, /* global context */
|
||
|
void * pParentID, /* the handle for the directory where this file was found */
|
||
|
const WCHAR * pwszFilename, /* the name of the file found, ie, "ANSI.SYS" */
|
||
|
const WCHAR * pwszPath, /* the full name of the directory where file was found, ie, "C:\DOS\" */
|
||
|
DWORD attributes, /* the file's attribute bits */
|
||
|
FILETIME lastWriteTime, /* the file's last modification time */
|
||
|
FILETIME creationTime, /* the file's creation time */
|
||
|
__int64 filesize, /* the file's size in bytes */
|
||
|
void * pTree);
|
||
|
|
||
|
/*
|
||
|
* If File() returns a value other than DW_NO_ERROR, DirectoryWalk will terminate and return that value. NULL can
|
||
|
* be passed to DirectoryWalk() for a File() pointer; file entries found will be ignored.
|
||
|
*/
|
||
|
|
||
|
typedef int (__cdecl FN_DIRECTORY_END)(
|
||
|
void * pContext, /* global context */
|
||
|
void * pParentID, /* the handle for the directory where this directory was found */
|
||
|
const WCHAR * pwszDirectory, /* the name of the directory found, ie, "DOS" */
|
||
|
const WCHAR * pwszPath, /* the full name of the directory, ie, "C:\DOS" */
|
||
|
void * pChildID); /* the handle assigned this directory by Directory() */
|
||
|
|
||
|
/*
|
||
|
* If NULL is passed to DirectoryWalk for the DirectoryEnd() pointer, no report of end of directories will be made.
|
||
|
* If DirectoryEnd returns a value other than DW_NO_ERROR, DirectoryWalk will terminate and return that value.
|
||
|
*/
|
||
|
|
||
|
|
||
|
extern int DirectoryWalk(
|
||
|
void * pContext, /* global context for callbacks */
|
||
|
void * pParentID, /* top-level parentID */
|
||
|
const WCHAR * pwszPath, /* path to search, ie, "C:\" */
|
||
|
FN_DIRECTORY * Directory, /* pointer to Directory() or NULL */
|
||
|
FN_FILE * File, /* pointer to File() or NULL */
|
||
|
FN_DIRECTORY_END * DirectoryEnd, /* pointer to DirectoryEnd() or NULL */
|
||
|
void * pTree);
|
||
|
|
||
|
|
||
|
#define DW_MEMORY (-10) /* unable to allocate for internal use */
|
||
|
#define DW_ERROR (-11) /* find first/next reported an error */
|
||
|
#define DW_DEPTH (-12) /* path name became too long */
|
||
|
#define DW_NO_ERROR (0) /* no error detected */
|
||
|
#define DW_OTHER_ERROR (-1) /* some error */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // DIRWAK2A_H
|