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, 7 months ago) by douglas
File size: 2535 byte(s)
Log Message:
Never mind that.

File Contents

# User Rev Content
1 douglas 594 // 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     }