| 前 的个人资料miss your eye照片日志列表 | 帮助 |
|
|
1月28日 hell boy屏上最近总播着hell boy 2的预告片,有个虽然丑陋却身手不凡武艺高强的家伙看上去很像汤姆克鲁斯。由于连续2周被洗刷眼球,roger说整得他很期待,引起了偶的共鸣,于是baixu去下载了hell boy 1。 看了没多会我就开始拖鼠标了,老外拍神话故事(叫鬼话故事更合适也许)也神神叨叨的,跟国产西游记一模两样的,真无奈啊,充斥着一些暴恶风格的不死潮湿怪兽,卵包,异形式出生的老怪boss,神经质般忠贞不二的帮凶,美女配野兽式的践踏种族主义的爱情观,配合命运可以自主,人民可以选择的崇高民主观念,无敌的善良的有着可爱滑稽尾巴的大恶魔和高贵的地狱魔神(其实是一群大章鱼)展开了一边倒的对决。(软体动物门头足纲的诸位生灵们哇哇大叫,罢工游行中……难怪2的预告片里大章鱼得以有机会象拉登一样随意破坏高楼大厦) 唉,删除、删除…… 无限期待hell boy 2 1月26日 散了的菩提把flash用dx render,没有预想的那么顺利,想当然的以为通过IViewObjectEx可以获得每帧更新的位图,细看之下却做不到,在msdn和google上探寻了半天蛛丝马迹未果,一时有些手足无措。 阳光在房里扫视了一天,只剩下东墙窗脚的淡淡一瞥了,我仍旧茫然,手腕上的菩提珠串却不知怎的蓦然断开,哗啦啦的散了一地,心里对自己说不要迷信,却还是小小的有那么一点不舒服,是有菩萨也镇不住的心魔了么? 索性放下手上的事,换了个舒服的姿势坐着。自己仍然记得那么多幼年时的细节,感受,象是烙印一样留着,只是在眼角掠过也觉得可怕,但也依然健忘,不久前翻阅的那些旧日信笺,看着那些在记忆中无处可寻的美好,又几乎无法判断出是真是假。已经记不清坚持的理由出自哪里,甚至说不清楚这份执拗是为了什么,也许过了这片迷雾,就剩下彻底的随波逐流。 这2年过得令我惊异的快,还来不及写下昨天的日记,今天就已经日暮西山了,当年的我自信的说不轻易承诺,今天的我悲哀的发现作不出任何承诺,我象是留在了昨天,走入了灵魂的黑夜,我知道骄傲的黎明不会自己找上门来,却赌气似的不愿走出来,我是如此那般的不愿离去,而时间毫无偏袒,就这么把我撕扯开来。 我的文字,多么可怕的东西,伤人一万,自损三千,而别人的文字就总是那么美好。 Many nights we pray There can be miracles, when you believe Easy to despair, There can be miracles, when you believe They don’t always happen when you ask 1月25日 无nvram设备时如何读写bios设置实际和nvram实现是相同的,都是读写ioport 0x70,0x71,在user space打开ioperm (0x70, 2, 1),执行用户需要CAP_SYS_RAWIO权限。 bios设置的起始位置和nvram并不是一致的,如下: * BIOS setting start offset - read from port 0x70 - 0 0x30开始每个厂商都不同,大致上是实际的bios设置和一个checksum,我通过更改一些配置组合并比较,找到了via某个板子的规律,利用winhex可以很方便的尝试checksum16的计算,当然也要碰碰运气。 unsigned short viac3_calc_checksum() chksum = 0; 判断网卡是否连接网线(linux)很简单,只要网卡驱动支持ethtool glink命令 int netfd = socket (AF_INET, SOCK_DGRAM, 0); memset (&ifr, 0, sizeof (ifr)); strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name) - 1); if (ioctl (netfd, SIOCETHTOOL, &ifr) == -1) ENDP: if(netfd != -1) return ret_val; 1月21日 flash播放控件最近开始做actionscript,说实话,我对这些东西提不起什么兴趣,不由自主的就分散注意力到一些乱七八糟的东西上。
adobe提供的swf播放插件对于不同的浏览器有不同的实现,对于ff来说,是个netscape的插件,之前我们已经能在linux上通过一些手段在没有ff的环境下播放swf了,由此我对ie插件也产生了一些兴趣,前几天看了看bho,也弄了一个监控请求的小工具,不过adobe的ie flashplayer是个ocx控件,和bho有所不同,我看网上看到有导入ocx简单实现的播放例子,拿来看了一下,可以播放简单的swf,但是对于需要加载外部资源的swf就无能为力了。
调试看了一下,queryinterface里有对于IServiceProvider的请求,于是我增加了IServiceProvider的实现,之后在QueryService里看到了对IHTMLWindow2和IBindHost的请求,一时不知道从何下手,翻了翻msdn,感觉用不着IHTMLWindow2,似乎是用来处理mshtml的,再看IBindHost,有个CreateMoniker的方法,折腾bho的时候跟URLMoniker混了个眼熟,怎么都像是这个了,于是立马实现IBindHost。
再调试,在CreateMoniker里看到第一个参数就是swf文件url,我心里觉得这么有戏,就用CreateURLMoniker创建一个IMoniker的实例,猜想这样在IBindHost::MonikerBindToStorage或者IBindHost::MonikerBindToObject里就应该可以绑定文件到Moniker了吧。结果这两个方法完全没有被调用,莫非得自己实现IMoniker么?
对于该怎样实现一个IMoniker,我完全没有头绪,google到的信息也很少,看到有人说需要实现IBinding,并且提到flashocx实际上只用了IMoniker::BindToStorage,需要在IBindStatusCallBack::OnStartBinding时将实现的IBinding传入,再创建IStream实例,通过IBindStatusCallBack::OnDataAvailable传给IMoniker……
理论的确就是上述这两句,不过实践却搏斗了好几天,在BindToStorage时,已经有一个IBindStatusCallback实例被注册了,通过一个未公开的方式(IBindCtx::GetObjectParam(L"_BSCB_Holder_", &out),out->QueryInterface(IID_IBindStatusCallback))可以获取到,我总是想偷懒把这个IBindStatusCallBack绑定到现成的URLDownloadXXX函数上,都失败了,假如不能这样做就很烦人,需要自己创建IStream,自己实现IBindStatusCallback,不管怎么说,我花了好几天想办法偷懒,结果有点得不偿失,另一种方式是RegisterBindStatusCallback注册自己实现的IBindStatusCallback,至少可以省了IStream,不过我还没试,现在用的方式是打开文件,GlobalAlloc创建一个buffer,将文件全部读入后,通过CreateStreamOnGlobal建立IStream实例,然后IBindStatusCallback::OnDataAvailable,如果文件是远程的,则用URLDownloadToCacheFile下载,而URLDownloadToCacheFile只调用IBindStatusCallback的OnProgress,不会调用OnDataAvailable,最后只好在OnProgress获得ENDDOWNLOAD通知时再次stream一次本地cache文件,无限丑陋的工作了。
最后浪费了一天的烂事是忘了把flash播放属性PutLoop(false),结果flash不断的发出获取外部资源的请求,却不绘制内容,我误以为Stream本地cache的方法失败,直到刚才…… 1月6日 开窍庄子说古时候北海的神叫儵,南海的神叫忽,中央的神叫浑沌。
儵和忽没事喜欢去浑沌那打牌聊天,浑沌呢一向都款待的特别好。
日子久了,哥儿俩打算报答报答浑沌,暗地里商量。
儵说:浑沌多好啊,就是缺点啥。
忽说:是啊,你瞧人人都有七窍,用来看听息食,可他没有,不如咱们给他开窍吧
于是一天开一窍……
过了七天,浑沌死了 1月2日 杀毒帮人杀毒几乎成了自己的一个副业,反反复复的。今天回到姐家,她的机器又不行了,屋里没有switcher,便从口袋里摸出根u盘,把一些工具弄过去,没料到那病毒还带自我防卫,工具们一运行就被灭了,看来要是想把这个副业办下去,还得自己打造工具,郁闷之中拔回u盘,却给自己的机器也染上了毒。还好机器上的fedora仍然健在,没进一步影响心情。
一天赛一天的烦闷,即便是回了家,也没半点消减。越来越不习惯家,也越来越觉得在外面呆够了,各种各样的反反复复,就是没有想要的。 |
|
|