[e16e8f2] | 1 | FILE OPEN |
---|
| 2 | |
---|
| 3 | Op-Code: PXENV_FILE_OPEN (00e0h) |
---|
| 4 | |
---|
| 5 | Input: Far pointer to a t_PXENV_FILE_OPEN parameter structure |
---|
| 6 | that has been initialised by the caller. |
---|
| 7 | |
---|
| 8 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 9 | returned in AX. The status field in the parameter |
---|
| 10 | structure must be set to one of the values represented |
---|
| 11 | by the PXENV_STATUS_xxx constants. |
---|
| 12 | |
---|
| 13 | Description: Opens a file specified by a URL for reading. Multiple |
---|
| 14 | files may be opened and used concurrently. |
---|
| 15 | |
---|
| 16 | |
---|
| 17 | typedef struct s_PXENV_FILE_OPEN { |
---|
| 18 | PXENV_STATUS Status; |
---|
| 19 | UINT16 FileHandle; |
---|
| 20 | SEGOFF16 FileName; |
---|
| 21 | UINT32 Reserved; |
---|
| 22 | } t_PXENV_FILE_OPEN; |
---|
| 23 | |
---|
| 24 | |
---|
| 25 | Set before calling API service: |
---|
| 26 | |
---|
| 27 | FileName: URL of file to be opened. Null terminated. |
---|
| 28 | |
---|
| 29 | Reserved: Must be zero. |
---|
| 30 | |
---|
| 31 | |
---|
| 32 | Returned from API service: |
---|
| 33 | |
---|
| 34 | FileHandle: Handle for use in subsequent PXE FILE API calls. |
---|
| 35 | |
---|
| 36 | Status: See PXENV_STATUS_xxx constants. |
---|
| 37 | |
---|
| 38 | |
---|
| 39 | |
---|
| 40 | |
---|
| 41 | FILE CLOSE |
---|
| 42 | |
---|
| 43 | Op-Code: PXENV_FILE_CLOSE (00e1h) |
---|
| 44 | |
---|
| 45 | Input: Far pointer to a t_PXENV_FILE_CLOSE parameter structure |
---|
| 46 | that has been initialised by the caller. |
---|
| 47 | |
---|
| 48 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 49 | returned in AX. The status field in the parameter |
---|
| 50 | structure must be set to one of the values represented |
---|
| 51 | by the PXENV_STATUS_xxx constants. |
---|
| 52 | |
---|
| 53 | Description: Closes a previously opened file. |
---|
| 54 | |
---|
| 55 | |
---|
| 56 | typedef struct s_PXENV_FILE_CLOSE { |
---|
| 57 | PXENV_STATUS Status; |
---|
| 58 | UINT16 FileHandle; |
---|
| 59 | } t_PXENV_FILE_CLOSE; |
---|
| 60 | |
---|
| 61 | |
---|
| 62 | Set before calling API service: |
---|
| 63 | |
---|
| 64 | FileHandle: Handle obtained when file was opened. |
---|
| 65 | |
---|
| 66 | |
---|
| 67 | Returned from API service: |
---|
| 68 | |
---|
| 69 | Status: See PXENV_STATUS_xxx constants. |
---|
| 70 | |
---|
| 71 | |
---|
| 72 | |
---|
| 73 | |
---|
| 74 | FILE SELECT |
---|
| 75 | |
---|
| 76 | Op-Code: PXENV_FILE_SELECT (00e2h) |
---|
| 77 | |
---|
| 78 | Input: Far pointer to a t_PXENV_FILE_SELECT parameter structure |
---|
| 79 | that has been initialised by the caller. |
---|
| 80 | |
---|
| 81 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 82 | returned in AX. The status field in the parameter |
---|
| 83 | structure must be set to one of the values represented |
---|
| 84 | by the PXENV_STATUS_xxx constants. |
---|
| 85 | |
---|
| 86 | Description: Check a previously opened file's readiness for I/O. |
---|
| 87 | |
---|
| 88 | |
---|
| 89 | typedef struct s_PXENV_FILE_SELECT { |
---|
| 90 | PXENV_STATUS Status; |
---|
| 91 | UINT16 FileHandle; |
---|
| 92 | UINT16 Ready; |
---|
| 93 | #define RDY_READ 0x0001 |
---|
| 94 | } t_PXENV_FILE_SELECT; |
---|
| 95 | |
---|
| 96 | |
---|
| 97 | Set before calling API service: |
---|
| 98 | |
---|
| 99 | FileHandle: Handle obtained when file was opened. |
---|
| 100 | |
---|
| 101 | |
---|
| 102 | Returned from API service: |
---|
| 103 | |
---|
| 104 | Ready: Indication of readiness. This can be zero, or more, |
---|
| 105 | of the RDY_xxx constants. Multiple values are |
---|
| 106 | arithmetically or-ed together. |
---|
| 107 | |
---|
| 108 | Status: See PXENV_STATUS_xxx constants. |
---|
| 109 | |
---|
| 110 | |
---|
| 111 | |
---|
| 112 | |
---|
| 113 | FILE READ |
---|
| 114 | |
---|
| 115 | Op-Code: PXENV_FILE_READ (00e3h) |
---|
| 116 | |
---|
| 117 | Input: Far pointer to a t_PXENV_FILE_READ parameter structure |
---|
| 118 | that has been initialised by the caller. |
---|
| 119 | |
---|
| 120 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 121 | returned in AX. The status field in the parameter |
---|
| 122 | structure must be set to one of the values represented |
---|
| 123 | by the PXENV_STATUS_xxx constants. |
---|
| 124 | |
---|
| 125 | This API function is non-blocking. PXENV_EXIT_SUCCESS |
---|
| 126 | and PXENV_STATUS_SUCCESS is returned if a data block |
---|
| 127 | has been transferred into the caller's buffer. |
---|
| 128 | PXENV_EXIT_FAILURE and PXENV_STATUS_TFTP_OPEN is |
---|
| 129 | returned if no data is available to transfer; any |
---|
| 130 | other status code reflects an error. |
---|
| 131 | |
---|
| 132 | Description: Read from a previously opened file. |
---|
| 133 | |
---|
| 134 | |
---|
| 135 | typedef struct s_PXENV_FILE_READ { |
---|
| 136 | PXENV_STATUS Status; |
---|
| 137 | UINT16 FileHandle; |
---|
| 138 | UINT16 BufferSize; |
---|
| 139 | SEGOFF16 Buffer; |
---|
| 140 | } t_PXENV_FILE_READ; |
---|
| 141 | |
---|
| 142 | |
---|
| 143 | Set before calling API service: |
---|
| 144 | |
---|
| 145 | FileHandle: Handle obtained when file was opened. |
---|
| 146 | |
---|
| 147 | BufferSize: Maximum number of data bytes that can be copied into |
---|
| 148 | Buffer. |
---|
| 149 | |
---|
| 150 | Buffer: Segment:Offset address of data buffer. |
---|
| 151 | |
---|
| 152 | |
---|
| 153 | Returned from API service: |
---|
| 154 | |
---|
| 155 | BufferSize: Number of bytes written to the data buffer. End of |
---|
| 156 | file if this is zero. |
---|
| 157 | |
---|
| 158 | Status: See PXENV_STATUS_xxx constants. |
---|
| 159 | |
---|
| 160 | |
---|
| 161 | |
---|
| 162 | |
---|
| 163 | GET FILE SIZE |
---|
| 164 | |
---|
| 165 | Op-Code: PXENV_GET_FILE_SIZE (00e4h) |
---|
| 166 | |
---|
| 167 | Input: Far pointer to a t_PXENV_GET_FILE_SIZE parameter |
---|
| 168 | structure that has been initialised by the caller. |
---|
| 169 | |
---|
| 170 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 171 | returned in AX. The status field in the parameter |
---|
| 172 | structure must be set to one of the values represented |
---|
| 173 | by the PXENV_STATUS_xxx constants. |
---|
| 174 | |
---|
| 175 | Description: Determine size of a previously opened file. |
---|
| 176 | |
---|
| 177 | |
---|
| 178 | typedef struct s_PXENV_GET_FILE_SIZE { |
---|
| 179 | PXENV_STATUS Status; |
---|
| 180 | UINT16 FileHandle; |
---|
| 181 | UINT32 FileSize; |
---|
| 182 | } t_PXENV_GET_FILE_SIZE; |
---|
| 183 | |
---|
| 184 | |
---|
| 185 | Set before calling API service: |
---|
| 186 | |
---|
| 187 | FileHandle: Handle obtained when file was opened. |
---|
| 188 | |
---|
| 189 | |
---|
| 190 | Returned from API service: |
---|
| 191 | |
---|
| 192 | FileSize: Size of the file in bytes. |
---|
| 193 | |
---|
| 194 | Status: See PXENV_STATUS_xxx constants. |
---|
| 195 | |
---|
| 196 | |
---|
| 197 | |
---|
| 198 | |
---|
| 199 | FILE EXEC |
---|
| 200 | |
---|
| 201 | Op-Code: PXENV_FILE_EXEC (00e5h) |
---|
| 202 | |
---|
| 203 | Input: Far pointer to a t_PXENV_FILE_EXEC parameter |
---|
| 204 | structure that has been initialized by the caller. |
---|
| 205 | |
---|
| 206 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 207 | returned in AX. The Status field in the parameter |
---|
| 208 | structure must be set to one of the values represented |
---|
| 209 | by the PXENV_STATUS_xxx constants. |
---|
| 210 | |
---|
| 211 | Description: Execute a gPXE command. |
---|
| 212 | |
---|
| 213 | typedef struct s_PXENV_FILE_EXEC { |
---|
| 214 | PXENV_STATUS_t Status; |
---|
| 215 | SEGOFF16_t Command; |
---|
| 216 | } t_PXENV_FILE_EXEC; |
---|
| 217 | |
---|
| 218 | |
---|
| 219 | Set before calling API service: |
---|
| 220 | |
---|
| 221 | Command: Command to execute. Null terminated. |
---|
| 222 | |
---|
| 223 | |
---|
| 224 | Returned from API service: |
---|
| 225 | |
---|
| 226 | Status: See PXENV_STATUS_xxx constants. |
---|
| 227 | |
---|
| 228 | |
---|
| 229 | |
---|
| 230 | |
---|
| 231 | FILE API CHECK |
---|
| 232 | |
---|
| 233 | Op-Code: PXENV_FILE_API_CHECK (00e6h) |
---|
| 234 | |
---|
| 235 | Input: Far pointer to a t_PXENV_FILE_CHECK_API parameter |
---|
| 236 | structure that has been initialized by the caller. |
---|
| 237 | |
---|
| 238 | On entry, the Magic field should contain the number |
---|
| 239 | 0x91d447b2 or the call will fail. |
---|
| 240 | |
---|
| 241 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 242 | returned in AX. The Status field in the parameter |
---|
| 243 | structure must be set to one of the values represented |
---|
| 244 | by the PXENV_STATUS_xxx constants. |
---|
| 245 | |
---|
| 246 | If this API is present and the Magic field contains the |
---|
| 247 | proper value on entry, AX will contain PXENV_EXIT_SUCCESS, |
---|
| 248 | the Status field PXENV_STATUS_SUCCESS, and the Magic field |
---|
| 249 | the number 0xe9c17b20. Any other combination should be |
---|
| 250 | considered a failure. |
---|
| 251 | |
---|
| 252 | Description: Detect presence of this API. |
---|
| 253 | |
---|
| 254 | |
---|
| 255 | typedef struct s_PXENV_FILE_CHECK_API { |
---|
| 256 | PXENV_STATUS Status; |
---|
| 257 | UINT16 Size; |
---|
| 258 | UINT32 Magic; |
---|
| 259 | UINT32 Provider; |
---|
| 260 | UINT32 APIMask; |
---|
| 261 | UINT32 Flags; |
---|
| 262 | } t_PXENV_FILE_CHECK_API; |
---|
| 263 | |
---|
| 264 | Set before calling API service: |
---|
| 265 | |
---|
| 266 | Size: Set to sizeof(t_PXENV_FILE_CHECK_API) (20). |
---|
| 267 | Magic: Set to 0x91d447b2. |
---|
| 268 | |
---|
| 269 | |
---|
| 270 | Returned from API service: |
---|
| 271 | |
---|
| 272 | Size: Set to the number of bytes filled in (20). |
---|
| 273 | Magic: Set to 0xe9c17b20. |
---|
| 274 | Provider: Set to 0x45585067 ("gPXE"). Another implementation of this |
---|
| 275 | API can use another value, e.g. to indicate a different |
---|
| 276 | command set supported by FILE EXEC. |
---|
| 277 | APIMask: Bitmask of supported API functions (one bit for each function |
---|
| 278 | in the range 00e0h to 00ffh). |
---|
| 279 | Flags: Set to zero, reserved for future use. |
---|
| 280 | |
---|
| 281 | |
---|
| 282 | |
---|
| 283 | |
---|
| 284 | FILE EXIT HOOK |
---|
| 285 | |
---|
| 286 | Op-Code: PXENV_FILE_EXIT_HOOK (00e7h) |
---|
| 287 | |
---|
| 288 | Input: Far pointer to a t_PXENV_FILE_EXIT_HOOK parameter |
---|
| 289 | structure that has been initialized by the caller. |
---|
| 290 | |
---|
| 291 | Output: PXENV_EXIT_SUCCESS or PXENV_EXIT_FAILURE must be |
---|
| 292 | returned in AX. The Status field in the parameter |
---|
| 293 | structure must be set to one of the values represented |
---|
| 294 | by the PXENV_STATUS_xxx constants. |
---|
| 295 | |
---|
| 296 | Description: Modify the exit path to jump to the specified code. |
---|
| 297 | Only valid for pxeprefix-based builds. |
---|
| 298 | |
---|
| 299 | typedef struct s_PXENV_FILE_EXIT_HOOK { |
---|
| 300 | PXENV_STATUS_t Status; |
---|
| 301 | SEGOFF16_t Hook; |
---|
| 302 | } t_PXENV_FILE_EXIT_HOOK; |
---|
| 303 | |
---|
| 304 | |
---|
| 305 | Set before calling API service: |
---|
| 306 | |
---|
| 307 | Hook: The SEG16:OFF16 of the code to jump to. |
---|
| 308 | |
---|
| 309 | |
---|
| 310 | Returned from API service: |
---|
| 311 | |
---|
| 312 | Status: See PXENV_STATUS_xxx constants. |
---|