requesttype=0x0b
Command: variable length (here 0x5b bytes)
0000 1b 00 00 00 02 02 00 00-00 00 00 00 00 00 00 00 ................
0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0040 02 00 00 00 0b 00 00 11-1b 00 00 00 06 00 00 00 ................
0050 00 44 3a 5c 44 43 49 4d-00 00 00 .D:\DCIM...
The byte at offset 0x50 gives the level of recursion allowed, here zero (no recursion). This is followed by the directory pathname, here D:\DCIM.
Response: 0x40 bytes (PowerShot G2)
0000 00 00 00 00 02 03 56 00-00 00 00 00 00 00 00 00 ......V.........
0010 40 04 fe 15 d3 78 6a fb-54 bf d1 3c ed 63 4a 5d @....xj.T..<.cJ]
0020 2a f7 cf 75 10 db cd e6-a3 47 9f 95 c3 e0 67 23 *..u.....G....g#
0030 a8 20 63 df ad 22 bc 8d-c8 6f 01 8a 56 78 8a 24 . c.."...o..Vx.$
As with all long dialogues, the message contains only the length of data to follow, as a word starting at offset 0x06. In this case, the subsequent data will be 0x56 bytes long. The next message from the camera is:
0000 80 00 00 00 00 00 48 e2-48 3e 44 3a 5c 44 43 49 ......H.H>D:\DCI
0010 4d 00 10 00 00 00 00 00-44 e6 43 3e 43 41 4e 4f M.......D.C>CANO
0020 4e 4d 53 43 00 10 00 00-00 00 00 64 f6 48 3e 31 NMSC.......d.H>1
0030 35 35 43 41 4e 4f 4e 00-10 00 00 00 00 00 52 fb 55CANON.......R.
0040 48 3e 31 35 36 43 41 4e-4f 4e 00 00 00 00 00 00 H>156CANON......
0050 00 00 00 00 00 00 - ......
Error codes:
| 0x00000000 No errors |
| 0x02000022 File not found |
| 0x02000029 File was protected |
| 0x02000086 Path not found |
The example shows four entries. Each entry contains
| 1 byte attribute bits (described in Table 2.3, “File attributes”) |
| 1 zero byte |
| 4 bytes file size in bytes (zero if directory) |
| 4 bytes UNIX time |
| File name (null-terminated string of arbitrary length) |
| .. in name means leave directory. |
An entry with attribute, date, length, and name all zero indicates the end of the directory listing.
Since these are all directory entries, each shows a file size of zero.:
D:\DCIM, attribute byte 0x80. This is the name of the directory listed. .
CANONMSC, attribute byte 0x10, time Fri Feb 7 22:00:52 2003 (0x3e43e644).
155CANON, attribute byte 0x10, time Tue Feb 11 18:11:00 2003 (0x3e48f664).
156CANON, attribute byte 0x10, time Tue Feb 11 18:32:02 2003 (0x3e48fb52).
Here is an example of dealing with multiple levels in the directory hierarchy. The contents of this camera are:
| Thu May 4 00:11:40 2000 D:\DCIM\100CANON\IMG_0001.JPG 778435 |
| Thu May 4 00:28:32 2000 D:\DCIM\100CANON\IMG_0002.JPG 44409 |
| Thu May 4 00:28:32 2000 D:\DCIM\CANONMSC\100.CTG 2634 |
| Thu May 4 00:28:32 2000 D:\DCIM\CANONMSC\D.CTG 383 |
Directory contents: "D:" (recurse = 0x0)
00000000 80 00 00 00 00 00 00 00-00 00 44 3A 00 10 00 00 ..........D:....
00000010 00 00 00 C6 B5 10 39 44-43 49 4D 00 00 00 00 00 ......9DCIM.....
00000020 00 00 00 00 00 00 00 .......
Directory contents: "D:" (recurse = 0x1)
00000000 80 00 00 00 00 00 00 00-00 00 44 3A 00 80 00 00 ..........D:....
00000010 00 00 00 36 C0 10 39 2E-5C 44 43 49 4D 00 10 00 ...6..9.\DCIM...
00000020 00 00 00 00 36 C0 10 39-31 30 30 43 41 4E 4F 4E ....6..9100CANON
00000030 00 10 00 00 00 00 00 CC-B5 10 39 43 41 4E 4F 4E ..........9CANON
00000040 4D 53 43 00 80 00 00 00-00 00 00 00 00 00 2E 2E MSC.............
00000050 00 00 00 00 00 00 00 00-00 00 00 00 ............
Directory contents: "D:" (recurse = 0x2)
00000000 80 00 00 00 00 00 00 00-00 00 44 3A 00 80 00 00 ..........D:....
00000010 00 00 00 36 C0 10 39 2E-5C 44 43 49 4D 00 80 00 ...6..9.\DCIM...
00000020 00 00 00 00 3C C0 10 39-2E 5C 31 30 30 43 41 4E ....<..9.\100CAN
00000030 4F 4E 00 20 00 C3 E0 0B-00 3C C0 10 39 49 4D 47 ON. .....<..9IMG
00000040 5F 30 30 30 31 2E 4A 50-47 00 20 00 79 AD 00 00 _0001.JPG. .y...
00000050 30 C4 10 39 49 4D 47 5F-30 30 30 32 2E 4A 50 47 0..9IMG_0002.JPG
00000060 00 80 00 00 00 00 00 00-00 00 00 2E 2E 00 80 00 ................
00000070 00 00 00 00 30 C4 10 39-2E 5C 43 41 4E 4F 4E 4D ....0..9.\CANONM
00000080 53 43 00 20 00 4A 0A 00-00 30 C4 10 39 31 30 30 SC. .J...0..9100
00000090 2E 43 54 47 00 20 00 7F-01 00 00 30 C4 10 39 44 .CTG. .....0..9D
000000A0 2E 43 54 47 00 80 00 00-00 00 00 00 00 00 00 2E .CTG............
000000B0 2E 00 80 00 00 00 00 00-00 00 00 00 2E 2E 00 00 ................
000000C0 00 00 00 00 00 00 00 00-00 00 ..........
Here is a formatted listing of the entries:
D :
0000: 0080 00000000 00000000 44 3A 00
. \ D C I M
000D: 0080 00000000 3910C036 2E 5C 44 43 49 4D 00
. \ 1 0 0 C A N O N
001E: 0080 00000000 3910C03C 2E 5C 31 30 30 43 41 4E 4F 4E 00
I M G _ 0 0 0 1 . J P G
0033: 0020 000BE0C3 3910C03C 49 4D 47 5F 30 30 30 31 2E 4A 50-47 00
I M G _ 0 0 0 2 . J P G
004A: 0020 0000AD79 3910C430 49 4D 47 5F 30 30 30 32 2E 4A 50 47 00
. .
0061: 0080 00000000 00000000 2E 2E 00
. \ C A N O N M S C
006E: 0080 00000000 3910C430 2E 5C 43 41 4E 4F 4E 4D 53 43 00
1 0 0 . C T G
0083: 0020 00000A4A 3910C430 31 30 30 2E 43 54 47 00
D . C T G
0095: 0020 0000017F 3910C430 44 2E 43 54 47 00
. .
00A6: 0080 00000000 00000000 2E 2E 00
. .
00B2: 0080 00000000 00000000 2E 2E 00
00BF: 0000 00000000 00000000 00