Sep 19 2011

手动创建 /dev/null 和 /dev/zero

Category: 技术ssmax @ 17:28:09

某些vps会屏蔽了/dev/null 和/dev/zero 两个很有用的设备,我们可以通过mknod的方法手动创建它们


mknod /dev/zero c 1 5

mknod /dev/null c 1 3



后面两个数字会有一些 区别,具体含义等以后再查下文档才清楚,呵呵。


linux 的major.h


#define UNNAMED_MAJOR           0
#define MEM_MAJOR               1
#define RAMDISK_MAJOR           1
#define FLOPPY_MAJOR            2
#define PTY_MASTER_MAJOR        2
#define IDE0_MAJOR              3

The best overview of all the major and minor numbers is in the /usr/src/linux/Documentation directory. The devices.txt is considered the “authoritative” source for this information.


Sep 19 2011

How do I debug a failed device install or disable?

Category: 技术ssmax @ 13:33:03

记录一下,回家要检查一下那个direct input 手柄不能用的问题,很诡异,别的机器可以,就一台不行,还有显示器的前置usb hub也突然不行了,诡异啊诡异。


When debugging a failed device install, one of the first things you should do is look at the %windir%\setup*.log files (yes files, there are a few of them and the names changed in Vista).  But what if the logs do not have enough information for you to figure out what went wrong?  Well, SetupAPI lets you control the level of logging.  This MSDN article explains what registry value to edit and what the different flags do.

If you don’t like reading the docs or changing registry values, OSR line has a GUI tool which you can download which makes setting these values painless.

As with any control being cranked up to its highest setting, you will get a lot of information, so be prepared to parse through some noise to get to the data you really want.

Debugging a failed device install or disable can be tough.  The error could be hidden in the depths of the system and it might take awhile to figure it out.  The error code on the device might be of some help, but it is not always clear.  For instance, you might get a code 10 for a failed start which means that the driver failed the pnp start irp…but that doesn’t tell you why thedriver failed the request in the first place.  The error text in the add new/upgrade hardware wizard is pretty vague as well.

So what’s a developer to do?  Where do you start?  Well, you should check the setup logs.  These logs exist on all versions of windows, starting with Windows 2000:

  • %windir%\setupapi.log
  • %windir%\setupact.log
  • %windir%\setuperr.log

In Windows Vista, there are 2 additional log files

  • %windir%\inf\
  • %windir%\inf\

Finally, if you are installing a KMDF driver, the KMDF coinstaller writes out errors to setupact.log.  There are also KMDF logs (depending on the version you installed):

  • %windir%\wdf01000inst.log
  • %windir%\wdf01001inst.log
  • %windir%\wdf01005inst.log

If these logs do not have information in them, turn on verbose setup logging (I wrote about how to do this previously) and retry the installation.  If the log files still do not indicate what is wrong, you have to use the error codes to start digging around…