Các chương trình quản lý phòng máy hiện nay ở Việt Nam - 6 - Pdf 20



126
3.5 Tương tác hệ thống – Điều khiển các dịch vụ có trên hệ
thống:
Trong quá trình thực hiện phần mềm, có một yêu cầu quản trị hệ thống là
người quản trị muốn biết tại thời điểm hiện tại, máy khách đang hoạt động những
dịch vụ (service) gì. Người quản trị có thể xem danh sách các dịch vụ đó, đồng thời
có thể thay đổi bằng cách thêm (mở một dịch vụ mới), bớt (tắt một dịch vụ
đang
chạy). Yêu cầu này đòi hỏi cần phải tìm hiểu cơ chế quản lý dịch vụ trong hệ điều
hành Windows.
3.5.1 Dịch vụ
3.5.1.1 Khái niệm:
Ứng dụng có khả năng hoạt động trong một khỏang thời gian dài trong một
session của hệ điều hành Windows được gọi là dịch vụ. Các dịch vụ có thể tự động
chạy lên mỗi khi máy khởi động, có thể dừng và khởi động lại, và không đưa ra
giao diện với người dùng. Dịch vụ thường được sử dụng trên server hoặc bất cứ
máy nào cần các tính năng hoạt
động lâu dài nhưng không cần can thiệp bởi người
dùng.
3.5.1.2 Loại dịch vụ:
Ta không đi quá sâu vào các dịch vụ cấp thấp. Ta chỉ quan tâm các dịch vụ
dạng ứng dụng chạy là 2 loại Win32OwnProcess và Win32ShareProcess.
3.5.1.3 Vòng đời của dịch vụ:
Một dịch vụ trải qua nhiều trạng thái trong vòng đời hoạt động của nó. Trước
hết, dịch vụ được cài đặt trong hệ thống mà nó sẽ chạy. Quá trình này thực thi bộ
cài đặt của dịch vụ và nạp dịch vụ vào trong Service Control Manager (Bộ Quản lý
Điều khiển Dịch vụ). Service Control Manager là một công cụ do hệ điều hành
Windows cung cấp để quản trị các dịch vụ.


Manager. Đây là cách chung nhất, và có vẻ là cách khả thi duy nhất trên Visual C++
do VC++ 6.0 không hỗ trợ về truy xuất liên quan đến dịch vụ. 128
3.5.2.1 Các hàm API sử dụng :
3.5.2.1.1 OpenSCManager:
Chức năng : thiết lập kết nối đến Service Control Manager trên máy tính và
mở cơ sở dữ liệu của Service Control Manager.
SC_HANDLE OpenSCManager(
LPCTSTR lpMachineName,
LPCTSTR lpDatabaseName,
DWORD dwDesiredAccess
);
Ý nghĩa tham sô:
[in]
lpMachineName : tên máy tính. Nếu là NULL, sẽ mở chính máy tính cục
bộ này.
lpDatabaseName : tên của cơ sở dữ liệu Service Control Manager cần được
mở.
dwDesiredAccess : quyền truy cập mong muốn, xem chi tiết trong MSDN
về các quyền truy cập.
Giá trị trả về:
[out]
Nếu thành công, trả về handle của cơ sở dữ liệu Service Control Manager
được mở.
Nếu thất bại, trả về NULL. . Để bi
ết lỗi, gọi GetLastError.
3.5.2.1.2 EnumServicesStatus
Chức năng: đếm và lấy thông tin về các dịch vụ trong một cơ sở dữ liệu

typedef struct _SERVICE_STATUS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode; 130
DWORD dwCheckPoint;
DWORD dwWaitHint;
} SERVICE_STATUS, *LPSERVICE_STATUS;
dwServiceType : loại dịch vụ.
dwCurrentState :
Giá trị Ý nghĩa
SERVICE_CONTINUE_PENDING Tiếp tục chuyển.
SERVICE_PAUSE_PENDING Chuyển ngưng.
SERVICE_PAUSED Dịch vụ ngưng.
SERVICE_RUNNING Dịch vụ đang chạy.
SERVICE_START_PENDING Dịch vụ đang khởi động.
SERVICE_STOP_PENDING Dịch vụ đang dừng.
SERVICE_STOPPED Dịch vụ dừng hẳn.
Bảng 3-6 Tình trạng hiện tại
dwControlsAccepted
Mã điều khiển Ý nghĩa
SERVICE_ACCEPT_NETBINDCHANGE
Dịch vụ là m
ột thành phần mạng
chấp nhận thay đổi trong
binding mà không cần dừng hay

l
ại.
Giá trị trả về:
[out]
Nếu thành công, trả về khác 0.
Nếu thất bại, trả về 0. Để biết lỗi, gọi GetLastError.
3.5.2.1.3 OpenService
Chức năng: mở một dịch vụ có sẵn.
SC_HANDLE OpenService(
SC_HANDLE hSCManager,
LPCTSTR lpServiceName,
DWORD dwDesiredAccess 132
);
Ý nghĩa tham số
[in]
hSCManager : handle của một cơ sở dữ liệu Service Control Manager được
mở. Hàm OpenSCManager trả về handle này.
lpServiceName : tên của service được mở, tên này không dài quá 256 ký tự.
Cơ sở dữ liệu Service Control Manager phân biệc chữ hoa chữ thường, nhưng so
sánh tên của các dịch vụ thì không. Các ký tự “/” và “\” đều không dùng cho tên của
dịch vụ.
dwDesiredAccess : quyền truy cập dịch vụ mong muốn.
Giá trị trả v

[out]
Nếu thành công, trả về handle của dịch vụ được mở.
Nếu thất bại, trả về NULL. Để biết lỗi, gọi GetLastError.

dwControl : mã điều khiển.
lpServiceStatus: trỏ đến cấu trúc SERVICE_STATUS nhận thông tin tình
trạng mới nhất của dịch vụ, xem thêm 3.5.2.12 EnumServicesStatus để biết thêm
về cấu trúc.
Giá trị trả về:
[out]
Nếu thành công, trả về khác 0.
Nếu thất bại, trả về
0. Để biết lỗi, gọi GetLastError.
3.5.2.1.6 ChangeServiceConfig:
Chức năng : thay đổi các tham số cấu hình của dịch vụ.
BOOL ChangeServiceConfig(
SC_HANDLE hService,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl, 134
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCTSTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword,
LPCTSTR lpDisplayName
);
Ý nghĩa tham số
[in]
hService : handle dịch vụ đã mở bằng OpenService hay CreateService

hSCObject : handle được mở cho cơ sở dữ liệu Service Control Manager
hay đối tượng dịch vụ cần đóng.
Giá trị trả về:
[out]
Nếu thành công, trả về khác 0.
Nếu thất bại, trả về 0. Để biết lỗi, gọi GetLastError.
3.5.2.2 Cài đặt :
Dựa vào các hàm API nêu ở 3.5.1, ta sẽ thực hiện các cài đặt
3.5.2.2.1 Xem danh sách các dịch vụ :
Các công việc cần làm:
o Mở cơ sở dữ liệu SERVICES_ACTIVE_DATABASE của Service Control
Manager.
o Lấy danh sách các dịch vụ.
o Đóng cơ sở dữ liệu lại.
Hàm cài đặt
BOOL CTaskMgr::GetServiceList(ENUM_SERVICE_STATUS* &pSrvList,
DWORD& nCount)
Có lưu ý cho hàm GetServiceBufferSizeNeeded. Hàm cài đặt này
có tác dụng trả về số byte th
ực sự cần để lưu các thông tin về các dịch vụ. 136

Hình 3-14 Xem danh sách các dịch vụ
3.5.2.2.2 Đổi trạng thái khởi động của dịch vụ :
Thực hiện các công việc sau:
o Mở cơ sở dữ liệu Service Control Manager.
o Mở dịch vụ
o Thay đổi trạng thái khởi động là SERVICE_AUTO_START hay


Hình 3-16 Khởi động / tắt dịch vụ
Hoàn tất yêu cầu ban đầu.
Chương 4 Các công nghệ :
Trong ba công nghệ truyền hình ảnh, âm thanh chúng em đã nghiên cứu và
trình bày trong chương này đều có những ưu và nhược điểm riêng:
RFB H323 Windows Media
Encoder (WME)
Ưu điểm Giải quyết triệt để
vấn đề quan sát màn
hình từ xa vì nghi
thức giao tiếp với
hai đầu cuối là là
vùng đệm khung cho
màn hình. Nghi thức
mã nguồn mở, hỗ trợ
đa nền.
Khả năng ứng dụng
rộng rãi trên nhiều hệ
điều hành khác nhau.
Với khả năng tích hợp
mạnh mẽ, H323 có thể
hỗ trợ nhiều công nghệ
truyền hình
ảnh âm
thanh khác nhau
(H261, H263…). Công
nghệ mã nguồn mở.
Là một bộ phát
triển phần mềm của

hệ điều hành
Windows các phiên
bản mới thì hỗ trợ
hiệu quả cho
WME).
Bảng 4-1 So sánh các công nghệ nghiên cứu

Qua các sơ lược về ưu khuyết điểm trên, chúng em chọn nghi thức RFB để
thực hiện việc cài đặt, hai công nghệ còn lại chỉ dừng ở mức tìm hiểu và nghiên
cứu.
4.1 RFB
4.1.1 Giới thiệu:
RFB (“remote framebuffer”) là một nghi thức đơn giản để truy xuất đến giao
diện người dùng đồ họa. Vì nó làm việc ở mức vùng đệm khung, nghi thức
tương thích với mọi ứng dụng và hệ thống theo dạng “cửa sổ”, gồm cả X11,
Window.
Đầu cuối ở xa là nơi người dùng sử dụng (chẳng hạn màn hình kèm bàn
phím và có hay không chuột) được gọi là RFB client. Đầu cuối nơi những thay
đổi trên vùng đệ
m khung phát sinh (chẳng hạn các ứng dụng và hệ thống dạng
“cửa sổ”) gọi là RFB server. 140

Hình 4-1 Giới thiệu nghi thức RFB
RFB là nghi thức dành cho thin client. Điều đáng lưu ý trong thiết kế nghi
thức RFB là có rất ít yêu cầu về hệ thống cho client. Do đó, client có thể chạy
trên hầu hết các loại phần cứng khác nhau, công việc cài đặt, xây dựng client
càng đơn giản càng tốt.

Nghi thức cập nhật được điều khiển bởi người dùng. Có nghĩa là, một cập
nhật chỉ gởi từ một server đến một client để đáp ứng một yêu cầu rõ ràng từ phía
người dùng. Điều này cho phép nghi thức có thay đổ
i tùy nghi về chất lượng
truyền. Client và đường mạng càng chậm, tần suất cập nhật càng thấp. Với các
ứng dụng điển hình, những thay đổi trên cùng một vùng của vùng đệm khung
thường có khynh hướng xảy ra ngay lần lượt. Với một client chậm và/hay một
đường mạng chậm, các trạng thái thay đổi nhanh có thể bỏ qua, đưa đến kết quả
là có ít lưu thông mạng hơn và có ít đường vẽ trên client hơn.
4.1.3 Nghi th
ức nhập thông tin:
Phần nhập của nghi thức dựa trên mô hình máy trạm chuẩn gồm một bàn
phím và một thiết bị trỏ đa nút (thông thường là chuột). Các sự kiện nhập chỉ
đơn giản gởi cho server từ client khi người dùng nhấn phím hoặc nút trỏ, hay bất
cứ khi nào thiết bị trỏ di chuyển. Các sự kiện đầu vào cũng có thể tổng hợp từ
các thiết bị nhập/xuất không chu
ẩn. Ví dụ, một dụng cụ nhận dạng chữ viết tay
dạng cây viết có thể phát sinh các sự kiện bàn phím.
4.1.4 Trình bày dữ liệu điểm ảnh:
Giao tiếp ban đầu của RFB client và server liên quan đến một quá trình thỏa
thuận về định dạng và mã hóa cho dữ liệu điểm ảnh sẽ gởi. Quá trình thỏa thuận
này được thiết kế nhằm mục đích cho họat động xử lý ở
client càng dễ dàng
càng tốt. Điều lưu ý là server phải luôn có thể đáp ứng mọi định dạng mà người 142
dùng mong muốn. Tuy nhiên client có thể tùy nghi với nhiều dạng và mã hóa
khác nhau, nó có thể chọn dạng mà dễ dàng cho server xử lý hơn.
Định dạng điểm ảnh là việc trình bày các màu riêng biệt của các giá trị điểm

Nghi thức RFB có thể họat động trên mọi tầng vận chuyển tin cậy, dựa trên
luồng byte hay thông điệp. Có hai phần trong nghi thức, một pha bắt tay khởi
tạo theo sau một giao tiếp nghi thức thông thường.
Bắt tay khởi tạo bao gồm các thông điệp về Phiên bản Nghi thức, Bảo mật,
Khởi tạo bên Client và Khởi tạo bên Server, sẽ được mô tả sau. Chú ý c
ả server
và client đều gởi thông điệp Phiên bản Nghi thức.
Nghi thức tiến hành trong phần giao tiếp thông thường sau thông điệp Khởi
tạo bên Server. Ở phần này, client có thể gởi bất cứ thông điệp nào mà nó muốn,
và có thể nhận được những thông điệp kết quả từ server. Mọi thông điệp đó đều
bắt đầu bằng một byte loại thông điệ
p, theo sau là dữ liệu.
Bảng mô tả thông điệp sau đây sử dụng các dạng dữ liệu cơ bản U8, U16,
U32, S8, S16, S32. Chúng đại diện lần lượt cho dữ liệu số nguyên không dấu 8,
16 và 32 bit và số nguyên có dấu 8, 16, 32 bit. Mọi số nguyên dạng nhiều byte
(không tính giá trị điểm ảnh) đều theo thứ tự lớn trước nhỏ sau (bit càng ở đầu
càng có giá trị).
Kiểu dữ liệu PIXEL được xây dự
ng hiển thị gía trị điểm ảnh của các byte
dạng byte cho mỗi điểm ảnh (bytePerPixel), trong đó 8x bytePerPixel là số bit
mỗi điểm ảnh (bits-per-pixel) thỏa thuận bởi client và server hoặc trong thông
điệp Khởi tạo bên Server hay thông điệp Đặt Định dạng Điểm ảnh
4.1.6.1 Các thông điệp bắt tay khởi tạo
4.1.6.1.1 ProtocolVersion
Quá trình bắt tay bắt đầu khi server gởi cho client thông điệp
ProtocolVersion. Thông điệp này báo cho client biết số phiên bản nghi thức RFB
cao nhất mà server hỗ trợ. Client sau đó sẽ hồi đáp với một thông điệp tương tự cho
biết số phiên bản nghi thức sẽ dùng (có thể khác với số server đưa). Client không
bao giờ yêu cầu phiên bản nghi thức cao hơn số server nêu. Cả server và client đều
có thể hỗ trợ tương thích ng

Mô tả
1
số các dạng bảo mật
U8
Mảng U8
Số các dạng bảo mật
Các dạng bảo mật
Nếu server đưa danh sách có ít nhất một dạng được client hỗ trợ, client gởi
trả một byte đơn cho biết dạng bảo mật nào được dùng khi kết nối :
Số byte Type [Giá
trị]
Mô tả 145
1 U8 Dạng bảo mật
Nếu số dạng bảo mật bằng 0, sau đó vì một lý do nào đó kết nối thất bại (e.g
server không thể hỗ trợ phiên bản được yêu cầu). Việc này sẽ tạo ra một chuỗi mô
tả lý do (với số độ dài cho biết chuỗi kèm sau dài bao nhiêu).
Số byte Type [Giá
trị]
Mô tả
4
Độ dài chuỗi
U32
Mảng U8
Độ dài chuỗi lý do
Chuỗi lý do
Server đóng kết nối sau khi gởi chuỗi lý do.
Phiên bản 3.3 tíếp Server quyết định dạng bảo mật và gởi một word đơn:

ởi một word ể thông báo client quá trình bắt tay bảo mật ã thành
công hay chưa.
Số byte Type [Giá
trị]
Mô tả
4 U32
0
1
Trạng thái:
OK
thất bại
Nếu thành công, nghi thức tiếp tục với thông điệp ClientInitialisation.
Phiên bản 3.8 tiếp Nếu không thành công, server gởi chuỗi mô tả lý do thất bại, và
sau đó đóng kết nối:
Số byte Type [Giá
trị]
Mô tả
4
Độ dài chuỗi
U32
Mảng U8
Độ dài chuỗi lý do
Chuỗi lý do
Phiên bản 3.3 và 3.7 Nếu không thành công, server đóng kết nối.
4.1.6.1.4 ClientInitialisation
Khi client và server đã vui vẻ sẵn sàng nói chuyện với nhau theo dạng bảo
mật đã thỏa thuận, client gởi một thông điệp khởi tạo:
Số byte Type [Giá
trị]
Mô tả

trị]
Mô tả
1
1
1
1
2
2
2
1
1
1
3
U8
U8
U8
U8
U16
U16
U16
U8
U8
U8
số bit mỗi điểm ảnh
độ sâu màu
cờ big-endian
cờ true-color
red-max
green-max
blue-max

tiếp lấy từ cường độ đỏ, xanh lá và xanh dương, nhưng được biểu thị chỉ rõ trong
bản đồ màu. Các mục trong bản đồ màu
được server thiết lập dùng thông điệp
SetColourMapEntries (phần 4.3.6.4.2).
4.1.6.2 Các dạng bảo mật
4.1.6.2.1 None
Không cần chứng thực và dữ liệu nghi thức gởi không mã hóa.
Phiên bản 3.8 tiếp Nghi thức tiếp tục với thông điệp SecurityResult.
Phiên bản 3.3 và 3.7 Nghi thức tiếp tục với thông điệp ClientInitialisation.
4.1.6.2.2 Chứng thực VNC 149
Chứng thực VNC được dùng và dữ liệu nghi thức gởi không mã hóa. Server
gởi một giá trị thử 16 byte ngẫu nhiên:

Số byte Type [Giá
trị]
Mô tả
16 U16 thử
Client mã hóa giá trị thử với DES, dùng mật mã được người dùng cung cấp
là khóa, và gởi trả hồi đáp 16 byte:
Số byte Type [Giá
trị]
Mô tả
16 U16 hồi đáp
Nghi thức tiếp tục với thông điệp SecurityResult.
4.1.6.3 Các thông điệp gởi từ client tới server
4.1.6.3.1 SetPixelFormat
Thiết lập định dạng mà giá trị điểm ảnh sẽ gởi trong những thông điệp

2
2
2
1
1
1
3
U8
U8
U8
U8
U16
U16
U16
U8
U8
U8
số bit mỗi điểm ảnh
độ sâu màu
cờ big-endian
cờ true-color
red-max
green-max
blue-max
red-shift
green-shift
blue-shift
độn
4.1.6.3.2 FixColourMapEntries
Thông điệp này không còn được dùng. Trước đây nó là một dạng thông điệp.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status