315 lines
6.4 KiB
C
315 lines
6.4 KiB
C
/*++
|
||
|
||
Copyright (c) 1991 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
Tshutwnd.c
|
||
|
||
Abstract:
|
||
|
||
This module contains the function test for the System Shutdown APIs
|
||
|
||
Author:
|
||
|
||
Dave Chalmers (davidc) 30-Apr-1992
|
||
|
||
Environment:
|
||
|
||
Windows, Crt - User Mode
|
||
|
||
Notes:
|
||
|
||
Since this is a test program it relies on assertions for error checking
|
||
rather than a more robust mechanism.
|
||
|
||
--*/
|
||
|
||
#define MAX_STRING_LENGTH 80
|
||
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
#include <windows.h>
|
||
|
||
#ifdef UNICODE
|
||
#error This module was designed to be built as ansi only
|
||
#endif
|
||
|
||
|
||
VOID
|
||
main(
|
||
INT argc,
|
||
PCHAR argv[ ]
|
||
)
|
||
|
||
{
|
||
LPTSTR MachineName = NULL;
|
||
WCHAR UnicodeMachineName[MAX_STRING_LENGTH];
|
||
PWCHAR pUnicodeMachineName = NULL;
|
||
BOOL Result;
|
||
BOOL Failed = FALSE;
|
||
DWORD Error;
|
||
|
||
//
|
||
// Initialize options based on the command line.
|
||
//
|
||
|
||
while( *++argv ) {
|
||
|
||
MachineName = *argv;
|
||
}
|
||
|
||
//
|
||
// Get the machine name in unicode
|
||
//
|
||
|
||
if (MachineName != NULL) {
|
||
|
||
MultiByteToWideChar(0,
|
||
MachineName, -1,
|
||
UnicodeMachineName, sizeof(UnicodeMachineName),
|
||
MB_PRECOMPOSED);
|
||
|
||
pUnicodeMachineName = UnicodeMachineName;
|
||
|
||
printf("Machine Name(a) = <%s>\n", MachineName);
|
||
printf("Machine Name(u) = <%ws>\n", UnicodeMachineName);
|
||
|
||
}
|
||
|
||
|
||
//
|
||
// Start the test
|
||
//
|
||
|
||
printf("Running test again machine <%s>\n\n", MachineName);
|
||
|
||
|
||
|
||
|
||
//
|
||
// InitiateSystemShutdown (Ansi)
|
||
//
|
||
|
||
|
||
|
||
printf("Test InitiateSystemShutdown (Ansi)...");
|
||
|
||
|
||
Result = InitiateSystemShutdownA(
|
||
MachineName,
|
||
NULL, // No message
|
||
0, // Timeout
|
||
FALSE, // Force
|
||
FALSE // Reboot
|
||
);
|
||
|
||
if (Result == FALSE) {
|
||
|
||
Error = GetLastError();
|
||
|
||
if (Error != ERROR_CALL_NOT_IMPLEMENTED) {
|
||
|
||
printf("Failed.\n");
|
||
printf("Call failed as expected but last error is incorrect\n");
|
||
printf("LastError() returned %d, expected %d\n", Error, ERROR_CALL_NOT_IMPLEMENTED);
|
||
Failed = TRUE;
|
||
}
|
||
|
||
} else {
|
||
printf("Failed.\n");
|
||
printf("Call succeeded, expected it to fail.\n");
|
||
Failed = TRUE;
|
||
}
|
||
|
||
|
||
Result = InitiateSystemShutdownA(
|
||
MachineName,
|
||
"A shutdown message",
|
||
0, // Timeout
|
||
FALSE, // Force
|
||
FALSE // Reboot
|
||
);
|
||
|
||
if (Result == FALSE) {
|
||
|
||
Error = GetLastError();
|
||
|
||
if (Error != ERROR_CALL_NOT_IMPLEMENTED) {
|
||
|
||
printf("Failed.\n");
|
||
printf("Call failed as expected but last error is incorrect\n");
|
||
printf("LastError() returned %d, expected %d\n", Error, ERROR_CALL_NOT_IMPLEMENTED);
|
||
Failed = TRUE;
|
||
}
|
||
|
||
} else {
|
||
printf("Failed.\n");
|
||
printf("Call succeeded, expected it to fail.\n");
|
||
Failed = TRUE;
|
||
}
|
||
|
||
if (Failed) {
|
||
return;
|
||
}
|
||
|
||
printf("Succeeded.\n");
|
||
|
||
|
||
|
||
|
||
|
||
//
|
||
// InitiateSystemShutdown (Unicode)
|
||
//
|
||
|
||
|
||
|
||
printf("Test InitiateSystemShutdown (Unicode)...");
|
||
|
||
|
||
Result = InitiateSystemShutdownW(
|
||
pUnicodeMachineName,
|
||
NULL, // No message
|
||
0, // Timeout
|
||
FALSE, // Force
|
||
FALSE // Reboot
|
||
);
|
||
|
||
if (Result == FALSE) {
|
||
|
||
Error = GetLastError();
|
||
|
||
if (Error != ERROR_CALL_NOT_IMPLEMENTED) {
|
||
|
||
printf("Failed.\n");
|
||
printf("Call failed as expected but last error is incorrect\n");
|
||
printf("LastError() returned %d, expected %d\n", Error, ERROR_CALL_NOT_IMPLEMENTED);
|
||
Failed = TRUE;
|
||
}
|
||
|
||
} else {
|
||
printf("Failed.\n");
|
||
printf("Call succeeded, expected it to fail.\n");
|
||
Failed = TRUE;
|
||
}
|
||
|
||
|
||
Result = InitiateSystemShutdownW(
|
||
pUnicodeMachineName,
|
||
L"A shutdown message",
|
||
0, // Timeout
|
||
FALSE, // Force
|
||
FALSE // Reboot
|
||
);
|
||
|
||
if (Result == FALSE) {
|
||
|
||
Error = GetLastError();
|
||
|
||
if (Error != ERROR_CALL_NOT_IMPLEMENTED) {
|
||
|
||
printf("Failed.\n");
|
||
printf("Call failed as expected but last error is incorrect\n");
|
||
printf("LastError() returned %d, expected %d\n", Error, ERROR_CALL_NOT_IMPLEMENTED);
|
||
Failed = TRUE;
|
||
}
|
||
|
||
} else {
|
||
printf("Failed.\n");
|
||
printf("Call succeeded, expected it to fail.\n");
|
||
Failed = TRUE;
|
||
}
|
||
|
||
if (Failed) {
|
||
return;
|
||
}
|
||
|
||
printf("Succeeded.\n");
|
||
|
||
|
||
|
||
|
||
|
||
//
|
||
// AbortSystemShutdown (Ansi)
|
||
//
|
||
|
||
|
||
|
||
printf("Test AbortSystemShutdown (Ansi)...");
|
||
|
||
|
||
Result = AbortSystemShutdownA(
|
||
MachineName
|
||
);
|
||
|
||
if (Result == FALSE) {
|
||
|
||
Error = GetLastError();
|
||
|
||
if (Error != ERROR_CALL_NOT_IMPLEMENTED) {
|
||
|
||
printf("Failed.\n");
|
||
printf("Call failed as expected but last error is incorrect\n");
|
||
printf("LastError() returned %d, expected %d\n", Error, ERROR_CALL_NOT_IMPLEMENTED);
|
||
Failed = TRUE;
|
||
}
|
||
|
||
} else {
|
||
printf("Failed.\n");
|
||
printf("Call succeeded, expected it to fail.\n");
|
||
Failed = TRUE;
|
||
}
|
||
|
||
if (Failed) {
|
||
return;
|
||
}
|
||
|
||
printf("Succeeded.\n");
|
||
|
||
|
||
//
|
||
// AbortSystemShutdown (Unicode)
|
||
//
|
||
|
||
|
||
|
||
printf("Test AbortSystemShutdown (Unicode)...");
|
||
|
||
|
||
Result = AbortSystemShutdownW(
|
||
pUnicodeMachineName
|
||
);
|
||
|
||
if (Result == FALSE) {
|
||
|
||
Error = GetLastError();
|
||
|
||
if (Error != ERROR_CALL_NOT_IMPLEMENTED) {
|
||
|
||
printf("Failed.\n");
|
||
printf("Call failed as expected but last error is incorrect\n");
|
||
printf("LastError() returned %d, expected %d\n", Error, ERROR_CALL_NOT_IMPLEMENTED);
|
||
Failed = TRUE;
|
||
}
|
||
|
||
} else {
|
||
printf("Failed.\n");
|
||
printf("Call succeeded, expected it to fail.\n");
|
||
Failed = TRUE;
|
||
}
|
||
|
||
if (Failed) {
|
||
return;
|
||
}
|
||
|
||
printf("Succeeded.\n");
|
||
|
||
return;
|
||
|
||
|
||
UNREFERENCED_PARAMETER(argc);
|
||
}
|