2009-01-31

svn portable

Apache 集成 Subversion 的Win32便携式版本。
用做个人的版本管理之用。

集成环境为:
Apache 2.2.9
PHP 5.2.6
Subversion 1.5.5

默认解压到 D:/ 下运行里面的 install.bat 就能用了。
若解压到其它地方修改 D:\svn\svn-win32-1.5.5\conf\httpd.conf 中的 ServerRoot 到正确的位置。
默认项目数据保存在 D:\svn\svn-win32-1.5.5\svn_data 中。
(注:会注册服务 Apache2.2 ,若以前安装有 Apache2.2 就会安装失败。)
运行 start.bat 启动
(注:启动HTTP服务会用 80 端口,若被占用 则启动失败,在 D:\svn\svn-win32-1.5.5\conf\httpd.conf 中修改。)
运行 uninstall.bat 卸载。


访问 http://localhost/ 可以进行简单的管理:
创建、删除 项目
创建、删除 帐号、修改帐号密码

修改帐号访问权限现在还是需要自己修改文件
D:\svn\svn-win32-1.5.5\conf\svn\authz

文件下载:svn_portable.zip

// EOF Read More...

2009-01-21

在程序中处理设备的热插拔通知

注册 WM_DEVICECHANGE 事件,但还不够。
仅注册该事件则仅仅只会收到 DBT_DEVNODES_CHANGED 通知(包括光驱的弹出、收入,网络的通断等都会触发该事件)。
所以还需要用 RegisterDeviceNotification() 注册相应的设备通知。

HDEVNOTIFY RegisterDeviceNotification(
  IN HANDLE hRecipient,  // 注册 WM_DEVICECHANGE 事件的窗口或Service句柄
  IN LPVOID NotificationFilter, // DEV_BROADCAST_DEVICEINTERFACE 结构
  IN DWORD Flags
);

BOOL UnregisterDeviceNotification(
  IN HDEVNOTIFY Handle  // RegisterDeviceNotification() 返回的那个Handle
);
在 DEV_BROADCAST_DEVICEINTERFACE 结构里有个 dbcc_classguid 为需要监听的设备 GUID。
MSDN 上说 RegisterDeviceNotification() 的 Flags 加上 DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 后可以不要GUID 但我这里似乎 不能不要GUID~~ RegisterDeviceNotification() 时失败说 “Bad Data!”~ 不知道是怎么回事,也许没用对吧。

参考:
http://www.microsoft.com/whdc/Driver/tips/PnPUmNotif.mspx
http://msdn.microsoft.com/en-us/library/aa363211(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa363431(VS.85).aspx


另外,在 Linux 上的热插拔通知 可用 udev, HAL, D-BUS。

//EOF Read More...