Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
2.4 KiB

  1. TITLE DISKIO
  2. include kernel.inc
  3. externFP Int21Handler
  4. sBegin CODE
  5. ASSUMES CS,CODE
  6. externNP MyAnsiToOem
  7. cProc I_lopen,<PUBLIC,FAR>
  8. ; parmD lpFilename
  9. ; parmW mode
  10. ; localV OemBuffer,128
  11. cBegin nogen
  12. mov ch,3Dh ; Open File
  13. jmps loccommon
  14. cEnd nogen
  15. cProc I_lcreat,<PUBLIC,FAR>
  16. ; parmD lpFilename
  17. ; parmW attributes
  18. ; localV OemBuffer,128
  19. cBegin nogen
  20. mov ch,3Ch ; Create File
  21. cEnd nogen
  22. errn$ loccommon
  23. cProc loccommon,<PUBLIC,FAR>
  24. parmD lpFilename
  25. parmW attributes
  26. localV OemBuffer,128
  27. cBegin
  28. ; Common code for open and creat functions. CH = function code
  29. push cx
  30. lea bx, OemBuffer
  31. cCall MyAnsiToOem,<lpFilename,ss,bx>
  32. pop cx
  33. mov cl, byte ptr attributes
  34. mov ax,cx
  35. xor ch,ch
  36. smov ds, ss
  37. lea dx, OemBuffer
  38. DOSCALL
  39. jnc lopen_ok
  40. mov ax,-1
  41. lopen_ok:
  42. cEnd
  43. cProc I_lclose,<PUBLIC,FAR>
  44. ; parmW fd
  45. cBegin nogen
  46. mov bx,sp
  47. mov bx,ss:[bx+4]
  48. mov ah,3Eh ; DOS file close function
  49. DOSCALL
  50. mov ax,-1
  51. jc lclose_end
  52. inc ax
  53. lclose_end:
  54. ret 2
  55. cEnd nogen
  56. cProc I_llseek,<PUBLIC,FAR>
  57. ; parmW fh
  58. ; parmD fileOffset
  59. ; parmW mode
  60. cBegin nogen
  61. mov bx,sp
  62. mov dx,ss:[bx+6]
  63. mov cx,ss:[bx+8]
  64. mov ax,ss:[bx+4]
  65. mov bx,ss:[bx+10]
  66. mov ah,42h
  67. DOSCALL
  68. jnc lseek_ok
  69. mov ax,-1
  70. cwd ; must return a long
  71. lseek_ok:
  72. ret 8
  73. cEnd nogen
  74. cProc I_lwrite,<PUBLIC,FAR>
  75. ; parmW fh
  76. ; parmD lpBuf
  77. ; parmW bufsize
  78. cBegin nogen
  79. mov cl,40h
  80. jmp short _lrw
  81. cEnd nogen
  82. cProc I_lread,<PUBLIC,FAR>
  83. ; parmW fh
  84. ; parmD lpBuf
  85. ; parmW bufsize
  86. cBegin nogen
  87. mov cl,3fh
  88. errn$ _lrw
  89. cEnd nogen
  90. ; Common code for read and write functions. CL = function code
  91. cProc _lrw,<PUBLIC,FAR>
  92. cBegin nogen
  93. mov bx,sp
  94. push ds
  95. mov ah,cl ; read or write operation
  96. mov cx,ss:[bx+4] ; bufSize
  97. lds dx,DWORD PTR ss:[bx+6] ; lpBuf
  98. mov bx,ss:[bx+10] ; fh
  99. DOSCALL
  100. pop ds
  101. jnc lwrite_ok
  102. mov ax,-1
  103. lwrite_ok:
  104. ret 8
  105. cEnd nogen
  106. sEnd CODE
  107. end