Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

381 lines
5.9 KiB

#ifdef DEBUG
#ifdef K32
const char UnimpMessage[] = "Unimplemented API %s";
const char AttentionMessage[] = "ATTENTION !!! API stub might corrupt the stack";
enum {DEB_FATAL, DEB_ERR, DEB_WARN, DEB_TRACE };
int apiLevel = DEB_WARN;
VOID KERNENTRY vDebugOut(int level, const char *pfmt, ...);
#define DebugOut(args) vDebugOut args
#define UNIMP_MESSAGE DebugOut((apiLevel, UnimpMessage, api_string));
#define DEBUG_OOPS DebugOut((DEB_ERR, UnimpMessage, api_string)); \
#else
const char UnimpMessage[] = "Unimplemented API %s\r\n";
const char AttentionMessage[] = "ATTENTION !!! API stub might corrupt the stack\r\n";
#define UNIMP_MESSAGE DebugPrintf(UnimpMessage, api_string);
#define DEBUG_OOPS DebugPrintf(UnimpMessage, api_string); _asm { int 3 };
#endif
#endif
/*
* Macros for unimplemented APIs stubs.
*
*/
#define API_name(api_name) api_name
#define API_decl(api_name) long APIENTRY API_name(api_name)
#ifdef DEBUG
#define API_body(api_name, return_value) \
const char api_string[] = #api_name; \
UNIMP_MESSAGE \
SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
return(return_value);
#else
#define API_body(api_name, return_value) \
SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
return(return_value);
#endif
#ifdef DEBUG
#define APISTUB_(api_name, return_value) \
API_decl(api_name) (VOID) \
{ \
const char api_string[] = #api_name; \
DebugPrintf(AttentionMessage); \
DEBUG_OOPS \
SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
return(return_value); \
}
#else
#define APISTUB_(api_name, return_value) \
API_decl(api_name) (VOID) \
{ \
SetLastError(ERROR_CALL_NOT_IMPLEMENTED); \
return(return_value); \
}
#endif
#define APISTUB_0(api_name, return_value) \
API_decl(api_name) (VOID) \
{ \
API_body(api_name, return_value) \
}
#define APISTUB_1(api_name, return_value) \
API_decl(api_name) ( \
int p1 \
) \
{ \
API_body(api_name, return_value) \
p1; \
}
#define APISTUB_2(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
}
#define APISTUB_3(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
}
#define APISTUB_4(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
}
#define APISTUB_5(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
}
#define APISTUB_6(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
}
#define APISTUB_7(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
}
#define APISTUB_8(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
}
#define APISTUB_9(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8, \
int p9 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
p9; \
}
#define APISTUB_10(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8, \
int p9, \
int p10 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
p9; \
p10; \
}
#define APISTUB_11(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8, \
int p9, \
int p10, \
int p11 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
p9; \
p10; \
p11; \
}
#define APISTUB_12(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8, \
int p9, \
int p10, \
int p11, \
int p12 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
p9; \
p10; \
p11; \
p12; \
}
#define APISTUB_13(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8, \
int p9, \
int p10, \
int p11, \
int p12, \
int p13 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
p9; \
p10; \
p11; \
p12; \
p13; \
}
#define APISTUB_14(api_name, return_value) \
API_decl(api_name) ( \
int p1, \
int p2, \
int p3, \
int p4, \
int p5, \
int p6, \
int p7, \
int p8, \
int p9, \
int p10, \
int p11, \
int p12, \
int p13, \
int p14 \
) \
{ \
API_body(api_name, return_value) \
p1; \
p2; \
p3; \
p4; \
p5; \
p6; \
p7; \
p8; \
p9; \
p10; \
p11; \
p12; \
p13; \
p14; \
}
/*
* Miscelaneous declarations needed for the APIs
*/
extern void _cdecl DebugPrintf();