windows-nt/Source/XPSP1/NT/base/ntsetup/oemtools/oempatch/dirwak2a.h

91 lines
5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/* ---------------------------------------------------------------------------------------------------------------------------- */
/* */
/* 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