58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
|
/******************************************************************************
|
||
|
*
|
||
|
* Copyright (c) 1999 Microsoft Corporation
|
||
|
*
|
||
|
* Module Name:
|
||
|
* ifsr3.h
|
||
|
*
|
||
|
* Abstract:
|
||
|
* This file contains definitions from ring 0 required in ring 3
|
||
|
*
|
||
|
* Revision History:
|
||
|
* Kanwaljit S Marok ( kmarok ) 05/17/99
|
||
|
* created
|
||
|
*
|
||
|
*****************************************************************************/
|
||
|
|
||
|
#ifndef _IFSR3_H_
|
||
|
#define _IFSR3_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#define CALC_PPATH_SIZE( a ) ( ( a + 3 ) * sizeof( WCHAR ) )
|
||
|
#define MAX_PPATH_SIZE CALC_PPATH_SIZE(MAX_PATH)
|
||
|
|
||
|
typedef struct PathElement PathElement;
|
||
|
typedef struct ParsedPath ParsedPath;
|
||
|
typedef ParsedPath *path_t;
|
||
|
|
||
|
struct PathElement {
|
||
|
unsigned short pe_length;
|
||
|
unsigned short pe_unichars[1];
|
||
|
}; /* PathElement */
|
||
|
|
||
|
struct ParsedPath {
|
||
|
unsigned short pp_totalLength;
|
||
|
unsigned short pp_prefixLength;
|
||
|
struct PathElement pp_elements[1];
|
||
|
}; /* ParsedPath */
|
||
|
|
||
|
|
||
|
#define IFSPathSize(ppath) ((ppath)->pp_totalLength + sizeof(short))
|
||
|
#define IFSPathLength(ppath) ((ppath)->pp_totalLength - sizeof(short)*2)
|
||
|
#define IFSLastElement(ppath) ((PathElement *)((char *)(ppath) + (ppath)->pp_prefixLength))
|
||
|
#define IFSNextElement(pel) ((PathElement *)((char *)(pel) + (pel)->pe_length))
|
||
|
#define IFSIsRoot(ppath) ((ppath)->pp_totalLength == 4)
|
||
|
|
||
|
// New defines
|
||
|
|
||
|
#define IFSPathElemChars(pel) ( (((PathElement*)pel)->pe_length/sizeof(USHORT)) - 1 )
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // _IFSR3_H_
|