1c2c66affSColin Finck /*
2c2c66affSColin Finck  * win32err.c
3c2c66affSColin Finck  *
4c2c66affSColin Finck  * Copyright (c) 1998 Mark Russinovich
5c2c66affSColin Finck  *	Systems Internals
6c2c66affSColin Finck  *	http://www.sysinternals.com/
7c2c66affSColin Finck  *
8c2c66affSColin Finck  * --------------------------------------------------------------------
9c2c66affSColin Finck  *
10c2c66affSColin Finck  * This software is free software; you can redistribute it and/or
11c2c66affSColin Finck  * modify it under the terms of the GNU Library General Public License as
12c2c66affSColin Finck  * published by the Free Software Foundation; either version 2 of the
13c2c66affSColin Finck  * License, or (at your option) any later version.
14c2c66affSColin Finck  *
15c2c66affSColin Finck  * This software is distributed in the hope that it will be useful,
16c2c66affSColin Finck  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17c2c66affSColin Finck  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18c2c66affSColin Finck  * Library General Public License for more details.
19c2c66affSColin Finck  *
20c2c66affSColin Finck  * You should have received a copy of the GNU Library General Public
21c2c66affSColin Finck  * License along with this software; see the file COPYING.LIB. If
22c2c66affSColin Finck  * not, write to the Free Software Foundation, Inc., 675 Mass Ave,
23c2c66affSColin Finck  * Cambridge, MA 02139, USA.
24c2c66affSColin Finck  *
25c2c66affSColin Finck  * --------------------------------------------------------------------
26c2c66affSColin Finck  *
27c2c66affSColin Finck  * Print a Win32 error.
28c2c66affSColin Finck  *
29c2c66affSColin Finck  * 1999 February (Emanuele Aliberti)
30c2c66affSColin Finck  * 	Taken from chkdskx.c and formatx.c by Mark Russinovich
31c2c66affSColin Finck  * 	to be used in all sysutils.
32c2c66affSColin Finck  */
33c2c66affSColin Finck #include <windows.h>
34c2c66affSColin Finck #include <stdio.h>
35c2c66affSColin Finck 
36c2c66affSColin Finck //----------------------------------------------------------------------
37c2c66affSColin Finck //
38c2c66affSColin Finck // PrintWin32Error
39c2c66affSColin Finck //
40c2c66affSColin Finck // Takes the win32 error code and prints the text version.
41c2c66affSColin Finck //
42c2c66affSColin Finck //----------------------------------------------------------------------
43c2c66affSColin Finck void
PrintWin32Error(PWCHAR Message,DWORD ErrorCode)44c2c66affSColin Finck PrintWin32Error(
45c2c66affSColin Finck 	PWCHAR	Message,
46c2c66affSColin Finck 	DWORD	ErrorCode
47c2c66affSColin Finck 	)
48c2c66affSColin Finck {
49*58588b76STimo Kreuzer     LPWSTR lpMsgBuf;
50c2c66affSColin Finck 
51c2c66affSColin Finck 	FormatMessageW(
52c2c66affSColin Finck 		(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM),
53c2c66affSColin Finck 		NULL,
54c2c66affSColin Finck 		ErrorCode,
55c2c66affSColin Finck 		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
56c2c66affSColin Finck 		(LPWSTR)& lpMsgBuf,
57c2c66affSColin Finck 		0,
58c2c66affSColin Finck 		NULL
59c2c66affSColin Finck 		);
60c2c66affSColin Finck 	wprintf(
61c2c66affSColin Finck 		L"%s: %s\n",
62c2c66affSColin Finck 		Message,
63c2c66affSColin Finck 		lpMsgBuf
64c2c66affSColin Finck 		);
65c2c66affSColin Finck 	LocalFree( lpMsgBuf );
66c2c66affSColin Finck }
67c2c66affSColin Finck 
68c2c66affSColin Finck 
69c2c66affSColin Finck /* EOF */
70