ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/CCSFinger/CCSFinger.cpp
Revision: 594
Committed: 2005-11-27T17:04:53-08:00 (19 years, 6 months ago) by douglas
File size: 2535 byte(s)
Log Message:
Never mind that.

File Contents

# Content
1 // Douglas Thrift
2 //
3 // CCS Computer Science
4 //
5 // Windows Finger Daemon
6
7 #include <windows.h>
8 #include <tchar.h>
9
10 /*LPTSTR name;
11 SERVICE_STATUS status;
12 SERVICE_STATUS_HANDLE handle;
13 HANDLE stop;*/
14 WSADATA data;
15
16 /*void WINAPI FingerMain(DWORD argc, LPTSTR *argv);
17 void WINAPI FingerControl(DWORD control);*/
18
19 int _tmain(int argc, TCHAR *argv[])
20 {
21 /*SERVICE_TABLE_ENTRY entry[] = { { TEXT("CCS Finger Daemon"), LPSERVICE_MAIN_FUNCTION(FingerMain) }, { NULL, NULL } };
22
23 if (!StartServiceCtrlDispatcher(entry))
24 {
25 DWORD error(GetLastError());
26
27 switch (error)
28 {
29 case ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
30 std::cerr << "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT" << std::endl;
31
32 break;
33
34 case ERROR_INVALID_DATA:
35 std::cerr << "ERROR_INVALID_DATA" << std::endl;
36
37 break;
38
39 case ERROR_SERVICE_ALREADY_RUNNING:
40 std::cerr << "ERROR_SERVICE_ALREADY_RUNNING" << std::endl;
41
42 break;
43
44 default:
45 std::cerr << error << std::endl;
46 }
47
48 return 1;
49 }
50
51 return 0;
52 }
53
54 void WINAPI FingerMain(DWORD argc, LPTSTR *argv)
55 {
56 name = argv[0];
57 handle = RegisterServiceCtrlHandler(name, LPHANDLER_FUNCTION(FingerControl));
58 stop = CreateEvent(NULL, TRUE, FALSE, NULL);
59
60 //*/
61
62 WSAStartup(MAKEWORD(2, 0), &data);
63
64 //
65
66 /*status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
67 status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
68 status.dwServiceSpecificExitCode = 0;
69 status.dwCurrentState = SERVICE_RUNNING;
70 status.dwWin32ExitCode = NO_ERROR;
71 status.dwCheckPoint = 0;
72 status.dwWaitHint = 0;
73
74 SetServiceStatus(handle, &status);*/
75
76 SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
77 SOCKADDR_IN service;
78
79 service.sin_family = AF_INET;
80 service.sin_addr.s_addr = inet_addr("0.0.0.0");
81 service.sin_port = htons(79);
82
83 bind(sock, (SOCKADDR *)(&service), sizeof (service));
84 listen(sock, SOMAXCONN);
85
86 //while(/*WaitForSingleObject(stop, 1000) != WAIT_OBJECT_0*/ /*&&*/)
87 {
88 //
89 }
90
91 //
92
93 WSACleanup();
94
95 /*status.dwCurrentState = SERVICE_STOPPED;
96 status.dwWin32ExitCode = NO_ERROR;
97 status.dwCheckPoint = 0;
98 status.dwWaitHint = 0;
99
100 SetServiceStatus(handle, &status);
101 }
102
103 void WINAPI FingerControl(DWORD control)
104 {
105 switch (control)
106 {
107 case SERVICE_CONTROL_STOP:
108 case SERVICE_CONTROL_SHUTDOWN:
109 status.dwCurrentState = SERVICE_STOP_PENDING;
110
111 SetEvent(stop);
112
113 break;
114
115 case SERVICE_CONTROL_INTERROGATE:
116 break;
117 }
118
119 SetServiceStatus(handle, &status);*/
120
121 return 0;
122 }