LeoReadDiskID.htm
2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.03j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">LeoReadDiskID(3P) <BR>
</FONT></B>
<P>
<B>関数名</B>
<P>
LeoReadDiskID
<P>
→ ディスクIDの取得<BR>
<P>
<B>構文</B>
<PRE>
<FONT SIZE=4>#include <PR/leo.h>
s32 LeoReadDiskID(LEOCmd *<U>cmdBlock</U>, LEODiskID *<U>id</U>, OSMesgQueue *<U>mq</U>);
typedef struct
{
u8 pad;
u8 yearhi;
u8 yearlo;
u8 month;
u8 day;
u8 hour;
u8 minute;
u8 second;
} LEODiskTime;
typedef struct
{
u64 lineNumber;
LEODiskTime time;
} LEOSerialNum;
typedef struct
{
u8 gameName[4];
u8 gameVersion;
u8 diskNumber;
u16 diskUsage;
LEOSerialNum serialNumber;
u64 reserve;
} LEODiskID;
</FONT>
</PRE>
<P>
<B>説明</B>
<P>
<B>注意:</B>64DD関係の命令はすべて、rom DMA(ドライブ内ROM対象のDMAを含む)が行われていない、
また行われないという仮定で設計されています。そのための注意点に関しては、64DDプログラミング
マニュアル「第12章 禁止事項、注意事項のまとめ」を参照してください。
<P>
<B>LeoReadDiskID</B>は64DDディスクのディスクIDを取得します。<BR>
ディスクIDはディスクごとに異なる固有の番号です。詳しくは64DDプログラミングマニュアル「第6
章 ディスクID」を参照してください。<BR>
<P>
どの関数を発行したときでも、MEDIUM_MAY_HAVE_CHANGEDエラーが返ってきたときは、必ずまずこの
LeoReadDiskID関数を呼んで、ディスクIDを調べなくてはいけません。詳しい処理シーケンスに関し
ては64DDプログラミングガイド「第10章 エラー処理シーケンス」を参照してください。
<P>
<BR>
引数で与えるコマンドブロック <U>cmdBlock</U> には何も設定する必要はありません。この関数は処理を終了すると待ち行列<U>mq</U>にエラーコードを返します。エラーが起こる可能性があるので、プログラマは必ずこのエラーコードをチェックしなければいけません。
<BR>
<P>
返ってくる可能性のあるエラーとその原因、対処法は64DDプログラミングマニュアル
「第10章 エラー処理シーケンス」を参照して下さい。<BR>
<P>
返り値は、leo マネージャがまだ作成されていないとき -1、作成されていれば
0 となります。通常はチェックする必要はありません。<BR>
<P>
<B>例</B>
<P>
<PRE>
<FONT FACE="Courier">LEOCmd cmdBlock;</FONT>
<FONT FACE="Courier">LEODiskID diskID;</FONT>
<FONT FACE="Courier">u32 error;</FONT>
<FONT FACE="Courier">.....</FONT>
<FONT FACE="Courier">LeoReadDiskID(&cmdBlock, &diskID, &diskQ);</FONT>
<FONT FACE="Courier">osRecvMesg(&diskQ, (OSMesg *)&error, OS_MESG_BLOCK);<BR>
</FONT>
</PRE>
<B>参照</B>
<P>
<A HREF="LeoCreateLeoManager.htm">Leo*CreateLeoManager(3P)</A>
<BR>
<HR>
<P>
<A HREF="64dd_INDEX.htm">64DDのマニュアルページのメニューへ</A>
<P>
<A HREF="../n64man.htm">N64のマニュアルページのトップメニューへ</A>
<P>
</BODY>
</HTML>