home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / kernex32.zip / mwdd_src.zip / 32bits / ext2-os2 / doc / mwdd32 / fsh32.im < prev    next >
Text File  |  1997-03-16  |  11KB  |  375 lines

  1. .*
  2. .* $Header: d:\\32bits\\ext2-os2\\doc\\mwdd32\\rcs\\fsh32.im,v 1.4 1997/03/15 17:13:14 Willm Exp $
  3. .*
  4.  
  5. .* 32 bits OS/2 device driver and IFS support. Provides 32 bits kernel 
  6. .* services (DevHelp) and utility functions to 32 bits OS/2 ring 0 code 
  7. .* (device drivers and installable file system drivers).
  8. .* Copyright (C) 1995, 1996, 1997  Matthieu WILLM (willm@ibm.net)
  9. .*
  10. .* This program is free software; you can redistribute it and/or modify
  11. .* it under the terms of the GNU General Public License as published by
  12. .* the Free Software Foundation; either version 2 of the License, or
  13. .* (at your option) any later version.
  14. .*
  15. .* This program is distributed in the hope that it will be useful,
  16. .* but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. .* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18. .* GNU General Public License for more details.
  19. .*
  20. .* You should have received a copy of the GNU General Public License
  21. .* along with this program; if not, write to the Free Software
  22. .* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  
  24.  
  25.  
  26. .nameit symbol=titre_1000 text='The FSH32 interface'
  27. .nameit symbol=titre_1001 text='fsh32_dovolio'
  28. .nameit symbol=titre_1002 text='fsh32_segalloc'
  29. .nameit symbol=titre_1003 text='fsh32_findduphvpb'
  30. .nameit symbol=titre_1004 text='fsh32_forcenoswap'
  31. .nameit symbol=titre_1005 text='fsh32_getvolparm'
  32. .nameit symbol=titre_1006 text='fsh32_addshare'
  33. .nameit symbol=titre_1007 text='fsh32_removeshare'
  34. .nameit symbol=titre_1008 text='fsh32_setvolume'
  35.  
  36. :h1.&titre_1000.
  37.  
  38. This chapter describes the 32 bits FSHelp interfaces provided by fsh32.lib.
  39. To use them from C code, you must include the following files &colon.
  40. :ul compact.
  41. :li.os2/types.h
  42. :li.os2/devhlp32.h
  43. :li.os2/fsh32.h
  44. :eul.
  45.  
  46. :p.
  47. This document is only intented to describe the 32 bits version of the FSHelp calls,
  48. it does NOT replace the :hp1.Installable File Systems for OS/2 version 3:ehp1. document. Please refer
  49. to that document for a more complete description of the FSHelp calls.
  50.  
  51. :nt.
  52. :ul compact.
  53. :li.Unless otherwise specified, ALL pointers are 32 bits FLAT pointers.
  54. :li.Unless ohterwise specified, ALL fsh32 routines follow the 32 bits SYSTEM calling convention (parameters pushed from right to left, caller cleans up the stack, EBP ESI EDI EBX and all segment registers are preserved, other are not)
  55. :eul.
  56. :ent.
  57.  
  58. :p.
  59. List of fsh32 routines &colon.
  60. :ul compact.
  61. :li.:link reftype=hd refid=1001.&titre_1001.:elink.
  62. :li.:link reftype=hd refid=1002.&titre_1002.:elink.
  63. :li.:link reftype=hd refid=1003.&titre_1003.:elink.
  64. :li.:link reftype=hd refid=1004.&titre_1004.:elink.
  65. :li.:link reftype=hd refid=1005.&titre_1005.:elink.
  66. :li.:link reftype=hd refid=1006.&titre_1006.:elink.
  67. :li.:link reftype=hd refid=1007.&titre_1007.:elink.
  68. :li.:link reftype=hd refid=1008.&titre_1008.:elink.
  69. :eul.
  70.  
  71. .*******************************************************************************
  72. .*** fsh32_dovolio                                                           ***
  73. .*******************************************************************************
  74.  
  75. :h2 id=1001.&titre_1001.
  76.  
  77. :p.
  78. Issues a sector based I/O operation.
  79.  
  80. :xmp.
  81. int FSH32ENTRY fsh32_dovolio(
  82.                    int operation,               /* ebp + 8  */
  83.                    int fAllowed,                /* ebp + 12 */
  84.                    int hVPB,                    /* ebp + 16 */
  85.                    void *pData,                 /* ebp + 20 */
  86.                    unsigned long *pcSec,        /* ebp + 24 */
  87.                    unsigned long  iSec          /* ebp + 28 */
  88.                   );
  89. :exmp.
  90.  
  91.  
  92. :p.Parameters description &colon.
  93.  
  94. :table cols='20 10 45' frame=box rules=both.
  95. :row.
  96. :c.Parameter type
  97. :c.Input Output
  98. :c.Description
  99. :row.
  100. :c.int operation
  101. :c.input
  102. :c.type of I/O (cf Installable File Systems for OS/2 version 3).
  103. :row.
  104. :c.int fAllowed
  105. :c.input
  106. :c.Allowed actions the kernel can take in case of hard error.
  107. :row.
  108. :c.int hVPB
  109. :c.input
  110. :c.Volume Parameter Block handle.
  111. :row.
  112. :c.void *pData
  113. :c.in/out
  114. :c.Transfert address.
  115. :row.
  116. :c.unsigned long *pcSec
  117. :c.in/out
  118. :c.Pointer to a double word containing the number of sectors to transfer.
  119. :row.
  120. :c.int iSec
  121. :c.input
  122. :c.Sector number of first sector to transfer.
  123. :etable.
  124.  
  125.  
  126. .*******************************************************************************
  127. .*** fsh32_segalloc                                                          ***
  128. .*******************************************************************************
  129.  
  130. :h2 id=1002.&titre_1002.
  131.  
  132. :p.
  133. Allocates a 16 bits segment.
  134.  
  135. :xmp.
  136. int FSH32ENTRY fsh32_segalloc(
  137.                               int flags,                /* ebp + 8  */
  138.                               int length,               /* ebp + 12 */
  139.                               unsigned short *pSel      /* ebp + 16 */
  140.                              );
  141. :exmp.
  142.  
  143.  
  144. :p.Parameters description &colon.
  145.  
  146. :table cols='20 10 45' frame=box rules=both.
  147. :row.
  148. :c.Parameter type
  149. :c.Input Output
  150. :c.Description
  151. :row.
  152. :c.int flags
  153. :c.input
  154. :c.Allocation flags (cf Installable File Systems for OS/2 version 3).
  155. :row.
  156. :c.int length
  157. :c.input
  158. :c.Length of segment to be allocated.
  159. :row.
  160. :c.unsigned short *pSel
  161. :c.in/out
  162. :c.Pointer to a word where will be stored the segment selector.
  163. :etable.
  164.  
  165.  
  166. .*******************************************************************************
  167. .*** fsh32_findduphvpb                                                       ***
  168. .*******************************************************************************
  169.  
  170. :h2 id=1003.&titre_1003.
  171.  
  172. :p.
  173. Looks for a duplicate volume parameter block of the current volume parameter block.
  174.  
  175. :xmp.
  176.  int FSH32ENTRY fsh32_findduphvpb(
  177.                                  unsigned short hVPB,         /* ebp + 8  */
  178.                                  unsigned short *phVPB        /* ebp + 12 */
  179.                                 );
  180. :exmp.
  181.  
  182.  
  183. :p.Parameters description &colon.
  184.  
  185. :table cols='20 10 45' frame=box rules=both.
  186. :row.
  187. :c.Parameter type
  188. :c.Input Output
  189. :c.Description
  190. :row.
  191. :c.unsigned short hVPB
  192. :c.input
  193. :c.Volume parameter block handle.
  194. :row.
  195. :c.unsigned short *phVPB
  196. :c.in/out
  197. :c.Pointer ot a word where will be stored the duplicate hVPB, if any.
  198. :etable.
  199.  
  200.  
  201. .*******************************************************************************
  202. .*** fsh32_forcenoswap                                                       ***
  203. .*******************************************************************************
  204.  
  205. :h2 id=1004.&titre_1004.
  206.  
  207. :p.
  208. Permanently locks a 16 bits segment of the IFS load image into physical memory.
  209.  
  210. :nt.the linkage convention is FSHENTRY2 (Visualage C++ _Optlink).
  211. :ent.
  212.  
  213.  
  214. :xmp.
  215. int FSH32ENTRY2 fsh32_forcenoswap(
  216.                                   unsigned short selector
  217.                                  );
  218. :exmp.
  219.  
  220.  
  221. :p.Parameters description &colon.
  222.  
  223. :table cols='20 10 45' frame=box rules=both.
  224. :row.
  225. :c.Parameter type
  226. :c.Input Output
  227. :c.Description
  228. :row.
  229. :c.unsigned short selector
  230. :c.input
  231. :c.selector of the 16 bits segment to lock.
  232. :etable.
  233.  
  234. .*******************************************************************************
  235. .*** fsh32_getvolparm                                                        ***
  236. .*******************************************************************************
  237.  
  238. :h2 id=1005.&titre_1005.
  239.  
  240. :p.
  241. Retrieves the volume parameter block (vpfsi and vpfsd) from a volume parameter
  242. block handle (hVPB).
  243.  
  244. :xmp.
  245. int FSH32ENTRY fsh32_getvolparm(
  246.                                 unsigned short  hVPB,
  247.                                 PTR16          *ppvpfsi,
  248.                                 PTR16          *ppvpfsd
  249.                                );
  250. :exmp.
  251.  
  252. :table cols='20 10 45' frame=box rules=both.
  253. :row.
  254. :c.Parameter type
  255. :c.Input Output
  256. :c.Description
  257. :row.
  258. :c.unsigned short hVPB
  259. :c.input
  260. :c.handle of volume parameter block
  261. :row.
  262. :c.PTR16 *ppvpfsi
  263. :c.in/out
  264. :c.FLAT pointer to a double word where the kernel will store the 16&colon.16 pointer to
  265. the vpfsi
  266. :row.
  267. :c.PTR16 *ppvpfsd
  268. :c.in/out
  269. :c.FLAT pointer to a double word where the kernel will store the 16&colon.16 pointer to
  270. the vpfsd
  271. :etable.
  272.  
  273.  
  274. .*******************************************************************************
  275. .*** fsh32_addshare                                                          ***
  276. .*******************************************************************************
  277.  
  278. :h2 id=1006.&titre_1006.
  279.  
  280. :p.
  281. Adds a name to the sharing set.
  282.  
  283. :xmp.
  284. extern int FSH32ENTRY fsh32_addshare(
  285.                                      PTR16           pName,
  286.                                      unsigned short  mode,
  287.                                      unsigned short  hVPB,
  288.                                      unsigned long  *phShare
  289.                                     );
  290. :exmp.
  291.  
  292.  
  293. :table cols='20 10 45' frame=box rules=both.
  294. :row.
  295. :c.Parameter type
  296. :c.Input Output
  297. :c.Description
  298. :row.
  299. :c.PTR16 pName
  300. :c.input
  301. :c.16&colon.16 pointer to the name to be added.
  302. :row.
  303. :c.unsigned short mode
  304. :c.input
  305. :c.Requested sharing mode (OPEN_SHARE_*) and access mode (OPEN_ACCESS_*).
  306. :row.
  307. :c.unsigned long *phShare
  308. :c.in/out
  309. :c.Pointer to a double word where the kernel will store the share handle.
  310. :etable.
  311.  
  312. .*******************************************************************************
  313. .*** fsh32_removeshare                                                       ***
  314. .*******************************************************************************
  315.  
  316. :h2 id=1007.&titre_1007.
  317.  
  318. :p.
  319. Removes a name from the sharing set.
  320.  
  321. :nt.the linkage convention is FSHENTRY2 (Visualage C++ _Optlink).
  322. :ent.
  323.  
  324. :xmp.
  325. extern void FSH32ENTRY2 fsh32_removeshare(
  326.                                           unsigned long hShare /* eax*/
  327.                                          );
  328. :exmp.
  329.  
  330. :table cols='20 10 45' frame=box rules=both.
  331. :row.
  332. :c.Parameter type
  333. :c.Input Output
  334. :c.Description
  335. :row.
  336. :c.unsigned long hShare
  337. :c.input
  338. :c.Share handle (returned by fsh32_addshare).
  339. :etable.
  340.  
  341.  
  342. .*******************************************************************************
  343. .*** fsh32_setvolume                                                         ***
  344. .*******************************************************************************
  345.  
  346. :h2 id=1008.&titre_1008.
  347.  
  348. :p.
  349. Forces a specified volume to be mounted on its drive.
  350.  
  351. :nt.the linkage convention is FSHENTRY2 (Visualage C++ _Optlink).
  352. :ent.
  353.  
  354. :xmp.
  355. extern int FSH32ENTRY2 fsh32_setvolume(
  356.                                        unsigned short hVPB,     /*  ax */
  357.                                        unsigned long  fControl  /* edx */
  358.                                       );
  359. :exmp.
  360.  
  361. :table cols='20 10 45' frame=box rules=both.
  362. :row.
  363. :c.Parameter type
  364. :c.Input Output
  365. :c.Description
  366. :row.
  367. :c.unsigned short hVPB
  368. :c.input
  369. :c.Volume parameter block handle of volume.
  370. :row.
  371. :c.unsigned long fControl
  372. :c.input
  373. :c.hard error daemon popup flag.
  374. :etable.
  375.