

			g̗JThCo


1. RpC@

	Windows 200 DDK  Visual C++ 6.0  build [eBeB
	păRpC܂B

	> cd mayu\d
	> build
	> cd nt4
	> build

	mayud.sys  %windir%\system32\drivers\ փRs[ test.reg 
	͂΁A蓮ŃfoCX on/off ł܂B( Windows
	NT4.0 ̏ꍇ mayudnt4.sys  mayud.sys ƂOŃRs[)


2. g

	mayud 𓮍삳

	      \\.\MayuDetour1

	ƂfoCXł܂B̃foCX GENERIC_READ |
	GENERIC_WRITE ŊJ܂B

	ReadFile / WriteFile ł́Aȉ̍\̂g܂BfoCX
	JƂɁAReadFile ƃ[U[͂L[擾ł
	܂BWriteFile ƃ[UL[͂̂悤 
	Windows 𑀍삷邱Ƃł܂B

	struct KEYBOARD_INPUT_DATA
	{
	  enum { BREAK = 1,
		 E0 = 2, E1 = 4,
		 TERMSRV_SET_LED = 8 };
	  enum { KEYBOARD_OVERRUN_MAKE_CODE = 0xFF };
	  
	  USHORT UnitId;
	  USHORT MakeCode;
	  USHORT Flags;	
	  USHORT Reserved;
	  ULONG ExtraInformation;
	};

	UnitId  Reserved ͏ 0 łBExtraInformation ɒlݒ
	ƁAWM_KEYDOWN Ȃǂ̃bZ[W 
	GetMessageExtraInfo() API ł̒l擾邱Ƃł܂B
	MakeCode ̓L[{[h̃XLR[hłBFlags  BREAK, E0,
	E1, TERMSRV_SET_LED gݍ킳Ă܂BBREAK ̓L[𗣂
	ƂAE0  E1 ͊gL[Ƃɐݒ肳܂B


3. oO

	* ReadFile  ERROR_OPERATION_ABORTED Ŏsꍇx 
	  ReadFile Kv܂B

	* ̃Xbh mayud foCX read 
	  MULTIPLE_IRP_COMPLETE_REQUESTS (0x44) ŗ邱Ƃ悤
	  łBČ͕sB

	* ReadFile ƃ[U[͂܂ŉiɋAĂ܂B
	  NT4.0 ȂΕʃXbh CancelIo 邱Ƃ ReadFile L
	  Z邱Ƃł܂AWindows 2000 ł͕@܂
	  B

	* PnP ͍lĂ܂B܂AL[{[h藣
	  ƂǂȂ邩킩܂B

	* L[{[hȏ゠ƂłAfoCX͈ł܂
	  B
