1 /*
2 * Copyright 2004-2008 the Seasar Foundation and the Others.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
15 */
16 package org.seasar.uruma.util.win32;
17
18 import java.nio.Buffer;
19
20 import nlink.Holder;
21 import nlink.MarshalAs;
22 import nlink.NativeType;
23 import nlink.win32.CheckLastError;
24 import nlink.win32.DllClass;
25 import nlink.win32.DllMethod;
26
27 /**
28 * kernel32.dll の提供する API をラップするためのインターフェースです。<br />
29 *
30 * @author y-komori
31 */
32 @DllClass
33 public interface Kernel32 {
34 // SetErrorMode 用の定数
35 /**
36 * 致命的なエラーに関するメッセージボックスを表示しません。
37 */
38 static final int SEM_FAILCRITICALERRORS = 0x0001;
39
40 /**
41 * メモリ整列の違反を自動的に修復します。x86 プロセッサでは効果がありません。
42 */
43 static final int SEM_NOALIGNMENTFAULTEXCEPT = 0x0002;
44
45 /**
46 * 一般保護違反メッセージボックスを表示しません。
47 */
48 static final int SEM_NOGPFAULTERRORBOX = 0x0004;
49
50 /**
51 * ファイルが見つからなかった場合にメッセージボックスを表示しません。
52 */
53 static final int SEM_NOOPENFILEERRORBOX = 0x8000;
54
55 // GetDriveType 用の定数
56 /**
57 * ドライブの種類を判別できませんでした。
58 */
59 static final int DRIVE_UNKNOWN = 0;
60
61 /**
62 * 指定のルートディレクトリが存在しません。<br />
63 * たとえば、パスにボリュームがマウントされていません。<br />
64 * (未フォーマットや、メディアが挿入されていないなど)。
65 */
66 static final int DRIVE_NO_ROOT_DIR = 1;
67
68 /**
69 * このディスクは、ドライブから取り出せます。
70 */
71 static final int DRIVE_REMOVABLE = 2;
72
73 /**
74 * このディスクは、ドライブから取り出せません。
75 */
76 static final int DRIVE_FIXED = 3;
77
78 /**
79 * このドライブは、リモート(ネットワーク)ドライブです。
80 */
81 static final int DRIVE_REMOTE = 4;
82
83 /**
84 * このドライブは、CD-ROM ドライブです。
85 */
86 static final int DRIVE_CDROM = 5;
87
88 /**
89 * このドライブは、RAM ディスクです。
90 */
91 static final int DRIVE_RAMDISK = 6;
92
93 /**
94 * @see <a
95 * href="http://msdn.microsoft.com/library/ja/jpsysinf/html/_win32_getcomputername.asp">GetComputerName</a>
96 */
97 @DllMethod
98 @CheckLastError
99 int GetComputerName(@MarshalAs(NativeType.PVOID)
100 Buffer buffer, @MarshalAs(NativeType.Int32_ByRef)
101 Holder<Integer> size);
102
103 /**
104 * @see <a
105 * href="http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_getlogicaldrives.asp">GetLogicalDrives</a>
106 */
107 @DllMethod
108 @CheckLastError
109 int GetLogicalDrives();
110
111 /**
112 * @see <a
113 * href="http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_getvolumeinformation.asp">GetVolumeInformation</a>
114 */
115 @DllMethod
116 int GetVolumeInformation(String rootPathName, @MarshalAs(NativeType.PVOID)
117 Buffer volumeNameBuffer, int volumeNameSize,
118 @MarshalAs(NativeType.Int32_ByRef)
119 Holder<Integer> volumeSerialNumber,
120 @MarshalAs(NativeType.Int32_ByRef)
121 Holder<Integer> maximumComponentLength,
122 @MarshalAs(NativeType.Int32_ByRef)
123 Holder<Integer> fileSystemFlags, @MarshalAs(NativeType.PVOID)
124 Buffer fileSystemNameBuffer, int fileSystemNameSize);
125
126 /**
127 * @see <a
128 * href="http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_getdrivetype.asp">GetDriveType</a>
129 */
130 @DllMethod
131 int GetDriveType(String rootPathName);
132
133 /**
134 * @see <a
135 * href="http://msdn.microsoft.com/library/ja/jpdebug/html/_win32_seterrormode.asp">SetErrorMode</a>
136 */
137 @DllMethod
138 @CheckLastError
139 int SetErrorMode(int mode);
140
141 /**
142 * @see <a
143 * href="http://msdn.microsoft.com/library/ja/jpdebug/html/_win32_getlasterror.asp">GetLastError</a>
144 */
145 @DllMethod
146 @CheckLastError
147 int GetLastError();
148 }